commit b9b0f0657cfd38e0059c1219342341fd38a3973b Author: liaoxinyu Date: Fri Oct 17 11:49:26 2025 +0800 初始项目 diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..3a280ba --- /dev/null +++ b/.babelrc @@ -0,0 +1,12 @@ +{ + "presets": [ + ["env", { + "modules": false, + "targets": { + "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] + } + }], + "stage-2" + ], + "plugins": ["transform-vue-jsx", "transform-runtime"] +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..2283c01 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +root = true + +[*] +# 字符编码 +charset = utf-8 +# 以空格形式缩进 +indent_style = space +# 缩进的大小为4个空格 +indent_size = 4 +tab_width = 4 +# 定义换行符 +end_of_line = lf +# 文件结尾处插入新行 +insert_final_newline = true +# 除去换行行首的任意空白字符 +# trim_trailing_whitespace = true diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..b90b3e2 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,5 @@ +/build/ +/config/ +/dist/ +/*.js +/src diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..4463f3e --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,29 @@ +// https://eslint.org/docs/user-guide/configuring + +module.exports = { + root: true, + parserOptions: { + parser: 'babel-eslint' + }, + env: { + browser: true, + }, + extends: [ + // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention + // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules. + 'plugin:vue/essential', + // https://github.com/standard/standard/blob/master/docs/RULES-en.md + 'standard' + ], + // required to lint *.vue files + plugins: [ + 'vue' + ], + // add your custom rules here + rules: { + // allow async-await + 'generator-star-spacing': 'off', + // allow debugger during development + 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..290d49a --- /dev/null +++ b/.gitignore @@ -0,0 +1,41 @@ +# ---> Vue +# gitignore template for Vue.js projects +# +# Recommended template: Node.gitignore + +# TODO: where does this rule come from? +docs/_book + +# TODO: where does this rule come from? +test/ + +# ---> macOS +# General +.DS_Store +.AppleDouble +.LSOverride + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +.idea/ +node_modules/ +dist/ +.history/ diff --git a/.postcssrc.js b/.postcssrc.js new file mode 100644 index 0000000..eee3e92 --- /dev/null +++ b/.postcssrc.js @@ -0,0 +1,10 @@ +// https://github.com/michael-ciniawsky/postcss-load-config + +module.exports = { + "plugins": { + "postcss-import": {}, + "postcss-url": {}, + // to edit target browsers: use "browserslist" field in package.json + "autoprefixer": {} + } +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..92a6306 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 lautin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README 2.md b/README 2.md new file mode 100644 index 0000000..9f907d2 --- /dev/null +++ b/README 2.md @@ -0,0 +1,52 @@ +# e-learn + +> A Vue.js project + +## Build Setup + +``` bash +# install dependencies +npm install + +# serve with hot reload at localhost:8080 +npm run dev + +# build for production with minification +npm run build + +# build for production and view the bundle analyzer report +npm run build --report +``` + +### 服务器地址 ++ 管理后台:http://211.149.170.186:8887/btwest/ cproot eukhw2tb ++ ++ SSH账户:211.149.170.186 root eukhw2tb 22(000) + ++ 功能模块: + - 账户中心: + - 账户信息 + - 重置密码 + - 实名认证 + - 邀请好友 + - 登录记录 + + - 我的钱包 + - 资产 + - 合约账户 + - 期权账户 + - 资金划转 + - 充值提币 + - 我的返佣 + + + - 安全设置 + - 交易密码 + - google验证 + - 邮箱验证 + - sms验证 + - 地址管理 + - +For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). + +markdown 预览的快捷键 ctrl+shift+v diff --git a/README.md b/README.md new file mode 100644 index 0000000..5124c15 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# jiaoyi + diff --git a/build/build.js b/build/build.js new file mode 100644 index 0000000..2a00ad3 --- /dev/null +++ b/build/build.js @@ -0,0 +1,41 @@ +'use strict' +require('./check-versions')() +// 构建时 将环境变量设为production +process.env.NODE_ENV = 'production' + +const ora = require('ora') +const rm = require('rimraf') +const path = require('path') +const chalk = require('chalk') +const webpack = require('webpack') +const config = require('../config') +const webpackConfig = require('./webpack.prod.conf') + +const spinner = ora('building for production...') +spinner.start() + +rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { + if (err) throw err + webpack(webpackConfig, (err, stats) => { + spinner.stop() + if (err) throw err + process.stdout.write(stats.toString({ + colors: true, + modules: false, + children: false, + chunks: false, + chunkModules: false + }) + '\n\n') + + if (stats.hasErrors()) { + console.log(chalk.red(' Build failed with errors.\n')) + process.exit(1) + } + + console.log(chalk.cyan(' Build complete.\n')) + console.log(chalk.yellow( + ' Tip: built files are meant to be served over an HTTP server.\n' + + ' Opening index.html over file:// won\'t work.\n' + )) + }) +}) diff --git a/build/check-versions.js b/build/check-versions.js new file mode 100644 index 0000000..366214b --- /dev/null +++ b/build/check-versions.js @@ -0,0 +1,52 @@ +'use strict' +const chalk = require('chalk') +const semver = require('semver') +const packageConfig = require('../package.json') +const shell = require('shelljs') + +function exec(cmd) { + return require('child_process').execSync(cmd).toString().trim() +} + +const versionRequirements = [{ + name: 'node', + currentVersion: semver.clean(process.version), + versionRequirement: packageConfig.engines.node +}] + +if (shell.which('npm')) { + versionRequirements.push({ + name: 'npm', + currentVersion: exec('npm --version'), + versionRequirement: packageConfig.engines.npm + }) +} + +module.exports = function () { + const warnings = [] + + for (let i = 0; i < versionRequirements.length; i++) { + const mod = versionRequirements[i] + + if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { + warnings.push(mod.name + ': ' + + chalk.red(mod.currentVersion) + ' should be ' + + chalk.green(mod.versionRequirement) + ) + } + } + + if (warnings.length) { + console.log('') + console.log(chalk.yellow('To use this template, you must update following to modules:')) + console.log() + + for (let i = 0; i < warnings.length; i++) { + const warning = warnings[i] + console.log(' ' + warning) + } + + console.log() + process.exit(1) + } +} diff --git a/build/logo.png b/build/logo.png new file mode 100644 index 0000000..f3d2503 Binary files /dev/null and b/build/logo.png differ diff --git a/build/utils.js b/build/utils.js new file mode 100644 index 0000000..fad7fa0 --- /dev/null +++ b/build/utils.js @@ -0,0 +1,142 @@ +'use strict' +const path = require('path') +const config = require('../config') + +const packageConfig = require('../package.json') + +// 将构建时内嵌的css 提取为一个独立文件 +const ExtractTextPlugin = require('extract-text-webpack-plugin') + +// 配置资源文件路径 +exports.assetsPath = function(_path) { + const assetsSubDirectory = process.env.NODE_ENV === 'production' ? + config.build.assetsSubDirectory : + config.dev.assetsSubDirectory + + return path.posix.join(assetsSubDirectory, _path) +} + +/** + * 加载各型css loader的封装函数 + * { usePostCSS, sourceMap, extract } + * + */ +exports.cssLoaders = function(options) { + options = options || {} + + // + const cssLoader = { + loader: 'css-loader', + options: { + sourceMap: options.sourceMap + } + } + + const postcssLoader = { + loader: 'postcss-loader', + options: { + sourceMap: options.sourceMap + } + } + + // generate loader string to be used with extract text plugin + function generateLoaders(loader, loaderOptions) { + const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader] + + if (loader) { + loaders.push({ + loader: loader + '-loader', + // 接入自定义的选项 + options: Object.assign({}, loaderOptions, { + sourceMap: options.sourceMap + }) + }) + } + + // Extract CSS when that option is specified + // (which is the case during production build) + if (options.extract) { + return ExtractTextPlugin.extract({ + use: loaders, + fallback: 'vue-style-loader', + publicPath: '../../' + }) + } else { // 最后加载vue-style-loader 解析.vue中的css代码 + return ['vue-style-loader'].concat(loaders) + } + } + + // https://vue-loader.vuejs.org/en/configurations/extract-css.html + return { + css: generateLoaders(), + postcss: generateLoaders(), + + less: generateLoaders('less'), + + // 给scss文件增加loader以支持全局导入文件, + // 所有扩展的loader通过concat写入 + // resource-loader确保变量、混入类和函数在每个文件中都有效 + sass: generateLoaders('sass', { + indentedSyntax: true + }), + scss: generateLoaders('sass').concat({ + loader: 'style-resources-loader', + options: { + patterns: [ + // 全局配置函数 此处的_不能省略 + path.resolve(__dirname, "../src/assets/scss/_settings.scss"), + + path.resolve(__dirname, "../src/assets/scss/_mixin.scss"), + + // 加载基础样式 + // path.resolve(__dirname, '../src/assets/scss/base/_base.scss'), + + // 加载布局样式 + path.resolve(__dirname, '../src/assets/scss/layout/_layout.scss'), + + // 加载模块样式 + // path.resolve(__dirname, '../src/assets/scss/module/_module.scss'), + + // 加载主题样式 + path.resolve(__dirname, '../src/assets/scss/theme/_theme.scss'), + ] + } + }), + stylus: generateLoaders('stylus'), + styl: generateLoaders('stylus') + } +} + +// Generate loaders for standalone style files (outside of .vue) +exports.styleLoaders = function(options) { + const output = [] + const loaders = exports.cssLoaders(options) + + for (const extension in loaders) { + const loader = loaders[extension] + output.push({ + test: new RegExp('\\.' + extension + '$'), + use: loader + }) + } + + return output +} + +exports.createNotifierCallback = () => { + const notifier = require('node-notifier') + + return (severity, errors) => { + if (severity !== 'error') return + + const error = errors[0] + const filename = error.file && error.file.split('!').pop() + + notifier.notify({ + title: packageConfig.name, + message: severity + ': ' + error.name, + subtitle: filename || '', + icon: path.join(__dirname, 'logo.png') + }) + } +} diff --git a/build/vue-loader.conf.js b/build/vue-loader.conf.js new file mode 100644 index 0000000..410ba77 --- /dev/null +++ b/build/vue-loader.conf.js @@ -0,0 +1,28 @@ +'use strict' +const utils = require('./utils') +const config = require('../config') +const isProduction = process.env.NODE_ENV === 'production' + +// 默认情况下不启用它们,因为它们会导致运行时的额外开销,并增加了 bundle 大小 +// (JS source map 不会) +const sourceMapEnabled = isProduction ? + config.build.productionSourceMap : + config.dev.cssSourceMap + +// 管理loader配置的文件 +module.exports = { + + loaders: utils.cssLoaders({ + sourceMap: sourceMapEnabled, + // 如果是产品模式 则将css从vue中提取出来 + extract: false, + }), + cssSourceMap: sourceMapEnabled, + cacheBusting: config.dev.cacheBusting, + transformToRequire: { + video: ['src', 'poster'], + source: 'src', + img: 'src', + image: 'xlink:href' + } +} diff --git a/build/webpack.base.conf.js b/build/webpack.base.conf.js new file mode 100644 index 0000000..5a969b6 --- /dev/null +++ b/build/webpack.base.conf.js @@ -0,0 +1,110 @@ +'use strict' + +// 通用的webapck基础配置,主要是一些loader的支持 +const path = require('path') +const utils = require('./utils') +const config = require('../config') +const vueLoaderConfig = require('./vue-loader.conf') + +function resolve(dir) { + return path.join(__dirname, '..', dir); +} + +const createLintingRule = () => ({ + test: /\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [resolve('src'), resolve('test')], + options: { + formatter: require('eslint-friendly-formatter'), + emitWarning: !config.dev.showEslintErrorsInOverlay + } +}) + +module.exports = { + + context: path.resolve(__dirname, '../'), + + // 模块的入口文件 - 单页应用 + entry: { + app: './src/main.js', + }, + + // 输出路径 - /dist/app.js + output: { + path: config.build.assetsRoot, + filename: '[name].js', + publicPath: process.env.NODE_ENV === 'production' ? + config.build.assetsPublicPath : config.dev.assetsPublicPath + }, + + // 模块路径解析 + resolve: { + + // 默认检查的后缀名 + extensions: ['.js', '.vue', '.json'], + + // 路径标识,用于require解析路径 默认@为src + alias: { + 'vue$': 'vue/dist/vue.esm.js', // $为严格匹配 + '@': resolve('src'), + '~': resolve('static') + } + }, + + // 加载的loader + module: { + rules: [ + ...(config.dev.useEslint ? [createLintingRule()] : []), + { + test: /\.vue$/, + loader: 'vue-loader', + options: vueLoaderConfig // 分离vue中的css代码, + // 编译为css代码块, + // 提取为独立的文件, + }, + { + test: /\.js$/, + loader: 'babel-loader', + include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')] + }, + { + test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: utils.assetsPath('img/[name].[hash:7].[ext]') + } + }, + { + test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: utils.assetsPath('media/[name].[hash:7].[ext]') + } + }, + { + test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: utils.assetsPath('fonts/[name].[hash:7].[ext]') + } + } + ] + }, + + node: { + // prevent webpack from injecting useless setImmediate polyfill because Vue + // source contains it (although only uses it if it's native). + setImmediate: false, + // prevent webpack from injecting mocks to Node native modules + // that does not make sense for the client + dgram: 'empty', + fs: 'empty', + net: 'empty', + tls: 'empty', + child_process: 'empty' + } +} \ No newline at end of file diff --git a/build/webpack.dev.conf.js b/build/webpack.dev.conf.js new file mode 100644 index 0000000..f6a1df8 --- /dev/null +++ b/build/webpack.dev.conf.js @@ -0,0 +1,166 @@ +'use strict' +const utils = require('./utils') +const webpack = require('webpack') +const config = require('../config') + +const merge = require('webpack-merge') +const path = require('path') +const baseWebpackConfig = require('./webpack.base.conf') + +const CopyWebpackPlugin = require('copy-webpack-plugin') +const HtmlWebpackPlugin = require('html-webpack-plugin') +const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') +const portfinder = require('portfinder') +const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin + +const HOST = process.env.HOST +const PORT = process.env.PORT && Number(process.env.PORT) + +const devWebpackConfig = merge(baseWebpackConfig, { + module: { + rules: utils.styleLoaders({ + sourceMap: config.dev.cssSourceMap, + usePostCSS: true + }) + }, + + // cheap-module-eval-source-map is faster for development + devtool: config.dev.devtool, + + // these devServer options should be customized in /config/index.js + devServer: { + clientLogLevel: 'warning', + // 404 页面配置 + historyApiFallback: { + rewrites: [{ + from: /.*/, + to: path.posix.join(config.dev.assetsPublicPath, 'index.html') + },], + }, + hot: true, + contentBase: false, // since we use CopyWebpackPlugin. + compress: true, + host: HOST || config.dev.host, + port: PORT || config.dev.port, + open: config.dev.autoOpenBrowser, + overlay: config.dev.errorOverlay ? { + warnings: false, + errors: true + } : false, + publicPath: config.dev.assetsPublicPath, + proxy: config.dev.proxyTable, + quiet: true, // necessary for FriendlyErrorsPlugin + watchOptions: { + poll: config.dev.poll, + } + }, + + plugins: [ + + // new BundleAnalyzerPlugin(), + + // 自动加载模块,而不必到处 import 或 require + new webpack.ProvidePlugin({ + // marked: "marked", + // $: 'jquery', + // jQuery: 'jquery', + _: 'lodash', + Popper: ['popper.js', 'default'], + utils: [path.join(__dirname, '..', 'src/utils'), 'default'], + }), + + // 允许创建一个在编译时可以配置的全局常量 + new webpack.DefinePlugin({ + 'process.env': require('../config/dev.env') + }), + + // 模块热更新 + new webpack.HotModuleReplacementPlugin(), + new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update. + new webpack.NoEmitOnErrorsPlugin(), + + // https://github.com/ampedandwired/html-webpack-plugin + // 自动更新html中的入口文件 + new HtmlWebpackPlugin({ + filename: 'index.html', // html生成的文件 `/index.html` + template: 'src/index.html', // webpack模板 默认为src/index.ejs + inject: true, // 开启自动注入模块入口文件 + favicon: path.resolve(__dirname, '../src/favicon.ico'), + title: 'Crypto | Exchange | Market', + isProduct : process.env.NODE_ENV == 'production' ? true : false, + }), + + // split vendor js into its own file + new webpack.optimize.CommonsChunkPlugin({ + name: 'vendor', + minChunks(module) { + // any required modules inside node_modules are extracted to vendor + return ( + module.resource && + /\.js$/.test(module.resource) && + module.resource.indexOf( + path.join(__dirname, '../node_modules') + ) === 0 + ) + } + }), + + // extract webpack runtime and module manifest to its own file in order to + // prevent vendor hash from being updated whenever app bundle is updated + new webpack.optimize.CommonsChunkPlugin({ + name: 'manifest', + minChunks: Infinity + }), + + // This instance extracts shared chunks from code splitted chunks and bundles them + // in a separate chunk, similar to the vendor chunk + // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk + new webpack.optimize.CommonsChunkPlugin({ + name: 'app', + async: 'vendor-async', + children: true, + minChunks: 3 + }), + + // 将单个文件或整个目录复制到构建目录。 + // copy custom static assets,复制自定义静态资源 + new CopyWebpackPlugin([{ + from: path.resolve(__dirname, '../static'), + to: config.dev.assetsSubDirectory, + ignore: ['.*'] + }]), + + // new CopyWebpackPlugin([{ + // from: path.resolve(__dirname, '../static/newProduct'), + // to: config.dev.newProductRoot, + // ignore: ['.*'] + // }]), + ], + +}) + +module.exports = new Promise((resolve, reject) => { + // 基础端口号,以此往下找 + portfinder.basePort = process.env.PORT || config.dev.port + portfinder.getPort((err, port) => { + if (err) { + reject(err) + } else { + // publish the new Port, necessary for e2e tests + process.env.PORT = port + // add port to devServer config + devWebpackConfig.devServer.port = port + + // Add FriendlyErrorsPlugin + devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({ + compilationSuccessInfo: { + messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`], + }, + onErrors: config.dev.notifyOnErrors ? + utils.createNotifierCallback() : undefined + })) + + resolve(devWebpackConfig) + } + }) +}) diff --git a/build/webpack.prod.conf.js b/build/webpack.prod.conf.js new file mode 100644 index 0000000..72b50fb --- /dev/null +++ b/build/webpack.prod.conf.js @@ -0,0 +1,177 @@ +'use strict' +// 打包构建dist时 使用配置文件 +const path = require('path') +const utils = require('./utils') +const webpack = require('webpack') +const config = require('../config') +const merge = require('webpack-merge') +const baseWebpackConfig = require('./webpack.base.conf') +const CopyWebpackPlugin = require('copy-webpack-plugin') +const HtmlWebpackPlugin = require('html-webpack-plugin') +const ExtractTextPlugin = require('extract-text-webpack-plugin') +const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') +const UglifyJsPlugin = require('uglifyjs-webpack-plugin') +const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin + +const env = require('../config/prod.env') + +const webpackConfig = merge(baseWebpackConfig, { + module: { + rules: utils.styleLoaders({ + sourceMap: config.build.productionSourceMap, + extract: true, + usePostCSS: true + }) + }, + devtool: config.build.productionSourceMap ? config.build.devtool : false, + output: { + path: config.build.assetsRoot, + filename: utils.assetsPath('js/[name].[chunkhash].js'), + chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') + }, + plugins: [ + + new BundleAnalyzerPlugin(), + + // 自动加载模块,而不必到处 import 或 require + new webpack.ProvidePlugin({ + // marked: "marked", + // $: 'jquery', + // jQuery: 'jquery', + _: 'lodash', + Popper: ['popper.js', 'default'], + utils: [path.join(__dirname, '..', 'src/utils'), 'default'], + }), + + + // http://vuejs.github.io/vue-loader/en/workflow/production.html + new webpack.DefinePlugin({ + 'process.env': env + }), + new UglifyJsPlugin({ + uglifyOptions: { + compress: { + warnings: false + } + }, + sourceMap: config.build.productionSourceMap, + parallel: true + }), + // extract css into its own file + new ExtractTextPlugin({ + filename: utils.assetsPath('css/[name].[contenthash].css'), + // Setting the following option to `false` will not extract CSS from codesplit chunks. + // Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack. + // It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`, + // increasing file size: https://github.com/vuejs-templates/webpack/issues/1110 + allChunks: true, + }), + // Compress extracted CSS. We are using this plugin so that possible + // duplicated CSS from different components can be deduped. + new OptimizeCSSPlugin({ + cssProcessorOptions: config.build.productionSourceMap ? { + safe: true, + map: { + inline: false + } + } : { + safe: true + } + }), + // generate dist index.html with correct asset hash for caching. + // you can customize output by editing /index.html + // see https://github.com/ampedandwired/html-webpack-plugin + new HtmlWebpackPlugin({ + filename: config.build.index, + template: 'src/index.html', + inject: true, + favicon: path.resolve(__dirname, '../src/favicon.ico'), + title: 'Crypto', + minify: { + removeComments: true, + collapseWhitespace: true, + removeAttributeQuotes: true + // more options: + // https://github.com/kangax/html-minifier#options-quick-reference + }, + // necessary to consistently work with multiple chunks via CommonsChunkPlugin + chunksSortMode: 'dependency', + isProduct : process.env.NODE_ENV == 'production' ? true : false, + }), + + // keep module.id stable when vendor modules does not change + new webpack.HashedModuleIdsPlugin(), + // enable scope hoisting + new webpack.optimize.ModuleConcatenationPlugin(), + // split vendor js into its own file + new webpack.optimize.CommonsChunkPlugin({ + name: 'vendor', + minChunks(module) { + // any required modules inside node_modules are extracted to vendor + return ( + module.resource && + /\.js$/.test(module.resource) && + module.resource.indexOf( + path.join(__dirname, '../node_modules') + ) === 0 + ) + } + }), + + // extract webpack runtime and module manifest to its own file in order to + // prevent vendor hash from being updated whenever app bundle is updated + new webpack.optimize.CommonsChunkPlugin({ + name: 'manifest', + minChunks: Infinity + }), + + // This instance extracts shared chunks from code splitted chunks and bundles them + // in a separate chunk, similar to the vendor chunk + // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk + new webpack.optimize.CommonsChunkPlugin({ + name: 'app', + async: 'vendor-async', + children: true, + minChunks: 3 + }), + + // copy custom static assets + new CopyWebpackPlugin([{ + from: path.resolve(__dirname, '../static'), + to: config.build.assetsSubDirectory, + ignore: ['.*'] + }]), + + + // new CopyWebpackPlugin([{ + // from: path.resolve(__dirname, '../static/newProduct'), + // to: config.build.newProductRoot, + // ignore: ['.*'] + // }]), + ], +}) + +if (config.build.productionGzip) { + const CompressionWebpackPlugin = require('compression-webpack-plugin') + + webpackConfig.plugins.push( + new CompressionWebpackPlugin({ + asset: '[path].gz[query]', + algorithm: 'gzip', + test: new RegExp( + '\\.(' + + config.build.productionGzipExtensions.join('|') + + ')$' + ), + threshold: 10240, + minRatio: 0.8 + }) + ) +} + +if (config.build.bundleAnalyzerReport) { + const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin + webpackConfig.plugins.push(new BundleAnalyzerPlugin()) +} + +module.exports = webpackConfig diff --git a/config/dev.env.js b/config/dev.env.js new file mode 100644 index 0000000..69ca983 --- /dev/null +++ b/config/dev.env.js @@ -0,0 +1,9 @@ +'use strict' + +const merge = require('webpack-merge') +const prodEnv = require('./prod.env') + +// 编译时的全局常量 +module.exports = merge(prodEnv, { + NODE_ENV: '"development"' +}) diff --git a/config/index.js b/config/index.js new file mode 100644 index 0000000..12d8c5e --- /dev/null +++ b/config/index.js @@ -0,0 +1,107 @@ +'use strict' +// Template version: 1.3.1 +// see http://vuejs-templates.github.io/webpack for documentation. + + +// 用户配置的入口文件 接入脚手架中的配置 +const path = require('path'); + +module.exports = { + + // 开发相关配置 + dev: { + + // 打包资源根地址 + assetsPublicPath: '/', + + // 静态资源目录 + assetsSubDirectory: 'static', + + // newProductRoot: path.resolve(__dirname, '../dist/newProduct'), + + // 代理服务器基础配置 可在 process.env 中修改 + proxyTable: { + '/api': { + // target: 'http://qkladmin2.ruanmeng.top/', + // target: 'https://guanli.coin.amatak.net/', + target: 'https://bbxr.bxrcos.com/', + changeOrigin: true, + // pathRewrite: { + // // 请求时 将api替换成实际的apis等 + // // '^/api': '/api' + // }, + }, + // bypass(req) { console.log(req) } + }, + + // Various Dev Server settings + host: 'localhost', // can be overwritten by process.env.HOST + port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined + autoOpenBrowser: false, + errorOverlay: true, + notifyOnErrors: true, + poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions- + + // Use Eslint Loader? + // If true, your code will be linted during bundling and + // linting errors and warnings will be shown in the console. + useEslint: true, + + // If true, eslint errors and warnings will also be shown in the error overlay + // in the browser. + showEslintErrorsInOverlay: false, + + /** + * Source Maps + */ + + // https://webpack.js.org/configuration/devtool/#development + devtool: 'cheap-module-eval-source-map', + + // If you have problems debugging vue-files in devtools, + // set this to false - it *may* help + // https://vue-loader.vuejs.org/en/options.html#cachebusting + cacheBusting: true, + + cssSourceMap: false, // default true + }, + + // 打包生产环境的配置 + build: { + + // bundle的生成地址 + assetsRoot: path.resolve(__dirname, '../dist'), + + // newProductRoot: path.resolve(__dirname, '../dist/newProduct'), + + // bundle生成的文件 + index: path.resolve(__dirname, '../dist/index.html'), + + // 打包资源根地址 + assetsPublicPath: './', + + // 静态资源目录 + assetsSubDirectory: 'static', + + /** + * Source Maps + */ + productionSourceMap: false, + + // https://webpack.js.org/configuration/devtool/#production + devtool: '#source-map', + + // Gzip off by default as many popular static hosts such as + // Surge or Netlify already gzip all static assets for you. + // Before setting to `true`, make sure to: + // npm install --save-dev compression-webpack-plugin + productionGzip: false, + productionGzipExtensions: ['js', 'css'], + + // Run the build command with an extra argument to + // View the bundle analyzer report after build finishes: + // `npm run build --report` + // Set to `true` or `false` to always turn it on or off + bundleAnalyzerReport: process.env.npm_config_report + } +} diff --git a/config/prod.env.js b/config/prod.env.js new file mode 100644 index 0000000..331b492 --- /dev/null +++ b/config/prod.env.js @@ -0,0 +1,4 @@ +'use strict' +module.exports = { + NODE_ENV: '"production"' +} \ No newline at end of file diff --git a/icomoon/Read Me.txt b/icomoon/Read Me.txt new file mode 100644 index 0000000..8491652 --- /dev/null +++ b/icomoon/Read Me.txt @@ -0,0 +1,7 @@ +Open *demo.html* to see a list of all the glyphs in your font along with their codes/ligatures. + +To use the generated font in desktop programs, you can install the TTF font. In order to copy the character associated with each icon, refer to the text box at the bottom right corner of each glyph in demo.html. The character inside this text box may be invisible; but it can still be copied. See this guide for more info: https://icomoon.io/#docs/local-fonts + +You won't need any of the files located under the *demo-files* directory when including the generated font in your own projects. + +You can import *selection.json* back to the IcoMoon app using the *Import Icons* button (or via Main Menu → Manage Projects) to retrieve your icon selection. diff --git a/icomoon/demo-files/demo.css b/icomoon/demo-files/demo.css new file mode 100644 index 0000000..163ca05 --- /dev/null +++ b/icomoon/demo-files/demo.css @@ -0,0 +1,152 @@ +body { + padding: 0; + margin: 0; + font-family: sans-serif; + font-size: 1em; + line-height: 1.5; + color: #555; + background: #fff; +} +h1 { + font-size: 1.5em; + font-weight: normal; +} +small { + font-size: .66666667em; +} +a { + color: #e74c3c; + text-decoration: none; +} +a:hover, a:focus { + box-shadow: 0 1px #e74c3c; +} +.bshadow0, input { + box-shadow: inset 0 -2px #e7e7e7; +} +input:hover { + box-shadow: inset 0 -2px #ccc; +} +input, fieldset { + font-family: sans-serif; + font-size: 1em; + margin: 0; + padding: 0; + border: 0; +} +input { + color: inherit; + line-height: 1.5; + height: 1.5em; + padding: .25em 0; +} +input:focus { + outline: none; + box-shadow: inset 0 -2px #449fdb; +} +.glyph { + font-size: 16px; + width: 15em; + padding-bottom: 1em; + margin-right: 4em; + margin-bottom: 1em; + float: left; + overflow: hidden; +} +.liga { + width: 80%; + width: calc(100% - 2.5em); +} +.talign-right { + text-align: right; +} +.talign-center { + text-align: center; +} +.bgc1 { + background: #f1f1f1; +} +.fgc1 { + color: #999; +} +.fgc0 { + color: #000; +} +p { + margin-top: 1em; + margin-bottom: 1em; +} +.mvm { + margin-top: .75em; + margin-bottom: .75em; +} +.mtn { + margin-top: 0; +} +.mtl, .mal { + margin-top: 1.5em; +} +.mbl, .mal { + margin-bottom: 1.5em; +} +.mal, .mhl { + margin-left: 1.5em; + margin-right: 1.5em; +} +.mhmm { + margin-left: 1em; + margin-right: 1em; +} +.mls { + margin-left: .25em; +} +.ptl { + padding-top: 1.5em; +} +.pbs, .pvs { + padding-bottom: .25em; +} +.pvs, .pts { + padding-top: .25em; +} +.unit { + float: left; +} +.unitRight { + float: right; +} +.size1of2 { + width: 50%; +} +.size1of1 { + width: 100%; +} +.clearfix:before, .clearfix:after { + content: " "; + display: table; +} +.clearfix:after { + clear: both; +} +.hidden-true { + display: none; +} +.textbox0 { + width: 3em; + background: #f1f1f1; + padding: .25em .5em; + line-height: 1.5; + height: 1.5em; +} +#testDrive { + display: block; + padding-top: 24px; + line-height: 1.5; +} +.fs0 { + font-size: 16px; +} +.fs1 { + font-size: 16px; +} + diff --git a/icomoon/demo-files/demo.js b/icomoon/demo-files/demo.js new file mode 100644 index 0000000..6f45f1c --- /dev/null +++ b/icomoon/demo-files/demo.js @@ -0,0 +1,30 @@ +if (!('boxShadow' in document.body.style)) { + document.body.setAttribute('class', 'noBoxShadow'); +} + +document.body.addEventListener("click", function(e) { + var target = e.target; + if (target.tagName === "INPUT" && + target.getAttribute('class').indexOf('liga') === -1) { + target.select(); + } +}); + +(function() { + var fontSize = document.getElementById('fontSize'), + testDrive = document.getElementById('testDrive'), + testText = document.getElementById('testText'); + function updateTest() { + testDrive.innerHTML = testText.value || String.fromCharCode(160); + if (window.icomoonLiga) { + window.icomoonLiga(testDrive); + } + } + function updateSize() { + testDrive.style.fontSize = fontSize.value + 'px'; + } + fontSize.addEventListener('change', updateSize, false); + testText.addEventListener('input', updateTest, false); + testText.addEventListener('change', updateTest, false); + updateSize(); +}()); diff --git a/icomoon/demo.html b/icomoon/demo.html new file mode 100644 index 0000000..f70ffb4 --- /dev/null +++ b/icomoon/demo.html @@ -0,0 +1,472 @@ + + + + + IcoMoon Demo + + + + + +
+

Font Name: icomoon (Glyphs: 31)

+
+
+

Grid Size: Unknown

+
+
+ + icon-Icon-Addmore +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-Address +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-Android +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-App +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-apple +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-Close +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-Commission +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-Copy +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-Delete +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-EmailAddress +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-Export +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-eye +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-eyec +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-History +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-Increase +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-leftarrow-small +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-Playstore +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-Reset +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-rightarrow-small +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-select20 +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-select100 +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-social-fb +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-social-ins +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-social-linkedin +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-social-medium +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-social-twitter +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-social-youtube +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-Triangle +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-TriangleTop +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-Uploadimage +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-Icon-User +
+
+ + +
+
+ liga: + +
+
+
+ + +
+

Font Test Drive

+ + +
  +
+
+ +
+

Generated by IcoMoon

+
+ + + + diff --git a/icomoon/fonts/icomoon.eot b/icomoon/fonts/icomoon.eot new file mode 100644 index 0000000..d98a788 Binary files /dev/null and b/icomoon/fonts/icomoon.eot differ diff --git a/icomoon/fonts/icomoon.svg b/icomoon/fonts/icomoon.svg new file mode 100644 index 0000000..f9baa6f --- /dev/null +++ b/icomoon/fonts/icomoon.svg @@ -0,0 +1,44 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/icomoon/fonts/icomoon.ttf b/icomoon/fonts/icomoon.ttf new file mode 100644 index 0000000..24d405c Binary files /dev/null and b/icomoon/fonts/icomoon.ttf differ diff --git a/icomoon/fonts/icomoon.woff b/icomoon/fonts/icomoon.woff new file mode 100644 index 0000000..8650484 Binary files /dev/null and b/icomoon/fonts/icomoon.woff differ diff --git a/icomoon/selection.json b/icomoon/selection.json new file mode 100644 index 0000000..21a524d --- /dev/null +++ b/icomoon/selection.json @@ -0,0 +1 @@ +{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M512 0c282.325 0 512 229.675 512 512s-229.675 512-512 512c-282.325 0-512-229.675-512-512s229.675-512 512-512zM512 85.333c-235.264 0-426.667 191.403-426.667 426.667s191.403 426.667 426.667 426.667c235.264 0 426.667-191.403 426.667-426.667s-191.403-426.667-426.667-426.667zM512 272c24.301 0 44.383 18.058 47.562 41.487l0.438 6.513v144h144c26.51 0 48 21.49 48 48 0 24.301-18.058 44.383-41.487 47.562l-6.513 0.438h-144v144c0 26.51-21.49 48-48 48-24.301 0-44.383-18.058-47.562-41.487l-0.438-6.513v-144h-144c-26.51 0-48-21.49-48-48 0-24.301 18.058-44.383 41.487-47.562l6.513-0.438h144v-144c0-26.51 21.49-48 48-48z"],"attrs":[{"fill":"rgb(193, 187, 242)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-Addmore"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":3}]}},"attrs":[{"fill":"rgb(193, 187, 242)"}],"properties":{"order":72,"id":30,"name":"Icon-Addmore","prevSize":16,"code":59648},"setIdx":0,"setId":2,"iconIdx":0},{"icon":{"paths":["M507.799 370.984l17.857 0.696c31.037 2.354 54.345 28.881 51.977 59.135-2.36 30.302-29.494 53.108-60.491 50.809-16.695-1.224-33.659 0.5-50.366 5.043-0.189 0.051-0.387 0.102-0.58 0.154-35.149 9.311-66.194 30.152-87.569 58.765-3.774 4.933-6.907 9.574-9.904 14.684-21.371 36.42-26.937 78.866-15.672 119.514 11.269 40.652 37.997 74.544 75.261 95.436v0l209.623 117.526c37.232 20.865 80.356 26.345 121.49 15.448 0.411-0.106 0.801-0.209 1.188-0.315 41.384-10.96 75.881-36.998 97.236-73.386 21.367-36.416 26.929-78.862 15.664-119.506-11.269-40.656-37.997-74.552-75.261-95.444-26.969-15.117-36.329-48.864-20.855-75.225 15.47-26.365 49.991-35.51 76.964-20.389 63.359 35.514 108.799 93.129 127.954 162.229 19.16 69.095 9.695 141.253-26.643 203.179-36.362 61.962-95.061 106.298-165.351 124.919-0.528 0.138-1.059 0.28-1.587 0.417-70.053 18.562-143.509 9.228-206.904-26.31v0l-209.623-117.526c-130.999-73.437-176.451-237.367-101.312-365.408 5.224-8.905 10.79-17.204 17.017-25.369 36.378-48.714 89.426-84.232 149.14-99.775 29.023-7.822 58.844-10.795 88.604-8.606zM235.194 9.322c70.049-18.554 143.509-9.224 206.896 26.318v0l209.627 117.522c63.359 35.518 108.799 93.133 127.958 162.229 19.152 69.091 9.695 141.249-26.651 203.179-5.264 8.98-10.834 17.271-17.017 25.333-36.172 48.447-88.798 83.795-148.205 99.531-0.834 0.213-1.671 0.445-2.509 0.669-28.512 7.551-57.809 10.303-87.033 8.157-30.993-2.287-54.313-28.802-51.985-59.107 2.352-30.294 29.494-53.068 60.479-50.793 16.715 1.236 33.707-0.484 50.39-5.027 35.214-9.307 66.662-30.148 88.149-58.915 3.77-4.921 6.899-9.563 9.908-14.692 21.379-36.427 26.945-78.874 15.676-119.518s-38.001-74.536-75.269-95.429v0l-209.623-117.522c-37.405-20.971-80.871-26.247-122.082-15.298-0.193 0.051-0.391 0.102-0.588 0.154-41.388 10.964-75.885 37.006-97.24 73.394-44.195 75.319-17.464 171.748 59.593 214.95 26.973 15.113 36.329 48.864 20.859 75.229-15.466 26.361-49.999 35.51-76.964 20.389-130.999-73.445-176.447-237.367-101.312-365.412 36.362-61.962 95.057-106.302 165.343-124.915 0.532-0.142 1.063-0.283 1.599-0.425z"],"attrs":[{"fill":"rgb(193, 187, 242)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-Address"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":3}]}},"attrs":[{"fill":"rgb(193, 187, 242)"}],"properties":{"order":73,"id":29,"name":"Icon-Address","prevSize":16,"code":59649},"setIdx":0,"setId":2,"iconIdx":1},{"icon":{"paths":["M801.237 343.375v409.896c0 18.867-6.688 34.859-20.108 47.99-13.492 13.088-29.639 19.675-48.572 19.675v0h-47.266v139.72c0 17.592-6.282 32.579-18.918 44.916-12.593 12.309-27.942 18.428-45.96 18.428-18.091 0-33.44-6.119-46.018-18.428-12.636-12.337-18.933-27.324-18.933-44.916v0-139.72h-86.988v139.72c0 17.592-6.296 32.579-18.874 44.916-12.636 12.309-27.942 18.428-46.018 18.428-17.627 0-32.758-6.119-45.395-18.428-12.578-12.337-18.918-27.324-18.918-44.916v0l-0.624-139.72h-46.642c-19.324 0-35.703-6.587-49.138-19.675-13.492-13.131-20.166-29.123-20.166-48.046v0-409.84h578.537zM133.16 331.706c17.67 0 32.802 6.147 45.395 18.428 12.636 12.337 18.918 27.111 18.918 44.321v0 264.638c0 17.663-6.224 32.593-18.584 44.93-12.404 12.281-27.652 18.428-45.728 18.428-18.033 0-33.382-6.147-45.96-18.428-12.636-12.337-18.933-27.267-18.933-44.93v0-264.638c0-17.21 6.296-31.984 18.933-44.321 12.578-12.281 27.927-18.428 45.96-18.428zM890.782 331.706c18.077 0 33.44 6.034 46.018 18.145 12.636 12.125 18.933 27.012 18.933 44.604v0 264.638c0 17.663-6.296 32.593-18.933 44.93-12.578 12.281-27.942 18.428-46.018 18.428-17.627 0-32.758-6.147-45.337-18.428-12.636-12.337-18.933-27.267-18.933-44.93v0-264.638c0-17.592 6.296-32.48 18.933-44.604 12.578-12.111 27.71-18.145 45.337-18.145zM684.055 4.927c2.945-4.927 7.138-6.147 12.636-3.711 5.034 2.875 6.064 6.969 3.105 12.337v0l-44.713 80.625c44.945 22.564 80.88 54.052 107.734 94.45 26.926 40.44 40.346 84.591 40.346 132.623v0h-582.962c0-48.032 13.42-92.183 40.346-132.623 26.854-40.398 63.021-71.886 108.416-94.45v0l-44.771-80.625c-2.945-5.368-1.93-9.405 3.105-12.337 5.498-2.436 9.691-1.216 12.651 3.711v0l45.38 81.22c39.896-17.21 82.128-25.836 126.667-25.836s86.77 8.626 126.725 25.836v0zM645.001 170.469c-6.746 0-12.52 2.38-17.337 7.082-4.875 4.703-7.254 10.354-7.254 16.941 0 6.572 2.379 12.167 7.254 16.87 4.817 4.759 10.591 7.139 17.337 7.139 6.688 0 12.361-2.38 17.003-7.139 4.584-4.703 6.92-10.34 6.92-16.87 0-6.587-2.336-12.238-6.92-16.941-4.642-4.703-10.315-7.082-17.003-7.082zM378.988 170.469c-6.688 0-12.419 2.38-17.003 7.082-4.642 4.703-6.906 10.354-6.906 16.941 0 6.572 2.263 12.167 6.906 16.87 4.584 4.759 10.257 7.139 17.003 7.139s12.52-2.38 17.337-7.139c4.817-4.703 7.254-10.34 7.254-16.87 0-6.587-2.437-12.238-7.254-16.941s-10.591-7.082-17.337-7.082z"],"attrs":[{"fill":"rgb(255, 255, 255)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-Android"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":5}]}},"attrs":[{"fill":"rgb(255, 255, 255)"}],"properties":{"order":74,"id":28,"name":"Icon-Android","prevSize":16,"code":59650},"setIdx":0,"setId":2,"iconIdx":2},{"icon":{"paths":["M791.537 0c63.032 0 114.309 49.344 114.309 110v0 804c0 60.656-51.277 110-114.309 110v0h-559.075c-63.032 0-114.309-49.344-114.309-110v0-804c0-60.656 51.277-110 114.309-110v0zM843.496 827.2h-662.992v86.8c0 27.573 23.305 50 51.959 50v0h559.074c28.653 0 51.959-22.427 51.959-50v0-86.8zM512 853.271c24.294 0 43.986 18.949 43.986 42.328 0 21.82-17.154 39.784-39.193 42.082l-4.793 0.248c-24.294 0-43.986-18.952-43.986-42.331s19.692-42.328 43.986-42.328zM791.537 60h-559.074c-28.653 0-51.959 22.427-51.959 50v0 657.2h662.992v-657.2c0-27.573-23.305-50-51.959-50v0zM354.722 334.405c5.631 0 10.419 3.96 11.265 9.317l43.545 276.229c1.025 6.509-4.209 12.371-11.051 12.371h-21.191c-5.6 0-10.336-3.989-11.079-9.331l-6.094-43.821h-49.955l-5.492 43.688c-0.682 5.403-5.442 9.464-11.098 9.464h-22.59c-6.8 0-12.027-5.797-11.065-12.275l40.935-276.227c0.801-5.403 5.609-9.416 11.278-9.416h42.592zM525.724 334.404c24.040 0 40.483 7.027 49.337 21.075 8.857 14.051 13.515 35.013 13.986 62.885v6.261c0 29.568-4.37 51.995-13.102 67.285-8.737 15.293-24.951 22.939-48.639 22.939h-25.508v106.344c0 6.144-5.179 11.131-11.567 11.131h-24.006c-6.39 0-11.569-4.987-11.569-11.131v-275.005c0-6.509 5.484-11.784 12.246-11.784h58.823zM702.58 334.404c24.040 0 40.483 7.027 49.337 21.075 8.857 14.051 13.515 35.013 13.986 62.885v6.261c0 29.568-4.37 51.995-13.102 67.285-8.737 15.293-24.951 22.939-48.639 22.939h-25.505v105.453c0 6.637-5.595 12.021-12.492 12.021h-22.158c-6.9 0-12.492-5.384-12.492-12.021v-274.115c0-6.509 5.481-11.784 12.243-11.784h58.823zM334.438 393.141h-0.704l-18.999 149.635h40.458l-20.756-149.635zM518.336 369.273h-16.538v108.165h16.186c9.968 0 16.447-3.696 19.434-11.088 2.996-7.389 4.489-21.467 4.489-42.232v-5.755c-0.119-17.605-1.732-30.187-4.838-37.749-3.109-7.557-9.353-11.341-18.733-11.341zM695.192 369.273h-16.535v108.165h16.183c9.968 0 16.447-3.696 19.437-11.088 2.993-7.389 4.486-21.467 4.486-42.232v-5.755c-0.119-17.605-1.732-30.187-4.838-37.749-3.109-7.557-9.353-11.341-18.733-11.341zM597.212 120c17.223 0 31.175 13.427 31.175 30s-13.953 30-31.175 30v0h-170.424c-17.223 0-31.175-13.427-31.175-30s13.953-30 31.175-30v0z"],"attrs":[{"fill":"rgb(255, 255, 255)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-App"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":5}]}},"attrs":[{"fill":"rgb(255, 255, 255)"}],"properties":{"order":75,"id":27,"name":"Icon-App","prevSize":16,"code":59651},"setIdx":0,"setId":2,"iconIdx":3},{"icon":{"paths":["M730.653 249.443c76.59 11.692 130.768 46.409 164.299 99.773-64.59 41.912-115.827 105.169-107.062 213.156 7.765 98.094 63.884 155.535 133.71 189.232v2.099c-20.236 62.058-48.707 115.002-83.649 164.409-31.942 44.73-71.002 104.929-140.769 104.929-60.531 0-100.473-39.573-162.299-40.473-65.296-1.199-101.356 33.038-161.122 41.432h-20.412c-43.884-6.356-79.296-41.912-105.003-73.75-76.061-94.436-134.886-216.214-145.945-372.228v-45.629c4.588-111.705 57.884-202.363 128.474-246.374 37.413-23.444 88.708-43.351 145.887-34.477 24.354 3.777 49.413 12.412 71.473 20.866 20.706 8.214 46.648 22.485 71.237 21.765 16.765-0.48 33.295-9.354 50.178-15.649 49.296-18.048 97.591-38.914 161.005-29.080zM712.488 0c5.765 72.131-21.354 126.215-54.237 165.368-32.177 38.614-76.473 76.328-147.71 70.752-4.824-71.232 22.295-121.358 55.119-160.212 30.354-36.335 86.179-68.654 139.71-75.909h7.118z"],"attrs":[{"fill":"rgb(255, 255, 255)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-apple"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":5}]}},"attrs":[{"fill":"rgb(255, 255, 255)"}],"properties":{"order":76,"id":26,"name":"Icon-apple","prevSize":16,"code":59652},"setIdx":0,"setId":2,"iconIdx":4},{"icon":{"paths":["M995.386 28.591c-38.144-38.121-99.979-38.121-138.124 0l-345.277 345.31-345.277-345.31c-38.112-38.121-99.979-38.121-138.099 0-38.144 38.145-38.144 99.982 0 138.127l345.277 345.286-345.277 345.286c-38.144 38.145-38.144 99.982 0 138.127 19.044 19.044 44.069 28.583 69.054 28.583s49.969-9.506 69.046-28.583l345.277-345.31 345.277 345.31c19.076 19.044 44.061 28.583 69.046 28.583s50.010-9.506 69.078-28.583c38.12-38.145 38.12-99.982 0-138.127l-345.269-345.286 345.269-345.286c38.152-38.145 38.152-99.982 0-138.127z"],"attrs":[{"fill":"rgb(193, 187, 242)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-Close"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":3}]}},"attrs":[{"fill":"rgb(193, 187, 242)"}],"properties":{"order":77,"id":25,"name":"Icon-Close","prevSize":16,"code":59653},"setIdx":0,"setId":2,"iconIdx":5},{"icon":{"paths":["M512 0c282.325 0 512 229.675 512 512s-229.675 512-512 512c-282.325 0-512-229.675-512-512s229.675-512 512-512zM512 85.333c-235.264 0-426.667 191.403-426.667 426.667s191.403 426.667 426.667 426.667c235.264 0 426.667-191.403 426.667-426.667s-191.403-426.667-426.667-426.667zM532.832 192c23.219 0 42.043 18.824 42.043 42.043v0 28.115c61.645 18.187 106.781 75.269 106.781 142.739 0 23.219-18.824 42.043-42.043 42.043s-42.043-18.824-42.043-42.043c0-57.291-69.832-86.459-110.509-45.781-29.989 30.043-18.344 80.501 20.416 96.552v0l82.885 34.333c94.075 38.968 120.24 161.949 47.157 234.24-17.699 17.509-39.189 30.032-62.645 36.864v0 28.208c0 23.219-18.824 42.043-42.043 42.043s-42.053-18.824-42.053-42.043v0-28.144c-63.352-18.459-106.779-77.021-106.779-142.709 0-23.219 18.832-42.053 42.051-42.053s42.043 18.835 42.043 42.053c0 58.781 72.373 86.709 112.165 44.061 27.731-29.76 16.261-78.957-22.072-94.832v0l-82.885-34.333c-43.792-18.136-75.949-56.688-86-103.115-16.333-75.437 29.875-147.176 101.488-168.157v0-28.040c0-23.219 18.824-42.043 42.043-42.043z"],"attrs":[{"fill":"rgb(193, 187, 242)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-Commission"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":3}]}},"attrs":[{"fill":"rgb(193, 187, 242)"}],"properties":{"order":78,"id":24,"name":"Icon-Commission","prevSize":16,"code":59654},"setIdx":0,"setId":2,"iconIdx":6},{"icon":{"paths":["M731.427 182.856c60.594 0 109.714 49.121 109.714 109.714v0 621.715c0 60.594-49.121 109.714-109.714 109.714v0h-621.713c-60.594 0-109.714-49.121-109.714-109.714v0-621.715c0-60.594 49.121-109.714 109.714-109.714v0zM731.427 256.001h-621.713c-20.199 0-36.572 16.374-36.572 36.57v0 621.715c0 20.196 16.374 36.57 36.572 36.57v0h621.713c20.199 0 36.572-16.374 36.572-36.57v0-621.715c0-20.196-16.374-36.57-36.572-36.57v0zM914.286-0c60.594 0 109.714 49.121 109.714 109.714v0 658.285c0 60.594-49.121 109.714-109.714 109.714-20.199 0-36.572-16.374-36.572-36.572 0-20.196 16.374-36.57 36.572-36.57l5.932-0.479c17.376-2.834 30.638-17.915 30.638-36.093v0-658.285c0-20.199-16.374-36.572-36.57-36.572v0h-658.285c-20.199 0-36.572 16.374-36.572 36.572l-0.479 5.932c-2.834 17.377-17.915 30.64-36.093 30.64-20.196 0-36.57-16.374-36.57-36.572 0-60.594 49.121-109.714 109.714-109.714v0z"],"attrs":[{"fill":"rgb(193, 187, 242)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-Copy"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":3}]}},"attrs":[{"fill":"rgb(193, 187, 242)"}],"properties":{"order":79,"id":23,"name":"Icon-Copy","prevSize":16,"code":59655},"setIdx":0,"setId":2,"iconIdx":7},{"icon":{"paths":["M512 0c282.325 0 512 229.675 512 512s-229.675 512-512 512c-282.325 0-512-229.675-512-512s229.675-512 512-512zM512 85.333c-235.264 0-426.667 191.403-426.667 426.667s191.403 426.667 426.667 426.667c235.264 0 426.667-191.403 426.667-426.667s-191.403-426.667-426.667-426.667zM270.304 270.295c19.060-19.060 49.994-19.060 69.050 0v0l172.639 172.655 172.639-172.655c19.072-19.060 49.99-19.060 69.062 0 19.076 19.073 19.076 49.991 0 69.064v0l-172.634 172.643 172.634 172.643c19.060 19.073 19.060 49.991 0 69.064-9.534 9.538-22.047 14.291-34.539 14.291s-24.985-4.769-34.523-14.291v0l-172.639-172.655-172.639 172.655c-9.538 9.538-22.030 14.291-34.523 14.291s-25.005-4.769-34.527-14.291c-19.072-19.073-19.072-49.991 0-69.064v0l172.639-172.643-172.639-172.643c-19.072-19.073-19.072-49.991 0-69.064z"],"attrs":[{"fill":"rgb(193, 187, 242)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-Delete"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":3}]}},"attrs":[{"fill":"rgb(193, 187, 242)"}],"properties":{"order":80,"id":22,"name":"Icon-Delete","prevSize":16,"code":59656},"setIdx":0,"setId":2,"iconIdx":8},{"icon":{"paths":["M0 0h1024v1024h-1024v-1024z","M768.933 288.744c-15.428-15.431-37.56-19.859-57.753-11.551l-405.18 166.727c-20.683 8.548-33.599 28.453-32.907 50.652 0.461 22.259 14.474 41.368 35.714 48.682l138.479 47.321c8.103 2.843 16.94 1.191 23.67-4.439l175.045-148.494c10.235-8.623 11.517-24.007 2.858-34.299-8.628-10.239-24.014-11.521-34.313-2.844l-164.522 139.586-125.445-42.885c-0.799-0.271-2.92-0.991-3.073-4.167-0.145-2.972 2.017-3.828 2.799-4.14l405.17-166.821c0.691-0.284 2.788-1.144 4.924 0.998 2.146 2.147 1.288 4.236 1.006 4.921l-166.72 405.167c-0.565 1.365-1.515 2.759-4.288 2.803-2.686-0.169-3.517-1.56-4.024-3.080l-37.767-110.628c-4.302-12.643-18.161-19.442-30.914-15.137-12.639 4.301-19.434 18.159-15.14 30.918l37.774 110.649c7.277 21.119 26.362 35.212 48.621 35.908h1.728c21.546 0 40.813-12.917 49.092-32.919l166.718-405.175c8.309-20.189 3.884-42.32-11.551-57.754z"],"attrs":[{"fill":"rgb(0, 0, 0)"},{"fill":"rgb(255, 255, 255)"}],"isMulticolor":true,"isMulticolor2":false,"grid":0,"tags":["Icon-EmailAddress"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":0},{"f":5}]}},"attrs":[{"fill":"rgb(0, 0, 0)"},{"fill":"rgb(255, 255, 255)"}],"properties":{"order":81,"id":21,"name":"Icon-EmailAddress","prevSize":16,"code":59657,"codes":[59657,59658]},"setIdx":0,"setId":2,"iconIdx":9},{"icon":{"paths":["M363.636 34.133v147.036h-218.182v661.662h654.545v-291.793h145.455v365.311c0 40.655-32.509 73.518-72.727 73.518v0h-800c-40.145 0-72.727-32.863-72.727-73.518v0-808.697c0-40.582 32.582-73.518 72.727-73.518v0h290.909zM712.568 79.391c11.144-5.499 24.595-4.335 34.486 3.041v0l263.758 194.085c8.308 6.081 13.188 15.721 13.188 25.878s-4.88 19.797-13.188 25.878v0l-263.758 194.085c-9.957 7.375-23.408 8.54-34.552 3.041s-18.199-16.691-18.199-28.919v0-97.042h-65.939c-113.152 0-214.831 61.719-265.406 161.026v0l-7.781 15.203c-5.671 11.128-17.21 17.856-29.475 17.856-2.506 0-5.077-0.259-7.583-0.841-14.836-3.429-25.387-16.497-25.387-31.506 0-196.22 162.672-355.822 362.667-355.822v0h38.904v-97.042c0-12.227 7.056-23.42 18.265-28.919z"],"attrs":[{"fill":"rgb(193, 187, 242)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-Export"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":3}]}},"attrs":[{"fill":"rgb(193, 187, 242)"}],"properties":{"order":82,"id":20,"name":"Icon-Export","prevSize":16,"code":59659},"setIdx":0,"setId":2,"iconIdx":10},{"icon":{"paths":["M27.69 34.133h955.733v955.733h-955.733v-955.733z","M508.422 811.938c-167.327 0-323.48-90.063-407.335-235.137-9.073-15.759-3.725-35.91 12.034-44.984s35.91-3.725 44.984 12.034c72.203 124.731 206.39 202.187 350.318 202.187s278.21-77.456 350.318-202.187c9.073-15.759 29.225-21.107 44.984-12.034s21.107 29.225 12.034 44.984c-83.855 145.074-240.008 235.137-407.335 235.137zM887.296 487.98c-11.365 0-22.444-5.921-28.556-16.427-72.203-124.731-206.39-202.187-350.318-202.187s-278.115 77.456-350.318 202.187c-9.073 15.759-29.225 21.107-44.984 12.034s-21.107-29.225-12.034-44.984c83.855-145.074 240.008-235.137 407.335-235.137s323.48 90.063 407.335 235.137c9.073 15.759 3.725 35.91-12.034 44.984-5.157 2.961-10.888 4.393-16.427 4.393zM508.422 687.875c-98.276 0-178.12-79.939-178.12-178.12s79.939-178.12 178.12-178.12c98.181 0 178.12 79.939 178.12 178.12s-79.843 178.12-178.12 178.12zM508.422 397.44c-61.888 0-112.316 50.332-112.316 112.316s50.332 112.316 112.316 112.316c61.984 0 112.316-50.427 112.316-112.316s-50.427-112.316-112.316-112.316z"],"attrs":[{"fill":"rgb(23, 16, 33)","opacity":0.8},{"fill":"rgb(255, 255, 255)","opacity":0.8}],"isMulticolor":true,"isMulticolor2":false,"grid":0,"tags":["Icon-eye"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":1},{"f":5}]}},"attrs":[{"fill":"rgb(23, 16, 33)","opacity":0.8},{"fill":"rgb(255, 255, 255)","opacity":0.8}],"properties":{"order":83,"id":19,"name":"Icon-eye","prevSize":16,"code":59660,"codes":[59660,59661]},"setIdx":0,"setId":2,"iconIdx":11},{"icon":{"paths":["M20.48 34.133h954.801v954.801h-954.801v-954.801z","M497.901 543.626c-171.732 0-343.198-52.143-465.386-156.216-7.028-6.127-11.323-14.803-11.935-24.107s2.509-18.468 8.673-25.463c12.883-14.602 35.144-16.048 49.809-3.236 215.467 185.391 623.14 185.391 837.679 0 14.664-12.812 36.925-11.366 49.809 3.236 12.837 14.587 11.405 36.786-3.262 49.597-122.188 104.047-293.654 156.19-465.386 156.19zM370.382 697.030c-2.089 0.23-4.197 0.23-6.286 0-9.628-1.326-18.3-6.631-23.817-14.587-5.543-7.983-7.426-17.929-5.251-27.371l23.26-136.722c3.395-19.228 21.715-32.078 40.95-28.724 9.243 1.569 17.481 6.752 22.895 14.406s7.559 17.148 5.961 26.386l-23.26 136.696c-2.452 17.149-17.129 29.894-34.452 29.917v0zM893.48 627.489c-9.283 0-18.194-3.766-24.666-10.423l-114.709-115.849c-9.933-8.539-14.205-21.948-11.041-34.659s13.223-22.554 26-25.44c12.759-2.959 26.103 1.451 34.585 11.431l114.735 115.849c13.606 13.579 13.606 35.566 0 49.146-6.737 6.365-15.648 9.919-24.931 9.946h0.027zM102.322 627.49c-8.694-0.425-16.947-3.954-23.26-9.946-6.538-6.506-10.214-15.349-10.214-24.573s3.676-18.067 10.214-24.573l114.709-115.849c8.038-11.438 22.113-16.992 35.796-14.125s24.344 13.604 27.115 27.306c2.684 13.72-3.13 27.71-14.746 35.487l-114.709 115.849c-6.541 6.713-15.532 10.475-24.904 10.424v0zM627.038 697.030c-16.857-0.048-31.263-12.153-34.214-28.75l-23.26-136.722c-4.279-12.809-0.729-26.938 9.097-36.203 9.839-9.291 24.152-12.079 36.76-7.161 12.625 4.96 21.218 16.709 22.093 30.156l23.26 136.722c1.697 9.071-0.318 18.433-5.623 26.018s-13.394 12.731-22.544 14.322c-1.798 0.717-3.664 1.25-5.57 1.591v0.027z"],"attrs":[{"fill":"rgb(23, 16, 33)","opacity":0.8},{"fill":"rgb(255, 255, 255)","opacity":0.8}],"isMulticolor":true,"isMulticolor2":false,"grid":0,"tags":["Icon-eyec"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":1},{"f":5}]}},"attrs":[{"fill":"rgb(23, 16, 33)","opacity":0.8},{"fill":"rgb(255, 255, 255)","opacity":0.8}],"properties":{"order":84,"id":18,"name":"Icon-eyec","prevSize":16,"code":59662,"codes":[59662,59663]},"setIdx":0,"setId":2,"iconIdx":12},{"icon":{"paths":["M515.233 312.89v248.887l217.751 126.436 36.631-60.48-178.067-103.29v-211.554h-76.315zM108.218 512h-108.218l160.374 167.861c1.087 1.257 1.922 1.885 2.506 1.885s1.331-0.628 2.24-1.885l155.445-167.861h-110.592c0-192.39 159.499-348.444 356.137-348.444s356.137 156.053 356.137 348.444c0 192.39-159.499 348.444-356.137 348.444-98.447 0-187.227-39.324-251.585-102.293l-71.991 70.436c82.676 81.137 196.893 131.413 323.321 131.413 253.114 0 458.146-200.604 458.146-448s-205.033-448-458.146-448c-253.111 0-457.636 200.604-457.636 448z"],"attrs":[{"fill":"rgb(193, 187, 242)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-History"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":3}]}},"attrs":[{"fill":"rgb(193, 187, 242)"}],"properties":{"order":85,"id":17,"name":"Icon-History","prevSize":16,"code":59664},"setIdx":0,"setId":2,"iconIdx":13},{"icon":{"paths":["M512 0c282.325 0 512 229.675 512 512s-229.675 512-512 512c-282.325 0-512-229.675-512-512s229.675-512 512-512zM512 85.333c-235.264 0-426.667 191.403-426.667 426.667s191.403 426.667 426.667 426.667c235.264 0 426.667-191.403 426.667-426.667s-191.403-426.667-426.667-426.667zM512 512c22.805 0 44.224 8.896 60.352 25.003v0l140.096 136.448c16.875 16.427 17.237 43.435 0.789 60.331-8.363 8.576-19.456 12.885-30.571 12.885-10.731 0-21.461-4.011-29.781-12.117v0l-140.501-136.832-141.291 136.832c-16.875 16.448-43.904 16.085-60.331-0.789-16.448-16.875-16.085-43.883 0.789-60.331v0l140.501-136.832c15.723-15.701 37.141-24.597 59.947-24.597zM512 277.333c22.805 0 44.224 8.896 60.352 25.003v0l140.096 136.448c16.875 16.427 17.237 43.435 0.789 60.331-8.363 8.576-19.456 12.885-30.571 12.885-10.731 0-21.461-4.011-29.781-12.117v0l-140.501-136.832-141.291 136.832c-16.875 16.469-43.904 16.085-60.331-0.789-16.448-16.875-16.085-43.883 0.789-60.331v0l140.501-136.832c15.723-15.701 37.141-24.597 59.947-24.597z"],"attrs":[{"fill":"rgb(193, 187, 242)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-Increase"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":3}]}},"attrs":[{"fill":"rgb(193, 187, 242)"}],"properties":{"order":86,"id":16,"name":"Icon-Increase","prevSize":16,"code":59665},"setIdx":0,"setId":2,"iconIdx":14},{"icon":{"paths":["M225.494 562.692l434.499 440.308c27.699 27.999 72.521 27.999 100.135 0 27.563-27.999 27.563-73.419 0-101.401l-384.465-389.608 384.398-389.539c27.631-27.999 27.631-73.402 0-101.401-27.614-28.068-72.436-28.068-100.067 0l-434.499 440.308c-13.824 13.991-20.694 32.286-20.694 50.632s6.87 36.778 20.694 50.701z"],"attrs":[{"fill":"rgb(193, 187, 242)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-leftarrow-small"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":3}]}},"attrs":[{"fill":"rgb(193, 187, 242)"}],"properties":{"order":87,"id":15,"name":"Icon-leftarrow-small","prevSize":16,"code":59666},"setIdx":0,"setId":2,"iconIdx":15},{"icon":{"paths":["M895.248 435.073c-0.176-0.115-0.387-0.24-0.563-0.344l-145.717-84.853-161.544 162.304 161.637 161.979c0 0 146.011-85.125 146.187-85.219 27.093-16.459 43.28-45.219 43.28-76.939 0-31.728-16.187-60.491-43.28-76.928v0zM545.101 554.721l-459 461.176c12.176 5.645 25.136 8.104 38.072 8.104 15.981 0 31.928-3.821 46.365-12.499l524.928-306.085-150.365-150.696zM43.059 51.614c-5.8 12.272-8.925 25.939-8.925 40v842.763c0 14.125 3.144 27.584 9 39.603l459.563-461.739-459.637-460.627zM170.539 13.054c-26.384-15.885-57.821-17.304-85.24-4.085l459.741 460.731 150.323-151.021-524.824-305.624z"],"attrs":[{"fill":"rgb(255, 255, 255)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-Playstore"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":5}]}},"attrs":[{"fill":"rgb(255, 255, 255)"}],"properties":{"order":88,"id":14,"name":"Icon-Playstore","prevSize":16,"code":59667},"setIdx":0,"setId":2,"iconIdx":16},{"icon":{"paths":["M705.839 369.074c-6.82 22.963 5.916 47.215 28.459 54.173l140.804 43.442c4.071 1.26 8.238 1.868 12.377 1.868 12.039 0 23.776-5.217 32.011-14.749l93.878-108.606c15.57-18.003 13.831-45.466-3.847-61.319-17.682-15.878-44.697-14.097-60.21 3.903l-43.083 49.865c-69.849-182.791-241.459-303.518-436.891-303.518-258.793 0-469.336 214.37-469.336 477.867s210.543 477.867 469.336 477.867c222.419 0 415.85-160.802 459.946-382.355 4.697-23.531-10.237-46.469-33.348-51.208-23.207-4.793-45.611 10.408-50.276 33.954-36.071 181.209-194.319 312.724-376.322 312.724-211.738 0-384.002-175.395-384.002-390.982s172.264-390.982 384.002-390.982c156.527 0 294.32 94.621 353.67 238.807l-63.961-19.741c-22.485-6.929-46.361 6.010-53.206 28.991z"],"attrs":[{"fill":"rgb(193, 187, 242)","stroke":"rgb(193, 187, 242)","strokeLinejoin":"miter","strokeLinecap":"butt","strokeMiterlimit":"4","strokeWidth":34.13333333333333}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-Reset"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":3,"s":3}]}},"attrs":[{"fill":"rgb(193, 187, 242)","stroke":"rgb(193, 187, 242)","strokeLinejoin":"miter","strokeLinecap":"butt","strokeMiterlimit":"4","strokeWidth":34.13333333333333}],"properties":{"order":89,"id":13,"name":"Icon-Reset","prevSize":16,"code":59668},"setIdx":0,"setId":2,"iconIdx":17},{"icon":{"paths":["M760.106 562.692l-434.499 440.308c-27.699 27.999-72.521 27.999-100.135 0-27.563-27.999-27.563-73.419 0-101.401l384.465-389.608-384.398-389.539c-27.631-27.999-27.631-73.402 0-101.401 27.614-28.068 72.436-28.068 100.067 0l434.499 440.308c13.824 13.991 20.694 32.286 20.694 50.632s-6.87 36.778-20.694 50.701z"],"attrs":[{"fill":"rgb(193, 187, 242)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-rightarrow-small"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":3}]}},"attrs":[{"fill":"rgb(193, 187, 242)"}],"properties":{"order":90,"id":12,"name":"Icon-rightarrow-small","prevSize":16,"code":59669},"setIdx":0,"setId":2,"iconIdx":18},{"icon":{"paths":["M512 877.714l512-731.429h-1024z"],"attrs":[{"fill":"rgb(229, 197, 229)","opacity":0.4}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-select20%"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":4}]}},"attrs":[{"fill":"rgb(229, 197, 229)","opacity":0.4}],"properties":{"order":91,"id":11,"name":"Icon-select20","prevSize":16,"code":59670},"setIdx":0,"setId":2,"iconIdx":19},{"icon":{"paths":["M512 877.714l512-731.429h-1024z"],"attrs":[{"fill":"rgb(229, 197, 229)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-select100%"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":4}]}},"attrs":[{"fill":"rgb(229, 197, 229)"}],"properties":{"order":92,"id":10,"name":"Icon-select100","prevSize":16,"code":59671},"setIdx":0,"setId":2,"iconIdx":20},{"icon":{"paths":["M987.429 512c0 262.572-212.857 475.429-475.429 475.429s-475.429-212.857-475.429-475.429c0-262.572 212.857-475.429 475.429-475.429s475.429 212.857 475.429 475.429z","M638.611 344.766h-57.177c-11.319 0-22.748 11.696-22.748 20.405v58.298h79.807c-3.206 44.7-9.804 85.577-9.804 85.577h-70.414v253.328h-104.916v-253.354h-51.072v-85.251h51.072v-69.692c0-12.745-2.578-98.077 107.503-98.077h77.749v88.766z"],"attrs":[{"fill":"none","opacity":0.6,"stroke":"rgb(193, 187, 242)","strokeLinejoin":"miter","strokeLinecap":"butt","strokeMiterlimit":"4","strokeWidth":36.57142857142857},{"fill":"rgb(193, 187, 242)","opacity":0.6}],"isMulticolor":false,"isMulticolor2":true,"grid":0,"tags":["Icon-social-fb"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"s":3},{"f":3}]}},"attrs":[{"fill":"none","opacity":0.6,"stroke":"rgb(193, 187, 242)","strokeLinejoin":"miter","strokeLinecap":"butt","strokeMiterlimit":"4","strokeWidth":36.57142857142857},{"fill":"rgb(193, 187, 242)","opacity":0.6}],"properties":{"order":93,"id":9,"name":"Icon-social-fb","prevSize":16,"code":59672},"setIdx":0,"setId":2,"iconIdx":21},{"icon":{"paths":["M987.429 512c0 262.572-212.857 475.429-475.429 475.429s-475.429-212.857-475.429-475.429c0-262.572 212.857-475.429 475.429-475.429s475.429 212.857 475.429 475.429z","M516.319 731.429c-1.453 0-2.907 0-4.37-0.007-34.399 0.084-66.183-0.79-97.095-2.672-28.339-1.725-54.207-11.517-74.812-28.319-19.881-16.212-33.459-38.133-40.353-65.146-6-23.517-6.318-46.604-6.623-68.933-0.221-16.021-0.448-35.006-0.495-54.311 0.047-19.386 0.274-38.371 0.495-54.392 0.305-22.326 0.623-45.412 6.623-68.933 6.894-27.014 20.471-48.934 40.353-65.146 20.605-16.802 46.473-26.595 74.816-28.319 30.91-1.878 62.702-2.756 97.175-2.672 34.41-0.074 66.184 0.794 97.095 2.672 28.34 1.725 54.208 11.517 74.813 28.319 19.885 16.212 33.459 38.133 40.353 65.146 6 23.517 6.318 46.607 6.622 68.933 0.221 16.021 0.453 35.006 0.495 54.311v0.081c-0.043 19.305-0.274 38.29-0.495 54.311-0.304 22.326-0.619 45.412-6.622 68.933-6.894 27.014-20.468 48.934-40.353 65.146-20.605 16.802-46.473 26.595-74.813 28.319-29.601 1.802-60.009 2.679-92.809 2.679zM511.949 697.136c33.841 0.081 64.912-0.773 95.097-2.608 21.429-1.302 40.007-8.257 55.228-20.668 14.069-11.475 23.759-27.305 28.798-47.053 4.995-19.576 5.283-40.597 5.561-60.924 0.218-15.914 0.446-34.764 0.492-53.883-0.046-19.122-0.274-37.969-0.492-53.883-0.278-20.327-0.566-41.348-5.561-60.927-5.039-19.748-14.729-35.578-28.798-47.053-15.221-12.408-33.8-19.363-55.228-20.665-30.184-1.839-61.256-2.685-95.016-2.612-33.834-0.081-64.908 0.773-95.092 2.612-21.429 1.302-40.008 8.257-55.229 20.665-14.069 11.475-23.759 27.305-28.798 47.053-4.995 19.58-5.283 40.597-5.561 60.927-0.218 15.927-0.445 34.788-0.492 53.923 0.047 19.051 0.274 37.915 0.492 53.842 0.278 20.327 0.566 41.348 5.561 60.924 5.039 19.748 14.729 35.578 28.798 47.053 15.221 12.408 33.801 19.363 55.229 20.665 30.184 1.839 61.265 2.696 95.012 2.612zM511.133 619.143c-59.076 0-107.143-48.063-107.143-107.143s48.067-107.143 107.143-107.143c59.079 0 107.143 48.063 107.143 107.143s-48.063 107.143-107.143 107.143zM511.133 439.143c-40.172 0-72.857 32.685-72.857 72.857s32.685 72.857 72.857 72.857c40.175 0 72.857-32.685 72.857-72.857s-32.682-72.857-72.857-72.857zM630.275 370.571c-14.199 0-25.714 11.511-25.714 25.714s11.515 25.714 25.714 25.714c14.204 0 25.714-11.511 25.714-25.714s-11.511-25.714-25.714-25.714z"],"attrs":[{"fill":"none","opacity":0.6,"stroke":"rgb(193, 187, 242)","strokeLinejoin":"miter","strokeLinecap":"butt","strokeMiterlimit":"4","strokeWidth":36.57142857142857},{"fill":"rgb(193, 187, 242)","opacity":0.6}],"isMulticolor":false,"isMulticolor2":true,"grid":0,"tags":["Icon-social-ins"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"s":3},{"f":3}]}},"attrs":[{"fill":"none","opacity":0.6,"stroke":"rgb(193, 187, 242)","strokeLinejoin":"miter","strokeLinecap":"butt","strokeMiterlimit":"4","strokeWidth":36.57142857142857},{"fill":"rgb(193, 187, 242)","opacity":0.6}],"properties":{"order":94,"id":8,"name":"Icon-social-ins","prevSize":16,"code":59673},"setIdx":0,"setId":2,"iconIdx":22},{"icon":{"paths":["M987.429 512c0 262.572-212.857 475.429-475.429 475.429s-475.429-212.857-475.429-475.429c0-262.572 212.857-475.429 475.429-475.429s475.429 212.857 475.429 475.429z","M390.685 426.881v278.606h-92.605v-278.606h92.605zM618.040 420.342c60.961 0 106.652 39.812 106.652 125.378v159.767h-92.634v-149.055c0-37.439-13.382-62.99-46.905-62.99-25.607 0-40.818 17.206-47.521 33.875-2.436 5.952-3.071 14.225-3.071 22.578v155.6h-92.648l0.008-1.747c0.106-22.347 1.168-252.005-0.008-276.866h92.648v39.483c12.31-18.942 34.273-46.022 83.479-46.022zM344.993 292.571c31.694 0 51.18 20.791 51.787 48.127 0 26.752-20.092 48.158-52.394 48.158h-0.615c-31.065 0-51.2-21.406-51.2-48.158 0-27.336 20.727-48.127 52.421-48.127z"],"attrs":[{"fill":"none","opacity":0.6,"stroke":"rgb(193, 187, 242)","strokeLinejoin":"miter","strokeLinecap":"butt","strokeMiterlimit":"4","strokeWidth":36.57142857142857},{"fill":"rgb(193, 187, 242)","opacity":0.6}],"isMulticolor":false,"isMulticolor2":true,"grid":0,"tags":["Icon-social-linkedin"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"s":3},{"f":3}]}},"attrs":[{"fill":"none","opacity":0.6,"stroke":"rgb(193, 187, 242)","strokeLinejoin":"miter","strokeLinecap":"butt","strokeMiterlimit":"4","strokeWidth":36.57142857142857},{"fill":"rgb(193, 187, 242)","opacity":0.6}],"properties":{"order":95,"id":7,"name":"Icon-social-linkedin","prevSize":16,"code":59674},"setIdx":0,"setId":2,"iconIdx":23},{"icon":{"paths":["M987.429 512c0 262.572-212.857 475.429-475.429 475.429s-475.429-212.857-475.429-475.429c0-262.572 212.857-475.429 475.429-475.429s475.429 212.857 475.429 475.429z","M314.267 408.722c0.611-6.031-1.692-11.995-6.193-16.054l-45.881-55.27v-8.256h142.456l110.112 241.488 96.807-241.488h135.802v8.256l-39.227 37.61c-3.383 2.581-5.060 6.815-4.359 11.009v276.345c-0.701 4.194 0.975 8.432 4.359 11.009l38.312 37.61v8.256h-192.696v-8.256l39.685-38.526c3.901-3.901 3.901-5.045 3.901-11.009v-223.371l-110.341 280.246h-14.91l-128.465-280.246v187.823c-1.073 7.896 1.553 15.848 7.112 21.557l51.613 62.61v8.256h-146.353v-8.256l51.616-62.61c5.518-5.72 7.986-13.725 6.65-21.557v-217.178z"],"attrs":[{"fill":"none","opacity":0.6,"stroke":"rgb(193, 187, 242)","strokeLinejoin":"miter","strokeLinecap":"butt","strokeMiterlimit":"4","strokeWidth":36.57142857142857},{"fill":"rgb(193, 187, 242)","opacity":0.6}],"isMulticolor":false,"isMulticolor2":true,"grid":0,"tags":["Icon-social-medium"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"s":3},{"f":3}]}},"attrs":[{"fill":"none","opacity":0.6,"stroke":"rgb(193, 187, 242)","strokeLinejoin":"miter","strokeLinecap":"butt","strokeMiterlimit":"4","strokeWidth":36.57142857142857},{"fill":"rgb(193, 187, 242)","opacity":0.6}],"properties":{"order":96,"id":6,"name":"Icon-social-medium","prevSize":16,"code":59675},"setIdx":0,"setId":2,"iconIdx":24},{"icon":{"paths":["M987.429 512c0 262.572-212.857 475.429-475.429 475.429s-475.429-212.857-475.429-475.429c0-262.572 212.857-475.429 475.429-475.429s475.429 212.857 475.429 475.429z","M710.53 395.059c0.201 4.454 0.302 8.934 0.302 13.439 0 137.286-104.49 295.585-295.585 295.585-58.666 0-113.273-17.196-159.247-46.676 8.13 0.962 16.393 1.455 24.782 1.455 48.672 0 93.464-16.603 129.023-44.475-45.463-0.836-83.828-30.869-97.048-72.146 6.347 1.215 12.854 1.867 19.543 1.867 9.478 0 18.654-1.271 27.377-3.642-47.523-9.553-83.341-51.533-83.341-101.868 0-0.435 0-0.87 0.009-1.307 14.007 7.778 30.024 12.451 47.054 12.995-27.873-18.628-46.207-50.427-46.207-86.473 0-19.040 5.123-36.881 14.065-52.228 51.24 62.852 127.79 104.213 214.13 108.551-1.777-7.611-2.696-15.54-2.696-23.678 0-57.37 46.518-103.888 103.885-103.888 29.883 0 56.885 12.618 75.831 32.804 23.661-4.655 45.898-13.304 65.978-25.21-7.761 24.263-24.231 44.617-45.682 57.477 21.016-2.512 41.035-8.096 59.672-16.36-13.923 20.832-31.54 39.134-51.844 53.777z"],"attrs":[{"fill":"none","opacity":0.6,"stroke":"rgb(193, 187, 242)","strokeLinejoin":"miter","strokeLinecap":"butt","strokeMiterlimit":"4","strokeWidth":36.57142857142857},{"fill":"rgb(193, 187, 242)","opacity":0.6}],"isMulticolor":false,"isMulticolor2":true,"grid":0,"tags":["Icon-social-twitter"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"s":3},{"f":3}]}},"attrs":[{"fill":"none","opacity":0.6,"stroke":"rgb(193, 187, 242)","strokeLinejoin":"miter","strokeLinecap":"butt","strokeMiterlimit":"4","strokeWidth":36.57142857142857},{"fill":"rgb(193, 187, 242)","opacity":0.6}],"properties":{"order":97,"id":5,"name":"Icon-social-twitter","prevSize":16,"code":59676},"setIdx":0,"setId":2,"iconIdx":25},{"icon":{"paths":["M987.429 512c0 262.572-212.857 475.429-475.429 475.429s-475.429-212.857-475.429-475.429c0-262.572 212.857-475.429 475.429-475.429s475.429 212.857 475.429 475.429z","M714.32 392.224c-15.836-18.83-45.084-26.51-100.942-26.51h-202.763c-57.131 0-86.876 8.177-102.657 28.223-15.387 19.549-15.387 48.354-15.387 88.217v75.975c0 77.225 18.255 116.432 118.044 116.432h202.763c48.442 0 75.283-6.774 92.648-23.39 17.806-17.046 25.402-44.87 25.402-93.041v-75.975c0-42.042-1.189-71.012-17.108-89.93zM574.323 530.633l-92.073 48.117c-2.062 1.078-4.314 1.61-6.562 1.61-2.543 0-5.088-0.685-7.333-2.046-4.238-2.564-6.824-7.162-6.824-12.111v-95.931c0-4.942 2.58-9.533 6.809-12.097 4.231-2.571 9.485-2.745 13.874-0.464l92.073 47.807c4.681 2.433 7.625 7.266 7.632 12.546s-2.925 10.12-7.597 12.568z"],"attrs":[{"fill":"none","opacity":0.6,"stroke":"rgb(193, 187, 242)","strokeLinejoin":"miter","strokeLinecap":"butt","strokeMiterlimit":"4","strokeWidth":36.57142857142857},{"fill":"rgb(193, 187, 242)","opacity":0.6}],"isMulticolor":false,"isMulticolor2":true,"grid":0,"tags":["Icon-social-youtube"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"s":3},{"f":3}]}},"attrs":[{"fill":"none","opacity":0.6,"stroke":"rgb(193, 187, 242)","strokeLinejoin":"miter","strokeLinecap":"butt","strokeMiterlimit":"4","strokeWidth":36.57142857142857},{"fill":"rgb(193, 187, 242)","opacity":0.6}],"properties":{"order":98,"id":4,"name":"Icon-social-youtube","prevSize":16,"code":59677},"setIdx":0,"setId":2,"iconIdx":26},{"icon":{"paths":["M512 877.714l512-731.429h-1024z"],"attrs":[{"fill":"rgb(255, 255, 255)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-Triangle"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":5}]}},"attrs":[{"fill":"rgb(255, 255, 255)"}],"properties":{"order":99,"id":3,"name":"Icon-Triangle","prevSize":16,"code":59678},"setIdx":0,"setId":2,"iconIdx":27},{"icon":{"paths":["M512 146.286l512 731.429h-1024z"],"attrs":[{"fill":"rgb(148, 148, 148)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-TriangleTop"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":2}]}},"attrs":[{"fill":"rgb(148, 148, 148)"}],"properties":{"order":100,"id":2,"name":"Icon-TriangleTop","prevSize":16,"code":59679},"setIdx":0,"setId":2,"iconIdx":28},{"icon":{"paths":["M908.935 0c63.449 0 115.065 51.619 115.065 115.065v0 793.867c0 63.449-51.616 115.068-115.065 115.068v0h-793.869c-63.449 0-115.065-51.619-115.065-115.068v0-793.867c0-63.446 51.616-115.065 115.065-115.065v0zM743.052 466.959l-288.001 288.001c-13.31 13.31-34.969 13.315-48.281 0v0l-156.653-156.653-181.762 181.769v128.856c0 25.764 20.954 46.724 46.711 46.724v0h793.869c25.764 0 46.724-20.959 46.724-46.724v0-229.375l-212.607-212.598zM908.935 68.354h-793.869c-25.757 0-46.711 20.954-46.711 46.711v0 568.241l157.516-157.516c13.31-13.315 34.969-13.315 48.281 0v0l156.653 156.645 288.001-288.003c13.31-13.307 34.969-13.307 48.279 0v0l188.574 188.381v-467.748c0-25.757-20.96-46.711-46.724-46.711v0zM320.827 158.135c75.575 0 137.058 61.483 137.058 137.058s-61.483 137.058-137.058 137.058c-75.572 0-137.055-61.483-137.055-137.058s61.483-137.058 137.055-137.058zM320.827 226.489c-37.882 0-68.704 30.821-68.704 68.703 0 37.89 30.821 68.714 68.704 68.714 37.89 0 68.717-30.824 68.717-68.714 0-37.882-30.826-68.703-68.717-68.703z"],"attrs":[{"fill":"rgb(193, 187, 242)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-Uploadimage"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":3}]}},"attrs":[{"fill":"rgb(193, 187, 242)"}],"properties":{"order":101,"id":1,"name":"Icon-Uploadimage","prevSize":16,"code":59680},"setIdx":0,"setId":2,"iconIdx":29},{"icon":{"paths":["M824.143 790.75c-25.362-85.18-84.346-155.965-161.32-196.564 50.075-42.607 81.923-105.905 81.923-176.554 0-127.923-104.383-232.025-232.729-232.025-128.311 0-232.729 104.102-232.729 232.025 0 70.649 31.813 133.947 81.923 176.554-77.007 40.599-135.958 111.384-161.354 196.564-66.357-74.46-106.773-172.743-106.773-280.281 0-230.289 187.944-417.665 418.932-417.665s418.932 187.376 418.932 417.665c0 107.539-40.415 205.821-106.807 280.281zM372.373 417.631c0-76.74 62.671-139.222 139.644-139.222s139.61 62.481 139.61 139.222c0 76.774-62.637 139.222-139.61 139.222s-139.644-62.447-139.644-139.222zM512.017 931.197c-85.541 0-165.177-25.898-231.568-70.275 11.879-118.463 111.244-211.266 231.568-211.266s219.655 92.803 231.568 211.266c-66.392 44.377-146.027 70.275-231.568 70.275zM512.017 0c-282.326 0-512.017 228.996-512.017 510.469 0 164.813 77.861 311.726 198.594 405.788 3.755 4.050 8.226 7.419 13.21 9.937 84.415 61.494 188.149 97.806 300.213 97.806s215.798-36.311 300.179-97.806c5.018-2.518 9.489-5.887 13.244-9.937 120.734-94.062 198.56-240.975 198.56-405.788 0-281.472-229.657-510.469-511.983-510.469z"],"attrs":[{"fill":"rgb(255, 255, 255)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-User"],"colorPermutations":{"114814814811931872421229197229123163312552552551":[{"f":5}]}},"attrs":[{"fill":"rgb(255, 255, 255)"}],"properties":{"order":102,"id":0,"name":"Icon-User","prevSize":16,"code":59681},"setIdx":0,"setId":2,"iconIdx":30}],"height":1024,"metadata":{"name":"icomoon"},"preferences":{"showGlyphs":true,"showQuickUse":false,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"icomoon"},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"classSelector":".icon"},"historySize":50,"showCodes":true,"gridSize":16}} \ No newline at end of file diff --git a/icomoon/style.css b/icomoon/style.css new file mode 100644 index 0000000..09a6c6b --- /dev/null +++ b/icomoon/style.css @@ -0,0 +1,164 @@ +@font-face { + font-family: 'icomoon'; + src: url('fonts/icomoon.eot?rce6ue'); + src: url('fonts/icomoon.eot?rce6ue#iefix') format('embedded-opentype'), + url('fonts/icomoon.ttf?rce6ue') format('truetype'), + url('fonts/icomoon.woff?rce6ue') format('woff'), + url('fonts/icomoon.svg?rce6ue#icomoon') format('svg'); + font-weight: normal; + font-style: normal; + font-display: block; +} + +[class^="icon-"], [class*=" icon-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'icomoon' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-Icon-Addmore:before { + content: "\e900"; + color: #c1bbf2; +} +.icon-Icon-Address:before { + content: "\e901"; + color: #c1bbf2; +} +.icon-Icon-Android:before { + content: "\e902"; + color: #fff; +} +.icon-Icon-App:before { + content: "\e903"; + color: #fff; +} +.icon-Icon-apple:before { + content: "\e904"; + color: #fff; +} +.icon-Icon-Close:before { + content: "\e905"; + color: #c1bbf2; +} +.icon-Icon-Commission:before { + content: "\e906"; + color: #c1bbf2; +} +.icon-Icon-Copy:before { + content: "\e907"; + color: #c1bbf2; +} +.icon-Icon-Delete:before { + content: "\e908"; + color: #c1bbf2; +} +.icon-Icon-EmailAddress .path1:before { + content: "\e909"; + color: rgb(0, 0, 0); +} +.icon-Icon-EmailAddress .path2:before { + content: "\e90a"; + margin-left: -1em; + color: rgb(255, 255, 255); +} +.icon-Icon-Export:before { + content: "\e90b"; + color: #c1bbf2; +} +.icon-Icon-eye .path1:before { + content: "\e90c"; + color: rgb(23, 16, 33); + opacity: 0.8; +} +.icon-Icon-eye .path2:before { + content: "\e90d"; + margin-left: -1em; + color: rgb(255, 255, 255); + opacity: 0.8; +} +.icon-Icon-eyec .path1:before { + content: "\e90e"; + color: rgb(23, 16, 33); + opacity: 0.8; +} +.icon-Icon-eyec .path2:before { + content: "\e90f"; + margin-left: -1em; + color: rgb(255, 255, 255); + opacity: 0.8; +} +.icon-Icon-History:before { + content: "\e910"; + color: #c1bbf2; +} +.icon-Icon-Increase:before { + content: "\e911"; + color: #c1bbf2; +} +.icon-Icon-leftarrow-small:before { + content: "\e912"; + color: #c1bbf2; +} +.icon-Icon-Playstore:before { + content: "\e913"; + color: #fff; +} +.icon-Icon-Reset:before { + content: "\e914"; + color: #c1bbf2; +} +.icon-Icon-rightarrow-small:before { + content: "\e915"; + color: #c1bbf2; +} +.icon-Icon-select20:before { + content: "\e916"; + color: #e5c5e5; +} +.icon-Icon-select100:before { + content: "\e917"; + color: #e5c5e5; +} +.icon-Icon-social-fb:before { + content: "\e918"; +} +.icon-Icon-social-ins:before { + content: "\e919"; +} +.icon-Icon-social-linkedin:before { + content: "\e91a"; +} +.icon-Icon-social-medium:before { + content: "\e91b"; +} +.icon-Icon-social-twitter:before { + content: "\e91c"; +} +.icon-Icon-social-youtube:before { + content: "\e91d"; +} +.icon-Icon-Triangle:before { + content: "\e91e"; + color: #fff; +} +.icon-Icon-TriangleTop:before { + content: "\e91f"; + color: #949494; +} +.icon-Icon-Uploadimage:before { + content: "\e920"; + color: #c1bbf2; +} +.icon-Icon-User:before { + content: "\e921"; + color: #fff; +} diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..bdf2fdf --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "baseUrl": "./", + "target": "es6", + "paths": { + "@/*": [ + "src/*" + ], + } + }, + "include": [ + "src/**/*", "config/config.js" + ] +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..f19f2c4 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,14763 @@ +{ + "name": "e-learn", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", + "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0-beta.44" + } + }, + "@babel/generator": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz", + "integrity": "sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.44", + "jsesc": "^2.5.1", + "lodash": "^4.2.0", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz", + "integrity": "sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.44", + "@babel/template": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz", + "integrity": "sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/helper-module-imports": { + "version": "7.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.35.tgz", + "integrity": "sha512-vaC1KyIZSuyWb3Lj277fX0pxivyHwuDU4xZsofqgYAbkDxNieMg2vuhzP5AgMweMY7fCQUMTi+BgPqTLjkxXFg==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.35", + "lodash": "^4.2.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.35.tgz", + "integrity": "sha512-y9XT11CozHDgjWcTdxmhSj13rJVXpa5ZXwjjOiTedjaM0ba5ItqdS02t31EhPl7HtOWxsZkYCCUNrSfrOisA6w==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.2.0", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + } + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz", + "integrity": "sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", + "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" + } + }, + "@babel/parser": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", + "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==" + }, + "@babel/template": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz", + "integrity": "sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "lodash": "^4.2.0" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", + "dev": true + } + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz", + "integrity": "sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/generator": "7.0.0-beta.44", + "@babel/helper-function-name": "7.0.0-beta.44", + "@babel/helper-split-export-declaration": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "debug": "^3.1.0", + "globals": "^11.1.0", + "invariant": "^2.2.0", + "lodash": "^4.2.0" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz", + "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.2.0", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + } + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "@types/q": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", + "dev": true + }, + "@vue/compiler-sfc": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", + "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", + "requires": { + "@babel/parser": "^7.18.4", + "postcss": "^8.4.14", + "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==" + } + } + }, + "@webpack-cli/configtest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "dev": true + }, + "@webpack-cli/info": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==" + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha512-GKp5tQ8h0KMPWIYGRHHXI1s5tUpZixZ3IHF2jAu42wSCf6In/G873s6/y4DdKdhWvzhu1T6mE1JgvnhAKqyYYQ==", + "dev": true, + "requires": { + "acorn": "^4.0.3" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha512-fu2ygVGuMmlzG8ZeRJ0bvR41nsAkxxhbyk8bZ1SS521Z7vmgJFTQQlfz/Mp/nJexGBz+v8sC9bM6+lNgskt4Ug==", + "dev": true + } + } + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha512-AU7pnZkguthwBjKgCg6998ByQNIMjbuDQZ8bb78QAFZwPfmKia8AIzgY/gWgqCjnht8JLdXmB4YxA0KaV60ncQ==", + "requires": { + "acorn": "^3.0.4" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw==" + } + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha512-Ajr4IcMXq/2QmMkEmSvxqfLN5zGmJ92gHXAeOXq1OekoH2rfDNsgdDoL2f7QaRCy7G/E6TpxBVdRuNraMztGHw==", + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha512-ZFztHzVRdGLAzJmpUT9LNFLe1YiVOEylcaNpEutM26PVTCtOD919IMfD01CgbRouB42Dd9atjx1HseC15DgOZA==" + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==" + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "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": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "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": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "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": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, + "array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.reduce": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", + "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + } + }, + "art-template": { + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/art-template/-/art-template-4.13.2.tgz", + "integrity": "sha512-04ws5k+ndA5DghfheY4c8F1304XJKeTcaXqZCLpxFkNMSkaR3ChW1pX2i9d3sEEOZuLy7de8lFriRaik1jEeOQ==", + "requires": { + "acorn": "^5.0.3", + "escodegen": "^1.8.1", + "estraverse": "^4.2.0", + "html-minifier": "^3.4.3", + "is-keyword-js": "^1.0.3", + "js-tokens": "^3.0.1", + "merge-source-map": "^1.0.3", + "source-map": "^0.5.6" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assets": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/assets/-/assets-3.0.1.tgz", + "integrity": "sha512-fTyLNf/9V24y5zO83f4DAEuvaKj7MWBixbnqdZneAhsv1r21yQ/6ogZfvXHmphJAHsz4DhuOwHeJKVbGqqvk0Q==", + "requires": { + "async": "^2.5.0", + "bluebird": "^3.4.6", + "calipers": "^2.0.0", + "calipers-gif": "^2.0.0", + "calipers-jpeg": "^2.0.0", + "calipers-png": "^2.0.0", + "calipers-svg": "^2.0.0", + "calipers-webp": "^2.0.0", + "glob": "^7.0.6", + "lodash": "^4.15.0", + "mime": "^2.4.0" + } + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "async-validator": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz", + "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==", + "requires": { + "babel-runtime": "6.x" + } + }, + "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": "7.2.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz", + "integrity": "sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ==", + "dev": true, + "requires": { + "browserslist": "^2.11.3", + "caniuse-lite": "^1.0.30000805", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^6.0.17", + "postcss-value-parser": "^3.2.3" + }, + "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 + }, + "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" + } + } + } + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "requires": { + "follow-redirects": "1.5.10" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "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" + } + } + } + }, + "babel-eslint": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.6.tgz", + "integrity": "sha512-aCdHjhzcILdP8c9lej7hvXKvQieyRt20SF102SIGyY4cUIiw6UaAtK4j2o3dXX74jEmy0TJ0CEhv4fTIM3SzcA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/traverse": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "^1.0.0" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", + "dev": true + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha512-ivpbtpUgg9SJS4TLjK7KdcDhqc/E3CGItsvQbBNLkNGUeMhd5qnJcryba/brESS+dg3vrLqPuc/UcS7jRJdN5A==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + } + }, + "babel-helper-bindify-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", + "integrity": "sha512-TYX2QQATKA6Wssp6j7jqlw4QLmABDN1olRdEHndYvBXdaXM5dcx6j5rN0+nd+aVL+Th40fAEYvvw/Xxd/LETuQ==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q==", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ==", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA==", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-explode-class": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", + "integrity": "sha512-SFbWewr0/0U4AiRzsHqwsbOQeLXVa9T1ELdqEa2efcQB5KopTnunAqoj07TuHlN2lfTQNPGO/rJR4FMln5fVcA==", + "dev": true, + "requires": { + "babel-helper-bindify-decorators": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q==", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg==", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw==", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-vue-jsx-merge-props": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz", + "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==" + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-loader": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.5.tgz", + "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==", + "dev": true, + "requires": { + "find-cache-dir": "^1.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-component": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-component/-/babel-plugin-component-1.1.1.tgz", + "integrity": "sha512-WUw887kJf2GH80Ng/ZMctKZ511iamHNqPhd9uKo14yzisvV7Wt1EckIrb8oq/uCz3B3PpAW7Xfl7AkTLDYT6ag==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0-beta.35" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw==", + "dev": true + }, + "babel-plugin-syntax-async-generators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", + "integrity": "sha512-EbciFN5Jb9iqU9bqaLmmFLx2G8pAUsvpWJ6OzOWBNrSY9qTohXj+7YfZx6Ug1Qqh7tCb1EA7Jvn9bMC1HBiucg==", + "dev": true + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha512-chI3Rt9T1AbrQD1s+vxw3KcwC9yHtF621/MacuItITfZX344uhQoANjpoSJZleAmW2tjlolqB/f+h7jIqXa7pA==", + "dev": true + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", + "integrity": "sha512-AWj19x2aDm8qFQ5O2JcD6pwJDW1YdcnO+1b81t7gxrGjz5VHiUqeYWAR4h7zueWMalRelrQDXprv2FrY1dbpbw==", + "dev": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha512-MioUE+LfjCEz65Wf7Z/Rm4XCP5k2c+TbMd2Z2JKc7U9uwjBhAfNPE48KC4GTGKhppMeYVepwDBNO/nGY6NYHBA==", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ==", + "dev": true + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w==", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ==", + "dev": true + }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "integrity": "sha512-uT7eovUxtXe8Q2ufcjRuJIOL0hg6VAUJhiWJBLxH/evYAw+aqoJLcYTR8hqx13iOx/FfbCMHgBmXWZjukbkyPg==", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-generators": "^6.5.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw==", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha512-n4jtBA3OYBdvG5PRMKsMXJXHfLYw/ZOmtxCLOOwz6Ro5XlrColkStLnz1AS1L2yfPA9BKJ1ZNlmVCLjAL9DSIg==", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", + "integrity": "sha512-skQ2CImwDkCHu0mkWvCOlBCpBIHW4/49IZWVwV4A/EnWjL9bB6UBvLyMNe3Td5XDStSZNhe69j4bfEW8dvUbew==", + "dev": true, + "requires": { + "babel-helper-explode-class": "^6.24.1", + "babel-plugin-syntax-decorators": "^6.13.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag==", + "dev": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg==", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA==", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg==", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw==", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA==", + "dev": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ==", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ==", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ==", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ==", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha512-ocgA9VJvyxwt+qJB0ncxV8kb/CjfTcECUY4tQ5VT7nP6Aohzobm8CDFaQ5FHdvZQzLmf0sgDxB8iRXZXxwZcyA==", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg==", + "dev": true, + "requires": { + "regenerator-transform": "^0.10.0" + } + }, + "babel-plugin-transform-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", + "integrity": "sha512-cpGMVC1vt/772y3jx1gwSaTitQVZuFDlllgreMsZ+rTYC6jlYXRyf5FQOgSnckOiA5QmzbXTyBY2A5AmZXF1fA==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-vue-jsx": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-3.7.0.tgz", + "integrity": "sha512-W39X07/n3oJMQd8tALBO+440NraGSF//Lo1ydd/9Nme3+QiRGFBb1Q39T9iixh0jZPPbfv3so18tNoIgLatymw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "babel-preset-env": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", + "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^3.2.6", + "invariant": "^2.2.2", + "semver": "^5.3.0" + }, + "dependencies": { + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + } + } + }, + "babel-preset-stage-2": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", + "integrity": "sha512-9F+nquz+37PrlTSBdpeQBKnQfAMNBnryXw+m4qBh35FNbJPfzZz+sjN2G5Uf1CRedU9PH7fJkTbYijxmkLX8Og==", + "dev": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-transform-class-properties": "^6.24.1", + "babel-plugin-transform-decorators": "^6.24.1", + "babel-preset-stage-3": "^6.24.1" + } + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", + "integrity": "sha512-eCbEOF8uN0KypFXJmZXn2sTk7bPV9uM5xov7G/7BM08TbQEObsVs0cEWfy6NQySlfk7JBi/t+XJP1JkruYfthA==", + "dev": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-generator-functions": "^6.24.1", + "babel-plugin-transform-async-to-generator": "^6.24.1", + "babel-plugin-transform-exponentiation-operator": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.22.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "dev": true + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + } + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "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" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "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": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "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.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "bfj-node4": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/bfj-node4/-/bfj-node4-5.3.1.tgz", + "integrity": "sha512-SOmOsowQWfXc7ybFARsK3C4MCOWzERaOMV/Fl3Tgjs+5dJWyzo3oa127jL44eMbQiAN17J7SvAs2TRxEScTUmg==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "check-types": "^7.3.0", + "tryer": "^1.0.0" + } + }, + "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": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-0.4.2.tgz", + "integrity": "sha512-/Jhsskdr/kVmqiA+zn6A1h0Z9pRLXrx/yxOlhKVgwaiCMtb+/UhZOHlefRAqArQVRRuOxOu+MvzQh/yIvFMZlQ==", + "requires": { + "readable-stream": "~1.0.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + } + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.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" + } + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "bootstrap": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", + "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "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.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "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" + }, + "dependencies": { + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + } + } + }, + "browserslist": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", + "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000792", + "electron-to-chromium": "^1.3.30" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "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": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "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" + } + }, + "calipers": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/calipers/-/calipers-2.0.1.tgz", + "integrity": "sha512-AP4Ui2Z8fZf69d8Dx4cfJgPjQHY3m+QXGFCaAGu8pfNQjyajkosS+Kkf1n6pQDMZcelN5h3MdcjweUqxcsS4pg==", + "requires": { + "bluebird": "3.x.x" + } + }, + "calipers-gif": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/calipers-gif/-/calipers-gif-2.0.0.tgz", + "integrity": "sha512-ZePtjAmTmugWWHDjZhrh7SZ8/8hG2sS5Dz6xyZ3bWkofLqq31c01GR0AvBg5Cn5/x4BjT9PhIi0VMjHBEO+kog==", + "requires": { + "bluebird": "3.x.x" + } + }, + "calipers-jpeg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/calipers-jpeg/-/calipers-jpeg-2.0.0.tgz", + "integrity": "sha512-MAAXKh3+I0NEDGNAxBbc+sh670ZWdef/Gv0G8DvH/xLp5sxqEPBR1uQRHfk2es0vJzas4saL0RPgmoL+o+cszw==", + "requires": { + "bluebird": "3.x.x" + } + }, + "calipers-png": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/calipers-png/-/calipers-png-2.0.0.tgz", + "integrity": "sha512-yj2N0HSrKuePXYFX2T2710haASVF5wQ184g2THlAfbxxcc/ySRu9gUK20PIGfCfaSKt2cMMTE9jD6KZpfoehQg==", + "requires": { + "bluebird": "3.x.x" + } + }, + "calipers-svg": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/calipers-svg/-/calipers-svg-2.0.1.tgz", + "integrity": "sha512-3PROqHARmj8wWudUC7DzXm1+mSocqgY7jNuehFNHgrUVrKf8o7MqDjS92vJz5LvZsAofJsoAFMajkqwbxBROSQ==", + "requires": { + "bluebird": "3.x.x" + } + }, + "calipers-webp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/calipers-webp/-/calipers-webp-2.0.0.tgz", + "integrity": "sha512-np7ZtCwUjpxz+DF/RYNYFxxaltJxlF7rIVKWnU/cKcgQ7r06/Fquw1Q/oMZiJe6hfjI911lhDY6ZC+X0MtA5rg==", + "requires": { + "bluebird": "3.x.x" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true + } + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==", + "requires": { + "callsites": "^0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A==" + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha512-SBTl70K0PkDUIebbkXrxWqZlHNs0wRgRD6QZ8guctShjbh63gEPfF+Wj0Yw+75f5Y8tSzqAI/NcisYv/cCah2Q==", + "dev": true, + "requires": { + "browserslist": "^1.3.6", + "caniuse-db": "^1.0.30000529", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha512-qHJblDE2bXVRYzuDetv/wAeHOJyO97+9wxC1cdCtyzgNuSozOyRCiiLaCR1f71AN66lQdVVBipWm63V+a7bPOw==", + "dev": true, + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + } + } + }, + "caniuse-db": { + "version": "1.0.30001449", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001449.tgz", + "integrity": "sha512-K7XIAmo8tCt2W7LFSrTjbrXZqer/4af8cfediBT+iDk4b8eljuMo6gBzJlW7e4RTz5+wYEGKg8gXk1Vm+Jh+YA==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001449", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001449.tgz", + "integrity": "sha512-CPB+UL9XMT/Av+pJxCKGhdx+yg1hzplvFJQlJ2n68PyQGMz9L/E2zCyLdOL8uasbouTUgnPl+y0tccI/se+BEw==", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ==", + "dev": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==" + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==" + }, + "check-types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz", + "integrity": "sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==" + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "dev": true, + "requires": { + "chalk": "^1.1.3" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "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": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "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==" + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "dev": true + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" + }, + "clipboard": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", + "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha512-KAGck/eNAmCL0dcT3BiuYwLbExK6lduR8DxM3C1TyDzaXhZHyZ8ooX5I5+na2e3dPFuibfxrGdorr0/Lr7RYCQ==", + "dev": true, + "requires": { + "q": "^1.1.2" + } + }, + "coalescy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/coalescy/-/coalescy-1.0.0.tgz", + "integrity": "sha512-OmRR46eVfyaXZYI7Ai5/vnLHjWhhh99sugx+UTsmVhwaYzARb+Tcdit59/HkVxF8KdqJG5NN8ClUhzQXS3Hh+w==", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha512-Ajpjd8asqZ6EdxQeqGzU5WBhhTfJ/0cA4Wlbre7e5vXfmDSmda7Ov6jeKoru+b0vHcb1CqvuroTHp5zIWzhVMA==", + "dev": true, + "requires": { + "clone": "^1.0.2", + "color-convert": "^1.3.0", + "color-string": "^0.3.0" + } + }, + "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==", + "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha512-sz29j1bmSDfoAxKIEU6zwoIZXN6BrFbAMIhfYCNyiZXBDuU/aiHlN84lp/xDzL2ubyFhLDobHIlU1X70XRrMDA==", + "dev": true, + "requires": { + "color-name": "^1.0.0" + } + }, + "colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha512-XSEQUUQUR/lXqGyddiNH3XYFUPYlYr1vXy9rTFMsSOw+J7Q6EQkdlQIrTlYn4TccpsOaUE1PYQNjBn20gwCdgQ==", + "dev": true, + "requires": { + "color": "^0.11.0", + "css-color-names": "0.0.4", + "has": "^1.0.1" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==", + "dev": true + }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "consolidate": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.14.5.tgz", + "integrity": "sha512-PZFskfj64QnpKVK9cPdY36pyWEhZNM+srRVqtwMiVTlnViSoZcvX35PpBhhUcyLTHXYvz7pZRmxvsqwzJqg9kA==", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "requires": { + "is-what": "^3.14.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": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true + }, + "copy-webpack-plugin": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz", + "integrity": "sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "p-limit": "^1.0.0", + "serialize-javascript": "^1.4.0" + } + }, + "core-js": { + "version": "3.27.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.2.tgz", + "integrity": "sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w==" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "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-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==" + }, + "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": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", + "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" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-loader": { + "version": "0.28.11", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz", + "integrity": "sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "cssnano": "^3.10.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash.camelcase": "^4.3.0", + "object-assign": "^4.1.1", + "postcss": "^5.0.6", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "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.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "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 + } + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha512-0o0IMQE0Ezo4b41Yrm8U6Rp9/Ag81vNXY1gZMnT1XhO4DpjEf2utKERqWJbOoz3g1Wdc1d3QSta/cIuJ1wSTEg==", + "dev": true, + "requires": { + "autoprefixer": "^6.3.1", + "decamelize": "^1.1.2", + "defined": "^1.0.0", + "has": "^1.0.1", + "object-assign": "^4.0.1", + "postcss": "^5.0.14", + "postcss-calc": "^5.2.0", + "postcss-colormin": "^2.1.8", + "postcss-convert-values": "^2.3.4", + "postcss-discard-comments": "^2.0.4", + "postcss-discard-duplicates": "^2.0.1", + "postcss-discard-empty": "^2.0.1", + "postcss-discard-overridden": "^0.1.1", + "postcss-discard-unused": "^2.2.1", + "postcss-filter-plugins": "^2.0.0", + "postcss-merge-idents": "^2.1.5", + "postcss-merge-longhand": "^2.0.1", + "postcss-merge-rules": "^2.0.3", + "postcss-minify-font-values": "^1.0.2", + "postcss-minify-gradients": "^1.0.1", + "postcss-minify-params": "^1.0.4", + "postcss-minify-selectors": "^2.0.4", + "postcss-normalize-charset": "^1.1.0", + "postcss-normalize-url": "^3.0.7", + "postcss-ordered-values": "^2.1.0", + "postcss-reduce-idents": "^2.2.2", + "postcss-reduce-initial": "^1.0.0", + "postcss-reduce-transforms": "^1.0.3", + "postcss-svgo": "^2.1.1", + "postcss-unique-selectors": "^2.0.2", + "postcss-value-parser": "^3.2.3", + "postcss-zindex": "^2.0.1" + }, + "dependencies": { + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha512-WKExI/eSGgGAkWAO+wMVdFObZV7hQen54UpD1kCCTN3tvlL3W1jL4+lPP/M7MwoP7Q4RHzKtO3JQ4HxYEcd+xQ==", + "dev": true, + "requires": { + "browserslist": "^1.7.6", + "caniuse-db": "^1.0.30000634", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^5.2.16", + "postcss-value-parser": "^3.2.3" + } + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha512-qHJblDE2bXVRYzuDetv/wAeHOJyO97+9wxC1cdCtyzgNuSozOyRCiiLaCR1f71AN66lQdVVBipWm63V+a7bPOw==", + "dev": true, + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" + }, + "dependencies": { + "browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, + "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" + } + }, + "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" + } + }, + "color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dev": true, + "requires": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + } + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "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" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "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 + }, + "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" + } + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "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" + }, + "dependencies": { + "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 + } + } + }, + "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" + }, + "dependencies": { + "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 + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "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-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "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.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "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" + }, + "dependencies": { + "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 + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "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" + }, + "dependencies": { + "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 + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "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" + }, + "dependencies": { + "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 + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "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.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "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-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" + }, + "dependencies": { + "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 + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "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.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-selector-parser": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + } + } + }, + "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": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==", + "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": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==", + "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" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "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": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha512-FmCI/hmqDeHHLaIQckMhMZneS84yzUZdrWDAvJVVxOwcKE1P1LF9FGmzr1ktIQSxOw6fl3PaQsmfg+GN+VvR3w==", + "dev": true, + "requires": { + "clap": "^1.0.9", + "source-map": "^0.5.3" + } + }, + "csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + }, + "cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==", + "dev": true + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "d3": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.2.tgz", + "integrity": "sha512-WXty7qOGSHb7HR7CfOzwN1Gw04MUOzN8qh9ZUsvwycIMb4DYMpY9xczZ6jUorGtO6bR9BPMPaueIKwiDxu9uiQ==", + "dev": true, + "requires": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + } + }, + "d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-yEEyEAbDrF8C6Ob2myOBLjwBLck1Z89jMGFee0oPsn95GqjerpaOA4ch+vc2l0FNFFwMD5N7OCSEN5eAlsUbgQ==", + "dev": true, + "requires": { + "internmap": "1 - 2" + } + }, + "d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "dev": true + }, + "d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dev": true, + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + } + }, + "d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dev": true, + "requires": { + "d3-path": "1 - 3" + } + }, + "d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "dev": true + }, + "d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dev": true, + "requires": { + "d3-array": "^3.2.0" + } + }, + "d3-delaunay": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", + "dev": true, + "requires": { + "delaunator": "5" + } + }, + "d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "dev": true + }, + "d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dev": true, + "requires": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + } + }, + "d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dev": true, + "requires": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "dev": true + }, + "d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dev": true, + "requires": { + "d3-dsv": "1 - 3" + } + }, + "d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dev": true, + "requires": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "dev": true + }, + "d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", + "dev": true, + "requires": { + "d3-array": "2.5.0 - 3" + } + }, + "d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "dev": true + }, + "d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dev": true, + "requires": { + "d3-color": "1 - 3" + } + }, + "d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "dev": true + }, + "d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "dev": true + }, + "d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "dev": true + }, + "d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "dev": true + }, + "d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dev": true, + "requires": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + } + }, + "d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "dev": true, + "requires": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + } + }, + "d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "dev": true + }, + "d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dev": true, + "requires": { + "d3-path": "^3.1.0" + } + }, + "d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dev": true, + "requires": { + "d3-array": "2 - 3" + } + }, + "d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dev": true, + "requires": { + "d3-time": "1 - 3" + } + }, + "d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "dev": true + }, + "d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dev": true, + "requires": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dev": true, + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + } + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, + "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" + } + } + } + }, + "defined": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", + "dev": true + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha512-7yjqSoVSlJzA4t/VUwazuEagGeANEKB3f/aNI//06pfKgwoCb7f6Q1gETN1sZzYaj6chTQ0AhIwDiPdfOjko4A==", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "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": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dev": true, + "requires": { + "robust-predicates": "^3.0.0" + } + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "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" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "dom7": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dom7/-/dom7-3.0.0.tgz", + "integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==", + "requires": { + "ssr-window": "^3.0.0-alpha.1" + } + }, + "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": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true + }, + "element-ui": { + "version": "2.15.12", + "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.15.12.tgz", + "integrity": "sha512-Y5FMT2BPOindU2GkDEQ5ZKUVxDawKONRNMh2eL3uBx1FOtvUJ+L6IxXLVsNxq4WnaX/UnVNgWXebl7DobygZMg==", + "requires": { + "async-validator": "~1.8.1", + "babel-helper-vue-jsx-merge-props": "^2.0.0", + "deepmerge": "^1.2.0", + "normalize-wheel": "^1.0.1", + "resize-observer-polyfill": "^1.5.0", + "throttle-debounce": "^1.0.1" + } + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha512-ZaAux1rigq1e2nQrztHn4h2ugvpzZxs64qneNah+8Mh/K0CRqJFJc+UoXnUsq+1yX+DmQFPPdVqboKAJ89e0Iw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "object-assign": "^4.0.1", + "tapable": "^0.2.7" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "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" + } + }, + "error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dev": true, + "requires": { + "stackframe": "^1.3.4" + } + }, + "es-abstract": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.1", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "dev": true, + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, + "es6-set": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.6.tgz", + "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==", + "dev": true, + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "es6-iterator": "~2.0.3", + "es6-symbol": "^3.1.3", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "dev": true + } + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.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==", + "optional": true + } + } + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha512-75IUQsusDdalQEW/G/2esa87J7raqdJF+Ca0/Xm5C3Q58Nr4yVYjZGp/P1+2xiEVgXRrA39dpRb8LcshajbqDQ==", + "dev": true, + "requires": { + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "requires": { + "ajv": "^5.3.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.4", + "esquery": "^1.0.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.0.1", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^3.0.6", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^1.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "~2.0.1", + "table": "4.0.2", + "text-table": "~0.2.0" + } + }, + "eslint-config-standard": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", + "integrity": "sha512-UkFojTV1o0GOe1edOEiuI5ccYLJSuNngtqSeClNzhsmG8KPJ+7mRxgtp2oYhqZAK/brlXMoCd+VgXViE0AfyKw==", + "dev": true + }, + "eslint-friendly-formatter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-friendly-formatter/-/eslint-friendly-formatter-3.0.0.tgz", + "integrity": "sha512-QJnemSH+g5i9yxQQNGQo1yM6VPR1PdNVIE8krQTNdTf3MDg9D22At/BfZpTPRkCdWEtiFCTZnZUOKTPNufqOYw==", + "dev": true, + "requires": { + "chalk": "^1.0.0", + "coalescy": "1.0.0", + "extend": "^3.0.0", + "minimist": "^1.2.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "eslint-import-resolver-node": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "eslint-loader": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.9.0.tgz", + "integrity": "sha512-40aN976qSNPyb9ejTqjEthZITpls1SVKtwguahmH1dzGCwQU/vySE+xX33VZmD8csU0ahVNCtFlsPgKqRBiqgg==", + "dev": true, + "requires": { + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" + } + }, + "eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "dev": true, + "requires": { + "debug": "^3.2.7" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", + "dev": true, + "requires": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", + "has": "^1.0.3", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", + "tsconfig-paths": "^3.14.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-plugin-node": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz", + "integrity": "sha512-xhPXrh0Vl/b7870uEbaumb2Q+LxaEcOQ3kS1jtIXanBAwpMre1l5q/l2l/hESYJGEFKuI78bp6Uw50hlpr7B+g==", + "dev": true, + "requires": { + "ignore": "^3.3.6", + "minimatch": "^3.0.4", + "resolve": "^1.3.3", + "semver": "5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==", + "dev": true + } + } + }, + "eslint-plugin-promise": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.8.0.tgz", + "integrity": "sha512-JiFL9UFR15NKpHyGii1ZcvmtIqa3UTwiDAGb8atSffe43qJ3+1czVGN6UtkklpcJ2DVnqvTMzEKRaJdBkAL2aQ==", + "dev": true + }, + "eslint-plugin-standard": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.1.0.tgz", + "integrity": "sha512-fVcdyuKRr0EZ4fjWl3c+gp1BANFJD1+RaWa2UPYfMZ6jCtp5RG00kSaXnK/dE5sYzt4kaWJ9qdxqUfc0d9kX0w==", + "dev": true + }, + "eslint-plugin-vue": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-4.7.1.tgz", + "integrity": "sha512-esETKhVMI7Vdli70Wt4bvAwnZBJeM0pxVX9Yb0wWKxdCJc2EADalVYK/q2FzMw8oKN0wPMdqVCKS8kmR89recA==", + "dev": true, + "requires": { + "vue-eslint-parser": "^2.0.3" + } + }, + "eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "requires": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha512-bbB5tEuvC+SuRUG64X8ghvjgiRniuA4WlehWbFnoN4z6TxDXpyX+BMHF7rMgZAqoe+EbyNRUbHN0uuP9phy5jQ==", + "dev": true, + "requires": { + "original": ">=0.0.5" + } + }, + "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": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", + "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": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "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": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "requires": { + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "dev": true + } + } + }, + "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": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "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" + } + } + } + }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "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": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "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" + } + } + } + }, + "extract-text-webpack-plugin": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", + "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", + "dev": true, + "requires": { + "async": "^2.4.1", + "loader-utils": "^1.1.0", + "schema-utils": "^0.3.0", + "webpack-sources": "^1.0.1" + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha512-Xhj93RXbMSq8urNCUq4p9l0P6hnySJ/7YNRhYNug0bLOuii7pKO7xQFb5mx9xZXWCar88pLPb805PvUkwrLZpQ==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w==", + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "file-loader": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", + "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^0.4.5" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "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 + }, + "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" + } + } + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.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" + } + } + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha512-46TFiBOzX7xq/PcSWfFwkyjpemdRnMe31UQF+os0y+1W3k95f6R4SEt02Hj4p3X0Mir9gfrkmOtshFidS0VPUg==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "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" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "requires": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + } + }, + "flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + } + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "friendly-errors-webpack-plugin": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz", + "integrity": "sha512-K27M3VK30wVoOarP651zDmb93R9zF28usW4ocaK3mfQeIEI5BPht/EzZs5E8QLLwbLRJQMwscAjDxYPb1FuNiw==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "error-stack-parser": "^2.0.0", + "string-width": "^2.0.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", + "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": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "requires": { + "delegate": "^3.1.2" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", + "dev": true + }, + "gzip-size": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-4.1.0.tgz", + "integrity": "sha512-1g6EPVvIHuPmpAdBBpsIVYLgjzGV/QqcFRJXpMyrqEWG10JhOaTjQeCcjMDyX0Iqfm/Q5M9twR/mbDk5f5MqkA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "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": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "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": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "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" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "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 + }, + "highcharts": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-8.2.2.tgz", + "integrity": "sha512-F63TXO7RxsvTcpO/KOubQZWualYpCMyCTuKtoWbt7KCsfQ3Kl7Fr6HEyyJdjkYl+XlnmnKlSRi9d3HjLK9Q0wg==" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==", + "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 + }, + "html-entities": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", + "dev": true + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + } + }, + "html-webpack-plugin": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz", + "integrity": "sha512-TKQYvHTJYUwPgXzwUF3EwPPkyQyvzfz+6s8Fw2eamxl0cRin1tDnYppcDYWz8UIoYMX4CgatplRq18odzmpAWw==", + "dev": true, + "requires": { + "bluebird": "^3.4.7", + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "toposort": "^1.0.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "http": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/http/-/http-0.0.0.tgz", + "integrity": "sha512-epOGLlKUFT+yxfK9TqXRe7l6CbOk7mbLvzVqAyI05w0xIn+nXcYo0vR4ZBCVJYOyUglOFwtaIbD3d2TmG5ejJQ==" + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.20.0.tgz", + "integrity": "sha512-dNJAk71nEJhPiAczQH9hGvE/MT9kEs+zn2Dh+Hi94PGZe1GluQirC7mw5rdREUtWx6qGS1Gu0bZd4qEAg+REgw==", + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.1", + "lodash": "^4.17.14", + "micromatch": "^4.0.2" + } + }, + "https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz", + "integrity": "sha512-4EC57ddXrkaF0x83Oj8sM6SLQHAWXw90Skqu2M4AEWENZ3F02dFJE/GARA8igO79tcgYqGrD7ae4f5L3um2lgg==" + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", + "dev": true + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha512-bsVoyn/1V4R1kYYjLcWLedozAM4FClZUdjE9nIr8uWY7xs78y9DATgwz2wGU7M+7z55KenmmTkN2DVJ7bqzjAA==", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "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 + }, + "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" + } + } + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "optional": true + }, + "immutable": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==" + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==", + "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": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "dependencies": { + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true + } + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true + } + } + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==", + "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": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + } + }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha512-DzGfTasXPmwizQP4XV2rR6r2vp8TjlOpMnJqG9Iy2i1pl1lkZdZj5rSpIc7YFGX2nS46PPgAGEyT+Q5hE2FB2g==", + "dev": true, + "requires": { + "meow": "^3.3.0" + } + }, + "internal-slot": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "dev": true + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "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": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "dev": true + }, + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "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": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==", + "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": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^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==" + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "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": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", + "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-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "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": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-keyword-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-keyword-js/-/is-keyword-js-1.0.3.tgz", + "integrity": "sha512-EW8wNCNvomPa/jsH1g0DmLfPakkRCRTcTML1v1fZMLiVCvQ/1YB+tKsRzShBiWQhqrYCi5a+WsepA4Z8TA9iaA==" + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "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.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha512-Ya1giYJUkcL/94quj0+XGcmts6cETPBW1MiFz1ReJrnDJ680F52qpAEGAEGU0nq96FRGIGPx6Yo1CyPXcOoyGw==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "jquery": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.3.tgz", + "integrity": "sha512-bZ5Sy3YzKo9Fyc8wH2iIQK4JImJ6R0GWI9kL1/k7Z91ZBNgkRXE6U0JfHIizZbort8ZunhSI3jw9I6253ahKfg==" + }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==", + "dev": true + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "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-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha512-4JD/Ivzg7PoW8NzdrBSr3UFwC9mHgvI7Z6z3QGBsSHgKaRTUDmyZAAKJo2UbG1kUVfS9WS8bi36N49U1xw43DA==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", + "dev": true + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "last-call-webpack-plugin": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-2.1.2.tgz", + "integrity": "sha512-CZc+m2xZm51J8qSwdODeiiNeqh8CYkKEq6Rw8IkE4i/4yqf2cJhjQPsA6BtAV970ePRNhwEOXhy2U5xc5Jwh9Q==", + "dev": true, + "requires": { + "lodash": "^4.17.4", + "webpack-sources": "^1.0.1" + } + }, + "lautin-pagination": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/lautin-pagination/-/lautin-pagination-2.1.2.tgz", + "integrity": "sha512-K7joF9itQN/KyX+ayaIZSf7JRRpWxh93VKONTBz/218h56PLlVgWDk/C5On4SBAsxcNRftIDPmbaKJ6wkr3wNg==", + "requires": { + "bootstrap": "^3.3.7", + "jquery": "^2.2.4" + }, + "dependencies": { + "jquery": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz", + "integrity": "sha512-lBHj60ezci2u1v2FqnZIraShGgEXq35qCzMv4lITyHGppTnA13rwR0MgwyNJh9TnDs3aXUvd1xjAotfraMHX/Q==" + } + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "less": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz", + "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==", + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "native-request": "^1.0.5", + "source-map": "~0.6.0", + "tslib": "^1.10.0" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + } + } + }, + "less-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-5.0.0.tgz", + "integrity": "sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^4.0.1" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true + } + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "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": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "loader-fs-cache": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", + "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", + "dev": true, + "requires": { + "find-cache-dir": "^0.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha512-Z9XSBoNE7xQiV6MSgPuCfyMokH2K7JdpRkOYE1+mu3d4BFJtx3GW+f6Bo4q8IX6rlf5MYbLBKW0pjl2cWdkm2A==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "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": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg==", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "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.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "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": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "loglevel": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", + "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==", + "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": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, + "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==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "marked": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", + "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==" + }, + "math-expression-evaluator": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.4.0.tgz", + "integrity": "sha512-4vRUvPyxdO8cWULGTh9dZWL2tZK6LDBvj+OGHBER7poH9Qdt7kXEoj20wiz4lQUbUXQZFjPbe5mVDo9nutizCw==", + "dev": true + }, + "md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "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": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha512-nOBDrc/wgpkd3X/JOhMqYR+/eLqlfLP4oQfoBA6QExIxEl+GU01oyEkwWyueyO8110pUKijtiHGhEmYoOn88oQ==", + "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": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", + "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": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==", + "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" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "requires": { + "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==" + } + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "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" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.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==" + }, + "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": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "dependencies": { + "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" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + } + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "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" + } + } + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", + "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.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==" + }, + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true, + "optional": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + }, + "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" + } + }, + "native-request": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.1.0.tgz", + "integrity": "sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==", + "optional": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "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.1", + "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": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + } + } + }, + "node-notifier": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.5.tgz", + "integrity": "sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, + "node-releases": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "normalize-wheel": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz", + "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", + "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": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "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": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz", + "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==", + "dev": true, + "requires": { + "array.prototype.reduce": "^1.0.5", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimize-css-assets-webpack-plugin": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-3.2.1.tgz", + "integrity": "sha512-FSoF15xKSEM2qCE3/y2gH92PysJSBY58Wx/hmSdIzVSOd0vg+FRS28NWZADId1wh6PDlbVt0lfPduV0IBufItQ==", + "dev": true, + "requires": { + "cssnano": "^4.1.10", + "last-call-webpack-plugin": "^2.1.2" + }, + "dependencies": { + "cssnano": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-1.4.0.tgz", + "integrity": "sha512-iMK1DOQxzzh2MBlVsU42G80mnrvUhqsMh74phHtDlrcTZPK0pH6o7l7DRshK+0YsxDyEuaOkziVdvM3T0QTzpw==", + "dev": true, + "requires": { + "chalk": "^2.1.0", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.0.1", + "log-symbols": "^2.1.0" + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "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": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "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": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true + }, + "pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", + "requires": { + "no-case": "^2.2.0" + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "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": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "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" + } + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw==", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==" + }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" + }, + "portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dev": true, + "requires": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "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": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true + }, + "postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha512-iBcptYFq+QUh9gzP7ta2btw50o40s4uLI4UDVgd5yRAZtUDWc5APdl5yQDd2h/TyiZNbJrv0HiYhT102CMgN7Q==", + "dev": true, + "requires": { + "postcss": "^5.0.2", + "postcss-message-helpers": "^2.0.0", + "reduce-css-calc": "^1.2.6" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha512-XXitQe+jNNPf+vxvQXIQ1+pvdQKWKgkx8zlJNltcMEmLma1ypDRDQwlLt+6cP26fBreihNhZxohh1rcgCH2W5w==", + "dev": true, + "requires": { + "colormin": "^1.0.5", + "postcss": "^5.0.13", + "postcss-value-parser": "^3.2.3" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha512-SE7mf25D3ORUEXpu3WUqQqy0nCbMuM5BEny+ULE/FXdS/0UMA58OdzwvzuHJRpIFlk1uojt16JhaEogtP6W2oA==", + "dev": true, + "requires": { + "postcss": "^5.0.11", + "postcss-value-parser": "^3.1.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha512-yGbyBDo5FxsImE90LD8C87vgnNlweQkODMkUZlDVM/CBgLr9C5RasLGJxxh9GjVOBeG8NcCMatoqI1pXg8JNXg==", + "dev": true, + "requires": { + "postcss": "^5.0.14" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha512-+lk5W1uqO8qIUTET+UETgj9GWykLC3LOldr7EehmymV0Wu36kyoHimC4cILrAAYpHQ+fr4ypKcWcVNaGzm0reA==", + "dev": true, + "requires": { + "postcss": "^5.0.4" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha512-IBFoyrwk52dhF+5z/ZAbzq5Jy7Wq0aLUsOn69JNS+7YeuyHaNzJwBIYE0QlUH/p5d3L+OON72Fsexyb7OK/3og==", + "dev": true, + "requires": { + "postcss": "^5.0.14" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha512-IyKoDL8QNObOiUc6eBw8kMxBHCfxUaERYTUe2QF8k7j/xiirayDzzkmlR6lMQjrAM1p1DDRTvWrS7Aa8lp6/uA==", + "dev": true, + "requires": { + "postcss": "^5.0.16" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha512-nCbFNfqYAbKCw9J6PSJubpN9asnrwVLkRDFc4KCwyUEdOtM5XDE/eTW3OpqHrYY1L4fZxgan7LLRAAYYBzwzrg==", + "dev": true, + "requires": { + "postcss": "^5.0.14", + "uniqs": "^2.0.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-filter-plugins": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", + "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", + "dev": true, + "requires": { + "postcss": "^5.0.4" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-import": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-11.1.0.tgz", + "integrity": "sha512-5l327iI75POonjxkXgdRCUS+AlzAdBx4pOvMEhTKTCjb1p8IEeVR9yx3cPbmN7LIWJLbfnIXxAhoB4jpD0c/Cw==", + "dev": true, + "requires": { + "postcss": "^6.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "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 + }, + "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" + } + } + } + }, + "postcss-load-config": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-load-options": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", + "integrity": "sha512-WKS5LJMZLWGwtfhs5ahb2ycpoYF3m0kK4QEaM+elr5EpiMt0H296P/9ETa13WXzjPwB0DDTBiUBBWSHoApQIJg==", + "dev": true, + "requires": { + "cosmiconfig": "^2.1.0", + "object-assign": "^4.1.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", + "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.4.3", + "minimist": "^1.2.0", + "object-assign": "^4.1.0", + "os-homedir": "^1.0.1", + "parse-json": "^2.2.0", + "require-from-string": "^1.1.0" + } + } + } + }, + "postcss-load-plugins": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", + "integrity": "sha512-/WGUMYhKiryWjYO6c7kAcqMuD7DVkaQ8HcbQenDme/d3OBOmrYMFObOKgUWyUy1uih5U2Dakq8H6VcJi5C9wHQ==", + "dev": true, + "requires": { + "cosmiconfig": "^2.1.1", + "object-assign": "^4.1.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", + "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.4.3", + "minimist": "^1.2.0", + "object-assign": "^4.1.0", + "os-homedir": "^1.0.1", + "parse-json": "^2.2.0", + "require-from-string": "^1.1.0" + } + } + } + }, + "postcss-loader": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.6.tgz", + "integrity": "sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^6.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^0.4.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "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 + }, + "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" + } + }, + "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" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.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" + } + } + } + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha512-9DHmfCZ7/hNHhIKnNkz4CU0ejtGen5BbTRJc13Z2uHfCedeCUsK2WEQoAJRBL+phs68iWK6Qf8Jze71anuysWA==", + "dev": true, + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.10", + "postcss-value-parser": "^3.1.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha512-ma7YvxjdLQdifnc1HFsW/AW6fVfubGyR+X4bE3FOSdBVMY9bZjKVdklHT+odknKBB7FSCfKIHC3yHK7RUAqRPg==", + "dev": true, + "requires": { + "postcss": "^5.0.4" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha512-Wgg2FS6W3AYBl+5L9poL6ZUISi5YzL+sDCJfM7zNw/Q1qsyVQXXZ2cbVui6mu2cYJpt1hOKCGj1xA4mq/obz/Q==", + "dev": true, + "requires": { + "browserslist": "^1.5.2", + "caniuse-api": "^1.5.2", + "postcss": "^5.0.4", + "postcss-selector-parser": "^2.2.2", + "vendors": "^1.0.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha512-qHJblDE2bXVRYzuDetv/wAeHOJyO97+9wxC1cdCtyzgNuSozOyRCiiLaCR1f71AN66lQdVVBipWm63V+a7bPOw==", + "dev": true, + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha512-tPLZzVAiIJp46TBbpXtrUAKqedXSyW5xDEo1sikrfEfnTs+49SBZR/xDdqCiJvSSbtr615xDsaMF3RrxS2jZlA==", + "dev": true + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha512-vFSPzrJhNe6/8McOLU13XIsERohBJiIFFuC1PolgajOZdRWqRgKITP/A4Z/n4GQhEmtbxmO9NDw3QLaFfE1dFQ==", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha512-DZhT0OE+RbVqVyGsTIKx84rU/5cury1jmwPa19bViqYPQu499ZU831yMzzsyC8EhiZVd73+h5Z9xb/DdaBpw7Q==", + "dev": true, + "requires": { + "postcss": "^5.0.12", + "postcss-value-parser": "^3.3.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha512-hhJdMVgP8vasrHbkKAk+ab28vEmPYgyuDzRl31V3BEB3QOR3L5TTIVEWLDNnZZ3+fiTi9d6Ker8GM8S1h8p2Ow==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.2", + "postcss-value-parser": "^3.0.2", + "uniqs": "^2.0.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha512-e13vxPBSo3ZaPne43KVgM+UETkx3Bs4/Qvm6yXI9HQpQp4nyb7HZ0gKpkF+Wn2x+/dbQ+swNpCdZSbMOT7+TIA==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "has": "^1.0.1", + "postcss": "^5.0.14", + "postcss-selector-parser": "^2.0.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", + "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "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 + }, + "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" + } + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha512-X4cquUPIaAd86raVrBwO8fwRfkIdbwFu7CTfEOjiZQHVQwlHRSkTgH5NLDmMm5+1hQO8u6dZ+TOOJDbay1hYpA==", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "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 + }, + "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" + } + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha512-LTYwnA4C1He1BKZXIx1CYiHixdSe9LWYVKadq9lK5aCCMkoOkFyZ7aigt+srfjlRplJY3gIol6KUNefdMQJdlw==", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "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 + }, + "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" + } + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha512-i7IFaR9hlQ6/0UgFuqM6YWaCfA1Ej8WMg8A5DggnH1UGKJvTV/ugqq/KaULixzzOi3T/tF6ClBXcHGCzdd5unA==", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + }, + "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 + }, + "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" + } + } + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha512-RKgjEks83l8w4yEhztOwNZ+nLSrJ+NvPNhpS+mVDzoaiRHZQVoG7NF2TP5qjwnaN9YswUhj6m1E0S0Z+WDCgEQ==", + "dev": true, + "requires": { + "postcss": "^5.0.5" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "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" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "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" + }, + "dependencies": { + "browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha512-WqtWG6GV2nELsQEFES0RzfL2ebVwmGl/M8VmMbshKto/UClBo+mznX8Zi4/hkThdqx7ijwv+O8HWPdpK7nH/Ig==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^1.4.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha512-5RB1IUZhkxDCfa5fx/ogp/A82mtq+r7USqS+7zt0e428HJ7+BHCxyeY39ClmkkUtxdOd3mk8gD6d9bjH2BECMg==", + "dev": true, + "requires": { + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha512-0+Ow9e8JLtffjumJJFPqvN4qAvokVbdQPnijUDSOX8tfTwrILLP4ETvrZcXZxAtpFLh/U0c+q8oRMJLr1Kiu4w==", + "dev": true, + "requires": { + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha512-jJFrV1vWOPCQsIVitawGesRgMgunbclERQ/IRGW7r93uHrVzNQQmHQ7znsOIjJPZ4yWMzs5A8NFhp3AkPHPbDA==", + "dev": true, + "requires": { + "postcss": "^5.0.4" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha512-lGgRqnSuAR5i5uUg1TA33r9UngfTadWxOyL2qx1KuPoCQzfmtaHjp9PuwX7yVyRxG3BWBzeFUaS5uV9eVgnEgQ==", + "dev": true, + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.8", + "postcss-value-parser": "^3.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha512-3pqyakeGhrO0BQ5+/tGTfvi5IAUAhHRayGK8WFSu06aEv2BmHoXw/Mhb+w7VY5HERIuC+QoUI7wgrCcq2hqCVA==", + "dev": true, + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha512-y5AdQdgBoF4rbpdbeWAJuxE953g/ylRfVNp6mvAi61VCN/Y25Tu9p5mh3CyI42WbTRIiwR9a1GdFtmDnNPeskQ==", + "dev": true, + "requires": { + "is-svg": "^2.0.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3", + "svgo": "^0.7.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha512-WZX8r1M0+IyljoJOJleg3kYm10hxNYF9scqAT7v/xeSX1IdehutOM85SNO0gP9K+bgs86XERr7Ud5u3ch4+D8g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-url": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-7.3.2.tgz", + "integrity": "sha512-QMV5mA+pCYZQcUEPQkmor9vcPQ2MT+Ipuu8qdi1gVxbNiIiErEGft+eny1ak19qALoBkccS5AHaCaCDzh7b9MA==", + "dev": true, + "requires": { + "mime": "^1.4.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.0", + "postcss": "^6.0.1", + "xxhashjs": "^0.2.1" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "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 + }, + "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" + } + } + } + }, + "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 + }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha512-uhRZ2hRgj0lorxm9cr62B01YzpUe63h0RXMXQ4gWW3oa2rpJh+FJAiEAytaFCPU/VgaBS+uW2SJ1XKyDNz1h4w==", + "dev": true, + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", + "dev": true + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true + }, + "pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "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": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" + }, + "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" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "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" + } + }, + "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" + } + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "pygmentize-bundled": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pygmentize-bundled/-/pygmentize-bundled-2.3.0.tgz", + "integrity": "sha512-6qdRNJxwOWh3pl06KWWPtcgufBDqBZT18E3DS+PxbqGTgO1UU3MTbeWSFqZo6qMmjZO1wBacB7baLo5EZxeJnQ==", + "requires": { + "bl": "~0.4.1", + "through2": "~0.2.1" + } + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "dev": true + }, + "qs": { + "version": "6.11.1", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.1.tgz", + "integrity": "sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "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" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "dependencies": { + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "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": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "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": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha512-0dVfwYVOlf/LBA2ec4OwQ6p3X9mYxn/wOl2xTcLwjnPYrkgEfPx3VI4eGCH3rQLlPISG5v9I9bkZosKsNRTRKA==", + "dev": true, + "requires": { + "balanced-match": "^0.4.2", + "math-expression-evaluator": "^1.2.14", + "reduce-function-call": "^1.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha512-STw03mQKnGUYtoNjmowo4F2cRmIIxYEGiMsjjwla/u5P1lxadj/05WkNaFjNiKTgJkj8KiXbgAiRTmcQRwQNtg==", + "dev": true + } + } + }, + "reduce-function-call": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz", + "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "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.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==" + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ==", + "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": "sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g==", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw==", + "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": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "renderkid": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w==", + "requires": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "resize-detector": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/resize-detector/-/resize-detector-0.3.0.tgz", + "integrity": "sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ==" + }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "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": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==", + "dev": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "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" + } + }, + "robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==", + "dev": true + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "dev": true + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha512-Cun9QucwK6MIrp3mry/Y7hqD1oFqTYLQ4pGxaHTjIdaFDWRGGLikqp6u8LcWJnzpoALg9hap+JGk8sFIUuEGNA==" + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha512-3xPNZGW93oCjiO7PtKxRK6iOVYBWBvtf9QHDfU23Oc+dLIQmAV//UnyXV/yihv81VS/UqoQPk4NegS8EFi55Hg==", + "requires": { + "rx-lite": "*" + } + }, + "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==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sass": { + "version": "1.70.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.70.0.tgz", + "integrity": "sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==", + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sass-loader": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.3.1.tgz", + "integrity": "sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.0.1", + "neo-async": "^2.5.0", + "pify": "^4.0.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "sass-resources-loader": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/sass-resources-loader/-/sass-resources-loader-2.2.5.tgz", + "integrity": "sha512-po8rfETH9cOQACWxubT/1CCu77KjxwRtCDm6QAXZH99aUHBydwSoxdIjC40SGp/dcS/FkSNJl0j1VEojGZqlvQ==", + "dev": true, + "requires": { + "async": "^3.2.3", + "chalk": "^4.1.0", + "glob": "^7.1.6", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha512-QaVYBaD9U8scJw2EBWnCBY+LJ0AD+/2edTaigDs0XLDLBfJmSUK9KGqktg1rb32U3z4j/XwvFwHHH1YfbYFd7Q==", + "dev": true, + "requires": { + "ajv": "^5.0.0" + } + }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "selfsigned": { + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", + "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", + "dev": true, + "requires": { + "node-forge": "^0.10.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.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" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "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" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "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": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "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": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "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": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" + }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha512-/YF5Uk8hcwi7ima04ppkbA4RaRMdPMBfwAvAf8sufYOxsJRtbdoBsT8vGvlb+799BrlGdYrd+oczIA2eN2JdWA==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "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 + } + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "requires": { + "is-fullwidth-code-point": "^2.0.0" + } + }, + "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": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "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": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.5.tgz", + "integrity": "sha512-PmPRkAYIeuRgX+ZSieViT4Z3Q23bLS2Itm/ck1tSf5P0/yVuFDiI5q9mcnpXoMdToaPSRS9MEyUx/aaBxrFzyw==", + "dev": true, + "requires": { + "debug": "^2.6.6", + "eventsource": "0.1.6", + "faye-websocket": "~0.11.0", + "inherits": "^2.0.1", + "json3": "^3.3.2", + "url-parse": "^1.1.8" + }, + "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" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "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": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "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": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "ssr-window": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz", + "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==" + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "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": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "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" + }, + "dependencies": { + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + } + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "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==", + "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": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "requires": { + "ansi-regex": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==" + } + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" + }, + "style-loader": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz", + "integrity": "sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.7.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "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 + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "style-resources-loader": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/style-resources-loader/-/style-resources-loader-1.5.0.tgz", + "integrity": "sha512-fIfyvQ+uvXaCBGGAgfh+9v46ARQB1AWdaop2RpQw0PBVuROsTBqGvx8dj0kxwjGOAyq3vepe4AOK3M6+Q/q2jw==", + "dev": true, + "requires": { + "glob": "^7.2.0", + "loader-utils": "^2.0.0", + "schema-utils": "^2.7.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "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 + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "dev": true + } + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==" + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha512-jT/g9FFMoe9lu2IT6HtAxTA7RR2XOrmcrmCtGnyB/+GQnV6ZjNn+KOHZbZ35yL81+1F/aB6OeEsJztzBQ2EEwA==", + "dev": true, + "requires": { + "coa": "~1.0.1", + "colors": "~1.1.2", + "csso": "~2.3.1", + "js-yaml": "~3.7.0", + "mkdirp": "~0.5.1", + "sax": "~1.2.1", + "whet.extend": "~0.9.9" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", + "dev": true + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha512-eIlkGty7HGmntbV6P/ZlAsoncFLGsNoM27lkTzS+oneY/EiNhj+geqD9ezg/ip+SW6Var0BJU2JtV0vEUZpWVQ==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^2.6.0" + } + } + } + }, + "swiper": { + "version": "6.8.4", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-6.8.4.tgz", + "integrity": "sha512-O+buF9Q+sMA0H7luMS8R59hCaJKlpo8PXhQ6ZYu6Rn2v9OsFd4d1jmrv14QvxtQpKAvL/ZiovEeANI/uDGet7g==", + "requires": { + "dom7": "^3.0.0", + "ssr-window": "^3.0.0" + } + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "requires": { + "ajv": "^5.2.3", + "ajv-keywords": "^2.1.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + } + }, + "tapable": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.9.tgz", + "integrity": "sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "throttle-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz", + "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "through2": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", + "integrity": "sha512-mLa8Bn2mZurjyomGKWRu3Bo2mvoQojFks9NvOK8H+k4kDJNkdEqG522KFZsEFBEl6rKkxTgFbE5+OPcgfvPEHA==", + "requires": { + "readable-stream": "~1.1.9", + "xtend": "~2.1.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + } + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "time-stamp": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.2.0.tgz", + "integrity": "sha512-zxke8goJQpBeEgD82CXABeMh0LSJcj7CXEd0OHOg45HgcofF7pxNwZm9+RknpxpDhwN4gFpySkApKfFYfRQnUA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", + "dev": true + }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", + "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": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "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": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", + "dev": true + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "dev": true + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", + "dev": true + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==", + "dev": true, + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.5", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "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 + }, + "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" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + } + } + } + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", + "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.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "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": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "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": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "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": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "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": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "dev": true + } + } + }, + "url-loader": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.9.tgz", + "integrity": "sha512-B7QYFyvv+fOBqBVeefsxv6koWWtjmHaMFT6KZWti4KRw8YUD/hOU+3AECvXuzyVawIBx3z7zQRejXCDSO5kk1Q==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "mime": "1.3.x" + }, + "dependencies": { + "mime": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", + "integrity": "sha512-a/kG+3WTtU8GJG1ngpkkHOHcH6zNjGrI47OQyoFsFBN0QpYYJ4u2yEORsGK5cZMI+cfu9HbSCCfGfRzG0fWE9A==", + "dev": true + } + } + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "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" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "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" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "vue": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz", + "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", + "requires": { + "@vue/compiler-sfc": "2.7.14", + "csstype": "^3.1.0" + } + }, + "vue-awesome-swiper": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vue-awesome-swiper/-/vue-awesome-swiper-3.1.3.tgz", + "integrity": "sha512-E7suzkyApO8vNZbgdEnjSmnpsmQZyRvSVXJ7sey3XYwKPOkLhH3+GnHroBw+5PZIQXvWBwdCeQsPG1xQ1r1Rhg==", + "requires": { + "object-assign": "^4.1.1", + "swiper": "^4.0.7" + }, + "dependencies": { + "dom7": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/dom7/-/dom7-2.1.5.tgz", + "integrity": "sha512-xnhwVgyOh3eD++/XGtH+5qBwYTgCm0aW91GFgPJ3XG+jlsRLyJivnbP0QmUBFhI+Oaz9FV0s7cxgXHezwOEBYA==", + "requires": { + "ssr-window": "^2.0.0" + }, + "dependencies": { + "ssr-window": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-2.0.0.tgz", + "integrity": "sha512-NXzN+/HPObKAx191H3zKlYomE5WrVIkoCB5IaSdvKokxTpjBdWfr0RaP+1Z5KOfDT0ZVz+2tdtiBkhsEQ9p+0A==" + } + } + }, + "ssr-window": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-1.0.1.tgz", + "integrity": "sha512-dgFqB+f00LJTEgb6UXhx0h+SrG50LJvti2yMKMqAgzfUmUXZrLSv2fjULF7AWGwK25EXu8+smLR3jYsJQChPsg==" + }, + "swiper": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-4.5.1.tgz", + "integrity": "sha512-se6I7PWWu950NAMXXT+ENtF/6SVb8mPyO+bTfNxbQBILSeLqsYp3Ndap+YOA0EczOIUlea274PKejT6gKZDseA==", + "requires": { + "dom7": "^2.1.3", + "ssr-window": "^1.0.1" + } + } + } + }, + "vue-clipboard2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/vue-clipboard2/-/vue-clipboard2-0.3.3.tgz", + "integrity": "sha512-aNWXIL2DKgJyY/1OOeITwAQz1fHaCIGvUFHf9h8UcoQBG5a74MkdhS/xqoYe7DNZdQmZRL+TAdIbtUs9OyVjbw==", + "requires": { + "clipboard": "^2.0.0" + } + }, + "vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==" + }, + "vue-echarts": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/vue-echarts/-/vue-echarts-6.5.1.tgz", + "integrity": "sha512-vlCX65ITq83xkOljip3juL8LyMd4cHOE6Zmp+9u1nPxPrar0irEtTwV80lkFm5yQM4Ef9X9fNdMa6gmsj75xYw==", + "requires": { + "resize-detector": "^0.3.0", + "vue-demi": "^0.13.2" + } + }, + "vue-eslint-parser": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz", + "integrity": "sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.2", + "esquery": "^1.0.0", + "lodash": "^4.17.4" + } + }, + "vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "vue-i18n": { + "version": "8.28.2", + "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-8.28.2.tgz", + "integrity": "sha512-C5GZjs1tYlAqjwymaaCPDjCyGo10ajUphiwA922jKt9n7KPpqR7oM1PCwYzhB/E7+nT3wfdG3oRre5raIT1rKA==", + "dev": true + }, + "vue-loader": { + "version": "13.7.3", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-13.7.3.tgz", + "integrity": "sha512-ACCwbfeC6HjY2pnDii+Zer+MZ6sdOtwvLmDXRK/BoD3WNR551V22R6KEagwHoTRJ0ZlIhpCBkptpCU6+Ri/05w==", + "dev": true, + "requires": { + "consolidate": "^0.14.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "lru-cache": "^4.1.1", + "postcss": "^6.0.8", + "postcss-load-config": "^1.1.0", + "postcss-selector-parser": "^2.0.0", + "prettier": "^1.7.0", + "resolve": "^1.4.0", + "source-map": "^0.6.1", + "vue-hot-reload-api": "^2.2.0", + "vue-style-loader": "^3.0.0", + "vue-template-es2015-compiler": "^1.6.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", + "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.4.3", + "minimist": "^1.2.0", + "object-assign": "^4.1.0", + "os-homedir": "^1.0.1", + "parse-json": "^2.2.0", + "require-from-string": "^1.1.0" + } + }, + "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" + } + }, + "postcss-load-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", + "integrity": "sha512-3fpCfnXo9Qd/O/q/XL4cJUhRsqjVD2V1Vhy3wOEcLE5kz0TGtdDXJSoiTdH4e847KphbEac4+EZSH4qLRYIgLw==", + "dev": true, + "requires": { + "cosmiconfig": "^2.1.0", + "object-assign": "^4.1.0", + "postcss-load-options": "^1.2.0", + "postcss-load-plugins": "^2.3.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 + }, + "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" + } + } + } + }, + "vue-qr": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/vue-qr/-/vue-qr-2.5.0.tgz", + "integrity": "sha512-lVCEqzZyhrZ49dr6n1C4dMNH/tvKJzRwJhCi9vxWYpiosYTWM0J5m5RsJ745S88XWwgTeOynKMGbyOLG9ZP20Q==" + }, + "vue-router": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.6.5.tgz", + "integrity": "sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ==" + }, + "vue-style-loader": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-3.1.2.tgz", + "integrity": "sha512-ICtVdK/p+qXWpdSs2alWtsXt9YnDoYjQe0w5616j9+/EhjoxZkbun34uWgsMFnC1MhrMMwaWiImz3K2jK1Yp2Q==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "vue-template-compiler": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", + "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "vuex": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", + "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==" + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": 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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "optional": 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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "optional": 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": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "optional": 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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "optional": 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" + } + }, + "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, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webpack": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz", + "integrity": "sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ==", + "dev": true, + "requires": { + "acorn": "^5.0.0", + "acorn-dynamic-import": "^2.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "async": "^2.1.2", + "enhanced-resolve": "^3.4.0", + "escope": "^3.6.0", + "interpret": "^1.0.0", + "json-loader": "^0.5.4", + "json5": "^0.5.1", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "mkdirp": "~0.5.0", + "node-libs-browser": "^2.0.0", + "source-map": "^0.5.3", + "supports-color": "^4.2.1", + "tapable": "^0.2.7", + "uglifyjs-webpack-plugin": "^0.4.6", + "watchpack": "^1.4.0", + "webpack-sources": "^1.0.1", + "yargs": "^8.0.2" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA==", + "dev": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "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 + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==", + "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": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "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 + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha512-ycQR/UbvI9xIlEdQT1TQqwoXtEldExbCEAJgRo5YXlmSKjv6ThHnP9/vwGa1gr19Gfw+LkFd7KqYMhzrRC5JYw==", + "dev": true, + "requires": { + "has-flag": "^2.0.0" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w==", + "dev": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A==", + "dev": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha512-TNM20HMW67kxHRNCZdvLyiwE1ST6WyY5Ae+TG55V81NpvNwJ9+V4/po4LHA1R9afV/WrqzfedG2UJCk2+swirw==", + "dev": true, + "requires": { + "source-map": "^0.5.6", + "uglify-js": "^2.8.29", + "webpack-sources": "^1.0.1" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha512-3RiZrpLpjrzIAKgGdPktBcMP/eG5bDFlkI+PHle1qwzyVXyDQL+pD/eZaMoOOO0Y7LLBfjpucObuUm/icvbpKQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^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": "^7.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + } + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha512-WhzC+xgstid9MbVUktco/bf+KJG+Uu6vMX0LN1sLJvwmbCQVxb4D8LzogobonKycNasCZLdOzTAk1SK7+K7swg==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", + "dev": true + } + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.13.1.tgz", + "integrity": "sha512-rwxyfecTAxoarCC9VlHlIpfQCmmJ/qWD5bpbjkof+7HrNhTNZIwZITxN6CdlYL2axGmwNUQ+tFgcSOiNXMf/sQ==", + "dev": true, + "requires": { + "acorn": "^5.3.0", + "bfj-node4": "^5.2.0", + "chalk": "^2.3.0", + "commander": "^2.13.0", + "ejs": "^2.5.7", + "express": "^4.16.2", + "filesize": "^3.5.11", + "gzip-size": "^4.1.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "opener": "^1.4.3", + "ws": "^4.0.0" + } + }, + "webpack-cli": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "cross-spawn": "^7.0.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "webpack-dev-middleware": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", + "dev": true, + "requires": { + "memory-fs": "~0.4.1", + "mime": "^1.5.0", + "path-is-absolute": "^1.0.0", + "range-parser": "^1.0.3", + "time-stamp": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "2.11.5", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.11.5.tgz", + "integrity": "sha512-7TdOKKt7G3sWEhPKV0zP+nD0c4V9YKUJ3wDdBwQsZNo58oZIRoVIu66pg7PYkBW8A74msP9C2kLwmxGHndz/pw==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "array-includes": "^3.0.3", + "bonjour": "^3.5.0", + "chokidar": "^2.1.2", + "compression": "^1.7.3", + "connect-history-api-fallback": "^1.3.0", + "debug": "^3.1.0", + "del": "^3.0.0", + "express": "^4.16.2", + "html-entities": "^1.2.0", + "http-proxy-middleware": "^0.19.1", + "import-local": "^1.0.0", + "internal-ip": "1.2.0", + "ip": "^1.1.5", + "killable": "^1.0.0", + "loglevel": "^1.4.1", + "opn": "^5.1.0", + "portfinder": "^1.0.9", + "selfsigned": "^1.9.1", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.1.5", + "spdy": "^4.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^5.1.0", + "webpack-dev-middleware": "1.12.2", + "yargs": "6.6.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "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 + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "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": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "http-proxy-middleware": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.2.tgz", + "integrity": "sha512-aYk1rTKqLTus23X3L96LGNCGNgWpG4cG0XoZIT1GUPhhulEHX/QalnO6Vbo+WmKWi4AL2IidjuC0wZtbpg0yhQ==", + "dev": true, + "requires": { + "http-proxy": "^1.18.1", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "requires": { + "binary-extensions": "^1.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": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "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" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "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" + } + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", + "dev": true + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "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": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "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" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha512-6/QWTdisjnu5UHUzQGst+UOEuEVwIzFVGBjq3jMTFNs5WJQsH/X6nMURSaScIdF5txylr1Ao9bvbWiKi2yXbwA==", + "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": "^4.2.0" + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha512-+QQWqC2xeL0N5/TE+TY6OGEqyNRM+g2/r712PDNYgiCdXYCApXf1vzfmDSLBxfGRwV+moTq/V8FnMI24JCm2Yg==", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + } + } + } + }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "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 + } + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha512-mmIPAft2vTgEILgPeZFqE/wWh24SEsR/k+N9fJ3Jxrz44iDFy9aemCxdksfURSHYFCLmvs/d/7Iso5XjPpNfrA==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==", + "requires": { + "mkdirp": "^0.5.1" + } + }, + "ws": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", + "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", + "requires": { + "object-keys": "~0.4.0" + } + }, + "xxhashjs": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "dev": true, + "requires": { + "cuint": "^0.2.2" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..4c1a7e6 --- /dev/null +++ b/package.json @@ -0,0 +1,114 @@ +{ + "name": "e-learn", + "version": "1.0.0", + "description": "A Vue.js project", + "author": "lautin <1538731090@qq.com>", + "private": true, + "scripts": { + "dev": "webpack-dev-server --host 0.0.0.0 --inline --progress --config build/webpack.dev.conf.js", + "start": "npm run dev", + "lint": "eslint --ext .js,.vue src", + "build": "node build/build.js" + }, + "dependencies": { + "art-template": "^4.13.2", + "assets": "^3.0.1", + "axios": "^0.19.2", + "bootstrap": "^3.4.1", + "clipboard": "^2.0.6", + "core-js": "^3.25.2", + "element-ui": "^2.15.10", + "eslint": "^4.19.1", + "highcharts": "^8.1.2", + "http": "^0.0.0", + "http-proxy-middleware": "^0.20.0", + "https": "^1.0.0", + "jquery": "^3.5.1", + "lautin-pagination": "^2.1.2", + "less": "^3.10.3", + "lodash": "^4.17.15", + "marked": "^0.7.0", + "md5": "^2.2.1", + "pako": "^2.0.2", + "popper.js": "^1.16.0", + "pygmentize-bundled": "^2.3.0", + "qs": "^6.11.1", + "sass": "^1.70.0", + "swiper": "^6.0.4", + "vue": "^2.5.2", + "vue-awesome-swiper": "^3.1.3", + "vue-clipboard2": "^0.3.1", + "vue-echarts": "^6.0.2", + "vue-qr": "^2.2.1", + "vue-router": "^3.0.1", + "vuex": "^3.5.1" + }, + "devDependencies": { + "autoprefixer": "^7.1.2", + "babel-core": "^6.22.1", + "babel-eslint": "^8.2.1", + "babel-helper-vue-jsx-merge-props": "^2.0.3", + "babel-loader": "^7.1.1", + "babel-plugin-component": "^1.1.1", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-runtime": "^6.22.0", + "babel-plugin-transform-vue-jsx": "^3.5.0", + "babel-preset-env": "^1.3.2", + "babel-preset-stage-2": "^6.22.0", + "chalk": "^2.0.1", + "copy-webpack-plugin": "^4.0.1", + "css-loader": "^0.28.11", + "d3": "^7.3.0", + "eslint": "^4.15.0", + "eslint-config-standard": "^10.2.1", + "eslint-friendly-formatter": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-import": "^2.7.0", + "eslint-plugin-node": "^5.2.0", + "eslint-plugin-promise": "^3.4.0", + "eslint-plugin-standard": "^3.0.1", + "eslint-plugin-vue": "^4.0.0", + "extract-text-webpack-plugin": "^3.0.0", + "file-loader": "^1.1.4", + "friendly-errors-webpack-plugin": "^1.6.1", + "html-webpack-plugin": "^2.30.1", + "http-proxy-middleware": "^0.20.0", + "less": "^3.10.3", + "less-loader": "^5.0.0", + "node-notifier": "^5.1.2", + "optimize-css-assets-webpack-plugin": "^3.2.0", + "ora": "^1.2.0", + "portfinder": "^1.0.13", + "postcss-import": "^11.0.0", + "postcss-loader": "^2.0.8", + "postcss-url": "^7.2.1", + "prettier": "^1.12.1", + "rimraf": "^2.6.0", + "sass-loader": "^7.3.1", + "sass-resources-loader": "^2.0.3", + "semver": "^5.3.0", + "shelljs": "^0.7.6", + "style-loader": "^1.0.0", + "style-resources-loader": "^1.3.3", + "uglifyjs-webpack-plugin": "^1.1.1", + "url-loader": "^0.5.8", + "vue-i18n": "^8.28.2", + "vue-loader": "^13.3.0", + "vue-style-loader": "^3.1.2", + "vue-template-compiler": "^2.5.2", + "webpack": "^3.12.0", + "webpack-bundle-analyzer": "^2.13.1", + "webpack-cli": "^4.10.0", + "webpack-dev-server": "^2.9.1", + "webpack-merge": "^4.1.0" + }, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not ie <= 8" + ] +} diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..986b894 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/src/api/assets.js b/src/api/assets.js new file mode 100644 index 0000000..454ccb4 --- /dev/null +++ b/src/api/assets.js @@ -0,0 +1,251 @@ +import server from './server' + +console.dir(server); +class Assets { + /** + * 数字货币提现 + * @param {Object} data + */ + static cryptocurrenciesWithdrawal(data) { + + return server.post(`/withdraw/cryptocurrenciesWithdrawal`, data); + + } + + + + /** + * assets页面 + * @param {Object} data + */ + static assets(data) { + + return server.post(`/userCoin/assets`, data); + + } + + + /** + * assets页面 + * @param {Object} data + */ + static getAllList(data) { + + return server.get(`coin/getAllList`, data); + + } + + /** + * 币币用户历史委托 + * @param {Object} data + */ + static history(data) { + + return server.post(`/coin/orders/history`, data); + + } + + /** + * 资金划转记录 + * @param {Object} data + */ + static fundsTransferRecordPageList(data) { + + return server.post(`/fundsTransferRecord/pageList`, data); + + } + + /** + * 资金划转 + * @param {Object} data + */ + static transfer(data) { + + return server.post(`/userCoin/transfer`, data); + + } + + /** + * 数字货币充值 + * @param {int} params + */ + static cryptocurrenciesRecharge(coinId) { + + return server.get(`/recharge/cryptocurrenciesRecharge/${coinId}`); + + } + + /** + * 数字货币充值记录 + * @param {Object} data + */ + static cryptocurrenciesRechargeRecords(data) { + + return server.post(`/recharge/cryptocurrenciesRechargeRecords`, data); + + } + + + /** + * 用户数字货币提现记录 + * @param {Object} data + */ + static cryptocurrenciesWithdrawRecords(data) { + + return server.post(`/withdraw/cryptocurrenciesWithdrawRecords`, data); + + } + + /** + * 删除提现地址 + * @param {Object} data + */ + static deleteById(data) { + + return server.post(`/withdrawAddress/deleteById`, data); + + } + + /** + * 编辑提现地址 + * @param {Object} data + */ + static editById(data) { + + return server.post(`/withdrawAddress/editById`, data); + + } + + /** + * 移除添加地址 + * @param {Object} data + */ + static addRemove(data) { + + return server.post(`/withdrawAddress/addOrRemoveWhiteList`, data); + + } + + + /** + * 提现地址分页列表 + * @param {Object} data + */ + static pageList(data) { + + return server.post(`/withdrawAddress/pageList`, data); + + } + + + /** + * 添加提现地址 + * @param {Object} data + */ + static save(data) { + + return server.post(`/withdrawAddress/save`, data); + + } + + + /** + * 费率列表(手续费) + * @param {Object} data + */ + static getList(data) { + + return server.get(`/transferFee/getList`, data); + + } + + /** + * 用户合约资金 + * @param {Object} data + */ + static contractsAccount(data) { + + return server.get(`/futuresUserCoin/contractsAccount`, data); + + } + /** + * 用户合约资金(详情) + * @param {number} accountId + */ + static contractsAccountDetail(accountId) { + + return server.get(`/futuresUserCoin/contractsAccountDetail/${accountId}`); + + } + + /** + * 用户资金历史记录 + * @param {Object} data + */ + static transactionHistory(data) { + + return server.post(`/futuresUserCoin/transactionHistory`, data); + + } + /** + * 确认是否白名单地址 + * @param {Object} data + */ + static checkIsWhiteList(data) { + + return server.post(`/withdrawAddress/checkIsWhiteList`, data); + + } + + /** + * 用户已实现盈亏列表 + * @param {Object} data + */ + static realisedPnlLog(data) { + + return server.post(`/realisedPnlLog/list`, data); + + } + + /** + * 定期宝列表 + * @param {Object} data + */ + static financeList(data) { + + return server.post(`/finance/list`, data); + + } + /** + * 理财订单列表 + * @param {Object} data + */ + static financeOrderList(data) { + + return server.post(`/finance/order/list`, data); + + } + /** + * 定期宝列表 + * @param {Object} data + */ + static financeApply(data) { + + return server.post(`/finance/apply`, data); + + } + /** + * 定期理财账户资产 + * @param {Object} data + */ + static financeAccount(data) { + + return server.post(`/finance/account`, data); + + } + + + +} + +export default Assets; \ No newline at end of file diff --git a/src/api/coinTrading.js b/src/api/coinTrading.js new file mode 100644 index 0000000..b895cf7 --- /dev/null +++ b/src/api/coinTrading.js @@ -0,0 +1,9 @@ +import server from './server' + +class CoinTrading { + + + +} + +export default CoinTrading; \ No newline at end of file diff --git a/src/api/college.js b/src/api/college.js new file mode 100644 index 0000000..dc9d1d1 --- /dev/null +++ b/src/api/college.js @@ -0,0 +1,36 @@ +import server from './server' + +class College { + static college() { + return server.get(`/college`); + } + + static getArticleList(cid) { + return server.get(`/articleList?id=${cid}`); + } + + // 学院分类列表 + static getCategoryList() { + return server.get(`/categoryList`); + } + + // 服务分类列表 + static getServiceList() { + return server.get(`/services`); + } + + static getArticleDetail(aid) { + return server.get(`/article/detail?id=${aid}`); + } + + // 获取服务的文章详情 + static getServiceDetail(cid) { + return server.get(`/article/serviceDetail?id=${cid}`); + } + + static getRecommend() { + return server.get(`/recommend`); + } +} + +export default College; \ No newline at end of file diff --git a/src/api/config.js b/src/api/config.js new file mode 100644 index 0000000..3c9576d --- /dev/null +++ b/src/api/config.js @@ -0,0 +1,11 @@ +let app = { + baseUrl:'/api/', + wsUrl:'wss://guanli.coin.amatak.net:2346', +} + +if(process.env.NODE_ENV=='production'){ + app.wsUrl='wss://guanli.coin.amatak.net:2346' + app.baseUrl='https://guanli.coin.amatak.net/api/' +} + +export default app; \ No newline at end of file diff --git a/src/api/contactUs.js b/src/api/contactUs.js new file mode 100644 index 0000000..2e3b690 --- /dev/null +++ b/src/api/contactUs.js @@ -0,0 +1,15 @@ +import server from './server'; +class ContactUs { + static getConsultings() { + return server.get(`/about/advices`); + } + + static contactUs(data) { + return server.post(`/contactUs`, data); + } + + static contact () { + return server.get(`/contact`); + } +} +export default ContactUs; \ No newline at end of file diff --git a/src/api/contract.js b/src/api/contract.js new file mode 100644 index 0000000..f72d3e2 --- /dev/null +++ b/src/api/contract.js @@ -0,0 +1,104 @@ +import server from './server' + +class Contract { + + /** + * 下委托单 + * @param {Object} data + */ + static add(data) { + return server.post(`/futuresOrders/add`, data); + } + + static getMarketInfo(data) { + return server.get(`/contract/getMarketInfo`, {params:data}) + } + + /** + * 获取合约市场 + */ + static getMarketList(data) { + return server.get('/contract/getMarketList', {params:data}) + } + + /** + * 获取合约账户信息 + */ + static contractAccount(data) { + return server.get('/contract/contractAccount', {params:data,config:{loading:false}}) + } + + /** + * 获取合约详情 + */ + static getSymbolDetail(data) { + return server.get('/contract/getSymbolDetail', {params:data}) + } + /** + * 可开张数(合约上限) + * */ + static openNum(data) { + return server.get('/contract/openNum', {params:data,config:{loading:false}}) + } + /** + * 合约开仓 + */ + static openPosition(data, config) { + return server.post('/contract/openPosition', data, config) + } + + // 获取合约持仓 + static holdPosition(data, config) { + return server.get('/contract/holdPosition', {params:data,config} ) + } + // 合约平仓 + static closePosition(data, config) { + return server.post('/contract/closePosition', data, config) + } + // 一键全平 + static closeAllPosition(data, config) { + return server.post('/contract/closeAllPosition', data, config) + } + // 获取当前合约委托 + static getCurrentEntrust(data, config) { + return server.get('/contract/getCurrentEntrust', {params:data}, config) + } + // 撤单 + static cancelEntrust(data, config) { + return server.post('/contract/cancelEntrust', data, config) + } + // 历史委托 + static getHistoryEntrust(data, config) { + return server.get('/contract/getHistoryEntrust', {params:data}, config) + } + // 获取k线数据 + static getKline(data, config) { + return server.get('/contract/getKline', {params:data}, config) + } + // 获取委托明细 + static getEntrustDealList(data, config) { + return server.get('/contract/getEntrustDealList', {params:data}, config) + } + // 获取开通状态 + static openStatus() { + return server.get('/contract/openStatus') + } + // 开通永续合约 + static opening() { + return server.post('/contract/opening') + } + // 止盈止损 + static setStrategy(data){ + return server.post('/contract/setStrategy',data) + } + // 一键全平 + static onekeyAllFlat(data){ + return server.post('/contract/onekeyAllFlat',data,{loading:true}) + } + // 一键反向 + static onekeyReverse(data){ + return server.post('/contract/onekeyReverse',data,{loading:true}) + } +} + +export default Contract; \ No newline at end of file diff --git a/src/api/custom/DataUpdater.js b/src/api/custom/DataUpdater.js new file mode 100644 index 0000000..8b5f93a --- /dev/null +++ b/src/api/custom/DataUpdater.js @@ -0,0 +1,104 @@ +/** + * 数据更新器 + * 通过更新器触发datafeeds的getBars实时更新图表数据 + */ +class DataUpdater { + + constructor(datafeeds) { + // 存放所有订阅的新记录 + this.subscribers = {}; + this.requestsPending = 0; + this.historyProvider = datafeeds; + } + + subscribeBars(symbolInfo, resolution, onRealtimeCallback, subscriberUID) { + // 存入订阅者数据 + this.subscribers[subscriberUID] = { + lastBarTime: null, + listener: onRealtimeCallback, + resolution, + symbolInfo + } + } + + unsubscribeBars(subscriberUID) { + delete this.subscribers[subscriberUID]; + } + + updateData() { + + if (this.requestsPending) return; + + for (let subscriberUID in this.subscribers) { + this.requestsPending++; + this.updateDataForSubscriber(subscriberUID).then(() => { + return this.requestsPending--; + }).catch(() => { + return this.requestsPending--; + }); + } + + // debugger; + + } + + updateDataForSubscriber(subscriberUID) { + return new Promise((resolve, reject) => { + var subscriptionRecord = this.subscribers[subscriberUID]; + var rangeEndTime = parseInt((Date.now() / 1000).toString()); + var rangeStartTime = rangeEndTime - this.periodLengthSeconds(subscriptionRecord.resolution, 10); + this.historyProvider.getBars(subscriptionRecord.symbolInfo, subscriptionRecord.resolution, rangeStartTime, rangeEndTime, (bars) => { + this.onSubscriberDataReceived(subscriberUID, bars); + resolve(); + }, () => { + reject(); + }); + }); + } + + onSubscriberDataReceived(listenerGuid, bars) { + if (!this.subscribers.hasOwnProperty(listenerGuid)) return; + if (!bars.length) return; + var lastBar = bars[bars.length - 1]; + var subscriptionRecord = this.subscribers[listenerGuid]; + if (subscriptionRecord.lastBarTime !== null && lastBar.time < subscriptionRecord.lastBarTime) return; + var isNewBar = subscriptionRecord.lastBarTime !== null && lastBar.time > subscriptionRecord.lastBarTime; + if (isNewBar) { + if (bars.length < 2) { + throw new Error('Not enough bars in history for proper pulse update. Need at least 2.'); + } + + var previousBar = bars[bars.length - 2]; + subscriptionRecord.listener(previousBar); + } + + subscriptionRecord.lastBarTime = lastBar.time; + subscriptionRecord.listener(lastBar); + } + + // 周期转化成秒 + periodLengthSeconds(resolution, requiredPeriodsCount) { + let daysCount = 0; + switch (resolution.toUpperCase()) { + case 'D' : + case '1D' : + daysCount = requiredPeriodsCount; + break; + case 'M' : + case '1M' : + daysCount = 31 * requiredPeriodsCount; + break; + case 'W' : + case '1W' : + daysCount = 7 * requiredPeriodsCount; + break; + default : + daysCount = requiredPeriodsCount * parseInt(resolution) / (24 * 60); + break; + } + return daysCount * 24 * 60 * 60; + } + +} + +export default DataUpdater; \ No newline at end of file diff --git a/src/api/custom/Datafees.js b/src/api/custom/Datafees.js new file mode 100644 index 0000000..4c495eb --- /dev/null +++ b/src/api/custom/Datafees.js @@ -0,0 +1,119 @@ +// function _interopRequireDefault(obj) { +// return obj && obj.__esModule ? obj : { +// default: obj +// } +// } + +// function _classCallCheck(instance, Constructor) { +// if (!(instance instanceof Constructor)) { +// throw new TypeError("Cannot call a class as a function"); +// } +// } + +import DataUpdater from './DataUpdater.js' + +class Datafeeds { + /** + * JS API 传入一个datafeeds对象 + * @param {*Object} vue vue实例 + */ + constructor(model) { + + this.self = model; + + this.barsUpdater = new DataUpdater(this); + + } + + /** + * @param {*Function} callback 回调函数 + * `onReady` should return result asynchronously. + */ + onReady(callback) { + return new Promise((resolve, reject) => { + let configuration = {}; + // 在模型中配置 + if (this.self.getConfig) + Object.assign(configuration, this.self.getConfig()); + + resolve(configuration); + + }).then(configuration => callback(configuration)); + } + + /** + * @param {*String} symbolName 商品名称或ticker 取得商品数据的唯一标识符 + * @param {*Function} onSymbolResolvedCallback 成功回调 + * @param {*Function} onResolveErrorCallback 失败回调 + * `resolveSymbol` should return result asynchronously. + */ + resolveSymbol(symbolName, onSymbolResolvedCallback, onResolveErrorCallback) { + + return this.self.getSymbol(symbolName).then((symbolInfo) => { + + return onSymbolResolvedCallback(symbolInfo); + }).catch((err) => { + return onResolveErrorCallback(err); + }); + + } + + /** + * 此方法在更新symbol和interval时会触发两次,第一次取历史数据,第二次取新数据 新数据钩子函数会返回执行 + * symbol和interval的更新方式分别如下: + * + 图表动作setSymbol()主动设置,或者图表内搜索时反馈symbol + * + 点击分时按钮或者下拉时反馈interval 通过该方法也可以获取 + * @param {Object} symbolInfo 商品信息对象 + * @param {String} resolution 分辨率 + * @param {Number} rangeStartDate 时间戳、最左边请求的K线时间 + * @param {Number} rangeEndDate 时间戳、最右边请求的K线时间 + * @param {Function} onHistoryCallback 回调函数 + * @param {Function} onErrorCallback 回调函数 + */ + getBars(symbolInfo, resolution, rangeStartDate, rangeEndDate, onHistoryCallback, + onErrorCallback, firstDataRequest) { + // debugger; + if (firstDataRequest) { // 第一次取历史记录 + // model的getBars方法返回结果 包含两个值 bars和meta + this.self.getBars(symbolInfo, resolution, rangeStartDate, rangeEndDate, function (data) { + if (data.length) { + const bars = data; + onHistoryCallback(bars); + } else { + const meta = { + noData: true, // 没有数据 + nextTime: Date.now(), // 下一个K线柱的时间 + }; + onHistoryCallback(null, meta); + } + }); + } else { // 取新数据 + this.subscribeBars(); + } + + } + + /** + * 订阅K线数据。图表库将调用onRealtimeCallback方法以更新实时数据 + * @param {Object} symbolInfo 商品信息 + * @param {String} resolution 分辨率 + * @param {Function} onRealtimeCallback 回调函数 + * @param {String} subscriberUID 监听的唯一标识符 + * @param {Function} onResetCacheNeededCallback + * (从1.7开始): 将在bars数据发生变化时执行 + */ + subscribeBars(symbolInfo, resolution, onRealtimeCallback, subscriberUID, onResetCacheNeededCallback) { + // debugger; + this.self.subscribeBars(symbolInfo, resolution, onRealtimeCallback, subscriberUID, onResetCacheNeededCallback); + } + + /** + * 取消订阅K线数据 + * @param {*String} subscriberUID 监听的唯一标识符 + */ + unsubscribeBars(subscriberUID) { + this.barsUpdater.unsubscribeBars(subscriberUID); + } +} + +export default Datafeeds; \ No newline at end of file diff --git a/src/api/custom/Model.js b/src/api/custom/Model.js new file mode 100644 index 0000000..db89a91 --- /dev/null +++ b/src/api/custom/Model.js @@ -0,0 +1,359 @@ +import Datafeeds from "./Datafees.js"; +import Socket from './Socket.js' +import servlet from './servlet.js'; +// import { resolveConfig } from "prettier"; +// import { resolveConfig } from "prettier"; + + +// import +class Model { + + /** + * 初始化模型 + * @param {mixed} ws socket请求的url或者一个已经存在的socket对象 + * @param {Object} sub_params socket订阅的参数 + * @param {Object} unsub_params 取消订阅的参数 + */ + constructor(link, view) { + this.socket = new Socket(link); + this.view = view; + + // 用于订阅数据 + this.sub_msg; // 订阅标签 用于鉴定返回message 固定格式 'label_id_interval' + this.marketId; + + + // 用于生成图表 + this.symbol; // 请求商品 + this.interval; // 请求周期 + this.ticker; // 商品唯一标识 + + this.priceDecimals; // 价格精度 + + // 缓存用于K线的历史记录数据 + this.cacheData = []; // + this.lastTime = null; // 最后一条数据的创建日期 + + this.getBarTimer = null; + this.isLoading = true; + + this.datafeeds = new Datafeeds(this); // 数据模型的接口 + this.widget; // td实例对象 + this.getHistoryCallback; // ajax取记录的回调函数 + this.onRealtimeCallback; + + } + + /** + * 生成图表库 支持初始化订阅 也可以手动在外部订阅,但订阅必须先于图标库 + * @param {Object} optionals 图表初始化配置 + * @param {Object|Array} sub_params 初始化订阅参数 可选值 + */ + init(optionals, extenals = null) { + if (extenals) { + if (extenals.constructor == Function) { // 获取历史记录 + this.getHistoryCallback = extenals; + } else if (extenals.constructor == Object) { // 初始化订阅信息 + this.subscribe(extenals); + } + } + + // 写入全局 + this.symbol = optionals.symbol; + // 初始化设置interval 后期从订阅参数中取 + this.interval = optionals.interval; + this.ticker = this.symbol.concat('_', this.interval); + this.priceDecimals = optionals.priceDecimals; + + // 写入动态配置 覆盖默认配置 + const settings = { + datafeed: this.datafeeds // 传入的api对象 + } + + Object.keys(optionals).forEach(key => { + if (optionals[key]) settings[key] = optionals[key]; + }) + + // 接收数据值 + this.socket.on('message', this.handleMessage.bind(this)); + + // 创建tv组件 + this.widget = new TradingView.widget(servlet(settings)); + + } + //重连WS后的操作 + conglian(link){ + this.socket = new Socket(link); + this.socket.on('message', this.handleMessage.bind(this)); + } + /** + * 发起订阅新的数据 + * @param {Array|Object} sub_params 所有订阅参数 + */ + subscribe(sub_params) { + + // 将订阅参数 写入全局,别计算分时 + if (sub_params instanceof Array) { + this.sub_msg = sub_params.find(item => item.cmd == "sub").msg + } else { + this.sub_msg = sub_params.msg; + } + + this.sendMessage(sub_params); + } + + sendMessage(data) { + // debugger + console.log(">>>>>>>>>>" + JSON.stringify(data)); + // 已经open状态 + if (this.socket.checkOpen()) this.socket.send(data); + else{ + // 先open 再send + this.socket.on('open', (evt) => { + // console.Info(this.socket) + this.socket.send(data); + }) + } + } + + unSubscribe() { + this.sendMessage(this.sub_params); + } + + // 处理历史数据和动态更新的数据 + handleMessage(response) { + + // if (response.sub != "history" && response.sub != "dynamic") return; + + let { data = null, sub = null, type = null } = response; + + // 答复连接 + if (type == "ping") { + this.sendMessage({ + cmd: "pong" + }); + return; + } + + // 严格匹配返回的订阅内容 + if (sub === this.sub_msg) { + + if (type == "history") { + // console.log("<<<<<<<<= this.lastTime && this.cacheData[this.ticker] && this.cacheData[this.ticker].length) { + // // 更新最后一条记录 + // // this.cacheData[this.ticker][this.cacheData[this.ticker].length - 1] = barsData + // this.onRealtimeCallback(barsData); + // } + if (barsData.time >= this.lastTime) { + // 更新最后一条记录 + this.lastTime = barsData.time; + this.onRealtimeCallback(barsData); + } + } + } + + } + + getConfig() { + console.log("Model.getConfig"); + return { + // supports_search: true, + supports_group_request: true, + // 支持的周期数组,周期可以是数字或字符串。 + // 如果周期是一个数字,它被视为分钟数。 + supported_resolutions: ['1', '5', '15', '30', '60', 'D', 'W', 'M'], + supports_marks: true, // 是否在K线上显示标记 + supports_timescale_marks: true, + }; + } + + // 切换交易对方法 + setSymbol(symbolName) { + + this.symbol = symbolName; + this.ticker = this.symbol.concat('_', this.interval); + this.widget.setSymbol(symbolName, this.interval); + + } + + // 切换分时的方法 + setResolution(resolution, callback) { + + this.ticker = this.symbol.concat('_', resolution); + this.widget.chart().setResolution(resolution, callback); + + } + + getSymbol(symbolName) {// 小写的交易对名称 + + // 1、查找已有精度值 + let priceDecimals = this.priceDecimals || this.view.priceDecimals; + + let pms, + base = { + 'name': symbolName, // 用于请求数据 + // 这个商品的交易所时区 + // 'timezone': 'Asia/Shanghai', + timezone: "America/Toronto", + // 最小波动 + 'minmov': 1, + 'minmov2': 0, + 'pointvalue': 1, + 'fractional': false, + // 设置周期 + 'session': '24x7', + 'has_intraday': true, + 'has_no_volume': false, + // 设置是否支持周月线 + "has_daily": true, + // 设置是否支持周月线 + "has_weekly_and_monthly": true, + "has_empty_bars": true, + // 唯一标识符,如果您指定此属性,则其值将用于所有数据请求 + 'ticker': this.ticker, + //'supported_resolutions': ['1', '5', '15', '30', '60', '240', '1D', '5D', '1W', '1M'] + }; + + // 2、还没获取到价格精度 + if (!priceDecimals && this.view.getSymbol) { + + pms = this.view.getSymbol().then(data => { + + return (Object.assign({ + // 商品说明 将被打印在图表的标题栏中 + 'description': data.pair_name, + // 设置精度 100表示保留两位小数 1000三位 10000四位 + 'pricescale': Math.pow(10, data.price_decimals), + }, base)); + }); + + } else { // 已经获取到价格精度 + pms = Promise.resolve(Object.assign({ + // 商品说明 将被打印在图表的标题栏中 + 'description': symbolName.toUpperCase(), + // 设置精度 100表示保留两位小数 1000三位 10000四位 + 'pricescale': Math.pow(10, priceDecimals), + }, base)) + } + + return pms; + + } + + + getBars(symbolInfo, resolution, rangeStartDate, rangeEndDate, onLoadedCallback) { + + console.log("Model.getHistory"); + + if (this.getHistoryCallback instanceof Function) { // ajax加载 + + // 通过图表动作 切换分时 需要同步数据和分时值 + if (this.interval !== resolution) { + // 需要转化resolute为实际的订阅interval + this.interval = resolution; + } + + this.getHistoryCallback((data, lastTime) => { + this.lastTime = lastTime; + // 过滤筛选数据 + const ret = []; + data.forEach(item => { + // 取得该时间内的记录 + if (item.time >= rangeStartDate * 1000 && item.time <= rangeEndDate * 1000) { + ret.push(item); + } + }); + + onLoadedCallback(ret); + }) + } else { // websocket加载 + + // 通过图表动作 切换分时 需要同步数据和分时值 + if (this.interval !== resolution) { + + // 需要转化resolute为实际的订阅interval + this.interval = resolution; + let period = this.translateInterval2Period(this.interval); + + // 重新订阅所有数据 在cache缓存中控制过滤 + this.subscribe([{ + cmd: "unsub", + msg: `Kline_${symbolInfo.name}_${period}` + }, { + cmd: "req", + msg: `Kline_${symbolInfo.name}_${period}` + }, { + cmd: "sub", + msg: `Kline_${symbolInfo.name}_${period}` + }]); + } + + if (this.cacheData[this.ticker] && this.cacheData[this.ticker].length) { + // 已取得数据 + this.isLoading = false; + const ret = []; + this.cacheData[this.ticker].forEach(item => { + // 取得该时间内的记录 + if (item.time >= rangeStartDate * 1000 && item.time <= rangeEndDate * 1000) { + ret.push(item); + } + }); + onLoadedCallback(ret); + + } else { // 重新加载数据 + this.getBarTimer = setTimeout(() => { + this.getBars(symbolInfo, resolution, rangeStartDate, rangeEndDate, onLoadedCallback) + }, 1000) + } + } + + + } + + // 订阅新的数据 + subscribeBars(symbolInfo, resolution, onRealtimeCallback, subscriberUID, onResetCacheNeededCallback) { + this.onRealtimeCallback = onRealtimeCallback; + } + +} + +export default Model; diff --git a/src/api/custom/Socket.js b/src/api/custom/Socket.js new file mode 100644 index 0000000..4237a57 --- /dev/null +++ b/src/api/custom/Socket.js @@ -0,0 +1,197 @@ + +class Socket { + + constructor(ws, ...args) { + // 初始化socket + if (ws.constructor == WebSocket) { + this.socket = ws; + } else { + this.socket = new WebSocket(ws); + } + // this.socket.binaryType = 'arraybuffer'; + + this.doOpen(); + + + this.readyState = this.socket.readyState; + + // 订阅/发布模型 + this._events = { + // 订阅的事件 : 发布的方法 + + }; + + // 定时验证的标识符 + this.heartBeatTimer = null; + + } + + // 执行socket并发布事件 + doOpen() { + + this.afterOpenEmit = []; + + // 执行socket连接 并初始化验证请求 + this.socket.addEventListener("open", evt => { + // 连接状态的标识符 + this.readyState = this.socket.readyState; + this.onOpen(evt) + }); + + // 接收socket数据 + this.socket.addEventListener("message", evt => { + // 连接状态的标识符 + this.readyState = this.socket.readyState; + this.onMessage(evt) + }); + + // 关闭socket连接 + this.socket.addEventListener("close", evt => { + // 连接状态的标识符 + this.readyState = this.socket.readyState; + this.onClose(evt) + }); + + // 请求发生错误 + this.socket.addEventListener("error", err => { + // 连接状态的标识符 + this.readyState = this.socket.readyState; + this.onError(err) + }); + + } + + // 发布后通知订阅者 + Notify(entry) { + // 检查是否有订阅者 返回队列 + const cbQueue = this._events[entry.Event]; + if (cbQueue && cbQueue.length) { + for (let callback of cbQueue) { + + if (callback instanceof Function) callback(entry.Data); + } + } + } + + // 请求数据的方法 + onOpen(evt) { + + // 每隔20s检查连接 + // this.heartBeatTimer = setInterval(() => this.send({ + // 'cmd': 'ping', + // 'args': '' + // }), 20000); + + // 通知订阅 + this.Notify({ Event: 'open', Data: evt }); + } + + /** + * 订阅所有的数据 + * @param {array|object} datas 订阅参数集合 + */ + send(datas) { + if (datas.constructor != Array) { + datas = [datas]; + } + + for (let item of datas) { + this.socket.send(JSON.stringify(item)); + } + } + + + onMessage(evt) { + + try { + + // 解析推送的数据 + const data = JSON.parse(evt.data); + + // 通知订阅者 + this.Notify({ + Event: 'message', + Data: data + }); + + } catch (err) { + console.error(' >> Data parsing error:', err.message); + + // 通知订阅者 + this.Notify({ + Event: 'error', + Data: err + }); + } + } + + // 添加事件监听 + on(name, handler) { + this.subscribe(name, handler); + } + + // 取消订阅事件 + off(name, handler) { + this.unsubscribe(name, handler); + } + + // 订阅事件的方法 + subscribe(name, handler) { + // debugger; + if (this._events.hasOwnProperty(name)) { + this._events[name].push(handler); // 追加事件 + } else { + this._events[name] = [handler]; // 添加事件 + } + } + + // 取消订阅事件 + unsubscribe(name, handler) { + + let start = this._events[name].findIndex(item => item === handler); + + // 删除该事件 + this._events[name].splice(start, 1); + + } + + checkOpen() { + + return this.readyState >= 1; + } + + onClose(evt) { + this.Notify({ Event: 'close', Data: evt }); + } + + + onError(err) { + this.Notify({ Event: 'error', Data: err }); + } + + emit(data) { + return new Promise((resolve) => { + this.send(JSON.stringify(data)); + this.on('message', function (data) { + resolve(data); + }); + }); + } + + doClose() { + this.socket.close(); + } + + destroy() { + if (this.heartBeatTimer) { + clearInterval(this.heartBeatTimer); + this.heartBeatTimer = null; + } + this.doClose(); + this._events = {}; + this.readyState = 0; + this.socket = null; + } +} + +export default Socket diff --git a/src/api/custom/servlet.js b/src/api/custom/servlet.js new file mode 100644 index 0000000..a96dd3c --- /dev/null +++ b/src/api/custom/servlet.js @@ -0,0 +1,102 @@ +function servlet(optionals) { + + return Object.assign({ + + symbol: 'btcusdt', //默认商品设置 + interval: "1", //默认请求间隔 + // fullscreen: false, //默认是否全屏 + autosize: true, //默认是否自适应 + container_id: 'trading-view', //设置容器 + datafeed: null, + library_path: '/static/Kline/charting_library/', + enabled_features: [], + // timezone: 'Asia/Shanghai', + timezone: "America/Toronto", + locale: 'en', + debug: false, + toolbar_bg: "#f1f3f6",//设置默认工具条背景颜色 + style: "1", + hide_side_toolbar: false, + withdateranges: true, + allow_symbol_change: true, + theme: "light", + + // time_frames: [ + // { text: "50y", resolution: "6M", description: "50 Years" }, + // { text: "3y", resolution: "W", description: "3 Years", title: "3yr" }, + // { text: "8m", resolution: "D", description: "8 Month" }, + // { text: "3d", resolution: "5", description: "3 Days" }, + // { text: "1000y", resolution: "W", description: "All", title: "All" }, + // ], + + drawings_access: { + type: "black", + tools: [ + { name: "Trend Line", grayed: true }, + { name: "Trend Angle", grayed: true } + ] + }, + + charts_storage_api_version: "1.1", + client_id: "tradingview.com", + + //设置默认不显示组件 + disabled_features: [ + 'header_symbol_search', + // "use_localstorage_for_settings", + // "left_toolbar", + // 'legend_context_menu', + // "border_around_the_chart", + // "timeframes_toolbar", + "volume_force_overlay", + // "pane_context_menu", + // "header_symbol_search", + // "symbol_search_hot_key", + // "header_undo_redo", + // "header_compare", + // "header_chart_type", + // "header_screenshot", + // "header_resolutions", + // "header_settings", + // "header_indicators" + ], + + //设置初始化样式配置 + overrides: { + // "mainSeriesProperties.candleStyle.upColor": "#589065", + // "mainSeriesProperties.candleStyle.downColor": "#AE4E54", + // "mainSeriesProperties.candleStyle.drawWick": true, + // "mainSeriesProperties.candleStyle.wickUpColor:": '#AE4E54', + // "mainSeriesProperties.candleStyle.wickDownColor": "#AE4E54", + // "mainSeriesProperties.candleStyle.drawBorder": true, + // "mainSeriesProperties.candleStyle.borderUpColor": "#589065", + // "mainSeriesProperties.candleStyle.borderDownColor": "#AE4E54", + // "paneProperties.background": "#121a2e", + // "paneProperties.vertGridProperties.color": "#1e273c", + // "paneProperties.vertGridProperties.style": 0, + // "paneProperties.horzGridProperties.color": "#1e273c", + // "paneProperties.horzGridProperties.style": 0, + // "scalesProperties.lineColor": "#505d7b", + // "scalesProperties.textColor": "#333e58", + // "paneProperties.legendProperties.showLegend": false, + // //"scalesProperties.showLeftScale":false, + // "volumePaneSize": "medium", + // "MACDPaneSize": "tiny", + }, + + //设置初始化加载条样式 + loading_screen: { + // "backgroundColor": "#1e222d", + // "foregroundColor": "#5d7d93" + }, + + studies_overrides: { + //设置成交量默认样式 + // "volume.volume.color.0": "rgba(174,78,84,0.7)", + // "volume.volume.color.1": "rgba(88,144,101,0.7)", + } + + }, optionals); +} + +export default servlet; diff --git a/src/api/exchange.js b/src/api/exchange.js new file mode 100644 index 0000000..8f2c530 --- /dev/null +++ b/src/api/exchange.js @@ -0,0 +1,31 @@ +import server from './server' + +class Exchange { + + // 获取账户余额 + static getUserBalance(symbol) { + return server.get(`exchange/getUserCoinBalance?symbol=${encodeURIComponent(symbol)}`); + } + + // 提交订单 + static storeEntrust(data) { + return server.post(`/exchange/storeEntrust`, data); + } + + // 获取币种基本信息 + static getSymbolInfo(data) { + return server.post(`/user/tradingPairCurrency`, data); + } + + // 查询最新资讯 + static newTrends(limit) { + return server.get(`/marketDynamics?limit=${limit}`); + } + + // 获取汇率 + static getCurrencyExCny(data){ + return server.get('/market/getCurrencyExCny',{params:data}) + } +} + +export default Exchange; \ No newline at end of file diff --git a/src/api/home.js b/src/api/home.js new file mode 100644 index 0000000..351a8fd --- /dev/null +++ b/src/api/home.js @@ -0,0 +1,43 @@ + +import server from './server'; + +class Home { + // 获取大部分数据 + static indexList(){ + return server.get('/indexList') + } + // 获取自选数据 + static getCollect(){ + return server.get('/getCollect') + } + + /** + * 添加自选 + * @param {object} data + * @param {string} data.pair_id + * @param {string} data.pair_name + */ + static option(data){ + return server.post('/option',data) + } + /** + * 获取版本号 + */ + static getNewestVersion(){ + return server.get('/getNewestVersion') + } + /* + * 获取未读消息 + */ + static chat(){ + return server.get('/user/chat',{config:{loading:false}}) + } + /* + * 已读消息 + */ + static chatRead(){ + return server.get('/user/chatRead',{config:{loading:false}}) + } +} + +export default Home; \ No newline at end of file diff --git a/src/api/market.js b/src/api/market.js new file mode 100644 index 0000000..f00fe76 --- /dev/null +++ b/src/api/market.js @@ -0,0 +1,56 @@ +import server from './server' + +class Market { + + /** + * 轮播图列表 + * @param {Object} data + * @param {int} type 请求类型 1是pc(默认) 2是app + * @param {int} position 位置 1(币币首页) 2(预留扩展) + */ + static cryptocurrenciesWithdrawal(type, position) { + + return server.post(`/market/banner/${type}/${position}`, data); + + } + + /** + * 用户收藏交易对信息 需要先登录 + */ + static userFavList() { + + return server.get(`/coin/market/collection/list`); + + } + + + static blogCategoryList() { + return server.get(`/blogCategory/list`); + } + + static blogDetailList(categoryId, params) { + return server.get(`/blog/list/${categoryId}`, { params }); + } + + static blogDetailContent(id) { + return server.get(`/blog/detail/${id}`); + } + + // 初始化查询市场行情 + static getMarketList() { + return server.get(`/exchange/getMarketList`); + } + + // 初始化买卖盘数据 + static getBooks(symbol) { + return server.get(`/exchange/getMarketInfo?symbol=${symbol}`); + } + + // 币种信息 + static getCoinInfo(params) { + return server.get(`/exchange/getCoinInfo`,{ params }); + } + +} + +export default Market; \ No newline at end of file diff --git a/src/api/member.js b/src/api/member.js new file mode 100644 index 0000000..7af2922 --- /dev/null +++ b/src/api/member.js @@ -0,0 +1,166 @@ +import server from './server' + +class Member { + + /** + * 注册滑块验证码 + * @param {object} data + */ + static sliderVerify(data) { + return server.post(`/sliderVerify`, data); + } + + /** + * 注册发送手机验证码 + * @param data {phone,country_code,token} + */ + static sendSmsCode(data) { + return server.post(`/register/sendSmsCode`, data); + } + + /** + * 注册发送验证码 + * @param data {email,token} + */ + static sendEmailCode(data) { + return server.post(`/register/sendEmailCode`, data); + } + + /** + * 获取国家区号 + * @param {object} data + */ + static getCountryCode() { + return server.get(`/getCountryList`); + } + + /** + * 注册提交 + * @param {object} data + */ + static register(data) { + return server.post(`user/register`, data); + } + + /** + * 登陆发送短信验证码 + * @param {object} data + */ + static sendSmsCodeBeforeLogin(data) { + return server.post(`/login/sendSmsCodeBeforeLogin`, data); + } + + /** + * 登陆发送邮箱验证码 + * @param {object} data + */ + static sendEmailCodeBeforeLogin(data) { + return server.post(`/login/sendEmailCodeBeforeLogin`, data); + } + + /** + * 登陆初始化验证 + * @param {object} data + */ + static login(data) { + return server.post(`user/login`, data); + } + + /** + * 登陆二次验证 + * @param {object} data + */ + static loginConfirm(data) { + return server.post(`/user/loginConfirm`, data) + } + + /** + * 退出登录 + */ + static logout() { + return server.post(`/user/logout`); + } + /** + * 上传文件 + * @param {FormData} data + */ + static uploadImage(data) { + return server.post(`/uploadImage`, data); + } + + /** + * 忘记密码的账号验证 + * @param {object} data + */ + static forgetPasswordAttempt(data) { + return server.post(`/user/forgetPasswordAttempt`, data); + } + + /** + * 忘记密码短信验证 + */ + static sendSmsCodeForgetPassword(data) { + return server.post(`/user/sendSmsCodeForgetPassword`, data); + } + + /** + * 忘记密码邮箱验证 + */ + static sendEmailCodeForgetPassword(data) { + return server.post(`/user/sendEmailCodeForgetPassword`, data); + } + + static forgetPwdSumit(data) { + return server.post(`/user/forgetPassword`, data); + } + // 消息通知 + static myNotifiables(data) { + return server.get('/user/myNotifiables', {params:data}) + } + // 未读消息数量 + static myNotifiablesCount() { + return server.get('/user/myNotifiablesCount') + } + // 消息详情 + static readNotifiable(data){ + return server.get('/user/readNotifiable',{params:data}) + } + // 一键已读 + static batchReadNotifiables(){ + return server.get('/user/batchReadNotifiables') + } + // 获取logo + static getLogo(){ + return server.get('/index/logo') + } + // 移动端文章 + static article(data){ + return server.get('/article/list',{params:data}) + } + // 文章详情 + static articleDetail(data){ + return server.get('/article/detail',{params:data}) + } + // 文章详情 + static agent(data){ + return server.post('/agent/register',data) + } + + /** + * 注册gc验证码 + * @param data {email,token} + */ + static sendGCode() { + return server.get(`/register/Graph_che`); + } + // 提币获取邮箱验证码 + static getWdcode(data){ + return server.get(`/user/wdcode`,{params:data}); + } + // 查询用户的帐号 + static getUnameByUid(data){ + return server.get(`/user/getUserName`, {params:data}); + } +} + +export default Member; diff --git a/src/api/option.js b/src/api/option.js new file mode 100644 index 0000000..1da950d --- /dev/null +++ b/src/api/option.js @@ -0,0 +1,111 @@ + +import server from './server'; + +class Option { + // 交易对 + static getOptionSymbol() { + return server.get(`/option/getOptionSymbol`); + } + /** + * 获取期权交割记录 + * @param {object} data + * @param {string} data.pair_id + * @param {string} data.time_id + */ + static getSceneResultList(data) { + return server.get(`/option/getSceneResultList`, { + params: data + }) + } + /** + * 获取k线数据 + * @param {object} data + * @param {string} data.symbol + * @param {string} data.period + * @param {string} data.size + * @param {string} data.form + * @param {string} data.to + */ + static getKline(data) { + // let url = `https://api.hadax.com/market/history/kline`; + let url = `/option/getKline`; + return server.get(url, { + params: data + }) + } + /** + * 获取可用于期权交易的币种列表 + */ + static getBetCoinList() { + return server.get(`/option/getBetCoinList`) + } + /** + * 获取指定币种的余额 + * @param {object} data + * @param {string} data.coin_id + */ + static getUserCoinBalance(data) { + return server.get(`/option/getUserCoinBalance`,{params:data}) + } + /** + * 获取当前最新期权场景 + * @param {object} data + * @param {string} data.pair_id + * @param {string} data.time_id + */ + static sceneDetail(data) { + return server.get(`/option/sceneDetail`, { + params: data + }) + } + /** + * 获取全部期权场景 + */ + static sceneListByPairs() { + return server.get(`/option/sceneListByPairs`) + } + /** + * 获取当前最新期权场景赔率 + * @param {object} data + * @param {string} data.pair_id + * @param {string} data.time_id + */ + static getOddsList(data) { + return server.get(`/option/getOddsList`,{ + params:data + }) + } + /** + * 获取用户期权购买记录 + * @param {object} data + * @param {string} data.status + * @param {string} data.pair_id + * @param {string} data.time_id + */ + static getOptionHistoryOrders(data) { + return server.get(`/option/getOptionHistoryOrders`,{params:data}) + } + /** + * 购买期权 + * @param {object} data + * @param {string} data.bet_amount + * @param {string} data.bet_coin_id + * @param {string} data.odds_id + * */ + static betScene(data){ + return server.post(`/option/betScene`,data) + } + /** + * 获取交易价格组 + * @param {object} data + * @param {string} data.symbol + * + */ + static getNewPriceBook(data){ + return server.get('/option/getNewPriceBook',{ + params:data + }) +} +} + +export default Option; \ No newline at end of file diff --git a/src/api/order.js b/src/api/order.js new file mode 100644 index 0000000..31801aa --- /dev/null +++ b/src/api/order.js @@ -0,0 +1,105 @@ +import server from './server'; +class Order { + /** + * 发布委托 + * @param {object} data + * @param {string} data.direction 方向 + * @param {number} data.type - 类型 + * @param {string} data.symbol - 交易对 + * @param {number} data.entrust_price - 价格 + * @param {number} data.amount - 数量 + * + */ + static storeEntrust(data) { + return server.post(`/exchange/storeEntrust`,data); + } + /** + * 获取历史委托 + * @param {object} data + * @param {string} data.direction 方向 + * @param {number} data.type - 类型 + * @param {string} data.symbol - 交易对 + * + */ + static getHistoryEntrust(data) { + return server.get(`/exchange/getHistoryEntrust`,{ + params:data + }); + } + /** + * 获取当前委托 + * @param {object} data + * @param {string} data.direction 方向 + * @param {number} data.type - 类型 + * @param {string} data.symbol - 交易对 + * + */ + static getCurrentEntrust(data) { + return server.get(`/exchange/getCurrentEntrust`,{ + params:data + }); + } + + // 获取止盈止损单 + static getConditionEntrust(data) { + return server.get(`/exchange/getConditionEntrust`,{ + params:data + }); + } + + /** + * 获取委托成交记录 + * @param {object} data + * @param {string} data.entrust_id 委托id + * @param {number} data.entrust_type - 买入卖出 + * @param {string} data.symbol - 交易对 + * + */ + static getEntrustTradeRecord(data) { + return server.get(`/exchange/getEntrustTradeRecord`,{ + params:data + }); + } + + /** + * 撤单 + * @param {object} data + * @param {string} data.entrust_id 委托id + * @param {number} data.entrust_type - 买入卖出 + * @param {string} data.symbol - 交易对 + * + */ + static cancelEntrust(data) { + return server.post(`/exchange/cancelEntrust`,data); + } + /** + * 批量撤单 + * @param {object} data + * @param {string} data.symbol - 交易对 + * + */ + static batchCancelEntrust(data) { + return server.post(`/exchange/batchCancelEntrust`,data); + } + // 获取交易对 + static getExchangeSymbol(){ + return server.get('/exchange/getExchangeSymbol') + } + /** + * 期权交易记录 + * @param {object} [data] + * @param {string} data.status + * @param {string} data.pair_id + * @param {string} data.time_id + * + */ + static getOptionHistoryOrders(data){ + return server.get('/option/getOptionHistoryOrders',{ + params:data + }) + } + + +} + +export default Order; \ No newline at end of file diff --git a/src/api/otc.js b/src/api/otc.js new file mode 100644 index 0000000..f7ae44e --- /dev/null +++ b/src/api/otc.js @@ -0,0 +1,63 @@ +import server from './server'; +class Otc { + static userPayment(data) { + return server.get(`/userPayment`,{params:data},{loading:true}); + } + static editUserPayment(data) { + return server.post(`/userPayment/${data.id}`,data,{loading:true}); + } + static getUserPayment(data) { + return server.post(`/userPayment/${data.id}`,{},{loading:true}); + } + static addUserPayment(data) { + return server.post(`/userPayment`,data,{loading:true}); + } + static otcTicker(){ + return server.get(`/otc/otcTicker`,{}); + } + static tradingEntrusts(data){ + return server.get(`/otc/tradingEntrusts`,{params:data},{loading:true}) + } + static storeEntrust(data){ + return server.post(`/otc/storeEntrust`,data,{loading:true}) + } + static storeOrder(data){ + return server.post(`/otc/storeOrder`,data,{loading:true}) + } + static myEntrusts(data){ + return server.get(`/otc/myEntrusts`,{params:data},{loading:true}) + } + static myOrders(data){ + return server.get(`/otc/myOrders`,{params:data},{loading:true}) + } + static cancelEntrust(data){ + return server.post(`/otc/cancelEntrust`,data,{loading:true}) + } + static cancelOrder(data){ + return server.post(`/otc/cancelOrder`,data,{loading:true}) + } + static confirmPaidOrder(data){ + return server.post(`/otc/confirmPaidOrder`,data,{loading:true}) + } + static confirmOrder(data){ + return server.post(`/otc/confirmOrder`,data,{loading:true}) + } + static notConfirmOrder(data){ + return server.post(`/otc/notConfirmOrder`,data,{loading:true}) + } + static orderDetail(data){ + return server.get(`/otc/orderDetail`,{params:data},{loading:true}) + } + static otcAccount(data){ + return server.get(`/otc/otcAccount`,{params:data},{loading:true}) + } + + static legalBuy(data){ + return server.post(`/user/legal-buy-sell`,data) + } + static legalPrice(data){ + return server.post(`/user/legal-unit-price`,data) + } +} + +export default Otc; \ No newline at end of file diff --git a/src/api/profile.js b/src/api/profile.js new file mode 100644 index 0000000..d9d3d71 --- /dev/null +++ b/src/api/profile.js @@ -0,0 +1,65 @@ +import server from './server'; +class Profile { + // 获取用户信息 + static getUserInfo() { + return server.get(`/user/getUserInfo`,{loading:false}); + } + // 获取实名认证信息 + static getAuthInfo() { + return server.get(`/user/getAuthInfo`); + } + /** + * 初级认证 (认证第一步) + * @param {object} data + * @param {number} data.country_code + * @param {number} data.country_id // 区号id + * @param {string} data.realname + * @param {number} data.id_card //证件号 + * @param {number} data.type //证件类型 + * @param {string} data.birthday //出生日期 + * @param {string} data.address //地址 + * @param {string} data.city //城市 + * @param {string} data.extra //额外信息 + * @param {string} data.postal_code //邮政编码 + * @param {string} data.phone //手机号 + */ + static primaryAuth(data) { + return server.post(`/user/primaryAuth`, data); + } + /** + * 高级认证(认证第二步) + * @param {object} data + * @param {string} data.front_img //证件照正面 + * @param {string} data.back_img //证件照反面 + * @param {string} data.hand_img //手持证件照 + */ + static topAuth(data) { + return server.post(`/user/topAuth`, data); + } + + /** + * 登录记录 + */ + static getLoginLogs(data){ + return server.get(`/user/getLoginLogs`, { + params : data + }) + } + /** + * 邀请推广 + */ + static generalizeInfo(){ + return server.get(`/generalize/info`) + } + /** + * 推广记录 + */ + static generalizeList(data){ + return server.get(`/generalize/list`,{ + params : data + }) + } + +} + +export default Profile; \ No newline at end of file diff --git a/src/api/record.js b/src/api/record.js new file mode 100644 index 0000000..d2701f5 --- /dev/null +++ b/src/api/record.js @@ -0,0 +1,101 @@ +import server from './server' + +class Record { + /** + * fundHistory列表 + * @param {Object} data + */ + static fundList(data) { + + return server.get(`/coin/getAllList`, data); + + } + + /** + * 币币用户当前委托记录 + * @param {Object} data + */ + static openOrder(data) { + + return server.post(`/coin/orders/openOrder`, data); + + } + static conditionOrders(data) { + + return server.post(`/coin/orders/condition/openOrder`, data); + + } + + + /** +     * 币币用户取消接口 +     * @param {Object} data  +    */ +   static openOrderCancel(data) { + +       return server.post(`/coin/orders/cancel/${data}`); + +  } + + static orderConditionCancel(data) { + return server.post(`/coin/orders/condition/cancel/${data}`) + } + + /** +     * 币币用户筛选接口 +     * @param {Object} data  +    */ +   static openOrderfilter() { + +       return server.post(`/coin/orders/filter`); + +  } + + + /** + * 用户返佣记录 + * @param {Object} data + */ + static rewardList(data) { + + return server.post(`/member/rewardList`, data); + + } + + /** + * 币币用户历史委托 + * @param {Object} data + */ + static history(data) { + + return server.post(`/coin/orders/history`, data); + + } + + /** +     * 联系我们 +     * @param {Object} data  +    */ +   static contactUs(data) { +       return server.post(`/contactUs/save` , data); +  } + + /** +     * 取消订单 +     * @param {Object} data  +    */ +   static cancelActiveOrder(data) { +       return server.get(`/futuresOrders/cancelActiveOrder/${data}`); +  } + + /** +     * 取消订单 +     * @param {Object} data  +    */ +   static cancelById(data) { +       return server.get(`/futuresConditionOrders/cancelById/${data}`); +  } + +} + +export default Record; diff --git a/src/api/server/Socket.js b/src/api/server/Socket.js new file mode 100644 index 0000000..3e3cdea --- /dev/null +++ b/src/api/server/Socket.js @@ -0,0 +1,177 @@ +class Socket { + + constructor(link, ...args) { + // 初始化socket + if (link.constructor === WebSocket) { + this.socket = link; + } else { + this.socket = new WebSocket(link); + } + + // this.socket.binaryType = 'arraybuffer'; + + this.doOpen(); + + // 连接状态的标识符 + this.readyState = this.socket.readyState; + // 订阅/发布模型 + this._events = { + // 订阅的事件 : 发布的方法 + + }; + + // 定时验证的标识符 + this.heartBeatTimer = null; + + } + + // 执行socket并发布事件 + doOpen() { + + this.afterOpenEmit = []; + + // 执行socket连接 并初始化验证请求 + this.socket.addEventListener("open", evt => this.onOpen(evt)); + + // 接收socket数据 + this.socket.addEventListener("message", evt => this.onMessage(evt)); + + // 关闭socket连接 + this.socket.addEventListener("close", evt => this.onClose(evt)); + + // 请求发生错误 + this.socket.addEventListener("error", err => this.onError(err)); + + } + + // 发布后通知订阅者 + Notify(entry) { + // 检查是否有订阅者 返回队列 + const cbQueue = this._events[entry.Event]; + if (cbQueue && cbQueue.length) { + for (let callback of cbQueue) { + if (callback instanceof Function) callback(entry.Data); + } + } + } + + // 请求数据的方法 + onOpen(evt) { + + // 每隔20s检查连接 + // this.heartBeatTimer = setInterval(() => this.send({ + // 'cmd': 'ping', + // 'args': '' + // }), 20000); + + // 通知订阅 + this.Notify({Event: 'open', Data : evt}); + } + + /** + * 订阅所有的数据 + * @param {array|object} datas 订阅参数集合 + */ + send(datas) { + if (datas.constructor != Array) { + datas = [datas]; + } + + for (let item of datas) { + this.socket.send(JSON.stringify(item)); + } + } + + + onMessage(evt) { + + try { + + // 解析推送的数据 + const data = JSON.parse(evt.data); + + // 通知订阅者 + this.Notify({ + Event: 'message', + Data: data + }); + + } catch (err) { + console.error(' >> Data parsing error:', err); + + // 通知订阅者 + this.Notify({ + Event: 'error', + Data: err + }); + } + } + + // 添加事件监听 + on(name, handler) { + this.subscribe(name, handler); + } + + // 取消订阅事件 + off(name, handler) { + this.unsubscribe(name, handler); + } + + // 订阅事件的方法 + subscribe(name, handler) { + if (this._events.hasOwnProperty(name)) { + this._events[name].push(handler); // 追加事件 + } else { + this._events[name] = [handler]; // 添加事件 + } + } + + // 取消订阅事件 + unsubscribe(name, handler) { + + let start = this._events[name].findIndex(item => item === handler); + + // 删除该事件 + this._events[name].splice(start, 1); + + } + + checkOpen() { + return this.readyState >= 2; + } + + onClose(evt) { + this.Notify({Event: 'close', Data : evt}); + } + + + onError(err) { + this.Notify({Event: 'error', Data : err}); + } + + emit(data) { + return new Promise((resolve) => { + this.send(JSON.stringify(data)); + this.on('message', function (data) { + resolve(data); + }); + }); + } + + doClose() { + this.socket.close(); + } + + destroy() { + if (this.heartBeatTimer) { + clearInterval(this.heartBeatTimer); + this.heartBeatTimer = null; + } + this.doClose(); + this._events = {}; + this.readyState = 0; + this.socket = null; + } +} + +export default Socket diff --git a/src/api/server/convention.js b/src/api/server/convention.js new file mode 100644 index 0000000..a387594 --- /dev/null +++ b/src/api/server/convention.js @@ -0,0 +1,168 @@ +/** + * axios的惯例配置 + * + * @author lautin + * @created 2019-11-21 21:18:25 + */ + +// import Qs from 'qs'; +import http from 'http'; +import https from 'https'; + +// 这些是用于发出请求的可用配置选项。其中url为必选项,method默认值为GET +const config = { + // url是相对于服务器根地址的路径 + url: '', + + method: 'get', // default + + // baseURL将被前缀为url,除非url是绝对的。 + // 将baseURL设置为传递相对url的axios实例是很方便的 + baseURL: '', + + // `transformRequest`允许在请求数据发送到服务器之前对其进行修改 + // 这只适用于请求方法`PUT POST PATCH 和 DELETE ` + // 数组中的最后一个函数必须返回一个!!字符串!!或Buffer的一个实例ArrayBuffer, + // FormData或Stream 你可以修改headers对象。 + // transformRequest: [function (data, headers) { + // // 此处写下你想如何转化数据 + // return data; + // }], + + // `transformResponse`允许更改之前的响应数据 它被传递到then/catch + transformResponse: [function (data) { + // 此处写下你想如何转化数据 + + return data; + + }], + + // 要发送的自定义头 + headers: { + 'X-Requested-With': 'XMLHttpRequest' + }, + + // 'params'是与请求一起发送的URL参数 必须是一个普通对象或URLSearchParams对象 + params: { + // ID: 12345 + }, + + // 一个可选函数,负责序列化params,将对象转化为urlencode数据 + // (e.g. https://www.npmjs.com/package/qs, http://api.jquery.com/jquery.param/) + // paramsSerializer: function (params) { + // return Qs.stringify(params, { + // arrayFormat: 'brackets' + // }) + // }, + + // data是作为请求体发送的数据 只适用于请求方法`PUT POST 和 PATCH` + // 当没有设置transformRequest时,必须是以下类型之一: + // -字符串,普通对象,ArrayBuffer,ArrayBufferView,URLSearchParams + // -只支持浏览器FormData, File, Blob + // -只有节点:流,缓冲区 + data: { + + }, + + // 指定请求超时之前的毫秒数。如果请求花费的时间超过timeout将被中止。 + timeout: 10, // default is `0` (no timeout) + + //表示有跨站点访问控制请求时应该使用凭证 + withCredentials: false, // default + + // adapter允许自定义处理请求,这使得测试更加容易。 + // 返回一个Promise并提供一个有效的响应(参见lib/adapter/README.md)。 + // adapter: function (config) { + // /* ... */ + // }, + + // auth表示应该使用`HTTP Basic auth`,并提供凭据。 + // 这将设置一个"授权"标题,覆盖任何现有的 + // '授权'自定义标头,你已经设置使用'标头'。 + // 请注意,只有HTTP基本认证是可配置的通过这个参数。 + // 对于不记名令牌等,使用"授权"自定义标头代替。 + // auth: { + // username: 'janedoe', + // password: 's00pers3cret' + // }, + + // 服务器响应的数据类型 选项有: + //'arraybuffer', 'document', 'json', 'text', 'stream' + // 只支持浏览器:"blob" + responseType: 'json', // default + + // 用于解码响应的编码 + // 注意:对于'stream'或客户端请求的'responseType'被忽略 + responseEncoding: 'utf8', // default + + // `xsrfCookieName` is the name of the cookie to use as a value for xsrf token + xsrfCookieName: 'XSRF-TOKEN', // default + + // `xsrfHeaderName` is the name of the http header that carries the xsrf token value + xsrfHeaderName: 'X-XSRF-TOKEN', // default + + // ' onUploadProgress '允许处理上传的进程事件 + onUploadProgress: function (progressEvent) { + // Do whatever you want with the native progress event + }, + + // ' onDownloadProgress '允许处理下载的进度事件 + onDownloadProgress: function (progressEvent) { + // Do whatever you want with the native progress event + }, + + // 定义http响应内容的最大字节数 + maxContentLength: 2000, + + // `validateStatus` defines whether to resolve or reject the promise for a given HTTP response status code. + // If `validateStatus` returns `true` (or is set to `null` + // or `undefined`), the promise will be resolved; + // otherwise, the promise will be rejected. + validateStatus: function (status) { + // 返回2开头的状态码才进入resolve 否则都按rejected处理 + return status >= 200 && status < 300; // default + }, + + // 定义在node.js中跟随的最大重定向数。 + // 如果设置为0,则不会遵循重定向。 + maxRedirects: 5, // default + + // `socketPath` defines a UNIX Socket to be used in node.js. + // e.g. '/var/run/docker.sock' to send requests to the docker daemon. + // Only either `socketPath` or `proxy` can be specified. + // If both are specified, `socketPath` is used. + socketPath: null, // default + + // `httpAgent` and `httpsAgent` define a custom agent(定制代理) to be used when performing(体现) http and https requests, respectively(独立), in node.js. This allows options to be added like `keepAlive` that are not enabled by default. + httpAgent: new http.Agent({ + keepAlive: true + }), + + httpsAgent: new https.Agent({ + keepAlive: true + }), + + // 'proxy' defines the hostname and port of the proxy server. + // You can also define your proxy using the conventional `http_proxy` and + // `https_proxy` environment variables. If you are using environment variables + // for your proxy configuration, you can also define a `no_proxy` environment + // variable as a comma-separated list of domains that should not be proxied. + // Use `false` to disable proxies, ignoring environment variables. + // `auth` indicates that HTTP Basic auth should be used to connect to the proxy, and + // supplies credentials. + // This will set an `Proxy-Authorization` header, overwriting any existing + // `Proxy-Authorization` custom headers you have set using `headers`. + // proxy: { + // host: '127.0.0.1', + // port: 9000, + // auth: { + // username: 'mikeymike', + // password: 'rapunz3l' + // } + // }, + + // `cancelToken` specifies a cancel token that can be used to cancel the request + // (see Cancellation section below for details) + // cancelToken: new CancelToken(function (cancel) {}) +} +export default config; diff --git a/src/api/server/index.js b/src/api/server/index.js new file mode 100644 index 0000000..2f3ef93 --- /dev/null +++ b/src/api/server/index.js @@ -0,0 +1,198 @@ +/** + * 初始化请求的封装 + * + * @author lautin + * @created 2019-11-21 14:54:43 + */ + +import axios from 'axios'; +import qs from 'qs'; + +import { + Message, + Loading +} from 'element-ui' + + +// 加入状态管理 +// import store from '../../store' + +// 加入进度条 +// import NProgress from 'nprogress' // nprogress插件 +// import 'nprogress/nprogress.css' // nprogress样式(必须) + + +// 加载惯例配置 +import settings from './convention'; + +// 设置语言: 默认ua -> 用户设置 -> 参数指定 +// let browserLang = navigator.language.includes('zh') ? 'cn' : 'en'; // ua设置 +let browserLang='en' +let lang = localStorage.lang || browserLang; // + +let querystring = location.search.slice(1); +if (querystring.includes('lang')) { + lang = qs.parse(querystring)['lang']; +} + +// 用户认证 +let token = localStorage.getItem("token"); +let auth = { authorization: `bearer ${token}` } || {}; + +if(lang=='cn'){ + lang='zh-CN' +}else if(lang=='tw'){ + lang='zh-TW' +}else if(lang=='ukr'){ + lang='uk' +} +// 设置头信息 +const headers = Object.assign({ + 'X-Requested-With': 'XMLHttpRequest', + lang, +}, auth); + +console.log(process.env.NODE_ENV) +// 初始化配置 +Object.assign(settings, { + + // api请求根地址 打包使用完整地址 调试使用本地服务器代理 避免跨域 + // baseURL: process.env.NODE_ENV == 'production' ? 'http://qkladmin2.ruanmeng.top/api/' : '/api/', + // baseURL: process.env.NODE_ENV == 'production' ? 'https://guanli.coin.amatak.net/api/' : '/api/', + baseURL: process.env.NODE_ENV == 'production' ? 'https://bbxr.bxrcos.com/api/' : '/api/', + // baseURL: 'https://aaccdd.kixcoin.org/api/' , + // baseURL: 'https://guanli.coin.amatak.net/api/', + // baseURL: 'https://api.hipc.world/', + + // 加载超时限定5s + timeout: 10000, + + headers, + + // 跨站请求必要凭证 + // withCredentials: true, + +}); + +// 创建服务请求对象 +const server = axios.create(settings); + +const exclude = [ + `getHistoryEntrust`, + `getConditionEntrust`, + `getCurrentEntrust`, + `getUserCoinBalance`, + `getKline`, + `getEntrustTradeRecord`, + `floor`, + `subscribeRecords` +]; + +let loading = null; + +// request拦截器 +server.interceptors.request.use( + + config => { + let token = localStorage.getItem("token"); + config.headers["authorization"] = `bearer ${token}` + // 剔除部分高频接口 主要是交易时的后台操作 + if (!exclude.find(item => config.url.includes(item))) { + if (!config.config || config.config.loading) { + loading = Loading.service({ + lock: true, + text: 'Loading', + spinner: 'el-icon-loading', + background: 'rgba(0, 0, 0, 0.5)' + }); + } + } + return config; + }, + + error => { + // do something with request error + console.log(error) // for debug + Promise.reject(error) + } +) + +// respone拦截器 +server.interceptors.response.use( + + // 请求状态成功 + response => { + + // 如果有加载的loading则关闭 + if (loading) loading.close(); + + let { code, message, data } = response.data; + // console.log(code); + if(code==4001){ + sessionStorage.setItem('COde',code) + } + + if (code != 200 && code != 1021) { + + switch (code) { + case 1003: // 登陆失效 + message = "登录失效,请重新登录!"; + // 清除session + // localStorage.removeItem("auth"); + // localStorage.removeItem("token"); + // location.href = "/" + break; + case 1034: // 请设置交易密码 + message = "请先设置交易密码!"; + break; + default: // 通用错误提示 + + } + if(code!=1051 && code!=1003){ + Message({ + type: 'error', + duration: 2 * 1000, + message, + }); + } + + // 进入catch + if(code==4002){ + throw (code); + }else{ + throw new Error(message); + } + } + + return data; + + }, + + // 请求发生错误 + error => { + if (loading) loading.close(); + + let message; + if (error.message.includes("timeout")) { + message = "Connection timed out"; + } else { + message = error.message; + } + + // 错误提示 + // Message({ + // type: 'error', + // duration: 2 * 1000, + // message, + // callback() { + // // 进入catch + // throw new Error(error); + // } + // }); + + return Promise.reject(error) + } +) + +// request方法中的配置会合并到server中 +export default server; diff --git a/src/api/setting.js b/src/api/setting.js new file mode 100644 index 0000000..5d134dd --- /dev/null +++ b/src/api/setting.js @@ -0,0 +1,208 @@ +import server from './server' +class Setting { + // 获取用户信息 + static getUserInfo() { + return server.get(`/user/getUserInfo`); + } + /** + * 修改用户信息 + * @param {{username:string,avatar:'url'}} data + */ + static updateUserInfo(data) { + return server.post(`/user/updateUserInfo`, data); + } + /** + * 关闭手机号/邮箱/谷歌验证 + * @param {object} data + * @param {number} data.type 1:手机 2:邮箱 3:谷歌 + * @param {number} data.sms_code 手机验证码 + * @param {number} data.email_code 邮箱验证码 + * @param {number} data.google_code 谷歌验证码 + */ + static disableSmsEmailGoogle(data) { + return server.post(`/user/disableSmsEmailGoogle`, data); + } + /** + * 开启手机号/邮箱/谷歌验证 + * @param {object} data + * @param {number} data.type 1:手机 2:邮箱 3:谷歌 + * @param {number} data.sms_code 手机验证码 + * @param {number} data.email_code 邮箱验证码 + * @param {number} data.google_code 谷歌验证码 + */ + static enableSmsEmailGoogle(data) { + return server.post(`/user/enableSmsEmailGoogle`, data); + } + /** + * 发送邮箱验证码 + * @param {object} data + * @param {string} data.email 邮箱号 + */ + static sendBindEmailCode(data) { + return server.post(`/user/sendBindEmailCode`, data); + } + /** + * 登录二次验证开关 + */ + static switchSecondVerify() { + return server.get(`/user/switchSecondVerify`); + } + /** + * 账号安全信息 + */ + static accountSecurity() { + return server.get(`/user/security/home`); + } + static withdrawalPassword(data) { + return server.post(`/user/withdrawalPassword`, data); + } + /** + * 设置或重置交易密码 + * @param {object} data + * @param {string} data.payword + * @param {string} data.payword_confirmation + * @param {string} data.sms_code + * @param {string} data.email_code + * @param {string} data.google_code + */ + static setOrResetPaypwd(data) { + return server.post(`/user/setOrResetPaypwd`, data); + } + /** + * 设置或重置登录密码 + * @param {object} data + * @param {string} data.password + * @param {string} data.password_confirmation + * @param {string} data.sms_code + * @param {string} data.email_code + * @param {string} data.google_code + */ + static updatePassword(data) { + return server.post(`/user/updatePassword`, data); + } + /** + * 获取验证码 + * @param {object} data + * @param {number} data.type + */ + static getCode(data) { + return server.post(`/user/getCode`, data); + } + /** + * 绑定邮箱 + * @param {object} data + * @param {string} data.email + * @param {string} data.email_code + * @param {string} data.sms_code + * @param {string} data.google_code + */ + static bindEmail(data) { + return server.post(`/user/bindEmail`, data); + } + + /** + * 绑定手机 + * @param {object} data + * @param {string} data.phone + * @param {string} data.country_code - 手机区号 + * @param {string} data.sms_code + * @param {string} data.email_code + * @param {string} data.google_code + */ + static bindPhone(data) { + return server.post(`/user/bindPhone`, data); + } + + /** + * 解绑邮箱 + * @param {object} data + * @param {string} data.sms_code + * @param {string} data.email_code + * @param {string} data.google_code + */ + static unbindEmail(data) { + return server.post(`/user/unbindEmail`, data); + } + + /** + * 解绑手机 + * @param {object} data + * @param {string} data.sms_code + * @param {string} data.email_code + * @param {string} data.google_code + */ + static unbindPhone(data) { + return server.post(`/user/unbindPhone`, data); + } + + /** + * 忘记登录密码 - 账号确认 + * @param {object} data + * @param {string} data.account + */ + static forgetPasswordAttempt(data) { + return server.post(`/user/forgetPasswordAttempt`, data); + } + /** + * 忘记登录密码 - 提交 + * @param {object} data + * @param {string} data.account + * @param {string} data.email_code + * @param {string} data.google_code + * @param {string} data.password + * @param {string} data.password_confirmation + */ + static forgetPassword(data) { + return server.post(`/user/forgetPassword`, data); + } + + /** + * 获取谷歌密钥 + */ + static getGoogleToken(data) { + return server.get(`/user/getGoogleToken`, data); + } + /** + * 绑定谷歌 + * @param {object} data + * @param {string} data.google_token + * @param {string} data.google_code + * @param {string} data.sms_code + * @param {string} data.email_code + */ + static bindGoogleToken(data) { + return server.post(`/user/bindGoogleToken`, data); + } + /** + * 解绑谷歌 + * @param {object} data + * @param {string} data.sms_code + * @param {string} data.google_code + * @param {string} data.email_code + */ + static unbindGoogleToken(data) { + return server.post(`/user/unbindGoogleToken`, data); + } + /** + * 发送绑定手机短信验证码 + * @param {object} data + * @param {string} data.phone + * @param {string} data.country_code + */ + static sendBindSmsCode(data) { + return server.post(`/user/sendBindSmsCode`, data); + } + /** + * 在线获取验证码 + * @param {object} data + * @param {string} data.type 1:手机 2:邮箱 + */ + static getCode(data) { + return server.post(`/user/getCode`, data); + } + + + +} + +export default Setting; \ No newline at end of file diff --git a/src/api/subscride.js b/src/api/subscride.js new file mode 100644 index 0000000..2c7edad --- /dev/null +++ b/src/api/subscride.js @@ -0,0 +1,35 @@ + +import server from './server'; + +class Subscribe { + /** + * 请求数据 + */ + static subscribeTokenList(data){ + return server.post('/user/subscribeTokenList',data) + } + static activity(){ + return server.get('/subscribe/activity') + } + static subscribe(data){ + return server.post('/user/subscribe',data) + } + /** + * 提交数据 + * @param {object} data + * @param {string} data.amount + * @param {string} data.coin_name + */ + static subscribeNow(data){ + return server.post('/user/subscribeNow',data) + } + /** + * 申购码 + * @param {Object} data + */ + static changePurchaseCode(data) { + return server.post(`/user/changePurchaseCode`, data); + } +} + +export default Subscribe; \ No newline at end of file diff --git a/src/api/wallet.js b/src/api/wallet.js new file mode 100644 index 0000000..d7b92bb --- /dev/null +++ b/src/api/wallet.js @@ -0,0 +1,164 @@ + +import server from './server'; + +class Wallet { + + // paypal账号 + static paypal() { + return server.get(`/user/paypal`); + } + // 提币记录 + static withdrawalRecord() { + return server.post(`/user/withdrawalRecord`); + } + + // PayPal支付 + static rechargeManualPost(data) { + return server.post(`/user/rechargeManualPost`, data); + } + // PayPal充值记录 + static rechargeManualLog() { + return server.post(`/user/rechargeManualLog`); + } + + // 充值记录 + static depositHistory() { + return server.post(`/user/depositHistory`); + } + + // 钱包划转记录 + static transferRecord() { + return server.post(`/user/transferRecord`); + } + // 申购记录 + static subscribeRecords() { + return server.post(`/user/subscribeRecords`); + } + + // 个人资产管理 + static personalAssets() { + return server.post(`/user/personalAssets`); + } + + // 各个币种的资产 + static fundAccount(data) { + return server.post(`/user/fundAccount`, data); + } + + // 代币以及对应的余额 + static tokenList(data) { + return server.post(`/user/tokenList`, data); + } + + // 资金划转 + static fundsTransfer(data) { + return server.post(`/user/fundsTransfer`, data); + } + + // 生成充值地址 + static walletImage(data) { + return server.post(`/user/walletImage`, data); + } + + // 提交充值 + static recharge(data) { + return server.post(`/user/recharge`, data); + } + + // 提交提币 + static withdraw(data) { + return server.post(`/user/withdraw`, data); + } + + // 提币地址管理 + static getUserWithdrawAdress(data) { + return server.post(`/user/withdrawalAddressManagement`, data); + } + + // 编辑提币地址 + static editUserWithdrawAdress (data) { + return server.post(`/user/editUserAdress`, data); + } + + // 删除提币地址 + static delUserWithdrawAdress() { + return server.post(`/user/withdrawalAddressManagement`, data); + } + + // 添加提币地址 + static addUserWithdrawAdress(data) { + return server.post(`/`, data); + } + + static withdrawalSelectAddress() { + return server.post(`/user/withdrawalSelectAddress`); + } + + static addWithdrawAddress(data) { + return server.post(`/user/withdrawalAddressAdd`, data); + } + + + // 查询币种余额 + static withdrawalBalance(data) { + return server.post(`/user/withdrawalBalance`, data); + } + + // 修改用户地址 + static withdrawalAddressModify(data) { + return server.post(`/user/withdrawalAddressModify`, data); + } + + // 删除币种地址 + static withdrawalAddressDeleted(data) { + return server.post(`/user/withdrawalAddressDeleted`, data); + } + // 生成钱包地址 + static createWalletAddress() { + return server.post(`/user/createWalletAddress`); + } + + // 获取转换列表 + static accounts(data){ + return server.get(`/wallet/accounts`, {params:data}) + } + // 获取子账户类别 + static accountPairList(data){ + return server.get('/wallet/accountPairList',{params:data}) + } + // 获取转换币种列表 + static coinList(data){ + return server.get('/wallet/coinList',{params:data}) + } + // 获取余额 + static getBalance(data){ + return server.get('/wallet/getBalance',{params:data}) + } + // 资金划转 + static transfer(data){ + return server.post('/wallet/transfer',data) + } + // 合约资金列表 + static accountList(data){ + return server.get('/contract/accountList',{params:data}) + } + // 合约资金流水 + static accountFlow(data){ + return server.get('/contract/accountFlow',{params:data}) + } + // 撤销订单 + static cancelWithdraw(data){ + return server.post('/user/cancelWithdraw ',data,{loading:true}) + } + static advices(data){ + return server.get('/user/advices',{params:data}) + } + static adviceDetail(data){ + return server.get('/user/adviceDetail',{params:data}) + } + static addAdvice(data){ + return server.post('/user/addAdvice',data,{loading:true}) + } +} + +export default Wallet; diff --git a/src/assets/fonts/opensans/OpenSans-Bold.ttf b/src/assets/fonts/opensans/OpenSans-Bold.ttf new file mode 100644 index 0000000..fd79d43 Binary files /dev/null and b/src/assets/fonts/opensans/OpenSans-Bold.ttf differ diff --git a/src/assets/fonts/opensans/OpenSans-Regular.ttf b/src/assets/fonts/opensans/OpenSans-Regular.ttf new file mode 100644 index 0000000..db43334 Binary files /dev/null and b/src/assets/fonts/opensans/OpenSans-Regular.ttf differ diff --git a/src/assets/fonts/overpass/Overpass-Bold.woff2 b/src/assets/fonts/overpass/Overpass-Bold.woff2 new file mode 100644 index 0000000..1af173d Binary files /dev/null and b/src/assets/fonts/overpass/Overpass-Bold.woff2 differ diff --git a/src/assets/fonts/overpass/Overpass-Light.woff2 b/src/assets/fonts/overpass/Overpass-Light.woff2 new file mode 100644 index 0000000..1e0f6e9 Binary files /dev/null and b/src/assets/fonts/overpass/Overpass-Light.woff2 differ diff --git a/src/assets/fonts/overpass/Overpass-Regular.woff2 b/src/assets/fonts/overpass/Overpass-Regular.woff2 new file mode 100644 index 0000000..668de9a Binary files /dev/null and b/src/assets/fonts/overpass/Overpass-Regular.woff2 differ diff --git a/src/assets/fonts/overpass/Overpass-SemiBold.woff2 b/src/assets/fonts/overpass/Overpass-SemiBold.woff2 new file mode 100644 index 0000000..cb75330 Binary files /dev/null and b/src/assets/fonts/overpass/Overpass-SemiBold.woff2 differ diff --git a/src/assets/i18n/cn/address.js b/src/assets/i18n/cn/address.js new file mode 100644 index 0000000..1c088b4 --- /dev/null +++ b/src/assets/i18n/cn/address.js @@ -0,0 +1,45 @@ +const Address = { + management:'地址管理', + addAddress:'添加地址', + filter:'筛选器', + all:'所有地址', + white:'白名单地址', + nonWhite:'非白名单地址', + search:'搜索资产', + asset:'资产', + label:'标签', + address:'地址', + memoTag:'Memo/备注', + whitelist:'是否白名单', + action:'操作', + addWhiteLs:'添加白名单', + removeWhiteLs:'移除白名单', + confirmAddress:`您是否确认将此地址添加到白名单?`, + edit:'编辑地址', + delete:'删除地址', + withdrawAddress:'提币地址', + lableAddress:'为此地址添加标签', + whitelsAddress:'添加此地址至白名单', + submit:'提交', + cancel:'取消', + removeTips:'你确定要把这个地址从白名单中删除吗?', + deleteTips:'你确认要删除这个地址吗?', + google:'谷歌验证', + email:'邮件验证', + phone:'短信验证', + editAddress:'编辑地址', + verification:'验证', + confirm:'确认', + selectAsset:'选择资产', + enterAddress:'输入地址', + enterLabel:'输入标签', + selectCurrency:'请选择资产', + wrongAddress:'请输入正确格式的地址 ', + Yes:'是', + No:'否', + successfully:'地址添加成功', + enterAddressTips:'请输入地址', + enterLabelTips:'请输入标签', + enterMemo:'请输入Memo或选择No Memo。', +} +export default Address \ No newline at end of file diff --git a/src/assets/i18n/cn/application.js b/src/assets/i18n/cn/application.js new file mode 100644 index 0000000..e0fff56 --- /dev/null +++ b/src/assets/i18n/cn/application.js @@ -0,0 +1,53 @@ +const Application = { + form: "项目上币申请表", + sendUser: "项目发起方", + sendUserEn: "币种英文名", + sendUserCn: "币种中文名", + contactPosition: "联系人及职位", + phone: "联系人电话", + tokenPrice: "市价", + email: "联系人邮箱", + address: "项目注册地", + mechanism: "项目投资机构", + personal: "个人", + currencyCode: "币种代码", + symbol: "符号", + currencyIdentification: "币种标识", + format: "支持{name}格式,文件小于{num}", + fundraisingDate: "募资日期", + officialWebsite: "官方网站", + whitePaperLinks: "白皮书链接", + noLink: "若无链接,请文末上传附件", + total_issue: "币种总发行量", + currencyCirculation: "币种流通量", + currencyAllocationRatio: "币种分配比例", + numberOfCurrencyHolders: "持币人数", + tradingPlatform: "已上线交易平台", + privatePlacement: "私募", + publicOfferingPrice: "公募价格", + company: "请附上货币单位", + coinType: "币种区块网络类型", + currencyIssueDate: "币种发行日期", + blockBrowser: "区块浏览器", + officialAddress: "官方钱包地址", + contractAddress: "合约地址", + link: "链接", + budget: "上币费预算", + unit: "为单位", + ofTokens: "上币后市场活动项目代币数量", + chineseCurrency: "币种中文介绍", + enCurrency: "币种英文介绍 ", + remarks: "备注", + uploadWhitePaper: "上传白皮书", + pleaseUpload: "请上传白皮书", + recommendationCode: "推荐人姓名机构及推荐码", + ifSo: "若有", + affirmsThat: "申明: 我在此确认上述所有信息均真实,完整和准确。 我将在经济上和法律上承担提供虚假信息的责任", + iKnow: "我知道了", + reSubmit: "重新提交", + pleaseConfirm: "请确认以上均为真实信息", + pleaseEnter:"请输入", + upLoadSuccess:"上传成功" +} + +export default Application \ No newline at end of file diff --git a/src/assets/i18n/cn/assets.js b/src/assets/i18n/cn/assets.js new file mode 100644 index 0000000..d233d08 --- /dev/null +++ b/src/assets/i18n/cn/assets.js @@ -0,0 +1,109 @@ +const assets = { + allBtn:`全部`, + assets:`资产`, + totalVal:`所有资产价值`, + show:`显示数字`, + account_exchange:`现货账户`, + account_forex:`外汇合约账户`, + account_crypto:`永续合约账户`, + account_exchangeTab:`现货账户`, + account_contractsTab:`合约账户`, + withdrawalLimit:`24小时提币限额:`, + increase:`增加`, + transfer:`内部资金划转`, + history:`划转历史`, + from:`从`, + to:`至`, + asset:`资产`, + amount:`划转数量`, + maximum:`全部`, + enterAmount:`输入划转数量`, + proceed:`确定划转`, + avaliable:`余额`, + all:`所有资产`, + hideZero:`隐藏0余额资产`, + showZero:`展示0余额资产`, + assetTab:`资产`, + accountTotal:`总资产`, + availableTab:`可用余额`, + hold:`冻结余额`, + BTC_valuation:`BTC 估值`, + USD_valuation:`USD 估值`, + action:`操作`, + deposit:`充值`, + withdraw:`提币`, + trade:`交易`, + depositAddress:`充值地址`, + depositHistory:`充值记录`, + allHistory:`所有历史记录`, + date:`日期`, + address_hash:`地址/哈希`, + amountTab:`数量`, + progress:`进度`, + type:`类别`, + status:`状态`, + instructions:`充值说明`, + QRCode:`充值地址二维码`, + withdrawal:`提币`, + withdrawalLimit24h:`24小时提币限额`, + withdrawalAddress:`提币地址`, + enterAddress:`请输入提币地址`, + addressLs:`地址列表`, + addressLs_white:'是', + addressLs_noWhite:'否', + withdrawAmount:`提币数量`, + available:`可用余额`, + fee:`手续费`, + enterAmount:`请输入提币数量`, + receive:`实际到账`, + saveAddress:`保存此地址`, + addLable:`为此地址添加标签`, + enterLabel:`请输入标签`, + whiteLs:`将此地址添加至白名单`, + submit:`提交`, + withdrawalHistory:`提币记录`, + feeTab:`提币手续费`, + withdrawalInstructions:`提币说明`, + checkAddress:`请仔细检查并输入正确的提币钱包地址。`, + sendAddress:`发送不对应的数字货币到钱包地址会造成永久性的损失。`, + withdrawalFee:`提币手续费将从提币数量中扣除。`, + whiteLsTab:`是否白名单`, + label:`标签`, + address:`地址`, + memo_tag:`Memo/备注`, + back:`返回`, + addAddress:`添加新地址`, + transferSuccess:'划转成功', + preloaded:'预充值', + autoRecharge:'自动充值', + artificialAdd:'人工添加', + auditFailure:'人工审核失败', + copySucceed:'复制成功', + copyFailed:'复制失败', + addressEmpty:'请输入提币地址', + wrongAddress:'请确保输入的地址正确无误,我们检测到您输入的地址格式非常规。 如果您有任何疑问,请联系客服。', + quantityEmpty:'请输入提币数量', + numberWithdrawals:'提币数量不可高于可用余额', + passwordEmpty:'请输入交易密码', + moneySuccess:'提币成功', + forex:'外汇合约', + crypto:'永续合约', + accountBalance:'账户余额', + availableBalance:'可用余额', + positionMargin:'仓位保证金', + marginBalance:'保证金余额', + unrealizsedPL:'未实现盈亏', + orderMargin:'委托保证金', + marginUsed:'保证金使用率', + details:'详情', + leverage:'杠杆', + pwd:'请输入密码', + withdrawl:'提币', + transactionPwd:'交易密码', + minimun:'最低', + inputMemo:'请输入Memo', + minNumWithdraw:'提币数量不能低于最小提币限额', + enterMemo:'请输入Memo或选择No Memo。', +} + +export default assets \ No newline at end of file diff --git a/src/assets/i18n/cn/commom.js b/src/assets/i18n/cn/commom.js new file mode 100644 index 0000000..7e62c39 --- /dev/null +++ b/src/assets/i18n/cn/commom.js @@ -0,0 +1,130 @@ +const commom = { + // header + "option" : "期权交易", + "exchange" : "币币交易", + "markets" : "行情", + + "blogs" : "博客", + "news" : "行业资讯", + "helps" : "帮助中心", + "service" : "服务条款", + + + "contactUs" : "联系我们", + + "sign_in" : "登录", + "sign_up" : "注册", + + noRecord: `暂无记录`, + getCode: `获取验证码`, + + 'help1' : `Forex Contract Guide`, + 'help2' : `Contract Specifications`, + + // wsq + startTime: '开始时间', + to: '至', + confirmBtn:'确认', + cancelBtn:'取消', + cancel: '取消委托', + endTime: '结束时间', + export: `导出`, + filter: '筛选器', + all:'不限', + // allCoin: '所有交易对', + // allDirection: '所有方向', + // allType: '所有类型', + + search: '检索', + reset: '重置', + sell: '卖', + buy: '买', + limit: '限价委托', + market: '市价委托', + hideAll: '隐藏所有已取消委托', + canceled: '已取消', + waiting: '待撮合', + triggered:'已触发', + processing: '撮合中', + completed: '已完成', + available_phone:'请输入正确的手机号码', + available_email:'请输入正确的邮箱', + codeSent:'验证码已发送', + captcha:'验证码错误', + buyIn:`买入`, + sellOut:`卖出`, + limitOrder:`限价单`, + marketOrder:`市价单`, + + enterValid:'请输入有效的手机号码或电子邮件!', + enterValidEmail:'请输入正确的邮箱地址', + enterValidPhone:'请输入有效的手机号码!', + enterAccount:'请输入账户', + enterEmail:'请输入正确的邮箱地址', + enterPhone:'请输入手机号码', + enterPwd:'请输入密码', + + + passwordRegular:'密码必须由8至15位数字与字母组成(必须同时包含数字与字母,也可使用符号)。', + newPassword:'请输入新密码', + confirmNewPassword:'请输入确认的新密码', + + enterGoogleCode:'请输入谷歌验证码', + enterEmailCode:'请输入邮箱验证码', + enterSMSCode:'请输入短信验证码', + + + enterVerCode:`请输入验证码`, + exportFile:'请点击确认以导出文件。', + + submit:'提交', + + newzone:"打新专区", + college:"学院", + goTo:"前往", + logOut:"退出登录", + homePage:"首页", + currencyApplication:"上币申请", + apply:"申购", + accountInformation:"账户信息", + myWallet:"我的钱包", + commissionOrder:"委托订单", + securitySetting:"安全设置", + wallet:"钱包", + allAssets:"所有资产", + contractaccount:"合约账户", + transferFunds:"资金划转", + rechargeWithdraw:"充值提币", + order:"订单", + spotConsignment:"现货委托", + optionOrders:"期权订单", + perpetualContract:"永续合约", + foreignContract:"外汇合约", + notCertified:"未认证", + notData:"暂无数据", + + assets:"资产", + myCommission:"我的返佣", + addressManagement:"地址管理", + auth:"实名认证", + invitationReward:"邀请奖励", + visitHistory:"访问记录", + noviceTutorial:"新手教程", + tradingStrategy:"交易策略", + industryResearch:"行业研究", + blockchainDictionary:"区块链词典", + mediaCoverage:"媒体报道", + selectFile:"选择文件", + upload:"上传", + delete:"删除", + tooBig:"文件尺寸过大,不得超过", + errorType:"文件类型错误", + resend:"重新发送", + sms:"短信", + email:"邮箱", + sendSuccess:"验证码发送成功", + retransmission:"重发" +} + + +export default commom \ No newline at end of file diff --git a/src/assets/i18n/cn/contact.js b/src/assets/i18n/cn/contact.js new file mode 100644 index 0000000..13020b6 --- /dev/null +++ b/src/assets/i18n/cn/contact.js @@ -0,0 +1,18 @@ +const Contact = { + contact:"联系我们", + help:"需要任何帮助请联系我们", + fullName:"全名", + enterFullName:"请输入全名", + email:"邮箱", + enterEmail:"请输入邮箱地址", + consultingService:"咨询项目", + pleseSelect:"请选择", + info:"信息", + enterInfo:"请输入信息", + contactInformation:"联系信息", + routineConsultation:"常规咨询", + customerService:"客户服务", + mediaCooperation:"媒体合作" +} + +export default Contact; \ No newline at end of file diff --git a/src/assets/i18n/cn/contactUs.js b/src/assets/i18n/cn/contactUs.js new file mode 100644 index 0000000..0b2089b --- /dev/null +++ b/src/assets/i18n/cn/contactUs.js @@ -0,0 +1,26 @@ +const ContactUs = { + fullName:'全名', + phone:'手机号码', + email:'邮箱', + subject:'咨询项目', + msg:'信息', + + contactUs:'联系我们', + help:'需要任何帮助请联系我们', + contactInfo:'联系信息', + inquiry:'常规咨询:', + support:'客户服务:', + media:'媒体合作:', + submit:'提交', + successfully:'提交成功', + msgTips:'请输入您的留言信息', + fullNameTips:'请输入全名', + emailTips:'请输入您的邮箱地址', + projectTips:`请选择咨询项目`, + enterFullName:`请输入全名`, + enterEmail:`请输入邮箱地址`, + enterSubject:`请选择咨询项目`, + enterMsg:`请输入信息`, +} + +export default ContactUs \ No newline at end of file diff --git a/src/assets/i18n/cn/contractsAccount.js b/src/assets/i18n/cn/contractsAccount.js new file mode 100644 index 0000000..36e9be4 --- /dev/null +++ b/src/assets/i18n/cn/contractsAccount.js @@ -0,0 +1,37 @@ +const contracts = { + title: `合约账户`, + forexs: `外汇合约账户`, + cryptos: `永续合约账户`, + contract: `合约委托记录`, + forex: `外汇合约`, + crypto: `永续合约`, + accountBalance: `账户余额`, + availableBalance: `可用余额`, + positionMargin: `仓位保证金`, + marginBalance: `保证金余额`, + unrealizsed: `未实现盈亏`, + orderMargin: `委托保证金`, + transfer: `资金划转`, + marginUsed: `保证金使用率`, + leverage: `杠杆`, + positions: `未平仓合约`, + contactName: `合约名称`, + contractsOpen: `未平仓合约数`, + direction: `方向`, + realised: `已实现盈亏`, + long: `做多`, + short: `做空`, + history: `账户余额记录`, + date: `日期`, + type: `类型`, + amount: `数量`, + deposit: `转入`, + withdrawal: `转出`, + open: `开仓手续费`, + close: `平仓手续费`, + funding: `资金流转`, + takeover: `仓位接管`, + realizedPNL: `已实现盈亏`, +} + +export default contracts \ No newline at end of file diff --git a/src/assets/i18n/cn/course.js b/src/assets/i18n/cn/course.js new file mode 100644 index 0000000..7274ee7 --- /dev/null +++ b/src/assets/i18n/cn/course.js @@ -0,0 +1,27 @@ +const Course = { + college:"学院", + noviceTutorial:"新手教程", + tutorialDetails:"教程详情", + howToBuyBitcoin:"如何购买比特币", + recommendedCourse:"推荐教程", + buy:"1分钟购买一笔比特币", + register:"注册", + visit:"访问{name}网站,并注册属于您的{name}账号", + realName:"实名认证", + upload:"上传有效证件,进行个人实名认证", + quickBuy:"一键购买并支付款项", + inIndex:"在首页/买币页面一键买币,支付完成后等待放币", + tradeNow:"马上去交易", + currencyTransaction:"秒懂币币交易", + contractEntryTransaction:"合约入门交易", + how:"如何进行期权交易", + TradingStrategy:"交易策略", + seeMore:"查看更多", + industryResearch:"行业研究", + oneClick:"一键智能交易", + inAssets:"在资产/充币页面一键充币,完成后可交易", + dictionary:"区块链词典", + media:"媒体报道" + +} +export default Course; \ No newline at end of file diff --git a/src/assets/i18n/cn/exchange.js b/src/assets/i18n/cn/exchange.js new file mode 100644 index 0000000..3d32fba --- /dev/null +++ b/src/assets/i18n/cn/exchange.js @@ -0,0 +1,337 @@ +export default { + assets: "资产", + exchange: "现货交易", + // crypto: '币币合约', + perpetualSwap: '永续合约', + forex: '外汇合约', + + contact_us: "联系我们", + support: "帮助中心", + login: "登 录", + register: "注 册", + + asset: "资产", + account_exc: "现货账户", + recharge: "(存币&提币)", + account_con: "合约账户", + + transfer: "资金划转", + fund: "充值记录", + orders: "委托", + + exchange_orders: "现货委托", + contract_orders: "合约委托", + T1: "T1 未验证", + T2: "T2 已验证", + T3: "T3 已验证", + commission: "最高30%邀请返佣", + security: "账户&安全", + + logout: "退出登录", + + 'help1': `Crypto FX Contract Guide`, + 'help2': `Contract Specifications`, + + search: "搜索", + fav: '自选', + pair: '交易对', + price: '价格', + + change: '24h涨跌幅', + high: '24h最高价', + low: '24h最低价', + last: '最新价格', + volume: '24h成交量', + + PriceUsdt: '价格', + qty: '数量', + total: '总值', + + buy: '买入', + sell: '卖出', + + orderType: '委托类型', + triggerPrice: '触发价格', + limitPrice: '限价价格', + + amount: '数量', + orderTotal: '委托总值', + + available: '可用余额', + enterAmount: '请输入数量', + enterTotal: '请输入总价', + enterPrice: '请输入价格', + enterTrigger: '请输入触发价格', + + bestPrice: '在最佳市场价格成交', + + markets: '最新成交', + + time: '时间', + + opens: '当前委托', + histories: '委托记录', + + more: '查看更多', + conditions: '条件委托', + notice: '提示', + confirm: '确认', + cancel: '取消', + tips: '请点击确认以取消订单?', + + success: '委托单取消成功', + orderPlaced: '委托成功', + succeed: '订单已取消', + chkLogin: '您需要先登录!', + + succefully: '收藏成功', + fail: '收藏失败', + + detail: '合约详细资料', + FAQ: '常见问题', + reference: '参考资料', + more: '更多', + + bookList: '买卖盘', + + limit: '限价单', + market: '市价单', + limitPositions: '限价', + marketPositions: '市价', + + stop: '止盈止损', + stopCrypto: '条件', + stopLimit: '止盈止损-限价', + stopMarket: '止盈止损-市价', + + // 交易表单提交验证的气泡提示信息 + lessMinQty: "最小数量为", + lessMinTotal: "总价至少要", + setAPrice: "请先设置一个合适的价格", + emptyPrice: "价格不能为空", + emptyQty: "数量不能为空", + emptyTrigger: "触发价不能为空", + + Buy: '买入', + Sell: '卖出', + closePosition: '平仓', + closePosition_tips: '在这里您可以快捷平仓,平仓会向市场提交抵消现有仓位的委托,选择市价立即使用市价委托平仓,请谨慎操作。', + realizedPNL: '已实现盈亏', + realizedPNL_tips: '自开仓以来的已实现盈亏。', + + + closeLimitWrap: '限价平仓?', + buyLimitClose: '买入平仓', + sellLimitClose: '限价卖出', + whenExecuted: '在执行时,将平调您的整个仓位。', + limitCloseBtn: '确认限价平仓', + + + MarketCloseWrap: "市价平仓?", + buyMarketClose: '买入平仓', + sellMarketClose: '市价卖出', + maketWillClose: '在执行时,将平调您的整个仓位。', + marketCloseBtn: '确认市价平仓', + + unrealized: '未实现盈亏(回报率%)', + unrealized_tips: '该合约的未实现盈亏(使用最新成交价格计算),以及回报率。', + + margin: '保证金', + margin_tips: '该仓位当前使用并锁定的保证金,以及您在该合约使用的杠杆倍数。您可以通过点击下方按钮来添加或减少仓位保证金。', + + addMarginWrap: '添加/减少仓位保证金', + addMargin: '添加保证金', + removeMargin: '减少保证金', + contracts: '张合约', + currentPosition: '当前仓位', + assignedMargin: '当前已分配的保证金', + availableMargin: '可用余额', + maxRemovable: '最大可减少保证金', + maxRemovable_tips: '可以把未使用的保证金从仓位移除,注意未实现盈利不能被移除。', + userRemoveMargin: '移除保证金', + + liqPrice: '强平价格', + 'liqPrice_tips-swap': '当该合约的标记价格低于(多仓)或者高于(空仓)该强平价格时,该仓位会被强制平仓。', + 'liqPrice_tips-forex': '当该合约的指数价格低于(多仓)或者高于(空仓)该强平价格时,该仓位会被强制平仓。', + + markPrice: '标记价格', + markPrice_tips: '该合约最新的合理标记价格,用来判定强制平仓。会与合约最新成交价格不同,来避免市场价格被操控。不会影响合约的结算,点击查看详细信息。', + + entryPrice: '平均开仓价格', + entryPrice_tips: '当前多/空仓位的平均开仓买入/卖出价格。', + + value: '价值', + value_tips: '该仓位的初始名义价值', + + size: '数量', + size_tips: '该仓位当前的合约数量,整数为多仓,负数为空仓。', + + Contracts: '合约', + ADL_Ranking: '自动减仓队列', + ADL_Ranking_tips: '这5个指示灯显示您当前仓位在自动建仓系统中的优先顺序排行。每一盏灯代表了20%优先级的增量。当所有灯都亮起,表示您的仓位位于自动减仓的优先位置,点击查看详情。', + + ROE: '回报率', + riskLimit: '持仓限额', + + yourPosition: '当前仓位:', + ContractsNum: '合约数量', + ROE: '回报率', + ROE_tips: '回报率 = 未实现盈亏 / 仓位累计保证金', + riskLimit: '持仓限额', + riskLimit_tips: '您的账户在该合约最大可持有的仓位额度。如您需要提升持仓限额,请与客服联系。', + entryPrice_PositionsTips: '当前多/空仓位的平均开仓买入/卖出价格。', + liqPrice_PositionsTips: '当该合约的标记价格低于(多仓)或者高于(空仓)该强平价格时,该仓位会被强制平仓。', + + orderbook: '委托列表', + marketTrades: '最近成交', + added: '累计', + + indexPrice: '指数价格, 即合约标的现货的价格。', + goHistorical: ' 点击查看历史数据。', + currentMarkPrice: '当前标记价格,点击查看详情。', + + positions: '活动仓位', + activeOrders: '活动委托', + stops: '条件委托', + orderHistory: '委托历史', + contractsPositions: '合约', + + orderPrice: '委托价格', + orderPrice_tips: '限价价格', + filled: '已成交', + filled_tips: '委托已经成交的数量,如果委托已经被完全成交,此数值将等于委托数量。', + remaining: '剩余', + remaining_tips: '委托剩余可被成交的数量。', + fillPrice: '平均成交价格', + fillPrice_tips: '委托目前的平均成交价格。', + type: '委托类型', + type_tips: '委托的种类。', + status: '状态', + status_tips: '委托的状态。此列的状态包括:新委托,部分成交,完全成交,或已取消。当条件委托被触发后,它会显示在该活动委托列表。', + timeActive: '委托时间', + timeActive_tips: '委托提交的时间。', + action: '操作', + + triggerPrice_tips: '这就是条件委托被触发的价格,当条件委托被触发时,该委托会进入委托列表。在触发后,该条件委托会显示在活动委托列表中。', + statusStop_tips: '对于新的条件委托,会有两个状态,未触发与已触发。当条件委托未被触发时,它不会被挂到委托列表中,也不会冻结保证金。', + fillPriceHistory: '成交价格', + + contactDetails: '合约细节:', + expiryDate: '到期日期', + perpetual: '永续', + indexPrice: '指数价格', + turnover: '24小时交易量', + openInterest: '未平仓合约数量', + predicted: '预测', + fundingRate: '资金费率', + fundingRate_forex: '隔夜费率', + predicted_cn: '预测资金费率', + fundingRate_tips: '这里显示的数字是预测的下一个资金时段的资金费率。如果资金费率是正数,多仓需要付给空仓;如果是负数,空仓付给多仓。该合约的资金流转周期为每8小时一次。', + fundingRate_fee: '隔夜费会在每日UTC 00:00时对您在该合约持有的仓位,使用该费率与仓位名义价值结算。如果您在该时刻不持有仓位,则不产生隔夜费', + insuranceFund: '风险准备金', + insuranceFund_tips: '当前的保险基金余额,该基金用来填补未被执行的强平委托造成的穿仓价值,以避免它们触发自动减仓系统。保险基金的增长来自强平委托在市场上优于破产价的价格成交。', + contractValue: '合约价值', + // contractValue_tips:'每一份BTCUSD合约的价值。', + + 'markPrice_HeaderTips-swap': '该合约最新的合理标记价格,用来判定强制平仓。会与合约最新成交价格不同,来避免市场价格被操控。不会影响合约的结算,', + 'markPrice_HeaderTips-swap1': '点击查看详细信息。', + 'markPrice_HeaderTips-forex': '该合约最新的指数价格,用来判定强制平仓,指数价格不会影响合约的交易盈亏结算。', + 'markPrice_HeaderTips-forex1': '', + + valueFactor: "最小交易数量100张合约", + fundingRate_HeaderTips: '该合约当前周期的资金费率,此费率会在倒计时(周期)结束后用来计算在买卖双方之间结算的资金流转数额。当资金费率大于0时,多头付给空头;反之空头付给多头。永续合约的资金流转周期为8小时。', + + highHeader: '24h最高价', + lowHeader: '24h最低价', + volumeHeader: '24h成交量', + changeHeader: '24h涨跌幅', + + noPosition: '暂无仓位', + + TOTAL: '账户余额:', + TOTAL_tips: '您永续合约的账户余额,账户余额=转入-取出+已实现盈亏', + AVAIL: '可用余额:', + AVAIL_tips: '可以用来开仓的保证金余额,可用余额=保证金余额-委托保证金-仓位保证金', + + from: '从', + to: '至', + coin: '币种', + maximum: '全部划转', + avaliable: '可用', + enterQty: '请输入数量', + + limit_Tips: '限制该委托在指定(或更好的)价格买入或卖出,限价单可能不会立刻成交。', + market_Tips: '下单立即执行,以委托列表中的最优价格快速成交,但是由于价格波动,最终的执行价格可能差于您的预期价格。', + stop_Tips: '条件委托只有在满足预设条件后才会被触发,触发后即为普通的限价或者市价。可以用来实现止损或者止盈策略。', + leverage: '杠杆', + leverage_Tips: '杠杆倍数越大,强制平仓风险越大,请谨慎选择!', + pricePerpetual: '委托价格', + qtyPerpetual: '合约数量', + orderValue: '委托价值', + buy_Long: '买入/做多', + sell_Short: '卖出/做空', + cost: '成本', + post_Only: '被动委托', + reduce_Only: '只减仓委托', + + + Qty_limitTips: '您想买入或卖出的合约数量,详情请参考下方合约细节。', + Qty_marketTips: '您想买入或卖出的合约数量,详情请参考下方合约细节。请注意,根据变化的价格以及您的可用保证金,市价单有可能不能执行全部的委托数量。', + orderValue_limitTips: '该委托的总名义价值(BTC)。', + orderValue_marketTips: '该委托的总名义价值(BTC), 注意,市价委托的委托价值为估计值。', + + availableMargin_Tips: '可以用来下单开仓的保证金。', + confirmOrder: '委托确认', + + marketContracts: '张BTCUSD合约', + + yourPosition_buy: '持有仓位', + afterExecution: '成交后仓位大小', + markPrice_buy: '当前标记价格', + estimated: '预期强平价格', + estimated_tips: '预估强平价格的计算参照当前委托列表中的活动委托,与您最后的强平价格可能不同', + + 'Est-swap': '标记价格/预期强平价格 差异', + 'Est-forex': '指数价格/预期强平价格 差异', + + cost_Tips: '本委托所需的保证金,该数值考虑你选择的杠杆和现有仓位。减(平)仓并不需要保证金。', + cost_stopTips: '条件委托被触发后所需的保证金,该数值考虑你选择的杠杆和现有仓位。注意,这些成本还没有从可用保证金中冻结,如果在条件委托被触发时,您没有足够的可用保证金,则条件委托会被取消。减(平)仓并不需要保证金。', + execute: '以委托列表内的最优可执行价格执行', + limit_perpetual: '限价委托', + market_perpetual: '市价委托', + stopLimit_perpetual: '条件限价单', + stopMarket_perpetual: '条件市价单', + + stopLimit_Deal: '条件限价', + stopMarket_Deal: '条件市价', + + execution: '在条件委托被触发后,该委托的执行价格。', + triggerPrice_Tips: '在当前最新成交价格达到触发价格时,您的条件委托会被激活。点击查看详情。', + + + postOnly_Tips: '被动委托不会立刻在市场成交。使用该类型委托来确保获得做市返佣。如果委托会立刻与已有委托成交,该委托将被取消。', + reduceOnly_Tips: '只减仓委托只会减少,不会增加你的仓位。系统有可能会自动减少这类委托数量,甚至自动取消它,来确保它不会增加你的仓位。', + inContact: '', + inHours: '小时内', + + + changesLeverage: '确认修改杠杆?', + leverageContent: '相同合约的活动委托与活动仓为均使用同一杠杆,在有活动仓位的情况下修改杠杆会改变仓位对保证金的需求,并且影响强平价格,请慎重操作!', + notShow: "不再提示", + + pending_positions: '提交中', + new_positions: '新', + partiallyFilled_positions: '部分成交', + filled_positions: '完全成交', + + canceled_history: '已取消', + triggered_history: '已触发', + completed_history: '已完成', + untriggered: '未触发', + cont: '张', + + disconnect: '错误: 服务器断开连接', + transactionFee: '费率', + details: '详情', + closedMarket: '市场关闭。当前不是该合约的交易时间,您可以选择提交条件委托。', +} \ No newline at end of file diff --git a/src/assets/i18n/cn/financial.js b/src/assets/i18n/cn/financial.js new file mode 100644 index 0000000..b026936 --- /dev/null +++ b/src/assets/i18n/cn/financial.js @@ -0,0 +1,92 @@ +const financial = { + vInancial:`V网理财`, + assetsCount:`收益稳 省心选`, + account:`理财账户`, + instruction:`增益说明`, + guaranteed:`保底年化`, + fixedYield:`固定年化`, + day:`天`, + total:`总量 `, + settlement:`结算年化`, + availableOnly:`仅展示可购`, + startDate:`申购开始时间`, + endDate:`申购结束时间`, + subscribeBtn:`申购`, + participate:'参与方式', + subscribe: `申购`, + subscribeDec:`您可以从多种数字货币存币产品中进行选择,目前开放BTC、USDT定期理财。`, + hold:`持有`, + holdDec:`V网理财帮助您最大化收益。仅需持有数字货币,并申购理财产品,便可获得利息,增长财富。`, + earn:`获息`, + earnDec:`利息将会在赎回日自动发放(“币定赢”产品)。`, + FAQ:`常见问题`, + FAQTitle1:`1. 什么是币定赢产品?`, + FAQContent1:`决心持有您的数字货币?现在您可以同时获得收益!币定赢产品在锁定期内拥有保证最低收益,同时,根据不同的产品条款,当虚拟币市场波动时,您可能享有潜在的额外收益。`, + FAQTitle2:`2. 在我申购V网理财产品时会发生什么?`, + FAQContent2:`申购时,VirgoX会将申购所需的金额从您的现货账户中扣除。申购后便将获得V网理财资产,申购金额及奖励将体现在您的理财账户中。根据不同的产品,利息将按照其条款进行相应计算。`, + FAQTitle3:`3. 在V网理财理财产品赎回日会发生什么?`, + FAQContent3:`赎回日,申购的本金和利息都会自动发放到您的现货账户。`, + FAQTitle4:`4. 当我申购了V网理财产品,我何时可以赎回?`, + FAQContent4:`关于币定赢产品,申购成功后,于锁定期不可中途赎回。`, + FAQTitle5:`5. V网理财产品发放利息的频率是多久?`, + FAQContent5:`关于币定赢产品,利息将于产品赎回日一次性发放于您的账户中。`, + + log:`请先注册并登录以进行此操作。`, + + + FAQTitle6:`6. VirgoX平台之后还会增加哪些币种的借贷产品吗?`, + FAQContent6:`V网理财会根据需求与质量,持续评估在其平台上可支持借贷的新币种。`, + + subscription:` 申购`, + asset:`资产`, + guaranteeds:`年化收益率`, + fixed:`期限`, + valueDate:`计息日`, + redemptionDate:`赎回日`, + enterAmount:`请输入数量`, + max:`最大`, + available:`可用资金`, + subscriptionLimit:`个人申购额度`, + interest:`保底收益`, + estimatedInterest:`预期收益`, + confirm:`确认申购`, + expected:`预期年化收益率`, + price:`结算价格`, + confirmBtn:`确认`, + more:`查看更多`, + + notStarted:`未开始`, + subscriptionEnded:`申购结束`, + earning:`计息中`, + clearing:`结算中`, + settled:`已结算`, + + accountEstimated:`账户资金估值`, + totalInterestEarned:`累计收益`, + earnwell:`币定赢`, + earnwellDec:`流动性和收益率兼顾,基准收益及额外收益同享 ,轻松跑赢市场。`, + operationDate:`操作时间`, + lockedAmount:`锁定金额`, + fixedPeriod:`期限`, + realInterest:`到期收益`, + status:`状态`, + + subscribed:`已申购`, + remainingTotal:`剩余可申购总量`, + details:`详情`, + features:`V网理财特点`, + featuresDec:`能攻善守,笑对波动。创新理财,多向增益。周期更短,高灵活性。`, + + maximumTips:`您输入的申购数量大于剩余申购总量`, + minimumTips:`您输入的申购数量小于最小额度`, + remainingTips:`申购数量不可高于可用余额`, + subscriptionAmountTips:`剩余申购总量小于最小申购额度`, + enterPurchase:`请输入申购数量`, + successTips:`申购成功`, + comingSoon:`即将上线,敬请期待!`, + + + +} + +export default financial \ No newline at end of file diff --git a/src/assets/i18n/cn/fundHistory.js b/src/assets/i18n/cn/fundHistory.js new file mode 100644 index 0000000..67923e5 --- /dev/null +++ b/src/assets/i18n/cn/fundHistory.js @@ -0,0 +1,23 @@ +const fundHistory ={ + fundHistory:'充提记录', + assetList:'资产列表', + searchAsset:'搜索资产', + management:'地址管理', + deposit:'充值', + withdrawal:'提币', + rewards:'返佣', + asset:'资产', + date:'日期', + address:'地址', + hash:'哈希', + amount:'数量', + progress:'进度', + status:'状态', + completed:'已完成', + processing:'转账中', + failed:'转账失败', + fee:'手续费', + account:'返佣账号', + allAssets:"所有资产" +} +export default fundHistory \ No newline at end of file diff --git a/src/assets/i18n/cn/historical.js b/src/assets/i18n/cn/historical.js new file mode 100644 index 0000000..54943ec --- /dev/null +++ b/src/assets/i18n/cn/historical.js @@ -0,0 +1,30 @@ +export default{ + perpetual:'合约历史数据', + daily_perpetual:'永续每日风险准备基金', + daily_foreign:'外汇每日风险准备基金', + daily_tips:'VirgoX使用风险准备基金来避免投资者的仓位被自动减仓。该基金用来填补未被完全执行的强平委托带来的价值差额,以避免它们被自动减仓系统接管。', + daily_tips1:'', + daily_tips2:'风险准备基金的增长来自于强平委托在市场上于优于破产价的价格成交带来的价值剩余。您可以通过下表查看风险准备基金的当前和历史余额。', + date:'日期', + insurance:'风险准备基金余额', + + // index:'指数价格历史记录', + index:'永续合约指数价格历史记录', + BTCIndex_tips:'BTCUSD永续合约的标的资产为BTC/USD现货,合约价格锚定BTC/USD现货的指数价格,', + BTCIndex_tips1:'该BTC指数由多个价格来源组成,详情请参考帮助文档。这里列出BTC指数近期的价格。', + ETHIndex_tips:'ETHUSD永续合约的标的资产为ETH/USD现货,合约价格锚定ETH/USD现货的指数价格,', + ETHIndex_tips1:'该ETH指数由多个价格来源组成,详情请参考帮助文档。这里列出ETH指数近期的价格。', + time:'时间', + contract:'合约', + indexPrice:'指数价格', + funding:'永续合约资金费率历史记录', + foreign_funding:'外汇合约指数价格历史记录', + funding_tips:'下表列出了所有永续合约的历史资金费率。', + + fundingInterval:'资金费率区间', + fundingRate:'资金费率', + allHistory_price:'这里列出所有永续合约的指数价格历史记录', + allHistory_foreignPrice:'这里列出所有外汇合约的指数价格历史记录', + every:'每' , + hours:'小时', +} \ No newline at end of file diff --git a/src/assets/i18n/cn/home.js b/src/assets/i18n/cn/home.js new file mode 100644 index 0000000..49dcb41 --- /dev/null +++ b/src/assets/i18n/cn/home.js @@ -0,0 +1,34 @@ +const Home = { + newEra:"数字货币交易新时代", + startTrading:"开始交易", + walkingLantern:"走马灯", + marketCenter:"行情中心", + optional:"自选", + latestPrice:"最新价", + upAndDown:"涨跌", + heigh:"最高价", + low:"最低价", + vol:"交易量", + coinType:"币种", + more:"查看更多", + multiPlatform:"多平台下载", + atTime:"随时随地", + multiTerminal:"多平台终端交易", + cover:"覆盖", + multiTerminal1:"多个平台", + support:"支持全业务功能", + down:"下载", + news:"最新公告", + detail:"查看详情", + quickly:"快速上手", + major:"我们为投资者提供专业", + safe:"安全的交易服务", + login:"登录", + reg:"注册", + trading:"去交易", + add:"添加成功", + cancel:"取消成功" + +} + +export default Home; \ No newline at end of file diff --git a/src/assets/i18n/cn/index.js b/src/assets/i18n/cn/index.js new file mode 100644 index 0000000..8eee239 --- /dev/null +++ b/src/assets/i18n/cn/index.js @@ -0,0 +1,31 @@ + +import nav from "./nav"; +import commom from "./commom"; + +import login from "./login"; +import application from "./application"; +import wallet from "./wallet"; +import contact from "./contact"; +import course from "./course"; +import home from "./home"; +import option from "./option"; +import order from "./order"; +import profile from "./profile"; +import setting from "./setting"; +import subscride from "./subscride"; + +export default { + nav, + commom, + login, + application, + wallet, + contact, + course, + home, + option, + order, + profile, + setting, + subscride +} \ No newline at end of file diff --git a/src/assets/i18n/cn/invite.js b/src/assets/i18n/cn/invite.js new file mode 100644 index 0000000..0b23c81 --- /dev/null +++ b/src/assets/i18n/cn/invite.js @@ -0,0 +1,27 @@ +const invite = { + invite:`好友邀请`, + receive:`邀请好友使用VirgoX,获得好友未来交易手续费的30%作为分红奖励。`, + join:`加入VirgoX用户邀请分红计划。`, + view:`查看我的分红`, + viewDetails:`查看详情`, + step1:`第一步:分享链接`, + step2:`第二步:邀请好友`, + step3:`第三步:立享分红`, + info:`邀请信息`, + link:`邀请链接`, + code:`邀请码`, + QR:`分享二维码`, + user:`已注册用户`, + terms:`活动条款`, + // b:`手续费分红`, + // p1:`等于被邀人20%的交易手续费。`, + // p2:`分红将在被邀人交易后10分钟内转入邀请人账户。`, + // p3:``, + // p31:``, + // p32:``, + // p4:``, + // p5:``, + // p6:``, +} + +export default invite \ No newline at end of file diff --git a/src/assets/i18n/cn/login.js b/src/assets/i18n/cn/login.js new file mode 100644 index 0000000..0053a15 --- /dev/null +++ b/src/assets/i18n/cn/login.js @@ -0,0 +1,53 @@ +const Login = { + enterPhoneEmail:"请输入手机或者邮箱号", + effectivePhoneEmail:"请输入有效的手机或者邮箱", + enterPasswrod:"请输入{num}位长度的密码", + passwordLength:"密码长度{num}位包含字母数字的密码", + safe:"安全性验证", + googleVer:"请输入您手机App上的{num}位谷歌验证码", + phoneCode:"请输入发送至您手机号码的{num}位验证码", + emailCode:"请输入发送至您邮箱的{num}位验证码", + forgetPassword:"忘记密码", + rememberMe:"记住我", + noAccountYet:"还没有账号", + goRegister:"前往注册", + safety:"安全性验证", + regAccount:"注册账号", + email:"邮箱", + phone:"手机", + pleaseEmail:"请输入邮箱地址", + invalidEmail:"无效的邮箱地址", + enterMobile:"请输入手机号码", + invalidPhone:"无效的手机号码", + enterLengthPassword:"请输入{num1}到{num2}位长度的密码", + hasNumEn:"密码需要{num}位字母和数字组合", + iSee:"我同意", + terms:"条款及细则", + reg:"注册", + enterEmailCode:"请输入发送至您邮箱 ({email})的{num}位验证码", + accountActivated:"以激活账户", + backOld:"回到上一步", + verCode:"验证码", + notEmail:"如果您未收到邮箱,请尝试以下检查操作", + confirmEmail:"请确保您所输入的邮箱地址是正确的", + confing:"请检查您邮箱的垃圾邮件文件夹", + checkTrashCan:"请确保您的邮箱连接至稳定的互联网", + enterPhone1:"请输入发送至您手机号", + enterPhone2:"的{num}位验证码", + smsNotReceived:"如果您未收到短信,请尝试以下检查操作", + phoneCorrect:"请确保您所输入的手机号和地区号是正确的", + securePhone:"请确保您的手机信号稳定", + hasAccount:"已经有一个帐号", + toLogin:"前往登录", + securityVerification:"安全性验证", + disagree:"您还没有同意条款", + registrationSuccess:"注册成功,正在跳转登录页面", + referrer:"推荐人", + optional:"选填", + password:"密码", + login:"登录", + sms:"短信", + country:"区号" +} + +export default Login \ No newline at end of file diff --git a/src/assets/i18n/cn/nav.js b/src/assets/i18n/cn/nav.js new file mode 100644 index 0000000..ab1f669 --- /dev/null +++ b/src/assets/i18n/cn/nav.js @@ -0,0 +1,12 @@ +const nav = { + assets:`资产`, + contract:`合约账户`, + transfer:`资金划转`, + excOrders:`现货委托`, + contractOrders:`合约委托`, + fundHistory:`充提记录`, + security:`账号安全`, + invite:`邀请好友`, +} + +export default nav \ No newline at end of file diff --git a/src/assets/i18n/cn/option.js b/src/assets/i18n/cn/option.js new file mode 100644 index 0000000..dc4ddd1 --- /dev/null +++ b/src/assets/i18n/cn/option.js @@ -0,0 +1,41 @@ +const Option = { + waitFor:"等待交割", + history:"历史交割", + orderNum:"订单号", + option:"期权", + buyTime:"买入时间", + buyAmount:"买入数量", + buyType:"购买类型", + yield:"收益率", + state:"状态", + deliverytime:"交割时间", + countDown:"交割倒计时", + buyingUp:"买涨", + buyDwon:"买跌", + buyEven:"买平", + result:"交割结果", + settlementQuantity:"结算数量", + up:"涨", + down:"跌", + flat:"平", + buyOption:"购买期权", + deliveryRecord:"交割记录", + current:"当前", + next:"下期", + enterNum:"请输入数量", + balance:"余额", + expectedRevenue:"预计收益", + seeMore:"看多", + beBearish:"看空", + time:"时间", + zf:"涨幅", + bullish:"看涨", + lookAtPing:"看平", + bearish:"看跌", + amount:"数量", + coinType:"币种", + odds:"赔率", + buySuccess:"买入成功", +} + +export default Option; \ No newline at end of file diff --git a/src/assets/i18n/cn/order.js b/src/assets/i18n/cn/order.js new file mode 100644 index 0000000..0aad331 --- /dev/null +++ b/src/assets/i18n/cn/order.js @@ -0,0 +1,52 @@ +const Order = { + noData:"暂无成交记录", + ifCancel:"是否撤销当前订单", + cancelSuccess:"撤销成功", + marketPrice:"市价交易", + fixedPrice:"限价交易", + sell:"卖出", + buy:"买入", + exchangeRecord:"交易记录", + see:"查看", + opt:"操作", + status:"状态", + time:"时间", + tradingPair:"交易对", + direction:"方向", + type:"类型", + averagePrice:"平均价格", + price:"价格", + matched:"已撮合", + totalAmountEntrusted:"委托总量", + total:"总计", + toMatch:"未撮合", + operation:"操作", + reset:"重置", + search:"搜索", + to:"至", + startTime:"开始日期", + endTime:"结束日期", + select:"请选择", + entrustType:"委托类型", + spotConsignment:"现货委托", + surrentCommission:"当前委托", + commissionRecord:"委托记录", + optionTransaction:"期权交易", + orderNum:"订单号", + timeSharing:"分时", + yield:"收益率", + buyNum:"购买数量", + upAndDown:"涨跌幅", + settlementQuantity:"结算数量", + transactionPrice:"成交价格", + tradingVolume:"交易量", + aTurnover:"交易额", + serviceCharge:"手续费", + cancel:"撤销", + buyTime:"购买时间", + buyUp:"买涨", + buyDown:"买跌", + buyLevel:"买平" +} + +export default Order; \ No newline at end of file diff --git a/src/assets/i18n/cn/personalVer.js b/src/assets/i18n/cn/personalVer.js new file mode 100644 index 0000000..5eebfb6 --- /dev/null +++ b/src/assets/i18n/cn/personalVer.js @@ -0,0 +1,63 @@ +export default{ + + title:'个人账户验证', + profile:'个人信息', + upload:'上传文件', + submitted:`审核提交`, + firstName:'名(法定)*', + middleName:'中间名(法定)', + lastName:'姓(法定)*', + birth:'出生日期 (YYYY-MM-DD)*', + addressInfo:'地址信息', + errorTips:`账号验证失败,请检查提供的个人信息,并重新提交。`, + residence:'居住地址*', + city:'城市*', + postalCode:'邮政编码*', + country:'国家或地区*', + optional:'额外信息栏(选填)', + contactInfo:'联系信息', + phone:'电话号码*', + next:'下一步', + + docType:'选择文件类型', + following:'身份证件 –请从以下文件中选择一份(1)进行上传:', + back:'返回', + submit:'提交', + remove:'移除', + + passport:'护照', + driver:'驾照', + national:'身份证', + successfully:'您的验证申请已成功提交!我们将在获得结果的第一时间通知您。', + done:'完成', + fileUploaded:'文件上传成功!重新添加请先移除原有文件。', + firsts:'如果您有多个名(法定),请输入全部名(法定)。', + lasts:'如果您有多个姓(法定),请输入全部姓(法定)。', + + + firstNameTips:'请输入法定名', + lastNameTips:'请输入法定姓', + birthTips:'请输入出生日期', + residenceTips:'请输入居住地址', + cityTips:'请输入城市', + postalCodeTips:'请输入邮政编码', + countryTips:'请选择国家或地区', + areaCodeTips:'请选择地区号', + phoneNumTips:'请输入电话号码', + uploadIdentityDoc1:`请上传身份文件正面。`, + uploadIdentityDoc2:`请上传身份文件反面。`, + invalidFile:`文件格式无效,请重新上传符合要求的文件。`, + fileSizeExceeds:`文件过大,请重新上传符合要求的文件。`, + uploadFailed:`文件上传失败,请重新上传。`, + + enterFirstName:`请输入名`, + enterMidName:`请输入中间名`, + enterLastName:`请输入姓`, + selectBirth:`请选择出生日期`, + enterResidence:`请输入居住地址`, + enterCity:`请输入城市名`, + enterPostal:`请邮政编码`, + selectCountry:`请选择国家或地区`, + enterAdditonal:`请输入额外信息栏(选填)`, + enterPhoneNum:`请输入电话号码`, +} \ No newline at end of file diff --git a/src/assets/i18n/cn/profile.js b/src/assets/i18n/cn/profile.js new file mode 100644 index 0000000..9c86aea --- /dev/null +++ b/src/assets/i18n/cn/profile.js @@ -0,0 +1,111 @@ +const Profile = { + realName:"实名认证", + primaryCertification:"初级认证", + advancedCertification:"高级认证", + toExamine:"审核", + fullName:"姓名", + legal:"法定", + pleaseEnterName:"请输入姓名", + dateOfBirth:"出生日期", + selectDate:"选择日期", + documentType:"证件类型", + pelaseSelect:"请选择", + certificateNumber:"证件号", + endterIDNumber:"请输入证件号", + addressInfo:"地址信息", + residentialAddress:"居住地址", + residentialAddress1:"请输入居住地址", + ciy:"城市", + incity:"请输入所在城市", + postalCode:"邮政编码", + thePostcode:"请输入邮政编码", + additionalInformation:"额外信息", + optional:"选填", + contactInformation:"联系信息", + phoneNumber:"电话号码", + enterPhoneNumber:"请输入手机号", + clickUpload1:"点击上传文件并提交身份验证时,即表示您已阅读并同意我们的 服务条款 及 隐私协议。", + pelaseDownload:"请从以下文件中选择一份未过期的", + passport:"护照", + drivingLicense:"驾照", + iD:"身份证", + upload:"进行上传", + explain:"说明", + unexpired:"未过期证件文件可以是图片或扫描件", + pleaseConfirm:"请确证件照上的所有细节是清晰的,且未被遮盖", + fileFormat:"文件格式", + maximumFileSize:"最大文件大小", + positive:"证件正面", + theOtherSide:"证件反面", + hold:"手持证件", + dragHere:"拖到此处,或", + clickUpload:"点击上传", + uploadPhoto:"请上传证件正面照", + reversePhoto:"请上传证件反面照", + uploadIDCard:"请上传手持证件照", + nextStep:"下一步", + inSubmit:"您的验证申请已提交!我们将在获得结果的第一时间通知您", + gotIt:"知道了", + congratulations:"恭喜您", + back:"返回", + resetApply:"是否重新申请。", + recertification:"重新认证", + userInfo:"账户信息", + verState:"验证状态", + max:"最大", + limitH:"小时提币限额", + verLeave:"验证级别", + exceed:"超过", + contactUs:"联系我们", + inviteFriends:"邀请好友", + dividends:"邀请好友使用{name},获得好友未来交易手续费的{num}作为分红奖励。", + sendInvitation:"发送邀请", + resetPassword:"重置密码", + forLoginAccount:"用于登录账户", + clickReset:"点击重置", + registrationDecord:"登录记录", + recording:"用于显示详细历史登录记录", + recordingDEtail:"详细记录", + invitationReward:"邀请奖励", + inviteUse:"邀请好友使用", + futureCommission:"获得好友未来交易手续费的{num}作为分红奖励", + joinThePlan:"加入{name}用户邀请分红计划", + checkMyDividend:"查看我的分红", + step1:"第一步", + shareLink:"分享链接", + step2:"第二步", + shareFriend:"邀请好友", + step3:"第三步", + instantDividend:"立享分红", + invitationInformation:"邀请信息", + invitationLink:"邀请链接", + invitationCode:"邀请码", + registeredUser:"已注册用户", + accountNumber:"账号", + registrationTime:"注册时间", + activityTerms:"活动条款", + handlingFeeDividend:"手续费分红", + equalInvitee:"等于被邀人", + fee:"的交易手续费", + afterThat:"将在被邀人交易后", + follow:"分钟内转入邀请人账户。", + limit:"活动遵循以下开始和结束时间,仅限于活动开始时间后且活动结束时间前的有效账户可获得", + activityStartTime:"活动开始时间", + Y:"年", + M:"月", + D:"日", + endTime:"活动结束时间", + proceed:"持续进行", + atAnyTime:"保留随时修改,暂停,或终止{name}用户邀请计划的权利,且恕不另行通知", + reservedRights:"保留不为重复帐户或虚假帐户发放手续费分红的权利", + canDecide:"可全权决定接受或拒绝特定被引入或被邀请至{name}平台{link}的用户", + bill:"访问记录", + date:"日期", + address:"地点", + equipment:"设备", + preliminary:"初步认证成功", + advancedCertification:"高级认证申请已提交", + clickToVerify:"点击验证" +} + +export default Profile; \ No newline at end of file diff --git a/src/assets/i18n/cn/security.js b/src/assets/i18n/cn/security.js new file mode 100644 index 0000000..fa50f87 --- /dev/null +++ b/src/assets/i18n/cn/security.js @@ -0,0 +1,89 @@ +const Security = { + security:`账户 & 安全`, + info:`账户信息`, + unverified:`未验证`, + verified:`已验证`, + status:`验证状态`, + max:`最大`, + limit:` 24小时提币限额`, + tiers:`验证级别`, + over:`超过`, + verify:`点击验证`, + contactUs:`联系我们`, + loginPwd:`登录密码`, + logging:`用于登录账户。`, + reset:`重置密码`, + modification:`用于登录、提币和安全设置变更。`, + disable:`关闭`, + enable:`开启`, + enabled:`已开启`, + notEnabled:`未开启`, + SMS_ver:`SMS 短信验证`, + delete:`删除`, + notifica:`充值和提币通知`, + transactionPwd:`交易密码`, + placing:`用于提交合约和现货委托。`, + setPwd:`设置密码`, + management:`地址管理`, + addManagement:`用于进行提币地址管理。`, + address:`个地址`, + addresses:`个地址`, + manage:`管理`, + emailVer:`邮件验证`, + promotionalInfo:`营销和促销信息`, + history:`登录记录`, + display:`用于显示详细历史登录记录。`, + details:`详细记录`, + date:`日期`, + location:`地点`, + address_ip:`IP 地址`, + device:`登录设备`, + emailCodeTips:"请输入邮箱验证码。", + smsCodeTips:"请输入短信验证码。", + googleCodeTips:"请输入谷歌验证码。", + oldPwdTips:"请输入旧密码", + newPwdTips:"请输入新密码", + typePwd:'密码必须由8至15位数字与字母组成(必须同时包含数字与字母,也可使用符号)。', + confirmPwd:'请输入确认密码。', + inconformity:'两次输入的密码不一致。', + successfully:'操作成功!', + + transactionTips:'请输入重置交易密码。', + digitNum:`交易密码必须为6位数字。`, + transactionConfirmedTips:'请输入确认交易密码。', + bindingSuccess:'绑定成功', + emailType:'请输入正确的邮箱地址。', + + copySucceed:'复制成功', + copyFailed:'复制失败', + + + + confirm:'确认', + phone:'手机号码', + email:'Email', + QRCode:"请扫描二维码。", + + + googleKey:'Google 验证密钥', + googleVer:'Google 验证码', + // EmailVerification:'邮件验证', + // SMSVerification:'SMS 短信验证', + + oldPwd:'旧密码', + newPwd:'新密码', + confirmNewPwd:'确认新密码', + confirmTransactionPwd:'确认交易密码', + individual:'个人认证', + resetPwd:'重置密码', + + securityVer:'安全验证', + enablePhone:'开启短信验证', + enableEmail:'开启邮件验证', + enableGoogle:'开启谷歌验证', + selectVer:'请选择验证类型', + leaseOne:`谷歌、短信、邮箱 至少开启一种认证方式`, + notMatch:`两次密码不一致`, + oneKind:`(至少开启一种验证方式)`, +} +export default Security \ No newline at end of file diff --git a/src/assets/i18n/cn/setting.js b/src/assets/i18n/cn/setting.js new file mode 100644 index 0000000..81386d4 --- /dev/null +++ b/src/assets/i18n/cn/setting.js @@ -0,0 +1,48 @@ +const Setting = { + smsVer: "短信验证", + enterCode: "请输入验证码", + emailVer: "邮箱验证", + enterEmailVer: "请输入邮箱验证码", + ver: "验证", + enterNameCode: "请输入{name}验证码", + openSuccess: "开启成功", + closeSuccess: "关闭成功", + email: "邮箱", + enterEmail: "请输入邮箱", + emailVerCode: "邮箱验证码", + enterSmsCode: "请输入短信验证码", + bind: "绑定", + unbind: "解绑", + bindSuccess: "绑定成功", + unbindSuccess: "解绑成功", + scanQrCode: "请扫描二维码", + howToOpen: "了解如何开启{name}二次验证", + read: "点击此处阅读安装信息", + verKey: "验证密钥", + safeSetting: "安全设置", + loginPassword: "登录密码", + resLoginPassword: "重置登录密码", + transactionPassword: "交易密码", + usedFor: "用于提交合约和现货委托", + notOpen: "未开启", + modifyPassword: "修改密码", + setPassword: "设置密码", + verCode: "验证码", + forLogin: "用于登录、提币和安全设置变更", + alLast: "至少开启一种验证方式", + close: "关闭", + open: "开启", + phone: "手机号码", + area: "请输入区号", + enterPhone: "请输入手机号", + newPassword: "新密码", + passwordIs: "交易密码为{num}位数字", + enterNewPassword: "请输入新密码", + confirmPassword: "确认密码", + pleaseConfirmPassword: "请确认密码", + operationSuccess: "操作成功", + combination:"密码需要字母和数字组合", + changeSuccess:"修改成功" +} + +export default Setting; \ No newline at end of file diff --git a/src/assets/i18n/cn/subscride.js b/src/assets/i18n/cn/subscride.js new file mode 100644 index 0000000..a7f7a72 --- /dev/null +++ b/src/assets/i18n/cn/subscride.js @@ -0,0 +1,22 @@ +const Subscribe = { + sendPrice:"发行价", + subscriptionCurrency:"申购币种", + expected:"预计上线时间", + startTime:"开始申购时间", + applyForPurchase:"结束申购时间", + enterNum:"请输入数量", + all:"所有", + subscribeNow:"立即申购", + subscriptionCycle:"申购周期", + projectWarmUp:"项目预热", + startSubscription:"开始申购", + endOfSubscription:"结束申购", + announceResults:"公布结果", + projectCetails:"项目详情", + useOrNot:"是否使用", + subscribe:"申购", + prompt:"提示", + subscribeSuccess:"申购成功", +} + +export default Subscribe; \ No newline at end of file diff --git a/src/assets/i18n/cn/transfer.js b/src/assets/i18n/cn/transfer.js new file mode 100644 index 0000000..4400e45 --- /dev/null +++ b/src/assets/i18n/cn/transfer.js @@ -0,0 +1,26 @@ +const transfer = { + title:`资金划转`, + exchange:`现货账户`, + forex:`外汇合约账户`, + crypto:`永续合约账户`, + instructions:`资金划转说明`, + dec1:`请注意内部资金划转是自动完成的,并且免手续费。`, + dec2:`只有USDT可被划转至您的外汇合约账户。`, + dec3:`只有BTC可被划转至您的永续合约账户。`, + dec4:`如果您想要交易外汇合约,您必须划转USDT至外汇合约账户中,当做保证金。`, + dec5:`如果您想要交易永续合约,您必须划转BTC至永续合约账户中,当做保证金。`, + USDT:`USDT 划转记录`, + BTC:`BTC 划转记录`, + all:`所有资产划转记录`, + asset:`资产`, + amount:`划转数量`, + from:`从`, + to:`至`, + time:`时间`, + status:`状态`, + success:`划转成功`, + blog:'V网学院', + slogan:'洞察全局 尽享资讯', + article_blank:'暂无内容,敬请期待!' +} +export default transfer \ No newline at end of file diff --git a/src/assets/i18n/cn/wallet.js b/src/assets/i18n/cn/wallet.js new file mode 100644 index 0000000..4ea6145 --- /dev/null +++ b/src/assets/i18n/cn/wallet.js @@ -0,0 +1,114 @@ +const Wallet = { + inside: "内部资金划转", + from: "从", + history: "划转历史", + balance: "余额", + transferQuantity: "划转数量", + capitalAccount: "资金账户", + contract: "合约账户", + financial: "理财账户", + leverage: "杠杆账户", + successful: "划转成功", + confirm: "确定划转", + pleaseSelect: "请选择币种", + to: "至", + assets: "资产", + strokes: "请输入划转数量", + addressManagement1:"地址管理", + addAddress:"添加地址", + filter:"筛选器", + search:"搜索资产", + selectActiveArea:"请选择活动区域", + areaOne:"区域一", + areaTwo:"区域二", + addressAssets:"地址列表", + assets:"资产", + addressNum:"地址数量", + fee1:"手续费", + creationTime:"创建时间", + detailAddress:"详细地址", + remarks1:"备注信息", + operating:"操作", + complete:"完成", + copy:"复制", + editAddress:"编辑地址", + deleteAddress:"删除地址", + next:"上一页", + pre:"下一页", + add:"添加", + edit:"编辑", + address:"地址", + selectAssets:"请选择资产", + drawAddress:"提币地址", + addressRemarks:"该地址备注", + remarksDelete:"确定删除此地址", + optionSuccess:"操作成功", + allAssets:"所有资产价值", + showNum:"显示数字", + contractAccount:"合约账户", + marginAccount:"杠杆账户", + financialAccount:"理财账户", + spotAccount:"现货账户", + hide:"隐藏", + balanceAssets:"余额资产", + searchCurrency:"搜索币种", + addressManagement:"提币地址管理", + totalAssets:"总资产", + availableBalance:"可用余额", + fee:"冻结余额", + valuation:"估值", + recharge:"充值", + withdrawal:"提币", + transaction:"交易", + rechargeAddress:"充值地址", + rechargeQuantity:"充值数量", + enterQuantity:"请输入数量", + rechargeInstructions:"充值说明", + automaticallyCredited:"此地址是您最新的充值地址,当系统收到充值时,将进行自动入账", + tran:"转账需要由整个区块链网络进行确认,到达{num}个网络确认时,您的{name}将被自动存入账户中", + only:"请只发送{name}到此地址,发送其他数字货币到此地址会造成永久性的损失", + drawAddress:"提币地址", + low:"最低", + addressList:"地址列表", + enterDrawAddress:"请输入提币地址", + invalidWallet:"不是有效的钱包地址,请重新输入", + withdrawalsNumber:"提币数量", + enterDrawNum:"请输入提币数量", + withdrawalInstructions:"提币说明", + enterAddress:"请仔细检查并输入正确的提币钱包地址", + notSend:"发送不对应的数字货币到钱包地址会造成永久性的损失", + deductionFee:"提币手续费将从提币数量中扣除", + submitSuccess:"提交成功,正在审核", + operationComplete:"提币操作完成,等待审核", + rechargeRecord:"充值记录", + withdrawalRecord:"提币记录", + assetsName:"请输入资产名", + selectStatus:"请选择状态", + startTime:"开始日期", + entTIme:"结束日期", + search:"搜索", + date:"日期", + hash:"哈希", + num:"数量", + progress:"进度", + status:"状态", + error:"失败", + success:"成功", + underReview:"审核中", + handlingFee1:"手续费", + processing:"处理中", + transfer:"资金划转", + transferDescription:"资金划转说明", + handlingFee:"请注意内部资金划转是自动完成的,并且免手续费", + onlyForeignExchange:"只有{name}可被划转至您的外汇合约账户", + onlySustainable:"只有{name}可被划转至您的永续合约账户", + inCase1:"如果您想要交易外汇合约,您必须划转{name}至外汇合约账户中,当做保证金", + inCase2:"如果您想要交易永续合约,您必须划转{name}至永续合约账户中,当做保证金", + transferRecord:"划转记录", + allTransfer:"所有资产划转记录", + direction:"方向", + all:'全部', + date:'时间' +} + +export default Wallet \ No newline at end of file diff --git a/src/assets/i18n/en/address.js b/src/assets/i18n/en/address.js new file mode 100644 index 0000000..21b1c4a --- /dev/null +++ b/src/assets/i18n/en/address.js @@ -0,0 +1,45 @@ +const Address ={ + management:'Address Management', + addAddress:'Add Address', + filter:'Filter', + all:'All', + white:'Whitelisted', + nonWhite:'Non-Whitelisted', + search:'Search Asset', + asset:'Asset', + label:'Label', + address:'Address', + memoTag:'Memo/Tag', + whitelist:'Whitelist', + action:'Action', + addWhiteLs:'Add to Whitelist', + removeWhiteLs:'Remove from Whitelist', + edit:'Edit', + delete:'Delete', + withdrawAddress:'Withdraw Address', + lableAddress:'Add Label to the Address', + whitelsAddress:'Whitelist this Address', + submit:'Submit', + cancel:'Cancel', + removeTips:'Do you confirm to remove this address from the whitelist?', + deleteTips:'Do you confirm to delete this address?', + google:'Google Authentication', + email:'Email Verification', + phone:'Phone Code', + editAddress:'Edit Address', + verification:'Verification', + confirm:'Confirm', + confirmAddress:`Do you confirm to add this address to the whitelist?`, + selectAsset:'Please select the asset.', + enterAddress:'Enter the address', + enterLabel:'Enter the label', + selectCurrency:'Please select the asset.', + wrongAddress:'Please enter the address with the correct format!', + Yes:'Yes', + No:'No', + successfully:'The withdrawal address is successfully added.', + enterAddressTips:'Please enter the address', + enterLabelTips:'Please enter the label', + enterMemo:'Please either enter the Memo or select No Memo.', +} +export default Address \ No newline at end of file diff --git a/src/assets/i18n/en/assets.js b/src/assets/i18n/en/assets.js new file mode 100644 index 0000000..57d73c8 --- /dev/null +++ b/src/assets/i18n/en/assets.js @@ -0,0 +1,109 @@ +const assets = { + allBtn:`All`, + assets:`Assets`, + totalVal:`Total Asset Value`, + show:`Show Numbers`, + account_exchange:`Exchange Account`, + account_forex:`Crypto FX Contract Account`, + account_crypto:`Perpetual Swap Account`, + account_exchangeTab:`Exchange Account`, + account_contractsTab:`Contracts Account`, + withdrawalLimit:`24h Withdrawal Limit: `, + increase:`Increase`, + transfer:`Internal Transfer`, + history:`History`, + from:`From`, + to:`To`, + asset:`Asset`, + amount:`Amount`, + maximum:`Maximum`, + enterAmount:`Enter The Amount`, + proceed:`Proceed`, + avaliable:`Avaliable`, + all:`All`, + hideZero:`Hide Zero`, + showZero:`Show Zero`, + assetTab:`Asset`, + accountTotal:`Total Balance`, + availableTab:`Available Balance`, + hold:`On Hold`, + BTC_valuation:`BTC Valuation`, + USD_valuation:`USD Value`, + action:`Action`, + deposit:`Deposit`, + withdraw:`Withdraw`, + trade:`Trade`, + depositAddress:`Deposit Address`, + depositHistory:`Deposit History`, + allHistory:`All History`, + date:`Date`, + address_hash:`Address/Hash`, + amountTab:`Amount`, + progress:`Progress`, + type:`Type`, + status:`Status`, + instructions:`Token Deposit Instructions`, + QRCode:`QR Code Deposit Adres`, + withdrawal:`Withdrawal`, + withdrawalLimit24h:`24h Withdrawal Limit`, + withdrawalAddress:`Withdrawal Address`, + enterAddress:`Enter the Address`, + addressLs:`Address List`, + addressLs_white:'Yes', + addressLs_noWhite:'No', + withdrawAmount:`Withdraw Amount`, + available:`Available`, + fee:`Fee`, + enterAmount:`Enter the Amount`, + receive:`You will receive`, + saveAddress:`Save the Address`, + addLable:`Add Lable to the Address`, + enterLabel:`Enter the Label`, + whiteLs:`Whitelist the Address`, + submit:`Submit`, + withdrawalHistory:`Withdrawal History`, + feeTab:`Fee`, + withdrawalInstructions:`Token Withdrawal Instructions`, + checkAddress:`Please check carefully and input the correct withdrawal wallet address.`, + sendAddress:`Sending digital currencies to the wrong wallet address will result in permanent loss.`, + withdrawalFee:`The withdrawal fee will be deducted from the requested withdrawal amount.`, + whiteLsTab:`Whitelist`, + label:`Label`, + address:`Address`, + memo_tag:`Memo/Tag`, + back:`Back`, + addAddress:`Add Address`, + transferSuccess:'Transfer Completed', + preloaded:'Processing', + autoRecharge:'Completed', + artificialAdd:'Completed', + auditFailure:'Failed', + copySucceed:'Copied Succeed', + copyFailed:'Copied Failed', + addressEmpty:'Please enter the withdrawal address', + wrongAddress:'Please ensure the address entered is correct. We have detected that the address format entered is unconventional. Please contact support if you have any questions.', + quantityEmpty:'Please enter the withdrawal amount.', + numberWithdrawals:'The withdrawal amount cannot exceed the available amount. ', + passwordEmpty:'Please enter the transaction password.', + moneySuccess:'success', + forex:'Crypto FX Contract', + crypto:'PERP Swap', + accountBalance:'Account Balance', + availableBalance:'Available Balance', + positionMargin:'Position Margin', + marginBalance:'Margin Balance', + unrealizsedPL:'Unrealizsed P&L', + orderMargin:'Order Margin', + marginUsed:'Margin Used', + details:'Details', + leverage:'Leverage', + pwd:'Password', + withdrawl:'Withdrawal', + transactionPwd:'Transaction Password', + minimun:'Minimun', + inputMemo:'Please either enter the Memo', + minNumWithdraw:'The withdrawal amount cannot be smaller than the minimum withdrawal limit.', + enterMemo:'Please either enter the Memo or select No Memo.', +} + +export default assets \ No newline at end of file diff --git a/src/assets/i18n/en/commom.js b/src/assets/i18n/en/commom.js new file mode 100644 index 0000000..e60f293 --- /dev/null +++ b/src/assets/i18n/en/commom.js @@ -0,0 +1,74 @@ +const commom = { + // header + "option" : "Option", + "exchange" : "Exchange", + "markets" : "Markets", + "helps" : "Help", + "course" : "Support Center", + "activity" : "Marketing activities", + "news" : "Industry news", + "contactUs" : "Contact Us", + + "sign_in" : "Sign in", + "sign_up" : "Sign up", + + noRecord: `No Record`, + getCode: `Get Code`, + export: `Export`, + + + + // wsq + all: 'All', + // allCoin: 'All', + // allDirection: 'All', + // allType: 'All', + confirmBtn:'Confirm', + cancelBtn:'Cancel', + cancel: 'Cancel', + startTime: 'Start Time', + to: 'To', + endTime: 'End Time', + filter: 'Filter', + search: 'Search', + reset: 'Reset', + sell: 'Sell', + buy: 'Buy', + limit: 'Limit', + market: 'Market', + hideAll: 'Hide All Canceled', + canceled: 'Canceled', + waiting: 'Waiting', + processing: 'Processing', + completed: 'Completed', + available_phone: 'The register phone is not available!', + available_email: 'The register email is not available!', + codeSent: 'Verification Code Sent', + captcha: 'Error getting captcha', + triggered: 'Triggered', + buyIn: `Buy`, + sellOut: `Sell`, + limitOrder: `Limit`, + marketOrder: `Market`, + + enterValid: 'Please enter a valid phone or email!', + enterValidEmail: 'Please enter the valid email address.', + enterValidPhone: 'Please enter a valid phone.', + enterEmail: 'Please enter the valid email address.', + enterPhone: 'Please enter the Phone', + enterPwd: 'Please enter the password.', + enterAccount: 'Please enter the account.', + + passwordRegular:'The password must be between 8 and 15 characters with at least one number and one letter. Symbols are allowed.', + newPassword:'Please enter the new password.', + confirmNewPassword:'Please enter the confirmed new password.', + + enterGoogleCode:'Please enter the Google Authentication code.', + enterEmailCode:'Please enter the Email Verification Code.', + enterSMSCode:'Please enter the SMS Verification Code.', + + enterVerCode:`Please enter the verification code.`, + exportFile:'Click cofirm to export the file.', +} + +export default commom \ No newline at end of file diff --git a/src/assets/i18n/en/contactUs.js b/src/assets/i18n/en/contactUs.js new file mode 100644 index 0000000..b25bf1f --- /dev/null +++ b/src/assets/i18n/en/contactUs.js @@ -0,0 +1,25 @@ +const ContactUs = { + fullName:'Full Name', + phone:'Phone', + email:'Email', + subject:'Subject', + msg:'Message', + contactUs:'Contact Us', + help:'Get in touch and let us know how we can help', + contactInfo:'Contact Information', + inquiry:'General Inquiry:', + support:'Customer Support:', + media:'Press and Media:', + submit:'Submit', + successfully:'Submit successfully', + msgTips:'Please enter the message', + fullNameTips:'Please enter the full name.', + emailTips:'Please enter you email address.', + projectTips:`Please select the project.`, + enterFullName:`Enter Full Name`, + enterEmail:`Enter Email Address`, + enterSubject:`Select Project`, + enterMsg:`Enter Message`, +} + +export default ContactUs \ No newline at end of file diff --git a/src/assets/i18n/en/contractsAccount.js b/src/assets/i18n/en/contractsAccount.js new file mode 100644 index 0000000..ab7ff18 --- /dev/null +++ b/src/assets/i18n/en/contractsAccount.js @@ -0,0 +1,39 @@ +const contracts = { + title:`Contract Accounts`, + forexs:`Crypto FX Contract Account`, + cryptos:`Perpetual Swap Account`, + contract:`Contract Order History`, + forex:`Crypto FX Contract`, + crypto:`PERP Swap`, + accountBalance:`Account Balance`, + availableBalance:`Available Balance`, + positionMargin:`Position Margin`, + marginBalance:`Margin Balance`, + unrealizsed:`Unrealizsed P&L`, + orderMargin:`Order Margin`, + transfer:`Transfer`, + marginUsed:`Margin Used`, + leverage:`Leverage`, + positions:`Open Positions`, + contactName:`Contact Name`, + contractsOpen:`Contracts Open`, + direction:`Direction`, + realised:`Realised P&L`, + long:`Long`, + short:`Short`, + history:`Account Balance History`, + date:`Date`, + type:`Type`, + amount:`Amount`, + deposit:`Deposit`, + withdrawal:`Withdrawal`, + open:`Open Fees`, + close:`Close Fees`, + funding:`Funding`, + takeover:`Takeover`, + realizedPNL:`Realized PNL`, + + +} + +export default contracts \ No newline at end of file diff --git a/src/assets/i18n/en/exchange.js b/src/assets/i18n/en/exchange.js new file mode 100644 index 0000000..fd5d2fc --- /dev/null +++ b/src/assets/i18n/en/exchange.js @@ -0,0 +1,343 @@ +export default { + exchange: "Exchange", + // crypto: 'Crypto Contracts', + perpetualSwap:'Perpetual Swap', + forex: 'Crypto FX Contract', + + contact_us: "Contact Us", + support: "Support", + login: "LogIn", + register: "Register", + + asset: "Asset", + account_exc: "Exchange Account", + recharge: "(Deposit & Withdraw)", + account_con: "Contracts Account", + transfer: "Transfer", + fund: "Fund History", + orders: "Orders", + + exchange_orders: "Exchange Orders", + contract_orders: "Contract Orders", + T1: "T1 Unverified", + T2: "T2 Verified", + T3: "T3 Verified", + commission: "Up to 30% Referral Commission", + security: "Account & Security", + logout: "Login Out", + + 'help1' : `Crypto FX Contract Guide`, + 'help2' : `Contract Specifications`, + + search: 'Search', + fav: 'Favorite', + pair: 'Pair', + price: 'Price', + qty: 'Qty', + total: 'Total', + + change: '24h Change', + high: '24h High', + low: '24h Low', + last: 'Last Price', + volume: '24h Volume', + + ExchangeAccount: 'Exchange Account', + Deposit: 'Deposit', + Withdraw: 'Withdraw', + ContractsAccount: 'Contracts Account', + Transfer: 'Transfer', + FundHistory: 'Fund History', + + PriceUsdt: 'Price(USDT)', + + buy: 'BUY', + sell: 'SELL', + orderType: 'Order Type', + triggerPrice: 'Trigger Price', + limitPrice: 'Limit Price', + + amount: 'Amount', + orderTotal: 'Order Total', + available: 'Available Balance', + + enterAmount: 'Enter the Amount', + enterTotal: 'Enter the Total', + enterPrice: 'Enter the Price', + enterTrigger: 'Enter the Trigger Price', + + bestPrice: 'Execute at the best available price', + + markets: 'Market Trades', + time: 'Time', + opens: 'Open Orders', + histories: 'Order History', + conditions:'Order conditions', + more: 'View more', + + notice: 'Notice', + confirm: 'Confirm', + cancel: 'Cancel', + tips: 'To cancel the order, please click confirm?', + + success: 'Order cancelled successfully', + succeed: 'Order cancelled successfully', + + orderPlaced:'Order placed successfully.', + + chkLogin: 'You need to login first.', + + succefully: 'succefully', + fail: 'Failure', + + detail: 'Detail Contract Information', + FAQ: 'FAQ', + reference: 'Reference', + more: 'More', + + bookList: 'Order Book', + + limit: 'Limit', + market: 'Market', + limitPositions: 'Limit', + marketPositions: 'Market', + + + market: 'Market', + stop: 'Stop', + stopCrypto:'Stop', + stopLimit: 'Stop-Limit', + stopMarket: 'Stop-Market', + + // 交易表单提交验证的气泡提示信息 + lessMinQty : "The minimum amount is", + lessMinTotal : "The total needs at least", + setAPrice : "Please set a good price", + emptyPrice : "Please enter the price.", + emptyQty : "Please enter the limit price.", + emptyTrigger : "Please enter the trigger.", + + Buy:'Buy', + Sell:'Sell', + closePosition:'Close Position', + closePosition_tips:"You can close your position here, which will enter an order into the orderbook for the opposite size of your position. Choose 'Market' to execute immediately. Both actions require optional confirmation.", + + + closeLimitWrap:'Limit Close This Position?', + buyLimitClose:'Buy Limit Close', + sellLimitClose:'Sell Limit Close', + whenExecuted:'When executed, This will close your entire position.', + limitCloseBtn:'Limit Close Position', + + realizedPNL:'Realized PNL', + realizedPNL_tips:'Realized profit and loss since opening this position.', + + + MarketCloseWrap:"Market Close This Position?", + buyMarketClose:'Buy Market Close', + sellMarketClose:'Sell Market Close', + maketWillClose:'This will close your entire position at the market price.', + marketCloseBtn:'Market Close Position', + + unrealized:'Unrealized PNL (ROE %)', + unrealized_tips:'Unrealized profit and loss on this contract (calculate by the last market price), and return on equity percentage.', + + margin:'Margin', + margin_tips:'The current amount of margin locked by this position and your current leverage for this contract. You could add or remove the margin by clicking the button below.', + + addMarginWrap:'Add/Remove Position Margin', + addMargin:'Add Margin', + removeMargin:'Remove Margin', + contracts:'Contracts', + currentPosition:'Your current position', + assignedMargin:'Currently assigned margin', + availableMargin:'Available Balance', + maxRemovable:'Max Removable', + maxRemovable_tips:'You may remove unused added margin from the position, note that unrealized profit is not removeable.', + userRemoveMargin:'Remove Margin', + + liqPrice:'Liq. Price', + 'liqPrice_tips-swap':'If the mark price of this contract reaches below this price(long) or above this price(short), your position will be liquidated.', + 'liqPrice_tips-forex': 'If the index price of this contract reaches below this price(long) or above this price(short), your position will be liquidated.', + + markPrice:'Mark Price', + + entryPrice:'Entry Price', + entryPrice_tips:'The average excuted buy (long) or sell (short) price for this position.', + + value:'Value', + value_tips:'The initial notional value of this position.', + + size:'Size', + size_tips:'Your current position on this contract. If positive, your are long, if negative, short.', + + Contracts:'Contracts', + ADL_Ranking:'ADL Ranking', + ADL_Ranking_tips:"This 5 lights indicate your ADL priority ranking in the Auto Deleveraging (ADL) system. When all 5 lights are lit, it means your position is in the top 20 percentile of the ADL queue. Each light represents a 20% increment to the next percentile. Click for more details.", + + yourPosition:'Your Position:', + ContractsNum:'Contracts', + ROE:'ROE', + ROE_tips:'Return on Equity, ROE = Unrealized PNL/Aggregated Position Margin', + riskLimit:'Risk Limit', + riskLimit_tips:'The maximum value of your positions under this contract. If you need increase this limit, please contact our support team.', + entryPrice_PositionsTips:'The average excuted buy(for long position) or sell(for short position) price for this position.', + liqPrice_PositionsTips:'If the mark price of this contract reaches below this price(long) or above this price(short), your position will be liquidated.', + + orderbook:'Order Book', + marketTrades:'Market Trades', + added:'Total', + + indexPrice:'Index Price, the price of the underlying asset. Click to view historical data.', + goHistorical:' Click to view historical data.', + currentMarkPrice:'Current Mark Price, click for more details.', + + positions:'Positions', + activeOrders:'Active Orders', + stops:'Stops', + orderHistory:'Order History', + contractsPositions:'Contracts', + + orderPrice:'Order Price', + orderPrice_tips:'Limit Price', + filled:'Filled', + filled_tips:'Number of contracts in an order that have been bought/sold. If the order has completed, this is equal to the quantity.', + remaining:'Remaining', + remaining_tips:'Number of contracts in an order that remain to be bought/sold.', + fillPrice:'Fill Price', + fillPrice_tips:'Calculated average price of all fills in this order.', + type:'Type', + type_tips:'The type of the order that you choose.', + status:'Status', + status_tips:'The status of the order. This tells you if an order is New, Partially Filled, Filled, or Canceled. Once a Stop order is triggered it will also be in this Active Orders list.', + timeActive:'Time', + timeActive_tips:'Time at which order was submitted.', + action:'Action', + + triggerPrice_tips:'This is the price at which the stop oder will be triggered and the order will be entered into the Orderbook. After triggered, the order will be moved to Active Orders list.', + statusStop_tips:'For Stop orders, the order has two states when new: untriggered, or triggered. When a Stop order is untriggered it is not yet in the Orderbook and does not consume initial margin.', + fillPriceHistory:'Fill Price', + + contactDetails:'Contract Details:', + expiryDate:'Expiry Date', + perpetual:'Perpetual', + indexPrice:'Index Price', + turnover:'24H Turnover', + openInterest:'Open Interest', + predicted:'Predicted ', + fundingRate:'Funding Rate', + fundingRate_forex: 'Overnight Rate', + fundingRate_tips:'The number shown here is the predicted funding rate for the next funding period. When funding rate larger than 0, longs pay shorts; if negative, shorts pay longs. Funding happens every 8 hour.', + fundingRate_fee : 'Overnight Fee is settled at UTC 00:00 everyday. It will be charged only if you held a positon under this contract at that time point. Overnight fee is calculated by this rate and the notional value of your position.', + + insuranceFund:'Insurance Fund', + insuranceFund_tips:'The current balance of Insurance Fund. It is used to cover unfilled liquidation orders before they trigger the auto-deleverageing system. The Insurance Fund is accumulated from liquidations that were filled in the market at a price better than the bankruptcy price of that particular position.', + contractValue:'Contract Value ', + + // contractValue_tips:'The current value of a single BTCUSD contract.', + + 'markPrice_HeaderTips-swap':'The latest mark price for this contract, used to determine the liquidation. It may differ from the last price for the purposes of acoiding price manipulation. This does not affect settlement,', + 'markPrice_HeaderTips-swap1':'click for more details.', + 'markPrice_HeaderTips-forex' : 'The latest index price for this contract, used to determine the liquidation. Index price does not affect PnL settlements.', + 'markPrice_HeaderTips-forex1' : '', + + valueFactor : "Minimum trading size is 100 contracts", + + fundingRate_HeaderTips:'This is the current funding rate, at the end of the countdown (the current 8h period), it will be using to calculate the funding value settled between longs and shorts. When funding rate larger than 0, longs pay shorts; otherwise, the inverse. Funding happens every 8 hour.', + + highHeader:'24h High', + lowHeader:'24h Low', + volumeHeader:'24h Volume', + changeHeader:'24h Change', + + noPosition:'No Position', + + TOTAL:'TOTAL:', + TOTAL_tips:'Your perpetual swap Account Balance, Account Balance = Deposits – Withdrawals + Realized PNL. ', + AVAIL:'AVAILABLE:', + AVAIL_tips:'Your margin available for new positions. Available balance = Margin Balance – Order Margin – Position Margin.', + + from:'from', + to:'to', + coin:'Coin', + maximum:'Maximum', + avaliable:'Avaliable', + enterQty:'Enter The Qty', + + limit_Tips:'A limit order is an order to buy or sell at a given price or better.', + market_Tips:'A market order will immediately be filled at the best available price from the order book. Execution price may be worse than expected due to price movement.', + stop_Tips:'A stop order will be automatically submitted if specified criteria are met. It can be used to setup stop or take profit strategies.', + + leverage:'Leverage', + leverage_Tips:'Higher leverage accompanies higher risk to be liquidated. Please choose carefully!', + + pricePerpetual:'Price', + qtyPerpetual:'Qty', + orderValue:'Order Value', + + buy_Long:'Buy/Long', + sell_Short:'Sell/Short', + cost:'Cost', + post_Only:'Post-Only', + reduce_Only:'Reduce-Only', + + Qty_limitTips:'The quantity of contracts you wish to buy or sell. For more details, please check the contract details below.', + Qty_marketTips:'The quantity of contracts you wish to buy or sell. For more details, please check the contract details below. Note that depending on the moving price and your available margin, market order may not be fully executed.', + + orderValue_limitTips:'The total notional value of this order (BTC).', + orderValue_marketTips:'The total notional value of this order (BTC). Note that Market orders value is estimated.', + + availableMargin_Tips:'Your margin available for new orders and positions.', + + confirmOrder:'Confirm Your Order', + + marketContracts:'Contracts of BTCUSD at Market', + + yourPosition_buy:'Your Position', + afterExecution:'Position Size After Execution', + markPrice_buy:'Mark Price', + estimated:'Estimated Liquidation Price', + estimated_tips:'The calculation of this estimated liquidation price includes the price of current orders on the OrderBook, it may be different to your final liquidation price.', + 'Est-swap' :'Mark Price/Est.Liquidation Difference', + 'Est-forex' :'Index Price/Est.Liquidation Difference', + cost_Tips:'The cost (in margin) to execute this order. This includes your selected leverage and your current position, if any. In general, reducing a position does not cost margin.', + cost_stopTips:'The cost (in margin) to execute this order while it is triggering, this includes your selected leverage and your current position, if any. Note that this cost is not deducted from your available margin yet, if you do not have enough availble margin at triggering, stop orders will be canceled. In general, reducing a position does not cost margin.', + execute:'Execute at the best available price', + limit_perpetual:'Limit', + market_perpetual:'Market', + stopLimit_perpetual:'Stop Limit', + stopMarket_perpetual:'Stop Market', + + stopLimit_Deal:'StopLimit', + stopMarket_Deal:'StopMarket', + + execution:'The execution price while this stop order is triggered.', + triggerPrice_Tips:'Your stop orders reamin inactive until the Current Price reaches this trigger price. Click for more details.', + + postOnly_Tips:'A post-only order will not execute immediately against the market. Use to ensure a Maker Rebate. If it would execute against resting ordes, it will cancel instead.', + reduceOnly_Tips:'A reduce-only order will only reduce your position, not increase it. If this order would increase your position, it is amended down or canceled.', + + inContact:'in', + inHours:'hours', + + changesLeverage:'Apply changes to the leverage?', + leverageContent:'Each contract can only use one leverage consistently across all active orders and open positions. Please note that changing the leverage while holding a position will change the needed position margin amount and affect the liquidation price.', + notShow:"Don't show this hint again", + + pending_positions:'Pending', + new_positions:'New', + partiallyFilled_positions:'Partially Filled', + filled_positions:'Filled', + + canceled_history:'Canceled', + triggered_history:'Triggered', + completed_history:'Completed', + untriggered:'Untriggered', + cont:'Cont', + + disconnect:'Error: Server Disconnect!', + + transactionFee:'Transaction Fee', + details:'Details', + closedMarket :'Market Closed. It is not the trading hour for this contract, you can choose to submit Stop Orders' +} \ No newline at end of file diff --git a/src/assets/i18n/en/financial.js b/src/assets/i18n/en/financial.js new file mode 100644 index 0000000..15b0d91 --- /dev/null +++ b/src/assets/i18n/en/financial.js @@ -0,0 +1,89 @@ +const financial = { + vInancial:`VirgoX Financial`, + assetsCount:`Make Your Idle Assets Count`, + account:`Financial Account`, + instruction:`Yield Instruction`, + guaranteed:`Guaranteed Annual Yield`, + fixedYield:`Fixed Annual Yield`, + day:`Days`, + total:`Total `, + availableOnly:`Display available only`, + settlement:`Settlement Annual Yield`, + startDate:`Subscription Start Date`, + endDate:`Subscription End Date`, + subscribeBtn:`Subscribe`, + participate:'How to Participate?', + subscribe: `Subscribe `, + subscribeDec:`With VirgoX Finance, you can choose from a wide suite of crypto saving options. Currently Available in Bitcoin (BTC), Tether (USDT). `, + hold:`Hold `, + holdDec:`VirgoX Finance helps to maximize your profit. All you need to do is hold your digital assets and purchase VirgoX Financial products. You will earn stable interest and grow your wealth.`, + earn: `Earn`, + earnDec:`Interest will be distributed to your VirgoX account on the redemption date (for Earnwell) automatically.`, + FAQ:`FAQ`, + FAQTitle1:`1. What are Earnwell Products?`, + FAQContent1:`Committed to holding your crypto? Now you can earn interest at the same time! Our Earnwell products have guaranteed minimum returns during the locked period. At the same time, depends on different products’ terms, when the crypto market goes through fluctuations, you may also enjoy penitential extra returns.`, + FAQTitle2:`2. What happens to my funds on the day I subscribe to VirgoX Financial products?`, + FAQContent2:`On the day of subscription, VirgoX will deduct the funds for subscription from your exchange wallet. Depends on different products’ terms, interest will be calculated accordingly.`, + FAQTitle3:`3..What happens to my funds on the redemption date of VirgoX Financial products?`, + FAQContent3:`On the redemption date, you will see both the initial tokens committed to the subscription and the accrued interest in your VirgoX account. This process will be automatic.`, + FAQTitle4:`4. If I subscribe to a VirgoX financial product, when can I redeem my funds?`, + FAQContent4:`For Earnwell products, redemption is not allowed during lock-up period.`, + FAQTitle5:`5. How often do I receive interest from a VirgoX financial product?`, + FAQContent5:`For Earnwell products, interest will be distributed directly to your account on redemption day.`, + + + FAQTitle6:`6. Will VirgoX Financial continue to add more products & support for tokens other than those currently available?`, + FAQContent6:`Yes, VirgoX Financial will be constantly evaluating new coins/tokens to be supported as financial products. Products will be supported based on demand and delivering the best value to VirgoX’s users.`, + log:`Please register and log in to continue. `, + subscription:` Subscription`, + asset:` Asset`, + guaranteeds:`Annual Yield`, + fixed:`Fixed Period`, + valueDate:`Value Date`, + redemptionDate:`Redemption Date`, + enterAmount:`Please enter the amount`, + max:`Max`, + available:`Available`, + subscriptionLimit:`Personal Subscription Limit`, + interest:`Guaranteed Interest`, + estimatedInterest:`Estimated Interest`, + confirm:`Confirm Subscription`, + expected:`Expected Annual Yield`, + price:`Settlement Price`, + confirmBtn:`Confirm`, + more:`more`, + + notStarted:`Not Started`, + subscriptionEnded:`Subscription Ended`, + earning:`Earning`, + clearing:`Clearing`, + settled:`Settled`, + + accountEstimated:`Account Estimated Value`, + totalInterestEarned:`Total Interest Earned`, + earnwell:`Earnwell`, + earnwellDec:`Enjoy Liquidity and Profitability; Guaranteed minimum returns with upside opportunities`, + operationDate:`Operation Date`, + lockedAmount:`Locked Amount`, + fixedPeriod:`Fixed Period`, + realInterest:`Real Interest`, + status:`Status`, + + subscribed:`Subscribed`, + details:`Details`, + remainingTotal:`Remaining Total Amount`, + features:`Features of VirgoX Financial`, + + featuresDec:`Safe principle and taming volatilities.Innovative products with high earning potentials.Flexible short-term design`, + + + maximumTips:`The amount you entered is larger than the remaining total amount.`, + minimumTips:`The amount you entered is smaller than the minimum amount.`, + remainingTips:`The subscription amount cannot exceed the available amount.`, + subscriptionAmountTips:`The remaining total amount is smaller than the minimum subscription amount.`, + enterPurchase:`Please enter the amount.`, + successTips:`Subscription success`, + comingSoon:`Coming Soon!`, +} + +export default financial \ No newline at end of file diff --git a/src/assets/i18n/en/fundHistory.js b/src/assets/i18n/en/fundHistory.js new file mode 100644 index 0000000..27ee9fa --- /dev/null +++ b/src/assets/i18n/en/fundHistory.js @@ -0,0 +1,25 @@ +const fundHistory ={ + fundHistory:'Fund History', + + assetList:'Asset List', + searchAsset:'Search Asset', + management:'Address Management', + deposit:'Deposit', + withdrawal:'Withdrawal', + rewards:'Commission', + + asset:'Asset', + date:'Date', + address:'Address', + hash:'Hash', + amount:'Amount', + progress:'Progress', + status:'Status', + completed:'Completed', + processing:'Processing', + failed:'Failed', + fee:'Fee', + account:'Account', + allAssets:'All Assets' +} +export default fundHistory \ No newline at end of file diff --git a/src/assets/i18n/en/historical.js b/src/assets/i18n/en/historical.js new file mode 100644 index 0000000..82e90cb --- /dev/null +++ b/src/assets/i18n/en/historical.js @@ -0,0 +1,30 @@ +export default{ + perpetual:'Constracts Historical Data', + daily_perpetual:'PERP Swap Insurance Fund Balance', + daily_foreign:'Fx Contract Insurance Fund Balance', + daily_tips:'VirgoX uses an Insurance Fund to avoid Auto-Deleveraging in traders’ positions. The fund is used to cover the losses of unfilled liquidation ', + daily_tips1:'orders before they are taken over by the auto-deleveraging system.', + daily_tips2:'The Insurance Fund grows from liquidations that were able to be executed in the market at a price better than the bankruptcy price of that position. You can view the current and historical balances of the Insurance Fund below.', + date:'Date', + insurance:'Insurance Fund Balance', + // index:'Index Price History', + index:'PERP Swap Index Price History', + BTCIndex_tips:'The underlying assets of BTCUSD perpetual swap is spot BTC/USD, and the trading price is anchored to the BTC/USD index price,', + BTCIndex_tips1:'this index is built from multiple source, please check the support for details. Here are the recent prices for this BTC index.', + ETHIndex_tips:'The underlying assets of ETHUSD perpetual swap is spot ETH/USD, and the trading price is anchored to the ETH/USD index price,', + ETHIndex_tips1:'this index is built from multiple source, please check the support for details. Here are the recent prices for this ETH index.', + time:'Time', + contract:'Contract', + indexPrice:'Index Price', + + funding:'PERP Swap Funding Rate History', + foreign_funding:'Crypto FX Contract Index Price History', + funding_tips:'This list contains all historical funding rates for all perpetual swaps.', + fundingInterval:'Funding Interval', + fundingRate:'Funding Rate', + allHistory_price:'Here is the index price history of all perpetual contracts', + allHistory_foreignPrice:'Here is the index price history of all Crypto FX Contract', + every:'Every' , + hours:'hours', + +} \ No newline at end of file diff --git a/src/assets/i18n/en/home.js b/src/assets/i18n/en/home.js new file mode 100644 index 0000000..b1a679d --- /dev/null +++ b/src/assets/i18n/en/home.js @@ -0,0 +1,58 @@ +export default { + experience:'The New Era Of Digital Currency Trading', + start:'Start Today', + markets:'Markets', + pair:'Pair', + price:'Price', + change:'24h Change', + H24Max:'24h High', + H24Min:'24h Low', + H24Vol:'24h Volume', + H24Turnover:'24h Turnover', + croptoTitle:'World Stablecoin Trading Center ', + + croContLs_p1:"VirgoX provides extensive stablecoin trading pairs and incubates stablecoin projects from early stages.", + croContLs_p2:"With its complete ecosystem ranging from spot & contract trading, lending,payments & remittance,VirgoX is able", + croContLs_p3:'to offer sustainable values to global stablecoin projects and traders.VirgoX consistently innovates new product offerings ', + croContLs_p4:'in the rapidly evolving industry to accommodate users’ needs. ', + + features:'Our Features', + + partners:`Investors & Partners`, + + perpetual_title:'Forex Perpetual Contracts', + perpetual_cont:"World's first Forex Perpetual Contracts settled in stablecoins with up to 100x leverage. The VirgoX Forex Perpetual Contract is a fast and cost-effective option to trade forex while leveraging digital currency. ", + + stablecoin_title:`World's First Stablecoin Trading Center`, + stablecoin_cont:'VirgoX houses a strong Stablecoin eco-system. A complete infrastructure including Stablecoin trading, payment, remittance. Be part of the next global hub for high-quality Stablecoins. ', + + security_title:'Impeccable Security', + security_cont:`VirgoX’s digital currency custody utilizes Ledger’s institutional vault system which is covered by ledger's insurance for up to 150 million USD. VirgoX also leverages multi-signature cold wallet technology and more than 98% of the assets will be stored in the cold wallet. The highest standard of market risk control procedure is implemented to ensure the safety of clients' funds.`, + + service_title:'24/7 Multi-Language Support', + service_cont:`Our customer support staff are available 24/7 across the globe. Talk to us through live chat or email us at support@virgox.com`, + + analy_title:`Advanced Analytics`, + analy_cont:`Traders can use various charting tools and indicators with our robust analytic functions on the trading page.`, + + liquidity_title:`Deep Liquidity`, + liquidity_cont:`Get access to high liquidity across VirgoX's trading platforms 24/7. `, + + technology_title:`Proprietary Technology`, + technology_cont:`VirgoX’s time-tested technology is developed with industry expertise and ensures optimized functionalities.`, + + currency:`VirgoX is a revolutionary one-stop stablecoin focused digital asset trading platform inspired by global adoptions of stablecoins and growing demands for integrated exchange services. VirgoX offers spot & contracts trading, crypto lending and multiple currency fiat onramp and offramp, all integrated into one place that truly meets users’ needs and beyond. `, + + Loginfirst:'Please log in first. ', + Login:'Login', + register:`Register`, + Cancel:'Cancel', + succefully:'succefully', + Tips:'Tips', + Favorite:'Favorite', + blackList : `

It appears that you are visiting from the United States of + America. Unfortunately, VirgoX is not able to provide + services to citizens or tax residents of the United States of + America. Sorry for the inconvenience.

`, + core_advantages:"My core strength is data" +} diff --git a/src/assets/i18n/en/index.js b/src/assets/i18n/en/index.js new file mode 100644 index 0000000..581e328 --- /dev/null +++ b/src/assets/i18n/en/index.js @@ -0,0 +1,10 @@ + +import nav from "./nav"; +import commom from './commom'; +import login from './login'; + +export default { + nav, + commom, + login +} \ No newline at end of file diff --git a/src/assets/i18n/en/invite.js b/src/assets/i18n/en/invite.js new file mode 100644 index 0000000..b73f907 --- /dev/null +++ b/src/assets/i18n/en/invite.js @@ -0,0 +1,27 @@ +const invite = { + invite:`Invite`, + receive:`Receive a 30% revenue share on all trading commissions generated by your referrals!`, + join:`Join the VirgoX Referral Program`, + view:`View My Commission`, + viewDetails:`View Details`, + step1:`Step 1: Get Link`, + step2:`Step 2: Invite Friends`, + step3:`Step 3: Earn Rewards`, + info:`Referral Info`, + link:`Referral Link`, + code:`Referral Code`, + QR:`Share QR Code`, + user:`Registered User`, + terms:`Terms & Conditions`, + // b:`The Revenue Share`, + // p1:`equals to 20% of referee’s trade fees.`, + // p2:`will be credited to the referrer’s account within 10 minutes of the settlement of the referee’s trade.`, + // p3:`is subject to the following starting and end dates. Only accounts who qualify on or after the starting date and on or before the end date may be eligible to receive the Revenue Share.`, + // p31:``, + // p32:``, + // p4:``, + // p5:``, + // p6:``, +} + +export default invite \ No newline at end of file diff --git a/src/assets/i18n/en/login.js b/src/assets/i18n/en/login.js new file mode 100644 index 0000000..2dff0e7 --- /dev/null +++ b/src/assets/i18n/en/login.js @@ -0,0 +1,95 @@ +const Login = { + login:`Log In`, + come:`Welcome back! Let’s trade.`, + account:`Account`, + enterAccount:`Enter Phone Number/Email`, + pwd:`Password`, + enterPwd:`Enter Password`, + forgotPwd:`Forgot Password?`, + dontAccunt:`Don’t have an account yet?`, + registerBtn:`Register`, + SMS:'SMS', + Google:'Google', + Email:'Email', + SMS_ver:'SMS Verification', + Google_ver:'Google Verification', + Email_ver:'Email Verification', + enterValid:'Please enter a valid phone or email!', + enterPwdTips:'Please enter the Password.', + + + // 谷歌验证码翻译 + authenticationCode:'Authentication Code', + // 手机邮件验证码翻译 + resend:'Resend', + + googleAuthenticator:"Please input the 6-digit code on your Google Authenticator App", + phoneAuthenticator:"Please input the 6-digit code we sent to your phone number: ", + emailAuthenticator:"Please input the 6-digit code we sent to your email: ", + + register:`Register`, + startTrad:`Start Trading Today`, + emailBtn:`Email`, + phone:`Phone`, + emailAddress:`Email Address`, + enterEmailAddress:`Enter Email Address`, + phoneNum:`Phone Number`, + enterPhoneNum:`Enter Phone Number`, + referral:'Referral Code ', + optional:`(Optional)`, + enterReferral:`Enter Referral Code`, + protocol1_1:`I have read and agree to the `, + protocol1_2:`Terms of Service`, + protocol1_3:` and `, + protocol1_4:`Privacy Policy`, + protocol1_5:` and I am at least 18 years of age`, + + protocol2:`I attest that I am not a citizen or a tax resident of the United States of America or Canada.`, + protocol3:`I agree to receive marketing and promotional information from www.virgox.com via the email provided in this form.`, + alreadyAccount:`Already have an account?`, + loginBtn:`Login`, + + agree:'Fields denoted with an “*” must be completed!', + successfully:'Register completed. Please login', + + verifyEmailNum:'Verify Email Address', + enterEmailNumTips:'Please input the 6-digit verification code we sent to your email ', + enterEmailNum_1:' to activate your account. ', + + verifyPhoneNum:'Verify Phone Number', + enterPhoneNumTips:'Please input the 6-digit verification code we sent to your phone number ', + enterPhoneNum_1:' to activate your account. ', + verificationCode:'Verification Code', + + + noEmail:"If you haven't received the email, please try the following checks:", + noEmail_1:"Please make sure the email address you entered was correct.", + noEmail_2:"Please check your Spam or Junk mail folders.", + noEmail_3:'Please add VirgoX address to your email address whitelist. ', + noEmail_4:' Learn more', + noEmail_5:'Please make sure your email is connected to the stable internet.', + + noSMS:"If you haven't received the message (SMS) , please try the following checks:", + noSMS_1:'Please make sure the phone number and the area code you entered were correct.', + noSMS_2:'Please make sure your phone has a stable signal.', + enterValidEmail:'Please enter a valid email!', + enterValidPhone:'Please enter a valid phone.', + pleaseEnterEmail:'Please enter the Email.', + pleaseEnterPhone:'Please enter the Phone.', + pleaseEnterPassword:'Please enter the Password.', + + pwdRegular:'The password must be between 8 and 15 characters with at least one number and one letter. Symbols are allowed.', + + resetPwd:`Reset Password`, + registeredAccount:`Registered Account`, + confirm:`Confirm`, + + newPwd:'New Password', + confirmPwd:'Confirm Password', + setNewPwd:'Set New Password', + inconsistent:'The password does not match!', + reset:'Reset completed. Please login again', + back:'Back', +} + +export default Login \ No newline at end of file diff --git a/src/assets/i18n/en/nav.js b/src/assets/i18n/en/nav.js new file mode 100644 index 0000000..626971c --- /dev/null +++ b/src/assets/i18n/en/nav.js @@ -0,0 +1,12 @@ +const nav = { + assets:`Assets`, + contract:`Contract Accounts`, + transfer:`Transfer`, + excOrders:`Exchange Orders`, + contractOrders:`Contract Orders`, + fundHistory:`Fund History`, + security:`Security`, + invite:`Invite Friends`, +} + +export default nav \ No newline at end of file diff --git a/src/assets/i18n/en/order.js b/src/assets/i18n/en/order.js new file mode 100644 index 0000000..f768c06 --- /dev/null +++ b/src/assets/i18n/en/order.js @@ -0,0 +1,55 @@ +const orders = { + exchange: 'Exchange Orders', + open: 'Open Orders', + history: 'Order History', + + + orderType: 'Order Type', + + date: 'Date', + pair: 'Pair', + direction: 'Direction', + + type: 'Type', + price: 'Price', + + stopPrice: 'Stop Price', + executed: 'Executed', + outstanding: 'Outstanding', + + total: 'Total', + action: 'Action', + status: 'Status', + cancelOrder: 'Cancel', + details: 'Details', + average: 'Average', + averagePrice: 'Average Price', + limitPrice: 'Limit Price', + filled: 'Filled', + quantity: 'Quantity', + + notice:'Notice', + fee: 'Fee', + tips:'To cancel the order, please click confirm.', + confirm:'Confirm', + cancel:'Cancel', + + // success: 'Order cancelled successfully', + + buy: 'BUY', + sell: 'SELL', + + limit: 'Limit', + market: 'Market', + stop: 'Stop', + stopLimit: 'Stop-Limit', + stopMarket: 'Stop-Market', + + contract: 'Contract Orders', + forex: 'Open Orders-Crypto FX Contract', + forexHistory: 'Order History-Crypto FX Contract', + crypto: 'Open Orders - PERP Swap', + cryptoHistory: 'Order History - PERP Swap', + pending: 'Pending' +} +export default orders \ No newline at end of file diff --git a/src/assets/i18n/en/personalVer.js b/src/assets/i18n/en/personalVer.js new file mode 100644 index 0000000..1199fdb --- /dev/null +++ b/src/assets/i18n/en/personalVer.js @@ -0,0 +1,63 @@ +export default{ + title:'Personal Account Verification', + profile:'Personal Profile', + upload:'Upload Documents', + submitted:`Verifcation Submitted`, + firstName:'Legal First Name', + middleName:'Legal Middle Name', + lastName:'Legal Last Name', + birth:'Date of Birth (YYYY-MM-DD)*', + addressInfo:'Address Information', + errorTips:`Verification failed, please check the information provided and submit again.`, + residence:'Residence Address*', + city:'City*', + postalCode:'Postal Code*', + country:'Country or Territory*', + optional:'Additonal Information Field (Optional)', + contactInfo:'Contact Information', + phone:'Phone*', + next:'Next', + + docType:'Select Document Type', + following:'Identity Document – Please upload one (1) of the following:', + back:'Back', + submit:'Submit', + remove:'Remove', + + passport:'Passport', + driver:'Driver’s License', + national:'National ID Card', + + successfully:'Your verification request has been successfully submitted! We will inform you as soon as we get the result.', + done:'Done', + fileUploaded:'File Uploaded! Remove to add new one', + firsts:'If you have multiple Legal First Name, please enter all of them.', + lasts:'If you have multiple Legal Last Name, please enter all of them.', + + firstNameTips:'Please enter the legal first name.', + lastNameTips:'Please enter the legal last name.', + birthTips:'Please enter the date of birth.', + residenceTips:'Please enter the residence address.', + cityTips:'Please enter the city.', + postalCodeTips:'Please enter the postal code.', + countryTips:'Please select the Country or Territory. ', + areaCodeTips:'Please select the area code.', + phoneNumTips:'Please enter the phone number.', + + uploadIdentityDoc1:`Please upload the front side of the identity document.`, + uploadIdentityDoc2:`Please upload the reverse side of the identity document.`, + invalidFile:`Invalid file type. Please upload the file that meets the requirements.`, + fileSizeExceeds:`The file size exceeds the limit. Please upload the file that meets the requirements.`, + uploadFailed:`The file upload failed. Please try again.`, + + enterFirstName:`Enter Legal First Name`, + enterMidName:`Enter Legal Middle Name`, + enterLastName:`Enter Legal Last Name`, + selectBirth:`Select Date of Birth`, + enterResidence:`Enter Residence Address`, + enterCity:`Enter City Name`, + enterPostal:`Enter Postal Code`, + selectCountry:`Select Country or Territory`, + enterAdditonal:`Enter Additonal Information Field (Optional)`, + enterPhoneNum:`Enter Phone Number`, +} \ No newline at end of file diff --git a/src/assets/i18n/en/security.js b/src/assets/i18n/en/security.js new file mode 100644 index 0000000..2d72d2e --- /dev/null +++ b/src/assets/i18n/en/security.js @@ -0,0 +1,93 @@ +const Security = { + security:`Account & Security`, + info:`Account Information`, + unverified:`Unverified`, + verified:`Verified`, + status:`Verification Status`, + max:`Max`, + limit:` 24h Withdrawal Limit`, + tiers:`Verification Tiers`, + over:`Over`, + verify:`Verify`, + contactUs:`Contact Us`, + loginPwd:`Login Password`, + logging:`Used for logging into your account. `, + reset:`Reset`, + modification:`Used for login, withdrawals and security modifications.`, + disable:`Disable`, + enable:`Enable`, + enabled:`Enabled`, + notEnabled:`Not Enabled`, + SMS_ver:`SMS Verification`, + delete:`Delete`, + notifica:`Deposit & Withdrawal Notification`, + transactionPwd:`Transaction Password`, + placing:`Used for placing contract and exchange orders.`, + setPwd:`Set Password`, + management:`Address Management`, + addManagement:`Used for withdrawal address management.`, + address:`address`, + addresses:`addresses`, + manage:`Manage`, + emailVer:`Email Verification`, + // Used for login_withdrawalsandsecurity_modifications:`Used for login, withdrawals and security modifications`, + promotionalInfo:`Marketing & Promotional Information`, + history:`Login History`, + display:`Used for login history display.`, + details:`Details`, + date:`Date`, + location:`Location`, + address_ip:`IP Address`, + device:`Login Device`, + emailCodeTips:"Please enter the Email Verification Code.", + smsCodeTips:"Please enter the SMS Verification Code.", + googleCodeTips:"Please enter the Google Authentication Code.", + oldPwdTips:"Please enter the old password", + newPwdTips:"Please enter the new password", + + typePwd:'Password must be between 8 and 15 characters with at least one number and one letter. Symbols are allowed. ', + confirmPwd:'Please enter the confirmed password.', + inconformity:'The password does not match', + + successfully:'Operation success!', + transactionTips:'Please enter the reset transaction password。', + digitNum:`The transaction password must be 6-digit number.`, + transactionConfirmedTips:'Please enter the confirmed transaction password。', + + bindingSuccess:'Google Authentication is enabled', + emailType:'Please enter the correct Email address.', + + copySucceed:'Copied Succeed', + copyFailed:'Copied Failed', + + // EmailVerification:'Email Verification', + // SMSVerification:'SMS Verification', + googleVer:'Google Verification', + + confirm:'Confirm', + + phone:'Phone', + email:'Email', + QRCode:"Please scan the QR Code", + googleKey:'Google Authenticator Key', + googleCode:'Google Authentication Code', + + oldPwd:'Old Password', + newPwd:'New Password', + + confirmNewPwd:'Confirm New Password', + confirmTransactionPwd:'Confirm Transaction Password', + individual:'Individual', + resetPwd:'Reset Password', + + securityVer:'Security Verification', + enablePhone:'Enable SMS Authentication', + enableEmail:'Enable Email Authentication', + enableGoogle:'Enable Google Authentication', + + selectVer:'Select Verification Type', + leaseOne:`At lease one verification method should be kept. (Google, SMS or Email)`, + notMatch:`Password does not match.`, + oneKind:`(At lease one verification should be kept.)`, +} +export default Security \ No newline at end of file diff --git a/src/assets/i18n/en/transfer.js b/src/assets/i18n/en/transfer.js new file mode 100644 index 0000000..db90038 --- /dev/null +++ b/src/assets/i18n/en/transfer.js @@ -0,0 +1,26 @@ +const transfer = { + title:`Internal Transfer`, + exchange:`Exchange Account`, + forex:`Crypto FX Contracts Account`, + crypto:`Perpetual Swap Account`, + instructions:`Instructions`, + dec1:`Please note that internal transfers are free and automatic. `, + dec2:`Only USDT shall be transferred to your Crypto FX Contract Account.`, + dec3:`Only BTC shall be transferred to your Perpetual Swap Account.`, + dec4:`If you wish to trade Crypto FX Contract, you must transfer USDT to your Crypto FX Account first as margin. `, + dec5:`If you wish to trade Perpetual Swap, you must transfer BTC to your Perpetual Swap Account first as margin.`, + USDT:`USDT History`, + BTC:`BTC History`, + all:`All Assets History`, + asset:`Asset`, + amount:`Amount`, + from:`From`, + to:`To`, + time:`Time`, + status:`Status`, + success:`Success`, + blog:'VirgoX Academy', + slogan:'Grow Your Crypto Here', + article_blank:'No content, stay tuned!' +} +export default transfer \ No newline at end of file diff --git a/src/assets/i18n/index.js b/src/assets/i18n/index.js new file mode 100644 index 0000000..2ea770b --- /dev/null +++ b/src/assets/i18n/index.js @@ -0,0 +1,32 @@ +import Vue from 'vue' +import VueI18n from 'vue-i18n' +// import enLocale from 'element-ui/lib/locale/lang/en' +// import zhLocale from 'element-ui/lib/locale/lang/zh-CN' +import en from './en' +import cn from './cn' +import jp from './jp' +import kor from './kor' +import qs from 'qs' + +Vue.use(VueI18n) + +let UALang = navigator.language.includes('zh') ? 'cn' : 'en'; + +let local = localStorage.lang || UALang; + +// 检测地址栏有无指定语言 +let querystring = location.search.slice(1); +if (querystring.includes('lang')) { + local = qs.parse(querystring)['lang']; +} + +// 加载i8n语言包 +const i18n = new VueI18n({ + locale: local, // 默认语言 + messages: { en, cn, jp ,kor} // 文件列表 +}); + +// 加载element语言包 +// local == 'cn' ? ELEMENT.locale(ELEMENT.lang.zhCN) : ELEMENT.locale(ELEMENT.lang.en) + +export default i18n; \ No newline at end of file diff --git a/src/assets/i18n/jp/index.js b/src/assets/i18n/jp/index.js new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/i18n/kor/index.js b/src/assets/i18n/kor/index.js new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/icon/alarm-fill.svg b/src/assets/icon/alarm-fill.svg new file mode 100644 index 0000000..1654907 --- /dev/null +++ b/src/assets/icon/alarm-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/alarm.svg b/src/assets/icon/alarm.svg new file mode 100644 index 0000000..d89a458 --- /dev/null +++ b/src/assets/icon/alarm.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/icon/align-bottom.svg b/src/assets/icon/align-bottom.svg new file mode 100644 index 0000000..c86cf89 --- /dev/null +++ b/src/assets/icon/align-bottom.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/align-center.svg b/src/assets/icon/align-center.svg new file mode 100644 index 0000000..d2f0438 --- /dev/null +++ b/src/assets/icon/align-center.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/align-end.svg b/src/assets/icon/align-end.svg new file mode 100644 index 0000000..0e27501 --- /dev/null +++ b/src/assets/icon/align-end.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/align-middle.svg b/src/assets/icon/align-middle.svg new file mode 100644 index 0000000..eb95e80 --- /dev/null +++ b/src/assets/icon/align-middle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/align-start.svg b/src/assets/icon/align-start.svg new file mode 100644 index 0000000..19db6ec --- /dev/null +++ b/src/assets/icon/align-start.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/align-top.svg b/src/assets/icon/align-top.svg new file mode 100644 index 0000000..843e661 --- /dev/null +++ b/src/assets/icon/align-top.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/alt.svg b/src/assets/icon/alt.svg new file mode 100644 index 0000000..485c160 --- /dev/null +++ b/src/assets/icon/alt.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/app-indicator.svg b/src/assets/icon/app-indicator.svg new file mode 100644 index 0000000..da568cd --- /dev/null +++ b/src/assets/icon/app-indicator.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/app.svg b/src/assets/icon/app.svg new file mode 100644 index 0000000..a39608f --- /dev/null +++ b/src/assets/icon/app.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/archive-fill.svg b/src/assets/icon/archive-fill.svg new file mode 100644 index 0000000..32a664f --- /dev/null +++ b/src/assets/icon/archive-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/archive.svg b/src/assets/icon/archive.svg new file mode 100644 index 0000000..ce7b1e6 --- /dev/null +++ b/src/assets/icon/archive.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-90deg-down.svg b/src/assets/icon/arrow-90deg-down.svg new file mode 100644 index 0000000..8efaf49 --- /dev/null +++ b/src/assets/icon/arrow-90deg-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-90deg-left.svg b/src/assets/icon/arrow-90deg-left.svg new file mode 100644 index 0000000..23f4002 --- /dev/null +++ b/src/assets/icon/arrow-90deg-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-90deg-right.svg b/src/assets/icon/arrow-90deg-right.svg new file mode 100644 index 0000000..195c83b --- /dev/null +++ b/src/assets/icon/arrow-90deg-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-90deg-up.svg b/src/assets/icon/arrow-90deg-up.svg new file mode 100644 index 0000000..199264c --- /dev/null +++ b/src/assets/icon/arrow-90deg-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-bar-down.svg b/src/assets/icon/arrow-bar-down.svg new file mode 100644 index 0000000..f7ecb98 --- /dev/null +++ b/src/assets/icon/arrow-bar-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-bar-left.svg b/src/assets/icon/arrow-bar-left.svg new file mode 100644 index 0000000..c31b90d --- /dev/null +++ b/src/assets/icon/arrow-bar-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-bar-right.svg b/src/assets/icon/arrow-bar-right.svg new file mode 100644 index 0000000..1c9988e --- /dev/null +++ b/src/assets/icon/arrow-bar-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-bar-up.svg b/src/assets/icon/arrow-bar-up.svg new file mode 100644 index 0000000..1eb373b --- /dev/null +++ b/src/assets/icon/arrow-bar-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-clockwise.svg b/src/assets/icon/arrow-clockwise.svg new file mode 100644 index 0000000..03245cc --- /dev/null +++ b/src/assets/icon/arrow-clockwise.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-counterclockwise.svg b/src/assets/icon/arrow-counterclockwise.svg new file mode 100644 index 0000000..72cf965 --- /dev/null +++ b/src/assets/icon/arrow-counterclockwise.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-down-circle-fill.svg b/src/assets/icon/arrow-down-circle-fill.svg new file mode 100644 index 0000000..a943fda --- /dev/null +++ b/src/assets/icon/arrow-down-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-down-circle.svg b/src/assets/icon/arrow-down-circle.svg new file mode 100644 index 0000000..7ca727c --- /dev/null +++ b/src/assets/icon/arrow-down-circle.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-down-left-circle-fill.svg b/src/assets/icon/arrow-down-left-circle-fill.svg new file mode 100644 index 0000000..d33a859 --- /dev/null +++ b/src/assets/icon/arrow-down-left-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-down-left-circle.svg b/src/assets/icon/arrow-down-left-circle.svg new file mode 100644 index 0000000..e10c2a7 --- /dev/null +++ b/src/assets/icon/arrow-down-left-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-down-left-square-fill.svg b/src/assets/icon/arrow-down-left-square-fill.svg new file mode 100644 index 0000000..5852ade --- /dev/null +++ b/src/assets/icon/arrow-down-left-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-down-left-square.svg b/src/assets/icon/arrow-down-left-square.svg new file mode 100644 index 0000000..55e50b5 --- /dev/null +++ b/src/assets/icon/arrow-down-left-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-down-left.svg b/src/assets/icon/arrow-down-left.svg new file mode 100644 index 0000000..a79ebfc --- /dev/null +++ b/src/assets/icon/arrow-down-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-down-right-circle-fill.svg b/src/assets/icon/arrow-down-right-circle-fill.svg new file mode 100644 index 0000000..2a7249c --- /dev/null +++ b/src/assets/icon/arrow-down-right-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-down-right-circle.svg b/src/assets/icon/arrow-down-right-circle.svg new file mode 100644 index 0000000..4d600f2 --- /dev/null +++ b/src/assets/icon/arrow-down-right-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-down-right-square-fill.svg b/src/assets/icon/arrow-down-right-square-fill.svg new file mode 100644 index 0000000..eaf4da1 --- /dev/null +++ b/src/assets/icon/arrow-down-right-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-down-right-square.svg b/src/assets/icon/arrow-down-right-square.svg new file mode 100644 index 0000000..086e186 --- /dev/null +++ b/src/assets/icon/arrow-down-right-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-down-right.svg b/src/assets/icon/arrow-down-right.svg new file mode 100644 index 0000000..0289605 --- /dev/null +++ b/src/assets/icon/arrow-down-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-down-short.svg b/src/assets/icon/arrow-down-short.svg new file mode 100644 index 0000000..a94eceb --- /dev/null +++ b/src/assets/icon/arrow-down-short.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-down-square-fill.svg b/src/assets/icon/arrow-down-square-fill.svg new file mode 100644 index 0000000..21b16f8 --- /dev/null +++ b/src/assets/icon/arrow-down-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-down-square.svg b/src/assets/icon/arrow-down-square.svg new file mode 100644 index 0000000..1150b71 --- /dev/null +++ b/src/assets/icon/arrow-down-square.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-down-up.svg b/src/assets/icon/arrow-down-up.svg new file mode 100644 index 0000000..e4d8f59 --- /dev/null +++ b/src/assets/icon/arrow-down-up.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-down.svg b/src/assets/icon/arrow-down.svg new file mode 100644 index 0000000..d65c085 --- /dev/null +++ b/src/assets/icon/arrow-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-left-circle-fill.svg b/src/assets/icon/arrow-left-circle-fill.svg new file mode 100644 index 0000000..bbc5081 --- /dev/null +++ b/src/assets/icon/arrow-left-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-left-circle.svg b/src/assets/icon/arrow-left-circle.svg new file mode 100644 index 0000000..4a7fee3 --- /dev/null +++ b/src/assets/icon/arrow-left-circle.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-left-right.svg b/src/assets/icon/arrow-left-right.svg new file mode 100644 index 0000000..9354aab --- /dev/null +++ b/src/assets/icon/arrow-left-right.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-left-short.svg b/src/assets/icon/arrow-left-short.svg new file mode 100644 index 0000000..85e4664 --- /dev/null +++ b/src/assets/icon/arrow-left-short.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-left-square-fill.svg b/src/assets/icon/arrow-left-square-fill.svg new file mode 100644 index 0000000..fb333ab --- /dev/null +++ b/src/assets/icon/arrow-left-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-left-square.svg b/src/assets/icon/arrow-left-square.svg new file mode 100644 index 0000000..dfa4962 --- /dev/null +++ b/src/assets/icon/arrow-left-square.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-left.svg b/src/assets/icon/arrow-left.svg new file mode 100644 index 0000000..444b05a --- /dev/null +++ b/src/assets/icon/arrow-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-repeat.svg b/src/assets/icon/arrow-repeat.svg new file mode 100644 index 0000000..1884a27 --- /dev/null +++ b/src/assets/icon/arrow-repeat.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-return-left.svg b/src/assets/icon/arrow-return-left.svg new file mode 100644 index 0000000..ffe5296 --- /dev/null +++ b/src/assets/icon/arrow-return-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-return-right.svg b/src/assets/icon/arrow-return-right.svg new file mode 100644 index 0000000..37db885 --- /dev/null +++ b/src/assets/icon/arrow-return-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-right-circle-fill.svg b/src/assets/icon/arrow-right-circle-fill.svg new file mode 100644 index 0000000..60b6051 --- /dev/null +++ b/src/assets/icon/arrow-right-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-right-circle.svg b/src/assets/icon/arrow-right-circle.svg new file mode 100644 index 0000000..9063e6e --- /dev/null +++ b/src/assets/icon/arrow-right-circle.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-right-short.svg b/src/assets/icon/arrow-right-short.svg new file mode 100644 index 0000000..df2a0ec --- /dev/null +++ b/src/assets/icon/arrow-right-short.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-right-square-fill.svg b/src/assets/icon/arrow-right-square-fill.svg new file mode 100644 index 0000000..4a65cad --- /dev/null +++ b/src/assets/icon/arrow-right-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-right-square.svg b/src/assets/icon/arrow-right-square.svg new file mode 100644 index 0000000..da002a6 --- /dev/null +++ b/src/assets/icon/arrow-right-square.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-right.svg b/src/assets/icon/arrow-right.svg new file mode 100644 index 0000000..5f2a5f7 --- /dev/null +++ b/src/assets/icon/arrow-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-up-circle-fill.svg b/src/assets/icon/arrow-up-circle-fill.svg new file mode 100644 index 0000000..38299b8 --- /dev/null +++ b/src/assets/icon/arrow-up-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-up-circle.svg b/src/assets/icon/arrow-up-circle.svg new file mode 100644 index 0000000..5f3e78c --- /dev/null +++ b/src/assets/icon/arrow-up-circle.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-up-left-circle-fill.svg b/src/assets/icon/arrow-up-left-circle-fill.svg new file mode 100644 index 0000000..dcb5a02 --- /dev/null +++ b/src/assets/icon/arrow-up-left-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-up-left-circle.svg b/src/assets/icon/arrow-up-left-circle.svg new file mode 100644 index 0000000..4ed1b09 --- /dev/null +++ b/src/assets/icon/arrow-up-left-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-up-left-square-fill.svg b/src/assets/icon/arrow-up-left-square-fill.svg new file mode 100644 index 0000000..5d1efab --- /dev/null +++ b/src/assets/icon/arrow-up-left-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-up-left-square.svg b/src/assets/icon/arrow-up-left-square.svg new file mode 100644 index 0000000..5d2dead --- /dev/null +++ b/src/assets/icon/arrow-up-left-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-up-left.svg b/src/assets/icon/arrow-up-left.svg new file mode 100644 index 0000000..e7a7ea3 --- /dev/null +++ b/src/assets/icon/arrow-up-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-up-right-circle-fill.svg b/src/assets/icon/arrow-up-right-circle-fill.svg new file mode 100644 index 0000000..54fc82e --- /dev/null +++ b/src/assets/icon/arrow-up-right-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-up-right-circle.svg b/src/assets/icon/arrow-up-right-circle.svg new file mode 100644 index 0000000..477f8ab --- /dev/null +++ b/src/assets/icon/arrow-up-right-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-up-right-square-fill.svg b/src/assets/icon/arrow-up-right-square-fill.svg new file mode 100644 index 0000000..f47da12 --- /dev/null +++ b/src/assets/icon/arrow-up-right-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-up-right-square.svg b/src/assets/icon/arrow-up-right-square.svg new file mode 100644 index 0000000..c4a577a --- /dev/null +++ b/src/assets/icon/arrow-up-right-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-up-right.svg b/src/assets/icon/arrow-up-right.svg new file mode 100644 index 0000000..8b1e9e8 --- /dev/null +++ b/src/assets/icon/arrow-up-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-up-short.svg b/src/assets/icon/arrow-up-short.svg new file mode 100644 index 0000000..0fbc672 --- /dev/null +++ b/src/assets/icon/arrow-up-short.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-up-square-fill.svg b/src/assets/icon/arrow-up-square-fill.svg new file mode 100644 index 0000000..2148908 --- /dev/null +++ b/src/assets/icon/arrow-up-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-up-square.svg b/src/assets/icon/arrow-up-square.svg new file mode 100644 index 0000000..639d1f8 --- /dev/null +++ b/src/assets/icon/arrow-up-square.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/arrow-up.svg b/src/assets/icon/arrow-up.svg new file mode 100644 index 0000000..ed3036a --- /dev/null +++ b/src/assets/icon/arrow-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/arrows-angle-contract.svg b/src/assets/icon/arrows-angle-contract.svg new file mode 100644 index 0000000..387d400 --- /dev/null +++ b/src/assets/icon/arrows-angle-contract.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/arrows-angle-expand.svg b/src/assets/icon/arrows-angle-expand.svg new file mode 100644 index 0000000..5a44258 --- /dev/null +++ b/src/assets/icon/arrows-angle-expand.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/arrows-collapse.svg b/src/assets/icon/arrows-collapse.svg new file mode 100644 index 0000000..c523bcd --- /dev/null +++ b/src/assets/icon/arrows-collapse.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/arrows-expand.svg b/src/assets/icon/arrows-expand.svg new file mode 100644 index 0000000..b62e4ec --- /dev/null +++ b/src/assets/icon/arrows-expand.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/arrows-fullscreen.svg b/src/assets/icon/arrows-fullscreen.svg new file mode 100644 index 0000000..d0bc641 --- /dev/null +++ b/src/assets/icon/arrows-fullscreen.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/icon/arrows-move.svg b/src/assets/icon/arrows-move.svg new file mode 100644 index 0000000..1bd7464 --- /dev/null +++ b/src/assets/icon/arrows-move.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/icon/aspect-ratio-fill.svg b/src/assets/icon/aspect-ratio-fill.svg new file mode 100644 index 0000000..b37fbe5 --- /dev/null +++ b/src/assets/icon/aspect-ratio-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/aspect-ratio.svg b/src/assets/icon/aspect-ratio.svg new file mode 100644 index 0000000..a6e6f24 --- /dev/null +++ b/src/assets/icon/aspect-ratio.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/asterisk.svg b/src/assets/icon/asterisk.svg new file mode 100644 index 0000000..178fd17 --- /dev/null +++ b/src/assets/icon/asterisk.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/at.svg b/src/assets/icon/at.svg new file mode 100644 index 0000000..2033f5b --- /dev/null +++ b/src/assets/icon/at.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/award-fill.svg b/src/assets/icon/award-fill.svg new file mode 100644 index 0000000..5bb4d14 --- /dev/null +++ b/src/assets/icon/award-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/award.svg b/src/assets/icon/award.svg new file mode 100644 index 0000000..2ded3f7 --- /dev/null +++ b/src/assets/icon/award.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/back.svg b/src/assets/icon/back.svg new file mode 100644 index 0000000..c5505ab --- /dev/null +++ b/src/assets/icon/back.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/backspace-fill.svg b/src/assets/icon/backspace-fill.svg new file mode 100644 index 0000000..abae528 --- /dev/null +++ b/src/assets/icon/backspace-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/backspace-reverse-fill.svg b/src/assets/icon/backspace-reverse-fill.svg new file mode 100644 index 0000000..4b70964 --- /dev/null +++ b/src/assets/icon/backspace-reverse-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/backspace-reverse.svg b/src/assets/icon/backspace-reverse.svg new file mode 100644 index 0000000..5b90326 --- /dev/null +++ b/src/assets/icon/backspace-reverse.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/backspace.svg b/src/assets/icon/backspace.svg new file mode 100644 index 0000000..6b0e7d2 --- /dev/null +++ b/src/assets/icon/backspace.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/badge-4k-fill.svg b/src/assets/icon/badge-4k-fill.svg new file mode 100644 index 0000000..e53f05c --- /dev/null +++ b/src/assets/icon/badge-4k-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/badge-4k.svg b/src/assets/icon/badge-4k.svg new file mode 100644 index 0000000..8439a06 --- /dev/null +++ b/src/assets/icon/badge-4k.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/badge-8k-fill.svg b/src/assets/icon/badge-8k-fill.svg new file mode 100644 index 0000000..95d73ca --- /dev/null +++ b/src/assets/icon/badge-8k-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/badge-8k.svg b/src/assets/icon/badge-8k.svg new file mode 100644 index 0000000..32b5be3 --- /dev/null +++ b/src/assets/icon/badge-8k.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/badge-cc-fill.svg b/src/assets/icon/badge-cc-fill.svg new file mode 100644 index 0000000..d721b25 --- /dev/null +++ b/src/assets/icon/badge-cc-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/badge-cc.svg b/src/assets/icon/badge-cc.svg new file mode 100644 index 0000000..f93bfde --- /dev/null +++ b/src/assets/icon/badge-cc.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/badge-hd-fill.svg b/src/assets/icon/badge-hd-fill.svg new file mode 100644 index 0000000..17ac71d --- /dev/null +++ b/src/assets/icon/badge-hd-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/badge-hd.svg b/src/assets/icon/badge-hd.svg new file mode 100644 index 0000000..66342f4 --- /dev/null +++ b/src/assets/icon/badge-hd.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/badge-tm-fill.svg b/src/assets/icon/badge-tm-fill.svg new file mode 100644 index 0000000..d09b269 --- /dev/null +++ b/src/assets/icon/badge-tm-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/badge-tm.svg b/src/assets/icon/badge-tm.svg new file mode 100644 index 0000000..008321a --- /dev/null +++ b/src/assets/icon/badge-tm.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/badge-vo-fill.svg b/src/assets/icon/badge-vo-fill.svg new file mode 100644 index 0000000..f14f6a7 --- /dev/null +++ b/src/assets/icon/badge-vo-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/badge-vo.svg b/src/assets/icon/badge-vo.svg new file mode 100644 index 0000000..191e232 --- /dev/null +++ b/src/assets/icon/badge-vo.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/bag-check.svg b/src/assets/icon/bag-check.svg new file mode 100644 index 0000000..d0b08ae --- /dev/null +++ b/src/assets/icon/bag-check.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/bag-dash.svg b/src/assets/icon/bag-dash.svg new file mode 100644 index 0000000..f09b7d4 --- /dev/null +++ b/src/assets/icon/bag-dash.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/bag-fill.svg b/src/assets/icon/bag-fill.svg new file mode 100644 index 0000000..ce0e7b9 --- /dev/null +++ b/src/assets/icon/bag-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/bag-plus.svg b/src/assets/icon/bag-plus.svg new file mode 100644 index 0000000..b32ddd0 --- /dev/null +++ b/src/assets/icon/bag-plus.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/bag.svg b/src/assets/icon/bag.svg new file mode 100644 index 0000000..c903867 --- /dev/null +++ b/src/assets/icon/bag.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/bar-chart-fill.svg b/src/assets/icon/bar-chart-fill.svg new file mode 100644 index 0000000..22ad287 --- /dev/null +++ b/src/assets/icon/bar-chart-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/bar-chart-line-fill.svg b/src/assets/icon/bar-chart-line-fill.svg new file mode 100644 index 0000000..09dee91 --- /dev/null +++ b/src/assets/icon/bar-chart-line-fill.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/bar-chart-line.svg b/src/assets/icon/bar-chart-line.svg new file mode 100644 index 0000000..dfeed35 --- /dev/null +++ b/src/assets/icon/bar-chart-line.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/bar-chart-steps.svg b/src/assets/icon/bar-chart-steps.svg new file mode 100644 index 0000000..47f7f42 --- /dev/null +++ b/src/assets/icon/bar-chart-steps.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/bar-chart.svg b/src/assets/icon/bar-chart.svg new file mode 100644 index 0000000..1eaecc6 --- /dev/null +++ b/src/assets/icon/bar-chart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/basket-fill.svg b/src/assets/icon/basket-fill.svg new file mode 100644 index 0000000..36c3601 --- /dev/null +++ b/src/assets/icon/basket-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/basket.svg b/src/assets/icon/basket.svg new file mode 100644 index 0000000..70f0568 --- /dev/null +++ b/src/assets/icon/basket.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/basket2-fill.svg b/src/assets/icon/basket2-fill.svg new file mode 100644 index 0000000..1f98a00 --- /dev/null +++ b/src/assets/icon/basket2-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/basket2.svg b/src/assets/icon/basket2.svg new file mode 100644 index 0000000..1d226c4 --- /dev/null +++ b/src/assets/icon/basket2.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/basket3-fill.svg b/src/assets/icon/basket3-fill.svg new file mode 100644 index 0000000..63b887c --- /dev/null +++ b/src/assets/icon/basket3-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/basket3.svg b/src/assets/icon/basket3.svg new file mode 100644 index 0000000..e700662 --- /dev/null +++ b/src/assets/icon/basket3.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/battery-charging.svg b/src/assets/icon/battery-charging.svg new file mode 100644 index 0000000..cf8ae01 --- /dev/null +++ b/src/assets/icon/battery-charging.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/battery-full.svg b/src/assets/icon/battery-full.svg new file mode 100644 index 0000000..6d343d6 --- /dev/null +++ b/src/assets/icon/battery-full.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/battery-half.svg b/src/assets/icon/battery-half.svg new file mode 100644 index 0000000..f6c8b68 --- /dev/null +++ b/src/assets/icon/battery-half.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/battery.svg b/src/assets/icon/battery.svg new file mode 100644 index 0000000..eca0681 --- /dev/null +++ b/src/assets/icon/battery.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/bell-fill.svg b/src/assets/icon/bell-fill.svg new file mode 100644 index 0000000..255c909 --- /dev/null +++ b/src/assets/icon/bell-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/bell.svg b/src/assets/icon/bell.svg new file mode 100644 index 0000000..5ac1eaa --- /dev/null +++ b/src/assets/icon/bell.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/bezier.svg b/src/assets/icon/bezier.svg new file mode 100644 index 0000000..e409955 --- /dev/null +++ b/src/assets/icon/bezier.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/bezier2.svg b/src/assets/icon/bezier2.svg new file mode 100644 index 0000000..ed8f6da --- /dev/null +++ b/src/assets/icon/bezier2.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/bicycle.svg b/src/assets/icon/bicycle.svg new file mode 100644 index 0000000..d4db2dd --- /dev/null +++ b/src/assets/icon/bicycle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/binoculars-fill.svg b/src/assets/icon/binoculars-fill.svg new file mode 100644 index 0000000..2898671 --- /dev/null +++ b/src/assets/icon/binoculars-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/binoculars.svg b/src/assets/icon/binoculars.svg new file mode 100644 index 0000000..1f6d032 --- /dev/null +++ b/src/assets/icon/binoculars.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/blockquote-left.svg b/src/assets/icon/blockquote-left.svg new file mode 100644 index 0000000..0417738 --- /dev/null +++ b/src/assets/icon/blockquote-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/blockquote-right.svg b/src/assets/icon/blockquote-right.svg new file mode 100644 index 0000000..6870f49 --- /dev/null +++ b/src/assets/icon/blockquote-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/book-fill.svg b/src/assets/icon/book-fill.svg new file mode 100644 index 0000000..c2dceee --- /dev/null +++ b/src/assets/icon/book-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/book-half.svg b/src/assets/icon/book-half.svg new file mode 100644 index 0000000..2c95ae7 --- /dev/null +++ b/src/assets/icon/book-half.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/book.svg b/src/assets/icon/book.svg new file mode 100644 index 0000000..e9d1e98 --- /dev/null +++ b/src/assets/icon/book.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/bookmark-check.svg b/src/assets/icon/bookmark-check.svg new file mode 100644 index 0000000..2285913 --- /dev/null +++ b/src/assets/icon/bookmark-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/bookmark-dash.svg b/src/assets/icon/bookmark-dash.svg new file mode 100644 index 0000000..2ed2eb4 --- /dev/null +++ b/src/assets/icon/bookmark-dash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/bookmark-fill.svg b/src/assets/icon/bookmark-fill.svg new file mode 100644 index 0000000..aeb47c4 --- /dev/null +++ b/src/assets/icon/bookmark-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/bookmark-plus.svg b/src/assets/icon/bookmark-plus.svg new file mode 100644 index 0000000..c756cf3 --- /dev/null +++ b/src/assets/icon/bookmark-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/bookmark.svg b/src/assets/icon/bookmark.svg new file mode 100644 index 0000000..f20ad99 --- /dev/null +++ b/src/assets/icon/bookmark.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/bookmarks-fill.svg b/src/assets/icon/bookmarks-fill.svg new file mode 100644 index 0000000..29522dd --- /dev/null +++ b/src/assets/icon/bookmarks-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/bookmarks.svg b/src/assets/icon/bookmarks.svg new file mode 100644 index 0000000..91b48b5 --- /dev/null +++ b/src/assets/icon/bookmarks.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/bookshelf.svg b/src/assets/icon/bookshelf.svg new file mode 100644 index 0000000..8f012a4 --- /dev/null +++ b/src/assets/icon/bookshelf.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/bootstrap-fill.svg b/src/assets/icon/bootstrap-fill.svg new file mode 100644 index 0000000..bb5e24a --- /dev/null +++ b/src/assets/icon/bootstrap-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/bootstrap-reboot.svg b/src/assets/icon/bootstrap-reboot.svg new file mode 100644 index 0000000..e489afa --- /dev/null +++ b/src/assets/icon/bootstrap-reboot.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/bootstrap.svg b/src/assets/icon/bootstrap.svg new file mode 100644 index 0000000..a7037e9 --- /dev/null +++ b/src/assets/icon/bootstrap.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/border-style.svg b/src/assets/icon/border-style.svg new file mode 100644 index 0000000..d2b5643 --- /dev/null +++ b/src/assets/icon/border-style.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/border-width.svg b/src/assets/icon/border-width.svg new file mode 100644 index 0000000..50a95e3 --- /dev/null +++ b/src/assets/icon/border-width.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/bounding-box-circles.svg b/src/assets/icon/bounding-box-circles.svg new file mode 100644 index 0000000..b21c7d2 --- /dev/null +++ b/src/assets/icon/bounding-box-circles.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/bounding-box.svg b/src/assets/icon/bounding-box.svg new file mode 100644 index 0000000..dfaccea --- /dev/null +++ b/src/assets/icon/bounding-box.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/box-arrow-down-left.svg b/src/assets/icon/box-arrow-down-left.svg new file mode 100644 index 0000000..37c23a9 --- /dev/null +++ b/src/assets/icon/box-arrow-down-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/box-arrow-down-right.svg b/src/assets/icon/box-arrow-down-right.svg new file mode 100644 index 0000000..625a02b --- /dev/null +++ b/src/assets/icon/box-arrow-down-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/box-arrow-down.svg b/src/assets/icon/box-arrow-down.svg new file mode 100644 index 0000000..2308023 --- /dev/null +++ b/src/assets/icon/box-arrow-down.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/box-arrow-in-down-left.svg b/src/assets/icon/box-arrow-in-down-left.svg new file mode 100644 index 0000000..1ef405c --- /dev/null +++ b/src/assets/icon/box-arrow-in-down-left.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/box-arrow-in-down-right.svg b/src/assets/icon/box-arrow-in-down-right.svg new file mode 100644 index 0000000..6b2ce16 --- /dev/null +++ b/src/assets/icon/box-arrow-in-down-right.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/box-arrow-in-down.svg b/src/assets/icon/box-arrow-in-down.svg new file mode 100644 index 0000000..9061b17 --- /dev/null +++ b/src/assets/icon/box-arrow-in-down.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/box-arrow-in-left.svg b/src/assets/icon/box-arrow-in-left.svg new file mode 100644 index 0000000..c7d43af --- /dev/null +++ b/src/assets/icon/box-arrow-in-left.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/box-arrow-in-right.svg b/src/assets/icon/box-arrow-in-right.svg new file mode 100644 index 0000000..40dfbdf --- /dev/null +++ b/src/assets/icon/box-arrow-in-right.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/box-arrow-in-up-left.svg b/src/assets/icon/box-arrow-in-up-left.svg new file mode 100644 index 0000000..ca94dc5 --- /dev/null +++ b/src/assets/icon/box-arrow-in-up-left.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/box-arrow-in-up-right.svg b/src/assets/icon/box-arrow-in-up-right.svg new file mode 100644 index 0000000..d072339 --- /dev/null +++ b/src/assets/icon/box-arrow-in-up-right.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/box-arrow-in-up.svg b/src/assets/icon/box-arrow-in-up.svg new file mode 100644 index 0000000..b1aa4fc --- /dev/null +++ b/src/assets/icon/box-arrow-in-up.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/box-arrow-left.svg b/src/assets/icon/box-arrow-left.svg new file mode 100644 index 0000000..37b8f51 --- /dev/null +++ b/src/assets/icon/box-arrow-left.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/box-arrow-right.svg b/src/assets/icon/box-arrow-right.svg new file mode 100644 index 0000000..95269df --- /dev/null +++ b/src/assets/icon/box-arrow-right.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/box-arrow-up-left.svg b/src/assets/icon/box-arrow-up-left.svg new file mode 100644 index 0000000..e3165c4 --- /dev/null +++ b/src/assets/icon/box-arrow-up-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/box-arrow-up-right.svg b/src/assets/icon/box-arrow-up-right.svg new file mode 100644 index 0000000..91830ce --- /dev/null +++ b/src/assets/icon/box-arrow-up-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/box-arrow-up.svg b/src/assets/icon/box-arrow-up.svg new file mode 100644 index 0000000..7352712 --- /dev/null +++ b/src/assets/icon/box-arrow-up.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/box-seam.svg b/src/assets/icon/box-seam.svg new file mode 100644 index 0000000..db444c2 --- /dev/null +++ b/src/assets/icon/box-seam.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/box.svg b/src/assets/icon/box.svg new file mode 100644 index 0000000..f7d2d62 --- /dev/null +++ b/src/assets/icon/box.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/braces.svg b/src/assets/icon/braces.svg new file mode 100644 index 0000000..6cd3710 --- /dev/null +++ b/src/assets/icon/braces.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/bricks.svg b/src/assets/icon/bricks.svg new file mode 100644 index 0000000..8b03bfe --- /dev/null +++ b/src/assets/icon/bricks.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/briefcase-fill.svg b/src/assets/icon/briefcase-fill.svg new file mode 100644 index 0000000..57ebef6 --- /dev/null +++ b/src/assets/icon/briefcase-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/briefcase.svg b/src/assets/icon/briefcase.svg new file mode 100644 index 0000000..0b00988 --- /dev/null +++ b/src/assets/icon/briefcase.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/brightness-alt-high-fill.svg b/src/assets/icon/brightness-alt-high-fill.svg new file mode 100644 index 0000000..2c7296e --- /dev/null +++ b/src/assets/icon/brightness-alt-high-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/brightness-alt-high.svg b/src/assets/icon/brightness-alt-high.svg new file mode 100644 index 0000000..f333a1c --- /dev/null +++ b/src/assets/icon/brightness-alt-high.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/brightness-alt-low-fill.svg b/src/assets/icon/brightness-alt-low-fill.svg new file mode 100644 index 0000000..eb4822f --- /dev/null +++ b/src/assets/icon/brightness-alt-low-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/brightness-alt-low.svg b/src/assets/icon/brightness-alt-low.svg new file mode 100644 index 0000000..9da1296 --- /dev/null +++ b/src/assets/icon/brightness-alt-low.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/brightness-high-fill.svg b/src/assets/icon/brightness-high-fill.svg new file mode 100644 index 0000000..248a6c1 --- /dev/null +++ b/src/assets/icon/brightness-high-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/brightness-high.svg b/src/assets/icon/brightness-high.svg new file mode 100644 index 0000000..e964419 --- /dev/null +++ b/src/assets/icon/brightness-high.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/brightness-low-fill.svg b/src/assets/icon/brightness-low-fill.svg new file mode 100644 index 0000000..54c3002 --- /dev/null +++ b/src/assets/icon/brightness-low-fill.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/icon/brightness-low.svg b/src/assets/icon/brightness-low.svg new file mode 100644 index 0000000..8ef56a4 --- /dev/null +++ b/src/assets/icon/brightness-low.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/icon/broadcast-pin.svg b/src/assets/icon/broadcast-pin.svg new file mode 100644 index 0000000..35adc14 --- /dev/null +++ b/src/assets/icon/broadcast-pin.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/broadcast.svg b/src/assets/icon/broadcast.svg new file mode 100644 index 0000000..4987eeb --- /dev/null +++ b/src/assets/icon/broadcast.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/brush.svg b/src/assets/icon/brush.svg new file mode 100644 index 0000000..3a8777d --- /dev/null +++ b/src/assets/icon/brush.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/bucket-fill.svg b/src/assets/icon/bucket-fill.svg new file mode 100644 index 0000000..53668ff --- /dev/null +++ b/src/assets/icon/bucket-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/bucket.svg b/src/assets/icon/bucket.svg new file mode 100644 index 0000000..98ac813 --- /dev/null +++ b/src/assets/icon/bucket.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/bug-fill.svg b/src/assets/icon/bug-fill.svg new file mode 100644 index 0000000..525749c --- /dev/null +++ b/src/assets/icon/bug-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/bug.svg b/src/assets/icon/bug.svg new file mode 100644 index 0000000..69b9142 --- /dev/null +++ b/src/assets/icon/bug.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/building.svg b/src/assets/icon/building.svg new file mode 100644 index 0000000..48dff58 --- /dev/null +++ b/src/assets/icon/building.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/bullseye.svg b/src/assets/icon/bullseye.svg new file mode 100644 index 0000000..36ec585 --- /dev/null +++ b/src/assets/icon/bullseye.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/calculator-fill.svg b/src/assets/icon/calculator-fill.svg new file mode 100644 index 0000000..9310b4e --- /dev/null +++ b/src/assets/icon/calculator-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/calculator.svg b/src/assets/icon/calculator.svg new file mode 100644 index 0000000..409b56f --- /dev/null +++ b/src/assets/icon/calculator.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar-check-fill.svg b/src/assets/icon/calendar-check-fill.svg new file mode 100644 index 0000000..43149e6 --- /dev/null +++ b/src/assets/icon/calendar-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar-check.svg b/src/assets/icon/calendar-check.svg new file mode 100644 index 0000000..b586e5c --- /dev/null +++ b/src/assets/icon/calendar-check.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar-date-fill.svg b/src/assets/icon/calendar-date-fill.svg new file mode 100644 index 0000000..09c17fc --- /dev/null +++ b/src/assets/icon/calendar-date-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar-date.svg b/src/assets/icon/calendar-date.svg new file mode 100644 index 0000000..8803a71 --- /dev/null +++ b/src/assets/icon/calendar-date.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar-day-fill.svg b/src/assets/icon/calendar-day-fill.svg new file mode 100644 index 0000000..57c06a6 --- /dev/null +++ b/src/assets/icon/calendar-day-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar-day.svg b/src/assets/icon/calendar-day.svg new file mode 100644 index 0000000..916808b --- /dev/null +++ b/src/assets/icon/calendar-day.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar-event-fill.svg b/src/assets/icon/calendar-event-fill.svg new file mode 100644 index 0000000..61c7d7d --- /dev/null +++ b/src/assets/icon/calendar-event-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar-event.svg b/src/assets/icon/calendar-event.svg new file mode 100644 index 0000000..cbee14e --- /dev/null +++ b/src/assets/icon/calendar-event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar-fill.svg b/src/assets/icon/calendar-fill.svg new file mode 100644 index 0000000..b9fa266 --- /dev/null +++ b/src/assets/icon/calendar-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar-minus-fill.svg b/src/assets/icon/calendar-minus-fill.svg new file mode 100644 index 0000000..811e518 --- /dev/null +++ b/src/assets/icon/calendar-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar-minus.svg b/src/assets/icon/calendar-minus.svg new file mode 100644 index 0000000..a955013 --- /dev/null +++ b/src/assets/icon/calendar-minus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar-month-fill.svg b/src/assets/icon/calendar-month-fill.svg new file mode 100644 index 0000000..5265c42 --- /dev/null +++ b/src/assets/icon/calendar-month-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar-month.svg b/src/assets/icon/calendar-month.svg new file mode 100644 index 0000000..0b355bc --- /dev/null +++ b/src/assets/icon/calendar-month.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar-plus-fill.svg b/src/assets/icon/calendar-plus-fill.svg new file mode 100644 index 0000000..8b1fe2b --- /dev/null +++ b/src/assets/icon/calendar-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar-plus.svg b/src/assets/icon/calendar-plus.svg new file mode 100644 index 0000000..fb2eb07 --- /dev/null +++ b/src/assets/icon/calendar-plus.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar-range-fill.svg b/src/assets/icon/calendar-range-fill.svg new file mode 100644 index 0000000..40bba76 --- /dev/null +++ b/src/assets/icon/calendar-range-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar-range.svg b/src/assets/icon/calendar-range.svg new file mode 100644 index 0000000..24362df --- /dev/null +++ b/src/assets/icon/calendar-range.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar-week-fill.svg b/src/assets/icon/calendar-week-fill.svg new file mode 100644 index 0000000..59f63ce --- /dev/null +++ b/src/assets/icon/calendar-week-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar-week.svg b/src/assets/icon/calendar-week.svg new file mode 100644 index 0000000..476c4ea --- /dev/null +++ b/src/assets/icon/calendar-week.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar.svg b/src/assets/icon/calendar.svg new file mode 100644 index 0000000..1992291 --- /dev/null +++ b/src/assets/icon/calendar.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2-check-fill.svg b/src/assets/icon/calendar2-check-fill.svg new file mode 100644 index 0000000..40452c0 --- /dev/null +++ b/src/assets/icon/calendar2-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2-check.svg b/src/assets/icon/calendar2-check.svg new file mode 100644 index 0000000..9b8092d --- /dev/null +++ b/src/assets/icon/calendar2-check.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2-date-fill.svg b/src/assets/icon/calendar2-date-fill.svg new file mode 100644 index 0000000..9e7df4c --- /dev/null +++ b/src/assets/icon/calendar2-date-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2-date.svg b/src/assets/icon/calendar2-date.svg new file mode 100644 index 0000000..f7030e1 --- /dev/null +++ b/src/assets/icon/calendar2-date.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2-day-fill.svg b/src/assets/icon/calendar2-day-fill.svg new file mode 100644 index 0000000..2dad0db --- /dev/null +++ b/src/assets/icon/calendar2-day-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2-day.svg b/src/assets/icon/calendar2-day.svg new file mode 100644 index 0000000..dce5507 --- /dev/null +++ b/src/assets/icon/calendar2-day.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2-event-fill.svg b/src/assets/icon/calendar2-event-fill.svg new file mode 100644 index 0000000..3932be7 --- /dev/null +++ b/src/assets/icon/calendar2-event-fill.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2-event.svg b/src/assets/icon/calendar2-event.svg new file mode 100644 index 0000000..8aa7655 --- /dev/null +++ b/src/assets/icon/calendar2-event.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2-fill.svg b/src/assets/icon/calendar2-fill.svg new file mode 100644 index 0000000..8671b11 --- /dev/null +++ b/src/assets/icon/calendar2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2-minus-fill.svg b/src/assets/icon/calendar2-minus-fill.svg new file mode 100644 index 0000000..05a024d --- /dev/null +++ b/src/assets/icon/calendar2-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2-minus.svg b/src/assets/icon/calendar2-minus.svg new file mode 100644 index 0000000..d859e54 --- /dev/null +++ b/src/assets/icon/calendar2-minus.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2-month-fill.svg b/src/assets/icon/calendar2-month-fill.svg new file mode 100644 index 0000000..efce7dc --- /dev/null +++ b/src/assets/icon/calendar2-month-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2-month.svg b/src/assets/icon/calendar2-month.svg new file mode 100644 index 0000000..dcbf106 --- /dev/null +++ b/src/assets/icon/calendar2-month.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2-plus-fill.svg b/src/assets/icon/calendar2-plus-fill.svg new file mode 100644 index 0000000..60c3ccf --- /dev/null +++ b/src/assets/icon/calendar2-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2-plus.svg b/src/assets/icon/calendar2-plus.svg new file mode 100644 index 0000000..92b8a22 --- /dev/null +++ b/src/assets/icon/calendar2-plus.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2-range-fill.svg b/src/assets/icon/calendar2-range-fill.svg new file mode 100644 index 0000000..739e308 --- /dev/null +++ b/src/assets/icon/calendar2-range-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2-range.svg b/src/assets/icon/calendar2-range.svg new file mode 100644 index 0000000..2d9737f --- /dev/null +++ b/src/assets/icon/calendar2-range.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2-week-fill.svg b/src/assets/icon/calendar2-week-fill.svg new file mode 100644 index 0000000..6352f2d --- /dev/null +++ b/src/assets/icon/calendar2-week-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2-week.svg b/src/assets/icon/calendar2-week.svg new file mode 100644 index 0000000..eeac285 --- /dev/null +++ b/src/assets/icon/calendar2-week.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar2.svg b/src/assets/icon/calendar2.svg new file mode 100644 index 0000000..dffdd08 --- /dev/null +++ b/src/assets/icon/calendar2.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar3-event-fill.svg b/src/assets/icon/calendar3-event-fill.svg new file mode 100644 index 0000000..22cf257 --- /dev/null +++ b/src/assets/icon/calendar3-event-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar3-event.svg b/src/assets/icon/calendar3-event.svg new file mode 100644 index 0000000..c282b54 --- /dev/null +++ b/src/assets/icon/calendar3-event.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar3-fill.svg b/src/assets/icon/calendar3-fill.svg new file mode 100644 index 0000000..750ae87 --- /dev/null +++ b/src/assets/icon/calendar3-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar3-range-fill.svg b/src/assets/icon/calendar3-range-fill.svg new file mode 100644 index 0000000..0531c25 --- /dev/null +++ b/src/assets/icon/calendar3-range-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar3-range.svg b/src/assets/icon/calendar3-range.svg new file mode 100644 index 0000000..61acf6b --- /dev/null +++ b/src/assets/icon/calendar3-range.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar3-week-fill.svg b/src/assets/icon/calendar3-week-fill.svg new file mode 100644 index 0000000..a4d0dfd --- /dev/null +++ b/src/assets/icon/calendar3-week-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/calendar3-week.svg b/src/assets/icon/calendar3-week.svg new file mode 100644 index 0000000..adc2542 --- /dev/null +++ b/src/assets/icon/calendar3-week.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar3.svg b/src/assets/icon/calendar3.svg new file mode 100644 index 0000000..67fa87a --- /dev/null +++ b/src/assets/icon/calendar3.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar4-event.svg b/src/assets/icon/calendar4-event.svg new file mode 100644 index 0000000..f3cb02f --- /dev/null +++ b/src/assets/icon/calendar4-event.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar4-range.svg b/src/assets/icon/calendar4-range.svg new file mode 100644 index 0000000..5dfb6ec --- /dev/null +++ b/src/assets/icon/calendar4-range.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar4-week.svg b/src/assets/icon/calendar4-week.svg new file mode 100644 index 0000000..050a8e0 --- /dev/null +++ b/src/assets/icon/calendar4-week.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/calendar4.svg b/src/assets/icon/calendar4.svg new file mode 100644 index 0000000..8acc849 --- /dev/null +++ b/src/assets/icon/calendar4.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/camera-fill.svg b/src/assets/icon/camera-fill.svg new file mode 100644 index 0000000..ff25242 --- /dev/null +++ b/src/assets/icon/camera-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/camera-reels-fill.svg b/src/assets/icon/camera-reels-fill.svg new file mode 100644 index 0000000..7b96cf0 --- /dev/null +++ b/src/assets/icon/camera-reels-fill.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/camera-reels.svg b/src/assets/icon/camera-reels.svg new file mode 100644 index 0000000..8ba9e7b --- /dev/null +++ b/src/assets/icon/camera-reels.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/camera-video-fill.svg b/src/assets/icon/camera-video-fill.svg new file mode 100644 index 0000000..f98ca5e --- /dev/null +++ b/src/assets/icon/camera-video-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/camera-video-off-fill.svg b/src/assets/icon/camera-video-off-fill.svg new file mode 100644 index 0000000..76b1f16 --- /dev/null +++ b/src/assets/icon/camera-video-off-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/camera-video-off.svg b/src/assets/icon/camera-video-off.svg new file mode 100644 index 0000000..7326e73 --- /dev/null +++ b/src/assets/icon/camera-video-off.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/camera-video.svg b/src/assets/icon/camera-video.svg new file mode 100644 index 0000000..803ddb1 --- /dev/null +++ b/src/assets/icon/camera-video.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/camera.svg b/src/assets/icon/camera.svg new file mode 100644 index 0000000..f96e6ba --- /dev/null +++ b/src/assets/icon/camera.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/camera2.svg b/src/assets/icon/camera2.svg new file mode 100644 index 0000000..e7a294a --- /dev/null +++ b/src/assets/icon/camera2.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/capslock-fill.svg b/src/assets/icon/capslock-fill.svg new file mode 100644 index 0000000..7eef8f3 --- /dev/null +++ b/src/assets/icon/capslock-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/capslock.svg b/src/assets/icon/capslock.svg new file mode 100644 index 0000000..c304b1f --- /dev/null +++ b/src/assets/icon/capslock.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/card-checklist.svg b/src/assets/icon/card-checklist.svg new file mode 100644 index 0000000..b5b3fba --- /dev/null +++ b/src/assets/icon/card-checklist.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/card-heading.svg b/src/assets/icon/card-heading.svg new file mode 100644 index 0000000..82c9da6 --- /dev/null +++ b/src/assets/icon/card-heading.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/card-image.svg b/src/assets/icon/card-image.svg new file mode 100644 index 0000000..5284c3e --- /dev/null +++ b/src/assets/icon/card-image.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/card-list.svg b/src/assets/icon/card-list.svg new file mode 100644 index 0000000..5ec338f --- /dev/null +++ b/src/assets/icon/card-list.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/icon/card-text.svg b/src/assets/icon/card-text.svg new file mode 100644 index 0000000..b0628ef --- /dev/null +++ b/src/assets/icon/card-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/caret-down-fill.svg b/src/assets/icon/caret-down-fill.svg new file mode 100644 index 0000000..466c98c --- /dev/null +++ b/src/assets/icon/caret-down-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/caret-down-square-fill.svg b/src/assets/icon/caret-down-square-fill.svg new file mode 100644 index 0000000..f332f1f --- /dev/null +++ b/src/assets/icon/caret-down-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/caret-down-square.svg b/src/assets/icon/caret-down-square.svg new file mode 100644 index 0000000..b0fce23 --- /dev/null +++ b/src/assets/icon/caret-down-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/caret-down.svg b/src/assets/icon/caret-down.svg new file mode 100644 index 0000000..fd81931 --- /dev/null +++ b/src/assets/icon/caret-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/caret-left-fill.svg b/src/assets/icon/caret-left-fill.svg new file mode 100644 index 0000000..c58b1d1 --- /dev/null +++ b/src/assets/icon/caret-left-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/caret-left-square-fill.svg b/src/assets/icon/caret-left-square-fill.svg new file mode 100644 index 0000000..5e80d01 --- /dev/null +++ b/src/assets/icon/caret-left-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/caret-left-square.svg b/src/assets/icon/caret-left-square.svg new file mode 100644 index 0000000..5bb9333 --- /dev/null +++ b/src/assets/icon/caret-left-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/caret-left.svg b/src/assets/icon/caret-left.svg new file mode 100644 index 0000000..bd3a214 --- /dev/null +++ b/src/assets/icon/caret-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/caret-right-fill.svg b/src/assets/icon/caret-right-fill.svg new file mode 100644 index 0000000..27eb068 --- /dev/null +++ b/src/assets/icon/caret-right-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/caret-right-square-fill.svg b/src/assets/icon/caret-right-square-fill.svg new file mode 100644 index 0000000..05ce438 --- /dev/null +++ b/src/assets/icon/caret-right-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/caret-right-square.svg b/src/assets/icon/caret-right-square.svg new file mode 100644 index 0000000..a221393 --- /dev/null +++ b/src/assets/icon/caret-right-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/caret-right.svg b/src/assets/icon/caret-right.svg new file mode 100644 index 0000000..e1c1faf --- /dev/null +++ b/src/assets/icon/caret-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/caret-up-fill.svg b/src/assets/icon/caret-up-fill.svg new file mode 100644 index 0000000..2352902 --- /dev/null +++ b/src/assets/icon/caret-up-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/caret-up-square-fill.svg b/src/assets/icon/caret-up-square-fill.svg new file mode 100644 index 0000000..ab6adf1 --- /dev/null +++ b/src/assets/icon/caret-up-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/caret-up-square.svg b/src/assets/icon/caret-up-square.svg new file mode 100644 index 0000000..de3f183 --- /dev/null +++ b/src/assets/icon/caret-up-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/caret-up.svg b/src/assets/icon/caret-up.svg new file mode 100644 index 0000000..376daf4 --- /dev/null +++ b/src/assets/icon/caret-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/cart-check.svg b/src/assets/icon/cart-check.svg new file mode 100644 index 0000000..a451276 --- /dev/null +++ b/src/assets/icon/cart-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/cart-dash.svg b/src/assets/icon/cart-dash.svg new file mode 100644 index 0000000..afcebb6 --- /dev/null +++ b/src/assets/icon/cart-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/cart-fill.svg b/src/assets/icon/cart-fill.svg new file mode 100644 index 0000000..8c237e0 --- /dev/null +++ b/src/assets/icon/cart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/cart-plus.svg b/src/assets/icon/cart-plus.svg new file mode 100644 index 0000000..9befb2f --- /dev/null +++ b/src/assets/icon/cart-plus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/cart.svg b/src/assets/icon/cart.svg new file mode 100644 index 0000000..05deaa5 --- /dev/null +++ b/src/assets/icon/cart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/cart2.svg b/src/assets/icon/cart2.svg new file mode 100644 index 0000000..167745b --- /dev/null +++ b/src/assets/icon/cart2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/cart3.svg b/src/assets/icon/cart3.svg new file mode 100644 index 0000000..3ca36d5 --- /dev/null +++ b/src/assets/icon/cart3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/cart4.svg b/src/assets/icon/cart4.svg new file mode 100644 index 0000000..2a2fe73 --- /dev/null +++ b/src/assets/icon/cart4.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/cash-stack.svg b/src/assets/icon/cash-stack.svg new file mode 100644 index 0000000..d66265f --- /dev/null +++ b/src/assets/icon/cash-stack.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/cash.svg b/src/assets/icon/cash.svg new file mode 100644 index 0000000..e87d01f --- /dev/null +++ b/src/assets/icon/cash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/cast.svg b/src/assets/icon/cast.svg new file mode 100644 index 0000000..4b3cd65 --- /dev/null +++ b/src/assets/icon/cast.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/chat-dots-fill.svg b/src/assets/icon/chat-dots-fill.svg new file mode 100644 index 0000000..b5f6138 --- /dev/null +++ b/src/assets/icon/chat-dots-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chat-dots.svg b/src/assets/icon/chat-dots.svg new file mode 100644 index 0000000..709c988 --- /dev/null +++ b/src/assets/icon/chat-dots.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/chat-fill.svg b/src/assets/icon/chat-fill.svg new file mode 100644 index 0000000..a03667f --- /dev/null +++ b/src/assets/icon/chat-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chat-left-dots-fill.svg b/src/assets/icon/chat-left-dots-fill.svg new file mode 100644 index 0000000..2cb86a6 --- /dev/null +++ b/src/assets/icon/chat-left-dots-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chat-left-dots.svg b/src/assets/icon/chat-left-dots.svg new file mode 100644 index 0000000..38be081 --- /dev/null +++ b/src/assets/icon/chat-left-dots.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/chat-left-fill.svg b/src/assets/icon/chat-left-fill.svg new file mode 100644 index 0000000..40ebeb4 --- /dev/null +++ b/src/assets/icon/chat-left-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chat-left-quote-fill.svg b/src/assets/icon/chat-left-quote-fill.svg new file mode 100644 index 0000000..8d2d798 --- /dev/null +++ b/src/assets/icon/chat-left-quote-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chat-left-quote.svg b/src/assets/icon/chat-left-quote.svg new file mode 100644 index 0000000..87d94ed --- /dev/null +++ b/src/assets/icon/chat-left-quote.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/chat-left-text-fill.svg b/src/assets/icon/chat-left-text-fill.svg new file mode 100644 index 0000000..bb10b22 --- /dev/null +++ b/src/assets/icon/chat-left-text-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chat-left-text.svg b/src/assets/icon/chat-left-text.svg new file mode 100644 index 0000000..eba1919 --- /dev/null +++ b/src/assets/icon/chat-left-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/chat-left.svg b/src/assets/icon/chat-left.svg new file mode 100644 index 0000000..6440918 --- /dev/null +++ b/src/assets/icon/chat-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chat-quote-fill.svg b/src/assets/icon/chat-quote-fill.svg new file mode 100644 index 0000000..ddf5a3a --- /dev/null +++ b/src/assets/icon/chat-quote-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chat-quote.svg b/src/assets/icon/chat-quote.svg new file mode 100644 index 0000000..6cf8d3e --- /dev/null +++ b/src/assets/icon/chat-quote.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/icon/chat-right-dots-fill.svg b/src/assets/icon/chat-right-dots-fill.svg new file mode 100644 index 0000000..1e7de76 --- /dev/null +++ b/src/assets/icon/chat-right-dots-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chat-right-dots.svg b/src/assets/icon/chat-right-dots.svg new file mode 100644 index 0000000..0745b79 --- /dev/null +++ b/src/assets/icon/chat-right-dots.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/chat-right-fill.svg b/src/assets/icon/chat-right-fill.svg new file mode 100644 index 0000000..a405c4f --- /dev/null +++ b/src/assets/icon/chat-right-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chat-right-quote-fill.svg b/src/assets/icon/chat-right-quote-fill.svg new file mode 100644 index 0000000..000352f --- /dev/null +++ b/src/assets/icon/chat-right-quote-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chat-right-quote.svg b/src/assets/icon/chat-right-quote.svg new file mode 100644 index 0000000..1636036 --- /dev/null +++ b/src/assets/icon/chat-right-quote.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/chat-right-text-fill.svg b/src/assets/icon/chat-right-text-fill.svg new file mode 100644 index 0000000..f9eb6f6 --- /dev/null +++ b/src/assets/icon/chat-right-text-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chat-right-text.svg b/src/assets/icon/chat-right-text.svg new file mode 100644 index 0000000..bc2680a --- /dev/null +++ b/src/assets/icon/chat-right-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/chat-right.svg b/src/assets/icon/chat-right.svg new file mode 100644 index 0000000..474ae5a --- /dev/null +++ b/src/assets/icon/chat-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chat-square-dots-fill.svg b/src/assets/icon/chat-square-dots-fill.svg new file mode 100644 index 0000000..ab6e586 --- /dev/null +++ b/src/assets/icon/chat-square-dots-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chat-square-dots.svg b/src/assets/icon/chat-square-dots.svg new file mode 100644 index 0000000..f284272 --- /dev/null +++ b/src/assets/icon/chat-square-dots.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/chat-square-fill.svg b/src/assets/icon/chat-square-fill.svg new file mode 100644 index 0000000..da0551e --- /dev/null +++ b/src/assets/icon/chat-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chat-square-quote-fill.svg b/src/assets/icon/chat-square-quote-fill.svg new file mode 100644 index 0000000..eb4b702 --- /dev/null +++ b/src/assets/icon/chat-square-quote-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chat-square-quote.svg b/src/assets/icon/chat-square-quote.svg new file mode 100644 index 0000000..ca7f31c --- /dev/null +++ b/src/assets/icon/chat-square-quote.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/icon/chat-square-text-fill.svg b/src/assets/icon/chat-square-text-fill.svg new file mode 100644 index 0000000..5d6c4c9 --- /dev/null +++ b/src/assets/icon/chat-square-text-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chat-square-text.svg b/src/assets/icon/chat-square-text.svg new file mode 100644 index 0000000..4ab1736 --- /dev/null +++ b/src/assets/icon/chat-square-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/chat-square.svg b/src/assets/icon/chat-square.svg new file mode 100644 index 0000000..1b64dd1 --- /dev/null +++ b/src/assets/icon/chat-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chat-text-fill.svg b/src/assets/icon/chat-text-fill.svg new file mode 100644 index 0000000..306dbb5 --- /dev/null +++ b/src/assets/icon/chat-text-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chat-text.svg b/src/assets/icon/chat-text.svg new file mode 100644 index 0000000..b32cc88 --- /dev/null +++ b/src/assets/icon/chat-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/chat.svg b/src/assets/icon/chat.svg new file mode 100644 index 0000000..94adcf5 --- /dev/null +++ b/src/assets/icon/chat.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/check-all.svg b/src/assets/icon/check-all.svg new file mode 100644 index 0000000..2f8b401 --- /dev/null +++ b/src/assets/icon/check-all.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/check-circle-fill.svg b/src/assets/icon/check-circle-fill.svg new file mode 100644 index 0000000..cf3d635 --- /dev/null +++ b/src/assets/icon/check-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/check-circle.svg b/src/assets/icon/check-circle.svg new file mode 100644 index 0000000..265ff25 --- /dev/null +++ b/src/assets/icon/check-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/check-square-fill.svg b/src/assets/icon/check-square-fill.svg new file mode 100644 index 0000000..40a01b9 --- /dev/null +++ b/src/assets/icon/check-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/check-square.svg b/src/assets/icon/check-square.svg new file mode 100644 index 0000000..44467e1 --- /dev/null +++ b/src/assets/icon/check-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/check.svg b/src/assets/icon/check.svg new file mode 100644 index 0000000..2c4cea9 --- /dev/null +++ b/src/assets/icon/check.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/check2-all.svg b/src/assets/icon/check2-all.svg new file mode 100644 index 0000000..e4004c6 --- /dev/null +++ b/src/assets/icon/check2-all.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/check2-circle.svg b/src/assets/icon/check2-circle.svg new file mode 100644 index 0000000..7d751d5 --- /dev/null +++ b/src/assets/icon/check2-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/check2-square.svg b/src/assets/icon/check2-square.svg new file mode 100644 index 0000000..7ba8fcc --- /dev/null +++ b/src/assets/icon/check2-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/check2.svg b/src/assets/icon/check2.svg new file mode 100644 index 0000000..ecb793c --- /dev/null +++ b/src/assets/icon/check2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-bar-contract.svg b/src/assets/icon/chevron-bar-contract.svg new file mode 100644 index 0000000..7593ae7 --- /dev/null +++ b/src/assets/icon/chevron-bar-contract.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-bar-down.svg b/src/assets/icon/chevron-bar-down.svg new file mode 100644 index 0000000..04434ec --- /dev/null +++ b/src/assets/icon/chevron-bar-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-bar-expand.svg b/src/assets/icon/chevron-bar-expand.svg new file mode 100644 index 0000000..22567fd --- /dev/null +++ b/src/assets/icon/chevron-bar-expand.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-bar-left.svg b/src/assets/icon/chevron-bar-left.svg new file mode 100644 index 0000000..a513d7f --- /dev/null +++ b/src/assets/icon/chevron-bar-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-bar-right.svg b/src/assets/icon/chevron-bar-right.svg new file mode 100644 index 0000000..41f6d0a --- /dev/null +++ b/src/assets/icon/chevron-bar-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-bar-up.svg b/src/assets/icon/chevron-bar-up.svg new file mode 100644 index 0000000..9bfd279 --- /dev/null +++ b/src/assets/icon/chevron-bar-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-compact-down.svg b/src/assets/icon/chevron-compact-down.svg new file mode 100644 index 0000000..a73e383 --- /dev/null +++ b/src/assets/icon/chevron-compact-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-compact-left.svg b/src/assets/icon/chevron-compact-left.svg new file mode 100644 index 0000000..f1a8518 --- /dev/null +++ b/src/assets/icon/chevron-compact-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-compact-right.svg b/src/assets/icon/chevron-compact-right.svg new file mode 100644 index 0000000..4bd0b2d --- /dev/null +++ b/src/assets/icon/chevron-compact-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-compact-up.svg b/src/assets/icon/chevron-compact-up.svg new file mode 100644 index 0000000..7599a76 --- /dev/null +++ b/src/assets/icon/chevron-compact-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-contract.svg b/src/assets/icon/chevron-contract.svg new file mode 100644 index 0000000..338a0c8 --- /dev/null +++ b/src/assets/icon/chevron-contract.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-double-down.svg b/src/assets/icon/chevron-double-down.svg new file mode 100644 index 0000000..004d6b6 --- /dev/null +++ b/src/assets/icon/chevron-double-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-double-left.svg b/src/assets/icon/chevron-double-left.svg new file mode 100644 index 0000000..5cc4026 --- /dev/null +++ b/src/assets/icon/chevron-double-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-double-right.svg b/src/assets/icon/chevron-double-right.svg new file mode 100644 index 0000000..7359c96 --- /dev/null +++ b/src/assets/icon/chevron-double-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-double-up.svg b/src/assets/icon/chevron-double-up.svg new file mode 100644 index 0000000..a3543e8 --- /dev/null +++ b/src/assets/icon/chevron-double-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-down.svg b/src/assets/icon/chevron-down.svg new file mode 100644 index 0000000..c627d28 --- /dev/null +++ b/src/assets/icon/chevron-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-expand.svg b/src/assets/icon/chevron-expand.svg new file mode 100644 index 0000000..1f2e701 --- /dev/null +++ b/src/assets/icon/chevron-expand.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-left.svg b/src/assets/icon/chevron-left.svg new file mode 100644 index 0000000..442a50e --- /dev/null +++ b/src/assets/icon/chevron-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-right.svg b/src/assets/icon/chevron-right.svg new file mode 100644 index 0000000..3489af0 --- /dev/null +++ b/src/assets/icon/chevron-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/chevron-up.svg b/src/assets/icon/chevron-up.svg new file mode 100644 index 0000000..aac3652 --- /dev/null +++ b/src/assets/icon/chevron-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/circle-fill.svg b/src/assets/icon/circle-fill.svg new file mode 100644 index 0000000..64d438e --- /dev/null +++ b/src/assets/icon/circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/circle-half.svg b/src/assets/icon/circle-half.svg new file mode 100644 index 0000000..1dce5b5 --- /dev/null +++ b/src/assets/icon/circle-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/circle-square.svg b/src/assets/icon/circle-square.svg new file mode 100644 index 0000000..13edb3b --- /dev/null +++ b/src/assets/icon/circle-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/circle.svg b/src/assets/icon/circle.svg new file mode 100644 index 0000000..29be392 --- /dev/null +++ b/src/assets/icon/circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/clipboard-check.svg b/src/assets/icon/clipboard-check.svg new file mode 100644 index 0000000..2f51207 --- /dev/null +++ b/src/assets/icon/clipboard-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/clipboard-data.svg b/src/assets/icon/clipboard-data.svg new file mode 100644 index 0000000..2760267 --- /dev/null +++ b/src/assets/icon/clipboard-data.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/clipboard-minus.svg b/src/assets/icon/clipboard-minus.svg new file mode 100644 index 0000000..d19e681 --- /dev/null +++ b/src/assets/icon/clipboard-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/clipboard-plus.svg b/src/assets/icon/clipboard-plus.svg new file mode 100644 index 0000000..5fff5e7 --- /dev/null +++ b/src/assets/icon/clipboard-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/clipboard.svg b/src/assets/icon/clipboard.svg new file mode 100644 index 0000000..0be3111 --- /dev/null +++ b/src/assets/icon/clipboard.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/clock-fill.svg b/src/assets/icon/clock-fill.svg new file mode 100644 index 0000000..fdc6b92 --- /dev/null +++ b/src/assets/icon/clock-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/clock-history.svg b/src/assets/icon/clock-history.svg new file mode 100644 index 0000000..3c8eb27 --- /dev/null +++ b/src/assets/icon/clock-history.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/clock.svg b/src/assets/icon/clock.svg new file mode 100644 index 0000000..e3cf517 --- /dev/null +++ b/src/assets/icon/clock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/cloud-arrow-down-fill.svg b/src/assets/icon/cloud-arrow-down-fill.svg new file mode 100644 index 0000000..261396a --- /dev/null +++ b/src/assets/icon/cloud-arrow-down-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/cloud-arrow-down.svg b/src/assets/icon/cloud-arrow-down.svg new file mode 100644 index 0000000..c96e5fe --- /dev/null +++ b/src/assets/icon/cloud-arrow-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/cloud-arrow-up-fill.svg b/src/assets/icon/cloud-arrow-up-fill.svg new file mode 100644 index 0000000..b4f215f --- /dev/null +++ b/src/assets/icon/cloud-arrow-up-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/cloud-arrow-up.svg b/src/assets/icon/cloud-arrow-up.svg new file mode 100644 index 0000000..9eb13cc --- /dev/null +++ b/src/assets/icon/cloud-arrow-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/cloud-check-fill.svg b/src/assets/icon/cloud-check-fill.svg new file mode 100644 index 0000000..2365df9 --- /dev/null +++ b/src/assets/icon/cloud-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/cloud-check.svg b/src/assets/icon/cloud-check.svg new file mode 100644 index 0000000..0336835 --- /dev/null +++ b/src/assets/icon/cloud-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/cloud-download-fill.svg b/src/assets/icon/cloud-download-fill.svg new file mode 100644 index 0000000..0656c61 --- /dev/null +++ b/src/assets/icon/cloud-download-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/cloud-download.svg b/src/assets/icon/cloud-download.svg new file mode 100644 index 0000000..062e3be --- /dev/null +++ b/src/assets/icon/cloud-download.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/cloud-fill.svg b/src/assets/icon/cloud-fill.svg new file mode 100644 index 0000000..0b6567d --- /dev/null +++ b/src/assets/icon/cloud-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/cloud-minus-fill.svg b/src/assets/icon/cloud-minus-fill.svg new file mode 100644 index 0000000..f6dffdf --- /dev/null +++ b/src/assets/icon/cloud-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/cloud-minus.svg b/src/assets/icon/cloud-minus.svg new file mode 100644 index 0000000..88932e2 --- /dev/null +++ b/src/assets/icon/cloud-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/cloud-plus-fill.svg b/src/assets/icon/cloud-plus-fill.svg new file mode 100644 index 0000000..866b362 --- /dev/null +++ b/src/assets/icon/cloud-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/cloud-plus.svg b/src/assets/icon/cloud-plus.svg new file mode 100644 index 0000000..0f37302 --- /dev/null +++ b/src/assets/icon/cloud-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/cloud-slash-fill.svg b/src/assets/icon/cloud-slash-fill.svg new file mode 100644 index 0000000..cee626d --- /dev/null +++ b/src/assets/icon/cloud-slash-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/cloud-slash.svg b/src/assets/icon/cloud-slash.svg new file mode 100644 index 0000000..0dfaa1a --- /dev/null +++ b/src/assets/icon/cloud-slash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/cloud-upload-fill.svg b/src/assets/icon/cloud-upload-fill.svg new file mode 100644 index 0000000..296233c --- /dev/null +++ b/src/assets/icon/cloud-upload-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/cloud-upload.svg b/src/assets/icon/cloud-upload.svg new file mode 100644 index 0000000..a645863 --- /dev/null +++ b/src/assets/icon/cloud-upload.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/cloud.svg b/src/assets/icon/cloud.svg new file mode 100644 index 0000000..e094baf --- /dev/null +++ b/src/assets/icon/cloud.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/code-slash.svg b/src/assets/icon/code-slash.svg new file mode 100644 index 0000000..2fc78a9 --- /dev/null +++ b/src/assets/icon/code-slash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/code-square.svg b/src/assets/icon/code-square.svg new file mode 100644 index 0000000..fe4991d --- /dev/null +++ b/src/assets/icon/code-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/code.svg b/src/assets/icon/code.svg new file mode 100644 index 0000000..b6e4661 --- /dev/null +++ b/src/assets/icon/code.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/collection-fill.svg b/src/assets/icon/collection-fill.svg new file mode 100644 index 0000000..f6c4ae7 --- /dev/null +++ b/src/assets/icon/collection-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/collection-play-fill.svg b/src/assets/icon/collection-play-fill.svg new file mode 100644 index 0000000..925ea41 --- /dev/null +++ b/src/assets/icon/collection-play-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/collection-play.svg b/src/assets/icon/collection-play.svg new file mode 100644 index 0000000..305f95f --- /dev/null +++ b/src/assets/icon/collection-play.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/collection.svg b/src/assets/icon/collection.svg new file mode 100644 index 0000000..1fa4f8a --- /dev/null +++ b/src/assets/icon/collection.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/columns-gap.svg b/src/assets/icon/columns-gap.svg new file mode 100644 index 0000000..ba13497 --- /dev/null +++ b/src/assets/icon/columns-gap.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/columns.svg b/src/assets/icon/columns.svg new file mode 100644 index 0000000..66d89d4 --- /dev/null +++ b/src/assets/icon/columns.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/command.svg b/src/assets/icon/command.svg new file mode 100644 index 0000000..ebc6a0e --- /dev/null +++ b/src/assets/icon/command.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/compass.svg b/src/assets/icon/compass.svg new file mode 100644 index 0000000..cf52cc6 --- /dev/null +++ b/src/assets/icon/compass.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/cone-striped.svg b/src/assets/icon/cone-striped.svg new file mode 100644 index 0000000..8daea1b --- /dev/null +++ b/src/assets/icon/cone-striped.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/cone.svg b/src/assets/icon/cone.svg new file mode 100644 index 0000000..6965414 --- /dev/null +++ b/src/assets/icon/cone.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/controller.svg b/src/assets/icon/controller.svg new file mode 100644 index 0000000..83f6a81 --- /dev/null +++ b/src/assets/icon/controller.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/cpu-fill.svg b/src/assets/icon/cpu-fill.svg new file mode 100644 index 0000000..19f8e35 --- /dev/null +++ b/src/assets/icon/cpu-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/cpu.svg b/src/assets/icon/cpu.svg new file mode 100644 index 0000000..c3694e1 --- /dev/null +++ b/src/assets/icon/cpu.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/credit-card-2-back-fill.svg b/src/assets/icon/credit-card-2-back-fill.svg new file mode 100644 index 0000000..49fc6cd --- /dev/null +++ b/src/assets/icon/credit-card-2-back-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/credit-card-2-back.svg b/src/assets/icon/credit-card-2-back.svg new file mode 100644 index 0000000..92ecc13 --- /dev/null +++ b/src/assets/icon/credit-card-2-back.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/credit-card-2-front-fill.svg b/src/assets/icon/credit-card-2-front-fill.svg new file mode 100644 index 0000000..44ab2de --- /dev/null +++ b/src/assets/icon/credit-card-2-front-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/credit-card-2-front.svg b/src/assets/icon/credit-card-2-front.svg new file mode 100644 index 0000000..458d723 --- /dev/null +++ b/src/assets/icon/credit-card-2-front.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/credit-card-fill.svg b/src/assets/icon/credit-card-fill.svg new file mode 100644 index 0000000..7c100d2 --- /dev/null +++ b/src/assets/icon/credit-card-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/credit-card.svg b/src/assets/icon/credit-card.svg new file mode 100644 index 0000000..26ae494 --- /dev/null +++ b/src/assets/icon/credit-card.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/crop.svg b/src/assets/icon/crop.svg new file mode 100644 index 0000000..62a5887 --- /dev/null +++ b/src/assets/icon/crop.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/cup-straw.svg b/src/assets/icon/cup-straw.svg new file mode 100644 index 0000000..3ad54fc --- /dev/null +++ b/src/assets/icon/cup-straw.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/cup.svg b/src/assets/icon/cup.svg new file mode 100644 index 0000000..80294d1 --- /dev/null +++ b/src/assets/icon/cup.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/cursor-fill.svg b/src/assets/icon/cursor-fill.svg new file mode 100644 index 0000000..16e768b --- /dev/null +++ b/src/assets/icon/cursor-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/cursor-text.svg b/src/assets/icon/cursor-text.svg new file mode 100644 index 0000000..e68a52c --- /dev/null +++ b/src/assets/icon/cursor-text.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/cursor.svg b/src/assets/icon/cursor.svg new file mode 100644 index 0000000..4b62a49 --- /dev/null +++ b/src/assets/icon/cursor.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/dash-circle-fill.svg b/src/assets/icon/dash-circle-fill.svg new file mode 100644 index 0000000..9f2d6dc --- /dev/null +++ b/src/assets/icon/dash-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/dash-circle.svg b/src/assets/icon/dash-circle.svg new file mode 100644 index 0000000..68f98ca --- /dev/null +++ b/src/assets/icon/dash-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/dash-square-fill.svg b/src/assets/icon/dash-square-fill.svg new file mode 100644 index 0000000..f85b215 --- /dev/null +++ b/src/assets/icon/dash-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/dash-square.svg b/src/assets/icon/dash-square.svg new file mode 100644 index 0000000..855268c --- /dev/null +++ b/src/assets/icon/dash-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/dash.svg b/src/assets/icon/dash.svg new file mode 100644 index 0000000..5ed59d2 --- /dev/null +++ b/src/assets/icon/dash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/diagram-2-fill.svg b/src/assets/icon/diagram-2-fill.svg new file mode 100644 index 0000000..91b488c --- /dev/null +++ b/src/assets/icon/diagram-2-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/diagram-2.svg b/src/assets/icon/diagram-2.svg new file mode 100644 index 0000000..7aec363 --- /dev/null +++ b/src/assets/icon/diagram-2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/diagram-3-fill.svg b/src/assets/icon/diagram-3-fill.svg new file mode 100644 index 0000000..7c9d9c9 --- /dev/null +++ b/src/assets/icon/diagram-3-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/diagram-3.svg b/src/assets/icon/diagram-3.svg new file mode 100644 index 0000000..1ccedab --- /dev/null +++ b/src/assets/icon/diagram-3.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/diamond-fill.svg b/src/assets/icon/diamond-fill.svg new file mode 100644 index 0000000..12a2de3 --- /dev/null +++ b/src/assets/icon/diamond-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/diamond-half.svg b/src/assets/icon/diamond-half.svg new file mode 100644 index 0000000..8925405 --- /dev/null +++ b/src/assets/icon/diamond-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/diamond.svg b/src/assets/icon/diamond.svg new file mode 100644 index 0000000..e0fc899 --- /dev/null +++ b/src/assets/icon/diamond.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/dice-1-fill.svg b/src/assets/icon/dice-1-fill.svg new file mode 100644 index 0000000..f295e33 --- /dev/null +++ b/src/assets/icon/dice-1-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/dice-1.svg b/src/assets/icon/dice-1.svg new file mode 100644 index 0000000..1ce4630 --- /dev/null +++ b/src/assets/icon/dice-1.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/dice-2-fill.svg b/src/assets/icon/dice-2-fill.svg new file mode 100644 index 0000000..0d20548 --- /dev/null +++ b/src/assets/icon/dice-2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/dice-2.svg b/src/assets/icon/dice-2.svg new file mode 100644 index 0000000..1ab7ded --- /dev/null +++ b/src/assets/icon/dice-2.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/dice-3-fill.svg b/src/assets/icon/dice-3-fill.svg new file mode 100644 index 0000000..6527147 --- /dev/null +++ b/src/assets/icon/dice-3-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/dice-3.svg b/src/assets/icon/dice-3.svg new file mode 100644 index 0000000..20f311c --- /dev/null +++ b/src/assets/icon/dice-3.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/dice-4-fill.svg b/src/assets/icon/dice-4-fill.svg new file mode 100644 index 0000000..0059bb4 --- /dev/null +++ b/src/assets/icon/dice-4-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/dice-4.svg b/src/assets/icon/dice-4.svg new file mode 100644 index 0000000..c92e0fd --- /dev/null +++ b/src/assets/icon/dice-4.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/icon/dice-5-fill.svg b/src/assets/icon/dice-5-fill.svg new file mode 100644 index 0000000..b3d07ca --- /dev/null +++ b/src/assets/icon/dice-5-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/dice-5.svg b/src/assets/icon/dice-5.svg new file mode 100644 index 0000000..6dd6c13 --- /dev/null +++ b/src/assets/icon/dice-5.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/assets/icon/dice-6-fill.svg b/src/assets/icon/dice-6-fill.svg new file mode 100644 index 0000000..41b449a --- /dev/null +++ b/src/assets/icon/dice-6-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/dice-6.svg b/src/assets/icon/dice-6.svg new file mode 100644 index 0000000..c92c61b --- /dev/null +++ b/src/assets/icon/dice-6.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/assets/icon/display-fill.svg b/src/assets/icon/display-fill.svg new file mode 100644 index 0000000..fd26f24 --- /dev/null +++ b/src/assets/icon/display-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/display.svg b/src/assets/icon/display.svg new file mode 100644 index 0000000..ec33cb1 --- /dev/null +++ b/src/assets/icon/display.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/distribute-horizontal.svg b/src/assets/icon/distribute-horizontal.svg new file mode 100644 index 0000000..7f07856 --- /dev/null +++ b/src/assets/icon/distribute-horizontal.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/distribute-vertical.svg b/src/assets/icon/distribute-vertical.svg new file mode 100644 index 0000000..0446659 --- /dev/null +++ b/src/assets/icon/distribute-vertical.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/door-closed-fill.svg b/src/assets/icon/door-closed-fill.svg new file mode 100644 index 0000000..bca5ed4 --- /dev/null +++ b/src/assets/icon/door-closed-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/door-closed.svg b/src/assets/icon/door-closed.svg new file mode 100644 index 0000000..30e5237 --- /dev/null +++ b/src/assets/icon/door-closed.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/door-open-fill.svg b/src/assets/icon/door-open-fill.svg new file mode 100644 index 0000000..3c12474 --- /dev/null +++ b/src/assets/icon/door-open-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/door-open.svg b/src/assets/icon/door-open.svg new file mode 100644 index 0000000..af8f113 --- /dev/null +++ b/src/assets/icon/door-open.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/dot.svg b/src/assets/icon/dot.svg new file mode 100644 index 0000000..8935fda --- /dev/null +++ b/src/assets/icon/dot.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/download.svg b/src/assets/icon/download.svg new file mode 100644 index 0000000..6bcc8aa --- /dev/null +++ b/src/assets/icon/download.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/droplet-fill.svg b/src/assets/icon/droplet-fill.svg new file mode 100644 index 0000000..79afd19 --- /dev/null +++ b/src/assets/icon/droplet-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/droplet-half.svg b/src/assets/icon/droplet-half.svg new file mode 100644 index 0000000..92c72f0 --- /dev/null +++ b/src/assets/icon/droplet-half.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/droplet.svg b/src/assets/icon/droplet.svg new file mode 100644 index 0000000..91813fa --- /dev/null +++ b/src/assets/icon/droplet.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/earbuds.svg b/src/assets/icon/earbuds.svg new file mode 100644 index 0000000..0181b5c --- /dev/null +++ b/src/assets/icon/earbuds.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/easel-fill.svg b/src/assets/icon/easel-fill.svg new file mode 100644 index 0000000..5499874 --- /dev/null +++ b/src/assets/icon/easel-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/easel.svg b/src/assets/icon/easel.svg new file mode 100644 index 0000000..66e29a0 --- /dev/null +++ b/src/assets/icon/easel.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/egg-fill.svg b/src/assets/icon/egg-fill.svg new file mode 100644 index 0000000..2dd0f83 --- /dev/null +++ b/src/assets/icon/egg-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/egg-fried.svg b/src/assets/icon/egg-fried.svg new file mode 100644 index 0000000..4cc06a9 --- /dev/null +++ b/src/assets/icon/egg-fried.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/egg.svg b/src/assets/icon/egg.svg new file mode 100644 index 0000000..0ae66b8 --- /dev/null +++ b/src/assets/icon/egg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/eject-fill.svg b/src/assets/icon/eject-fill.svg new file mode 100644 index 0000000..e4b112a --- /dev/null +++ b/src/assets/icon/eject-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/eject.svg b/src/assets/icon/eject.svg new file mode 100644 index 0000000..1229d6b --- /dev/null +++ b/src/assets/icon/eject.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/emoji-angry.svg b/src/assets/icon/emoji-angry.svg new file mode 100644 index 0000000..ecd036d --- /dev/null +++ b/src/assets/icon/emoji-angry.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/emoji-dizzy.svg b/src/assets/icon/emoji-dizzy.svg new file mode 100644 index 0000000..e42aa7e --- /dev/null +++ b/src/assets/icon/emoji-dizzy.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/emoji-expressionless.svg b/src/assets/icon/emoji-expressionless.svg new file mode 100644 index 0000000..ca36635 --- /dev/null +++ b/src/assets/icon/emoji-expressionless.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/emoji-frown.svg b/src/assets/icon/emoji-frown.svg new file mode 100644 index 0000000..51cf2f4 --- /dev/null +++ b/src/assets/icon/emoji-frown.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/emoji-laughing.svg b/src/assets/icon/emoji-laughing.svg new file mode 100644 index 0000000..c30c992 --- /dev/null +++ b/src/assets/icon/emoji-laughing.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/emoji-neutral.svg b/src/assets/icon/emoji-neutral.svg new file mode 100644 index 0000000..727574f --- /dev/null +++ b/src/assets/icon/emoji-neutral.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/emoji-smile-upside-down.svg b/src/assets/icon/emoji-smile-upside-down.svg new file mode 100644 index 0000000..78d4dd1 --- /dev/null +++ b/src/assets/icon/emoji-smile-upside-down.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/emoji-smile.svg b/src/assets/icon/emoji-smile.svg new file mode 100644 index 0000000..52f5cbe --- /dev/null +++ b/src/assets/icon/emoji-smile.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/emoji-sunglasses.svg b/src/assets/icon/emoji-sunglasses.svg new file mode 100644 index 0000000..bf538b5 --- /dev/null +++ b/src/assets/icon/emoji-sunglasses.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/envelope-fill.svg b/src/assets/icon/envelope-fill.svg new file mode 100644 index 0000000..1fbd04b --- /dev/null +++ b/src/assets/icon/envelope-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/envelope-open-fill.svg b/src/assets/icon/envelope-open-fill.svg new file mode 100644 index 0000000..1c85185 --- /dev/null +++ b/src/assets/icon/envelope-open-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/envelope-open.svg b/src/assets/icon/envelope-open.svg new file mode 100644 index 0000000..c8c5060 --- /dev/null +++ b/src/assets/icon/envelope-open.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/envelope.svg b/src/assets/icon/envelope.svg new file mode 100644 index 0000000..0b70ea1 --- /dev/null +++ b/src/assets/icon/envelope.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/exclamation-circle-fill.svg b/src/assets/icon/exclamation-circle-fill.svg new file mode 100644 index 0000000..1a03943 --- /dev/null +++ b/src/assets/icon/exclamation-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/exclamation-circle.svg b/src/assets/icon/exclamation-circle.svg new file mode 100644 index 0000000..df4ee2f --- /dev/null +++ b/src/assets/icon/exclamation-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/exclamation-diamond-fill.svg b/src/assets/icon/exclamation-diamond-fill.svg new file mode 100644 index 0000000..7c797db --- /dev/null +++ b/src/assets/icon/exclamation-diamond-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/exclamation-diamond.svg b/src/assets/icon/exclamation-diamond.svg new file mode 100644 index 0000000..5714bba --- /dev/null +++ b/src/assets/icon/exclamation-diamond.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/exclamation-octagon-fill.svg b/src/assets/icon/exclamation-octagon-fill.svg new file mode 100644 index 0000000..e8b1164 --- /dev/null +++ b/src/assets/icon/exclamation-octagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/exclamation-octagon.svg b/src/assets/icon/exclamation-octagon.svg new file mode 100644 index 0000000..53d708f --- /dev/null +++ b/src/assets/icon/exclamation-octagon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/exclamation-square-fill.svg b/src/assets/icon/exclamation-square-fill.svg new file mode 100644 index 0000000..088b9d0 --- /dev/null +++ b/src/assets/icon/exclamation-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/exclamation-square.svg b/src/assets/icon/exclamation-square.svg new file mode 100644 index 0000000..6ad98e1 --- /dev/null +++ b/src/assets/icon/exclamation-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/exclamation-triangle-fill.svg b/src/assets/icon/exclamation-triangle-fill.svg new file mode 100644 index 0000000..3223d15 --- /dev/null +++ b/src/assets/icon/exclamation-triangle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/exclamation-triangle.svg b/src/assets/icon/exclamation-triangle.svg new file mode 100644 index 0000000..ee170b7 --- /dev/null +++ b/src/assets/icon/exclamation-triangle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/exclamation.svg b/src/assets/icon/exclamation.svg new file mode 100644 index 0000000..39a394e --- /dev/null +++ b/src/assets/icon/exclamation.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/exclude.svg b/src/assets/icon/exclude.svg new file mode 100644 index 0000000..b7a7460 --- /dev/null +++ b/src/assets/icon/exclude.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/eye-fill.svg b/src/assets/icon/eye-fill.svg new file mode 100644 index 0000000..f5c6eed --- /dev/null +++ b/src/assets/icon/eye-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/eye-slash-fill.svg b/src/assets/icon/eye-slash-fill.svg new file mode 100644 index 0000000..4f039eb --- /dev/null +++ b/src/assets/icon/eye-slash-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/eye-slash.svg b/src/assets/icon/eye-slash.svg new file mode 100644 index 0000000..eadc1ee --- /dev/null +++ b/src/assets/icon/eye-slash.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/eye.svg b/src/assets/icon/eye.svg new file mode 100644 index 0000000..26a80f4 --- /dev/null +++ b/src/assets/icon/eye.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/eyeglasses.svg b/src/assets/icon/eyeglasses.svg new file mode 100644 index 0000000..e6fb97e --- /dev/null +++ b/src/assets/icon/eyeglasses.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/file-arrow-down-fill.svg b/src/assets/icon/file-arrow-down-fill.svg new file mode 100644 index 0000000..0658d3d --- /dev/null +++ b/src/assets/icon/file-arrow-down-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-arrow-down.svg b/src/assets/icon/file-arrow-down.svg new file mode 100644 index 0000000..17a34ee --- /dev/null +++ b/src/assets/icon/file-arrow-down.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/file-arrow-up-fill.svg b/src/assets/icon/file-arrow-up-fill.svg new file mode 100644 index 0000000..c566415 --- /dev/null +++ b/src/assets/icon/file-arrow-up-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-arrow-up.svg b/src/assets/icon/file-arrow-up.svg new file mode 100644 index 0000000..9dc1edc --- /dev/null +++ b/src/assets/icon/file-arrow-up.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/file-binary-fill.svg b/src/assets/icon/file-binary-fill.svg new file mode 100644 index 0000000..259cfdb --- /dev/null +++ b/src/assets/icon/file-binary-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-binary.svg b/src/assets/icon/file-binary.svg new file mode 100644 index 0000000..8512419 --- /dev/null +++ b/src/assets/icon/file-binary.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/file-break-fill.svg b/src/assets/icon/file-break-fill.svg new file mode 100644 index 0000000..4150988 --- /dev/null +++ b/src/assets/icon/file-break-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/file-break.svg b/src/assets/icon/file-break.svg new file mode 100644 index 0000000..026860f --- /dev/null +++ b/src/assets/icon/file-break.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/file-check-fill.svg b/src/assets/icon/file-check-fill.svg new file mode 100644 index 0000000..839a85f --- /dev/null +++ b/src/assets/icon/file-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-check.svg b/src/assets/icon/file-check.svg new file mode 100644 index 0000000..f0f5e38 --- /dev/null +++ b/src/assets/icon/file-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/file-code-fill.svg b/src/assets/icon/file-code-fill.svg new file mode 100644 index 0000000..524750f --- /dev/null +++ b/src/assets/icon/file-code-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-code.svg b/src/assets/icon/file-code.svg new file mode 100644 index 0000000..13c0b64 --- /dev/null +++ b/src/assets/icon/file-code.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/file-diff-fill.svg b/src/assets/icon/file-diff-fill.svg new file mode 100644 index 0000000..5c32510 --- /dev/null +++ b/src/assets/icon/file-diff-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-diff.svg b/src/assets/icon/file-diff.svg new file mode 100644 index 0000000..e2b2aa5 --- /dev/null +++ b/src/assets/icon/file-diff.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-arrow-down.svg b/src/assets/icon/file-earmark-arrow-down.svg new file mode 100644 index 0000000..7e8d196 --- /dev/null +++ b/src/assets/icon/file-earmark-arrow-down.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-arrow-up-fill.svg b/src/assets/icon/file-earmark-arrow-up-fill.svg new file mode 100644 index 0000000..bd91d67 --- /dev/null +++ b/src/assets/icon/file-earmark-arrow-up-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-arrow-up.svg b/src/assets/icon/file-earmark-arrow-up.svg new file mode 100644 index 0000000..1729b52 --- /dev/null +++ b/src/assets/icon/file-earmark-arrow-up.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-binary-fill.svg b/src/assets/icon/file-earmark-binary-fill.svg new file mode 100644 index 0000000..6575caf --- /dev/null +++ b/src/assets/icon/file-earmark-binary-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-binary.svg b/src/assets/icon/file-earmark-binary.svg new file mode 100644 index 0000000..a3b4ac8 --- /dev/null +++ b/src/assets/icon/file-earmark-binary.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-break-fill.svg b/src/assets/icon/file-earmark-break-fill.svg new file mode 100644 index 0000000..7196e1f --- /dev/null +++ b/src/assets/icon/file-earmark-break-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-break.svg b/src/assets/icon/file-earmark-break.svg new file mode 100644 index 0000000..c125a5d --- /dev/null +++ b/src/assets/icon/file-earmark-break.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-check-fill.svg b/src/assets/icon/file-earmark-check-fill.svg new file mode 100644 index 0000000..7c7b5f5 --- /dev/null +++ b/src/assets/icon/file-earmark-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-check.svg b/src/assets/icon/file-earmark-check.svg new file mode 100644 index 0000000..fb05aea --- /dev/null +++ b/src/assets/icon/file-earmark-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-code-fill.svg b/src/assets/icon/file-earmark-code-fill.svg new file mode 100644 index 0000000..a4fa4cc --- /dev/null +++ b/src/assets/icon/file-earmark-code-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-code.svg b/src/assets/icon/file-earmark-code.svg new file mode 100644 index 0000000..804e74d --- /dev/null +++ b/src/assets/icon/file-earmark-code.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-diff-fill.svg b/src/assets/icon/file-earmark-diff-fill.svg new file mode 100644 index 0000000..198e768 --- /dev/null +++ b/src/assets/icon/file-earmark-diff-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-diff.svg b/src/assets/icon/file-earmark-diff.svg new file mode 100644 index 0000000..b2d9923 --- /dev/null +++ b/src/assets/icon/file-earmark-diff.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-fill.svg b/src/assets/icon/file-earmark-fill.svg new file mode 100644 index 0000000..dc75100 --- /dev/null +++ b/src/assets/icon/file-earmark-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-medical-fill.svg b/src/assets/icon/file-earmark-medical-fill.svg new file mode 100644 index 0000000..2921255 --- /dev/null +++ b/src/assets/icon/file-earmark-medical-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-medical.svg b/src/assets/icon/file-earmark-medical.svg new file mode 100644 index 0000000..3a65113 --- /dev/null +++ b/src/assets/icon/file-earmark-medical.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-minus-fill.svg b/src/assets/icon/file-earmark-minus-fill.svg new file mode 100644 index 0000000..d3fc5bf --- /dev/null +++ b/src/assets/icon/file-earmark-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-minus.svg b/src/assets/icon/file-earmark-minus.svg new file mode 100644 index 0000000..4876aab --- /dev/null +++ b/src/assets/icon/file-earmark-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-plus-fill.svg b/src/assets/icon/file-earmark-plus-fill.svg new file mode 100644 index 0000000..e62161d --- /dev/null +++ b/src/assets/icon/file-earmark-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-plus.svg b/src/assets/icon/file-earmark-plus.svg new file mode 100644 index 0000000..6970022 --- /dev/null +++ b/src/assets/icon/file-earmark-plus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-ruled-fill.svg b/src/assets/icon/file-earmark-ruled-fill.svg new file mode 100644 index 0000000..3896bca --- /dev/null +++ b/src/assets/icon/file-earmark-ruled-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-ruled.svg b/src/assets/icon/file-earmark-ruled.svg new file mode 100644 index 0000000..0b72624 --- /dev/null +++ b/src/assets/icon/file-earmark-ruled.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-spreadsheet-fill.svg b/src/assets/icon/file-earmark-spreadsheet-fill.svg new file mode 100644 index 0000000..7ed44cc --- /dev/null +++ b/src/assets/icon/file-earmark-spreadsheet-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-spreadsheet.svg b/src/assets/icon/file-earmark-spreadsheet.svg new file mode 100644 index 0000000..8cd190f --- /dev/null +++ b/src/assets/icon/file-earmark-spreadsheet.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-text-fill.svg b/src/assets/icon/file-earmark-text-fill.svg new file mode 100644 index 0000000..f6e3a73 --- /dev/null +++ b/src/assets/icon/file-earmark-text-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-text.svg b/src/assets/icon/file-earmark-text.svg new file mode 100644 index 0000000..9b5f269 --- /dev/null +++ b/src/assets/icon/file-earmark-text.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-zip-fill.svg b/src/assets/icon/file-earmark-zip-fill.svg new file mode 100644 index 0000000..66a5692 --- /dev/null +++ b/src/assets/icon/file-earmark-zip-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark-zip.svg b/src/assets/icon/file-earmark-zip.svg new file mode 100644 index 0000000..7c4a3c4 --- /dev/null +++ b/src/assets/icon/file-earmark-zip.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/file-earmark.svg b/src/assets/icon/file-earmark.svg new file mode 100644 index 0000000..536ac8a --- /dev/null +++ b/src/assets/icon/file-earmark.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/file-fill.svg b/src/assets/icon/file-fill.svg new file mode 100644 index 0000000..65b91cb --- /dev/null +++ b/src/assets/icon/file-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-medical-fill.svg b/src/assets/icon/file-medical-fill.svg new file mode 100644 index 0000000..3fcef88 --- /dev/null +++ b/src/assets/icon/file-medical-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-medical.svg b/src/assets/icon/file-medical.svg new file mode 100644 index 0000000..a2ca289 --- /dev/null +++ b/src/assets/icon/file-medical.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/file-minus-fill.svg b/src/assets/icon/file-minus-fill.svg new file mode 100644 index 0000000..e2c316f --- /dev/null +++ b/src/assets/icon/file-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-minus.svg b/src/assets/icon/file-minus.svg new file mode 100644 index 0000000..f8d06c0 --- /dev/null +++ b/src/assets/icon/file-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/file-music-fill.svg b/src/assets/icon/file-music-fill.svg new file mode 100644 index 0000000..0dc4f75 --- /dev/null +++ b/src/assets/icon/file-music-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-music.svg b/src/assets/icon/file-music.svg new file mode 100644 index 0000000..5e7a83f --- /dev/null +++ b/src/assets/icon/file-music.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/file-person-fill.svg b/src/assets/icon/file-person-fill.svg new file mode 100644 index 0000000..7bd563e --- /dev/null +++ b/src/assets/icon/file-person-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-person.svg b/src/assets/icon/file-person.svg new file mode 100644 index 0000000..be5ec94 --- /dev/null +++ b/src/assets/icon/file-person.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/file-plus-fill.svg b/src/assets/icon/file-plus-fill.svg new file mode 100644 index 0000000..4f06d38 --- /dev/null +++ b/src/assets/icon/file-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-plus.svg b/src/assets/icon/file-plus.svg new file mode 100644 index 0000000..67b74c8 --- /dev/null +++ b/src/assets/icon/file-plus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/file-post-fill.svg b/src/assets/icon/file-post-fill.svg new file mode 100644 index 0000000..2c163fd --- /dev/null +++ b/src/assets/icon/file-post-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-post.svg b/src/assets/icon/file-post.svg new file mode 100644 index 0000000..615864b --- /dev/null +++ b/src/assets/icon/file-post.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/file-richtext-fill.svg b/src/assets/icon/file-richtext-fill.svg new file mode 100644 index 0000000..59a0528 --- /dev/null +++ b/src/assets/icon/file-richtext-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-richtext.svg b/src/assets/icon/file-richtext.svg new file mode 100644 index 0000000..2aa1ae0 --- /dev/null +++ b/src/assets/icon/file-richtext.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/file-ruled-fill.svg b/src/assets/icon/file-ruled-fill.svg new file mode 100644 index 0000000..8dc9fb7 --- /dev/null +++ b/src/assets/icon/file-ruled-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-ruled.svg b/src/assets/icon/file-ruled.svg new file mode 100644 index 0000000..61295f7 --- /dev/null +++ b/src/assets/icon/file-ruled.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/file-spreadsheet-fill.svg b/src/assets/icon/file-spreadsheet-fill.svg new file mode 100644 index 0000000..f072671 --- /dev/null +++ b/src/assets/icon/file-spreadsheet-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-spreadsheet.svg b/src/assets/icon/file-spreadsheet.svg new file mode 100644 index 0000000..b343ff6 --- /dev/null +++ b/src/assets/icon/file-spreadsheet.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/file-text-fill.svg b/src/assets/icon/file-text-fill.svg new file mode 100644 index 0000000..d4517b2 --- /dev/null +++ b/src/assets/icon/file-text-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-text.svg b/src/assets/icon/file-text.svg new file mode 100644 index 0000000..0ba54e5 --- /dev/null +++ b/src/assets/icon/file-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/file-zip-fill.svg b/src/assets/icon/file-zip-fill.svg new file mode 100644 index 0000000..7602150 --- /dev/null +++ b/src/assets/icon/file-zip-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/file-zip.svg b/src/assets/icon/file-zip.svg new file mode 100644 index 0000000..fd99d2c --- /dev/null +++ b/src/assets/icon/file-zip.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/file.svg b/src/assets/icon/file.svg new file mode 100644 index 0000000..29acb82 --- /dev/null +++ b/src/assets/icon/file.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/files-alt.svg b/src/assets/icon/files-alt.svg new file mode 100644 index 0000000..ff5135d --- /dev/null +++ b/src/assets/icon/files-alt.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/files.svg b/src/assets/icon/files.svg new file mode 100644 index 0000000..f613a25 --- /dev/null +++ b/src/assets/icon/files.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/film.svg b/src/assets/icon/film.svg new file mode 100644 index 0000000..bf640d7 --- /dev/null +++ b/src/assets/icon/film.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/filter-circle-fill.svg b/src/assets/icon/filter-circle-fill.svg new file mode 100644 index 0000000..41e3ba0 --- /dev/null +++ b/src/assets/icon/filter-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/filter-circle.svg b/src/assets/icon/filter-circle.svg new file mode 100644 index 0000000..820450e --- /dev/null +++ b/src/assets/icon/filter-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/filter-left.svg b/src/assets/icon/filter-left.svg new file mode 100644 index 0000000..fe70d36 --- /dev/null +++ b/src/assets/icon/filter-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/filter-right.svg b/src/assets/icon/filter-right.svg new file mode 100644 index 0000000..709618f --- /dev/null +++ b/src/assets/icon/filter-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/filter-square-fill.svg b/src/assets/icon/filter-square-fill.svg new file mode 100644 index 0000000..0ee5e07 --- /dev/null +++ b/src/assets/icon/filter-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/filter-square.svg b/src/assets/icon/filter-square.svg new file mode 100644 index 0000000..52c5d41 --- /dev/null +++ b/src/assets/icon/filter-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/filter.svg b/src/assets/icon/filter.svg new file mode 100644 index 0000000..bd296ea --- /dev/null +++ b/src/assets/icon/filter.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/flag-fill.svg b/src/assets/icon/flag-fill.svg new file mode 100644 index 0000000..8550580 --- /dev/null +++ b/src/assets/icon/flag-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/flag.svg b/src/assets/icon/flag.svg new file mode 100644 index 0000000..7c7d9c6 --- /dev/null +++ b/src/assets/icon/flag.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/flower1.svg b/src/assets/icon/flower1.svg new file mode 100644 index 0000000..6b3670d --- /dev/null +++ b/src/assets/icon/flower1.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/flower2.svg b/src/assets/icon/flower2.svg new file mode 100644 index 0000000..c510e6b --- /dev/null +++ b/src/assets/icon/flower2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/flower3.svg b/src/assets/icon/flower3.svg new file mode 100644 index 0000000..f02c6ea --- /dev/null +++ b/src/assets/icon/flower3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/folder-check.svg b/src/assets/icon/folder-check.svg new file mode 100644 index 0000000..d58f823 --- /dev/null +++ b/src/assets/icon/folder-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/folder-fill.svg b/src/assets/icon/folder-fill.svg new file mode 100644 index 0000000..843a311 --- /dev/null +++ b/src/assets/icon/folder-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/folder-minus.svg b/src/assets/icon/folder-minus.svg new file mode 100644 index 0000000..c6ec9cf --- /dev/null +++ b/src/assets/icon/folder-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/folder-plus.svg b/src/assets/icon/folder-plus.svg new file mode 100644 index 0000000..b3d181a --- /dev/null +++ b/src/assets/icon/folder-plus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/folder-symlink-fill.svg b/src/assets/icon/folder-symlink-fill.svg new file mode 100644 index 0000000..c3666cd --- /dev/null +++ b/src/assets/icon/folder-symlink-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/folder-symlink.svg b/src/assets/icon/folder-symlink.svg new file mode 100644 index 0000000..98fa7db --- /dev/null +++ b/src/assets/icon/folder-symlink.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/folder.svg b/src/assets/icon/folder.svg new file mode 100644 index 0000000..60f4f6b --- /dev/null +++ b/src/assets/icon/folder.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/folder2-open.svg b/src/assets/icon/folder2-open.svg new file mode 100644 index 0000000..1f18065 --- /dev/null +++ b/src/assets/icon/folder2-open.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/folder2.svg b/src/assets/icon/folder2.svg new file mode 100644 index 0000000..840698d --- /dev/null +++ b/src/assets/icon/folder2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/fonts.svg b/src/assets/icon/fonts.svg new file mode 100644 index 0000000..43177e0 --- /dev/null +++ b/src/assets/icon/fonts.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/forward-fill.svg b/src/assets/icon/forward-fill.svg new file mode 100644 index 0000000..f5069c2 --- /dev/null +++ b/src/assets/icon/forward-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/forward.svg b/src/assets/icon/forward.svg new file mode 100644 index 0000000..da9930a --- /dev/null +++ b/src/assets/icon/forward.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/front.svg b/src/assets/icon/front.svg new file mode 100644 index 0000000..51d1a5f --- /dev/null +++ b/src/assets/icon/front.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/fullscreen-exit.svg b/src/assets/icon/fullscreen-exit.svg new file mode 100644 index 0000000..0299926 --- /dev/null +++ b/src/assets/icon/fullscreen-exit.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/fullscreen.svg b/src/assets/icon/fullscreen.svg new file mode 100644 index 0000000..2bbb066 --- /dev/null +++ b/src/assets/icon/fullscreen.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/funnel-fill.svg b/src/assets/icon/funnel-fill.svg new file mode 100644 index 0000000..ca67ebc --- /dev/null +++ b/src/assets/icon/funnel-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/funnel.svg b/src/assets/icon/funnel.svg new file mode 100644 index 0000000..6a5274d --- /dev/null +++ b/src/assets/icon/funnel.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/gear-fill.svg b/src/assets/icon/gear-fill.svg new file mode 100644 index 0000000..6a0b029 --- /dev/null +++ b/src/assets/icon/gear-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/gear-wide-connected.svg b/src/assets/icon/gear-wide-connected.svg new file mode 100644 index 0000000..d717985 --- /dev/null +++ b/src/assets/icon/gear-wide-connected.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/gear-wide.svg b/src/assets/icon/gear-wide.svg new file mode 100644 index 0000000..3c981cf --- /dev/null +++ b/src/assets/icon/gear-wide.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/gear.svg b/src/assets/icon/gear.svg new file mode 100644 index 0000000..838bb17 --- /dev/null +++ b/src/assets/icon/gear.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/gem.svg b/src/assets/icon/gem.svg new file mode 100644 index 0000000..a7238ad --- /dev/null +++ b/src/assets/icon/gem.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/geo-alt.svg b/src/assets/icon/geo-alt.svg new file mode 100644 index 0000000..17395b2 --- /dev/null +++ b/src/assets/icon/geo-alt.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/geo.svg b/src/assets/icon/geo.svg new file mode 100644 index 0000000..f6883e4 --- /dev/null +++ b/src/assets/icon/geo.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/gift-fill.svg b/src/assets/icon/gift-fill.svg new file mode 100644 index 0000000..d4d1ffa --- /dev/null +++ b/src/assets/icon/gift-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/gift.svg b/src/assets/icon/gift.svg new file mode 100644 index 0000000..6657f5b --- /dev/null +++ b/src/assets/icon/gift.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/globe.svg b/src/assets/icon/globe.svg new file mode 100644 index 0000000..3b90058 --- /dev/null +++ b/src/assets/icon/globe.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/globe2.svg b/src/assets/icon/globe2.svg new file mode 100644 index 0000000..a264bd4 --- /dev/null +++ b/src/assets/icon/globe2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/graph-down.svg b/src/assets/icon/graph-down.svg new file mode 100644 index 0000000..ebd8493 --- /dev/null +++ b/src/assets/icon/graph-down.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/graph-up.svg b/src/assets/icon/graph-up.svg new file mode 100644 index 0000000..588d47b --- /dev/null +++ b/src/assets/icon/graph-up.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/grid-1x2-fill.svg b/src/assets/icon/grid-1x2-fill.svg new file mode 100644 index 0000000..fb52e78 --- /dev/null +++ b/src/assets/icon/grid-1x2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/grid-1x2.svg b/src/assets/icon/grid-1x2.svg new file mode 100644 index 0000000..8d5dc72 --- /dev/null +++ b/src/assets/icon/grid-1x2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/grid-3x2-gap-fill.svg b/src/assets/icon/grid-3x2-gap-fill.svg new file mode 100644 index 0000000..cc7da84 --- /dev/null +++ b/src/assets/icon/grid-3x2-gap-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/grid-3x2-gap.svg b/src/assets/icon/grid-3x2-gap.svg new file mode 100644 index 0000000..68cf9d6 --- /dev/null +++ b/src/assets/icon/grid-3x2-gap.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/grid-3x2.svg b/src/assets/icon/grid-3x2.svg new file mode 100644 index 0000000..1c3086d --- /dev/null +++ b/src/assets/icon/grid-3x2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/grid-3x3-gap-fill.svg b/src/assets/icon/grid-3x3-gap-fill.svg new file mode 100644 index 0000000..5ce44b7 --- /dev/null +++ b/src/assets/icon/grid-3x3-gap-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/grid-3x3-gap.svg b/src/assets/icon/grid-3x3-gap.svg new file mode 100644 index 0000000..27b1270 --- /dev/null +++ b/src/assets/icon/grid-3x3-gap.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/grid-3x3.svg b/src/assets/icon/grid-3x3.svg new file mode 100644 index 0000000..69c4e28 --- /dev/null +++ b/src/assets/icon/grid-3x3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/grid-fill.svg b/src/assets/icon/grid-fill.svg new file mode 100644 index 0000000..8b3c083 --- /dev/null +++ b/src/assets/icon/grid-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/grid.svg b/src/assets/icon/grid.svg new file mode 100644 index 0000000..1c106cd --- /dev/null +++ b/src/assets/icon/grid.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/grip-horizontal.svg b/src/assets/icon/grip-horizontal.svg new file mode 100644 index 0000000..5439000 --- /dev/null +++ b/src/assets/icon/grip-horizontal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/grip-vertical.svg b/src/assets/icon/grip-vertical.svg new file mode 100644 index 0000000..3f0078a --- /dev/null +++ b/src/assets/icon/grip-vertical.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/hammer.svg b/src/assets/icon/hammer.svg new file mode 100644 index 0000000..8651cf3 --- /dev/null +++ b/src/assets/icon/hammer.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/hand-index-thumb.svg b/src/assets/icon/hand-index-thumb.svg new file mode 100644 index 0000000..f3041fe --- /dev/null +++ b/src/assets/icon/hand-index-thumb.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/hand-index.svg b/src/assets/icon/hand-index.svg new file mode 100644 index 0000000..9ddd027 --- /dev/null +++ b/src/assets/icon/hand-index.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/hand-thumbs-down.svg b/src/assets/icon/hand-thumbs-down.svg new file mode 100644 index 0000000..ac6ae29 --- /dev/null +++ b/src/assets/icon/hand-thumbs-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/hand-thumbs-up.svg b/src/assets/icon/hand-thumbs-up.svg new file mode 100644 index 0000000..a9c8df9 --- /dev/null +++ b/src/assets/icon/hand-thumbs-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/handbag-fill.svg b/src/assets/icon/handbag-fill.svg new file mode 100644 index 0000000..74e3c33 --- /dev/null +++ b/src/assets/icon/handbag-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/handbag.svg b/src/assets/icon/handbag.svg new file mode 100644 index 0000000..5d2fec2 --- /dev/null +++ b/src/assets/icon/handbag.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/hash.svg b/src/assets/icon/hash.svg new file mode 100644 index 0000000..aee4d30 --- /dev/null +++ b/src/assets/icon/hash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/hdd-fill.svg b/src/assets/icon/hdd-fill.svg new file mode 100644 index 0000000..3bba393 --- /dev/null +++ b/src/assets/icon/hdd-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/hdd-network-fill.svg b/src/assets/icon/hdd-network-fill.svg new file mode 100644 index 0000000..d1c692c --- /dev/null +++ b/src/assets/icon/hdd-network-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/hdd-network.svg b/src/assets/icon/hdd-network.svg new file mode 100644 index 0000000..3dfd814 --- /dev/null +++ b/src/assets/icon/hdd-network.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/hdd-rack-fill.svg b/src/assets/icon/hdd-rack-fill.svg new file mode 100644 index 0000000..f9d7c49 --- /dev/null +++ b/src/assets/icon/hdd-rack-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/hdd-rack.svg b/src/assets/icon/hdd-rack.svg new file mode 100644 index 0000000..e9be9f7 --- /dev/null +++ b/src/assets/icon/hdd-rack.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/icon/hdd-stack-fill.svg b/src/assets/icon/hdd-stack-fill.svg new file mode 100644 index 0000000..2b56d2b --- /dev/null +++ b/src/assets/icon/hdd-stack-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/hdd-stack.svg b/src/assets/icon/hdd-stack.svg new file mode 100644 index 0000000..abbcf14 --- /dev/null +++ b/src/assets/icon/hdd-stack.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/hdd.svg b/src/assets/icon/hdd.svg new file mode 100644 index 0000000..051950b --- /dev/null +++ b/src/assets/icon/hdd.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/headphones.svg b/src/assets/icon/headphones.svg new file mode 100644 index 0000000..8bc56e8 --- /dev/null +++ b/src/assets/icon/headphones.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/headset.svg b/src/assets/icon/headset.svg new file mode 100644 index 0000000..2fe0aef --- /dev/null +++ b/src/assets/icon/headset.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/heart-fill.svg b/src/assets/icon/heart-fill.svg new file mode 100644 index 0000000..0d373ea --- /dev/null +++ b/src/assets/icon/heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/heart-half.svg b/src/assets/icon/heart-half.svg new file mode 100644 index 0000000..30b884d --- /dev/null +++ b/src/assets/icon/heart-half.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/heart.svg b/src/assets/icon/heart.svg new file mode 100644 index 0000000..a61332f --- /dev/null +++ b/src/assets/icon/heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/heptagon-fill.svg b/src/assets/icon/heptagon-fill.svg new file mode 100644 index 0000000..5627b22 --- /dev/null +++ b/src/assets/icon/heptagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/heptagon-half.svg b/src/assets/icon/heptagon-half.svg new file mode 100644 index 0000000..9b41874 --- /dev/null +++ b/src/assets/icon/heptagon-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/heptagon.svg b/src/assets/icon/heptagon.svg new file mode 100644 index 0000000..c6ee735 --- /dev/null +++ b/src/assets/icon/heptagon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/hexagon-fill.svg b/src/assets/icon/hexagon-fill.svg new file mode 100644 index 0000000..7a5d017 --- /dev/null +++ b/src/assets/icon/hexagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/hexagon-half.svg b/src/assets/icon/hexagon-half.svg new file mode 100644 index 0000000..05be1dd --- /dev/null +++ b/src/assets/icon/hexagon-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/hexagon.svg b/src/assets/icon/hexagon.svg new file mode 100644 index 0000000..71727c9 --- /dev/null +++ b/src/assets/icon/hexagon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/hourglass-bottom.svg b/src/assets/icon/hourglass-bottom.svg new file mode 100644 index 0000000..c2d3df3 --- /dev/null +++ b/src/assets/icon/hourglass-bottom.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/hourglass-split.svg b/src/assets/icon/hourglass-split.svg new file mode 100644 index 0000000..3d352d2 --- /dev/null +++ b/src/assets/icon/hourglass-split.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/hourglass-top.svg b/src/assets/icon/hourglass-top.svg new file mode 100644 index 0000000..f09528d --- /dev/null +++ b/src/assets/icon/hourglass-top.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/hourglass.svg b/src/assets/icon/hourglass.svg new file mode 100644 index 0000000..934d7ea --- /dev/null +++ b/src/assets/icon/hourglass.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/house-door-fill.svg b/src/assets/icon/house-door-fill.svg new file mode 100644 index 0000000..089cd40 --- /dev/null +++ b/src/assets/icon/house-door-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/house-door.svg b/src/assets/icon/house-door.svg new file mode 100644 index 0000000..be19809 --- /dev/null +++ b/src/assets/icon/house-door.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/house-fill.svg b/src/assets/icon/house-fill.svg new file mode 100644 index 0000000..b8eba6f --- /dev/null +++ b/src/assets/icon/house-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/house.svg b/src/assets/icon/house.svg new file mode 100644 index 0000000..419f8e4 --- /dev/null +++ b/src/assets/icon/house.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/hr.svg b/src/assets/icon/hr.svg new file mode 100644 index 0000000..654cdd0 --- /dev/null +++ b/src/assets/icon/hr.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/image-alt.svg b/src/assets/icon/image-alt.svg new file mode 100644 index 0000000..922356b --- /dev/null +++ b/src/assets/icon/image-alt.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/image-fill.svg b/src/assets/icon/image-fill.svg new file mode 100644 index 0000000..7c5a962 --- /dev/null +++ b/src/assets/icon/image-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/image.svg b/src/assets/icon/image.svg new file mode 100644 index 0000000..7c7c089 --- /dev/null +++ b/src/assets/icon/image.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/images.svg b/src/assets/icon/images.svg new file mode 100644 index 0000000..f0cc995 --- /dev/null +++ b/src/assets/icon/images.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/inbox-fill.svg b/src/assets/icon/inbox-fill.svg new file mode 100644 index 0000000..3566c4b --- /dev/null +++ b/src/assets/icon/inbox-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/inbox.svg b/src/assets/icon/inbox.svg new file mode 100644 index 0000000..005cd7f --- /dev/null +++ b/src/assets/icon/inbox.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/inboxes-fill.svg b/src/assets/icon/inboxes-fill.svg new file mode 100644 index 0000000..d507794 --- /dev/null +++ b/src/assets/icon/inboxes-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/inboxes.svg b/src/assets/icon/inboxes.svg new file mode 100644 index 0000000..dc3ae0d --- /dev/null +++ b/src/assets/icon/inboxes.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/info-circle-fill.svg b/src/assets/icon/info-circle-fill.svg new file mode 100644 index 0000000..2a16615 --- /dev/null +++ b/src/assets/icon/info-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/info-circle.svg b/src/assets/icon/info-circle.svg new file mode 100644 index 0000000..b0c7a49 --- /dev/null +++ b/src/assets/icon/info-circle.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/info-square-fill.svg b/src/assets/icon/info-square-fill.svg new file mode 100644 index 0000000..7386aa7 --- /dev/null +++ b/src/assets/icon/info-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/info-square.svg b/src/assets/icon/info-square.svg new file mode 100644 index 0000000..6eda839 --- /dev/null +++ b/src/assets/icon/info-square.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/info.svg b/src/assets/icon/info.svg new file mode 100644 index 0000000..2bebd27 --- /dev/null +++ b/src/assets/icon/info.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/input-cursor-text.svg b/src/assets/icon/input-cursor-text.svg new file mode 100644 index 0000000..4ad3cd5 --- /dev/null +++ b/src/assets/icon/input-cursor-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/input-cursor.svg b/src/assets/icon/input-cursor.svg new file mode 100644 index 0000000..bfe0ee0 --- /dev/null +++ b/src/assets/icon/input-cursor.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/intersect.svg b/src/assets/icon/intersect.svg new file mode 100644 index 0000000..568b3e6 --- /dev/null +++ b/src/assets/icon/intersect.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/ionicons.eot b/src/assets/icon/ionicons.eot new file mode 100644 index 0000000..579c1e1 Binary files /dev/null and b/src/assets/icon/ionicons.eot differ diff --git a/src/assets/icon/ionicons.svg b/src/assets/icon/ionicons.svg new file mode 100644 index 0000000..43bbea8 --- /dev/null +++ b/src/assets/icon/ionicons.svg @@ -0,0 +1,2090 @@ + + + + + +Created by FontForge 20160407 at Fri May 24 15:45:40 2019 + By Adam Bradley +Copyright (c) 2019, Adam Bradley + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icon/ionicons.ttf b/src/assets/icon/ionicons.ttf new file mode 100644 index 0000000..ffd7d6f Binary files /dev/null and b/src/assets/icon/ionicons.ttf differ diff --git a/src/assets/icon/ionicons.woff b/src/assets/icon/ionicons.woff new file mode 100644 index 0000000..8708d82 Binary files /dev/null and b/src/assets/icon/ionicons.woff differ diff --git a/src/assets/icon/ionicons.woff2 b/src/assets/icon/ionicons.woff2 new file mode 100644 index 0000000..3917647 Binary files /dev/null and b/src/assets/icon/ionicons.woff2 differ diff --git a/src/assets/icon/journal-album.svg b/src/assets/icon/journal-album.svg new file mode 100644 index 0000000..742e05f --- /dev/null +++ b/src/assets/icon/journal-album.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/journal-arrow-down.svg b/src/assets/icon/journal-arrow-down.svg new file mode 100644 index 0000000..4f7f4a0 --- /dev/null +++ b/src/assets/icon/journal-arrow-down.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/journal-arrow-up.svg b/src/assets/icon/journal-arrow-up.svg new file mode 100644 index 0000000..313812d --- /dev/null +++ b/src/assets/icon/journal-arrow-up.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/journal-check.svg b/src/assets/icon/journal-check.svg new file mode 100644 index 0000000..9843372 --- /dev/null +++ b/src/assets/icon/journal-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/journal-code.svg b/src/assets/icon/journal-code.svg new file mode 100644 index 0000000..383fb96 --- /dev/null +++ b/src/assets/icon/journal-code.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/journal-medical.svg b/src/assets/icon/journal-medical.svg new file mode 100644 index 0000000..64f803d --- /dev/null +++ b/src/assets/icon/journal-medical.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/journal-minus.svg b/src/assets/icon/journal-minus.svg new file mode 100644 index 0000000..b86edec --- /dev/null +++ b/src/assets/icon/journal-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/journal-plus.svg b/src/assets/icon/journal-plus.svg new file mode 100644 index 0000000..fa4968d --- /dev/null +++ b/src/assets/icon/journal-plus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/journal-richtext.svg b/src/assets/icon/journal-richtext.svg new file mode 100644 index 0000000..ce2d6fe --- /dev/null +++ b/src/assets/icon/journal-richtext.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/journal-text.svg b/src/assets/icon/journal-text.svg new file mode 100644 index 0000000..bc18869 --- /dev/null +++ b/src/assets/icon/journal-text.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/journal.svg b/src/assets/icon/journal.svg new file mode 100644 index 0000000..23f6201 --- /dev/null +++ b/src/assets/icon/journal.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/journals.svg b/src/assets/icon/journals.svg new file mode 100644 index 0000000..dc7d96d --- /dev/null +++ b/src/assets/icon/journals.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/joystick.svg b/src/assets/icon/joystick.svg new file mode 100644 index 0000000..6221ed1 --- /dev/null +++ b/src/assets/icon/joystick.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/justify-left.svg b/src/assets/icon/justify-left.svg new file mode 100644 index 0000000..ce4b7b5 --- /dev/null +++ b/src/assets/icon/justify-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/justify-right.svg b/src/assets/icon/justify-right.svg new file mode 100644 index 0000000..134d5eb --- /dev/null +++ b/src/assets/icon/justify-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/justify.svg b/src/assets/icon/justify.svg new file mode 100644 index 0000000..32ec099 --- /dev/null +++ b/src/assets/icon/justify.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/kanban-fill.svg b/src/assets/icon/kanban-fill.svg new file mode 100644 index 0000000..9b41493 --- /dev/null +++ b/src/assets/icon/kanban-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/kanban.svg b/src/assets/icon/kanban.svg new file mode 100644 index 0000000..9009d85 --- /dev/null +++ b/src/assets/icon/kanban.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/key-fill.svg b/src/assets/icon/key-fill.svg new file mode 100644 index 0000000..b42d1d0 --- /dev/null +++ b/src/assets/icon/key-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/key.svg b/src/assets/icon/key.svg new file mode 100644 index 0000000..3f0150b --- /dev/null +++ b/src/assets/icon/key.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/keyboard-fill.svg b/src/assets/icon/keyboard-fill.svg new file mode 100644 index 0000000..8011d18 --- /dev/null +++ b/src/assets/icon/keyboard-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/keyboard.svg b/src/assets/icon/keyboard.svg new file mode 100644 index 0000000..5329bca --- /dev/null +++ b/src/assets/icon/keyboard.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/ladder.svg b/src/assets/icon/ladder.svg new file mode 100644 index 0000000..fea6ed7 --- /dev/null +++ b/src/assets/icon/ladder.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/lamp-fill.svg b/src/assets/icon/lamp-fill.svg new file mode 100644 index 0000000..02856a1 --- /dev/null +++ b/src/assets/icon/lamp-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/lamp.svg b/src/assets/icon/lamp.svg new file mode 100644 index 0000000..5287c0e --- /dev/null +++ b/src/assets/icon/lamp.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/laptop-fill.svg b/src/assets/icon/laptop-fill.svg new file mode 100644 index 0000000..40518e9 --- /dev/null +++ b/src/assets/icon/laptop-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/laptop.svg b/src/assets/icon/laptop.svg new file mode 100644 index 0000000..53c079f --- /dev/null +++ b/src/assets/icon/laptop.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/layers-fill.svg b/src/assets/icon/layers-fill.svg new file mode 100644 index 0000000..6df71f3 --- /dev/null +++ b/src/assets/icon/layers-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/layers-half.svg b/src/assets/icon/layers-half.svg new file mode 100644 index 0000000..cdb2e4b --- /dev/null +++ b/src/assets/icon/layers-half.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/layers.svg b/src/assets/icon/layers.svg new file mode 100644 index 0000000..a1e69dc --- /dev/null +++ b/src/assets/icon/layers.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/layout-sidebar-inset-reverse.svg b/src/assets/icon/layout-sidebar-inset-reverse.svg new file mode 100644 index 0000000..958c500 --- /dev/null +++ b/src/assets/icon/layout-sidebar-inset-reverse.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/layout-sidebar-inset.svg b/src/assets/icon/layout-sidebar-inset.svg new file mode 100644 index 0000000..e19718a --- /dev/null +++ b/src/assets/icon/layout-sidebar-inset.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/layout-sidebar-reverse.svg b/src/assets/icon/layout-sidebar-reverse.svg new file mode 100644 index 0000000..90c6adb --- /dev/null +++ b/src/assets/icon/layout-sidebar-reverse.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/layout-sidebar.svg b/src/assets/icon/layout-sidebar.svg new file mode 100644 index 0000000..05e2253 --- /dev/null +++ b/src/assets/icon/layout-sidebar.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/layout-split.svg b/src/assets/icon/layout-split.svg new file mode 100644 index 0000000..fe0aad4 --- /dev/null +++ b/src/assets/icon/layout-split.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/layout-text-sidebar-reverse.svg b/src/assets/icon/layout-text-sidebar-reverse.svg new file mode 100644 index 0000000..c4b14d0 --- /dev/null +++ b/src/assets/icon/layout-text-sidebar-reverse.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/layout-text-sidebar.svg b/src/assets/icon/layout-text-sidebar.svg new file mode 100644 index 0000000..a51275e --- /dev/null +++ b/src/assets/icon/layout-text-sidebar.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/layout-text-window-reverse.svg b/src/assets/icon/layout-text-window-reverse.svg new file mode 100644 index 0000000..91c20f3 --- /dev/null +++ b/src/assets/icon/layout-text-window-reverse.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/layout-text-window.svg b/src/assets/icon/layout-text-window.svg new file mode 100644 index 0000000..9a464f4 --- /dev/null +++ b/src/assets/icon/layout-text-window.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/layout-three-columns.svg b/src/assets/icon/layout-three-columns.svg new file mode 100644 index 0000000..4ef2225 --- /dev/null +++ b/src/assets/icon/layout-three-columns.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/layout-wtf.svg b/src/assets/icon/layout-wtf.svg new file mode 100644 index 0000000..0fbae98 --- /dev/null +++ b/src/assets/icon/layout-wtf.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/life-preserver.svg b/src/assets/icon/life-preserver.svg new file mode 100644 index 0000000..b051eaa --- /dev/null +++ b/src/assets/icon/life-preserver.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/lightning-fill.svg b/src/assets/icon/lightning-fill.svg new file mode 100644 index 0000000..3eec779 --- /dev/null +++ b/src/assets/icon/lightning-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/lightning.svg b/src/assets/icon/lightning.svg new file mode 100644 index 0000000..9a683d7 --- /dev/null +++ b/src/assets/icon/lightning.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/link-45deg.svg b/src/assets/icon/link-45deg.svg new file mode 100644 index 0000000..b584709 --- /dev/null +++ b/src/assets/icon/link-45deg.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/link.svg b/src/assets/icon/link.svg new file mode 100644 index 0000000..7044398 --- /dev/null +++ b/src/assets/icon/link.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/list-check.svg b/src/assets/icon/list-check.svg new file mode 100644 index 0000000..d645f7c --- /dev/null +++ b/src/assets/icon/list-check.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/list-nested.svg b/src/assets/icon/list-nested.svg new file mode 100644 index 0000000..b695125 --- /dev/null +++ b/src/assets/icon/list-nested.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/list-ol.svg b/src/assets/icon/list-ol.svg new file mode 100644 index 0000000..4a8df96 --- /dev/null +++ b/src/assets/icon/list-ol.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/list-stars.svg b/src/assets/icon/list-stars.svg new file mode 100644 index 0000000..d3a6bf8 --- /dev/null +++ b/src/assets/icon/list-stars.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/list-task.svg b/src/assets/icon/list-task.svg new file mode 100644 index 0000000..1957757 --- /dev/null +++ b/src/assets/icon/list-task.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/list-ul.svg b/src/assets/icon/list-ul.svg new file mode 100644 index 0000000..46c3e3d --- /dev/null +++ b/src/assets/icon/list-ul.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/list.svg b/src/assets/icon/list.svg new file mode 100644 index 0000000..6ae1b3b --- /dev/null +++ b/src/assets/icon/list.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/lock-fill.svg b/src/assets/icon/lock-fill.svg new file mode 100644 index 0000000..3f11916 --- /dev/null +++ b/src/assets/icon/lock-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/lock.svg b/src/assets/icon/lock.svg new file mode 100644 index 0000000..8796531 --- /dev/null +++ b/src/assets/icon/lock.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/mailbox.svg b/src/assets/icon/mailbox.svg new file mode 100644 index 0000000..78b27ef --- /dev/null +++ b/src/assets/icon/mailbox.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/mailbox2.svg b/src/assets/icon/mailbox2.svg new file mode 100644 index 0000000..d8f12b5 --- /dev/null +++ b/src/assets/icon/mailbox2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/map.svg b/src/assets/icon/map.svg new file mode 100644 index 0000000..d9ad88e --- /dev/null +++ b/src/assets/icon/map.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/markdown-fill.svg b/src/assets/icon/markdown-fill.svg new file mode 100644 index 0000000..8ea5797 --- /dev/null +++ b/src/assets/icon/markdown-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/markdown.svg b/src/assets/icon/markdown.svg new file mode 100644 index 0000000..83635be --- /dev/null +++ b/src/assets/icon/markdown.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/menu-app-fill.svg b/src/assets/icon/menu-app-fill.svg new file mode 100644 index 0000000..af521c6 --- /dev/null +++ b/src/assets/icon/menu-app-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/menu-app.svg b/src/assets/icon/menu-app.svg new file mode 100644 index 0000000..0035ce3 --- /dev/null +++ b/src/assets/icon/menu-app.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/menu-button-fill.svg b/src/assets/icon/menu-button-fill.svg new file mode 100644 index 0000000..bbc5d6f --- /dev/null +++ b/src/assets/icon/menu-button-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/menu-button-wide-fill.svg b/src/assets/icon/menu-button-wide-fill.svg new file mode 100644 index 0000000..9d73907 --- /dev/null +++ b/src/assets/icon/menu-button-wide-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/menu-button-wide.svg b/src/assets/icon/menu-button-wide.svg new file mode 100644 index 0000000..1445627 --- /dev/null +++ b/src/assets/icon/menu-button-wide.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/menu-button.svg b/src/assets/icon/menu-button.svg new file mode 100644 index 0000000..4d38ea1 --- /dev/null +++ b/src/assets/icon/menu-button.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/menu-down.svg b/src/assets/icon/menu-down.svg new file mode 100644 index 0000000..6818632 --- /dev/null +++ b/src/assets/icon/menu-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/menu-up.svg b/src/assets/icon/menu-up.svg new file mode 100644 index 0000000..edf6bbc --- /dev/null +++ b/src/assets/icon/menu-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/mic-fill.svg b/src/assets/icon/mic-fill.svg new file mode 100644 index 0000000..f04f127 --- /dev/null +++ b/src/assets/icon/mic-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/mic-mute-fill.svg b/src/assets/icon/mic-mute-fill.svg new file mode 100644 index 0000000..8277a0e --- /dev/null +++ b/src/assets/icon/mic-mute-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/mic-mute.svg b/src/assets/icon/mic-mute.svg new file mode 100644 index 0000000..aedb9dc --- /dev/null +++ b/src/assets/icon/mic-mute.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/mic.svg b/src/assets/icon/mic.svg new file mode 100644 index 0000000..cdc52aa --- /dev/null +++ b/src/assets/icon/mic.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/minecart-loaded.svg b/src/assets/icon/minecart-loaded.svg new file mode 100644 index 0000000..cd20443 --- /dev/null +++ b/src/assets/icon/minecart-loaded.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/minecart.svg b/src/assets/icon/minecart.svg new file mode 100644 index 0000000..5d40200 --- /dev/null +++ b/src/assets/icon/minecart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/moon.svg b/src/assets/icon/moon.svg new file mode 100644 index 0000000..4bf82be --- /dev/null +++ b/src/assets/icon/moon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/mouse.svg b/src/assets/icon/mouse.svg new file mode 100644 index 0000000..6e2a878 --- /dev/null +++ b/src/assets/icon/mouse.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/mouse2.svg b/src/assets/icon/mouse2.svg new file mode 100644 index 0000000..c409177 --- /dev/null +++ b/src/assets/icon/mouse2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/mouse3.svg b/src/assets/icon/mouse3.svg new file mode 100644 index 0000000..0a10ada --- /dev/null +++ b/src/assets/icon/mouse3.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/music-note-beamed.svg b/src/assets/icon/music-note-beamed.svg new file mode 100644 index 0000000..8403137 --- /dev/null +++ b/src/assets/icon/music-note-beamed.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/music-note-list.svg b/src/assets/icon/music-note-list.svg new file mode 100644 index 0000000..4e5a2b3 --- /dev/null +++ b/src/assets/icon/music-note-list.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/music-note.svg b/src/assets/icon/music-note.svg new file mode 100644 index 0000000..3f78db0 --- /dev/null +++ b/src/assets/icon/music-note.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/music-player-fill.svg b/src/assets/icon/music-player-fill.svg new file mode 100644 index 0000000..cbeb97a --- /dev/null +++ b/src/assets/icon/music-player-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/music-player.svg b/src/assets/icon/music-player.svg new file mode 100644 index 0000000..d479c95 --- /dev/null +++ b/src/assets/icon/music-player.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/newspaper.svg b/src/assets/icon/newspaper.svg new file mode 100644 index 0000000..f5b8dcc --- /dev/null +++ b/src/assets/icon/newspaper.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/node-minus-fill.svg b/src/assets/icon/node-minus-fill.svg new file mode 100644 index 0000000..5ed4ab9 --- /dev/null +++ b/src/assets/icon/node-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/node-minus.svg b/src/assets/icon/node-minus.svg new file mode 100644 index 0000000..5fa2326 --- /dev/null +++ b/src/assets/icon/node-minus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/node-plus-fill.svg b/src/assets/icon/node-plus-fill.svg new file mode 100644 index 0000000..0b2b64e --- /dev/null +++ b/src/assets/icon/node-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/node-plus.svg b/src/assets/icon/node-plus.svg new file mode 100644 index 0000000..33ca22f --- /dev/null +++ b/src/assets/icon/node-plus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/nut-fill.svg b/src/assets/icon/nut-fill.svg new file mode 100644 index 0000000..a0c1f57 --- /dev/null +++ b/src/assets/icon/nut-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/nut.svg b/src/assets/icon/nut.svg new file mode 100644 index 0000000..30bba5d --- /dev/null +++ b/src/assets/icon/nut.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/octagon-fill.svg b/src/assets/icon/octagon-fill.svg new file mode 100644 index 0000000..c9b4dad --- /dev/null +++ b/src/assets/icon/octagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/octagon-half.svg b/src/assets/icon/octagon-half.svg new file mode 100644 index 0000000..026d0ca --- /dev/null +++ b/src/assets/icon/octagon-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/octagon.svg b/src/assets/icon/octagon.svg new file mode 100644 index 0000000..48ebf30 --- /dev/null +++ b/src/assets/icon/octagon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/option.svg b/src/assets/icon/option.svg new file mode 100644 index 0000000..04d12d8 --- /dev/null +++ b/src/assets/icon/option.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/outlet.svg b/src/assets/icon/outlet.svg new file mode 100644 index 0000000..777940d --- /dev/null +++ b/src/assets/icon/outlet.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/paperclip.svg b/src/assets/icon/paperclip.svg new file mode 100644 index 0000000..a8dfb19 --- /dev/null +++ b/src/assets/icon/paperclip.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/paragraph.svg b/src/assets/icon/paragraph.svg new file mode 100644 index 0000000..399329c --- /dev/null +++ b/src/assets/icon/paragraph.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/patch-check-fll.svg b/src/assets/icon/patch-check-fll.svg new file mode 100644 index 0000000..750b530 --- /dev/null +++ b/src/assets/icon/patch-check-fll.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/patch-check.svg b/src/assets/icon/patch-check.svg new file mode 100644 index 0000000..50e1200 --- /dev/null +++ b/src/assets/icon/patch-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/patch-exclamation-fll.svg b/src/assets/icon/patch-exclamation-fll.svg new file mode 100644 index 0000000..9640010 --- /dev/null +++ b/src/assets/icon/patch-exclamation-fll.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/patch-exclamation.svg b/src/assets/icon/patch-exclamation.svg new file mode 100644 index 0000000..42ab96f --- /dev/null +++ b/src/assets/icon/patch-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/patch-minus-fll.svg b/src/assets/icon/patch-minus-fll.svg new file mode 100644 index 0000000..d490d2a --- /dev/null +++ b/src/assets/icon/patch-minus-fll.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/patch-minus.svg b/src/assets/icon/patch-minus.svg new file mode 100644 index 0000000..e45e885 --- /dev/null +++ b/src/assets/icon/patch-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/patch-plus-fll.svg b/src/assets/icon/patch-plus-fll.svg new file mode 100644 index 0000000..a9b96cd --- /dev/null +++ b/src/assets/icon/patch-plus-fll.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/patch-plus.svg b/src/assets/icon/patch-plus.svg new file mode 100644 index 0000000..4f8f1c8 --- /dev/null +++ b/src/assets/icon/patch-plus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/patch-question-fll.svg b/src/assets/icon/patch-question-fll.svg new file mode 100644 index 0000000..6f007b1 --- /dev/null +++ b/src/assets/icon/patch-question-fll.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/patch-question.svg b/src/assets/icon/patch-question.svg new file mode 100644 index 0000000..ae317bc --- /dev/null +++ b/src/assets/icon/patch-question.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/pause-fill.svg b/src/assets/icon/pause-fill.svg new file mode 100644 index 0000000..43d8e5e --- /dev/null +++ b/src/assets/icon/pause-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/pause.svg b/src/assets/icon/pause.svg new file mode 100644 index 0000000..ec7ffff --- /dev/null +++ b/src/assets/icon/pause.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/peace-fill.svg b/src/assets/icon/peace-fill.svg new file mode 100644 index 0000000..69b68c9 --- /dev/null +++ b/src/assets/icon/peace-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/peace.svg b/src/assets/icon/peace.svg new file mode 100644 index 0000000..1f1766a --- /dev/null +++ b/src/assets/icon/peace.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/pen.svg b/src/assets/icon/pen.svg new file mode 100644 index 0000000..b4e09f6 --- /dev/null +++ b/src/assets/icon/pen.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/pencil-square.svg b/src/assets/icon/pencil-square.svg new file mode 100644 index 0000000..1fa28b2 --- /dev/null +++ b/src/assets/icon/pencil-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/pencil.svg b/src/assets/icon/pencil.svg new file mode 100644 index 0000000..b8e9b86 --- /dev/null +++ b/src/assets/icon/pencil.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/pentagon-fill.svg b/src/assets/icon/pentagon-fill.svg new file mode 100644 index 0000000..0a609be --- /dev/null +++ b/src/assets/icon/pentagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/pentagon-half.svg b/src/assets/icon/pentagon-half.svg new file mode 100644 index 0000000..f2d4e2e --- /dev/null +++ b/src/assets/icon/pentagon-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/pentagon.svg b/src/assets/icon/pentagon.svg new file mode 100644 index 0000000..17b55b6 --- /dev/null +++ b/src/assets/icon/pentagon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/people-fill.svg b/src/assets/icon/people-fill.svg new file mode 100644 index 0000000..ddf7d13 --- /dev/null +++ b/src/assets/icon/people-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/people.svg b/src/assets/icon/people.svg new file mode 100644 index 0000000..04f7c23 --- /dev/null +++ b/src/assets/icon/people.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/percent.svg b/src/assets/icon/percent.svg new file mode 100644 index 0000000..0db19e2 --- /dev/null +++ b/src/assets/icon/percent.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/person-badge-fill.svg b/src/assets/icon/person-badge-fill.svg new file mode 100644 index 0000000..e57f688 --- /dev/null +++ b/src/assets/icon/person-badge-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/person-badge.svg b/src/assets/icon/person-badge.svg new file mode 100644 index 0000000..0446b9b --- /dev/null +++ b/src/assets/icon/person-badge.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/person-bounding-box.svg b/src/assets/icon/person-bounding-box.svg new file mode 100644 index 0000000..79b5194 --- /dev/null +++ b/src/assets/icon/person-bounding-box.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/person-check-fill.svg b/src/assets/icon/person-check-fill.svg new file mode 100644 index 0000000..a1c402c --- /dev/null +++ b/src/assets/icon/person-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/person-check.svg b/src/assets/icon/person-check.svg new file mode 100644 index 0000000..43dfc83 --- /dev/null +++ b/src/assets/icon/person-check.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/person-circle.svg b/src/assets/icon/person-circle.svg new file mode 100644 index 0000000..44aa5be --- /dev/null +++ b/src/assets/icon/person-circle.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/person-dash-fill.svg b/src/assets/icon/person-dash-fill.svg new file mode 100644 index 0000000..2517d6c --- /dev/null +++ b/src/assets/icon/person-dash-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/person-dash.svg b/src/assets/icon/person-dash.svg new file mode 100644 index 0000000..14a6c07 --- /dev/null +++ b/src/assets/icon/person-dash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/person-fill.svg b/src/assets/icon/person-fill.svg new file mode 100644 index 0000000..f063776 --- /dev/null +++ b/src/assets/icon/person-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/person-lines-fill.svg b/src/assets/icon/person-lines-fill.svg new file mode 100644 index 0000000..4a4b9b7 --- /dev/null +++ b/src/assets/icon/person-lines-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/person-plus-fill.svg b/src/assets/icon/person-plus-fill.svg new file mode 100644 index 0000000..69be8b8 --- /dev/null +++ b/src/assets/icon/person-plus-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/person-plus.svg b/src/assets/icon/person-plus.svg new file mode 100644 index 0000000..f74cf42 --- /dev/null +++ b/src/assets/icon/person-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/person-square.svg b/src/assets/icon/person-square.svg new file mode 100644 index 0000000..692eef4 --- /dev/null +++ b/src/assets/icon/person-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/person.svg b/src/assets/icon/person.svg new file mode 100644 index 0000000..d27e63b --- /dev/null +++ b/src/assets/icon/person.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/phone-fill.svg b/src/assets/icon/phone-fill.svg new file mode 100644 index 0000000..c82edd9 --- /dev/null +++ b/src/assets/icon/phone-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/phone-landscape-fill.svg b/src/assets/icon/phone-landscape-fill.svg new file mode 100644 index 0000000..2729277 --- /dev/null +++ b/src/assets/icon/phone-landscape-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/phone-landscape.svg b/src/assets/icon/phone-landscape.svg new file mode 100644 index 0000000..8a48168 --- /dev/null +++ b/src/assets/icon/phone-landscape.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/phone.svg b/src/assets/icon/phone.svg new file mode 100644 index 0000000..6bce599 --- /dev/null +++ b/src/assets/icon/phone.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/pie-chart-fill.svg b/src/assets/icon/pie-chart-fill.svg new file mode 100644 index 0000000..301b101 --- /dev/null +++ b/src/assets/icon/pie-chart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/pie-chart.svg b/src/assets/icon/pie-chart.svg new file mode 100644 index 0000000..6da878a --- /dev/null +++ b/src/assets/icon/pie-chart.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/pip-fill.svg b/src/assets/icon/pip-fill.svg new file mode 100644 index 0000000..515fc3a --- /dev/null +++ b/src/assets/icon/pip-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/pip.svg b/src/assets/icon/pip.svg new file mode 100644 index 0000000..c5577de --- /dev/null +++ b/src/assets/icon/pip.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/play-fill.svg b/src/assets/icon/play-fill.svg new file mode 100644 index 0000000..52321ab --- /dev/null +++ b/src/assets/icon/play-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/play.svg b/src/assets/icon/play.svg new file mode 100644 index 0000000..9c423e0 --- /dev/null +++ b/src/assets/icon/play.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/plug.svg b/src/assets/icon/plug.svg new file mode 100644 index 0000000..af4917d --- /dev/null +++ b/src/assets/icon/plug.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/plus-circle-fill.svg b/src/assets/icon/plus-circle-fill.svg new file mode 100644 index 0000000..7beff4b --- /dev/null +++ b/src/assets/icon/plus-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/plus-circle.svg b/src/assets/icon/plus-circle.svg new file mode 100644 index 0000000..cba40d8 --- /dev/null +++ b/src/assets/icon/plus-circle.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/plus-square-fill.svg b/src/assets/icon/plus-square-fill.svg new file mode 100644 index 0000000..c2428f9 --- /dev/null +++ b/src/assets/icon/plus-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/plus-square.svg b/src/assets/icon/plus-square.svg new file mode 100644 index 0000000..e8147b2 --- /dev/null +++ b/src/assets/icon/plus-square.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/plus.svg b/src/assets/icon/plus.svg new file mode 100644 index 0000000..6d08caf --- /dev/null +++ b/src/assets/icon/plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/power.svg b/src/assets/icon/power.svg new file mode 100644 index 0000000..9d1b235 --- /dev/null +++ b/src/assets/icon/power.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/printer-fill.svg b/src/assets/icon/printer-fill.svg new file mode 100644 index 0000000..6aece3a --- /dev/null +++ b/src/assets/icon/printer-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/printer.svg b/src/assets/icon/printer.svg new file mode 100644 index 0000000..f25973d --- /dev/null +++ b/src/assets/icon/printer.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/puzzle-fill.svg b/src/assets/icon/puzzle-fill.svg new file mode 100644 index 0000000..ad4ad01 --- /dev/null +++ b/src/assets/icon/puzzle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/puzzle.svg b/src/assets/icon/puzzle.svg new file mode 100644 index 0000000..6cb3d18 --- /dev/null +++ b/src/assets/icon/puzzle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/question-circle-fill.svg b/src/assets/icon/question-circle-fill.svg new file mode 100644 index 0000000..b36e375 --- /dev/null +++ b/src/assets/icon/question-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/question-circle.svg b/src/assets/icon/question-circle.svg new file mode 100644 index 0000000..1394f3c --- /dev/null +++ b/src/assets/icon/question-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/question-diamond-fill.svg b/src/assets/icon/question-diamond-fill.svg new file mode 100644 index 0000000..53be09f --- /dev/null +++ b/src/assets/icon/question-diamond-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/question-diamond.svg b/src/assets/icon/question-diamond.svg new file mode 100644 index 0000000..01667f1 --- /dev/null +++ b/src/assets/icon/question-diamond.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/question-octagon-fill.svg b/src/assets/icon/question-octagon-fill.svg new file mode 100644 index 0000000..c7c8861 --- /dev/null +++ b/src/assets/icon/question-octagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/question-octagon.svg b/src/assets/icon/question-octagon.svg new file mode 100644 index 0000000..5298d0d --- /dev/null +++ b/src/assets/icon/question-octagon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/question-square-fill.svg b/src/assets/icon/question-square-fill.svg new file mode 100644 index 0000000..20a7cbf --- /dev/null +++ b/src/assets/icon/question-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/question-square.svg b/src/assets/icon/question-square.svg new file mode 100644 index 0000000..fbe726e --- /dev/null +++ b/src/assets/icon/question-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/question.svg b/src/assets/icon/question.svg new file mode 100644 index 0000000..c14d18f --- /dev/null +++ b/src/assets/icon/question.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/receipt-cutoff.svg b/src/assets/icon/receipt-cutoff.svg new file mode 100644 index 0000000..8a9bcea --- /dev/null +++ b/src/assets/icon/receipt-cutoff.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/receipt.svg b/src/assets/icon/receipt.svg new file mode 100644 index 0000000..6b71450 --- /dev/null +++ b/src/assets/icon/receipt.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/reception-0.svg b/src/assets/icon/reception-0.svg new file mode 100644 index 0000000..aefc9e5 --- /dev/null +++ b/src/assets/icon/reception-0.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/reception-1.svg b/src/assets/icon/reception-1.svg new file mode 100644 index 0000000..1b48b80 --- /dev/null +++ b/src/assets/icon/reception-1.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/reception-2.svg b/src/assets/icon/reception-2.svg new file mode 100644 index 0000000..6d67f4d --- /dev/null +++ b/src/assets/icon/reception-2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/reception-3.svg b/src/assets/icon/reception-3.svg new file mode 100644 index 0000000..dd7c691 --- /dev/null +++ b/src/assets/icon/reception-3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/reception-4.svg b/src/assets/icon/reception-4.svg new file mode 100644 index 0000000..6b6c1a7 --- /dev/null +++ b/src/assets/icon/reception-4.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/reply-all-fill.svg b/src/assets/icon/reply-all-fill.svg new file mode 100644 index 0000000..2eacf44 --- /dev/null +++ b/src/assets/icon/reply-all-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/reply-all.svg b/src/assets/icon/reply-all.svg new file mode 100644 index 0000000..eb05de2 --- /dev/null +++ b/src/assets/icon/reply-all.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/reply-fill.svg b/src/assets/icon/reply-fill.svg new file mode 100644 index 0000000..0b53030 --- /dev/null +++ b/src/assets/icon/reply-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/reply.svg b/src/assets/icon/reply.svg new file mode 100644 index 0000000..959ca98 --- /dev/null +++ b/src/assets/icon/reply.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/rss-fill.svg b/src/assets/icon/rss-fill.svg new file mode 100644 index 0000000..19e083c --- /dev/null +++ b/src/assets/icon/rss-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/rss.svg b/src/assets/icon/rss.svg new file mode 100644 index 0000000..a5e4ebc --- /dev/null +++ b/src/assets/icon/rss.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/screwdriver.svg b/src/assets/icon/screwdriver.svg new file mode 100644 index 0000000..60ea1ca --- /dev/null +++ b/src/assets/icon/screwdriver.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/search.svg b/src/assets/icon/search.svg new file mode 100644 index 0000000..5e33816 --- /dev/null +++ b/src/assets/icon/search.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/segmented-nav.svg b/src/assets/icon/segmented-nav.svg new file mode 100644 index 0000000..53d30ea --- /dev/null +++ b/src/assets/icon/segmented-nav.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/server.svg b/src/assets/icon/server.svg new file mode 100644 index 0000000..c0ad439 --- /dev/null +++ b/src/assets/icon/server.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/share-fill.svg b/src/assets/icon/share-fill.svg new file mode 100644 index 0000000..fbae120 --- /dev/null +++ b/src/assets/icon/share-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/share.svg b/src/assets/icon/share.svg new file mode 100644 index 0000000..1647e5b --- /dev/null +++ b/src/assets/icon/share.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/shield-check.svg b/src/assets/icon/shield-check.svg new file mode 100644 index 0000000..c60179d --- /dev/null +++ b/src/assets/icon/shield-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/shield-exclamation.svg b/src/assets/icon/shield-exclamation.svg new file mode 100644 index 0000000..71e955e --- /dev/null +++ b/src/assets/icon/shield-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/shield-fill-check.svg b/src/assets/icon/shield-fill-check.svg new file mode 100644 index 0000000..2ede675 --- /dev/null +++ b/src/assets/icon/shield-fill-check.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/shield-fill-exclamation.svg b/src/assets/icon/shield-fill-exclamation.svg new file mode 100644 index 0000000..669308d --- /dev/null +++ b/src/assets/icon/shield-fill-exclamation.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/shield-fill-minus.svg b/src/assets/icon/shield-fill-minus.svg new file mode 100644 index 0000000..c8b9a1b --- /dev/null +++ b/src/assets/icon/shield-fill-minus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/shield-fill-plus.svg b/src/assets/icon/shield-fill-plus.svg new file mode 100644 index 0000000..3fc1bf2 --- /dev/null +++ b/src/assets/icon/shield-fill-plus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/shield-fill.svg b/src/assets/icon/shield-fill.svg new file mode 100644 index 0000000..8f517e3 --- /dev/null +++ b/src/assets/icon/shield-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/shield-lock-fill.svg b/src/assets/icon/shield-lock-fill.svg new file mode 100644 index 0000000..13160e9 --- /dev/null +++ b/src/assets/icon/shield-lock-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/shield-lock.svg b/src/assets/icon/shield-lock.svg new file mode 100644 index 0000000..cc7833e --- /dev/null +++ b/src/assets/icon/shield-lock.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/shield-minus.svg b/src/assets/icon/shield-minus.svg new file mode 100644 index 0000000..8ee8c22 --- /dev/null +++ b/src/assets/icon/shield-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/shield-plus.svg b/src/assets/icon/shield-plus.svg new file mode 100644 index 0000000..9c74bf9 --- /dev/null +++ b/src/assets/icon/shield-plus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/shield-shaded.svg b/src/assets/icon/shield-shaded.svg new file mode 100644 index 0000000..42966eb --- /dev/null +++ b/src/assets/icon/shield-shaded.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/shield-slash-fill.svg b/src/assets/icon/shield-slash-fill.svg new file mode 100644 index 0000000..1f7e1cf --- /dev/null +++ b/src/assets/icon/shield-slash-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/shield-slash.svg b/src/assets/icon/shield-slash.svg new file mode 100644 index 0000000..f622612 --- /dev/null +++ b/src/assets/icon/shield-slash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/shield.svg b/src/assets/icon/shield.svg new file mode 100644 index 0000000..dbe155b --- /dev/null +++ b/src/assets/icon/shield.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/shift-fill.svg b/src/assets/icon/shift-fill.svg new file mode 100644 index 0000000..ecc41db --- /dev/null +++ b/src/assets/icon/shift-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/shift.svg b/src/assets/icon/shift.svg new file mode 100644 index 0000000..3f9f6e7 --- /dev/null +++ b/src/assets/icon/shift.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/shop-window.svg b/src/assets/icon/shop-window.svg new file mode 100644 index 0000000..50d83be --- /dev/null +++ b/src/assets/icon/shop-window.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/shop.svg b/src/assets/icon/shop.svg new file mode 100644 index 0000000..c8b44ae --- /dev/null +++ b/src/assets/icon/shop.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/shuffle.svg b/src/assets/icon/shuffle.svg new file mode 100644 index 0000000..dd9b29f --- /dev/null +++ b/src/assets/icon/shuffle.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/signpost-2-fill.svg b/src/assets/icon/signpost-2-fill.svg new file mode 100644 index 0000000..e912707 --- /dev/null +++ b/src/assets/icon/signpost-2-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/signpost-2.svg b/src/assets/icon/signpost-2.svg new file mode 100644 index 0000000..a85979e --- /dev/null +++ b/src/assets/icon/signpost-2.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/signpost-fill.svg b/src/assets/icon/signpost-fill.svg new file mode 100644 index 0000000..49b6d1c --- /dev/null +++ b/src/assets/icon/signpost-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/signpost-split-fill.svg b/src/assets/icon/signpost-split-fill.svg new file mode 100644 index 0000000..18f5a34 --- /dev/null +++ b/src/assets/icon/signpost-split-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/signpost-split.svg b/src/assets/icon/signpost-split.svg new file mode 100644 index 0000000..e224551 --- /dev/null +++ b/src/assets/icon/signpost-split.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/signpost.svg b/src/assets/icon/signpost.svg new file mode 100644 index 0000000..69a4aae --- /dev/null +++ b/src/assets/icon/signpost.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/sim-fill.svg b/src/assets/icon/sim-fill.svg new file mode 100644 index 0000000..c072d45 --- /dev/null +++ b/src/assets/icon/sim-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/sim.svg b/src/assets/icon/sim.svg new file mode 100644 index 0000000..82f8b48 --- /dev/null +++ b/src/assets/icon/sim.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/skip-backward-fill.svg b/src/assets/icon/skip-backward-fill.svg new file mode 100644 index 0000000..ae95db4 --- /dev/null +++ b/src/assets/icon/skip-backward-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/skip-backward.svg b/src/assets/icon/skip-backward.svg new file mode 100644 index 0000000..1db3d0c --- /dev/null +++ b/src/assets/icon/skip-backward.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/skip-end-fill.svg b/src/assets/icon/skip-end-fill.svg new file mode 100644 index 0000000..67fa309 --- /dev/null +++ b/src/assets/icon/skip-end-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/skip-end.svg b/src/assets/icon/skip-end.svg new file mode 100644 index 0000000..abc9d4f --- /dev/null +++ b/src/assets/icon/skip-end.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/skip-forward-fill.svg b/src/assets/icon/skip-forward-fill.svg new file mode 100644 index 0000000..361738d --- /dev/null +++ b/src/assets/icon/skip-forward-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/skip-forward.svg b/src/assets/icon/skip-forward.svg new file mode 100644 index 0000000..64bf0d6 --- /dev/null +++ b/src/assets/icon/skip-forward.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/skip-start-fill.svg b/src/assets/icon/skip-start-fill.svg new file mode 100644 index 0000000..a79c014 --- /dev/null +++ b/src/assets/icon/skip-start-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/skip-start.svg b/src/assets/icon/skip-start.svg new file mode 100644 index 0000000..621bfc2 --- /dev/null +++ b/src/assets/icon/skip-start.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/slash-circle-fill.svg b/src/assets/icon/slash-circle-fill.svg new file mode 100644 index 0000000..195559b --- /dev/null +++ b/src/assets/icon/slash-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/slash-circle.svg b/src/assets/icon/slash-circle.svg new file mode 100644 index 0000000..3df2189 --- /dev/null +++ b/src/assets/icon/slash-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/slash-square-fill.svg b/src/assets/icon/slash-square-fill.svg new file mode 100644 index 0000000..9cfb1f1 --- /dev/null +++ b/src/assets/icon/slash-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/slash-square.svg b/src/assets/icon/slash-square.svg new file mode 100644 index 0000000..b066e6c --- /dev/null +++ b/src/assets/icon/slash-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/slash.svg b/src/assets/icon/slash.svg new file mode 100644 index 0000000..eb03fb5 --- /dev/null +++ b/src/assets/icon/slash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/sliders.svg b/src/assets/icon/sliders.svg new file mode 100644 index 0000000..a991069 --- /dev/null +++ b/src/assets/icon/sliders.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/smartwatch.svg b/src/assets/icon/smartwatch.svg new file mode 100644 index 0000000..c2b7699 --- /dev/null +++ b/src/assets/icon/smartwatch.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/sort-alpha-down-alt.svg b/src/assets/icon/sort-alpha-down-alt.svg new file mode 100644 index 0000000..6b70bee --- /dev/null +++ b/src/assets/icon/sort-alpha-down-alt.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/sort-alpha-down.svg b/src/assets/icon/sort-alpha-down.svg new file mode 100644 index 0000000..f688f19 --- /dev/null +++ b/src/assets/icon/sort-alpha-down.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/sort-alpha-up-alt.svg b/src/assets/icon/sort-alpha-up-alt.svg new file mode 100644 index 0000000..2399b48 --- /dev/null +++ b/src/assets/icon/sort-alpha-up-alt.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/sort-alpha-up.svg b/src/assets/icon/sort-alpha-up.svg new file mode 100644 index 0000000..2baf712 --- /dev/null +++ b/src/assets/icon/sort-alpha-up.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/sort-down-alt.svg b/src/assets/icon/sort-down-alt.svg new file mode 100644 index 0000000..e92ced4 --- /dev/null +++ b/src/assets/icon/sort-down-alt.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/sort-down.svg b/src/assets/icon/sort-down.svg new file mode 100644 index 0000000..ba56691 --- /dev/null +++ b/src/assets/icon/sort-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/sort-numeric-down-alt.svg b/src/assets/icon/sort-numeric-down-alt.svg new file mode 100644 index 0000000..223e16d --- /dev/null +++ b/src/assets/icon/sort-numeric-down-alt.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/sort-numeric-down.svg b/src/assets/icon/sort-numeric-down.svg new file mode 100644 index 0000000..c7954b5 --- /dev/null +++ b/src/assets/icon/sort-numeric-down.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/sort-numeric-up-alt.svg b/src/assets/icon/sort-numeric-up-alt.svg new file mode 100644 index 0000000..2eced23 --- /dev/null +++ b/src/assets/icon/sort-numeric-up-alt.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/sort-numeric-up.svg b/src/assets/icon/sort-numeric-up.svg new file mode 100644 index 0000000..76d554a --- /dev/null +++ b/src/assets/icon/sort-numeric-up.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/sort-up-alt.svg b/src/assets/icon/sort-up-alt.svg new file mode 100644 index 0000000..1df3792 --- /dev/null +++ b/src/assets/icon/sort-up-alt.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/sort-up.svg b/src/assets/icon/sort-up.svg new file mode 100644 index 0000000..1443c5b --- /dev/null +++ b/src/assets/icon/sort-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/soundwave.svg b/src/assets/icon/soundwave.svg new file mode 100644 index 0000000..21fd9d0 --- /dev/null +++ b/src/assets/icon/soundwave.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/speaker.svg b/src/assets/icon/speaker.svg new file mode 100644 index 0000000..8e6afc5 --- /dev/null +++ b/src/assets/icon/speaker.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/spellcheck.svg b/src/assets/icon/spellcheck.svg new file mode 100644 index 0000000..beeb1ec --- /dev/null +++ b/src/assets/icon/spellcheck.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/square-fill.svg b/src/assets/icon/square-fill.svg new file mode 100644 index 0000000..d04fc18 --- /dev/null +++ b/src/assets/icon/square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/square-half.svg b/src/assets/icon/square-half.svg new file mode 100644 index 0000000..1d9b76b --- /dev/null +++ b/src/assets/icon/square-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/square.svg b/src/assets/icon/square.svg new file mode 100644 index 0000000..e9f89f3 --- /dev/null +++ b/src/assets/icon/square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/star-fill.svg b/src/assets/icon/star-fill.svg new file mode 100644 index 0000000..4bebff6 --- /dev/null +++ b/src/assets/icon/star-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/star-half.svg b/src/assets/icon/star-half.svg new file mode 100644 index 0000000..7d34d2e --- /dev/null +++ b/src/assets/icon/star-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/star.svg b/src/assets/icon/star.svg new file mode 100644 index 0000000..a382461 --- /dev/null +++ b/src/assets/icon/star.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/stickies-fill.svg b/src/assets/icon/stickies-fill.svg new file mode 100644 index 0000000..4d390b3 --- /dev/null +++ b/src/assets/icon/stickies-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/stickies.svg b/src/assets/icon/stickies.svg new file mode 100644 index 0000000..38bbc5b --- /dev/null +++ b/src/assets/icon/stickies.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/sticky-fill.svg b/src/assets/icon/sticky-fill.svg new file mode 100644 index 0000000..ede5aab --- /dev/null +++ b/src/assets/icon/sticky-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/sticky.svg b/src/assets/icon/sticky.svg new file mode 100644 index 0000000..8d61574 --- /dev/null +++ b/src/assets/icon/sticky.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/stop-fill.svg b/src/assets/icon/stop-fill.svg new file mode 100644 index 0000000..3e1160e --- /dev/null +++ b/src/assets/icon/stop-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/stop.svg b/src/assets/icon/stop.svg new file mode 100644 index 0000000..0221c87 --- /dev/null +++ b/src/assets/icon/stop.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/stoplights-fill.svg b/src/assets/icon/stoplights-fill.svg new file mode 100644 index 0000000..bfb9899 --- /dev/null +++ b/src/assets/icon/stoplights-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/stoplights.svg b/src/assets/icon/stoplights.svg new file mode 100644 index 0000000..c94613a --- /dev/null +++ b/src/assets/icon/stoplights.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/stopwatch-fill.svg b/src/assets/icon/stopwatch-fill.svg new file mode 100644 index 0000000..d8424cc --- /dev/null +++ b/src/assets/icon/stopwatch-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/stopwatch.svg b/src/assets/icon/stopwatch.svg new file mode 100644 index 0000000..4ec8ed6 --- /dev/null +++ b/src/assets/icon/stopwatch.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/subtract.svg b/src/assets/icon/subtract.svg new file mode 100644 index 0000000..8cf743f --- /dev/null +++ b/src/assets/icon/subtract.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/suit-club-fill.svg b/src/assets/icon/suit-club-fill.svg new file mode 100644 index 0000000..903bd83 --- /dev/null +++ b/src/assets/icon/suit-club-fill.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/suit-club.svg b/src/assets/icon/suit-club.svg new file mode 100644 index 0000000..4062a3e --- /dev/null +++ b/src/assets/icon/suit-club.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/suit-diamond-fill.svg b/src/assets/icon/suit-diamond-fill.svg new file mode 100644 index 0000000..af60084 --- /dev/null +++ b/src/assets/icon/suit-diamond-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/suit-diamond.svg b/src/assets/icon/suit-diamond.svg new file mode 100644 index 0000000..600889c --- /dev/null +++ b/src/assets/icon/suit-diamond.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/suit-heart-fill.svg b/src/assets/icon/suit-heart-fill.svg new file mode 100644 index 0000000..0ea499b --- /dev/null +++ b/src/assets/icon/suit-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/suit-heart.svg b/src/assets/icon/suit-heart.svg new file mode 100644 index 0000000..8892ea3 --- /dev/null +++ b/src/assets/icon/suit-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/suit-spade-fill.svg b/src/assets/icon/suit-spade-fill.svg new file mode 100644 index 0000000..9e41f11 --- /dev/null +++ b/src/assets/icon/suit-spade-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/suit-spade.svg b/src/assets/icon/suit-spade.svg new file mode 100644 index 0000000..222c489 --- /dev/null +++ b/src/assets/icon/suit-spade.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/sun.svg b/src/assets/icon/sun.svg new file mode 100644 index 0000000..ee62430 --- /dev/null +++ b/src/assets/icon/sun.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/sunglasses.svg b/src/assets/icon/sunglasses.svg new file mode 100644 index 0000000..ceda2a9 --- /dev/null +++ b/src/assets/icon/sunglasses.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/icon/table.svg b/src/assets/icon/table.svg new file mode 100644 index 0000000..392a47c --- /dev/null +++ b/src/assets/icon/table.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/icon/tablet-fill.svg b/src/assets/icon/tablet-fill.svg new file mode 100644 index 0000000..2c90fef --- /dev/null +++ b/src/assets/icon/tablet-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/tablet-landscape-fill.svg b/src/assets/icon/tablet-landscape-fill.svg new file mode 100644 index 0000000..8554c5f --- /dev/null +++ b/src/assets/icon/tablet-landscape-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/tablet-landscape.svg b/src/assets/icon/tablet-landscape.svg new file mode 100644 index 0000000..e99d239 --- /dev/null +++ b/src/assets/icon/tablet-landscape.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/tablet.svg b/src/assets/icon/tablet.svg new file mode 100644 index 0000000..2537bda --- /dev/null +++ b/src/assets/icon/tablet.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/tag-fill.svg b/src/assets/icon/tag-fill.svg new file mode 100644 index 0000000..4e45dc2 --- /dev/null +++ b/src/assets/icon/tag-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/tag.svg b/src/assets/icon/tag.svg new file mode 100644 index 0000000..88fd8ef --- /dev/null +++ b/src/assets/icon/tag.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/tags-fill.svg b/src/assets/icon/tags-fill.svg new file mode 100644 index 0000000..f5895a7 --- /dev/null +++ b/src/assets/icon/tags-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/tags.svg b/src/assets/icon/tags.svg new file mode 100644 index 0000000..81a1993 --- /dev/null +++ b/src/assets/icon/tags.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/telephone-fill.svg b/src/assets/icon/telephone-fill.svg new file mode 100644 index 0000000..8b4144b --- /dev/null +++ b/src/assets/icon/telephone-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/telephone-forward-fill.svg b/src/assets/icon/telephone-forward-fill.svg new file mode 100644 index 0000000..89d536e --- /dev/null +++ b/src/assets/icon/telephone-forward-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/telephone-forward.svg b/src/assets/icon/telephone-forward.svg new file mode 100644 index 0000000..3795f5f --- /dev/null +++ b/src/assets/icon/telephone-forward.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/telephone-inbound-fill.svg b/src/assets/icon/telephone-inbound-fill.svg new file mode 100644 index 0000000..cd38dbf --- /dev/null +++ b/src/assets/icon/telephone-inbound-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/telephone-inbound.svg b/src/assets/icon/telephone-inbound.svg new file mode 100644 index 0000000..61bf265 --- /dev/null +++ b/src/assets/icon/telephone-inbound.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/telephone-minus-fill.svg b/src/assets/icon/telephone-minus-fill.svg new file mode 100644 index 0000000..23c6db9 --- /dev/null +++ b/src/assets/icon/telephone-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/telephone-minus.svg b/src/assets/icon/telephone-minus.svg new file mode 100644 index 0000000..ac8a5f9 --- /dev/null +++ b/src/assets/icon/telephone-minus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/telephone-outbound-fill.svg b/src/assets/icon/telephone-outbound-fill.svg new file mode 100644 index 0000000..0f3e99d --- /dev/null +++ b/src/assets/icon/telephone-outbound-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/telephone-outbound.svg b/src/assets/icon/telephone-outbound.svg new file mode 100644 index 0000000..ce19000 --- /dev/null +++ b/src/assets/icon/telephone-outbound.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/telephone-plus-fill.svg b/src/assets/icon/telephone-plus-fill.svg new file mode 100644 index 0000000..6d2bdbd --- /dev/null +++ b/src/assets/icon/telephone-plus-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/telephone-plus.svg b/src/assets/icon/telephone-plus.svg new file mode 100644 index 0000000..d339610 --- /dev/null +++ b/src/assets/icon/telephone-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/telephone-x-fill.svg b/src/assets/icon/telephone-x-fill.svg new file mode 100644 index 0000000..6cd3d0a --- /dev/null +++ b/src/assets/icon/telephone-x-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/telephone-x.svg b/src/assets/icon/telephone-x.svg new file mode 100644 index 0000000..a7f3faf --- /dev/null +++ b/src/assets/icon/telephone-x.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/telephone.svg b/src/assets/icon/telephone.svg new file mode 100644 index 0000000..01d44a7 --- /dev/null +++ b/src/assets/icon/telephone.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/terminal-fill.svg b/src/assets/icon/terminal-fill.svg new file mode 100644 index 0000000..8aedcae --- /dev/null +++ b/src/assets/icon/terminal-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/terminal.svg b/src/assets/icon/terminal.svg new file mode 100644 index 0000000..3a2b75d --- /dev/null +++ b/src/assets/icon/terminal.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/text-center.svg b/src/assets/icon/text-center.svg new file mode 100644 index 0000000..e1d5048 --- /dev/null +++ b/src/assets/icon/text-center.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/text-indent-left.svg b/src/assets/icon/text-indent-left.svg new file mode 100644 index 0000000..291ac73 --- /dev/null +++ b/src/assets/icon/text-indent-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/text-indent-right.svg b/src/assets/icon/text-indent-right.svg new file mode 100644 index 0000000..2f1a29d --- /dev/null +++ b/src/assets/icon/text-indent-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/text-left.svg b/src/assets/icon/text-left.svg new file mode 100644 index 0000000..840507d --- /dev/null +++ b/src/assets/icon/text-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/text-right.svg b/src/assets/icon/text-right.svg new file mode 100644 index 0000000..8a40407 --- /dev/null +++ b/src/assets/icon/text-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/textarea-resize.svg b/src/assets/icon/textarea-resize.svg new file mode 100644 index 0000000..91725d3 --- /dev/null +++ b/src/assets/icon/textarea-resize.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/textarea-t.svg b/src/assets/icon/textarea-t.svg new file mode 100644 index 0000000..bae5dc1 --- /dev/null +++ b/src/assets/icon/textarea-t.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/textarea.svg b/src/assets/icon/textarea.svg new file mode 100644 index 0000000..be81e49 --- /dev/null +++ b/src/assets/icon/textarea.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/thermometer-half.svg b/src/assets/icon/thermometer-half.svg new file mode 100644 index 0000000..f729adf --- /dev/null +++ b/src/assets/icon/thermometer-half.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/thermometer.svg b/src/assets/icon/thermometer.svg new file mode 100644 index 0000000..77d0b04 --- /dev/null +++ b/src/assets/icon/thermometer.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/three-dots-vertical.svg b/src/assets/icon/three-dots-vertical.svg new file mode 100644 index 0000000..011f183 --- /dev/null +++ b/src/assets/icon/three-dots-vertical.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/three-dots.svg b/src/assets/icon/three-dots.svg new file mode 100644 index 0000000..adcb358 --- /dev/null +++ b/src/assets/icon/three-dots.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/toggle-off.svg b/src/assets/icon/toggle-off.svg new file mode 100644 index 0000000..f5853ed --- /dev/null +++ b/src/assets/icon/toggle-off.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/toggle-on.svg b/src/assets/icon/toggle-on.svg new file mode 100644 index 0000000..c8d421f --- /dev/null +++ b/src/assets/icon/toggle-on.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/toggle2-off.svg b/src/assets/icon/toggle2-off.svg new file mode 100644 index 0000000..80aa424 --- /dev/null +++ b/src/assets/icon/toggle2-off.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/toggle2-on.svg b/src/assets/icon/toggle2-on.svg new file mode 100644 index 0000000..d58f26d --- /dev/null +++ b/src/assets/icon/toggle2-on.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/toggles.svg b/src/assets/icon/toggles.svg new file mode 100644 index 0000000..79a7944 --- /dev/null +++ b/src/assets/icon/toggles.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/toggles2.svg b/src/assets/icon/toggles2.svg new file mode 100644 index 0000000..db1b897 --- /dev/null +++ b/src/assets/icon/toggles2.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/tools.svg b/src/assets/icon/tools.svg new file mode 100644 index 0000000..e36e806 --- /dev/null +++ b/src/assets/icon/tools.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/trash-fill.svg b/src/assets/icon/trash-fill.svg new file mode 100644 index 0000000..ba8fbac --- /dev/null +++ b/src/assets/icon/trash-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/trash.svg b/src/assets/icon/trash.svg new file mode 100644 index 0000000..b27ae87 --- /dev/null +++ b/src/assets/icon/trash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/trash2-fill.svg b/src/assets/icon/trash2-fill.svg new file mode 100644 index 0000000..f3519cc --- /dev/null +++ b/src/assets/icon/trash2-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/trash2.svg b/src/assets/icon/trash2.svg new file mode 100644 index 0000000..a1dbb0f --- /dev/null +++ b/src/assets/icon/trash2.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/tree-fill.svg b/src/assets/icon/tree-fill.svg new file mode 100644 index 0000000..3d45c3b --- /dev/null +++ b/src/assets/icon/tree-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/tree.svg b/src/assets/icon/tree.svg new file mode 100644 index 0000000..f3d05b0 --- /dev/null +++ b/src/assets/icon/tree.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/triangle-fill.svg b/src/assets/icon/triangle-fill.svg new file mode 100644 index 0000000..58cb932 --- /dev/null +++ b/src/assets/icon/triangle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/triangle-half.svg b/src/assets/icon/triangle-half.svg new file mode 100644 index 0000000..99dbb0c --- /dev/null +++ b/src/assets/icon/triangle-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/triangle.svg b/src/assets/icon/triangle.svg new file mode 100644 index 0000000..bf92a2d --- /dev/null +++ b/src/assets/icon/triangle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/trophy.svg b/src/assets/icon/trophy.svg new file mode 100644 index 0000000..85db32d --- /dev/null +++ b/src/assets/icon/trophy.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/truck-flatbed.svg b/src/assets/icon/truck-flatbed.svg new file mode 100644 index 0000000..f37fa4f --- /dev/null +++ b/src/assets/icon/truck-flatbed.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/truck.svg b/src/assets/icon/truck.svg new file mode 100644 index 0000000..106786c --- /dev/null +++ b/src/assets/icon/truck.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/tv-fill.svg b/src/assets/icon/tv-fill.svg new file mode 100644 index 0000000..fe1c2cc --- /dev/null +++ b/src/assets/icon/tv-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/tv.svg b/src/assets/icon/tv.svg new file mode 100644 index 0000000..d317898 --- /dev/null +++ b/src/assets/icon/tv.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/type-bold.svg b/src/assets/icon/type-bold.svg new file mode 100644 index 0000000..8a33adf --- /dev/null +++ b/src/assets/icon/type-bold.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/type-h1.svg b/src/assets/icon/type-h1.svg new file mode 100644 index 0000000..694c503 --- /dev/null +++ b/src/assets/icon/type-h1.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/type-h2.svg b/src/assets/icon/type-h2.svg new file mode 100644 index 0000000..7837598 --- /dev/null +++ b/src/assets/icon/type-h2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/type-h3.svg b/src/assets/icon/type-h3.svg new file mode 100644 index 0000000..f4f3754 --- /dev/null +++ b/src/assets/icon/type-h3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/type-italic.svg b/src/assets/icon/type-italic.svg new file mode 100644 index 0000000..c5c3b50 --- /dev/null +++ b/src/assets/icon/type-italic.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/type-strikethrough.svg b/src/assets/icon/type-strikethrough.svg new file mode 100644 index 0000000..f2bb159 --- /dev/null +++ b/src/assets/icon/type-strikethrough.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/type-underline.svg b/src/assets/icon/type-underline.svg new file mode 100644 index 0000000..8292c9b --- /dev/null +++ b/src/assets/icon/type-underline.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/type.svg b/src/assets/icon/type.svg new file mode 100644 index 0000000..22aafb4 --- /dev/null +++ b/src/assets/icon/type.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/ui-checks.svg b/src/assets/icon/ui-checks.svg new file mode 100644 index 0000000..5b92c5b --- /dev/null +++ b/src/assets/icon/ui-checks.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/ui-radios.svg b/src/assets/icon/ui-radios.svg new file mode 100644 index 0000000..5517e72 --- /dev/null +++ b/src/assets/icon/ui-radios.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/union.svg b/src/assets/icon/union.svg new file mode 100644 index 0000000..421f45f --- /dev/null +++ b/src/assets/icon/union.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/unlock-fill.svg b/src/assets/icon/unlock-fill.svg new file mode 100644 index 0000000..d465e56 --- /dev/null +++ b/src/assets/icon/unlock-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/unlock.svg b/src/assets/icon/unlock.svg new file mode 100644 index 0000000..0c76643 --- /dev/null +++ b/src/assets/icon/unlock.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/upc-scan.svg b/src/assets/icon/upc-scan.svg new file mode 100644 index 0000000..eb9e33b --- /dev/null +++ b/src/assets/icon/upc-scan.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/upc.svg b/src/assets/icon/upc.svg new file mode 100644 index 0000000..7aa2e29 --- /dev/null +++ b/src/assets/icon/upc.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/upload.svg b/src/assets/icon/upload.svg new file mode 100644 index 0000000..c3a5ea1 --- /dev/null +++ b/src/assets/icon/upload.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/view-list.svg b/src/assets/icon/view-list.svg new file mode 100644 index 0000000..6547008 --- /dev/null +++ b/src/assets/icon/view-list.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/view-stacked.svg b/src/assets/icon/view-stacked.svg new file mode 100644 index 0000000..1540e95 --- /dev/null +++ b/src/assets/icon/view-stacked.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/voicemail.svg b/src/assets/icon/voicemail.svg new file mode 100644 index 0000000..02550d4 --- /dev/null +++ b/src/assets/icon/voicemail.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/volume-down-fill.svg b/src/assets/icon/volume-down-fill.svg new file mode 100644 index 0000000..adf3744 --- /dev/null +++ b/src/assets/icon/volume-down-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/volume-down.svg b/src/assets/icon/volume-down.svg new file mode 100644 index 0000000..6be6373 --- /dev/null +++ b/src/assets/icon/volume-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/volume-mute-fill.svg b/src/assets/icon/volume-mute-fill.svg new file mode 100644 index 0000000..43d5852 --- /dev/null +++ b/src/assets/icon/volume-mute-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/volume-mute.svg b/src/assets/icon/volume-mute.svg new file mode 100644 index 0000000..b97d1bf --- /dev/null +++ b/src/assets/icon/volume-mute.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/volume-off-fill.svg b/src/assets/icon/volume-off-fill.svg new file mode 100644 index 0000000..db8c0dd --- /dev/null +++ b/src/assets/icon/volume-off-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/volume-off.svg b/src/assets/icon/volume-off.svg new file mode 100644 index 0000000..67c0a74 --- /dev/null +++ b/src/assets/icon/volume-off.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/volume-up-fill.svg b/src/assets/icon/volume-up-fill.svg new file mode 100644 index 0000000..11491e2 --- /dev/null +++ b/src/assets/icon/volume-up-fill.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/volume-up.svg b/src/assets/icon/volume-up.svg new file mode 100644 index 0000000..079929e --- /dev/null +++ b/src/assets/icon/volume-up.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icon/vr.svg b/src/assets/icon/vr.svg new file mode 100644 index 0000000..971393b --- /dev/null +++ b/src/assets/icon/vr.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/wallet-fill.svg b/src/assets/icon/wallet-fill.svg new file mode 100644 index 0000000..8b363a6 --- /dev/null +++ b/src/assets/icon/wallet-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/wallet.svg b/src/assets/icon/wallet.svg new file mode 100644 index 0000000..425f0a5 --- /dev/null +++ b/src/assets/icon/wallet.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/wallet2.svg b/src/assets/icon/wallet2.svg new file mode 100644 index 0000000..44d234c --- /dev/null +++ b/src/assets/icon/wallet2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/watch.svg b/src/assets/icon/watch.svg new file mode 100644 index 0000000..1fcca0b --- /dev/null +++ b/src/assets/icon/watch.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/wifi-1.svg b/src/assets/icon/wifi-1.svg new file mode 100644 index 0000000..d27e2ab --- /dev/null +++ b/src/assets/icon/wifi-1.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/wifi-2.svg b/src/assets/icon/wifi-2.svg new file mode 100644 index 0000000..0082d58 --- /dev/null +++ b/src/assets/icon/wifi-2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/wifi-off.svg b/src/assets/icon/wifi-off.svg new file mode 100644 index 0000000..0a41217 --- /dev/null +++ b/src/assets/icon/wifi-off.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/wifi.svg b/src/assets/icon/wifi.svg new file mode 100644 index 0000000..94212db --- /dev/null +++ b/src/assets/icon/wifi.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/window.svg b/src/assets/icon/window.svg new file mode 100644 index 0000000..4e7446a --- /dev/null +++ b/src/assets/icon/window.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/wrench.svg b/src/assets/icon/wrench.svg new file mode 100644 index 0000000..3c32d9e --- /dev/null +++ b/src/assets/icon/wrench.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/x-circle-fill.svg b/src/assets/icon/x-circle-fill.svg new file mode 100644 index 0000000..a7e75c9 --- /dev/null +++ b/src/assets/icon/x-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/x-circle.svg b/src/assets/icon/x-circle.svg new file mode 100644 index 0000000..046066d --- /dev/null +++ b/src/assets/icon/x-circle.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/x-diamond-fill.svg b/src/assets/icon/x-diamond-fill.svg new file mode 100644 index 0000000..907ee39 --- /dev/null +++ b/src/assets/icon/x-diamond-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/x-diamond.svg b/src/assets/icon/x-diamond.svg new file mode 100644 index 0000000..c222924 --- /dev/null +++ b/src/assets/icon/x-diamond.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/x-octagon-fill.svg b/src/assets/icon/x-octagon-fill.svg new file mode 100644 index 0000000..12eca87 --- /dev/null +++ b/src/assets/icon/x-octagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/x-octagon.svg b/src/assets/icon/x-octagon.svg new file mode 100644 index 0000000..8a1d1d6 --- /dev/null +++ b/src/assets/icon/x-octagon.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/x-square-fill.svg b/src/assets/icon/x-square-fill.svg new file mode 100644 index 0000000..9aa003b --- /dev/null +++ b/src/assets/icon/x-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icon/x-square.svg b/src/assets/icon/x-square.svg new file mode 100644 index 0000000..b0a083d --- /dev/null +++ b/src/assets/icon/x-square.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/x.svg b/src/assets/icon/x.svg new file mode 100644 index 0000000..8e3e9b6 --- /dev/null +++ b/src/assets/icon/x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icon/zoom-in.svg b/src/assets/icon/zoom-in.svg new file mode 100644 index 0000000..11de509 --- /dev/null +++ b/src/assets/icon/zoom-in.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icon/zoom-out.svg b/src/assets/icon/zoom-out.svg new file mode 100644 index 0000000..1c38814 --- /dev/null +++ b/src/assets/icon/zoom-out.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/img/Android.png b/src/assets/img/Android.png new file mode 100644 index 0000000..cbf655f Binary files /dev/null and b/src/assets/img/Android.png differ diff --git a/src/assets/img/DeepLiquidity-thumb@2x.png b/src/assets/img/DeepLiquidity-thumb@2x.png new file mode 100644 index 0000000..c4481ba Binary files /dev/null and b/src/assets/img/DeepLiquidity-thumb@2x.png differ diff --git a/src/assets/img/DeepLiquidity@2x.png b/src/assets/img/DeepLiquidity@2x.png new file mode 100644 index 0000000..48bc49e Binary files /dev/null and b/src/assets/img/DeepLiquidity@2x.png differ diff --git a/src/assets/img/Group10-thumb@2x.png b/src/assets/img/Group10-thumb@2x.png new file mode 100644 index 0000000..e40b4bd Binary files /dev/null and b/src/assets/img/Group10-thumb@2x.png differ diff --git a/src/assets/img/Group10@2x.png b/src/assets/img/Group10@2x.png new file mode 100644 index 0000000..842339e Binary files /dev/null and b/src/assets/img/Group10@2x.png differ diff --git a/src/assets/img/Group11-thumb@2x.png b/src/assets/img/Group11-thumb@2x.png new file mode 100644 index 0000000..fdb119b Binary files /dev/null and b/src/assets/img/Group11-thumb@2x.png differ diff --git a/src/assets/img/Group11@2x.png b/src/assets/img/Group11@2x.png new file mode 100644 index 0000000..486176b Binary files /dev/null and b/src/assets/img/Group11@2x.png differ diff --git a/src/assets/img/Group12-thumb@2x.png b/src/assets/img/Group12-thumb@2x.png new file mode 100644 index 0000000..68c8524 Binary files /dev/null and b/src/assets/img/Group12-thumb@2x.png differ diff --git a/src/assets/img/Group12@2x.png b/src/assets/img/Group12@2x.png new file mode 100644 index 0000000..5dbffc1 Binary files /dev/null and b/src/assets/img/Group12@2x.png differ diff --git a/src/assets/img/IOS.png b/src/assets/img/IOS.png new file mode 100644 index 0000000..920c4fc Binary files /dev/null and b/src/assets/img/IOS.png differ diff --git a/src/assets/img/IndustryLeadingAPI-thumb@2x.png b/src/assets/img/IndustryLeadingAPI-thumb@2x.png new file mode 100644 index 0000000..157893b Binary files /dev/null and b/src/assets/img/IndustryLeadingAPI-thumb@2x.png differ diff --git a/src/assets/img/IndustryLeadingAPI@2x.png b/src/assets/img/IndustryLeadingAPI@2x.png new file mode 100644 index 0000000..75ef818 Binary files /dev/null and b/src/assets/img/IndustryLeadingAPI@2x.png differ diff --git a/src/assets/img/ProprietaryTechnology-thumb@2x.png b/src/assets/img/ProprietaryTechnology-thumb@2x.png new file mode 100644 index 0000000..1b0ecb7 Binary files /dev/null and b/src/assets/img/ProprietaryTechnology-thumb@2x.png differ diff --git a/src/assets/img/ProprietaryTechnology@2x.png b/src/assets/img/ProprietaryTechnology@2x.png new file mode 100644 index 0000000..97b5432 Binary files /dev/null and b/src/assets/img/ProprietaryTechnology@2x.png differ diff --git a/src/assets/img/arrow-left.svg b/src/assets/img/arrow-left.svg new file mode 100644 index 0000000..b20b0b0 --- /dev/null +++ b/src/assets/img/arrow-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/img/arrow-right.svg b/src/assets/img/arrow-right.svg new file mode 100644 index 0000000..9b57572 --- /dev/null +++ b/src/assets/img/arrow-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/img/avatar.png b/src/assets/img/avatar.png new file mode 100644 index 0000000..30a3d87 Binary files /dev/null and b/src/assets/img/avatar.png differ diff --git a/src/assets/img/avatar.svg b/src/assets/img/avatar.svg new file mode 100644 index 0000000..1b24522 --- /dev/null +++ b/src/assets/img/avatar.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/img/banner2.png b/src/assets/img/banner2.png new file mode 100644 index 0000000..bd599f2 Binary files /dev/null and b/src/assets/img/banner2.png differ diff --git a/src/assets/img/banner3.jpg b/src/assets/img/banner3.jpg new file mode 100644 index 0000000..8346e02 Binary files /dev/null and b/src/assets/img/banner3.jpg differ diff --git a/src/assets/img/banner3.png b/src/assets/img/banner3.png new file mode 100644 index 0000000..c1095f5 Binary files /dev/null and b/src/assets/img/banner3.png differ diff --git a/src/assets/img/bg/1.jpg b/src/assets/img/bg/1.jpg new file mode 100644 index 0000000..306c447 Binary files /dev/null and b/src/assets/img/bg/1.jpg differ diff --git a/src/assets/img/bg/1.png b/src/assets/img/bg/1.png new file mode 100644 index 0000000..27068ab Binary files /dev/null and b/src/assets/img/bg/1.png differ diff --git a/src/assets/img/bg/2.jpg b/src/assets/img/bg/2.jpg new file mode 100644 index 0000000..9f440b2 Binary files /dev/null and b/src/assets/img/bg/2.jpg differ diff --git a/src/assets/img/bg/3.png b/src/assets/img/bg/3.png new file mode 100644 index 0000000..3210c51 Binary files /dev/null and b/src/assets/img/bg/3.png differ diff --git a/src/assets/img/bg/4.png b/src/assets/img/bg/4.png new file mode 100644 index 0000000..c079441 Binary files /dev/null and b/src/assets/img/bg/4.png differ diff --git a/src/assets/img/bg/5.jpg b/src/assets/img/bg/5.jpg new file mode 100644 index 0000000..7b4c36b Binary files /dev/null and b/src/assets/img/bg/5.jpg differ diff --git a/src/assets/img/bg/android.svg b/src/assets/img/bg/android.svg new file mode 100644 index 0000000..3592637 --- /dev/null +++ b/src/assets/img/bg/android.svg @@ -0,0 +1,21 @@ + + + + Shape + Created with Sketch. + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/img/bg/down.svg b/src/assets/img/bg/down.svg new file mode 100644 index 0000000..100bdad --- /dev/null +++ b/src/assets/img/bg/down.svg @@ -0,0 +1,11 @@ + + + + 形状 copy + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/src/assets/img/bg/homebg.svg b/src/assets/img/bg/homebg.svg new file mode 100644 index 0000000..0b233c7 --- /dev/null +++ b/src/assets/img/bg/homebg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/bg/ios.svg b/src/assets/img/bg/ios.svg new file mode 100644 index 0000000..5fae4b0 --- /dev/null +++ b/src/assets/img/bg/ios.svg @@ -0,0 +1,19 @@ + + + + Shape + Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/img/bg/logo-dark.png b/src/assets/img/bg/logo-dark.png new file mode 100644 index 0000000..55cdb86 Binary files /dev/null and b/src/assets/img/bg/logo-dark.png differ diff --git a/src/assets/img/bg/phone.svg b/src/assets/img/bg/phone.svg new file mode 100644 index 0000000..817f90d --- /dev/null +++ b/src/assets/img/bg/phone.svg @@ -0,0 +1,157 @@ + + + + 分组 3 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + 当前委托 + + + + + + + + + + + + + + + + + + + + + + + BTC/USDT + + + + + + + + + + + + + + + + + + + 买入 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 买入 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 6528.20 + + + ≈6529.57 USD + + + 6528.17 + + + 1.00000000 + + + 卖出 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/img/bg/trad.png b/src/assets/img/bg/trad.png new file mode 100644 index 0000000..daba897 Binary files /dev/null and b/src/assets/img/bg/trad.png differ diff --git a/src/assets/img/bg/win.svg b/src/assets/img/bg/win.svg new file mode 100644 index 0000000..f33a778 --- /dev/null +++ b/src/assets/img/bg/win.svg @@ -0,0 +1,21 @@ + + + + Shape + Created with Sketch. + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/img/circle@2x.png b/src/assets/img/circle@2x.png new file mode 100644 index 0000000..801d22e Binary files /dev/null and b/src/assets/img/circle@2x.png differ diff --git a/src/assets/img/close.svg b/src/assets/img/close.svg new file mode 100644 index 0000000..7c24f18 --- /dev/null +++ b/src/assets/img/close.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/img/code-email.png b/src/assets/img/code-email.png new file mode 100644 index 0000000..5d662ba Binary files /dev/null and b/src/assets/img/code-email.png differ diff --git a/src/assets/img/code-email@2x.png b/src/assets/img/code-email@2x.png new file mode 100644 index 0000000..adde32f Binary files /dev/null and b/src/assets/img/code-email@2x.png differ diff --git a/src/assets/img/code-google.png b/src/assets/img/code-google.png new file mode 100644 index 0000000..32b5907 Binary files /dev/null and b/src/assets/img/code-google.png differ diff --git a/src/assets/img/code-google@2x.png b/src/assets/img/code-google@2x.png new file mode 100644 index 0000000..f3725e6 Binary files /dev/null and b/src/assets/img/code-google@2x.png differ diff --git a/src/assets/img/code-sms@2x.svg b/src/assets/img/code-sms@2x.svg new file mode 100644 index 0000000..cab234d --- /dev/null +++ b/src/assets/img/code-sms@2x.svg @@ -0,0 +1,11 @@ + + + + SMS@2x + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/src/assets/img/concat-usbg.jpg b/src/assets/img/concat-usbg.jpg new file mode 100644 index 0000000..0e755df Binary files /dev/null and b/src/assets/img/concat-usbg.jpg differ diff --git a/src/assets/img/concat_us.png b/src/assets/img/concat_us.png new file mode 100644 index 0000000..bdcf54f Binary files /dev/null and b/src/assets/img/concat_us.png differ diff --git a/src/assets/img/decreace.png b/src/assets/img/decreace.png new file mode 100644 index 0000000..1251acb Binary files /dev/null and b/src/assets/img/decreace.png differ diff --git a/src/assets/img/download.png b/src/assets/img/download.png new file mode 100644 index 0000000..4e6ad22 Binary files /dev/null and b/src/assets/img/download.png differ diff --git a/src/assets/img/download_io.png b/src/assets/img/download_io.png new file mode 100644 index 0000000..c38b0a2 Binary files /dev/null and b/src/assets/img/download_io.png differ diff --git a/src/assets/img/eyed.svg b/src/assets/img/eyed.svg new file mode 100644 index 0000000..4386657 --- /dev/null +++ b/src/assets/img/eyed.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/img/favicon.png b/src/assets/img/favicon.png new file mode 100644 index 0000000..6324804 Binary files /dev/null and b/src/assets/img/favicon.png differ diff --git a/src/assets/img/feature-bg.jpg b/src/assets/img/feature-bg.jpg new file mode 100644 index 0000000..9a5b6db Binary files /dev/null and b/src/assets/img/feature-bg.jpg differ diff --git a/src/assets/img/feature-bg.svg b/src/assets/img/feature-bg.svg new file mode 100644 index 0000000..111be67 --- /dev/null +++ b/src/assets/img/feature-bg.svg @@ -0,0 +1,11 @@ + + + + +Created with Sketch. + + diff --git a/src/assets/img/features/1.png b/src/assets/img/features/1.png new file mode 100644 index 0000000..44cb6af Binary files /dev/null and b/src/assets/img/features/1.png differ diff --git a/src/assets/img/features/10.png b/src/assets/img/features/10.png new file mode 100644 index 0000000..58bcd9b Binary files /dev/null and b/src/assets/img/features/10.png differ diff --git a/src/assets/img/features/11.png b/src/assets/img/features/11.png new file mode 100644 index 0000000..5881716 Binary files /dev/null and b/src/assets/img/features/11.png differ diff --git a/src/assets/img/features/2.png b/src/assets/img/features/2.png new file mode 100644 index 0000000..1354f9b Binary files /dev/null and b/src/assets/img/features/2.png differ diff --git a/src/assets/img/features/3.png b/src/assets/img/features/3.png new file mode 100644 index 0000000..5ed1a54 Binary files /dev/null and b/src/assets/img/features/3.png differ diff --git a/src/assets/img/features/6.png b/src/assets/img/features/6.png new file mode 100644 index 0000000..584347d Binary files /dev/null and b/src/assets/img/features/6.png differ diff --git a/src/assets/img/features/7.png b/src/assets/img/features/7.png new file mode 100644 index 0000000..403ee06 Binary files /dev/null and b/src/assets/img/features/7.png differ diff --git a/src/assets/img/features/8.png b/src/assets/img/features/8.png new file mode 100644 index 0000000..38d66b6 Binary files /dev/null and b/src/assets/img/features/8.png differ diff --git a/src/assets/img/features/9.png b/src/assets/img/features/9.png new file mode 100644 index 0000000..91984b7 Binary files /dev/null and b/src/assets/img/features/9.png differ diff --git a/src/assets/img/features/analysis-thumb.png b/src/assets/img/features/analysis-thumb.png new file mode 100644 index 0000000..d16f58a Binary files /dev/null and b/src/assets/img/features/analysis-thumb.png differ diff --git a/src/assets/img/features/analysis.png b/src/assets/img/features/analysis.png new file mode 100644 index 0000000..baadba2 Binary files /dev/null and b/src/assets/img/features/analysis.png differ diff --git a/src/assets/img/features/android_1.png b/src/assets/img/features/android_1.png new file mode 100644 index 0000000..ae9d062 Binary files /dev/null and b/src/assets/img/features/android_1.png differ diff --git a/src/assets/img/features/apple_1.png b/src/assets/img/features/apple_1.png new file mode 100644 index 0000000..515fea9 Binary files /dev/null and b/src/assets/img/features/apple_1.png differ diff --git a/src/assets/img/features/bg_1.png b/src/assets/img/features/bg_1.png new file mode 100644 index 0000000..31da717 Binary files /dev/null and b/src/assets/img/features/bg_1.png differ diff --git a/src/assets/img/features/coin.png b/src/assets/img/features/coin.png new file mode 100644 index 0000000..375d193 Binary files /dev/null and b/src/assets/img/features/coin.png differ diff --git a/src/assets/img/features/f-thumb.png b/src/assets/img/features/f-thumb.png new file mode 100644 index 0000000..0667350 Binary files /dev/null and b/src/assets/img/features/f-thumb.png differ diff --git a/src/assets/img/features/f.png b/src/assets/img/features/f.png new file mode 100644 index 0000000..842339e Binary files /dev/null and b/src/assets/img/features/f.png differ diff --git a/src/assets/img/features/flow-thumb.png b/src/assets/img/features/flow-thumb.png new file mode 100644 index 0000000..f465ded Binary files /dev/null and b/src/assets/img/features/flow-thumb.png differ diff --git a/src/assets/img/features/flow.png b/src/assets/img/features/flow.png new file mode 100644 index 0000000..e09196a Binary files /dev/null and b/src/assets/img/features/flow.png differ diff --git a/src/assets/img/features/google_1.png b/src/assets/img/features/google_1.png new file mode 100644 index 0000000..5b03e2f Binary files /dev/null and b/src/assets/img/features/google_1.png differ diff --git a/src/assets/img/features/safe-thumb.png b/src/assets/img/features/safe-thumb.png new file mode 100644 index 0000000..d9d3724 Binary files /dev/null and b/src/assets/img/features/safe-thumb.png differ diff --git a/src/assets/img/features/safe.png b/src/assets/img/features/safe.png new file mode 100644 index 0000000..513ac4f Binary files /dev/null and b/src/assets/img/features/safe.png differ diff --git a/src/assets/img/features/server-thumb.png b/src/assets/img/features/server-thumb.png new file mode 100644 index 0000000..c4eefc5 Binary files /dev/null and b/src/assets/img/features/server-thumb.png differ diff --git a/src/assets/img/features/server.png b/src/assets/img/features/server.png new file mode 100644 index 0000000..b6d4ae5 Binary files /dev/null and b/src/assets/img/features/server.png differ diff --git a/src/assets/img/features/stt.png b/src/assets/img/features/stt.png new file mode 100644 index 0000000..158db41 Binary files /dev/null and b/src/assets/img/features/stt.png differ diff --git a/src/assets/img/features/tech-thumb.png b/src/assets/img/features/tech-thumb.png new file mode 100644 index 0000000..72cd29e Binary files /dev/null and b/src/assets/img/features/tech-thumb.png differ diff --git a/src/assets/img/features/tech.png b/src/assets/img/features/tech.png new file mode 100644 index 0000000..48bc49e Binary files /dev/null and b/src/assets/img/features/tech.png differ diff --git a/src/assets/img/features/trade-thumb.png b/src/assets/img/features/trade-thumb.png new file mode 100644 index 0000000..ee47c97 Binary files /dev/null and b/src/assets/img/features/trade-thumb.png differ diff --git a/src/assets/img/features/trade.png b/src/assets/img/features/trade.png new file mode 100644 index 0000000..30d5cc7 Binary files /dev/null and b/src/assets/img/features/trade.png differ diff --git a/src/assets/img/features_1-thumb@2x.png b/src/assets/img/features_1-thumb@2x.png new file mode 100644 index 0000000..5cc5717 Binary files /dev/null and b/src/assets/img/features_1-thumb@2x.png differ diff --git a/src/assets/img/features_1@2x.png b/src/assets/img/features_1@2x.png new file mode 100644 index 0000000..8ed0ed0 Binary files /dev/null and b/src/assets/img/features_1@2x.png differ diff --git a/src/assets/img/flag/de.jpg b/src/assets/img/flag/de.jpg new file mode 100644 index 0000000..d8d4013 Binary files /dev/null and b/src/assets/img/flag/de.jpg differ diff --git a/src/assets/img/flag/en.jpg b/src/assets/img/flag/en.jpg new file mode 100644 index 0000000..ee6035c Binary files /dev/null and b/src/assets/img/flag/en.jpg differ diff --git a/src/assets/img/flag/fra.jpg b/src/assets/img/flag/fra.jpg new file mode 100644 index 0000000..ce5d161 Binary files /dev/null and b/src/assets/img/flag/fra.jpg differ diff --git a/src/assets/img/flag/he.jpg b/src/assets/img/flag/he.jpg new file mode 100644 index 0000000..993e977 Binary files /dev/null and b/src/assets/img/flag/he.jpg differ diff --git a/src/assets/img/flag/it.jpg b/src/assets/img/flag/it.jpg new file mode 100644 index 0000000..2e5ed66 Binary files /dev/null and b/src/assets/img/flag/it.jpg differ diff --git a/src/assets/img/flag/jp.jpg b/src/assets/img/flag/jp.jpg new file mode 100644 index 0000000..9ebf1eb Binary files /dev/null and b/src/assets/img/flag/jp.jpg differ diff --git a/src/assets/img/flag/kor.jpg b/src/assets/img/flag/kor.jpg new file mode 100644 index 0000000..2ec4e88 Binary files /dev/null and b/src/assets/img/flag/kor.jpg differ diff --git a/src/assets/img/flag/pt.jpg b/src/assets/img/flag/pt.jpg new file mode 100644 index 0000000..67221c8 Binary files /dev/null and b/src/assets/img/flag/pt.jpg differ diff --git a/src/assets/img/flag/spa.jpg b/src/assets/img/flag/spa.jpg new file mode 100644 index 0000000..248313f Binary files /dev/null and b/src/assets/img/flag/spa.jpg differ diff --git a/src/assets/img/flag/tr.jpg b/src/assets/img/flag/tr.jpg new file mode 100644 index 0000000..faaf48e Binary files /dev/null and b/src/assets/img/flag/tr.jpg differ diff --git a/src/assets/img/flag/tw.jpg b/src/assets/img/flag/tw.jpg new file mode 100644 index 0000000..5151681 Binary files /dev/null and b/src/assets/img/flag/tw.jpg differ diff --git a/src/assets/img/home/android_1.png b/src/assets/img/home/android_1.png new file mode 100644 index 0000000..ae9d062 Binary files /dev/null and b/src/assets/img/home/android_1.png differ diff --git a/src/assets/img/home/apple_1.png b/src/assets/img/home/apple_1.png new file mode 100644 index 0000000..515fea9 Binary files /dev/null and b/src/assets/img/home/apple_1.png differ diff --git a/src/assets/img/home/global.png b/src/assets/img/home/global.png new file mode 100644 index 0000000..ec2448b Binary files /dev/null and b/src/assets/img/home/global.png differ diff --git a/src/assets/img/home/global_grey.png b/src/assets/img/home/global_grey.png new file mode 100644 index 0000000..9f53a18 Binary files /dev/null and b/src/assets/img/home/global_grey.png differ diff --git a/src/assets/img/home/home1(1).png b/src/assets/img/home/home1(1).png new file mode 100644 index 0000000..0ebecf1 Binary files /dev/null and b/src/assets/img/home/home1(1).png differ diff --git a/src/assets/img/home/home1.png b/src/assets/img/home/home1.png new file mode 100644 index 0000000..aa55c49 Binary files /dev/null and b/src/assets/img/home/home1.png differ diff --git a/src/assets/img/home/home10.svg b/src/assets/img/home/home10.svg new file mode 100644 index 0000000..9892702 --- /dev/null +++ b/src/assets/img/home/home10.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/img/home/home11.svg b/src/assets/img/home/home11.svg new file mode 100644 index 0000000..6412901 --- /dev/null +++ b/src/assets/img/home/home11.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/img/home/home12.png b/src/assets/img/home/home12.png new file mode 100644 index 0000000..60a8750 Binary files /dev/null and b/src/assets/img/home/home12.png differ diff --git a/src/assets/img/home/home13.png b/src/assets/img/home/home13.png new file mode 100644 index 0000000..3430726 Binary files /dev/null and b/src/assets/img/home/home13.png differ diff --git a/src/assets/img/home/home14.png b/src/assets/img/home/home14.png new file mode 100644 index 0000000..8325e83 Binary files /dev/null and b/src/assets/img/home/home14.png differ diff --git a/src/assets/img/home/home15.png b/src/assets/img/home/home15.png new file mode 100644 index 0000000..765eddf Binary files /dev/null and b/src/assets/img/home/home15.png differ diff --git a/src/assets/img/home/home16.svg b/src/assets/img/home/home16.svg new file mode 100644 index 0000000..6a460a5 --- /dev/null +++ b/src/assets/img/home/home16.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/img/home/home17.svg b/src/assets/img/home/home17.svg new file mode 100644 index 0000000..744d20e --- /dev/null +++ b/src/assets/img/home/home17.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/img/home/home2.png b/src/assets/img/home/home2.png new file mode 100644 index 0000000..9141661 Binary files /dev/null and b/src/assets/img/home/home2.png differ diff --git a/src/assets/img/home/home3.png b/src/assets/img/home/home3.png new file mode 100644 index 0000000..04d0f1f Binary files /dev/null and b/src/assets/img/home/home3.png differ diff --git a/src/assets/img/home/home4.png b/src/assets/img/home/home4.png new file mode 100644 index 0000000..5bb1399 Binary files /dev/null and b/src/assets/img/home/home4.png differ diff --git a/src/assets/img/home/home5.png b/src/assets/img/home/home5.png new file mode 100644 index 0000000..10dffa6 Binary files /dev/null and b/src/assets/img/home/home5.png differ diff --git a/src/assets/img/home/home6.png b/src/assets/img/home/home6.png new file mode 100644 index 0000000..0e75da7 Binary files /dev/null and b/src/assets/img/home/home6.png differ diff --git a/src/assets/img/home/home7.png b/src/assets/img/home/home7.png new file mode 100644 index 0000000..a4dec24 Binary files /dev/null and b/src/assets/img/home/home7.png differ diff --git a/src/assets/img/home/home8.svg b/src/assets/img/home/home8.svg new file mode 100644 index 0000000..37b5131 --- /dev/null +++ b/src/assets/img/home/home8.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/img/home/home9.svg b/src/assets/img/home/home9.svg new file mode 100644 index 0000000..6c277ca --- /dev/null +++ b/src/assets/img/home/home9.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/img/home/img1.png b/src/assets/img/home/img1.png new file mode 100644 index 0000000..520cb01 Binary files /dev/null and b/src/assets/img/home/img1.png differ diff --git a/src/assets/img/home/img10.png b/src/assets/img/home/img10.png new file mode 100644 index 0000000..ac79234 Binary files /dev/null and b/src/assets/img/home/img10.png differ diff --git a/src/assets/img/home/img11.png b/src/assets/img/home/img11.png new file mode 100644 index 0000000..a8f6fb1 Binary files /dev/null and b/src/assets/img/home/img11.png differ diff --git a/src/assets/img/home/img12.png b/src/assets/img/home/img12.png new file mode 100644 index 0000000..8cf931e Binary files /dev/null and b/src/assets/img/home/img12.png differ diff --git a/src/assets/img/home/img2.png b/src/assets/img/home/img2.png new file mode 100644 index 0000000..c61a03e Binary files /dev/null and b/src/assets/img/home/img2.png differ diff --git a/src/assets/img/home/img3.png b/src/assets/img/home/img3.png new file mode 100644 index 0000000..c680a57 Binary files /dev/null and b/src/assets/img/home/img3.png differ diff --git a/src/assets/img/home/img4.png b/src/assets/img/home/img4.png new file mode 100644 index 0000000..0614686 Binary files /dev/null and b/src/assets/img/home/img4.png differ diff --git a/src/assets/img/home/img5.png b/src/assets/img/home/img5.png new file mode 100644 index 0000000..86a31ca Binary files /dev/null and b/src/assets/img/home/img5.png differ diff --git a/src/assets/img/home/img6.png b/src/assets/img/home/img6.png new file mode 100644 index 0000000..82a86b0 Binary files /dev/null and b/src/assets/img/home/img6.png differ diff --git a/src/assets/img/home/img7.png b/src/assets/img/home/img7.png new file mode 100644 index 0000000..585f505 Binary files /dev/null and b/src/assets/img/home/img7.png differ diff --git a/src/assets/img/home/img8.png b/src/assets/img/home/img8.png new file mode 100644 index 0000000..dc1bfcf Binary files /dev/null and b/src/assets/img/home/img8.png differ diff --git a/src/assets/img/home/img9.png b/src/assets/img/home/img9.png new file mode 100644 index 0000000..b56f01c Binary files /dev/null and b/src/assets/img/home/img9.png differ diff --git a/src/assets/img/home/kefu.png b/src/assets/img/home/kefu.png new file mode 100644 index 0000000..c1e6d2f Binary files /dev/null and b/src/assets/img/home/kefu.png differ diff --git a/src/assets/img/home/login.png b/src/assets/img/home/login.png new file mode 100644 index 0000000..24fdbe8 Binary files /dev/null and b/src/assets/img/home/login.png differ diff --git a/src/assets/img/home/logo.png b/src/assets/img/home/logo.png new file mode 100644 index 0000000..88d6271 Binary files /dev/null and b/src/assets/img/home/logo.png differ diff --git a/src/assets/img/home/moon.png b/src/assets/img/home/moon.png new file mode 100644 index 0000000..cfd84b4 Binary files /dev/null and b/src/assets/img/home/moon.png differ diff --git a/src/assets/img/home/sun.png b/src/assets/img/home/sun.png new file mode 100644 index 0000000..2060cec Binary files /dev/null and b/src/assets/img/home/sun.png differ diff --git a/src/assets/img/homeBg.jpg b/src/assets/img/homeBg.jpg new file mode 100644 index 0000000..207773c Binary files /dev/null and b/src/assets/img/homeBg.jpg differ diff --git a/src/assets/img/home_bg.png b/src/assets/img/home_bg.png new file mode 100644 index 0000000..f7a733e Binary files /dev/null and b/src/assets/img/home_bg.png differ diff --git a/src/assets/img/home_bgb.png b/src/assets/img/home_bgb.png new file mode 100644 index 0000000..63c95a3 Binary files /dev/null and b/src/assets/img/home_bgb.png differ diff --git a/src/assets/img/homebgIcon.png b/src/assets/img/homebgIcon.png new file mode 100644 index 0000000..1a397e3 Binary files /dev/null and b/src/assets/img/homebgIcon.png differ diff --git a/src/assets/img/homescan.png b/src/assets/img/homescan.png new file mode 100644 index 0000000..12d5db3 Binary files /dev/null and b/src/assets/img/homescan.png differ diff --git a/src/assets/img/homescaniso.png b/src/assets/img/homescaniso.png new file mode 100644 index 0000000..6a7d35a Binary files /dev/null and b/src/assets/img/homescaniso.png differ diff --git a/src/assets/img/icon-close.svg b/src/assets/img/icon-close.svg new file mode 100644 index 0000000..c97230d --- /dev/null +++ b/src/assets/img/icon-close.svg @@ -0,0 +1,15 @@ + + + + Icon-Close@2x + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/img/icon-refresh.svg b/src/assets/img/icon-refresh.svg new file mode 100644 index 0000000..70e6637 --- /dev/null +++ b/src/assets/img/icon-refresh.svg @@ -0,0 +1,15 @@ + + + + 刷新@2x + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/img/icon/1.png b/src/assets/img/icon/1.png new file mode 100644 index 0000000..86af03a Binary files /dev/null and b/src/assets/img/icon/1.png differ diff --git a/src/assets/img/icon/10.png b/src/assets/img/icon/10.png new file mode 100644 index 0000000..3502344 Binary files /dev/null and b/src/assets/img/icon/10.png differ diff --git a/src/assets/img/icon/11.png b/src/assets/img/icon/11.png new file mode 100644 index 0000000..f338d9b Binary files /dev/null and b/src/assets/img/icon/11.png differ diff --git a/src/assets/img/icon/12.png b/src/assets/img/icon/12.png new file mode 100644 index 0000000..f9e7acc Binary files /dev/null and b/src/assets/img/icon/12.png differ diff --git a/src/assets/img/icon/13.png b/src/assets/img/icon/13.png new file mode 100644 index 0000000..80d83ab Binary files /dev/null and b/src/assets/img/icon/13.png differ diff --git a/src/assets/img/icon/14.png b/src/assets/img/icon/14.png new file mode 100644 index 0000000..1eb5126 Binary files /dev/null and b/src/assets/img/icon/14.png differ diff --git a/src/assets/img/icon/15.png b/src/assets/img/icon/15.png new file mode 100644 index 0000000..66fb00b Binary files /dev/null and b/src/assets/img/icon/15.png differ diff --git a/src/assets/img/icon/16.png b/src/assets/img/icon/16.png new file mode 100644 index 0000000..bfaa11d Binary files /dev/null and b/src/assets/img/icon/16.png differ diff --git a/src/assets/img/icon/17.png b/src/assets/img/icon/17.png new file mode 100644 index 0000000..a927660 Binary files /dev/null and b/src/assets/img/icon/17.png differ diff --git a/src/assets/img/icon/18.png b/src/assets/img/icon/18.png new file mode 100644 index 0000000..1ed4cdf Binary files /dev/null and b/src/assets/img/icon/18.png differ diff --git a/src/assets/img/icon/2.png b/src/assets/img/icon/2.png new file mode 100644 index 0000000..622df61 Binary files /dev/null and b/src/assets/img/icon/2.png differ diff --git a/src/assets/img/icon/3.png b/src/assets/img/icon/3.png new file mode 100644 index 0000000..8585eac Binary files /dev/null and b/src/assets/img/icon/3.png differ diff --git a/src/assets/img/icon/4.png b/src/assets/img/icon/4.png new file mode 100644 index 0000000..aa2af65 Binary files /dev/null and b/src/assets/img/icon/4.png differ diff --git a/src/assets/img/icon/5.png b/src/assets/img/icon/5.png new file mode 100644 index 0000000..d47760b Binary files /dev/null and b/src/assets/img/icon/5.png differ diff --git a/src/assets/img/icon/6.png b/src/assets/img/icon/6.png new file mode 100644 index 0000000..d3d1bec Binary files /dev/null and b/src/assets/img/icon/6.png differ diff --git a/src/assets/img/icon/7.png b/src/assets/img/icon/7.png new file mode 100644 index 0000000..c8fc05f Binary files /dev/null and b/src/assets/img/icon/7.png differ diff --git a/src/assets/img/icon/8.png b/src/assets/img/icon/8.png new file mode 100644 index 0000000..f2c9154 Binary files /dev/null and b/src/assets/img/icon/8.png differ diff --git a/src/assets/img/icon/9.png b/src/assets/img/icon/9.png new file mode 100644 index 0000000..f25992d Binary files /dev/null and b/src/assets/img/icon/9.png differ diff --git a/src/assets/img/icon/stepnext.png b/src/assets/img/icon/stepnext.png new file mode 100644 index 0000000..bd35239 Binary files /dev/null and b/src/assets/img/icon/stepnext.png differ diff --git a/src/assets/img/icon/top1.png b/src/assets/img/icon/top1.png new file mode 100644 index 0000000..977a68d Binary files /dev/null and b/src/assets/img/icon/top1.png differ diff --git a/src/assets/img/icon/top2.png b/src/assets/img/icon/top2.png new file mode 100644 index 0000000..5da0235 Binary files /dev/null and b/src/assets/img/icon/top2.png differ diff --git a/src/assets/img/icon/top3.png b/src/assets/img/icon/top3.png new file mode 100644 index 0000000..6efb2c5 Binary files /dev/null and b/src/assets/img/icon/top3.png differ diff --git a/src/assets/img/illustration_1.png b/src/assets/img/illustration_1.png new file mode 100644 index 0000000..feb3b27 Binary files /dev/null and b/src/assets/img/illustration_1.png differ diff --git a/src/assets/img/img14.png b/src/assets/img/img14.png new file mode 100644 index 0000000..6ed15a5 Binary files /dev/null and b/src/assets/img/img14.png differ diff --git a/src/assets/img/img18.jpg b/src/assets/img/img18.jpg new file mode 100644 index 0000000..1d3bf27 Binary files /dev/null and b/src/assets/img/img18.jpg differ diff --git a/src/assets/img/increace.png b/src/assets/img/increace.png new file mode 100644 index 0000000..d1e8dce Binary files /dev/null and b/src/assets/img/increace.png differ diff --git a/src/assets/img/index_banner.png b/src/assets/img/index_banner.png new file mode 100644 index 0000000..9949a77 Binary files /dev/null and b/src/assets/img/index_banner.png differ diff --git a/src/assets/img/index_banner_2.png b/src/assets/img/index_banner_2.png new file mode 100644 index 0000000..bd5c876 Binary files /dev/null and b/src/assets/img/index_banner_2.png differ diff --git a/src/assets/img/logo-dark.png b/src/assets/img/logo-dark.png new file mode 100644 index 0000000..5f0102d Binary files /dev/null and b/src/assets/img/logo-dark.png differ diff --git a/src/assets/img/logo-light.png b/src/assets/img/logo-light.png new file mode 100644 index 0000000..7ddccf5 Binary files /dev/null and b/src/assets/img/logo-light.png differ diff --git a/src/assets/img/logo.png b/src/assets/img/logo.png new file mode 100644 index 0000000..0b3bc23 Binary files /dev/null and b/src/assets/img/logo.png differ diff --git a/src/assets/img/logo1.png b/src/assets/img/logo1.png new file mode 100644 index 0000000..1c86c64 Binary files /dev/null and b/src/assets/img/logo1.png differ diff --git a/src/assets/img/not-data.png b/src/assets/img/not-data.png new file mode 100644 index 0000000..8259372 Binary files /dev/null and b/src/assets/img/not-data.png differ diff --git a/src/assets/img/others/1.png b/src/assets/img/others/1.png new file mode 100644 index 0000000..c71fbdd Binary files /dev/null and b/src/assets/img/others/1.png differ diff --git a/src/assets/img/others/10.png b/src/assets/img/others/10.png new file mode 100644 index 0000000..675262c Binary files /dev/null and b/src/assets/img/others/10.png differ diff --git a/src/assets/img/others/11.png b/src/assets/img/others/11.png new file mode 100644 index 0000000..d569c2f Binary files /dev/null and b/src/assets/img/others/11.png differ diff --git a/src/assets/img/others/12.png b/src/assets/img/others/12.png new file mode 100644 index 0000000..6de7302 Binary files /dev/null and b/src/assets/img/others/12.png differ diff --git a/src/assets/img/others/13.png b/src/assets/img/others/13.png new file mode 100644 index 0000000..a9c67b1 Binary files /dev/null and b/src/assets/img/others/13.png differ diff --git a/src/assets/img/others/14.png b/src/assets/img/others/14.png new file mode 100644 index 0000000..4bcfd52 Binary files /dev/null and b/src/assets/img/others/14.png differ diff --git a/src/assets/img/others/15.png b/src/assets/img/others/15.png new file mode 100644 index 0000000..6ff568c Binary files /dev/null and b/src/assets/img/others/15.png differ diff --git a/src/assets/img/others/16.png b/src/assets/img/others/16.png new file mode 100644 index 0000000..21723e3 Binary files /dev/null and b/src/assets/img/others/16.png differ diff --git a/src/assets/img/others/17.png b/src/assets/img/others/17.png new file mode 100644 index 0000000..0e98b70 Binary files /dev/null and b/src/assets/img/others/17.png differ diff --git a/src/assets/img/others/18.png b/src/assets/img/others/18.png new file mode 100644 index 0000000..c9441c7 Binary files /dev/null and b/src/assets/img/others/18.png differ diff --git a/src/assets/img/others/19.png b/src/assets/img/others/19.png new file mode 100644 index 0000000..aab2492 Binary files /dev/null and b/src/assets/img/others/19.png differ diff --git a/src/assets/img/others/2.png b/src/assets/img/others/2.png new file mode 100644 index 0000000..8ccdb06 Binary files /dev/null and b/src/assets/img/others/2.png differ diff --git a/src/assets/img/others/20.png b/src/assets/img/others/20.png new file mode 100644 index 0000000..503d7f2 Binary files /dev/null and b/src/assets/img/others/20.png differ diff --git a/src/assets/img/others/21.png b/src/assets/img/others/21.png new file mode 100644 index 0000000..bb0bc45 Binary files /dev/null and b/src/assets/img/others/21.png differ diff --git a/src/assets/img/others/22.png b/src/assets/img/others/22.png new file mode 100644 index 0000000..4b84dac Binary files /dev/null and b/src/assets/img/others/22.png differ diff --git a/src/assets/img/others/23.png b/src/assets/img/others/23.png new file mode 100644 index 0000000..29001cb Binary files /dev/null and b/src/assets/img/others/23.png differ diff --git a/src/assets/img/others/24.png b/src/assets/img/others/24.png new file mode 100644 index 0000000..6179691 Binary files /dev/null and b/src/assets/img/others/24.png differ diff --git a/src/assets/img/others/25.png b/src/assets/img/others/25.png new file mode 100644 index 0000000..2d48a54 Binary files /dev/null and b/src/assets/img/others/25.png differ diff --git a/src/assets/img/others/26.png b/src/assets/img/others/26.png new file mode 100644 index 0000000..a1d0255 Binary files /dev/null and b/src/assets/img/others/26.png differ diff --git a/src/assets/img/others/27.png b/src/assets/img/others/27.png new file mode 100644 index 0000000..58a0016 Binary files /dev/null and b/src/assets/img/others/27.png differ diff --git a/src/assets/img/others/28.png b/src/assets/img/others/28.png new file mode 100644 index 0000000..074fba2 Binary files /dev/null and b/src/assets/img/others/28.png differ diff --git a/src/assets/img/others/29.png b/src/assets/img/others/29.png new file mode 100644 index 0000000..cb3c59c Binary files /dev/null and b/src/assets/img/others/29.png differ diff --git a/src/assets/img/others/3.png b/src/assets/img/others/3.png new file mode 100644 index 0000000..43498c9 Binary files /dev/null and b/src/assets/img/others/3.png differ diff --git a/src/assets/img/others/30.png b/src/assets/img/others/30.png new file mode 100644 index 0000000..75cdb9b Binary files /dev/null and b/src/assets/img/others/30.png differ diff --git a/src/assets/img/others/31.png b/src/assets/img/others/31.png new file mode 100644 index 0000000..2e48ebd Binary files /dev/null and b/src/assets/img/others/31.png differ diff --git a/src/assets/img/others/4.png b/src/assets/img/others/4.png new file mode 100644 index 0000000..130590e Binary files /dev/null and b/src/assets/img/others/4.png differ diff --git a/src/assets/img/others/5.png b/src/assets/img/others/5.png new file mode 100644 index 0000000..09707fe Binary files /dev/null and b/src/assets/img/others/5.png differ diff --git a/src/assets/img/others/6.png b/src/assets/img/others/6.png new file mode 100644 index 0000000..1b4459f Binary files /dev/null and b/src/assets/img/others/6.png differ diff --git a/src/assets/img/others/7.png b/src/assets/img/others/7.png new file mode 100644 index 0000000..ef5568e Binary files /dev/null and b/src/assets/img/others/7.png differ diff --git a/src/assets/img/others/8.png b/src/assets/img/others/8.png new file mode 100644 index 0000000..21bea5a Binary files /dev/null and b/src/assets/img/others/8.png differ diff --git a/src/assets/img/others/9.png b/src/assets/img/others/9.png new file mode 100644 index 0000000..2fb7c0b Binary files /dev/null and b/src/assets/img/others/9.png differ diff --git a/src/assets/img/others/homebanner.png b/src/assets/img/others/homebanner.png new file mode 100644 index 0000000..67491df Binary files /dev/null and b/src/assets/img/others/homebanner.png differ diff --git a/src/assets/img/others/homeicon1.png b/src/assets/img/others/homeicon1.png new file mode 100644 index 0000000..5dbffc1 Binary files /dev/null and b/src/assets/img/others/homeicon1.png differ diff --git a/src/assets/img/qr-code-dark.svg b/src/assets/img/qr-code-dark.svg new file mode 100644 index 0000000..3085369 --- /dev/null +++ b/src/assets/img/qr-code-dark.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/img/qr-code-light.svg b/src/assets/img/qr-code-light.svg new file mode 100644 index 0000000..96ca99e --- /dev/null +++ b/src/assets/img/qr-code-light.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/img/second-nav-bg.png b/src/assets/img/second-nav-bg.png new file mode 100644 index 0000000..cf72886 Binary files /dev/null and b/src/assets/img/second-nav-bg.png differ diff --git a/src/assets/img/shuoming.png b/src/assets/img/shuoming.png new file mode 100644 index 0000000..8740d2d Binary files /dev/null and b/src/assets/img/shuoming.png differ diff --git a/src/assets/img/sms-assets.svg b/src/assets/img/sms-assets.svg new file mode 100644 index 0000000..bd95f2b --- /dev/null +++ b/src/assets/img/sms-assets.svg @@ -0,0 +1,12 @@ + + + + Icon-SMSAuthentication@3x + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/assets/img/ss08.png b/src/assets/img/ss08.png new file mode 100644 index 0000000..ee7b990 Binary files /dev/null and b/src/assets/img/ss08.png differ diff --git a/src/assets/img/to_left.png b/src/assets/img/to_left.png new file mode 100644 index 0000000..449b103 Binary files /dev/null and b/src/assets/img/to_left.png differ diff --git a/src/assets/img/to_right.png b/src/assets/img/to_right.png new file mode 100644 index 0000000..761331a Binary files /dev/null and b/src/assets/img/to_right.png differ diff --git a/src/assets/img/waiting.png b/src/assets/img/waiting.png new file mode 100644 index 0000000..28c756a Binary files /dev/null and b/src/assets/img/waiting.png differ diff --git a/src/assets/img/warm/dot-a.png b/src/assets/img/warm/dot-a.png new file mode 100644 index 0000000..6d3596d Binary files /dev/null and b/src/assets/img/warm/dot-a.png differ diff --git a/src/assets/img/warm/dot-b.png b/src/assets/img/warm/dot-b.png new file mode 100644 index 0000000..0be714e Binary files /dev/null and b/src/assets/img/warm/dot-b.png differ diff --git a/src/assets/img/warm/dot-c-azalea.png b/src/assets/img/warm/dot-c-azalea.png new file mode 100644 index 0000000..8cce8a8 Binary files /dev/null and b/src/assets/img/warm/dot-c-azalea.png differ diff --git a/src/assets/img/warm/dot-c.png b/src/assets/img/warm/dot-c.png new file mode 100644 index 0000000..f2eb176 Binary files /dev/null and b/src/assets/img/warm/dot-c.png differ diff --git a/src/assets/img/warm/hexagon.png b/src/assets/img/warm/hexagon.png new file mode 100644 index 0000000..179270d Binary files /dev/null and b/src/assets/img/warm/hexagon.png differ diff --git a/src/assets/img/warm/index.html b/src/assets/img/warm/index.html new file mode 100644 index 0000000..bad3b27 --- /dev/null +++ b/src/assets/img/warm/index.html @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/img/warm/light-ix.png b/src/assets/img/warm/light-ix.png new file mode 100644 index 0000000..94ac6bd Binary files /dev/null and b/src/assets/img/warm/light-ix.png differ diff --git a/src/assets/img/warm/line.png b/src/assets/img/warm/line.png new file mode 100644 index 0000000..66e6d88 Binary files /dev/null and b/src/assets/img/warm/line.png differ diff --git a/src/assets/img/warm/mask-a-dark.svg b/src/assets/img/warm/mask-a-dark.svg new file mode 100644 index 0000000..0d9f6ff --- /dev/null +++ b/src/assets/img/warm/mask-a-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/warm/mask-a-md.png b/src/assets/img/warm/mask-a-md.png new file mode 100644 index 0000000..c31bb31 Binary files /dev/null and b/src/assets/img/warm/mask-a-md.png differ diff --git a/src/assets/img/warm/mask-a-md.svg b/src/assets/img/warm/mask-a-md.svg new file mode 100644 index 0000000..6413b9c --- /dev/null +++ b/src/assets/img/warm/mask-a-md.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/warm/mask-a.png b/src/assets/img/warm/mask-a.png new file mode 100644 index 0000000..9ee6764 Binary files /dev/null and b/src/assets/img/warm/mask-a.png differ diff --git a/src/assets/img/warm/mask-a.svg b/src/assets/img/warm/mask-a.svg new file mode 100644 index 0000000..d2e126c --- /dev/null +++ b/src/assets/img/warm/mask-a.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/warm/mask-b.png b/src/assets/img/warm/mask-b.png new file mode 100644 index 0000000..5c8a9fb Binary files /dev/null and b/src/assets/img/warm/mask-b.png differ diff --git a/src/assets/img/warm/mask-b.svg b/src/assets/img/warm/mask-b.svg new file mode 100644 index 0000000..960aab1 --- /dev/null +++ b/src/assets/img/warm/mask-b.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/warm/mask-c-dark.svg b/src/assets/img/warm/mask-c-dark.svg new file mode 100644 index 0000000..c608154 --- /dev/null +++ b/src/assets/img/warm/mask-c-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/warm/mask-c-light.png b/src/assets/img/warm/mask-c-light.png new file mode 100644 index 0000000..e5a523e Binary files /dev/null and b/src/assets/img/warm/mask-c-light.png differ diff --git a/src/assets/img/warm/mask-c-light.svg b/src/assets/img/warm/mask-c-light.svg new file mode 100644 index 0000000..68d1bce --- /dev/null +++ b/src/assets/img/warm/mask-c-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/warm/mask-c.png b/src/assets/img/warm/mask-c.png new file mode 100644 index 0000000..6c76fa1 Binary files /dev/null and b/src/assets/img/warm/mask-c.png differ diff --git a/src/assets/img/warm/mask-c.svg b/src/assets/img/warm/mask-c.svg new file mode 100644 index 0000000..159b56a --- /dev/null +++ b/src/assets/img/warm/mask-c.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/warm/mask-d.png b/src/assets/img/warm/mask-d.png new file mode 100644 index 0000000..a96be30 Binary files /dev/null and b/src/assets/img/warm/mask-d.png differ diff --git a/src/assets/img/warm/mask-d.svg b/src/assets/img/warm/mask-d.svg new file mode 100644 index 0000000..bc24a27 --- /dev/null +++ b/src/assets/img/warm/mask-d.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/warm/mask-d2.svg b/src/assets/img/warm/mask-d2.svg new file mode 100644 index 0000000..4210eff --- /dev/null +++ b/src/assets/img/warm/mask-d2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/warm/mask-e.png b/src/assets/img/warm/mask-e.png new file mode 100644 index 0000000..938ee21 Binary files /dev/null and b/src/assets/img/warm/mask-e.png differ diff --git a/src/assets/img/warm/mask-e.svg b/src/assets/img/warm/mask-e.svg new file mode 100644 index 0000000..cb103d1 --- /dev/null +++ b/src/assets/img/warm/mask-e.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/warm/mask-f-footer.png b/src/assets/img/warm/mask-f-footer.png new file mode 100644 index 0000000..e3bd113 Binary files /dev/null and b/src/assets/img/warm/mask-f-footer.png differ diff --git a/src/assets/img/warm/mask-f-footer.svg b/src/assets/img/warm/mask-f-footer.svg new file mode 100644 index 0000000..ce2d285 --- /dev/null +++ b/src/assets/img/warm/mask-f-footer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/warm/mask-f.png b/src/assets/img/warm/mask-f.png new file mode 100644 index 0000000..9aeaddf Binary files /dev/null and b/src/assets/img/warm/mask-f.png differ diff --git a/src/assets/img/warm/mask-f.svg b/src/assets/img/warm/mask-f.svg new file mode 100644 index 0000000..78761ca --- /dev/null +++ b/src/assets/img/warm/mask-f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/warm/mask-line-a.png b/src/assets/img/warm/mask-line-a.png new file mode 100644 index 0000000..8349e54 Binary files /dev/null and b/src/assets/img/warm/mask-line-a.png differ diff --git a/src/assets/img/warm/mask-line-b.png b/src/assets/img/warm/mask-line-b.png new file mode 100644 index 0000000..d470fe7 Binary files /dev/null and b/src/assets/img/warm/mask-line-b.png differ diff --git a/src/assets/img/warm/mask-line-c.png b/src/assets/img/warm/mask-line-c.png new file mode 100644 index 0000000..9cfb6b9 Binary files /dev/null and b/src/assets/img/warm/mask-line-c.png differ diff --git a/src/assets/img/warm/mask-line-d.png b/src/assets/img/warm/mask-line-d.png new file mode 100644 index 0000000..dc51adb Binary files /dev/null and b/src/assets/img/warm/mask-line-d.png differ diff --git a/src/assets/img/warm/polygon-a-dark.png b/src/assets/img/warm/polygon-a-dark.png new file mode 100644 index 0000000..bbe10c0 Binary files /dev/null and b/src/assets/img/warm/polygon-a-dark.png differ diff --git a/src/assets/img/warm/polygon-a-light.png b/src/assets/img/warm/polygon-a-light.png new file mode 100644 index 0000000..5f762d7 Binary files /dev/null and b/src/assets/img/warm/polygon-a-light.png differ diff --git a/src/assets/img/warm/polygon-a.png b/src/assets/img/warm/polygon-a.png new file mode 100644 index 0000000..3e19a70 Binary files /dev/null and b/src/assets/img/warm/polygon-a.png differ diff --git a/src/assets/img/warm/polygon-fill.png b/src/assets/img/warm/polygon-fill.png new file mode 100644 index 0000000..e72b6f9 Binary files /dev/null and b/src/assets/img/warm/polygon-fill.png differ diff --git a/src/assets/img/warm/polygon-line-a-fill.png b/src/assets/img/warm/polygon-line-a-fill.png new file mode 100644 index 0000000..0711c4f Binary files /dev/null and b/src/assets/img/warm/polygon-line-a-fill.png differ diff --git a/src/assets/img/warm/polygon-line-a.png b/src/assets/img/warm/polygon-line-a.png new file mode 100644 index 0000000..03154c0 Binary files /dev/null and b/src/assets/img/warm/polygon-line-a.png differ diff --git a/src/assets/img/warm/polygon-line-b.png b/src/assets/img/warm/polygon-line-b.png new file mode 100644 index 0000000..e73b420 Binary files /dev/null and b/src/assets/img/warm/polygon-line-b.png differ diff --git a/src/assets/img/warm/polygon-line-c.png b/src/assets/img/warm/polygon-line-c.png new file mode 100644 index 0000000..6026614 Binary files /dev/null and b/src/assets/img/warm/polygon-line-c.png differ diff --git a/src/assets/img/warm/shape-a-sm.png b/src/assets/img/warm/shape-a-sm.png new file mode 100644 index 0000000..6e5397b Binary files /dev/null and b/src/assets/img/warm/shape-a-sm.png differ diff --git a/src/assets/img/warm/shape-a.png b/src/assets/img/warm/shape-a.png new file mode 100644 index 0000000..f9b8faf Binary files /dev/null and b/src/assets/img/warm/shape-a.png differ diff --git a/src/assets/img/warm/shape-a2.png b/src/assets/img/warm/shape-a2.png new file mode 100644 index 0000000..678739e Binary files /dev/null and b/src/assets/img/warm/shape-a2.png differ diff --git a/src/assets/img/warm/shape-b-sm.png b/src/assets/img/warm/shape-b-sm.png new file mode 100644 index 0000000..6e5397b Binary files /dev/null and b/src/assets/img/warm/shape-b-sm.png differ diff --git a/src/assets/img/warm/shape-b.png b/src/assets/img/warm/shape-b.png new file mode 100644 index 0000000..6b78d42 Binary files /dev/null and b/src/assets/img/warm/shape-b.png differ diff --git a/src/assets/img/warm/shape-c-sm.png b/src/assets/img/warm/shape-c-sm.png new file mode 100644 index 0000000..6028acf Binary files /dev/null and b/src/assets/img/warm/shape-c-sm.png differ diff --git a/src/assets/img/warm/shape-c.png b/src/assets/img/warm/shape-c.png new file mode 100644 index 0000000..09c6b25 Binary files /dev/null and b/src/assets/img/warm/shape-c.png differ diff --git a/src/assets/img/warm/shape-d-sm.png b/src/assets/img/warm/shape-d-sm.png new file mode 100644 index 0000000..8229e42 Binary files /dev/null and b/src/assets/img/warm/shape-d-sm.png differ diff --git a/src/assets/img/warm/shape-d.png b/src/assets/img/warm/shape-d.png new file mode 100644 index 0000000..6aa1b62 Binary files /dev/null and b/src/assets/img/warm/shape-d.png differ diff --git a/src/assets/img/warm/shape-e-sm.png b/src/assets/img/warm/shape-e-sm.png new file mode 100644 index 0000000..e81080c Binary files /dev/null and b/src/assets/img/warm/shape-e-sm.png differ diff --git a/src/assets/img/warm/shape-e.png b/src/assets/img/warm/shape-e.png new file mode 100644 index 0000000..5422b01 Binary files /dev/null and b/src/assets/img/warm/shape-e.png differ diff --git a/src/assets/img/warm/shape-f-sm.png b/src/assets/img/warm/shape-f-sm.png new file mode 100644 index 0000000..9f4eb7e Binary files /dev/null and b/src/assets/img/warm/shape-f-sm.png differ diff --git a/src/assets/img/warm/shape-f.png b/src/assets/img/warm/shape-f.png new file mode 100644 index 0000000..cca4347 Binary files /dev/null and b/src/assets/img/warm/shape-f.png differ diff --git a/src/assets/img/warm/shape-g-sm.png b/src/assets/img/warm/shape-g-sm.png new file mode 100644 index 0000000..408d72f Binary files /dev/null and b/src/assets/img/warm/shape-g-sm.png differ diff --git a/src/assets/img/warm/shape-g.png b/src/assets/img/warm/shape-g.png new file mode 100644 index 0000000..c90cfe0 Binary files /dev/null and b/src/assets/img/warm/shape-g.png differ diff --git a/src/assets/img/warm/shape-h-sm.png b/src/assets/img/warm/shape-h-sm.png new file mode 100644 index 0000000..5da8aae Binary files /dev/null and b/src/assets/img/warm/shape-h-sm.png differ diff --git a/src/assets/img/warm/shape-h.png b/src/assets/img/warm/shape-h.png new file mode 100644 index 0000000..550cb0b Binary files /dev/null and b/src/assets/img/warm/shape-h.png differ diff --git a/src/assets/img/warm/shape-i-sm.png b/src/assets/img/warm/shape-i-sm.png new file mode 100644 index 0000000..d928e21 Binary files /dev/null and b/src/assets/img/warm/shape-i-sm.png differ diff --git a/src/assets/img/warm/shape-i.png b/src/assets/img/warm/shape-i.png new file mode 100644 index 0000000..9055f7e Binary files /dev/null and b/src/assets/img/warm/shape-i.png differ diff --git a/src/assets/img/warm/shape-m.png b/src/assets/img/warm/shape-m.png new file mode 100644 index 0000000..d603993 Binary files /dev/null and b/src/assets/img/warm/shape-m.png differ diff --git a/src/assets/img/warm/shape-n.png b/src/assets/img/warm/shape-n.png new file mode 100644 index 0000000..0eac1ff Binary files /dev/null and b/src/assets/img/warm/shape-n.png differ diff --git a/src/assets/img/warm/shape-o.png b/src/assets/img/warm/shape-o.png new file mode 100644 index 0000000..7a1aad7 Binary files /dev/null and b/src/assets/img/warm/shape-o.png differ diff --git a/src/assets/img/warm/shape-p.png b/src/assets/img/warm/shape-p.png new file mode 100644 index 0000000..4f9c0fa Binary files /dev/null and b/src/assets/img/warm/shape-p.png differ diff --git a/src/assets/img/warm/shape-q.png b/src/assets/img/warm/shape-q.png new file mode 100644 index 0000000..c63cf04 Binary files /dev/null and b/src/assets/img/warm/shape-q.png differ diff --git a/src/assets/img/warm/shape-r.png b/src/assets/img/warm/shape-r.png new file mode 100644 index 0000000..8a115e9 Binary files /dev/null and b/src/assets/img/warm/shape-r.png differ diff --git a/src/assets/img/warm/shape-s-sm.png b/src/assets/img/warm/shape-s-sm.png new file mode 100644 index 0000000..bf961a3 Binary files /dev/null and b/src/assets/img/warm/shape-s-sm.png differ diff --git a/src/assets/img/warm/shape-s.png b/src/assets/img/warm/shape-s.png new file mode 100644 index 0000000..1c7e392 Binary files /dev/null and b/src/assets/img/warm/shape-s.png differ diff --git a/src/assets/img/warm/shape-t.png b/src/assets/img/warm/shape-t.png new file mode 100644 index 0000000..9d1e9d3 Binary files /dev/null and b/src/assets/img/warm/shape-t.png differ diff --git a/src/assets/img/warm/shape-u.png b/src/assets/img/warm/shape-u.png new file mode 100644 index 0000000..95be10a Binary files /dev/null and b/src/assets/img/warm/shape-u.png differ diff --git a/src/assets/img/warm/shape-v.png b/src/assets/img/warm/shape-v.png new file mode 100644 index 0000000..88c0280 Binary files /dev/null and b/src/assets/img/warm/shape-v.png differ diff --git a/src/assets/img/warm/shape-w.png b/src/assets/img/warm/shape-w.png new file mode 100644 index 0000000..6982aeb Binary files /dev/null and b/src/assets/img/warm/shape-w.png differ diff --git a/src/assets/img/warm/shape-x-2.png b/src/assets/img/warm/shape-x-2.png new file mode 100644 index 0000000..2c891ab Binary files /dev/null and b/src/assets/img/warm/shape-x-2.png differ diff --git a/src/assets/img/warm/shape-x-3.png b/src/assets/img/warm/shape-x-3.png new file mode 100644 index 0000000..7fd9285 Binary files /dev/null and b/src/assets/img/warm/shape-x-3.png differ diff --git a/src/assets/img/warm/shape-x.png b/src/assets/img/warm/shape-x.png new file mode 100644 index 0000000..8babfbb Binary files /dev/null and b/src/assets/img/warm/shape-x.png differ diff --git a/src/assets/img/warm/shape-y.png b/src/assets/img/warm/shape-y.png new file mode 100644 index 0000000..28df585 Binary files /dev/null and b/src/assets/img/warm/shape-y.png differ diff --git a/src/assets/img/warm/shape-z.png b/src/assets/img/warm/shape-z.png new file mode 100644 index 0000000..0793ed7 Binary files /dev/null and b/src/assets/img/warm/shape-z.png differ diff --git a/src/assets/img/warm/shape-z2.png b/src/assets/img/warm/shape-z2.png new file mode 100644 index 0000000..37bbc97 Binary files /dev/null and b/src/assets/img/warm/shape-z2.png differ diff --git a/src/assets/img/warm/shape-z3.png b/src/assets/img/warm/shape-z3.png new file mode 100644 index 0000000..ac81af8 Binary files /dev/null and b/src/assets/img/warm/shape-z3.png differ diff --git a/src/assets/img/warm/shape-z4.png b/src/assets/img/warm/shape-z4.png new file mode 100644 index 0000000..55a825d Binary files /dev/null and b/src/assets/img/warm/shape-z4.png differ diff --git a/src/assets/img/warm/shape-z6-sm.png b/src/assets/img/warm/shape-z6-sm.png new file mode 100644 index 0000000..56e2868 Binary files /dev/null and b/src/assets/img/warm/shape-z6-sm.png differ diff --git a/src/assets/img/warm/shape-z6.png b/src/assets/img/warm/shape-z6.png new file mode 100644 index 0000000..39afcb1 Binary files /dev/null and b/src/assets/img/warm/shape-z6.png differ diff --git a/src/assets/img/warm/shape-z7.png b/src/assets/img/warm/shape-z7.png new file mode 100644 index 0000000..f485cbb Binary files /dev/null and b/src/assets/img/warm/shape-z7.png differ diff --git a/src/assets/img/warm/shuoming.png b/src/assets/img/warm/shuoming.png new file mode 100644 index 0000000..d624edd Binary files /dev/null and b/src/assets/img/warm/shuoming.png differ diff --git a/src/assets/img/warm/ui-shape-a.svg b/src/assets/img/warm/ui-shape-a.svg new file mode 100644 index 0000000..64abd02 --- /dev/null +++ b/src/assets/img/warm/ui-shape-a.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/warm/ui-shape-b.svg b/src/assets/img/warm/ui-shape-b.svg new file mode 100644 index 0000000..8993ccb --- /dev/null +++ b/src/assets/img/warm/ui-shape-b.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/warm/ui-shape-light-a.svg b/src/assets/img/warm/ui-shape-light-a.svg new file mode 100644 index 0000000..14048f8 --- /dev/null +++ b/src/assets/img/warm/ui-shape-light-a.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/warm/ui-shape-light-b.svg b/src/assets/img/warm/ui-shape-light-b.svg new file mode 100644 index 0000000..c549afb --- /dev/null +++ b/src/assets/img/warm/ui-shape-light-b.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/warm/ui-shape-zinnia-a.svg b/src/assets/img/warm/ui-shape-zinnia-a.svg new file mode 100644 index 0000000..8adf7e3 --- /dev/null +++ b/src/assets/img/warm/ui-shape-zinnia-a.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/warm/ui-shape-zinnia-b.svg b/src/assets/img/warm/ui-shape-zinnia-b.svg new file mode 100644 index 0000000..5c918ac --- /dev/null +++ b/src/assets/img/warm/ui-shape-zinnia-b.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/warm/vr-line.png b/src/assets/img/warm/vr-line.png new file mode 100644 index 0000000..131fd17 Binary files /dev/null and b/src/assets/img/warm/vr-line.png differ diff --git a/src/assets/js/custom.js b/src/assets/js/custom.js new file mode 100644 index 0000000..4d1befa --- /dev/null +++ b/src/assets/js/custom.js @@ -0,0 +1,920 @@ +(function ($) { + 'use strict'; + // Depth Chart + function DepthChart() { + // Add data + chart.dataSource.url = + 'https://poloniex.com/public?command=returnOrderBook¤cyPair=BTC_ETH&depth=50'; + chart.dataSource.reloadFrequency = 30000; + chart.dataSource.adapter.add('parsedData', function (data) { + // Function to process (sort and calculate cummulative volume) + function processData(list, type, desc) { + // Convert to data points + for (var i = 0; i < list.length; i++) { + list[i] = { + value: Number(list[i][0]), + volume: Number(list[i][1]), + }; + } + + // Sort list just in case + list.sort(function (a, b) { + if (a.value > b.value) { + return 1; + } else if (a.value < b.value) { + return -1; + } else { + return 0; + } + }); + + // Calculate cummulative volume + if (desc) { + for (var i = list.length - 1; i >= 0; i--) { + if (i < list.length - 1) { + list[i].totalvolume = list[i + 1].totalvolume + list[i].volume; + } else { + list[i].totalvolume = list[i].volume; + } + var dp = {}; + dp['value'] = list[i].value; + dp[type + 'volume'] = list[i].volume; + dp[type + 'totalvolume'] = list[i].totalvolume; + res.unshift(dp); + } + } else { + for (var i = 0; i < list.length; i++) { + if (i > 0) { + list[i].totalvolume = list[i - 1].totalvolume + list[i].volume; + } else { + list[i].totalvolume = list[i].volume; + } + var dp = {}; + dp['value'] = list[i].value; + dp[type + 'volume'] = list[i].volume; + dp[type + 'totalvolume'] = list[i].totalvolume; + res.push(dp); + } + } + } + + // Init + var res = []; + processData(data.bids, 'bids', true); + processData(data.asks, 'asks', false); + + return res; + }); + + // Set up precision for numbers + chart.numberFormatter.numberFormat = '#,###.####'; + + // Create axes + var xAxis = chart.xAxes.push(new am4charts.CategoryAxis()); + xAxis.dataFields.category = 'value'; + //xAxis.renderer.grid.template.location = 0; + xAxis.renderer.minGridDistance = 50; + xAxis.tooltip.disabled = true; + xAxis.renderer.grid.template.disabled = true; + xAxis.renderer.paddingBottom = 10; + + var yAxis = chart.yAxes.push(new am4charts.ValueAxis()); + yAxis.tooltip.disabled = true; + yAxis.renderer.grid.template.disabled = true; + + // Create series + var series = chart.series.push(new am4charts.StepLineSeries()); + series.dataFields.categoryX = 'value'; + series.dataFields.valueY = 'bidstotalvolume'; + series.strokeWidth = 1; + series.stroke = am4core.color('#26de81'); + series.fill = series.stroke; + series.fillOpacity = 0.5; + series.tooltip.getFillFromObject = false; + series.tooltip.background.fill = am4core.color('#26de81'); + series.tooltip.background.stroke = am4core.color('#26de81'); + series.tooltipText = + 'Ask: [bold]{categoryX}[/]\nTotal volume: [bold]{valueY}[/]\nVolume: [bold]{bidsvolume}[/]'; + + var series2 = chart.series.push(new am4charts.StepLineSeries()); + series2.dataFields.categoryX = 'value'; + series2.dataFields.valueY = 'askstotalvolume'; + series2.strokeWidth = 1; + series2.stroke = am4core.color('#ff231f'); + series2.fill = series2.stroke; + series2.fillOpacity = 0.5; + series2.tooltip.getFillFromObject = false; + series2.tooltip.background.fill = am4core.color('#ff231f'); + series2.tooltip.background.stroke = am4core.color('#ff231f'); + series2.tooltipText = + 'Ask: [bold]{categoryX}[/]\nTotal volume: [bold]{valueY}[/]\nVolume: [bold]{asksvolume}[/]'; + + var series3 = chart.series.push(new am4charts.ColumnSeries()); + series3.dataFields.categoryX = 'value'; + series3.dataFields.valueY = 'bidsvolume'; + series3.strokeWidth = 0; + series3.fill = am4core.color('#2a2e39'); + series3.fillOpacity = 0.1; + + var series4 = chart.series.push(new am4charts.ColumnSeries()); + series4.dataFields.categoryX = 'value'; + series4.dataFields.valueY = 'asksvolume'; + series4.strokeWidth = 0; + series4.fill = am4core.color('#2a2e39'); + series4.fillOpacity = 0.1; + + // Add cursor + chart.cursor = new am4charts.XYCursor(); + } + + if (document.getElementById('darkDepthChart')) { + function am4themes_dark(target) { + if (target instanceof am4core.InterfaceColorSet) { + target.setFor('stroke', am4core.color('#000000')); + target.setFor('fill', am4core.color('#2b2b2b')); + target.setFor('primaryButton', am4core.color('#6794dc')); + target.setFor('primaryButtonHover', am4core.color('#6771dc')); + target.setFor('primaryButtonDown', am4core.color('#68dc75')); + target.setFor('primaryButtonActive', am4core.color('#68dc75')); + target.setFor('primaryButtonText', am4core.color('#FFFFFF')); + target.setFor('primaryButtonStroke', am4core.color('#6794dc')); + target.setFor('secondaryButton', am4core.color('#3b3b3b')); + target.setFor('secondaryButtonHover', am4core.color('#3b3b3b')); + target.setFor('secondaryButtonDown', am4core.color('#3b3b3b')); + target.setFor('secondaryButtonText', am4core.color('#bbbbbb')); + target.setFor('secondaryButtonStroke', am4core.color('#3b3b3b')); + target.setFor('grid', am4core.color('#6DC0D5')); + target.setFor('background', am4core.color('#000000')); + target.setFor('alternativeBackground', am4core.color('#ffffff')); + target.setFor('text', am4core.color('#ffffff')); + target.setFor('alternativeText', am4core.color('#000000')); + target.setFor('disabledBackground', am4core.color('#bbbbbb')); + } + } + // Themes begin + am4core.useTheme(am4themes_dark); + // Themes end + + var chart = am4core.create('darkDepthChart', am4charts.XYChart); + chart.zoomOutButton.background.fill = am4core.color( + 'rgba(255, 255, 255, 0.11)' + ); + chart.zoomOutButton.icon.stroke = am4core.color('#ebebeb'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#00cc93'); + DepthChart(); + } + + if (document.getElementById('lightDepthChart')) { + var chart = am4core.create('lightDepthChart', am4charts.XYChart); + chart.zoomOutButton.background.fill = am4core.color('rgba(0, 0, 0, 0.09)'); + chart.zoomOutButton.icon.stroke = am4core.color('rgba(0, 0, 0, 0.40)'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#00cc93'); + DepthChart(); + } + + if (document.getElementById('marketsChartBtcLight')) { + am4core.ready(function () { + // Create chart + var chart = am4core.create('marketsChartBtcLight', am4charts.XYChart); + + chart.data = generateChartData(); + + var dateAxis = chart.xAxes.push(new am4charts.DateAxis()); + dateAxis.baseInterval = { + timeUnit: 'minute', + count: 1, + }; + dateAxis.tooltip.disabled = true; + dateAxis.renderer.grid.template.disabled = true; + dateAxis.renderer.labels.template.disabled = true; + dateAxis.renderer.ticks.template.disabled = true; + dateAxis.renderer.paddingBottom = 15; + + var valueAxis = chart.yAxes.push(new am4charts.ValueAxis()); + valueAxis.tooltip.disabled = true; + valueAxis.renderer.grid.template.disabled = true; + valueAxis.renderer.labels.template.disabled = true; + valueAxis.renderer.ticks.template.disabled = true; + + var series = chart.series.push(new am4charts.LineSeries()); + series.dataFields.dateX = 'date'; + series.dataFields.valueY = 'prices'; + series.tooltipText = 'prices: [bold]{valueY}[/]'; + series.fillOpacity = 0.1; + series.fill = am4core.color('#00cc93'); + series.stroke = am4core.color('#00cc93'); + series.tooltip.getFillFromObject = false; + series.tooltip.background.fill = am4core.color('#2a2e39'); + series.tooltip.background.stroke = am4core.color('#2a2e39'); + + chart.cursor = new am4charts.XYCursor(); + chart.cursor.lineY.opacity = 1; + dateAxis.start = 0; + dateAxis.keepSelection = true; + chart.zoomOutButton.background.fill = am4core.color( + 'rgba(0, 0, 0, 0.09)' + ); + chart.zoomOutButton.icon.stroke = am4core.color('rgba(0, 0, 0, 0.40)'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#00cc93'); + + function generateChartData() { + var chartData = []; + // current date + var firstDate = new Date(); + // now set 500 minutes back + firstDate.setMinutes(firstDate.getDate() - 500); + + // and generate 500 data items + var prices = 500; + for (var i = 0; i < 500; i++) { + var newDate = new Date(firstDate); + // each time we add one minute + newDate.setMinutes(newDate.getMinutes() + i); + // some random number + prices += Math.round( + (Math.random() < 0.5 ? 1 : -1) * Math.random() * 10 + ); + // add data item to the array + chartData.push({ + date: newDate, + prices: prices, + }); + } + return chartData; + } + }); + } + + if (document.getElementById('marketsChartEthLight')) { + am4core.ready(function () { + // Create chart + var chart = am4core.create('marketsChartEthLight', am4charts.XYChart); + + chart.data = generateChartData(); + + var dateAxis = chart.xAxes.push(new am4charts.DateAxis()); + dateAxis.baseInterval = { + timeUnit: 'minute', + count: 1, + }; + dateAxis.tooltip.disabled = true; + dateAxis.renderer.grid.template.disabled = true; + dateAxis.renderer.labels.template.disabled = true; + dateAxis.renderer.ticks.template.disabled = true; + dateAxis.renderer.paddingBottom = 15; + + var valueAxis = chart.yAxes.push(new am4charts.ValueAxis()); + valueAxis.tooltip.disabled = true; + valueAxis.renderer.grid.template.disabled = true; + valueAxis.renderer.labels.template.disabled = true; + valueAxis.renderer.ticks.template.disabled = true; + + var series = chart.series.push(new am4charts.LineSeries()); + series.dataFields.dateX = 'date'; + series.dataFields.valueY = 'prices'; + series.tooltipText = 'prices: [bold]{valueY}[/]'; + series.fillOpacity = 0.1; + series.fill = am4core.color('#f74745'); + series.stroke = am4core.color('#f74745'); + series.tooltip.getFillFromObject = false; + series.tooltip.background.fill = am4core.color('#2a2e39'); + series.tooltip.background.stroke = am4core.color('#2a2e39'); + + chart.cursor = new am4charts.XYCursor(); + chart.cursor.lineY.opacity = 1; + dateAxis.start = 0; + dateAxis.keepSelection = true; + chart.zoomOutButton.background.fill = am4core.color( + 'rgba(0, 0, 0, 0.09)' + ); + chart.zoomOutButton.icon.stroke = am4core.color('rgba(0, 0, 0, 0.40)'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#f74745'); + + function generateChartData() { + var chartData = []; + // current date + var firstDate = new Date(); + // now set 500 minutes back + firstDate.setMinutes(firstDate.getDate() - 500); + + // and generate 500 data items + var prices = 500; + for (var i = 0; i < 500; i++) { + var newDate = new Date(firstDate); + // each time we add one minute + newDate.setMinutes(newDate.getMinutes() + i); + // some random number + prices += Math.round( + (Math.random() < 0.5 ? 1 : -1) * Math.random() * 10 + ); + // add data item to the array + chartData.push({ + date: newDate, + prices: prices, + }); + } + return chartData; + } + }); + } + + if (document.getElementById('marketsChartLtcLight')) { + am4core.ready(function () { + // Create chart + var chart = am4core.create('marketsChartLtcLight', am4charts.XYChart); + + chart.data = generateChartData(); + + var dateAxis = chart.xAxes.push(new am4charts.DateAxis()); + dateAxis.baseInterval = { + timeUnit: 'minute', + count: 1, + }; + dateAxis.tooltip.disabled = true; + dateAxis.renderer.grid.template.disabled = true; + dateAxis.renderer.labels.template.disabled = true; + dateAxis.renderer.ticks.template.disabled = true; + dateAxis.renderer.paddingBottom = 15; + + var valueAxis = chart.yAxes.push(new am4charts.ValueAxis()); + valueAxis.tooltip.disabled = true; + valueAxis.renderer.grid.template.disabled = true; + valueAxis.renderer.labels.template.disabled = true; + valueAxis.renderer.ticks.template.disabled = true; + + var series = chart.series.push(new am4charts.LineSeries()); + series.dataFields.dateX = 'date'; + series.dataFields.valueY = 'prices'; + series.tooltipText = 'prices: [bold]{valueY}[/]'; + series.fillOpacity = 0.1; + series.fill = am4core.color('#00cc93'); + series.stroke = am4core.color('#00cc93'); + series.tooltip.getFillFromObject = false; + series.tooltip.background.fill = am4core.color('#2a2e39'); + series.tooltip.background.stroke = am4core.color('#2a2e39'); + + chart.cursor = new am4charts.XYCursor(); + chart.cursor.lineY.opacity = 1; + dateAxis.start = 0; + dateAxis.keepSelection = true; + chart.zoomOutButton.background.fill = am4core.color( + 'rgba(0, 0, 0, 0.09)' + ); + chart.zoomOutButton.icon.stroke = am4core.color('rgba(0, 0, 0, 0.40)'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#00cc93'); + + function generateChartData() { + var chartData = []; + // current date + var firstDate = new Date(); + // now set 500 minutes back + firstDate.setMinutes(firstDate.getDate() - 500); + + // and generate 500 data items + var prices = 500; + for (var i = 0; i < 500; i++) { + var newDate = new Date(firstDate); + // each time we add one minute + newDate.setMinutes(newDate.getMinutes() + i); + // some random number + prices += Math.round( + (Math.random() < 0.5 ? 1 : -1) * Math.random() * 10 + ); + // add data item to the array + chartData.push({ + date: newDate, + prices: prices, + }); + } + return chartData; + } + }); + } + if (document.getElementById('marketsChartKcsLight')) { + am4core.ready(function () { + // Create chart + var chart = am4core.create('marketsChartKcsLight', am4charts.XYChart); + + chart.data = generateChartData(); + + var dateAxis = chart.xAxes.push(new am4charts.DateAxis()); + dateAxis.baseInterval = { + timeUnit: 'minute', + count: 1, + }; + dateAxis.tooltip.disabled = true; + dateAxis.renderer.grid.template.disabled = true; + dateAxis.renderer.labels.template.disabled = true; + dateAxis.renderer.ticks.template.disabled = true; + dateAxis.renderer.paddingBottom = 15; + + var valueAxis = chart.yAxes.push(new am4charts.ValueAxis()); + valueAxis.tooltip.disabled = true; + valueAxis.renderer.grid.template.disabled = true; + valueAxis.renderer.labels.template.disabled = true; + valueAxis.renderer.ticks.template.disabled = true; + + var series = chart.series.push(new am4charts.LineSeries()); + series.dataFields.dateX = 'date'; + series.dataFields.valueY = 'prices'; + series.tooltipText = 'prices: [bold]{valueY}[/]'; + series.fillOpacity = 0.1; + series.fill = am4core.color('#f74745'); + series.stroke = am4core.color('#f74745'); + series.tooltip.getFillFromObject = false; + series.tooltip.background.fill = am4core.color('#2a2e39'); + series.tooltip.background.stroke = am4core.color('#2a2e39'); + + chart.cursor = new am4charts.XYCursor(); + chart.cursor.lineY.opacity = 1; + dateAxis.start = 0; + dateAxis.keepSelection = true; + chart.zoomOutButton.background.fill = am4core.color( + 'rgba(0, 0, 0, 0.09)' + ); + chart.zoomOutButton.icon.stroke = am4core.color('rgba(0, 0, 0, 0.40)'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#00cc93'); + + function generateChartData() { + var chartData = []; + // current date + var firstDate = new Date(); + // now set 500 minutes back + firstDate.setMinutes(firstDate.getDate() - 500); + + // and generate 500 data items + var prices = 500; + for (var i = 0; i < 500; i++) { + var newDate = new Date(firstDate); + // each time we add one minute + newDate.setMinutes(newDate.getMinutes() + i); + // some random number + prices += Math.round( + (Math.random() < 0.5 ? 1 : -1) * Math.random() * 10 + ); + // add data item to the array + chartData.push({ + date: newDate, + prices: prices, + }); + } + return chartData; + } + }); + } + + if (document.getElementById('marketsChartBtcDark')) { + am4core.ready(function () { + // Create chart + var chart = am4core.create('marketsChartBtcDark', am4charts.XYChart); + + chart.data = generateChartData(); + + var dateAxis = chart.xAxes.push(new am4charts.DateAxis()); + dateAxis.baseInterval = { + timeUnit: 'minute', + count: 1, + }; + dateAxis.tooltip.disabled = true; + dateAxis.renderer.grid.template.disabled = true; + dateAxis.renderer.labels.template.disabled = true; + dateAxis.renderer.ticks.template.disabled = true; + dateAxis.renderer.paddingBottom = 15; + + var valueAxis = chart.yAxes.push(new am4charts.ValueAxis()); + valueAxis.tooltip.disabled = true; + valueAxis.renderer.grid.template.disabled = true; + valueAxis.renderer.labels.template.disabled = true; + valueAxis.renderer.ticks.template.disabled = true; + + var series = chart.series.push(new am4charts.LineSeries()); + series.dataFields.dateX = 'date'; + series.dataFields.valueY = 'prices'; + series.tooltipText = 'prices: [bold]{valueY}[/]'; + series.fillOpacity = 0.1; + series.fill = am4core.color('#00cc93'); + series.stroke = am4core.color('#00cc93'); + series.tooltip.getFillFromObject = false; + series.tooltip.background.fill = am4core.color('#2a2e39'); + series.tooltip.background.stroke = am4core.color('#2a2e39'); + + chart.cursor = new am4charts.XYCursor(); + chart.cursor.lineY.opacity = 1; + dateAxis.start = 0; + dateAxis.keepSelection = true; + chart.zoomOutButton.background.fill = am4core.color( + 'rgba(255, 255, 255, 0.11)' + ); + chart.zoomOutButton.icon.stroke = am4core.color('#ebebeb'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#00cc93'); + + function generateChartData() { + var chartData = []; + // current date + var firstDate = new Date(); + // now set 500 minutes back + firstDate.setMinutes(firstDate.getDate() - 500); + + // and generate 500 data items + var prices = 500; + for (var i = 0; i < 500; i++) { + var newDate = new Date(firstDate); + // each time we add one minute + newDate.setMinutes(newDate.getMinutes() + i); + // some random number + prices += Math.round( + (Math.random() < 0.5 ? 1 : -1) * Math.random() * 10 + ); + // add data item to the array + chartData.push({ + date: newDate, + prices: prices, + }); + } + return chartData; + } + }); + } + + if (document.getElementById('marketsChartEthDark')) { + am4core.ready(function () { + // Create chart + var chart = am4core.create('marketsChartEthDark', am4charts.XYChart); + + chart.data = generateChartData(); + + var dateAxis = chart.xAxes.push(new am4charts.DateAxis()); + dateAxis.baseInterval = { + timeUnit: 'minute', + count: 1, + }; + dateAxis.tooltip.disabled = true; + dateAxis.renderer.grid.template.disabled = true; + dateAxis.renderer.labels.template.disabled = true; + dateAxis.renderer.ticks.template.disabled = true; + dateAxis.renderer.paddingBottom = 15; + + var valueAxis = chart.yAxes.push(new am4charts.ValueAxis()); + valueAxis.tooltip.disabled = true; + valueAxis.renderer.grid.template.disabled = true; + valueAxis.renderer.labels.template.disabled = true; + valueAxis.renderer.ticks.template.disabled = true; + + var series = chart.series.push(new am4charts.LineSeries()); + series.dataFields.dateX = 'date'; + series.dataFields.valueY = 'prices'; + series.tooltipText = 'prices: [bold]{valueY}[/]'; + series.fillOpacity = 0.1; + series.fill = am4core.color('#f74745'); + series.stroke = am4core.color('#f74745'); + series.tooltip.getFillFromObject = false; + series.tooltip.background.fill = am4core.color('#2a2e39'); + series.tooltip.background.stroke = am4core.color('#2a2e39'); + + chart.cursor = new am4charts.XYCursor(); + chart.cursor.lineY.opacity = 1; + dateAxis.start = 0; + dateAxis.keepSelection = true; + chart.zoomOutButton.background.fill = am4core.color( + 'rgba(255, 255, 255, 0.11)' + ); + chart.zoomOutButton.icon.stroke = am4core.color('#ebebeb'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#f74745'); + + function generateChartData() { + var chartData = []; + // current date + var firstDate = new Date(); + // now set 500 minutes back + firstDate.setMinutes(firstDate.getDate() - 500); + + // and generate 500 data items + var prices = 500; + for (var i = 0; i < 500; i++) { + var newDate = new Date(firstDate); + // each time we add one minute + newDate.setMinutes(newDate.getMinutes() + i); + // some random number + prices += Math.round( + (Math.random() < 0.5 ? 1 : -1) * Math.random() * 10 + ); + // add data item to the array + chartData.push({ + date: newDate, + prices: prices, + }); + } + return chartData; + } + }); + } + + if (document.getElementById('marketsChartLtcDark')) { + am4core.ready(function () { + // Create chart + var chart = am4core.create('marketsChartLtcDark', am4charts.XYChart); + + chart.data = generateChartData(); + + var dateAxis = chart.xAxes.push(new am4charts.DateAxis()); + dateAxis.baseInterval = { + timeUnit: 'minute', + count: 1, + }; + dateAxis.tooltip.disabled = true; + dateAxis.renderer.grid.template.disabled = true; + dateAxis.renderer.labels.template.disabled = true; + dateAxis.renderer.ticks.template.disabled = true; + dateAxis.renderer.paddingBottom = 15; + + var valueAxis = chart.yAxes.push(new am4charts.ValueAxis()); + valueAxis.tooltip.disabled = true; + valueAxis.renderer.grid.template.disabled = true; + valueAxis.renderer.labels.template.disabled = true; + valueAxis.renderer.ticks.template.disabled = true; + var series = chart.series.push(new am4charts.LineSeries()); + series.dataFields.dateX = 'date'; + series.dataFields.valueY = 'prices'; + series.tooltipText = 'prices: [bold]{valueY}[/]'; + series.fillOpacity = 0.1; + series.fill = am4core.color('#00cc93'); + series.stroke = am4core.color('#00cc93'); + series.tooltip.getFillFromObject = false; + series.tooltip.background.fill = am4core.color('#131722'); + series.tooltip.background.stroke = am4core.color('#131722'); + + chart.cursor = new am4charts.XYCursor(); + chart.cursor.lineY.opacity = 1; + dateAxis.start = 0; + dateAxis.keepSelection = true; + chart.zoomOutButton.background.fill = am4core.color( + 'rgba(255, 255, 255, 0.11)' + ); + chart.zoomOutButton.icon.stroke = am4core.color('#ebebeb'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#00cc93'); + + function generateChartData() { + var chartData = []; + // current date + var firstDate = new Date(); + // now set 500 minutes back + firstDate.setMinutes(firstDate.getDate() - 500); + + // and generate 500 data items + var prices = 500; + for (var i = 0; i < 500; i++) { + var newDate = new Date(firstDate); + // each time we add one minute + newDate.setMinutes(newDate.getMinutes() + i); + // some random number + prices += Math.round( + (Math.random() < 0.5 ? 1 : -1) * Math.random() * 10 + ); + // add data item to the array + chartData.push({ + date: newDate, + prices: prices, + }); + } + return chartData; + } + }); + } + if (document.getElementById('account-wallet-chart')) { + am4core.ready(function () { + // Create chart + var chart = am4core.create('account-wallet-chart', am4charts.XYChart); + + chart.data = generateChartData(); + + var dateAxis = chart.xAxes.push(new am4charts.DateAxis()); + dateAxis.baseInterval = { + timeUnit: 'minute', + count: 1, + }; + dateAxis.tooltip.disabled = true; + dateAxis.renderer.grid.template.disabled = true; + dateAxis.renderer.labels.template.disabled = true; + dateAxis.renderer.ticks.template.disabled = true; + dateAxis.renderer.paddingBottom = 15; + + var valueAxis = chart.yAxes.push(new am4charts.ValueAxis()); + valueAxis.tooltip.disabled = true; + valueAxis.renderer.grid.template.disabled = true; + valueAxis.renderer.labels.template.disabled = true; + valueAxis.renderer.ticks.template.disabled = true; + + var series = chart.series.push(new am4charts.LineSeries()); + series.dataFields.dateX = 'date'; + series.dataFields.valueY = 'prices'; + series.tooltipText = 'prices: [bold]{valueY}[/]'; + series.fillOpacity = 0.1; + series.fill = am4core.color('#007bff'); + series.stroke = am4core.color('#007bff'); + series.tooltip.getFillFromObject = false; + series.tooltip.background.fill = am4core.color('#2a2e39'); + series.tooltip.background.stroke = am4core.color('#2a2e39'); + + chart.cursor = new am4charts.XYCursor(); + chart.cursor.lineY.opacity = 1; + dateAxis.start = 0; + dateAxis.keepSelection = true; + chart.zoomOutButton.background.fill = am4core.color( + 'rgba(0, 0, 0, 0.09)' + ); + chart.zoomOutButton.icon.stroke = am4core.color('rgba(0, 0, 0, 0.40)'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#00cc93'); + + function generateChartData() { + var chartData = []; + // current date + var firstDate = new Date(); + // now set 500 minutes back + firstDate.setMinutes(firstDate.getDate() - 500); + + // and generate 500 data items + var prices = 500; + for (var i = 0; i < 500; i++) { + var newDate = new Date(firstDate); + // each time we add one minute + newDate.setMinutes(newDate.getMinutes() + i); + // some random number + prices += Math.round( + (Math.random() < 0.5 ? 1 : -1) * Math.random() * 10 + ); + // add data item to the array + chartData.push({ + date: newDate, + prices: prices, + }); + } + return chartData; + } + }); + } + // make tr linkable + $('.markets-pair-list tr').click(function () { + window.location = $(this).data('href'); + }); + + // click to full screen + function toggleFullscreen(elem) { + elem = elem || document.documentElement; + if ( + !document.fullscreenElement && + !document.mozFullScreenElement && + !document.webkitFullscreenElement && + !document.msFullscreenElement + ) { + if (elem.requestFullscreen) { + elem.requestFullscreen(); + } else if (elem.msRequestFullscreen) { + elem.msRequestFullscreen(); + } else if (elem.mozRequestFullScreen) { + elem.mozRequestFullScreen(); + } else if (elem.webkitRequestFullscreen) { + elem.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); + } + } else { + if (document.exitFullscreen) { + document.exitFullscreen(); + } else if (document.msExitFullscreen) { + document.msExitFullscreen(); + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } else if (document.webkitExitFullscreen) { + document.webkitExitFullscreen(); + } + } + } + $('#clickFullscreen').on('click', function () { + toggleFullscreen(); + }); + + // data for market chart + var optionsForIndiv = { + bezierCurve: true, + legend: { + display: false, + }, + scales: { + xAxes: [ + { + gridLines: { + display: false, + drawBorder: false, + }, + ticks: { + display: false, + }, + }, + ], + yAxes: [ + { + gridLines: { + display: false, + drawBorder: false, + }, + ticks: { + display: false, + beginAtZero: true, + }, + }, + ], + }, + elements: { + point: { + radius: 0, + }, + }, + }; + + // for market line chart + var chartsIndiv = document.getElementsByClassName('markets-capital-chart'); + if (chartsIndiv.length > 0) { + for (let chart of chartsIndiv) { + let data = JSON.parse(chart.dataset.charts); + let bg = chart.dataset.bg; + let border = chart.dataset.border; + + let canvas = chart.querySelector('canvas'); + let ctx = canvas.getContext('2d'); + + var gradient = ctx.createLinearGradient(255, 35, 19, 255); + gradient.addColorStop(0.1, bg); + gradient.addColorStop(1, 'transparent'); + let lineChartData = { + labels: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'], + datasets: [ + { + backgroundColor: gradient, + borderColor: '#' + border, + borderWidth: 2, + data: data, + bezierCurve: true, + }, + ], + }; + new Chart(ctx, { + type: 'line', + data: lineChartData, + options: optionsForIndiv, + }); + } + } + + var chartsIndiv = document.getElementsByClassName( + 'markets-capital-chart-bar' + ); + if (chartsIndiv.length > 0) { + for (let chart of chartsIndiv) { + let data = JSON.parse(chart.dataset.charts); + let bg = chart.dataset.bg; + let border = chart.dataset.border; + + let canvas = chart.querySelector('canvas'); + let ctx = canvas.getContext('2d'); + + var gradient = ctx.createLinearGradient(255, 35, 19, 255); + gradient.addColorStop(0.3, bg); + gradient.addColorStop(1, 'transparent'); + let lineChartData = { + labels: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'], + datasets: [ + { + backgroundColor: gradient, + borderColor: '#' + border, + borderWidth: 2, + data: data, + bezierCurve: true, + }, + ], + }; + new Chart(ctx, { + type: 'bar', + data: lineChartData, + options: optionsForIndiv, + }); + } + } +})(jQuery); diff --git a/src/assets/js/tv.js b/src/assets/js/tv.js new file mode 100644 index 0000000..4ba48db --- /dev/null +++ b/src/assets/js/tv.js @@ -0,0 +1 @@ +"use strict";!function(){if(!window.TradingView||!window.TradingView.host||window.TradingView.reoloadTvjs){var e,t,i,o,n,r,s,a={"color-brand":"#2196f3","color-gull-gray":"#9db2bd","color-scooter":"#38acdb","color-curious-blue":"#299dcd"},d={host:null==window.location.host.match(/tradingview\.com|pyrrosinvestment\.com/i)?"https://s.tradingview.com":"https://www.tradingview.com",ideasHost:"https://www.tradingview.com",chatHost:"https://www.tradingview.com",embedStylesForCopyright:function(){var e=document.createElement("style");return e.innerHTML=".tradingview-widget-copyright {font-size: 13px !important; line-height: 32px !important; text-align: center !important; vertical-align: middle !important; font-family: 'Trebuchet MS', Arial, sans-serif !important; color: "+a["color-gull-gray"]+" !important;} .tradingview-widget-copyright .blue-text {color: "+a["color-brand"]+" !important;} .tradingview-widget-copyright a {text-decoration: none !important; color: "+a["color-gull-gray"]+" !important;} .tradingview-widget-copyright a:visited {color: "+a["color-gull-gray"]+" !important;} .tradingview-widget-copyright a:hover .blue-text {color: "+a["color-scooter"]+" !important;} .tradingview-widget-copyright a:active .blue-text {color: "+a["color-curious-blue"]+" !important;} .tradingview-widget-copyright a:visited .blue-text {color: "+a["color-brand"]+" !important;}",e},embedStylesForFullHeight:function(e,t,i){var o=t?"calc("+e+" - 32px)":e,n=document.querySelector("#"+i);n.parentElement.style.height=o,n.style.height="100%"},gId:function(){return"tradingview_"+(1048576*(1+Math.random())|0).toString(16).substring(1)},isPersentHeight:function(e){return"%"===e},getSuffix:function(e){var t=e.toString().match(/(\%|px|em|ex)/);return t?t[0]:"px"},hasCopyright:function(e){var t=document.getElementById(e),i=t&&t.parentElement;return!!i&&!!i.querySelector(".tradingview-widget-copyright")},calculateWidgetHeight:function(e,t){var i=parseInt(e),o=this.getSuffix(e),n=this.isPersentHeight(o),r=t&&this.hasCopyright(t);return n&&t&&(this.embedStylesForFullHeight(i+o,r,t),r)?100+o:r?"calc("+i+o+" - 32px)":i+o},onready:function(e){window.addEventListener?window.addEventListener("DOMContentLoaded",e,!1):window.attachEvent("onload",e)},css:function(e){var t,i=document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",o.styleSheet?o.styleSheet.cssText=e:(t=document.createTextNode(e),o.appendChild(t)),i.appendChild(o)},bindEvent:function(e,t,i){e.addEventListener?e.addEventListener(t,i,!1):e.attachEvent&&e.attachEvent("on"+t,i)},unbindEvent:function(e,t,i){e.removeEventListener?e.removeEventListener(t,i,!1):e.detachEvent&&e.detachEvent("on"+t,i)},cloneSimpleObject:function(e){if(null==e||"object"!=typeof e)return e;var t=e.constructor();for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t},isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},isMobileDevice:(e={Android:/Android/i.test(navigator.userAgent),BlackBerry:/BlackBerry/i.test(navigator.userAgent),iOS:/iPhone|iPad|iPod/i.test(navigator.userAgent),Opera:/Opera Mini/i.test(navigator.userAgent)},e.any=e.Android||e.BlackBerry||e.iOS||e.Opera,e),generateUtmForUrlParams:function(e){return"utm_source="+encodeURI(window.location.hostname)+"&utm_medium="+(d.hasCopyright(e.container)?"widget_new":"widget")+(e.type?"&utm_campaign="+e.type:"")+(e.type&&"chart"===e.type?"&utm_term="+encodeURIComponent(e.symbol):"")},WidgetAbstract:function(){},MiniWidget:function(e){this.id=d.gId(),this.options={whitelabel:e.whitelabel||"",width:d.WidgetAbstract.prototype.fixSize(e.width)||300,height:d.WidgetAbstract.prototype.fixSize(e.height)||400,symbols:e.symbols,tabs:e.tabs||"",symbols_description:e.symbols_description||"",customer:e.customer||"",container:e.container_id||"",greyText:e.greyText||"",large_chart_url:e.large_chart_url||"",large_chart_target:e.large_chart_target||"",gridLineColor:e.gridLineColor||"",fontColor:e.fontColor||"",underLineColor:e.underLineColor||"",trendLineColor:e.trendLineColor||"",timeAxisBackgroundColor:e.timeAxisBackgroundColor||"",activeTickerBackgroundColor:e.activeTickerBackgroundColor||"",noGraph:e.noGraph||!1,locale:e.locale,styleTickerActiveBg:e.styleTickerActiveBg||"",styleTabActiveBorderColor:e.styleTabActiveBorderColor||"",styleTickerBodyFontSize:e.styleTickerBodyFontSize||"",styleTickerBodyFontWeight:e.styleTickerBodyFontWeight||"",styleTickerHeadFontSize:e.styleTickerHeadFontSize||"",styleTickerHeadFontWeight:e.styleTickerHeadFontWeight||"",styleTickerChangeDownColor:e.styleTickerChangeDownColor||"",styleTickerChangeUpColor:e.styleTickerChangeUpColor||"",styleTickerLastDownBg:e.styleTickerLastDownBg||"",styleTickerLastUpBg:e.styleTickerLastUpBg||"",styleTickerSymbolColor:e.styleTickerSymbolColor||"",styleTickerSymbolHoverTextDecoration:e.styleTickerSymbolHoverTextDecoration||"",styleTickerActiveSymbolTextDecoration:e.styleTickerActiveSymbolTextDecoration||"",styleTabsActiveBorderColor:e.styleTabsActiveBorderColor||"",styleTabsNoBorder:e.styleTabsNoBorder||"",styleWidgetNoBorder:e.styleWidgetNoBorder||""},this.createWidget()},MediumWidget:function(e){this.id=d.gId();var t=d.calculateWidgetHeight(e.height||400,e.container_id);this.options={container:e.container_id||"",width:d.WidgetAbstract.prototype.fixSize(e.width)||"",height:d.WidgetAbstract.prototype.fixSize(t)||"",symbols:e.symbols,greyText:e.greyText||"",symbols_description:e.symbols_description||"",large_chart_url:e.large_chart_url||"",customer:e.customer||"",gridLineColor:e.gridLineColor||"",fontColor:e.fontColor||"",underLineColor:e.underLineColor||"",trendLineColor:e.trendLineColor||"",timeAxisBackgroundColor:e.timeAxisBackgroundColor||"",chartOnly:!!e.chartOnly,locale:e.locale,whitelabel:!!e.whitelabel||"",colorTheme:e.colorTheme,isTransparent:e.isTransparent},this.createWidget()},widget:function(e){this.id=e.id||d.gId();var t=d.getUrlParams(),i=e.tvwidgetsymbol||t.tvwidgetsymbol||t.symbol||e.symbol||"NASDAQ:AAPL",o=e.logo||"";o.src&&(o=o.src),o&&o.replace(".png","");var n=d.calculateWidgetHeight(e.height||500,e.container_id);this.options={whitelabel:e.whitelabel||"",width:e.width||800,height:n,symbol:i,interval:e.interval||"1",range:e.range||"",timezone:e.timezone||"",autosize:e.autosize,hide_top_toolbar:e.hide_top_toolbar,hide_side_toolbar:e.hide_side_toolbar,hide_legend:e.hide_legend,allow_symbol_change:e.allow_symbol_change,save_image:void 0===e.save_image||e.save_image,container:e.container_id||"",toolbar_bg:e.toolbar_bg||"f4f7f9",watchlist:e.watchlist||[],editablewatchlist:!!e.editablewatchlist,studies:e.studies||[],theme:e.theme||"",style:e.style||"",extended_hours:void 0===e.extended_hours?void 0:+e.extended_hours,details:!!e.details,calendar:!!e.calendar,hotlist:!!e.hotlist,hideideas:!!e.hideideas,hideideasbutton:!!e.hideideasbutton,widgetbar_width:+e.widgetbar_width||void 0,withdateranges:e.withdateranges||"",customer:e.customer||o||"",venue:e.venue,symbology:e.symbology,logo:o,show_popup_button:!!e.show_popup_button,popup_height:e.popup_height||"",popup_width:e.popup_width||"",studies_overrides:e.studies_overrides,overrides:e.overrides,enabled_features:e.enabled_features,disabled_features:e.disabled_features,publish_source:e.publish_source||"",enable_publishing:e.enable_publishing,whotrades:e.whotrades||void 0,locale:e.locale,referral_id:e.referral_id,no_referral_id:e.no_referral_id,ref_landing_page:e.ref_landing_page,fundamental:e.fundamental,percentage:e.percentage,hidevolume:e.hidevolume,padding:e.padding,greyText:e.greyText||"",horztouchdrag:e.horztouchdrag,verttouchdrag:e.verttouchdrag},e.cme&&(this.options.customer="cme"),isFinite(e.widgetbar_width)&&e.widgetbar_width>0&&(this.options.widgetbar_width=e.widgetbar_width),this._ready_handlers=[],this.create()},chart:function(e){this.id=d.gId(),this.options={width:e.width||640,height:e.height||500,container:e.container_id||"",realtime:e.realtime,chart:e.chart,locale:e.locale,type:"chart",autosize:e.autosize,mobileStatic:e.mobileStatic},this._ready_handlers=[],this.create()},stream:function(e){this.id=d.gId(),this.options={width:e.width||640,height:e.height||500,container:e.container_id||"",stream:e.stream,locale:e.locale,autosize:e.autosize},this.create()},EventsWidget:function(e){this.id=d.gId(),this.options={container:e.container_id||"",width:e.width||486,height:e.height||670,currency:e.currencyFilter||"",importance:e.importanceFilter||"",type:"economic-calendar"},this.createWidget(e)},IdeasStreamWidget:function(e){this.id=d.gId(),this.options={container:e.container_id||"",width:e.width||486,height:e.height||670,symbol:e.symbol||"",username:e.username||"",mode:e.mode||"",publishSource:e.publishSource||"",sort:e.sort||"trending",stream:e.stream,interval:e.interval,time:e.time,waitSymbol:e.waitSymbol,hideDescription:e.hideDescription,startingCount:e.startingCount,bgColor:e.bgColor||"",headerColor:e.headerColor||"",borderColor:e.borderColor||"",locale:e.locale,type:"ideas-stream"},this._ready_handlers=[],this.createWidget(e)},IdeaWidget:function(e){this.id=d.gId(),this.options={container:e.container_id||"",width:e.width||486,height:e.height||670,idea:e.idea||"",chartUrl:e.chartUrl||"",whotrades:e.whotrades||void 0,locale:e.locale,type:"idea"},this.createWidget(e)},ChatWidgetEmbed:function(e){this.id=d.gId(),this.options={container:e.container_id||"",width:e.width||400,height:e.height||500,room:e.room||"",whotrades:e.whotrades||void 0,locale:e.locale,type:"chat-embed"},this.createWidget(e)},UserInfoWidget:function(e){this.options={container:e.container_id||"",width:e.width||1040,height:e.height||340,username:e.username||"",locale:e.locale,type:"user-info"},this.createWidget(e)},QuotesProvider:function(e){var t,i,o=d.gId(),n=(e={container:e.container_id,symbols:e.symbols||[],type:"quotes-provider"},d.host+"/embed-quotes-provider/?"+d.generateUtmForUrlParams(e));function r(e){var o=e.symbol,n=e.success,r=e.error;o&&n&&r&&(i.post(t.contentWindow,"resolveSymbol",{symbol:o}),n&&i.on("success"+o,(function(e){n(e)})),r&&i.on("error"+o,(function(e){r(e)})))}l('',e.container),t=document.getElementById(o),i=d.postMessageWrapper(t.contentWindow,o),d.bindEvent(t,"load",(function(){e.symbols.forEach(r)}))}};d.DependenciesManager=function(){},d.DependenciesManager.prototype.scripts={},d.DependenciesManager.prototype._loaded=function(e){for(var t in this.scripts[e].callbacks)this.scripts[e].callbacks[t]();this.scripts[e].status=!0,this.scripts[e].callbacks={}},d.DependenciesManager.prototype.depends=function(e,t,i){for(var o=0;o
'+e+"
"+(t||"")+""},addFooterLogo:function(e,t){var i=(t||{}).greyText||"powered by",o=(t||{}).linkText||"tradingview.com",n=(t||{}).href||"https://www.tradingview.com/";return d.WidgetAbstract.prototype.addWrapperFrame.call(this,e,'
'+i+" "+o+"
","#fff")}},d.UserInfoWidget.prototype={createWidget:function(){var e=this.widgetCode();l(e,this.options.container)},widgetCode:function(){var e=d.createUrlParams({username:this.options.username,locale:this.options.locale});this.options.type="user-info";var t="&"+d.generateUtmForUrlParams(this.options,{type:"UserInfoWidget"});return''}},d.ChatWidgetEmbed.prototype={createWidget:function(){var e=this.widgetCode();e=d.WidgetAbstract.prototype.addFooterLogo.call(this,e),l(e,this.options.container)},widgetCode:function(){var e=this.options.room?"#"+encodeURIComponent(this.options.room):"",t="&"+d.createUrlParams({whotrades:this.options.whotrades,locale:this.options.locale}),i=d.generateUtmForUrlParams(this.options,{type:"UserInfoWidget"});return''}},d.IdeaWidget.prototype={createWidget:function(){var e=this.widgetCode();l(e,this.options.container);var t=this,i=document.getElementById(this.id);this.postMessage=d.postMessageWrapper(i.contentWindow,this.id),this.postMessage.on("resize",(function(e){e.id===t.id&&(i.style.height=e.height+"px")}),!0)},widgetCode:function(){var e=d.createUrlParams({id:this.id,width:this.options.width,height:this.options.height,idea:this.options.idea,chart_url:this.options.chartUrl,whotrades:this.options.whotrades,locale:this.options.locale});this.options.type="idea";var t="&"+d.generateUtmForUrlParams(this.options),i=d.ideasHost+"/idea-popup/?"+e+t;return''},getSymbol:function(e){this.postMessage.on("symbolInfo",e)}},d.EventsWidget.prototype={createWidget:function(){var e=this.widgetCode();l(e,this.options.container)},widgetCode:function(){var e=d.createUrlParams({currency:this.options.currency,importance:this.options.importance});this.options.type="events";var t="&"+d.generateUtmForUrlParams(this.options);return''}},d.IdeasStreamWidget.prototype={createWidget:function(){var e=this.widgetCode();l(e,this.options.container);var t=this,i=document.getElementById(this.id);this.postMessage=d.postMessageWrapper(i.contentWindow,this.id),d.bindEvent(i,"load",(function(){t._ready=!0;for(var e=t._ready_handlers.length;e--;)t._ready_handlers[e].call(t)})),t.postMessage.on("resize",(function(e){if(e.id===t.id){var o=Math.max(e.height,450);i.style.height=o+"px"}}),!0)},widgetCode:function(){var e=this.options,t=d.createUrlParams({id:this.id,width:e.width,height:e.height,symbol:e.symbol,username:e.username,mode:e.mode,publish_source:e.publishSource,sort:e.sort,stream:e.stream,interval:e.interval,time:e.time,wait_symbol:e.waitSymbol,hide_desc:e.hideDescription,s_count:e.startingCount,bg_color:e.bgColor,h_color:e.headerColor,borderColor:e.borderColor,locale:e.locale}),i=d.generateUtmForUrlParams(this.options)+"&",o=d.host+"/ideaswidgetembed/?"+i+t;return''},setSymbol:function(e){var t=document.getElementById(this.id);this.postMessage.post(t.contentWindow,"setSymbol",e)},ready:function(e){this._ready?e.call(this):this._ready_handlers.push(e)}},d.MiniWidget.prototype={createWidget:function(){var e=this.widgetCode(),t=this.options;if(!t.noLogoOverlay&&!t.whitelabel){var i=this.options.greyText||"Quotes by";e=d.WidgetAbstract.prototype.addFooterLogo.call(this,e,{greyText:i,linkText:"TradingView"})}l(e,t.container)},widgetCode:function(){var e="",t="",i="",o="/miniwidgetembed/",n=this.options.width?"&width="+encodeURIComponent(this.options.width):"",r=this.options.height?"&height="+encodeURIComponent(this.options.height):"",s=this.options.noGraph?"&noGraph="+encodeURIComponent(this.options.noGraph):"",a=this.options.locale?"&locale="+encodeURIComponent(this.options.locale):"",l=this.options.whitelabel?"&whitelabel=1":"";this.options.type="market-overview";for(var h="&"+d.generateUtmForUrlParams(this.options),c=["large_chart_url","large_chart_target","gridLineColor","fontColor","underLineColor","trendLineColor","activeTickerBackgroundColor","timeAxisBackgroundColor","locale","styleTickerActiveBg","styleTabActiveBorderColor","styleTickerBodyFontSize","styleTickerBodyFontWeight","styleTickerHeadFontSize","styleTickerHeadFontWeight","styleTickerChangeDownColor","styleTickerChangeUpColor","styleTickerLastDownBg","styleTickerLastUpBg","styleTickerSymbolColor","styleTickerSymbolHoverTextDecoration","styleTickerActiveSymbolTextDecoration","styleTabsActiveBorderColor","styleTabsNoBorder","styleWidgetNoBorder"],p="",g=c.length-1;g>=0;g--){var m=c[g],u=this.options[m];p+=u?"&"+m+"="+encodeURIComponent(u):""}var y=function(e){for(var t=[],o=0;o'},remove:function(){var e=document.getElementById("tradingview_widget");e.parentNode.removeChild(e)}},d.MediumWidget.prototype={createWidget:function(){var e=this.widgetCode();l(e,this.options.container)},widgetCode:function(){var e="",t="symbols="+function(t){for(var i=[],o=0;o=0;l--){var h=s[l],c=this.options[h];a+=c?"&"+h+"="+encodeURIComponent(c):""}var p=this.options.chartOnly?"&chartOnly=1":"",g=this.options.whitelabel?"&whitelabel=1":"",m=this.options.isTransparent?"&isTransparent=1":"",u="/mediumwidgetembed/";this.options.customer&&(u="/"+this.options.customer+u);var y=d.host+u+"?"+t+e+a+p+g+i+o+n+m+r;return''},remove:function(){var e=document.getElementById("tradingview_widget");e.parentNode.removeChild(e)}},d.widget.prototype={create:function(){this.options.type=this.options.fundamental?"fundamental":"chart";var e=this.render(),t=this;this.options.noLogoOverlay||(e=d.WidgetAbstract.prototype.addWrapperFrame.call(this,e)),l(e,this.options.container);var i=document.getElementById("tradingview-copyright");i&&i.parentElement&&i.parentElement.removeChild(i),this.iframe=document.getElementById(this.id),this.postMessage=d.postMessageWrapper(this.iframe.contentWindow,this.id),d.bindEvent(this.iframe,"load",(function(){t.postMessage.get("widgetReady",{},(function(){var e;for(t._ready=!0,e=t._ready_handlers.length;e--;)t._ready_handlers[e].call(t)}))})),t.postMessage.on("logoCreated",(function(e){if(e.left&&e.bottom&&e.width&&e.height&&e.href){t._logoOverlay&&(t._logoOverlay.parentNode.removeChild(t._logoOverlay),delete t._logoOverlay);var i=document.createElement("a");e.text&&(i.textContent=e.text,i.style.color="transparent"),i.style.position="absolute",i.style.display="inline-block",i.style.left=e.left,i.style.bottom=e.bottom,i.style.width=e.width,i.style.height=e.height,i.style.backgroundColor="transparent",i.style.pointerEvents="none",i.href=e.href,i.setAttribute("target","_blank"),t._logoOverlay=i,document.getElementById(t.id+"-wrapper").appendChild(i)}})),t.postMessage.on("setLogoOverlayVisibility",(function(e){t._logoOverlay&&e&&"boolean"==typeof e.visible&&(t._logoOverlay.style.display=e.visible?"inline-block":"none")})),t.postMessage.on("openChartInPopup",(function(e){for(var i=d.cloneSimpleObject(t.options),o=["symbol","interval"],n=o.length-1;n>=0;n--){var r=o[n],s=e[r];s&&(i[r]=s)}i.show_popup_button=!1;var a=t.options.popup_width||900,l=t.options.popup_height||600,h=(screen.width-a)/2,c=(screen.height-l)/2,p=window.open(t.generateUrl(i),"_blank","resizable=yes, top="+c+", left="+h+", width="+a+", height="+l);p&&(p.opener=null)}))},ready:function(e){this._ready?e.call(this):this._ready_handlers.push(e)},render:function(){var e=this.generateUrl();return''},generateUrl:function(e){var t;function i(t,i){return i=i||t,void 0===e[t]?"":"&"+encodeURIComponent(i)+"="+(e[t]?"1":"0")}function o(t,i,o){return o=o||t,e[t]?"&"+o+"="+i:""}function n(t,i,o){return o=o||{},"&"+t+"="+(e[t]?encodeURIComponent(JSON.stringify(i)):encodeURIComponent(JSON.stringify(o)))}return t="cme"===(e=e||this.options).customer?"/cmewidgetembed/":e.customer?"/"+e.customer+"/widgetembed/":"/widgetembed/",(e.enable_publishing?d.ideasHost:d.host)+t+"?frameElementId="+this.id+"&symbol="+encodeURIComponent(e.symbol)+"&interval="+encodeURIComponent(e.interval)+(e.range?"&range="+encodeURIComponent(e.range):"")+(e.whitelabel?"&whitelabel=1":"")+(e.hide_top_toolbar?"&hidetoptoolbar=1":"")+(e.hide_legend?"&hidelegend=1":"")+i("hide_side_toolbar","hidesidetoolbar")+i("allow_symbol_change","symboledit")+i("save_image","saveimage")+"&toolbarbg="+e.toolbar_bg.replace("#","")+(e.watchlist&&e.watchlist.length&&e.watchlist.join?"&watchlist="+encodeURIComponent(e.watchlist.join("")):"")+o("editablewatchlist","1")+o("details","1")+o("calendar","1")+o("hotlist","1")+(e.studies&&d.isArray(e.studies)?"string"==typeof e.studies[0]?o("studies",encodeURIComponent(e.studies.join(""))):n("studies",e.studies):"")+i("horztouchdrag")+i("verttouchdrag")+o("widgetbar_width",e.widgetbar_width,"widgetbarwidth")+o("hideideas","1")+o("theme",encodeURIComponent(e.theme))+o("style",encodeURIComponent(e.style))+(void 0===e.extended_hours?"":"&extended_hours="+e.extended_hours)+o("timezone",encodeURIComponent(e.timezone))+o("hideideasbutton","1")+o("withdateranges","1")+o("hidevolume","1")+(void 0===e.padding?"":"&padding="+e.padding)+o("show_popup_button","1","showpopupbutton")+n("studies_overrides",e.studies_overrides,{})+n("overrides",e.overrides,{})+n("enabled_features",e.enabled_features,[])+n("disabled_features",e.disabled_features,[])+(e.show_popup_button?"&showpopupbutton=1":"")+(e.publish_source?"&publishsource="+encodeURIComponent(e.publish_source):"")+(e.enable_publishing?"&enablepublishing="+encodeURIComponent(e.enable_publishing):"")+(e.venue?"&venue="+encodeURIComponent(e.venue):"")+(e.symbology?"&symbology="+encodeURIComponent(e.symbology):"")+(e.whotrades?"&whotrades="+encodeURIComponent(e.whotrades):"")+(e.locale?"&locale="+e.locale:"")+(e.referral_id?"&referral_id="+e.referral_id:"")+(e.no_referral_id?"&no_referral_id=1":"")+(e.ref_landing_page?"&ref_landing_page="+e.ref_landing_page:"")+(e.fundamental?"&fundamental="+encodeURIComponent(e.fundamental):"")+(e.percentage?"&percentage="+encodeURIComponent(e.percentage):"")+"&utm_source="+encodeURI(window.location.hostname)+"&utm_medium="+(d.hasCopyright(e.container)?"widget_new":"widget")+(e.type?"&utm_campaign="+e.type:"")+(e.type&&"chart"===e.type?"&utm_term="+encodeURIComponent(e.symbol):"")},image:function(e){this.postMessage.get("imageURL",{},(function(t){var i=d.host+"/x/"+t+"/";e(i)}))},subscribeToQuote:function(e){var t=document.getElementById(this.id);this.postMessage.post(t.contentWindow,"quoteSubscribe"),this.postMessage.on("quoteUpdate",e)},getSymbolInfo:function(e){this.postMessage.get("symbolInfo",{},e)},remove:function(){var e=document.getElementById(this.id);e.parentNode.removeChild(e)},reload:function(){var e=document.getElementById(this.id),t=e.parentNode;t.removeChild(e),t.innerHTML=this.render()}},d.chart.prototype={create:function(){this.isMobile=d.isMobileDevice.any;var e,t=this.render(),i=this;d.chartCssAttached||(d.css(this.renderCss()),d.chartCssAttached=!0),l(t,this.options.container),e=document.getElementById(this.id),d.bindEvent(e,"load",(function(){var e;for(i._ready=!0,e=i._ready_handlers.length;e--;)i._ready_handlers[e].call(i)})),d.onready((function(){var t=!1;if(document.querySelector&&document.querySelector('a[href$="/v/'+i.options.chart+'/"]')&&(t=!0),!t)for(var o=document.getElementsByTagName("a"),n=new RegExp("/v/"+i.options.chart+"/$"),r=new RegExp("/chart/([0-9a-zA-Z:+*-/()]+)/"+i.options.chart),s=0;s'},toggleFullscreen:function(e){var t=document.getElementById(this.id);e?(t.style.position="fixed",t.style.width="100vw",t.style.maxWidth="100%",t.style.height="100vh",t.style.maxHeight="100%",t.style.left="0px",t.style.top="0px",t.style.zIndex="1000000",t.style.backgroundColor="#fff"):(t.style.position="static",this.options.autosize?(t.style.width="100%",t.style.height="100%"):(t.style.width=this.options.width+"px",t.style.height=this.options.height+"px"),t.style.maxWidth="none",t.style.maxHeight="none",t.style.zIndex="auto",t.style.backgroundColor="transparent")},getSymbolInfo:function(e){this.postMessage.get("symbolInfo",{},e)}},d.stream.prototype={create:function(){this.isMobile=d.isMobileDevice.any;var e=this.render();l(e,this.options.container)},render:function(){var e="?"+(this.options.locale?"&locale="+encodeURIComponent(this.options.locale):"");return this.options.type="chart",'
'}},d.showSignIn=function(e,t){d.dependenciesManager.depends(["/static/bundles/spinner.js"],"authWidget",(function(){var i=document.createElement("div"),o=document.createElement("div");i.appendChild(o),(new window.Spinner).setStyle({color:"#00A2E2",opacity:"0"}).spin(o),i.style.cssText="position: fixed;left: 0;top: 0;width: 100%;height: 100%;background: rgba(0, 0, 0, 0.5);z-index: 120;-webkit-transform: translate3d(0, 0, 0);",i.addEventListener("click",(function(){document.body.removeChild(i)})),document.body.appendChild(i);var n=d.gId(),r=d.createUrlParams({id:n,utmSourceOverride:e.utmSourceOverride}),s=d.ideasHost+"/authwidget/?"+r,a="650px",l='',h=document.createElement("div");h.innerHTML=l,h.style.cssText="position: absolute;left: 50%;top: 50%;margin-top: -325px;margin-left: -235px;",i.appendChild(h);var c=document.getElementById(n),p=d.postMessageWrapper(c.contentWindow,n),g=function(e){e.id===n&&(document.body.removeChild(i),e.user&&t(e.user),p.off("close",g))};p.on("close",g,!0),p.on("widgetLoad",(function(){o.style.display="none"}))}))},d.isSignedIn=function(e,t){var i=d.gId(),o=d.createUrlParams({id:i}),n=d.ideasHost+"/isauthwidget/?"+o,r='',s=document.createElement("div");s.innerHTML=r,document.body.appendChild(s);var a=document.getElementById(i),l=d.postMessageWrapper(a.contentWindow,i),h=function(e){e.id===i&&(document.body.removeChild(s),t(e.user),l.off("close",h))};l.on("close",h,!0)},d.onLoginStateChange=function(e,t){var i=d.gId(),o=d.createUrlParams({id:i}),n=d.ideasHost+"/loginstatewidget/?"+o,r='',s=document.createElement("div");s.innerHTML=r,document.body.appendChild(s);var a=document.getElementById(i);d.postMessageWrapper(a.contentWindow,i).on("loginStateChange",(function(e){e.id===i&&t(e.user)}),!0)},d.postMessageWrapper=(i={},o={},n={},r=0,s=0,window.addEventListener&&window.addEventListener("message",(function(e){var n;try{n=JSON.parse(e.data)}catch(r){return}if(n&&n.provider&&"TradingView"===n.provider)if(n.source=e.source,"get"===n.type){if(!o[n.name])return;o[n.name].forEach((function(e){"function"==typeof e&&e.call(n,n.data,(function(e){var i={id:n.id,type:"on",name:n.name,client_id:n.client_id,data:e,provider:"TradingView"};t.postMessage(JSON.stringify(i),"*")}))}))}else if("on"===n.type)i[n.client_id]&&i[n.client_id][n.id]&&(i[n.client_id][n.id].call(n,n.data),delete i[n.client_id][n.id]);else if("post"===n.type){if(!o[n.name])return;o[n.name].forEach((function(e){"function"==typeof e&&e.call(n,n.data,(function(){}))}))}})),function(e,a){return i[a]={},n[a]=e,t=e,{on:function(e,t,i){o[e]&&i||(o[e]=[]),o[e].push(t)},off:function(e,t){if(!o[e])return!1;var i=o[e].indexOf(t);i>-1&&o[e].splice(i,1)},get:function(e,t,o){var s={id:r++,type:"get",name:e,client_id:a,data:t,provider:"TradingView"};i[a][s.id]=o,n[a].postMessage(JSON.stringify(s),"*")},post:function(e,t,i){var o={id:s++,type:"post",name:t,data:i,provider:"TradingView"};e&&"function"==typeof e.postMessage&&e.postMessage(JSON.stringify(o),"*")}}}),d.getUrlParams=function(){for(var e=/\+/g,t=/([^&=]+)=?([^&]*)/g,i=window.location.search.substring(1),o=t.exec(i),n=function(t){return decodeURIComponent(t.replace(e," "))},r={};o;)r[n(o[1])]=n(o[2]),o=t.exec(i);return r},d.createUrlParams=function(e){var t=[];for(var i in e)e.hasOwnProperty(i)&&null!=e[i]&&t.push(encodeURIComponent(i)+"="+encodeURIComponent(e[i]));return t.join("&")};var l=function(e,t){var i=document.getElementById(t);if(i){i.innerHTML=e;var o=i.parentElement&&i.parentElement.querySelector(".tradingview-widget-copyright");o&&(o.style.width=i.querySelector("iframe").style.width)}else document.write(e);document.body.appendChild(d.embedStylesForCopyright())},h=function(e,t){for(var i in t)"object"==typeof t[i]&&e.hasOwnProperty(i)?h(e[i],t[i]):e[i]=t[i];return e};window.TradingView?h(window.TradingView,d):window.TradingView=d}}(); diff --git a/src/assets/js/tvStyle.js b/src/assets/js/tvStyle.js new file mode 100644 index 0000000..0933c45 --- /dev/null +++ b/src/assets/js/tvStyle.js @@ -0,0 +1,33 @@ +let light={ + // "paneProperties.background": "#ffffff", + // "paneProperties.vertGridProperties.color": "#dcdee0", + // "paneProperties.horzGridProperties.color": "#dcdee0", + // "scalesProperties.backgroundColor": "#ffffff", + // "scalesProperties.textColor" : "#333" + + "paneProperties.background": "#222e3d", + "paneProperties.vertGridProperties.color": "#646566", + "paneProperties.horzGridProperties.color": "#646566", + "scalesProperties.backgroundColor": "#222e3d", + "scalesProperties.textColor" : "#7b9ca7", + } + +let dark = { + // "paneProperties.background": "#222e3d", + // "paneProperties.vertGridProperties.color": "#646566", + // "paneProperties.horzGridProperties.color": "#646566", + // "scalesProperties.backgroundColor": "#222e3d", + // "scalesProperties.textColor" : "#7b9ca7" + + "paneProperties.background": "#ffffff", + "paneProperties.vertGridProperties.color": "#dcdee0", + "paneProperties.horzGridProperties.color": "#dcdee0", + "scalesProperties.backgroundColor": "#ffffff", + "scalesProperties.textColor" : "#333" +} + + +export default { + light, + dark +} \ No newline at end of file diff --git a/src/assets/scss/_mixin.scss b/src/assets/scss/_mixin.scss new file mode 100644 index 0000000..5642e3f --- /dev/null +++ b/src/assets/scss/_mixin.scss @@ -0,0 +1,88 @@ +// 版心布局样式 +@mixin major($primary) { + width: $primary; + // 视口控制 + // overflow : $overstep; + // 清除可能的浮动 + // .clear; +} + +//样式函数 - 设置字体 +@mixin fs($size: 13, $un: px) { + // 指定字体大小和单位 例如 fs(10, px) + font-size: $size + $un; +} + +@mixin ff($face) { + font-family: $face; +} + +@mixin font($face, $size, $line-ht : null, $clr: inherit, $weight: normal, $style: normal) { + @include ff($face); + @include fs($size); + + @if $line-ht != null { + line-height: $line-ht + px; + } + + color : $clr; + font-weight: $weight; + font-style : $style; +} + +/* +* 图标文件名 作为字体名称 勿要改动 +*/ +@mixin icon($name, $path) { + + /* 定义图标字体 */ + @font-face { + font-family: $name; + // 使用{}嵌入表达式 替代~拼接的用法 + // src : url('#{$path}/#{$name}.eot?7kkyc2'); + src : url('#{$path}/#{$name}.eot?7kkyc2#iefix') format('embedded-opentype'), + url('#{$path}/#{$name}.ttf?7kkyc2') format('truetype'), + url('#{$path}/#{$name}.woff?7kkyc2') format('woff'), + url('#{$path}/#{$name}.woff2?7kkyc2') format('woff2'), + url('#{$path}/#{$name}.svg?7kkyc2#icomoon') format('svg'); + font-weight: normal; + font-style: normal; + } + +} + +// 键值对形式传入参数 (key:value, key:a) +@mixin face($paths) { + + @each $name, $pathinfo in $paths { + @font-face { + font-family: $name; + src : url("#{$pathinfo}"); + font-style: normal; + font-display: swap; + } + } + +} + +// 默认水平分布 主轴和交叉轴起点对齐 交叉轴不拉伸 +@mixin flexible($direction:row, $distribution:flex-start, $aligns:flex-start, $wrap:nowrap) { + display: flex; + flex-direction: $direction; + justify-content: $distribution; + align-items: $aligns; + flex-wrap: $wrap; +} + +// css3效果兼容设置 +@mixin css3($style, $frames) { + -webkit-#{$style}: $frames; + /* Safari 和 Chrome */ + -moz-#{$style}: $frames; + /* Firefox 4 */ + -ms-#{$style}: $frames; + /* IE */ + -o-#{$style}: $frames; + /* Opera */ + #{$style}: $frames; +} \ No newline at end of file diff --git a/src/assets/scss/_settings.scss b/src/assets/scss/_settings.scss new file mode 100644 index 0000000..c32b22c --- /dev/null +++ b/src/assets/scss/_settings.scss @@ -0,0 +1,56 @@ +// 通用的配置 +$primary : 1420 + px; + +// 正文字号 +$fsize : 13 + px; + +// 图标文件路径 带有/等特殊字符的值 需要使用~转义 +$icon-name : ionicons; +$icon-path : "~@/assets/icon"; + +// 定义中英文字体 键值对的形式 +$overpasses : (Overpass-Regular : "~@/assets/fonts/overpass/Overpass-Regular.woff2", + Overpass-Light : "~@/assets/fonts/overpass/Overpass-Light.woff2", + Overpass-Bold : "~@/assets/fonts/overpass/Overpass-Bold.woff2", + Overpass-SemiBold : "~@/assets/fonts/overpass/Overpass-SemiBold.woff2"); + +$opensans : (OpenSans-Regular : "~@/assets/fonts/opensans/OpenSans-Regular.ttf", + OpenSans-Bold : "~@/assets/fonts/opensans/OpenSans-Bold.ttf"); + +// 默认字体 中英文 +$face : Overpass-Regular, OpenSans-Regular, 'Microsoft YaHei'; + +// 页面底色 +$underpainting : rgba(247,246,251,1); + +// 主体颜色 +$clr : rgba(0,0,0, 0.85); // 字体颜色 +$fontclr : rgba(0,0,0, 0.85); // 别名 + +// 经典浅紫色 +$cls-purple : rgba(115,88,168,1); +$cls-blue : #007bff; + +// 字体主体灰 +$cls-gray: rgba(193,184,213,1); + +// 字体主体黑 +$cls-black: rgba(77,67,93,1); + +$cls-white:rgba(255,255,255,1); + +// exchange & contract +$decreace : #ff231f; // 酒红色 +// $increace: #26de81; // 青绿色 +$increace : #53b987; + +// status +$success : green; +$fail : red; +$pending : yellow; + +// tips +$caution : rgba(255, 86, 146, 1); + +// disabled +$dim : rgba(#333, .5); \ No newline at end of file diff --git a/src/assets/scss/base/_base.scss b/src/assets/scss/base/_base.scss new file mode 100644 index 0000000..26952a7 --- /dev/null +++ b/src/assets/scss/base/_base.scss @@ -0,0 +1,8 @@ +// 导入的第三方库文件 +// @import './import'; +// 页面风格设定 +// @import './typography'; +// 标签初始化样式 +@import './init'; +// 通用样式文件 +@import './common'; \ No newline at end of file diff --git a/src/assets/scss/base/_common.scss b/src/assets/scss/base/_common.scss new file mode 100644 index 0000000..07512f0 --- /dev/null +++ b/src/assets/scss/base/_common.scss @@ -0,0 +1,414 @@ +// 加载图标库 +@include icon($icon-name, $icon-path); + +// 加载远程字体 +@include face($overpasses); +@include face($opensans); + +// 标记上涨或者下跌的文本样式 +.increace { + color: $increace; // ⬆️ +} + +.decreace { + color: $decreace; // ⬇️ +} + +// 三角形图标基础样式 需要配合位置和颜色使用 +.triangle { + width: 0; + height: 0; + display: inline-block; + border: 7px solid transparent; +} + +// 标记上涨或者是下跌的三角形符号 +.tri-inc { + @extend .triangle; + border-top: none; + border-bottom-color: $increace; + opacity: 0.6; // 淡化颜色 +} + +.tri-dec { + @extend .triangle; + border-bottom: none; + border-top-color: $decreace; + opacity: 0.6; // 淡化颜色 +} + +// 导航栏链接下拉的样式 +.tri-down { + @extend .triangle; + border-top: none; + border-bottom-color: #999; +} + +.tri-up { + @extend .triangle; + border-bottom: none; + border-top-color: #666; +} + +/* 一行显示 溢出则隐藏 */ +.ellipsis { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +/* 强制折行 英文会断开 */ +.break-word { + word-break: break-all; + /*支持IE,chrome,FF不支持*/ + word-wrap: break-word; + hyphens: auto; + /*支持IE,chrome,FF*/ + // font-size: 15px; +} + +.mtb15 { + margin: 15px 0; +} + +.mt15 { + margin-top: 15px; +} + +.mb15 { + margin-bottom: 15px; +} + +.ml15 { + margin-left: 15px; +} + +.mr15 { + margin-right: 15px; +} + +.ptb70 { + padding: 70px 0; +} + +.pt70 { + padding-top: 70px; +} + +.pb40 { + padding-bottom: 40px; +} + +.dropdown-toggle::after { + vertical-align: 1px; +} + +.input-group-text, +.form-control { + border-radius: 5px; +} + +.table tbody + tbody { + border: none; +} + +.heading { + // background: #1e2834; + font-size: 14px; + font-weight: 400; + padding: 13px; + margin: 0; + color: #888894; +} + +.green { + color: $increace; +} + +.red { + color: $decreace; +} + +.success { + color: $success; +} + +.fail { + color: $fail; +} + +.pending { + color: $pending; +} +.text-tips { + color: $caution; +} +.blue { + color: $cls-blue !important; +} +.light-purple { + color: $cls-purple; +} +.table td, +.table th { + border-top: 1px solid #4e4e5d; +} + +.input-group-text { + border: 1px solid #e0e3eb; +} + +#darkDepthChart, +#lightDepthChart { + width: 100%; + height: 349px; +} + +.sm-gutters { + padding-left: 7.5px; + padding-right: 7.5px; +} + +.sm-gutters > .col, +.sm-gutters > [class*="col-"] { + padding-right: 7.5px; + padding-left: 7.5px; +} + +.form-control::-webkit-input-placeholder { + /* Chrome/Opera/Safari */ + color: #18214d59; +} + +.form-control::-moz-placeholder { + /* Firefox 19+ */ + color: #18214d59; +} + +.form-control:-ms-input-placeholder { + /* IE 10+ */ + color: #18214d59; +} + +.form-control:-moz-placeholder { + /* Firefox 18- */ + color: #18214d59; +} + +.custom-control-input:focus ~ .custom-control-label::before { + box-shadow: none; +} + +.num { + @include ff(OpenSans-Regular); +} + +.nav-link, +.pointer { + cursor: pointer; +} +// 设置字体大小 +$i: 12; + +@while $i<=30 { + .fn-#{$i} { + // @include fs($i); + font-size: $i + px !important; + } + + $i: $i + 1; +} + +// 设置宽度 +$i: 1; +$basew: 24; +@while $i <=$basew { + .w-#{$i}\/#{$basew} { + width: #{calc($i/$basew) * 100}#{"%"}; + } + .h-#{$i}\/#{$basew} { + height: #{calc($i/$basew) * 100}#{"%"}; + } + $i: $i + 1; +} +// 重写element css样式 +.el-dropdown-menu--medium { + max-height: 500px; + overflow: auto; +} +.el-select, +.el-date-editor.el-input { + width: 100%; +} + +.el-focus { + background-color: #fff; + border-color: #80bdff; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.el-input__inner { + color: #495057; + font-size: 1rem; + border: 1px solid #ced4da; + height: calc(1.5em + 0.75rem + 2px) !important; +} + +.el-range-editor { + &.is-active { + @extend .el-focus; + } +} + +.el-input { + &.el-date-editor { + .el-input__inner:focus { + @extend .el-focus; + } + } + &.is-focus { + .el-input__inner { + @extend .el-focus; + } + } +} +.el-carousel__mask { + background-color: transparent; +} +.el-carousel__item--card:not(.is-active) { + filter: blur(1px); +} +/* ----------------- end ele ------------------ */ + +.btn-primary { + color: $cls-white; + border: none; + // background-image: linear-gradient(to right, #6d9ef9, #1f5df4); + background-color: #326AEB; +} +.btn-success { + color: $cls-white; + border: none; + background-image: linear-gradient(to right, #2fad66, #9de686); +} +.btn-danger { + color: $cls-white; + border: none; + background-image: linear-gradient(to right, #D31027, #EA384D); +} +.btn-info { + color: $cls-white; + border: none; + background-image: linear-gradient(to right, #1FA2FF, #12D8FA,#A6FFCB); +} +.btn-secondary{ + border: none; +} +// 按钮阴影 +.btn-light-shadow { + box-shadow: 0 0 10px 0 #40a2ff; +} +.btn-outline-light { + color: $cls-white; + border-color: #5d5d6e; + color: #5d5d6e; +} +.bg-panel { + background: #e9e9e9; +} +.border-bottom { + border-bottom: 1px solid #4e4e5d !important; +} + +.form-control, +.el-input__inner, +.el-focus, +.el-range-editor.is-active, +.el-input.el-date-editor .el-input__inner:focus, +.el-input.is-focus .el-input__inner { + background-color: white; + color: #172636; + border-color: #4e4e5d; + &:focus { + background-color: white; + color: #172636; + } + &::-webkit-input-placeholder { + color: #6c757d; + } + &:-moz-placeholder { + color: #6c757d; + } + &::-moz-placeholder { + color: #6c757d; + } + &:-ms-input-placeholder { + color: #6c757d; + } +} +.form-control:disabled, +.form-control[readonly] { + background-color: #f7f7f7; + color: #999; +} +.table { + color: #172636; +} + +.nav-tabs, +.modal-header { + border-bottom-color: #4e4e5d; +} +.modal-footer { + border-top-color: #4e4e5d; +} +.el-pagination button:disabled, +.el-dialog, +.el-pager li, +.el-pagination .btn-next, +.el-pagination .btn-prev { + background-color: transparent; +} +.el-pagination, +.el-pagination .btn-next, +.el-pagination .btn-prev, +.el-pager li.btn-quicknext, +.el-pager li.btn-quickprev { + color: #9292ac; +} +// 条纹表格 +.stripe { + tr { + &:nth-of-type(2n) { + background-color: #e9e9e9; + } + &:nth-of-type(2n-1) { + background-color: #e9e9e9; + } + td{ + border-top-color: transparent; + } + + } + tbody{ + tr{ + &:first-of-type{ + td{ + border-top-color:#4e4e5d; + } + } + &:hover{ + background-color: #e9e9e9; + } + } + + } +} + +.theme-color-a{ + color: #326AEB !important; +} +.theme-bg-color-a{ + background-color: #326AEB !important; +} \ No newline at end of file diff --git a/src/assets/scss/base/_init.css b/src/assets/scss/base/_init.css new file mode 100644 index 0000000..03d288d --- /dev/null +++ b/src/assets/scss/base/_init.css @@ -0,0 +1,55 @@ +body { + font-family: "Overpass", sans-serif; + font-size: 14px; + line-height: 1.5; + color: #172636; + background: white; + font-weight: 400; +} + +ul, +ol { + margin: 0; + padding: 0; + list-style: none; +} + +a, a:hover { + text-decoration: none; +} + +img { + max-width: 100%; + height: auto; +} + +thead tr th { + padding: 8px 15px !important; +} + +thead th { + color: #172636; + font-size: 13px; + font-weight: 600; + border: 0 !important; +} + +tbody tr { + color: inherit; +} + +tbody tr:hover { + background: #141e2c; +} + +::-webkit-scrollbar { + background: transparent; + width: 3px; + height: 6px; +} + +::-webkit-scrollbar-thumb { + background: rgba(0, 0, 0, 0.07); + border: solid rgba(88, 88, 88, 0.12) 2px; + border-radius: 5px; +} diff --git a/src/assets/scss/base/_init.min.css b/src/assets/scss/base/_init.min.css new file mode 100644 index 0000000..38972c8 --- /dev/null +++ b/src/assets/scss/base/_init.min.css @@ -0,0 +1 @@ +body{font-family:"Overpass", sans-serif;font-size:14px;line-height:1.5;color:#172636;background:white;font-weight:400}ul,ol{margin:0;padding:0;list-style:none}a,a:hover{text-decoration:none}img{max-width:100%;height:auto}thead tr th{padding:8px 15px !important}thead th{color:#172636;font-size:13px;font-weight:600;border:0 !important}tbody tr{color:inherit}tbody tr:hover{background:#141e2c}::-webkit-scrollbar{background:transparent;width:3px;height:6px}::-webkit-scrollbar-thumb{background:rgba(0,0,0,0.07);border:solid rgba(88,88,88,0.12) 2px;border-radius:5px} diff --git a/src/assets/scss/base/_init.scss b/src/assets/scss/base/_init.scss new file mode 100644 index 0000000..2f19de0 --- /dev/null +++ b/src/assets/scss/base/_init.scss @@ -0,0 +1,56 @@ +// 指定页面风格 +body { + font-family: "Overpass", sans-serif; + font-size: 14px; + line-height: 1.5; + color:#172636; + background: white; + font-weight: 400; +} + +ul, +ol { + margin: 0; + padding: 0; + list-style: none; +} + +a, a:hover { + text-decoration: none; +} + +img { + max-width: 100%; + height: auto; +} + +thead tr th { + padding: 8px 15px !important; +} + +thead th { + color: #172636; + font-size: 13px; + font-weight: 600; + border: 0 !important; +} + +tbody tr { + color: inherit; +} + +tbody tr:hover { + background: #141e2c; +} + +::-webkit-scrollbar { + background: transparent; + width: 3px; + height: 6px; +} + +::-webkit-scrollbar-thumb { + background: rgba(0, 0, 0, 0.07); + border: solid rgba(88, 88, 88, 0.12) 2px; + border-radius: 5px; +} diff --git a/src/assets/scss/base/_typography.scss b/src/assets/scss/base/_typography.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/scss/layout/_header.css b/src/assets/scss/layout/_header.css new file mode 100644 index 0000000..93a449b --- /dev/null +++ b/src/assets/scss/layout/_header.css @@ -0,0 +1,308 @@ +@keyframes pulse { + 0% { + opacity: 1; + width: 7px; + height: 7px; + left: 0; + top: 0; + } + 95% { + opacity: 0.1; + left: -10.5px; + top: -10.5px; + width: 28px; + height: 28px; + } + 100% { + opacity: 0; + width: 7px; + height: 7px; + left: 0; + top: 0; + } +} + +@keyframes slideIn { + 0% { + transform: translateY(1rem); + opacity: 0; + } + 100% { + transform: translateY(0rem); + opacity: 1; + } + 0% { + transform: translateY(1rem); + opacity: 0; + } +} + +#common-header { + background: white !important; + color: #172636; +} + +header nav a { + color: inherit; +} + +header nav a:hover { + color: #c99445; +} + +header .navbar-brand { + padding: 0; +} + +header .navbar-brand img { + height: 45px; +} + +.navbar-expand-lg .navbar-nav .nav-link { + padding-right: 1rem; + padding-left: 1rem; +} + +header nav .nav-item.active a { + color: #c99445; +} + +header .nav-link.btn { + padding: 5px 0; +} + +.circle-pulse { + background: #0089ff; + width: 7px; + height: 7px; + border-radius: 50%; + position: absolute; + right: 12px; + top: 12px; +} + +.circle-pulse:after { + background-color: #0089ff; + content: ""; + display: table; + border-radius: 50%; + position: absolute; + animation-name: pulse; + animation-duration: 0.9s; + animation-iteration-count: infinite; + animation-timing-function: ease-out; +} + +.header-custom-icon .nav-link { + line-height: 0; + margin-top: 6px; +} + +.dropdown-item { + color: #18214d; + font-size: 14px; +} + +.dropdown-item:focus, +.dropdown-item:active { + background-color: #f8f9fa; + color: #16181b; +} + +.header-img-icon .nav-link.dropdown-toggle { + padding-right: 0; +} + +.header-custom-icon a:after, +.header-img-icon a:after { + display: none; +} + +.header-custom-icon .dropdown-menu, +.header-img-icon .dropdown-menu { + padding: 0; + margin-top: 8px; +} + +.dropdown-menu { + max-width: 280px; + position: absolute; + right: 0; + left: auto; + border-radius: 5px; + margin-top: 12px; + border: 1px solid #f2f4f9; + box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 14px -6px; + animation-duration: 0.3s; + animation-fill-mode: both; + animation-name: slideIn; +} + +.dropdown-menu::before { + content: ""; + width: 13px; + height: 13px; + background: #fff; + position: absolute; + top: -8px; + right: 5%; + transform: rotate(45deg); + border-top: 1px solid #f2f4f9; + border-left: 1px solid #f2f4f9; + z-index: -1; +} + +.dropdown-menu p { + color: #18214d; + font-weight: 600; +} + +.dropdown-menu a:hover { + text-decoration: none; +} + +.dropdown-menu a.text-muted:hover { + color: #007bff !important; +} + +.header-img-icon .nav-link img { + width: 30px; +} + +.header-custom-icon i { + font-size: 20px; + color: #758696; +} + +.dropdown-header { + padding: 12px 20px; + font-size: 13px; + border-bottom: 1px solid #f2f4f9; +} + +.dropdown-body { + padding: 5px; + max-height: 290px; + position: relative; + overflow-y: auto; +} + +.dropdown-body .dropdown-item { + display: flex; + align-items: center; + padding: 9px 16px; +} + +.dropdown-body .dropdown-item .content { + margin-left: 15px; + width: 200px; + white-space: normal; +} + +.dropdown-item .icon { + width: 30px; + height: 30px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + background: #f7f7f7; +} + +.dropdown-body .dropdown-item .content p { + margin: 0; + font-size: 13px; + font-weight: 400; +} + +.dropdown-body .dropdown-item .content p.sub-text { + font-size: 12px; +} + +.dropdown-footer { + padding: 10px 20px; + border-top: 1px solid #f2f4f9; + font-size: 14px; +} + +.dropdown-item:nth-child(1) .icon { + background: rgba(114, 124, 245, 0.1); +} + +.dropdown-item:nth-child(1) .icon i { + color: #727cf5; +} + +.dropdown-item:nth-child(2) .icon { + background: rgba(255, 51, 102, 0.1); +} + +.dropdown-item:nth-child(2) .icon i { + color: #ff5680; +} + +.dropdown-item:nth-child(3) .icon { + background: rgba(102, 209, 209, 0.1); +} + +.dropdown-item:nth-child(3) .icon i { + color: #66d1d1; +} + +.dropdown-item:nth-child(4) .icon { + background: rgba(251, 188, 6, 0.1); +} + +.dropdown-item:nth-child(4) .icon i { + color: #fbbc06; +} + +.dropdown-item:nth-child(5) .icon { + background: rgba(16, 183, 89, 0.1); +} + +.dropdown-item:nth-child(5) .icon i { + color: #10b759; +} + +.header-img-icon .dropdown-header { + padding: 0px 20px; +} + +.header-img-icon .profile-nav .nav-item .nav-link { + font-size: 14px; + padding: 5px 20px; +} + +.header-img-icon .profile-nav { + padding-bottom: 11px; +} + +.header-img-icon .profile-nav .nav-item .nav-link:hover { + color: #18214d; + background-color: #f8f9fa; +} + +.header-img-icon .profile-nav .nav-item .nav-link.red { + color: #f74745; +} + +.header-img-icon .profile-nav .nav-item .nav-link.red:hover { + color: #f74745 !important; +} + +.header-img-icon .dropdown-body { + padding: 10px 0 0; +} + +.header-img-icon .dropdown-header .name { + font-size: 16px; +} + +.header-img-icon .dropdown-header { + padding: 20px 20px 0; +} + +.header-img-icon .profile-nav .nav-item .nav-link i { + margin-right: 15px; +} diff --git a/src/assets/scss/layout/_header.min.css b/src/assets/scss/layout/_header.min.css new file mode 100644 index 0000000..fcbfdb7 --- /dev/null +++ b/src/assets/scss/layout/_header.min.css @@ -0,0 +1 @@ +@keyframes pulse{0%{opacity:1;width:7px;height:7px;left:0;top:0}95%{opacity:0.1;left:-10.5px;top:-10.5px;width:28px;height:28px}100%{opacity:0;width:7px;height:7px;left:0;top:0}}@keyframes slideIn{0%{transform:translateY(1rem);opacity:0}100%{transform:translateY(0rem);opacity:1}0%{transform:translateY(1rem);opacity:0}}#common-header{background:white !important;color:#172636}header nav a{color:inherit}header nav a:hover{color:#c99445}header .navbar-brand{padding:0}header .navbar-brand img{height:45px}.navbar-expand-lg .navbar-nav .nav-link{padding-right:1rem;padding-left:1rem}header nav .nav-item.active a{color:#c99445}header .nav-link.btn{padding:5px 0}.circle-pulse{background:#0089ff;width:7px;height:7px;border-radius:50%;position:absolute;right:12px;top:12px}.circle-pulse:after{background-color:#0089ff;content:"";display:table;border-radius:50%;position:absolute;animation-name:pulse;animation-duration:0.9s;animation-iteration-count:infinite;animation-timing-function:ease-out}.header-custom-icon .nav-link{line-height:0;margin-top:6px}.dropdown-item{color:#18214d;font-size:14px}.dropdown-item:focus,.dropdown-item:active{background-color:#f8f9fa;color:#16181b}.header-img-icon .nav-link.dropdown-toggle{padding-right:0}.header-custom-icon a:after,.header-img-icon a:after{display:none}.header-custom-icon .dropdown-menu,.header-img-icon .dropdown-menu{padding:0;margin-top:8px}.dropdown-menu{max-width:280px;position:absolute;right:0;left:auto;border-radius:5px;margin-top:12px;border:1px solid #f2f4f9;box-shadow:rgba(0,0,0,0.2) 0px 2px 14px -6px;animation-duration:0.3s;animation-fill-mode:both;animation-name:slideIn}.dropdown-menu::before{content:"";width:13px;height:13px;background:#fff;position:absolute;top:-8px;right:5%;transform:rotate(45deg);border-top:1px solid #f2f4f9;border-left:1px solid #f2f4f9;z-index:-1}.dropdown-menu p{color:#18214d;font-weight:600}.dropdown-menu a:hover{text-decoration:none}.dropdown-menu a.text-muted:hover{color:#007bff !important}.header-img-icon .nav-link img{width:30px}.header-custom-icon i{font-size:20px;color:#758696}.dropdown-header{padding:12px 20px;font-size:13px;border-bottom:1px solid #f2f4f9}.dropdown-body{padding:5px;max-height:290px;position:relative;overflow-y:auto}.dropdown-body .dropdown-item{display:flex;align-items:center;padding:9px 16px}.dropdown-body .dropdown-item .content{margin-left:15px;width:200px;white-space:normal}.dropdown-item .icon{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#f7f7f7}.dropdown-body .dropdown-item .content p{margin:0;font-size:13px;font-weight:400}.dropdown-body .dropdown-item .content p.sub-text{font-size:12px}.dropdown-footer{padding:10px 20px;border-top:1px solid #f2f4f9;font-size:14px}.dropdown-item:nth-child(1) .icon{background:rgba(114,124,245,0.1)}.dropdown-item:nth-child(1) .icon i{color:#727cf5}.dropdown-item:nth-child(2) .icon{background:rgba(255,51,102,0.1)}.dropdown-item:nth-child(2) .icon i{color:#ff5680}.dropdown-item:nth-child(3) .icon{background:rgba(102,209,209,0.1)}.dropdown-item:nth-child(3) .icon i{color:#66d1d1}.dropdown-item:nth-child(4) .icon{background:rgba(251,188,6,0.1)}.dropdown-item:nth-child(4) .icon i{color:#fbbc06}.dropdown-item:nth-child(5) .icon{background:rgba(16,183,89,0.1)}.dropdown-item:nth-child(5) .icon i{color:#10b759}.header-img-icon .dropdown-header{padding:0px 20px}.header-img-icon .profile-nav .nav-item .nav-link{font-size:14px;padding:5px 20px}.header-img-icon .profile-nav{padding-bottom:11px}.header-img-icon .profile-nav .nav-item .nav-link:hover{color:#18214d;background-color:#f8f9fa}.header-img-icon .profile-nav .nav-item .nav-link.red{color:#f74745}.header-img-icon .profile-nav .nav-item .nav-link.red:hover{color:#f74745 !important}.header-img-icon .dropdown-body{padding:10px 0 0}.header-img-icon .dropdown-header .name{font-size:16px}.header-img-icon .dropdown-header{padding:20px 20px 0}.header-img-icon .profile-nav .nav-item .nav-link i{margin-right:15px} diff --git a/src/assets/scss/layout/_header.scss b/src/assets/scss/layout/_header.scss new file mode 100644 index 0000000..b569c52 --- /dev/null +++ b/src/assets/scss/layout/_header.scss @@ -0,0 +1,263 @@ +@keyframes pulse { + 0% { + opacity: 1; + width: 7px; + height: 7px; + left: 0; + top: 0; + } + 95% { + opacity: 0.1; + left: -10.5px; + top: -10.5px; + width: 28px; + height: 28px; + } + 100% { + opacity: 0; + width: 7px; + height: 7px; + left: 0; + top: 0; + } +} + +@keyframes slideIn { + 0% { + transform: translateY(1rem); + opacity: 0; + } + 100% { + transform: translateY(0rem); + opacity: 1; + } + 0% { + transform: translateY(1rem); + opacity: 0; + } +} +#common-header{ +// background: #172636; + background: white !important; + // color: white; + color:#172636; +} +header nav a { + + color: inherit; +} +header nav a:hover { + color: #326AEB; +} +header .navbar-brand { + padding: 0; +} +header .navbar-brand img { + height: 45px; +} +.navbar-expand-lg .navbar-nav .nav-link { + padding-right: 1rem; + padding-left: 1rem; +} +header nav .nav-item.active a { + color: #c99445; +} +header .nav-link.btn { + padding: 5px 0; +} +.circle-pulse { + background: #0089ff; + width: 7px; + height: 7px; + border-radius: 50%; + position: absolute; + right: 12px; + top: 12px; +} + +.circle-pulse:after { + background-color: #0089ff; + content: ""; + display: table; + border-radius: 50%; + position: absolute; + animation-name: pulse; + animation-duration: 0.9s; + animation-iteration-count: infinite; + animation-timing-function: ease-out; +} +.header-custom-icon .nav-link { + line-height: 0; + margin-top: 6px; +} +.dropdown-item { + color: #18214d; + font-size: 14px; +} +.dropdown-item:focus, +.dropdown-item:active { + background-color: #f8f9fa; + color: #16181b; +} +.header-img-icon .nav-link.dropdown-toggle { + padding-right: 0; +} +.header-custom-icon a:after, +.header-img-icon a:after { + display: none; +} +.header-custom-icon .dropdown-menu, +.header-img-icon .dropdown-menu { + padding: 0; + margin-top: 8px; +} +.dropdown-menu { + max-width: 280px; + position: absolute; + right: 0; + left: auto; + border-radius: 5px; + margin-top: 12px; + border: 1px solid #f2f4f9; + box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 14px -6px; + animation-duration: 0.3s; + animation-fill-mode: both; + animation-name: slideIn; +} +.dropdown-menu::before { + content: ""; + width: 13px; + height: 13px; + background: #fff; + position: absolute; + top: -8px; + right: 5%; + transform: rotate(45deg); + border-top: 1px solid #f2f4f9; + border-left: 1px solid #f2f4f9; + z-index: -1; +} +.dropdown-menu p { + color: #18214d; + font-weight: 600; +} +.dropdown-menu a:hover { + text-decoration: none; +} +.dropdown-menu a.text-muted:hover { + color: #007bff !important; +} +.header-img-icon .nav-link img { + width: 30px; +} +.header-custom-icon i { + font-size: 20px; + color: #758696; +} +.dropdown-header { + padding: 12px 20px; + font-size: 13px; + border-bottom: 1px solid #f2f4f9; +} +.dropdown-body { + padding: 5px; + max-height: 290px; + position: relative; + overflow-y: auto; +} +.dropdown-body .dropdown-item { + display: flex; + align-items: center; + padding: 9px 16px; +} +.dropdown-body .dropdown-item .content { + margin-left: 15px; + width: 200px; + white-space: normal; +} +.dropdown-item .icon { + width: 30px; + height: 30px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + background: #f7f7f7; +} +.dropdown-body .dropdown-item .content p { + margin: 0; + font-size: 13px; + font-weight: 400; +} +.dropdown-body .dropdown-item .content p.sub-text { + font-size: 12px; +} +.dropdown-footer { + padding: 10px 20px; + border-top: 1px solid #f2f4f9; + font-size: 14px; +} + +.dropdown-item:nth-child(1) .icon { + background: rgba(114, 124, 245, 0.1); +} +.dropdown-item:nth-child(1) .icon i { + color: #727cf5; +} +.dropdown-item:nth-child(2) .icon { + background: rgba(255, 51, 102, 0.1); +} +.dropdown-item:nth-child(2) .icon i { + color: #ff5680; +} +.dropdown-item:nth-child(3) .icon { + background: rgba(102, 209, 209, 0.1); +} +.dropdown-item:nth-child(3) .icon i { + color: #66d1d1; +} +.dropdown-item:nth-child(4) .icon { + background: rgba(251, 188, 6, 0.1); +} +.dropdown-item:nth-child(4) .icon i { + color: #fbbc06; +} +.dropdown-item:nth-child(5) .icon { + background: rgba(16, 183, 89, 0.1); +} +.dropdown-item:nth-child(5) .icon i { + color: #10b759; +} + +.header-img-icon .dropdown-header { + padding: 0px 20px; +} +.header-img-icon .profile-nav .nav-item .nav-link { + font-size: 14px; + padding: 5px 20px; +} +.header-img-icon .profile-nav { + padding-bottom: 11px; +} +.header-img-icon .profile-nav .nav-item .nav-link:hover { + color: #18214d; + background-color: #f8f9fa; +} +.header-img-icon .profile-nav .nav-item .nav-link.red { + color: #f74745; +} +.header-img-icon .profile-nav .nav-item .nav-link.red:hover { + color: #f74745 !important; +} +.header-img-icon .dropdown-body { + padding: 10px 0 0; +} +.header-img-icon .dropdown-header .name { + font-size: 16px; +} +.header-img-icon .dropdown-header { + padding: 20px 20px 0; +} +.header-img-icon .profile-nav .nav-item .nav-link i { + margin-right: 15px; +} diff --git a/src/assets/scss/layout/_layout.scss b/src/assets/scss/layout/_layout.scss new file mode 100644 index 0000000..e7eceda --- /dev/null +++ b/src/assets/scss/layout/_layout.scss @@ -0,0 +1 @@ +@import './header'; \ No newline at end of file diff --git a/src/assets/scss/module/_contact-us.css b/src/assets/scss/module/_contact-us.css new file mode 100644 index 0000000..026d938 --- /dev/null +++ b/src/assets/scss/module/_contact-us.css @@ -0,0 +1,5 @@ +.contact-us-page .form-content { + background: #cfd6df url("~@/assets/img/concat_us.png"); + background-size: cover; + max-width: 700px; +} diff --git a/src/assets/scss/module/_contact-us.min.css b/src/assets/scss/module/_contact-us.min.css new file mode 100644 index 0000000..8cd73c2 --- /dev/null +++ b/src/assets/scss/module/_contact-us.min.css @@ -0,0 +1 @@ +.contact-us-page .form-content{background:#cfd6df url("~@/assets/img/concat_us.png");background-size:cover;max-width:700px} diff --git a/src/assets/scss/module/_contact-us.scss b/src/assets/scss/module/_contact-us.scss new file mode 100644 index 0000000..c0aba85 --- /dev/null +++ b/src/assets/scss/module/_contact-us.scss @@ -0,0 +1,12 @@ +.contact-us-page{ + + .light-purple{ + } + .form-content{ + background:#cfd6df url('~@/assets/img/concat_us.png'); + background-size: cover; + max-width: 700px; + } + + +} diff --git a/src/assets/scss/module/_contract.scss b/src/assets/scss/module/_contract.scss new file mode 100644 index 0000000..67a30fa --- /dev/null +++ b/src/assets/scss/module/_contract.scss @@ -0,0 +1,263 @@ +.contract-page { + background: #e0e3eb; + .bg-plain { + background: $cls-white; + } + .page-top { + padding-top: 1px; + + .kline-box { + background: $cls-white; + + .coin-change { + height: 50px; + + .icon { + height: 24px; + } + } + } + + .left{ + // width: 250px; + // padding: 0 5px!important; + tr{ + th{ + padding: 0!important; + } + td{ + padding: 0!important; + padding:5px 0!important; + font-size: 12px; + } + } + } + .handicapRight{ + width: 250px!important; + // display: flex; + // flex-wrap: wrap; + .w-100{ + width: 100%; + } + } + .handicap { + // width: 200px; + width: 250px; + .handicap-body { + .item { + position: relative; + .pgs { + position: absolute; + right: 0; + height: 100%; + top: 0; + } + } + .sell, + .buy { + // height: 310px; + height: 190px; + overflow: auto; + } + .deal { + height: 148px; + overflow: auto; + } + .sell { + .pgs { + background: rgba(216, 43, 43, 0.15); + } + } + .buy { + .pgs { + background: rgba(37, 188, 103, 0.15); + } + } + } + } + .exchange-store { + // width: 320px; + .list { + .item:hover { + background: #f5f7fa; + } + } + } + .bill-list { + background: $cls-white; + + .list { + height: 565px; + overflow: auto; + } + } + } + + .page-bottom { + min-height: 200px; + } + .account { + width: 250px; + } +} + +.dark-app { + $header: #2b2839; + // $page-bg: #141e2c; + $page-bg: #e9e9e9; + $head: #1e2834; + $panel:#222e3d; + $panel-1: #455c71; + $border: #2a2e39; + // $color: #c0c4cc; + $color: #172636; + + background: $page-bg; + color: $color; + .contract-page { + background: $page-bg; + } + #common-header { + background: $header; + border-bottom-color: $page-bg; + } + + .markets-pair-list .nav { + background: $head; + } + + .heading { + background: $head; + color: $color; + } + + .bg-light, + .bg-plain { + background-color: $head !important; + } + .border-right { + border-right-color: $border !important; + } + .form-control { + background-color: transparent; + border-color: #6c757d; + color: $color; + } + + header nav a { + color: $color; + } + + header nav a:hover { + color: #007bff; + } + + .tab-content { + background: $panel; + } + + .table { + td, + th { + border-top-color: $border; + } + + tr:hover { + background: $page-bg; + } + } + tbody tr { + color: $color; + } + .nav-link { + color: $color; + } + .theme-switch .theme-switch-button .left, + .theme-switch .theme-switch-button .right { + color: $color; + } + .border { + border-color: $border !important; + } + .el-collapse-item__wrap { + background: $panel-1; + border-color: $border; + } + + .el-popper[x-placement^="bottom"] .popper__arrow::after { + border-bottom-color: $panel-1; + } + .el-collapse-item__content { + color: $color; + } + .el-popover, + .el-collapse-item__header, + .el-dropdown-menu { + background: $panel-1; + color: $color; + border-color: $border; + } + .el-dropdown-menu__item { + color: $color; + } + .el-select-dropdown__item { + color: $color; + } + .el-pagination button:disabled, + .el-dialog, + .el-pager li { + background: transparent; + } + .el-button { + background: $page-bg; + border-color: $border; + } +} +.light-app { + background-color: #fff; + color: #333; + #common-header { + background: #fff; + color: #18214d; + border-bottom:1px solid #f0f3fa; + } + .markets-pair-list .nav-link.active { + color: #c99445; + &::after { + background-color: #c99445; + } + } + .heading { + background-color: #f5f9fc; + } + .form-control, + .el-input__inner, + .el-focus, + .el-range-editor.is-active, + .el-input.el-date-editor .el-input__inner:focus, + .el-input.is-focus .el-input__inner, + .el-range-editor.is-active, + .el-input.el-date-editor .el-input__inner:focus, + .el-input.is-focus .el-input__inner { + background-color: transparent; + color: #333; + } + .table{ + color: #797979; + td{ + border-top-color:#f0f3fa; + } + } + tbody tr:hover{ + background-color: #f6f8f9; + } + .border-bottom{ + border-bottom-color:#f0f3fa !important; + } + .border-top{ + border-top-color:#f0f3fa !important; + } +} +.fn-center{ + text-align: center; +} diff --git a/src/assets/scss/module/_course.scss b/src/assets/scss/module/_course.scss new file mode 100644 index 0000000..4300ddb --- /dev/null +++ b/src/assets/scss/module/_course.scss @@ -0,0 +1,106 @@ +.course-page { + background: #141e2c; + color: white; + .banner { + background: linear-gradient(left, #0e1736, #080e26); + color: #5e6da1; + + .left { + .list { + .num { + font-style: 18px; + font-weight: bold; + background: linear-gradient(left, #3962d8, #080e26); + border-radius: 2px; + padding: 0 4px; + margin-top: 4px; + margin-right: 4px; + transform: skewX(-8deg); + } + + .label { + padding: 4px 0 4px 2px; + color: #a9b4db; + } + } + } + + .right { + .video { + width: 100%; + height: 400px; + background: #fff; + } + } + + .banner-tab { + $borderColor: rgba(94, 109, 161, .1); + border-top: 1px solid $borderColor; + + .item { + padding: 18px; + border-left: 1px solid $borderColor; + cursor: pointer; + + .icon { + .default { + display: block; + } + + .iconshow { + display: none; + } + } + + &:last-of-type { + border-right: 1px solid $borderColor; + } + + &.active, + &:hover { + color: #fff; + background-color: rgba(255, 255, 255, .1); + + .icon { + .iconshow { + display: block; + } + + .default { + display: none; + } + } + } + + } + } + } + + .course-list { + .item { + cursor: pointer; + + .banner { + width: 260px; + height: 150px; + overflow: hidden; + + img { + width: 100%; + height: 100%; + object-fit: cover; + transition: all .4s; + } + } + + &:hover { + .banner { + img { + transform: scale(1.1); + + } + } + } + } + } +} \ No newline at end of file diff --git a/src/assets/scss/module/_error.scss b/src/assets/scss/module/_error.scss new file mode 100644 index 0000000..0a12be3 --- /dev/null +++ b/src/assets/scss/module/_error.scss @@ -0,0 +1,29 @@ +.error-page h2 { + font-size: 250px; + font-weight: 700; + margin-bottom: 0; + line-height: 1; +} + +.error-page p { + font-size: 16px; + margin-bottom: 40px; +} + +.error-page a { + border: 1px solid #e0e3eb; + display: inline-block; + padding: 11px 30px 8px; + color: #4a4a4a; + transition: .3s; +} + +.error-page a:hover { + background: #007bff; + color: #fff; + border: 1px solid #007bff; +} + +.error-page a i { + margin-left: 10px; +} \ No newline at end of file diff --git a/src/assets/scss/module/_exchange.scss b/src/assets/scss/module/_exchange.scss new file mode 100644 index 0000000..e3bc709 --- /dev/null +++ b/src/assets/scss/module/_exchange.scss @@ -0,0 +1,67 @@ +.dark-app { + $header: #2b2839; + $page-bg: #141e2c; + $head: #1e2834; + $panel:#222e3d; + $panel-1: #455c71; + $border: #2a2e39; + $color: #c0c4cc; + + background: $page-bg; + .market-pairs,.order-book,.market-history,.market-news,.market-order{ + border-color: $border; + } + .exchange-history .nav,.market-history .nav{ + background: $head; + } + .market-trade .nav .nav-item .nav-link.active{ + background-color: transparent; + } + .market-trade .input-group-text{ + background-color:$page-bg ; + } + .input-group-text{ + border-color: #6c757d; + } + .market-trade-list li a{ + background-color:$page-bg ; + } + .market-trade-sell{ + border-color: $border; + } + .market-pairs .nav,.highlight,.market-trade .nav{ + background: $head; + } + .order-book thead tr{ + border-color: $border; + } + .ob-heading tr{ + border-top-color: $border !important; + border-bottom-color: $border !important; + } + .order-item:nth-child(odd) .progress .el-progress-bar__outer{ + background: $panel; + } + .order-item:nth-child(even ) .progress .el-progress-bar__outer{ + background: $head; + } + .market-trade p,.market-trade-list li a,.market-news li a,.market-news li strong{ + color: $color; + } + .market-news li{ + border-color: $border; + } + .market-news li:hover{ + background-color: $panel; + } + } + .light-app{ + .form-control{ + background-color: transparent !important; + color: #333 !important; + border-color: #e0e3eb !important; + } + .table{ + color: #797979 !important; + } + } \ No newline at end of file diff --git a/src/assets/scss/module/_form-access.scss b/src/assets/scss/module/_form-access.scss new file mode 100644 index 0000000..e87a293 --- /dev/null +++ b/src/assets/scss/module/_form-access.scss @@ -0,0 +1,53 @@ +.form-access form { + box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 14px -6px; + border-radius: 5px; + padding: 30px; + min-width: 350px; +} +.form-access .form-group input { + height: 45px !important; + font-size: 14px; + box-sizing: border-box; +} +.form-access .form-group input:focus { + box-shadow: none; +} +.form-access a:hover { + text-decoration: none; +} +// .form-access span { +// text-align: center; +// display: block; +// font-size: 22px; +// margin-bottom: 15px; +// margin-top: -5px; +// font-weight: 600; +// } +.form-access .text-right { + margin-top: -5px; + font-weight: 600; +} + +.form-access button { + width: 100%; + padding: 12px; + font-weight: 600; + margin-top: 20px; +} + +.form-access .custom-control-label::before, +.form-access .custom-control-label::after { + top: 2px; +} +.form-access .custom-control-label::before { + border: #cbd2df solid 1px; +} + +.form-access h2 { + font-size: 14px; + text-align: center; + margin-top: 20px; +} +.form-access h2 a { + font-weight: 600; +} diff --git a/src/assets/scss/module/_home.css b/src/assets/scss/module/_home.css new file mode 100644 index 0000000..201f434 --- /dev/null +++ b/src/assets/scss/module/_home.css @@ -0,0 +1,4043 @@ +/* This css file is to override bootstarp4 css +********************************************************* / +* Theme Name: Ex-Coin +* Theme URI: http://themeforest.ne/user/uigigs +* Author: uigigs +* Author URI: http://uigigs.com +* Description: Ex-coin html5 template +* Version: 1.0.0 +* License: GNU General Public License v2 or later +* License URI: http://www.gnu.org/licenses/gpl-2.0.html +* Tags: template,site template, html5, template +*********************************************************** / + +/* +|---------------------------------------------------------------------------- +| CSS INDEX +|---------------------------------------------------------------------------- + +1. General Style +2. Navbar Style +3. Coin List Style +4. Activity Style +5. Wallets Style +6. Banner Style +7. Live-graph Style +8. Catagori Style +9. Common Component Style +10. Currency Dashboard Style +11. Tranding Info Style +12. Working-process Style +13. Post Style +14 Blog Details Style +15. Support Details Style +16. FAQ Style +17. Footer Style + +*/ +/* + * Mixin printing a linear-gradient + * as well as a plain color fallback + * and the `-webkit-` prefixed declaration + * @access public + * @param {Keyword | Angle} $direction - Linear gradient direction + * @param {Arglist} $color-stops - List of color-stops composing the gradient + * + * @see https://www.sitepoint.com/building-linear-gradient-mixin-sass/ + */ +/* +|---------------------------------------------------------------------------- +| 1. General Style +|---------------------------------------------------------------------------- +*/ +h1 { + font-size: 42px; +} + +h2 { + font-size: 50px; +} + +h3 { + font-size: 30px; +} + +h4 { + font-size: 18px; +} + +h5 { + font-size: 15px; +} + +h6 { + font-size: 12px; +} + +img { + -o-object-fit: cover; + object-fit: cover; + display: inline-block; +} + +.img-responsive { + max-width: 100%; + height: auto; + display: block; +} + +a { + color: inherit; + text-decoration: none; + display: inline-block; + -webkit-transition: 0.4s ease-in; + -o-transition: 0.4s ease-in; + transition: 0.4s ease-in; + color: #797979; +} + +a:hover, +a:focus { + text-decoration: none; + color: white; + outline: 0; +} + +.faceboox { + background: #3b5998; +} + +.twitter { + background: #1da1f2; +} + +.google-plus { + background: #dd4b39; +} + +.linkdin { + background: #0077b5; +} + +.pinterest { + background: #bd081c; +} + +.instagram { + background: #5851db; +} + +button { + font-family: "Quicksand", sans-serif; +} + +iframe { + border: 0; +} + +.overlay { + position: absolute; + left: 0; + top: 0; + height: 100%; + width: 100%; + background: rgba(17, 17, 17, 0.7); +} + +.panel-heading-block { + padding: 10px 0 10px 15px; + background: #fff; + border-bottom: 1px solid #f0f0f0; +} + +.panel-heading-block h5 { + font-size: 14px; + color: #1c2437; + margin: 0; +} + +/*** Form and inputs ***/ +input:not([type=submit]):not([type=radio]):not([type=checkbox]):focus, +select:focus, +textarea:focus { + outline: none; +} + +.buy-btn { + height: 40px; + width: 100%; + font-size: 13px; + font-weight: 600; + color: #fff; + background: #00c162; + -webkit-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} + +.buy-btn:focus, +.buy-btn:active { + -webkit-box-shadow: none; + box-shadow: none; +} + +.sell-btn { + height: 40px; + width: 100%; + font-size: 13px; + font-weight: 600; + color: #fff; + background: #dd1900; + -webkit-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} + +.sell-btn:focus, +.sell-btn:active { + -webkit-box-shadow: none; + box-shadow: none; +} + +.section-padding { + padding: 100px 0; +} + +.section-padding-top { + padding-top: 100px; +} + +.section-padding-bottom { + padding-bottom: 100px; +} + +.section-padding-50 { + padding: 50px 0; +} + +.section-padding-50-top { + padding-top: 50px; +} + +.section-padding-80-top { + padding-top: 80px; +} + +.section-padding-80-bottom { + padding-bottom: 80px; +} + +.margin-balance { + margin-bottom: -30px; + zoom: 1; + position: relative; + overflow: hidden; +} + +.white-bg { + background: #fff; +} + +.dark-blue-bg { + background: #0b132d; +} + +.base-color { + color: #1652f0; +} + +.section-title-one { + text-align: center; + margin-bottom: 75px; +} + +.section-title-one h3 { + font-weight: 700; + font-size: 36px; + color: #0b132d; + margin-bottom: 33px; +} + +.section-title-one p { + line-height: 24px; + margin-bottom: 0; +} + +.setion-title-two { + text-align: center; + position: relative; + margin-bottom: 40px; +} + +.setion-title-two:before { + content: ''; + position: absolute; + top: 9px; + left: 0; + height: 1px; + width: 100%; + z-index: 2; + background: #e8e9eb; +} + +.setion-title-two h5 { + font-size: 16px; + font-weight: 700; + margin-bottom: 0; + position: relative; + z-index: 99; + max-width: 170px; + margin: 0 auto; + background: #fcfdff; + color: #5f5f5f; + text-transform: uppercase; +} + +.section-title-three { + margin-bottom: 55px; + text-align: center; +} + +.section-title-three h3 { + font-size: 36px; + font-weight: 700; + color: #0b132d; +} + +/* +|---------------------------------------------------------------------------- +| 3. Coin List Style +|---------------------------------------------------------------------------- +*/ +.new-ticker-block-section { + padding: 60px 0 60px 0; + background: #FFFFFF; +} + +.new-ticker-block-section .coin-list th, +.new-ticker-block-section .coin-list tr { + font-size: 14px; +} + +.new-ticker-block .search-form .input-box input[type='text'] { + border-color: transparent; +} + +.ex-color-buy, +.color-buy { + color: #00c162; +} + +.ex-color-sell, +.color-sell { + color: #dd1900; +} + +.color-buy, +.color-sell { + position: relative; + cursor: pointer; +} + +.ticker-nav { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + border-bottom: none; +} + +.ticker-nav .nav-item-last { + -webkit-box-flex: 6; + -ms-flex-positive: 6; + flex-grow: 6; +} + +.ticker-nav .nav-item { + min-width: 100px; + text-align: center; +} + +.ticker-nav .nav-item a { + font-weight: 600; + margin: 0; + padding: 16px 30px; + -webkit-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; + border-color: transparent; +} + +.ticker-nav .nav-item a:focus, +.ticker-nav .nav-item a:active, +.ticker-nav .nav-item a:hover { + border-color: transparent; +} + +.ticker-nav .nav-item a.active { + background: transparent; + color: white; + position: relative; +} + +.ticker-nav .nav-item a.active::after { + content: ''; + display: block; + position: absolute; + bottom: 3px; + left: 50%; + margin-left: -3px; +} + +.ticker-nav .nav-item a.active h5 { + color: #1652f0; +} + +.ticker-nav .nav-item-last { + -webkit-box-flex: 6; + -ms-flex-positive: 6; + flex-grow: 6; +} + +.search-form .input-box { + position: relative; +} + +.search-form .input-box button { + position: absolute; + top: 0; + right: 0; + background: transparent; + width: 50px; + height: 55px; + border: none; + cursor: pointer; +} + +.search-form .input-box button:focus, +.search-form .input-box button:active { + outline: 0; + -webkit-box-shadow: none; + box-shadow: none; +} + +.search-form .input-box input[type='text'] { + height: 56px; + border: none; + border-bottom: 1px solid #b5d6ff; + -webkit-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; +} + +.search-form .input-box input[type='text']:focus, +.search-form .input-box input[type='text']:active { + outline: 0; + -webkit-box-shadow: none; + box-shadow: none; +} + +.coin-list { + margin-bottom: 0; + border-bottom: none; +} + +.coin-list .active { + color: #c99445; +} + +.coin-list thead th { + border: none; + font-size: 13px; + font-family: "Quicksand", sans-serif; + color: #a2a2a2; + font-weight: 300; +} + +.coin-list tbody tr { + background: #fefff2; + transition: all .3s; +} + +.coin-list tbody tr:nth-of-type(2n) { + background: #fefff2; +} + +.coin-list tbody tr:hover { + background: #fefff2; + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; + transform: scale(1.05); +} + +.coin-list tbody tr:hover:nth-of-type(2n) { + background: #fefff2; +} + +.coin-list tbody tr td { + border-top: none; + color: #9292AC; + padding: 18px 15px; +} + +.coin-list tbody tr td b { + color: #a2a2a2; +} + +.favorite-coin { + padding: 0 20px; + position: relative; + cursor: pointer; +} + +.favorite-coin:before { + content: "\f005"; + font-weight: 300; + font-family: Font Awesome\ 5 Free; +} + +.favorite-coin.active:before { + content: "\f005"; + font-weight: 900; + color: #ff7700; +} + +/* +|---------------------------------------------------------------------------- +| 4. Activity Style +|---------------------------------------------------------------------------- +*/ +.activity-section { + padding: 120px 0 90px 0; +} + +.activity-block { + margin-bottom: 30px; + padding: 40px 30px; + background: #fff; + -webkit-box-shadow: 0px 20px 45px 0px rgba(0, 0, 0, 0.05); + box-shadow: 0px 20px 45px 0px rgba(0, 0, 0, 0.05); +} + +.activity-block img { + margin-bottom: 25px; +} + +.activity-block h4 { + font-weight: 700; + margin-bottom: 20px; + color: #0b132d; +} + +.activity-block p { + margin-bottom: 0; +} + +/* +|---------------------------------------------------------------------------- +| 5. Wallets Style +|---------------------------------------------------------------------------- +*/ +.wallets-section { + padding-bottom: 120px; +} + +.wallets-block { + text-align: center; +} + +.wallets-block > img { + display: inline; + margin-bottom: 35px; +} + +.wallets-block > img + h5 { + margin-bottom: 8px; +} + +.wallets-block h5 { + line-height: 20px; + font-weight: 600; +} + +.wallets-block .base-color { + margin-bottom: 45px; +} + +.download-option-block { + margin-bottom: 50px; +} + +.download-wrap-inner { + display: block; +} + +.download-wrap-inner { + margin-bottom: 20px; +} + +.download-wrap-inner + h4 { + font-weight: 700; + font-size: 15px; +} + +.download-wrap { + position: relative; + display: inline-block; + margin-right: 50px; +} + +.download-wrap:last-of-type { + margin-right: 0px; +} + +.download-wrap .input-hidden { + position: absolute; + left: -9999px; +} + +.download-wrap input[type=radio] + label > i.fab { + height: 70px; + width: 70px; + color: #0b132d; + border: 1px solid #e8e9eb; + border-radius: 50%; + text-align: center; + line-height: 65px; + font-size: 28px; + cursor: pointer; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; +} + +.download-wrap input[type=radio]:checked + label > i.fab { + background: #1652f0; + color: #fff; +} + +.download-btn { + width: 200px; + height: 60px; + font-weight: 500; + background: #1652f0; + color: #fff; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.download-btn:active, +.download-btn:focus, +.download-btnfocus:active { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +/* +|---------------------------------------------------------------------------- +| 6. Banner Style +|---------------------------------------------------------------------------- +*/ +.banner-block { + padding: 1px 0 1px 0; + position: relative; + height: 492px; + box-sizing: border-box; +} + +.banner-block img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.banner-content { + text-align: center; + margin-bottom: 100px; +} + +.banner-content h2 { + font-weight: 700; + color: #fff; + margin-bottom: 30px; +} + +.banner-content p { + color: #fff; + font-size: 17px; + line-height: 28px; + margin-bottom: 57px; +} + +.banner-content .subs-form .input-box { + max-width: 570px; + position: relative; + margin: 0 auto; +} + +.banner-content .subs-form input { + border: none; + height: 55px; + padding: 0 175px 0 25px; + background: #fff; +} + +.banner-content .subs-form input:focus { + outline: 0; + -webkit-box-shadow: none; + box-shadow: none; +} + +.banner-content .subs-form button { + position: absolute; + right: 0; + top: 0; + min-width: 170px; + height: 55px; + background: #1652f0; + color: #fff; + border: none; + outline: 0; + -webkit-box-shadow: none; + box-shadow: none; + font-weight: 700; + cursor: pointer; + border-radius: 0 3px 3px 0; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + -ms-border-radius: 0 3px 3px 0; + -o-border-radius: 0 3px 3px 0; +} + +.banner-content .subs-form button:active, +.banner-content .subs-form button:focus { + border: none; + outline: 0; + -webkit-box-shadow: none; + box-shadow: none; +} + +/* +|---------------------------------------------------------------------------- +| 8. Catagori Style +|---------------------------------------------------------------------------- +*/ +.catagori-section { + margin-bottom: 120px; +} + +.catagori-content-block { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +.catagori-list { + -ms-flex-preferred-size: 30%; + flex-basis: 30%; +} + +.catagori-list .nav { + display: block; +} + +.catagori-list .nav-link { + padding: 18px; + border-bottom: 1px solid #e2e3e5; +} + +.catagori-list .nav-link h4 { + margin-bottom: 0; + font-weight: 700; + color: #0b132d; +} + +.catagori-list .nav-item { + text-align: left; +} + +.catagori-list .nav-link:hover, +.catagori-list .nav-link:focus, +.catagori-list .nav-link.active { + border-color: transparent; + -webkit-box-shadow: 0px 5px 5px 0px rgba(0, 0, 0, 0.08); + box-shadow: 0px 5px 5px 0px rgba(0, 0, 0, 0.08); +} + +.catagori-list .nav-link.active h4 { + color: #1652f0; +} + +.catagoritab-content { + -ms-flex-preferred-size: 70%; + flex-basis: 70%; + padding: 0 0 0 100px; +} + +.catagori-content > p { + margin-bottom: 26px; +} + +.catagori-content img { + margin-bottom: 26px; +} + +.pros-cons-block .cons-block, +.pros-cons-block .pros-block { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +.pros-cons-block h5, +.pros-cons-block p { + margin: 0; +} + +.pros-cons-block h5 { + font-weight: 700; + padding-right: 10px; +} + +.pros-cons-block p { + margin-top: -4px; +} + +.pros-cons-block .pros-block { + margin-bottom: 15px; +} + +/* +|---------------------------------------------------------------------------- +| 9. Common Component Style +|---------------------------------------------------------------------------- +*/ +.modal-backdrop { + background: #1b1e63; +} + +.modal-container .modal-content { + background: transparent; + border-color: transparent; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.modal-container .modal-body { + padding: 0; + background: #fff; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.modal-container .modal-header { + text-align: center; + background: #1b1e63; +} + +.modal-container .modal-header h5 { + font-size: 24px; + font-weight: 700; + color: #fff; +} + +.modal-container .modal-header .close { + color: #fff; +} + +.modal-container .modal-header .close:focus { + outline: none; +} + +.modal-container .modal-info-block { + text-align: center; + padding-top: 30px; +} + +.modal-container .modal-info-block p { + margin-bottom: 18px; +} + +.modal-container .modal-info-block .block-inner { + padding: 8px 25px; + background: #f7f7f7; + display: inline-block; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.modal-container .modal-info-block .block-inner p { + margin-bottom: 0; +} + +.modal-container .modal-info-block .block-inner span { + font-size: 14px; + font-weight: 700; + color: #00c162; +} + +.modal-container .user-connected-form-block { + -webkit-box-shadow: none; + box-shadow: none; + border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + -ms-border-radius: 0 0 5px 5px; + -o-border-radius: 0 0 5px 5px; +} + +.modal-container .user-connected-form-block p { + text-align: left; +} + +.modal-container .user-connected-form-block .btn-default, +.modal-container .user-connected-form-block .form-control { + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.modal-container .user-signup-form select { + font-size: 15px; +} + +.modal-container .user-signup-form select:focus, +.modal-container .user-signup-form select:active, +.modal-container .user-signup-form select:focus:active { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; + border-color: #e8e9eb; +} + +.user-login-form .pass-remember-block { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} + +.user-login-form .custom-checkbox .custom-control-label::before { + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; +} + +.news-headlines-slider a { + color: #fefefe; + line-height: 18px; + transition: all 0.3s ease-in; + -webkit-transition: all 0.3s ease-in; + -moz-transition: all 0.3s ease-in; + -ms-transition: all 0.3s ease-in; + -o-transition: all 0.3s ease-in; +} + +.news-headlines-slider a:hover { + color: #fff; +} + +.subheader { + background: url("~@/assets/img/bg/2.jpg") no-repeat bottom center; + padding: 255px 0 120px 0; + background-size: cover; + text-align: center; + position: relative; +} + +.subheader h3, +.subheader p { + font-weight: 700; + color: #fcfdff; +} + +.subheader p { + line-height: 24px; + font-weight: 300; + margin-bottom: 15px; +} + +.subheader h3 { + margin-bottom: 25px; +} + +.subheader-search { + width: 50%; + margin: 0 auto; + position: absolute; + bottom: 30px; + left: 0; + right: 0; +} + +.subheader-search .form-control { + background: transparent; +} + +.subheader-search .input-box input[type='text'] { + color: #fff; + border-bottom: 1px solid rgba(255, 255, 255, 0.15); + border-radius: 5px; + font-size: 15px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.subheader-search .input-box button .fa { + color: #fff; + font-size: 15px; +} + +.subheader-search ::-webkit-input-placeholder { + color: #fff; + opacity: 1; + /* Firefox */ +} + +.subheader-search :-ms-input-placeholder { + color: #fff; + opacity: 1; + /* Firefox */ +} + +.subheader-search ::-ms-input-placeholder { + color: #fff; + opacity: 1; + /* Firefox */ +} + +.subheader-search ::placeholder { + color: #fff; + opacity: 1; + /* Firefox */ +} + +.subheader-search :-ms-input-placeholder { + /* Internet Explorer 10-11 */ + color: #fff; +} + +.subheader-search ::-ms-input-placeholder { + /* Microsoft Edge */ + color: #fff; +} + +.contact-form-wrap { + padding: 120px 0; +} + +.contact-form .form-row { + margin-right: -15px; + margin-left: -15px; +} + +.contact-form .form-row > .col, +.contact-form .form-row > [class*=col-] { + padding-right: 15px; + padding-left: 15px; +} + +.contact-form .form-group { + margin-bottom: 30px; +} + +.contact-form .form-control { + background: #fff; + border: 1px solid #e8e9eb; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.contact-form .form-control:focus, +.contact-form .form-control:active, +.contact-form .form-control:focus:active { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.contact-form input.form-control { + padding: 0 20px; + min-height: 55px; +} + +.contact-form textarea { + resize: none; +} + +.contact-form .custom-checkbox { + position: relative; + padding: 18px 15px; + border: 1px solid #e8e9eb; + border-radius: 5px; + display: inline-block; + min-width: 300px; + margin-bottom: 0; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.contact-form .custom-checkbox .custom-checkbox-wrap { + position: relative; + padding-left: 30px; +} + +.contact-form .custom-checkbox img { + position: absolute; + right: 10px; + top: 5px; + width: 50px; + height: 50px; +} + +.contact-form .btn-default { + width: 200px; + height: 55px; + text-align: center; + border-radius: 5px; + background: #1652f0; + font-weight: 700; + color: #fff; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.contact-form .btn-default:focus, +.contact-form .btn-default:active, +.contact-form .btn-default:focus:active { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; + border-color: transparent; +} + +.custom-checkbox .custom-control-label::before { + border-radius: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + -o-border-radius: 0; +} + +.contact-info-outer { + padding-bottom: 120px; +} + +.contact-info-wrap { + border: 1px solid #e8e9eb; + -webkit-box-shadow: 0px 20px 45px 0px rgba(0, 0, 0, 0.05); + box-shadow: 0px 20px 45px 0px rgba(0, 0, 0, 0.05); + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.map-block { + height: 400px; + width: 100%; +} + +.contact-info-block { + padding: 0 160px 0 130px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.contact-info-block h4 { + font-size: 24px; + font-weight: 700; + color: #0b132d; + margin-bottom: 45px; +} + +.contact-info-list { + margin: 0; + padding: 0; + list-style: none; + text-align: left; +} + +.contact-info-list li { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; +} + +.contact-info-list li img { + margin: 10px 15px 0 0; +} + +.contact-info-list li p { + margin-bottom: 25px; +} + +.contact-info-list li:last-child p { + margin-bottom: 0; +} + +.lattest-news-section { + margin-bottom: 60px; +} + +.lattest-news-section .setion-title-two { + margin-bottom: 60px; +} + +.post-style-one { + padding: 40px 30px; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + background: #fff; + border: 1px solid #e8e9eb; +} + +.post-style-one .post-metat-date { + display: block; + font-size: 14px; + margin-bottom: 5px; +} + +.post-style-one .post-title { + font-weight: 700; + margin-bottom: 20px; +} + +.post-style-one .post-title a { + color: #0b132d; +} + +.post-style-one .post-entry { + margin-bottom: 20px; +} + +.post-style-one .post-link { + font-weight: 700; + font-size: 14px; + color: #1652f0; +} + +.features-section { + padding: 120px 0 40px 0; +} + +.features-block { + margin-bottom: 70px; + text-align: center; +} + +.features-block img { + margin: 0 auto 30px auto; + display: block; +} + +.features-block h4 { + margin-bottom: 20px; + font-weight: 700; + color: #1c2437; +} + +.features-block p { + margin-bottom: 0; +} + +.colto-section { + background: #101854 url("~@/assets/img/img18.jpg") no-repeat center center; + background-size: cover; + margin-bottom: -48px; +} + +.colto-content-wrap { + text-align: center; + height: 302px; +} + +.colto-content-wrap .title { + font-size: 40px; + font-family: PingFang SC; + font-weight: 800; + color: #172636; + text-align: center; + margin-bottom: 40px; +} + +.colto-btn-group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.colto-btn-group span { + font-weight: 700; + color: #fff; + height: 34px; + width: 34px; + margin: 0 15px; + display: block; + text-align: center; + line-height: 34px; + border-radius: 50%; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; + border: 1px solid rgba(252, 253, 255, 0.08); +} + +.callto-btn { + width: 180px; + height: 46px; +} + +.testimonials-section { + padding: 120px 0 160px 0; + border-top: 1px solid rgba(0, 0, 0, 0.08); +} + +.testimonials-title { + text-align: center; + margin-bottom: 55px; +} + +.testimonials-title h3 { + font-size: 36px; + font-weight: 700; + color: #0b132d; +} + +.testimonial-slider { + padding: 50px 75px; + background: #fff; + position: relative; + -webkit-box-shadow: 0px 20px 45px 0px rgba(0, 0, 0, 0.05); + box-shadow: 0px 20px 45px 0px rgba(0, 0, 0, 0.05); +} + +.testimonial-slider button.slick-next, +.testimonial-slider button.slick-prev { + position: absolute; + top: 50%; + color: transparent; + border: none; + outline: none; + height: 20px; + width: 20px; + cursor: pointer; + background: transparent; +} + +.testimonial-slider button.slick-next:before, +.testimonial-slider button.slick-prev:before { + font-family: Font Awesome\ 5 Free; + color: #5f5f5f; + font-weight: 900; + font-size: 18px; +} + +.testimonial-slider button.slick-next { + right: -43px; +} + +.testimonial-slider button.slick-next:before { + content: "\f105"; +} + +.testimonial-slider button.slick-prev { + left: -43px; +} + +.testimonial-slider button.slick-prev:before { + content: "\f104"; +} + +.testimonial-slider .slick-slide { + outline: none; +} + +.testimonial-slider .slick-dots { + list-style: none; + position: absolute; + width: 100%; + margin: 0 auto; + padding: 0; + text-align: center; + left: 0; + bottom: -43px; + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} + +.testimonial-slider .slick-dots li { + line-height: 100%; + margin: 8px 15px 0 0; +} + +.testimonial-slider .slick-dots li:last-child { + margin-right: 0px; +} + +.testimonial-slider .slick-dots li button { + color: transparent; + border: none; + outline: none; + height: 8px; + width: 8px; + padding: 0; + cursor: pointer; + background: rgba(22, 82, 240, 0.5); + border-radius: 50%; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; +} + +.testimonial-slider .slick-dots li.slick-active { + margin-top: 5px !important; +} + +.testimonial-slider .slick-dots li.slick-active button { + height: 14px; + width: 14px; + background: #1652f0; +} + +.testimonial-block { + text-align: center; +} + +.testimonial-block:focus { + outline: none; +} + +.testimonial-block img { + display: block; + margin: 0 auto 35px auto; +} + +.testimonial-block p { + font-size: 18px; + line-height: 30px; +} + +.testimonials-author h5 { + font-weight: 700; + margin-bottom: 5px; + color: #1c2437; +} + +.testimonials-author p { + margin-bottom: 0; + font-size: 15px; +} + +.support-category-section { + padding: 120px 0 50px 0; +} + +.support-category-block { + padding: 40px 0; + border: 1px solid #e8e9eb; + text-align: center; + border-radius: 5px; + margin-bottom: 30px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.support-category-block img { + display: block; + margin: 0 auto 35px auto; +} + +.support-category-block h4 { + font-weight: 700; + margin-bottom: 0; + color: #1c2437; +} + +.support-list-section { + border-top: 1px solid #e8e9eb; + padding: 80px 0 40px 0; +} + +.support-list, +.others-support-list { + list-style: none; + margin: 0; + padding: 0; +} + +.support-list li, +.others-support-list li { + margin-bottom: 15px; +} + +.support-list li:last-child, +.others-support-list li:last-child { + margin-bottom: 0; +} + +.support-list li a, +.others-support-list li a { + transition: all 0.3s ease-in; + -webkit-transition: all 0.3s ease-in; + -moz-transition: all 0.3s ease-in; + -ms-transition: all 0.3s ease-in; + -o-transition: all 0.3s ease-in; +} + +.support-list li a:hover, +.others-support-list li a:hover { + color: #1652f0; +} + +.support-list li.colord a, +.others-support-list li.colord a { + text-decoration: underline; + color: #1652f0; +} + +.support-list-block h5, +.others-support-list-block h5 { + margin-bottom: 30px; + color: #0b132d; + font-weight: 700; + font-size: 18px; + text-transform: uppercase; +} + +.others-support-list-block { + padding: 47px 0; + border-top: 1px solid; + border-bottom: 1px solid; + border-color: #e8e9eb; +} + +.others-support-list-section { + padding: 0 0 120px 0; +} + +.user-login-signup-section { + padding: 290px 0 180px 0; + background: url("~@/assets/img/bg/5.jpg") no-repeat center center; + background-size: cover; +} + +.user-login-signup-form-wrap { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.user-login-signup-form-wrap .modal-content { + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; +} + +.user-login-signup-form-wrap .modal-content > h3 { + font-size: 24px; + font-weight: 700; + color: #fff; + margin: 0 auto 45px auto; +} + +/* +|---------------------------------------------------------------------------- +| 10. Currency Dashboard Style +|---------------------------------------------------------------------------- +*/ +.dashboard-fullwidth { + padding: 0 50px; +} + +.dashboard-fullwidth .col-form-label { + font-size: 10px; +} + +.exchange-chart-block { + margin-bottom: 20px; + padding: 15px; + border: 1px solid #e8e9eb; +} + +.order-count-dropdown button.dropdown-toggle { + background: transparent; + border: none; +} + +.order-count-dropdown button.dropdown-toggle:focus, +.order-count-dropdown button.dropdown-toggle:hover, +.order-count-dropdown button.dropdown-toggle:active { + -webkit-box-shadow: none; + box-shadow: none; + border: none; +} + +.order-count-dropdown button.dropdown-toggle:after { + content: none; +} + +.order-count-dropdown button.dropdown-toggle:before { + position: absolute; + font-size: 14px; + top: 8px; + right: -3px; + content: '\f107'; + font-family: Font Awesome\ 5 Free; + font-weight: 600; + color: #a2a2a2; +} + +.order-count-dropdown .dropdown-menu { + min-width: auto; +} + +.dahboard-order-block, +.das-market-block, +.order-history-block { + width: 100%; +} + +.dahboard-order-block { + -webkit-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + border: 1px solid #f0f0f0; +} + +.das-market-nav, +.das-oreder-nav { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + border-bottom: 1px solid #f0f0f0; +} + +.das-market-nav .nav-item, +.das-oreder-nav .nav-item { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + min-width: 30px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.das-market-nav .nav-item a, +.das-oreder-nav .nav-item a { + padding: 0px; + margin: 0 auto; +} + +.das-market-nav .nav-item-first, +.das-oreder-nav .nav-item-first { + -webkit-box-flex: 6; + -ms-flex-positive: 6; + flex-grow: 6; +} + +.das-market-nav .nav-item-first a, +.das-oreder-nav .nav-item-first a { + text-align: left; + color: #1c2437; + font-weight: 500; + font-size: 14px; +} + +.das-market-nav li, +.das-oreder-nav li { + height: 35px; + text-align: center; + border-right: 1px solid #f0f0f0; +} + +.das-market-nav li:last-child, +.das-oreder-nav li:last-child { + border: none; +} + +.das-oreder-table { + border-bottom: 1px solid #f0f0f0; + margin-bottom: 0; +} + +.das-oreder-table thead th { + border: none; + font-weight: 500; + font-size: 12px; + color: #a2a2a2; +} + +.das-oreder-table td { + position: relative; + border-top: none; + background: #fff; +} + +.das-oreder-table td span { + z-index: 2; + font-weight: 600; + font-size: 13px; + position: relative; +} + +.rate-ratio { + position: absolute; + right: 0; + top: 50%; + bottom: 1px; + z-index: 1; + height: 20px; + width: 30px; + -webkit-transform: translateY(-10px); + -ms-transform: translateY(-10px); + transform: translateY(-10px); + background: #fcedeb; +} + +.das-oreder-table.das-buy-table thead th { + border-bottom: 1px solid #f0f0f0; +} + +.das-oreder-table.das-buy-table thead h4 { + font-weight: 600; + margin-bottom: 0; + font-size: 14px; +} + +.das-oreder-table.das-buy-table thead h4, +.das-oreder-table.das-buy-table thead img { + display: inline-block; +} + +.das-oreder-table.das-buy-table .rate-ratio { + background: #ebfaf3; +} + +.das-market-tab-pane { + height: 500px; + position: relative; +} + +.history-table, +.das-market-table { + height: 500px; +} + +.history-table .favorite-coin, +.das-market-table .favorite-coin { + padding: 0 10px; + font-size: 11px; +} + +.history-table tbody tr, +.das-market-table tbody tr { + border-bottom: 1px solid transparent; +} + +.history-table tbody tr:hover, +.das-market-table tbody tr:hover { + background: #e6f1ff; +} + +.history-table tbody tr td, +.das-market-table tbody tr td { + padding: 6px 5px; + font-size: 13px; +} + +.market-new-ticker-block { + background: #fff; + margin-bottom: 25px; + border: 1px solid #e8e9eb; + -webkit-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} + +.market-new-ticker-block .search-form .input-box button { + height: 36px; +} + +.market-new-ticker-block .search-form .input-box input[type='text'] { + height: 36px; + border-bottom: 1px solid #f0f0f0; +} + +.market-new-ticker-block .ticker-nav .nav-item { + min-width: 0; +} + +.market-new-ticker-block .ticker-nav .nav-item a { + padding: 8px 5px; + font-size: 13px; +} + +.market-new-ticker-block .ticker-nav .nav-item:last-child a { + border-right: none; +} + +.order-history-block { + -webkit-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + border: 1px solid #f0f0f0; +} + +.order-history-block .history-table tbody tr td { + padding: 6px 15px; +} + +.order-history-block-inner { + height: 695px; + position: relative; +} + +.order-history-block-inner table { + margin-bottom: 0; +} + +.dark-blue-bg .dahboard-order-block, +.dark-blue-bg .dahboard-market-block { + border: 1px solid rgba(255, 255, 255, 0.06); +} + +.dark-blue-bg .das-oreder-nav, +.dark-blue-bg .das-market-nav { + border-bottom: 1px solid rgba(255, 255, 255, 0.1); +} + +.dark-blue-bg .das-oreder-nav li, +.dark-blue-bg .das-market-nav li { + border-right: 1px solid rgba(255, 255, 255, 0.06); +} + +.dark-blue-bg .das-oreder-nav li.nav-item:not(.nav-item-first), +.dark-blue-bg .das-market-nav li.nav-item:not(.nav-item-first) { + background: rgba(255, 255, 255, 0.05); +} + +.dark-blue-bg .das-oreder-nav li:last-child, +.dark-blue-bg .das-market-nav li:last-child { + border: none; +} + +.dark-blue-bg .new-ticker-block { + border: 1px solid rgba(255, 255, 255, 0.06); +} + +.dark-blue-bg .market-new-ticker-block .search-form .input-box input[type='text'] { + background: transparent; + border-left: 1px solid rgba(255, 255, 255, 0.1); +} + +.dark-blue-bg .search-form .input-box input[type='text'] { + border-bottom: none; +} + +.dark-blue-bg .search-form .input-box button { + color: #fff; +} + +.dark-blue-bg .market-new-ticker-block .ticker-nav .nav-item { + background: rgba(255, 255, 255, 0.05); +} + +.dark-blue-bg .ticker-nav { + border-bottom: 1px solid rgba(255, 255, 255, 0.1); +} + +.dark-blue-bg .ticker-nav .nav-item a { + background: transparent; + color: #fff; + border-right: 1px solid rgba(255, 255, 255, 0.1); + border-bottom: none; +} + +.dark-blue-bg .nav-tabs .nav-link.active { + border: none; + background: rgba(255, 255, 255, 0.05); +} + +.dark-blue-bg .das-market-nav .nav-item-first a, +.dark-blue-bg .das-oreder-nav .nav-item-first a { + color: #fff; + background: rgba(255, 255, 255, 0.05); +} + +.dark-blue-bg .order-count-dropdown button.dropdown-toggle { + color: #797979; +} + +.dark-blue-bg .das-oreder-table { + border-bottom: 1px solid rgba(255, 255, 255, 0.06); +} + +.dark-blue-bg .das-oreder-table thead { + background: rgba(255, 255, 255, 0.05); + color: rgba(255, 255, 255, 0.5); +} + +.dark-blue-bg .das-oreder-table thead th { + font-weight: 500; + font-size: 12px; + color: #a2a2a2; +} + +.dark-blue-bg .das-oreder-table td { + background: transparent; +} + +.dark-blue-bg .das-oreder-table td span:not(.color-sell):not(.color-buy) { + color: #fff; +} + +.dark-blue-bg .das-oreder-table td .rate-ratio { + background: rgba(221, 25, 0, 0.08); +} + +.dark-blue-bg .das-oreder-table.das-buy-table .rate-ratio { + background: rgba(0, 193, 98, 0.08); +} + +.dark-blue-bg .market-new-ticker-block { + background: transparent; +} + +.dark-blue-bg .order-history-block { + border: 1px solid rgba(255, 255, 255, 0.05); +} + +.dark-blue-bg .panel-heading-block { + background: rgba(255, 255, 255, 0.05); +} + +.dark-blue-bg .panel-heading-block h5 { + color: #fff; +} + +.dark-blue-bg .coin-list tbody tr { + background: transparent; +} + +.dark-blue-bg .coin-list thead { + background: rgba(255, 255, 255, 0.1); +} + +.dark-blue-bg .latest-tranjections-table thead th { + background: rgba(255, 255, 255, 0.05); + border: none; +} + +.dark-blue-bg .parent-order-tab .nav-item a.nav-link { + background: rgba(255, 255, 255, 0.05); +} + +.dark-blue-bg .tv_orde_table, +.dark-blue-bg .tv_ammount-form-block .form-input-block .form-control, +.dark-blue-bg .tv_orde_table.table td, +.dark-blue-bg .tv_orde_table.table th, +.dark-blue-bg .tv_orde_table thead th.tv_orde_1st_th, +.dark-blue-bg .parent-order-tab .nav-item a.nav-link, +.dark-blue-bg .panel-heading-block, +.dark-blue-bg .coin-list tbody tr, +.dark-blue-bg .das-oreder-table.das-buy-table thead th, +.dark-blue-bg .exchange-chart-block, +.dark-blue-bg .latest-tranjections-block-inner { + border-color: #192030; +} + +.dark-blue-bg .latest-tranjections-block { + border: 1px solid rgba(255, 255, 255, 0.05); +} + +.dark-blue-bg .latest-tranjections-block .panel-heading-block { + border: 1px solid rgba(255, 255, 255, 0.05); +} + +.dark-blue-bg .col-form-label { + color: #797979; +} + +.dark-blue-bg .tv_ammount-form-block .readonly .form-control[readonly], +.dark-blue-bg .tv_ammount-form-block .form-input-block .tv-btc-tag, +.dark-blue-bg .form-control { + background-color: #1b2334; +} + +.dark-blue-bg .currency-rate .currency-convert .dropdown .btn { + color: #fff; +} + +.dark-blue-bg .currency-rate .update-rate .currency-info > span { + color: #717f9d; +} + +.dark-blue-bg .currency-rate .update-rate .currency-info h6 { + color: #fff; +} + +.dark-blue-bg .currency-rate .update-rate .currency-info h6.color-buy { + color: #00c162; +} + +.dark-blue-bg .ticker-nav .nav-item a h5 { + color: #fff; +} + +.dark-blue-bg .ticker-nav .nav-item a.active { + color: #0978ff; +} + +.dark-blue-bg .ticker-nav .nav-item a.active h5 { + color: #0978ff; +} + +.dark-blue-bg .history-table tr td, +.dark-blue-bg .das-market-table tr td { + color: #fff; +} + +.parent-order-tab { + border: none; +} + +.parent-order-tab .nav-item { + margin-bottom: 0; +} + +.parent-order-tab .nav-item a.nav-link { + border: 1px solid #f0f0f0; + background: #fff; +} + +.parent-order-tab .nav-item a.nav-link h5 { + margin: 0; + font-weight: 600; +} + +.parent-order-tab .nav-item a.nav-link.active { + color: #1652f0; + background: transparent; +} + +.tv_orde_table { + border: 1px solid #f0f0f0; + -webkit-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} + +.tv_orde_table thead th { + border: none; + font-size: 12px; + color: #a2a2a2; +} + +.tv_ammount-form-block .form-input-block { + position: relative; +} + +.tv_ammount-form-block .form-input-block .tv-btc-tag { + position: absolute; + right: 21px; + top: 1px; + height: 36px; + width: 30px; + text-align: center; + color: #c1c1c1; + line-height: 38px; + background: #fff; +} + +.tv_ammount-form-block .form-input-block .form-control { + border: 1px solid #f0f0f0; + height: 40px; +} + +.tv_ammount-form-block .form-input-block .form-control:focus, +.tv_ammount-form-block .form-input-block .form-control:active { + -webkit-box-shadow: none; + box-shadow: none; +} + +.tv_ammount-form-block .readonly .tv-btc-tag { + background: #f7f7f7; +} + +.tv_ammount-form-block .readonly .form-control[readonly] { + background: #f7f7f7; +} + +.tv_ammount-form-block .amcharts-axis-label tspan { + color: #fff !important; +} + +.tv_ammount-form-two .form-input-block .tv-btc-tag { + right: 50px; + color: #827f7f; +} + +.dashboard-body { + margin-bottom: 30px; +} + +.order-form-area-block table { + margin-bottom: 0; +} + +#chartdiv { + width: 100%; + height: 350px; + margin-top: -20px; +} + +#chartdiv_2 { + height: 530px; +} + +.amcharts-axis-title { + display: none; +} + +.amcharts-balloon-div-categoryAxis { + display: none; +} + +.tradingview-widget-container { + margin-bottom: 10px; +} + +.latest-tranjections-block-inner { + border: 1px solid #e8e9eb; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + position: relative; +} + +.latest-tranjections-block-inner .panel-heading-block h5 { + color: #192030; + font-weight: 600; +} + +.latest-tranjections-table { + margin-bottom: 0; + border-radius: 5px; +} + +.latest-tranjections-table thead th { + color: #a2a2a2; + background: #fafafa; + border-bottom: 1px solid #e8e9eb; +} + +.latest-tranjections-table tbody tr { + border: none; +} + +.latest-tranjections-table tbody tr td { + font-weight: 500; + padding: 10px 15px; +} + +.login-warning-block { + position: absolute; + top: 50%; + width: 100%; + left: 0; + right: 0; + text-align: center; +} + +.login-warning-block img { + display: block; + margin: 0 auto 10px auto; +} + +.login-warning-block p { + margin-bottom: 0; +} + +.login-warning-block a { + color: #1652f0; +} + +.btc-parcentage { + list-style: none; + margin: 0; + padding: 0; + font-size: 0; +} + +.btc-parcentage li { + display: inline-block; + padding: 8px 0; + width: 25%; + text-align: center; +} + +.btc-parcentage li a { + font-size: 16px; + color: #fff; +} + +.total-btc, +.usd-ammount { + display: block; + text-align: right; + padding: 6px 0 0 0; + font-size: 16px; + color: #fff; +} + +.currency-rate { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding: 15px 50px; + border: 1px solid #e8e9eb; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.currency-rate .currency-convert { + padding-right: 30px; + border-right: 1px solid rgba(0, 0, 0, 0.06); +} + +.currency-rate .currency-convert .dropdown .dropdown-toggle { + background: transparent; + font-weight: 700; +} + +.currency-rate .currency-convert .dropdown .btn:focus { + -webkit-box-shadow: none; + box-shadow: none; +} + +.currency-rate .update-rate { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding-left: 40px; +} + +.currency-rate .update-rate .currency-info { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + -ms-flex-negative: 1; + flex-shrink: 1; +} + +.currency-rate .update-rate .currency-info > span { + font-size: 14px; + color: #797979; + font-weight: 600; +} + +.currency-rate .update-rate .currency-info h6 { + font-size: 15px; + font-weight: 700; +} + +.currency-rate .update-rate .currency-info h6 .transmoney { + font-size: 13px; + font-weight: 500; +} + +.currency-rate-v2 { + border-color: transparent; +} + +sub.transmoney-value { + bottom: 0px; +} + +.currency-info-base { + color: #c6cbdb; + font-weight: 700; +} + +.form-top-block { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-bottom: 30px; +} + +.form-top-block span { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + font-size: 16px; + color: #fff; +} + +.order-form-area-block { + margin-bottom: 30px; +} + +.latest-tranjections-area { + padding-bottom: 120px; +} + +.not-login { + padding-bottom: 50px; +} + +.tv_orde_table thead th.tv_orde_1st_th { + border-right: 1px solid #e8e9eb; +} + +/* +|---------------------------------------------------------------------------- +| 11. Tranding Info Style +|---------------------------------------------------------------------------- +*/ +.new-ticker-block-wrap { + border-radius: 10px; +} + +.teanding-info-block { + padding: 120px 0; +} + +.teanding-info-block table { + border: 1px solid #e8e9eb; +} + +.teanding-info-block table thead tr th:first-child { + padding: 15px; + text-align: center; + border-right: 1px solid #e8e9eb; +} + +.teanding-info-block table tbody tr td { + padding: 15px; +} + +.teanding-info-block table tbody tr td:first-child { + text-align: center; + border-right: 1px solid #e8e9eb; +} + +.teanding-info-block table tbody tr td img { + display: inline-block; + margin-right: 8px; +} + +.teanding-info-block table tbody tr td span { + vertical-align: middle; +} + +.teanding-info-block .search-form input[type='text'] { + height: 50px; + min-width: 270px; + border: 1px solid #e8e9eb; + -webkit-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} + +.teanding-info-block .search-form button { + height: 50px; +} + +.trending-info-currency-option .dropdown-toggle { + background: #f7f7f7; + color: #797979; + min-width: 150px; + min-height: 50px; + vertical-align: middle; + position: relative; + border: 1px solid #e8e9eb; +} + +.trending-info-currency-option .dropdown-toggle:focus, +.trending-info-currency-option .dropdown-toggle:active { + -webkit-box-shadow: none; + box-shadow: none; +} + +.trending-info-currency-option .dropdown-toggle:after { + position: absolute; + right: 25px; + top: 21px; +} + +.trending-info-currency-option .dropdown-menu { + min-width: 150px; +} + +.trending-info-currency-option .dropdown-item.active, +.trending-info-currency-option .dropdown-item:active { + background: #f7f7f7; + color: #797979; +} + +.trending-info-currency-option i.fas { + background: #fff; + border: 1px solid #e8e9eb; + height: 26px; + width: 26px; + vertical-align: middle; + font-size: 13px; + line-height: 25px; + text-align: center; + color: #1c2437; + -webkit-border-radius: 50%; + -o-border-radius: 50%; + border-radius: 50%; + position: absolute; + left: 15px; +} + +.trending-info-currency-option .btn-primary:not(:disabled):not(.disabled).active, +.trending-info-currency-option .btn-primary:not(:disabled):not(.disabled):active, +.trending-info-currency-option.show > .btn-primary.dropdown-toggle { + background: #f7f7f7; + color: #797979; + border: 1px solid #e8e9eb; + -webkit-box-shadow: none; + box-shadow: none; +} + +.trending-info-tab { + margin-bottom: 20px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} + +.trending-info-tab .nav-item { + -webkit-box-flex: initial; + -ms-flex-positive: initial; + flex-grow: initial; + min-width: 100px; +} + +.account-server-info-block { + border: 1px solid #e8e9eb; + margin-top: 30px; +} + +.account-table { + margin-bottom: 0; +} + +.account-table thead tr th { + border: none; + text-align: right; + color: #a2a2a2; +} + +.account-table thead tr th:first-child { + text-align: left; +} + +.account-table tbody tr { + background: #fff; + text-align: right; +} + +.account-table tbody tr td:first-child { + text-align: left; +} + +/* +|---------------------------------------------------------------------------- +| 12. Working-process Style +|---------------------------------------------------------------------------- +*/ +.working-process-section { + padding: 120px 0 80px 0; +} + +.working-process-list { + margin: 0; + padding: 0; + list-style: none; +} + +.working-process-list li + li { + margin-top: 55px; +} + +.working-process-step h4 { + font-weight: 700; + color: #0b132d; + margin-bottom: 10px; +} + +.working-process-step h4 span { + color: #1652f0; +} + +.process-details { + margin-left: 15px; + padding: 10px 0 0 35px; + position: relative; +} + +.process-details p { + margin-bottom: 0; +} + +.process-details:before { + content: url("~@/assets/img/others/19.png"); + position: absolute; + left: 0; + top: 9px; +} + +.user-connected-form-block { + padding: 40px 40px 45px 40px; + background: #fff; + -webkit-box-shadow: 0px -20px 45px 0px rgba(0, 0, 0, 0.05); + box-shadow: 0px -20px 45px 0px rgba(0, 0, 0, 0.05); +} + +.user-connected-form-block h3 { + font-size: 24px; + line-height: 36px; + font-weight: 700; + color: #1c2437; + margin-bottom: 30px; +} + +.user-connected-form-block p { + margin: 0 auto; + text-align: center; + font-size: 14px; +} + +.user-connected-form-block p a { + color: #1652f0; +} + +.user-connected-from input { + border-radius: 0px; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + min-height: 50px; + padding: 0 20px; + border: 1px solid #e8e9eb; +} + +.user-connected-from input:focus { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; + border-color: #e8e9eb; +} + +.user-connected-from .form-group { + margin-bottom: 30px; +} + +.user-connected-from .btn-default { + width: 100%; + border-radius: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + -o-border-radius: 0; + background: #1652f0; + color: #fff; + font-weight: 700; + font-size: 15px; + min-height: 50px; + margin-bottom: 20px; +} + +.user-connected-from .btn-default:active, +.user-connected-from .btn-default:focus:active, +.user-connected-from .btn-default:focus { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.counter-section.counter-style-two { + padding: 210px 0 286px 0; +} + +.counter-section { + position: relative; + overflow: hidden; + padding: 210px 0 120px 0; + background: url(~@/assets/img/bg/3.png) no-repeat top -10px center; +} + +.counter-block { + text-align: center; + margin-bottom: 30px; +} + +.counter-block h3 { + color: #1652f0; + font-weight: 700; + margin-bottom: 10px; +} + +.counter-block p { + margin-bottom: 0; + font-size: 18px; +} + +.counter-vintage { + position: absolute; + right: 0; + left: 0; + bottom: -90px; + margin: 0 auto; +} + +.counter-vintage img { + display: block; + margin: 0 auto; +} + +.app-download-section { + padding: 120px 0 90px 0; + background-image: -moz-linear-gradient(90deg, white 0%, rgba(22, 82, 240, 0.03) 100%); + background-image: -webkit-linear-gradient(90deg, white 0%, rgba(22, 82, 240, 0.03) 100%); + background-image: -ms-linear-gradient(90deg, white 0%, rgba(22, 82, 240, 0.03) 100%); +} + +.download-options-list { + margin: 0 auto; + padding: 0; + list-style: none; + text-align: center; +} + +.download-options-list li { + display: inline-block; + margin: 0 30px 30px 0; +} + +.download-options-list li:last-child { + margin-right: 0; +} + +.apps-download-btn { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + min-width: 200px; + padding: 12px 25px; + border: 1px solid #e8e9eb; + background: #fff; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.apps-download-btn:focus, +.apps-download-btn:active, +.apps-download-btn:focus:active { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.apps-download-btn p { + margin: 0; +} + +.apps-download-btn i.fab, +.apps-download-btn i.fas { + font-size: 30px; + color: #1652f0; +} + +.apps-download-btn .btn-content { + padding-left: 15px; + text-align: left; +} + +.apps-download-btn .btn-content span { + font-size: 14px; +} + +.apps-download-btn .btn-content p { + font-size: 16px; + font-weight: 700; + line-height: 20px; +} + +/* +|---------------------------------------------------------------------------- +| 13. Post Style +|---------------------------------------------------------------------------- +*/ +.latest-post-section { + padding: 120px 0 60px 0; +} + +.post-style-two.post-full-width { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 80px; +} + +.post-style-two.post-full-width .post-contnet-wrap { + padding: 100px 100px 101px 50px; +} + +.post-style-two.post-full-width .post-thumb { + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; +} + +.post-style-two.post-full-width .post-meta { + margin-bottom: 8px; +} + +.post-style-two.post-full-width .post-title { + margin-bottom: 26px; +} + +.post-style-two.post-full-width .post-title a { + font-size: 24px; +} + +.post-style-two.post-full-width .post-entry { + margin-bottom: 60px; +} + +.post-style-two { + margin-bottom: 60px; +} + +.post-style-two .post-contnet-wrap { + padding: 22px 30px 18px 30px; + background-color: #fff; + border: 1px solid #e8e9eb; + transition: all 0.3s ease-in; + -webkit-transition: all 0.3s ease-in; + -moz-transition: all 0.3s ease-in; + -ms-transition: all 0.3s ease-in; + -o-transition: all 0.3s ease-in; +} + +.post-style-two .post-contnet-wrap:hover { + -webkit-box-shadow: 0px 20px 45px 0px rgba(0, 0, 0, 0.05); + box-shadow: 0px 20px 45px 0px rgba(0, 0, 0, 0.05); +} + +.post-style-two .post-thumb img, +.post-style-two .post-thumb a { + display: block; +} + +.post-style-two .post-meta { + font-size: 14px; + color: #1652f0; + display: block; + margin-bottom: 5px; +} + +.post-style-two .post-title { + margin-bottom: 25px; +} + +.post-style-two .post-title a { + color: #1c2437; + font-size: 18px; + font-weight: 700; +} + +.post-style-two .post-entry { + margin-bottom: 35px; +} + +.post-style-two .post-footer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.post-style-two .author-thumb img { + border-radius: 50%; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; + display: block; + margin-right: 12px; +} + +.post-style-two .post-comments, +.post-style-two .post-author-block, +.post-style-two .post-footer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.post-style-two .author-info h5 { + font-size: 14px; + font-weight: 700; +} + +.post-style-two .post-comments img { + margin-right: 9px; +} + +/*--------------------------------------------- + 14 Blog Details Style +---------------------------------------------*/ +.blog-details-wrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 120px 0 40px 0; +} + +.blog-details-wrapper .info { + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + -ms-flex-preferred-size: 20%; + flex-basis: 20%; +} + +.blog-details-wrapper .info .post-author-block { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 42px; +} + +.blog-details-wrapper .info .post-author-block a { + display: block; +} + +.blog-details-wrapper .info .author-info h5 { + font-weight: 700; + margin-bottom: 0; + font-size: 14px; + color: #5f5f5f; +} + +.blog-details-wrapper .info .author-thumb { + margin-right: 15px; +} + +.blog-details-wrapper .info .post-meta-block span { + color: #1652f0; + display: block; + margin-bottom: 10px; +} + +.blog-details-wrapper .info .post-comments { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.blog-details-wrapper .info .post-comments img { + margin: 0 15px 0 0; +} + +.details-post-meta-block { + padding: 50px 0; + background: #fff; + border-top: 1px solid; + border-bottom: 1px solid; + border-color: #e8e9eb; +} + +.post-tag-block h5 { + margin-bottom: 15px; + font-weight: 700; + color: #1c2437; +} + +.post-tag-block .tags a { + padding: 3px 15px; + border: 1px solid #e8e9eb; + margin-right: 5px; + font-size: 12px; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + -webkit-transition: all 0.3s ease-in; + -o-transition: all 0.3s ease-in; + transition: all 0.3s ease-in; +} + +.post-tag-block .tags a:hover { + border-color: #1652f0; + color: #1652f0; +} + +.details-post-meta-block-wrap { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.details-post-meta-block-wrap .post-author-block { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.details-post-meta-block-wrap .post-author-block img { + margin-right: 15px; +} + +.details-post-meta-block-wrap .post-author-block .author-info h5 { + font-weight: 700; + margin-bottom: 0; +} + +.single-post-block .post-thumb-block { + margin-bottom: 40px; +} + +.single-post-block .post-title { + font-size: 24px; + font-weight: 700; + color: #0b132d; + margin-bottom: 20px; +} + +.single-post-block blockquote { + padding: 15px 30px; + font-size: 16px; + font-weight: 700; + color: #0b132d; +} + +.single-post-block .list-post-entry { + margin: 0 0 30px 0; + padding: 0; + list-style: none; +} + +.single-post-block .list-post-entry li i.fas { + margin-right: 20px; + color: #aaaaaa; +} + +.single-post-block .list-post-entry li + li { + margin-top: 10px; +} + +.post-comment-block { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +.post-comment-block .comment-respond, +.post-comment-block .comment-area { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + padding: 60px 30px; +} + +.post-comment-block .comment-respond h4, +.post-comment-block .comment-area h4 { + font-size: 18px; + font-weight: 700; + color: #1c2437; + margin-bottom: 42px; +} + +.post-comment-block .form-control { + background: transparent; +} + +.post-comment-block .comment-respond { + position: relative; +} + +.post-comment-block .comment-respond:before { + position: absolute; + content: ''; + top: 60px; + right: 0; + bottom: 60px; + width: 1px; + background: rgba(17, 17, 17, 0.08); +} + +.post-comment-block .comment-respond .form-group { + margin-bottom: 30px; +} + +.post-comment-block .comment-respond .form-group textarea { + resize: none; +} + +.post-comment-block .comment-respond .form-group .form-control { + height: 50px; + border: 0; + border-bottom: 1px solid rgba(17, 17, 17, 0.08); + border-radius: 0; + font-size: 14px; + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.post-comment-block .comment-respond .form-group .form-control:focus { + border-bottom-color: #1652f0; +} + +.post-comment-block .comment-respond .form-group textarea.form-control { + height: 100px; +} + +.post-comment-block .comment-area .comments { + padding: 0; + margin: 0; + list-style: none; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap { + padding-bottom: 30px; + border-bottom: 1px solid rgba(17, 17, 17, 0.08); +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .commenter-thumb { + height: 55px; + width: 55px; + border-radius: 50%; + overflow: hidden; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .commenter-info { + padding-left: 20px; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .commenter-info span { + display: block; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .commenter-info span.commenter-name { + font-size: 14px; + font-weight: 700; + line-height: 100%; + color: #1c2437; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .commenter-info span.date { + font-size: 12px; + color: #5f5f5f; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .reply { + margin-left: auto; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .reply .reply-button { + font-size: 12px; + outline: none; + -webkit-box-shadow: none; + box-shadow: none; + cursor: pointer; + text-transform: uppercase; + color: #fcfdff; + background: #f7f9fc; + color: #5f5f5f; + border: 1px solid #e8e9eb; + border-radius: 3px; + padding: 0px 15px; + transition: all 0.3s ease-in; + -webkit-transition: all 0.3s ease-in; + -moz-transition: all 0.3s ease-in; + -ms-transition: all 0.3s ease-in; + -o-transition: all 0.3s ease-in; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .reply .reply-button:hover { + color: #1652f0; + border-color: #1652f0; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .reply .modal-body .comment-respond:before { + height: 0; + width: 0; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-body { + padding-top: 12px; + color: #5f5f5f; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-body p { + margin-bottom: 5px; +} + +.post-comment-block .comment-area .comments .comment .child-comment { + margin-left: 40px; + margin-top: 30px; +} + +.post-comment-block .comment-area .comments .comment:last-child .child-comment .comment:last-child .comment-wrap { + border-bottom: 1px solid rgba(17, 17, 17, 0.08); + padding-bottom: 30px; +} + +.post-comment-block .comment-area .comments .comment + .comment { + margin-top: 30px; +} + +.post-comment-block .comment-area .view-all { + margin-top: 20px; + text-align: center; + font-size: 1.4rem; + font-weight: 500; + color: #1652f0; + text-decoration: underline; +} + +.comment-respond .btn-default { + width: 170px; + height: 55px; + background: #1652f0; + font-weight: 700; + color: #fff; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.comment-respond .btn-default:hover, +.comment-respond .btn-default:active, +.comment-respond .btn-default:active:focus { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +/* +|---------------------------------------------------------------------------- +| 15. Support Details Style +|---------------------------------------------------------------------------- +*/ +.support-details-section { + padding: 120px 0 0 0; +} + +.support-details-tab-nav h4 { + font-weight: 700; + color: #0b132d; + margin-bottom: 50px; +} + +.support-list .nav-tabs { + border-color: transparent; +} + +.support-list .nav-link { + padding: 10px 20px; + background: transparent; + border: none; + text-align: left; + line-height: 24px; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.support-list .nav-link.active { + background: #1652f0; + color: #fff; +} + +.support-details-content .sp-title { + font-size: 24px; + font-weight: 700; + margin-bottom: 30px; + color: #0b132d; +} + +.supporter-details { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 35px; +} + +.supporter-details img { + margin-right: 15px; +} + +.sp-info h5 { + font-weight: 700; + margin-bottom: 3px; +} + +.support-entry-block { + margin-bottom: 37px; +} + +.support-entry-block p { + margin-bottom: 25px; +} + +.support-entry-block p + p { + margin-bottom: 0; +} + +.details-support-steps h5 { + margin-bottom: 17px; + font-weight: 700; + color: #1c2437; +} + +.details-support-steps p { + margin-bottom: 25px; +} + +.account-support-block { + margin-bottom: 45px; +} + +.account-support-img-block.double-img { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.account-support-img-block.double-img > div { + margin-right: 45px; +} + +.chart-support-block { + margin-bottom: 33px; +} + +.last-support-block { + margin-bottom: 65px; +} + +.last-support-block p { + margin-bottom: 0; +} + +.support-details-footer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + padding-bottom: 60px; + border-bottom: 1px solid #e8e9eb; +} + +.post-share-block h5, +.ishelpful-block h5 { + margin-bottom: 15px; + font-weight: 700; + color: #1c2437; +} + +.post-share-block ul, +.ishelpful-block ul { + margin: 0; + padding: 0; + list-style: none; +} + +.post-share-block ul li, +.ishelpful-block ul li { + display: inline-block; +} + +.ishelpful-list a { + padding: 4px 15px; + border: 1px solid #1652f0; + color: #1652f0; + text-transform: uppercase; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.ishelpful-list li:first-child { + margin-right: 15px; +} + +.social-share-list li { + margin-right: 15px; +} + +.social-share-list li:last-child { + margin-right: 0; +} + +.social-share-list li a { + height: 26px; + width: 26px; + line-height: 26px; + text-align: center; + color: #fff; + font-size: 13px; + border-radius: 50%; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; +} + +.qs-answer-section { + padding: 120px 0; + text-align: center; +} + +.qs-answer-section h4 { + font-weight: 700; + font-size: 24px; + margin-bottom: 15px; +} + +.qs-answer-section img { + margin: 0 auto 45px auto; +} + +.qs-answer-section > span { + margin-bottom: 35px; + display: block; +} + +.qs-answer-section .btn-group { + display: block; + margin-bottom: 50px; +} + +.qs-answer-section .btn-default { + width: 150px; + height: 50px; + background: #cff0db; + color: #19bb4c; + font-weight: 700; + margin: 0 25px; + border-radius: 5px !important; + -webkit-border-radius: 5px !important; + -moz-border-radius: 5px !important; + -ms-border-radius: 5px !important; + -o-border-radius: 5px !important; +} + +.qs-answer-section .btn-default:hover, +.qs-answer-section .btn-default:focus, +.qs-answer-section .btn-defaultfocus:active { + -webkit-box-shadow: none; + box-shadow: none; + outline: none; +} + +.qs-answer-section .btn-default:hover { + background: #19bb4c; + color: #fff; +} + +.qs-answer-section .btn-default.active { + background: #1652f0; + color: #fff; +} + +.qs-answer-section p { + margin-bottom: 0; +} + +.qs-answer-section p span { + color: #1652f0; + font-weight: 700; +} + +/*----------------------------------- +16. FAQ Style +-----------------------------------*/ +.faq-section { + padding: 120px 0; +} + +.faq-section .qs-answer-section { + padding-bottom: 0; +} + +.bg-offwhite { + background-color: #f5f8f9; +} + +.accordion .accordion-header button { + text-align: left; + background-color: transparent; + font-weight: 400; + font-size: 1.8rem; + color: #009efd; + border: none; + padding: 12px 0 12px 40px; + display: block; + cursor: pointer; + -webkit-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; + position: relative; +} + +.accordion .accordion-header button.collapsed { + color: #003a49; +} + +.accordion .accordion-header button:before { + content: '\f106'; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + font-size: 2.2rem; + line-height: inherit; + padding: 12px 0; + text-align: left; + color: #009efd; + position: absolute; + top: 0; + left: 0; +} + +.accordion .accordion-header button.collapsed:before { + content: '\f107'; +} + +.accordion-body { + padding: 0 0 25px 40px; +} + +.list-group { + border-left: 1px solid rgba(0, 0, 0, 0.08); +} + +.list-group-item { + border: none; + padding: 7px 30px; + margin-left: -1px; + background-color: transparent; + position: relative; +} + +.list-group-item.active { + background-color: transparent; +} + +.list-group-item-action:focus, +.list-group-item-action:hover { + background-color: transparent; +} + +.list-group-item:before { + content: ''; + top: 0; + bottom: 0; + left: 0; + width: 0; + background-color: #009efd; + position: absolute; + -webkit-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; +} + +.list-group-item.active:before { + width: 5px; +} + +.list-group-item + .list-group-item { + margin-top: 24px; +} + +.list-group-item h5 { + font-weight: 700; + color: #0b132d; + font-size: 18px; + margin: 0; +} + +.list-group-item p { + margin-top: 10px; + margin-bottom: 0; +} + +.list-group-item.active p { + color: #5f5f5f; +} + +.tab-pane > h4 { + font-size: 24px; + color: #0b132d; + font-weight: 700; + border-bottom: 1px solid rgba(0, 0, 0, 0.08); + padding-bottom: 60px; + margin-bottom: 0px; +} + +.accordion.style-2 .accordion-item { + border-bottom: 1px solid rgba(0, 0, 0, 0.08); +} + +.accordion.style-2 .accordion-header button { + font-weight: 400; + color: #0b132d; + font-size: 18px; + padding: 35px 30px 35px 0; + width: 100%; + position: relative; +} + +.accordion.style-2 .accordion-header button:focus, +.accordion.style-2 .accordion-header button:active:focus { + outline: none; +} + +.accordion.style-2 .accordion-header button:before { + content: none; +} + +.accordion.style-2 .accordion-header button:after { + content: "\e622"; + font-family: 'themify'; + position: absolute; + top: 0; + right: 0; + line-height: 23px; + width: 25px; + text-align: center; + height: 25px; + border: 1px solid rgba(0, 0, 0, 0.08); + border-radius: 13px; + font-size: 1.2rem; + margin: 29px 0; +} + +.accordion.style-2 .accordion-header button.collapsed:after { + content: "\e61a"; +} + +.accordion.style-2 .accordion-body { + padding-left: 0; +} + +/* +|---------------------------------------------------------------------------- +| 17. Footer Style +|---------------------------------------------------------------------------- +*/ +.footer { + background: white; + /* border-top: 1px solid #c7c7c7; */ +} + +.footer-upper-section { + padding: 70px 0; + position: relative; +} + +.footer-upper-section .footer-icon-wrap { + position: absolute; + right: 170px; + bottom: 55px; +} + +.footer-info-list > h4 { + font-size: 19px; + font-weight: 700; + color: #172636; + margin-bottom: 40px; +} + +.footer-info-list ul { + list-style: none; + margin: 0; + padding: 0; +} + +.footer-info-list ul li { + margin-bottom: 15px; +} + +.footer-info-list ul li:last-child { + margin-bottom: 0; +} + +.footer-info-list ul li a { + color: #c6cbdb; + transition: all 0.3s ease-in; + -webkit-transition: all 0.3s ease-in; + -moz-transition: all 0.3s ease-in; + -ms-transition: all 0.3s ease-in; + -o-transition: all 0.3s ease-in; +} + +.footer-info-list ul li a:hover { + color: #fff; +} + +.footer-info-list .contact-info { + color: #c6cbdb; + margin-bottom: 65px; +} + +.footer-info-list .contact-info li { + margin-bottom: 5px; +} + +.footer-info-list .contact-info span { + color: #fff; +} + +.footer-info-list .social-style-two { + list-style: none; +} + +.footer-info-list .social-style-two li { + display: inline-block; + margin-right: 30px; +} + +.footer-info-list .social-style-two li:last-child { + margin-right: 0; +} + +.footer-info-list .social-style-two li a { + color: #fff; + font-size: 18px; +} + +.footer-info-list .social-style-two li a:hover { + color: #1652f0; +} + +.footer-bottom { + padding: 15px 0; + border-top: 1px solid rgba(255, 255, 255, 0.08); +} + +.trade-volume-block { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; +} + +.trade-volume-block ul { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + margin: 0; + padding: 0; + list-style: none; +} + +.trade-volume-block ul li { + color: #c6cbdb; + margin-right: 25px; +} + +.trade-volume-block ul li span { + color: #fff; +} + +.trade-volume-block ul li:last-child { + margin-right: 0; +} + +.copyright-text { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + color: #c6cbdb; +} + +.banner-swiper img { + width: 100%; + height: 100%; + object-fit: contain; +} + +.banner-swiper .banner-item { + border-radius: 10px; + overflow: hidden; +} + +.marquee { + width: 100%; + overflow: hidden; +} + +.marquee .marquee-pargress { + width: 200%; + animation: marquee 40s infinite linear; +} + +.marquee .marquee-list { + padding: 14px 0; + background: #1e2834; + color: white; +} + +.marquee .marquee-list .item { + padding: 0 14px; + width: 200px; +} + +.marquee .marquee-list .item.border-right { + border-color: #4E4E5D !important; +} + +.marquee:hover .marquee-pargress { + animation-play-state: paused; +} + +@keyframes marquee { + 0% { + transform: translateX(0); + } + 100% { + transform: translateX(-100%); + } +} + +.activity-box { + position: relative; + padding-top: 40px; + padding-bottom: 40px; +} + +.activity-box:hover .nav-btn { + opacity: 1; + transform: translateY(-50%); +} + +.activity-box:hover .nav-btn.nav-left { + left: -0px; +} + +.activity-box:hover .nav-btn.nav-right { + right: -0px; +} + +.activity-box .nav-btn { + opacity: 0; + transition: all .3s; + position: absolute; + top: 50%; + transform: translateY(0); + z-index: 99; + font-size: 20px; +} + +.activity-box .nav-btn.nav-left { + left: 40px; +} + +.activity-box .nav-btn.nav-right { + right: 40px; +} + +.activity-box .activity-slide { + height: 440px; + transform: scale(0.9); + transition: all .3s; + background-color: #fff; +} + +.activity-box .activity-slide .icon { + text-align: center; + padding: 100px 0 20px; + transition: all .3s; +} + +.activity-box .activity-slide .icon img { + height: 110px; + transition: all .3s; +} + +.activity-box .activity-slide .title { + font-size: 18px; + font-weight: bold; + text-align: center; + margin: 20px 0; + transition: all .3s; +} + +.activity-box .activity-slide .message { + padding: 20px; + max-height: 0; + transition: all .3s; + opacity: 0; +} + +.activity-box .activity-slide:hover { + transform: scale(1); + background-color: #f5f7fa; +} + +.activity-box .activity-slide:hover .icon { + padding-top: 20px; +} + +.activity-box .activity-slide:hover .icon img { + height: 90px; +} + +.activity-box .activity-slide:hover .title { + font-size: 16px; +} + +.activity-box .activity-slide:hover .message { + max-height: 120px; + opacity: 1; +} + +.section { + background-color: #222e3e; +} + +.multi-platform { + overflow: hidden; + width: 80%; + margin: 0 auto; + display: flex; + justify-content: space-between; + align-items: center; + height: 600px; + background-color: #222e3e; + background-size: cover; + color: white; +} + +.multi-platform .right img { + width: 100%; +} + +.multi-platform .left { + background: #393947; + padding: 31px 40px 40px; + border: 1px solid #9494AC; + border-radius: 19px; +} + +.multi-platform .left .h2 { + font-weight: bold; +} + +.multi-platform .left .tip1 { + font-size: 18px; +} + +.multi-platform .left .qr-code-box { + border-radius: 10px; + padding: 20px; + padding-top: 0; + margin-top: 20px; +} + +.multi-platform .left .qr-code-box .scan-icon { + width: 28px; + height: 28px; +} + +.multi-platform .left .qr-code-box .label { + font-size: 20px; + padding: 10px 0; +} + +.lattest-news-section .post-entry { + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + height: 42px; +} + +.lattest-news-section .setion-title-two { + margin-top: 40px; +} diff --git a/src/assets/scss/module/_home.min.css b/src/assets/scss/module/_home.min.css new file mode 100644 index 0000000..e351441 --- /dev/null +++ b/src/assets/scss/module/_home.min.css @@ -0,0 +1 @@ +h1{font-size:42px}h2{font-size:50px}h3{font-size:30px}h4{font-size:18px}h5{font-size:15px}h6{font-size:12px}img{-o-object-fit:cover;object-fit:cover;display:inline-block}.img-responsive{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none;display:inline-block;-webkit-transition:0.4s ease-in;-o-transition:0.4s ease-in;transition:0.4s ease-in;color:#797979}a:hover,a:focus{text-decoration:none;color:white;outline:0}.faceboox{background:#3b5998}.twitter{background:#1da1f2}.google-plus{background:#dd4b39}.linkdin{background:#0077b5}.pinterest{background:#bd081c}.instagram{background:#5851db}button{font-family:"Quicksand", sans-serif}iframe{border:0}.overlay{position:absolute;left:0;top:0;height:100%;width:100%;background:rgba(17,17,17,0.7)}.panel-heading-block{padding:10px 0 10px 15px;background:#fff;border-bottom:1px solid #f0f0f0}.panel-heading-block h5{font-size:14px;color:#1c2437;margin:0}input:not([type=submit]):not([type=radio]):not([type=checkbox]):focus,select:focus,textarea:focus{outline:none}.buy-btn{height:40px;width:100%;font-size:13px;font-weight:600;color:#fff;background:#00c162;-webkit-border-radius:5px;-o-border-radius:5px;border-radius:5px}.buy-btn:focus,.buy-btn:active{-webkit-box-shadow:none;box-shadow:none}.sell-btn{height:40px;width:100%;font-size:13px;font-weight:600;color:#fff;background:#dd1900;-webkit-border-radius:5px;-o-border-radius:5px;border-radius:5px}.sell-btn:focus,.sell-btn:active{-webkit-box-shadow:none;box-shadow:none}.section-padding{padding:100px 0}.section-padding-top{padding-top:100px}.section-padding-bottom{padding-bottom:100px}.section-padding-50{padding:50px 0}.section-padding-50-top{padding-top:50px}.section-padding-80-top{padding-top:80px}.section-padding-80-bottom{padding-bottom:80px}.margin-balance{margin-bottom:-30px;zoom:1;position:relative;overflow:hidden}.white-bg{background:#fff}.dark-blue-bg{background:#0b132d}.base-color{color:#1652f0}.section-title-one{text-align:center;margin-bottom:75px}.section-title-one h3{font-weight:700;font-size:36px;color:#0b132d;margin-bottom:33px}.section-title-one p{line-height:24px;margin-bottom:0}.setion-title-two{text-align:center;position:relative;margin-bottom:40px}.setion-title-two:before{content:'';position:absolute;top:9px;left:0;height:1px;width:100%;z-index:2;background:#e8e9eb}.setion-title-two h5{font-size:16px;font-weight:700;margin-bottom:0;position:relative;z-index:99;max-width:170px;margin:0 auto;background:#fcfdff;color:#5f5f5f;text-transform:uppercase}.section-title-three{margin-bottom:55px;text-align:center}.section-title-three h3{font-size:36px;font-weight:700;color:#0b132d}.new-ticker-block-section{padding:60px 0 60px 0;background:#FFFFFF}.new-ticker-block-section .coin-list th,.new-ticker-block-section .coin-list tr{font-size:14px}.new-ticker-block .search-form .input-box input[type='text']{border-color:transparent}.ex-color-buy,.color-buy{color:#00c162}.ex-color-sell,.color-sell{color:#dd1900}.color-buy,.color-sell{position:relative;cursor:pointer}.ticker-nav{display:-webkit-box;display:-ms-flexbox;display:flex;border-bottom:none}.ticker-nav .nav-item-last{-webkit-box-flex:6;-ms-flex-positive:6;flex-grow:6}.ticker-nav .nav-item{min-width:100px;text-align:center}.ticker-nav .nav-item a{font-weight:600;margin:0;padding:16px 30px;-webkit-border-radius:0;-o-border-radius:0;border-radius:0;border-color:transparent}.ticker-nav .nav-item a:focus,.ticker-nav .nav-item a:active,.ticker-nav .nav-item a:hover{border-color:transparent}.ticker-nav .nav-item a.active{background:transparent;color:white;position:relative}.ticker-nav .nav-item a.active::after{content:'';display:block;position:absolute;bottom:3px;left:50%;margin-left:-3px}.ticker-nav .nav-item a.active h5{color:#1652f0}.ticker-nav .nav-item-last{-webkit-box-flex:6;-ms-flex-positive:6;flex-grow:6}.search-form .input-box{position:relative}.search-form .input-box button{position:absolute;top:0;right:0;background:transparent;width:50px;height:55px;border:none;cursor:pointer}.search-form .input-box button:focus,.search-form .input-box button:active{outline:0;-webkit-box-shadow:none;box-shadow:none}.search-form .input-box input[type='text']{height:56px;border:none;border-bottom:1px solid #b5d6ff;-webkit-border-radius:0;-o-border-radius:0;border-radius:0}.search-form .input-box input[type='text']:focus,.search-form .input-box input[type='text']:active{outline:0;-webkit-box-shadow:none;box-shadow:none}.coin-list{margin-bottom:0;border-bottom:none}.coin-list .active{color:#c99445}.coin-list thead th{border:none;font-size:13px;font-family:"Quicksand", sans-serif;color:#a2a2a2;font-weight:300}.coin-list tbody tr{background:#fefff2;transition:all .3s}.coin-list tbody tr:nth-of-type(2n){background:#fefff2}.coin-list tbody tr:hover{background:#fefff2;box-shadow:0 0.5rem 1rem rgba(0,0,0,0.15) !important;transform:scale(1.05)}.coin-list tbody tr:hover:nth-of-type(2n){background:#fefff2}.coin-list tbody tr td{border-top:none;color:#9292AC;padding:18px 15px}.coin-list tbody tr td b{color:#a2a2a2}.favorite-coin{padding:0 20px;position:relative;cursor:pointer}.favorite-coin:before{content:"\f005";font-weight:300;font-family:Font Awesome\ 5 Free}.favorite-coin.active:before{content:"\f005";font-weight:900;color:#ff7700}.activity-section{padding:120px 0 90px 0}.activity-block{margin-bottom:30px;padding:40px 30px;background:#fff;-webkit-box-shadow:0px 20px 45px 0px rgba(0,0,0,0.05);box-shadow:0px 20px 45px 0px rgba(0,0,0,0.05)}.activity-block img{margin-bottom:25px}.activity-block h4{font-weight:700;margin-bottom:20px;color:#0b132d}.activity-block p{margin-bottom:0}.wallets-section{padding-bottom:120px}.wallets-block{text-align:center}.wallets-block>img{display:inline;margin-bottom:35px}.wallets-block>img+h5{margin-bottom:8px}.wallets-block h5{line-height:20px;font-weight:600}.wallets-block .base-color{margin-bottom:45px}.download-option-block{margin-bottom:50px}.download-wrap-inner{display:block}.download-wrap-inner{margin-bottom:20px}.download-wrap-inner+h4{font-weight:700;font-size:15px}.download-wrap{position:relative;display:inline-block;margin-right:50px}.download-wrap:last-of-type{margin-right:0px}.download-wrap .input-hidden{position:absolute;left:-9999px}.download-wrap input[type=radio]+label>i.fab{height:70px;width:70px;color:#0b132d;border:1px solid #e8e9eb;border-radius:50%;text-align:center;line-height:65px;font-size:28px;cursor:pointer;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%}.download-wrap input[type=radio]:checked+label>i.fab{background:#1652f0;color:#fff}.download-btn{width:200px;height:60px;font-weight:500;background:#1652f0;color:#fff;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.download-btn:active,.download-btn:focus,.download-btnfocus:active{outline:none;-webkit-box-shadow:none;box-shadow:none}.banner-block{padding:1px 0 1px 0;position:relative;height:492px;box-sizing:border-box}.banner-block img{width:100%;height:100%;object-fit:cover}.banner-content{text-align:center;margin-bottom:100px}.banner-content h2{font-weight:700;color:#fff;margin-bottom:30px}.banner-content p{color:#fff;font-size:17px;line-height:28px;margin-bottom:57px}.banner-content .subs-form .input-box{max-width:570px;position:relative;margin:0 auto}.banner-content .subs-form input{border:none;height:55px;padding:0 175px 0 25px;background:#fff}.banner-content .subs-form input:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}.banner-content .subs-form button{position:absolute;right:0;top:0;min-width:170px;height:55px;background:#1652f0;color:#fff;border:none;outline:0;-webkit-box-shadow:none;box-shadow:none;font-weight:700;cursor:pointer;border-radius:0 3px 3px 0;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;-ms-border-radius:0 3px 3px 0;-o-border-radius:0 3px 3px 0}.banner-content .subs-form button:active,.banner-content .subs-form button:focus{border:none;outline:0;-webkit-box-shadow:none;box-shadow:none}.catagori-section{margin-bottom:120px}.catagori-content-block{display:-webkit-box;display:-ms-flexbox;display:flex}.catagori-list{-ms-flex-preferred-size:30%;flex-basis:30%}.catagori-list .nav{display:block}.catagori-list .nav-link{padding:18px;border-bottom:1px solid #e2e3e5}.catagori-list .nav-link h4{margin-bottom:0;font-weight:700;color:#0b132d}.catagori-list .nav-item{text-align:left}.catagori-list .nav-link:hover,.catagori-list .nav-link:focus,.catagori-list .nav-link.active{border-color:transparent;-webkit-box-shadow:0px 5px 5px 0px rgba(0,0,0,0.08);box-shadow:0px 5px 5px 0px rgba(0,0,0,0.08)}.catagori-list .nav-link.active h4{color:#1652f0}.catagoritab-content{-ms-flex-preferred-size:70%;flex-basis:70%;padding:0 0 0 100px}.catagori-content>p{margin-bottom:26px}.catagori-content img{margin-bottom:26px}.pros-cons-block .cons-block,.pros-cons-block .pros-block{display:-webkit-box;display:-ms-flexbox;display:flex}.pros-cons-block h5,.pros-cons-block p{margin:0}.pros-cons-block h5{font-weight:700;padding-right:10px}.pros-cons-block p{margin-top:-4px}.pros-cons-block .pros-block{margin-bottom:15px}.modal-backdrop{background:#1b1e63}.modal-container .modal-content{background:transparent;border-color:transparent;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.modal-container .modal-body{padding:0;background:#fff;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.modal-container .modal-header{text-align:center;background:#1b1e63}.modal-container .modal-header h5{font-size:24px;font-weight:700;color:#fff}.modal-container .modal-header .close{color:#fff}.modal-container .modal-header .close:focus{outline:none}.modal-container .modal-info-block{text-align:center;padding-top:30px}.modal-container .modal-info-block p{margin-bottom:18px}.modal-container .modal-info-block .block-inner{padding:8px 25px;background:#f7f7f7;display:inline-block;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.modal-container .modal-info-block .block-inner p{margin-bottom:0}.modal-container .modal-info-block .block-inner span{font-size:14px;font-weight:700;color:#00c162}.modal-container .user-connected-form-block{-webkit-box-shadow:none;box-shadow:none;border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;-o-border-radius:0 0 5px 5px}.modal-container .user-connected-form-block p{text-align:left}.modal-container .user-connected-form-block .btn-default,.modal-container .user-connected-form-block .form-control{border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.modal-container .user-signup-form select{font-size:15px}.modal-container .user-signup-form select:focus,.modal-container .user-signup-form select:active,.modal-container .user-signup-form select:focus:active{outline:none;-webkit-box-shadow:none;box-shadow:none;border-color:#e8e9eb}.user-login-form .pass-remember-block{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.user-login-form .custom-checkbox .custom-control-label::before{border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px}.news-headlines-slider a{color:#fefefe;line-height:18px;transition:all 0.3s ease-in;-webkit-transition:all 0.3s ease-in;-moz-transition:all 0.3s ease-in;-ms-transition:all 0.3s ease-in;-o-transition:all 0.3s ease-in}.news-headlines-slider a:hover{color:#fff}.subheader{background:url("~@/assets/img/bg/2.jpg") no-repeat bottom center;padding:255px 0 120px 0;background-size:cover;text-align:center;position:relative}.subheader h3,.subheader p{font-weight:700;color:#fcfdff}.subheader p{line-height:24px;font-weight:300;margin-bottom:15px}.subheader h3{margin-bottom:25px}.subheader-search{width:50%;margin:0 auto;position:absolute;bottom:30px;left:0;right:0}.subheader-search .form-control{background:transparent}.subheader-search .input-box input[type='text']{color:#fff;border-bottom:1px solid rgba(255,255,255,0.15);border-radius:5px;font-size:15px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.subheader-search .input-box button .fa{color:#fff;font-size:15px}.subheader-search ::-webkit-input-placeholder{color:#fff;opacity:1}.subheader-search :-ms-input-placeholder{color:#fff;opacity:1}.subheader-search ::-ms-input-placeholder{color:#fff;opacity:1}.subheader-search ::placeholder{color:#fff;opacity:1}.subheader-search :-ms-input-placeholder{color:#fff}.subheader-search ::-ms-input-placeholder{color:#fff}.contact-form-wrap{padding:120px 0}.contact-form .form-row{margin-right:-15px;margin-left:-15px}.contact-form .form-row>.col,.contact-form .form-row>[class*=col-]{padding-right:15px;padding-left:15px}.contact-form .form-group{margin-bottom:30px}.contact-form .form-control{background:#fff;border:1px solid #e8e9eb;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.contact-form .form-control:focus,.contact-form .form-control:active,.contact-form .form-control:focus:active{outline:none;-webkit-box-shadow:none;box-shadow:none}.contact-form input.form-control{padding:0 20px;min-height:55px}.contact-form textarea{resize:none}.contact-form .custom-checkbox{position:relative;padding:18px 15px;border:1px solid #e8e9eb;border-radius:5px;display:inline-block;min-width:300px;margin-bottom:0;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.contact-form .custom-checkbox .custom-checkbox-wrap{position:relative;padding-left:30px}.contact-form .custom-checkbox img{position:absolute;right:10px;top:5px;width:50px;height:50px}.contact-form .btn-default{width:200px;height:55px;text-align:center;border-radius:5px;background:#1652f0;font-weight:700;color:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.contact-form .btn-default:focus,.contact-form .btn-default:active,.contact-form .btn-default:focus:active{outline:none;-webkit-box-shadow:none;box-shadow:none;border-color:transparent}.custom-checkbox .custom-control-label::before{border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0}.contact-info-outer{padding-bottom:120px}.contact-info-wrap{border:1px solid #e8e9eb;-webkit-box-shadow:0px 20px 45px 0px rgba(0,0,0,0.05);box-shadow:0px 20px 45px 0px rgba(0,0,0,0.05);border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.map-block{height:400px;width:100%}.contact-info-block{padding:0 160px 0 130px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.contact-info-block h4{font-size:24px;font-weight:700;color:#0b132d;margin-bottom:45px}.contact-info-list{margin:0;padding:0;list-style:none;text-align:left}.contact-info-list li{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.contact-info-list li img{margin:10px 15px 0 0}.contact-info-list li p{margin-bottom:25px}.contact-info-list li:last-child p{margin-bottom:0}.lattest-news-section{margin-bottom:60px}.lattest-news-section .setion-title-two{margin-bottom:60px}.post-style-one{padding:40px 30px;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;background:#fff;border:1px solid #e8e9eb}.post-style-one .post-metat-date{display:block;font-size:14px;margin-bottom:5px}.post-style-one .post-title{font-weight:700;margin-bottom:20px}.post-style-one .post-title a{color:#0b132d}.post-style-one .post-entry{margin-bottom:20px}.post-style-one .post-link{font-weight:700;font-size:14px;color:#1652f0}.features-section{padding:120px 0 40px 0}.features-block{margin-bottom:70px;text-align:center}.features-block img{margin:0 auto 30px auto;display:block}.features-block h4{margin-bottom:20px;font-weight:700;color:#1c2437}.features-block p{margin-bottom:0}.colto-section{background:#101854 url("~@/assets/img/img18.jpg") no-repeat center center;background-size:cover;margin-bottom:-48px}.colto-content-wrap{text-align:center;height:302px}.colto-content-wrap .title{font-size:40px;font-family:PingFang SC;font-weight:800;color:#172636;text-align:center;margin-bottom:40px}.colto-btn-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.colto-btn-group span{font-weight:700;color:#fff;height:34px;width:34px;margin:0 15px;display:block;text-align:center;line-height:34px;border-radius:50%;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%;border:1px solid rgba(252,253,255,0.08)}.callto-btn{width:180px;height:46px}.testimonials-section{padding:120px 0 160px 0;border-top:1px solid rgba(0,0,0,0.08)}.testimonials-title{text-align:center;margin-bottom:55px}.testimonials-title h3{font-size:36px;font-weight:700;color:#0b132d}.testimonial-slider{padding:50px 75px;background:#fff;position:relative;-webkit-box-shadow:0px 20px 45px 0px rgba(0,0,0,0.05);box-shadow:0px 20px 45px 0px rgba(0,0,0,0.05)}.testimonial-slider button.slick-next,.testimonial-slider button.slick-prev{position:absolute;top:50%;color:transparent;border:none;outline:none;height:20px;width:20px;cursor:pointer;background:transparent}.testimonial-slider button.slick-next:before,.testimonial-slider button.slick-prev:before{font-family:Font Awesome\ 5 Free;color:#5f5f5f;font-weight:900;font-size:18px}.testimonial-slider button.slick-next{right:-43px}.testimonial-slider button.slick-next:before{content:"\f105"}.testimonial-slider button.slick-prev{left:-43px}.testimonial-slider button.slick-prev:before{content:"\f104"}.testimonial-slider .slick-slide{outline:none}.testimonial-slider .slick-dots{list-style:none;position:absolute;width:100%;margin:0 auto;padding:0;text-align:center;left:0;bottom:-43px;display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.testimonial-slider .slick-dots li{line-height:100%;margin:8px 15px 0 0}.testimonial-slider .slick-dots li:last-child{margin-right:0px}.testimonial-slider .slick-dots li button{color:transparent;border:none;outline:none;height:8px;width:8px;padding:0;cursor:pointer;background:rgba(22,82,240,0.5);border-radius:50%;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%}.testimonial-slider .slick-dots li.slick-active{margin-top:5px !important}.testimonial-slider .slick-dots li.slick-active button{height:14px;width:14px;background:#1652f0}.testimonial-block{text-align:center}.testimonial-block:focus{outline:none}.testimonial-block img{display:block;margin:0 auto 35px auto}.testimonial-block p{font-size:18px;line-height:30px}.testimonials-author h5{font-weight:700;margin-bottom:5px;color:#1c2437}.testimonials-author p{margin-bottom:0;font-size:15px}.support-category-section{padding:120px 0 50px 0}.support-category-block{padding:40px 0;border:1px solid #e8e9eb;text-align:center;border-radius:5px;margin-bottom:30px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.support-category-block img{display:block;margin:0 auto 35px auto}.support-category-block h4{font-weight:700;margin-bottom:0;color:#1c2437}.support-list-section{border-top:1px solid #e8e9eb;padding:80px 0 40px 0}.support-list,.others-support-list{list-style:none;margin:0;padding:0}.support-list li,.others-support-list li{margin-bottom:15px}.support-list li:last-child,.others-support-list li:last-child{margin-bottom:0}.support-list li a,.others-support-list li a{transition:all 0.3s ease-in;-webkit-transition:all 0.3s ease-in;-moz-transition:all 0.3s ease-in;-ms-transition:all 0.3s ease-in;-o-transition:all 0.3s ease-in}.support-list li a:hover,.others-support-list li a:hover{color:#1652f0}.support-list li.colord a,.others-support-list li.colord a{text-decoration:underline;color:#1652f0}.support-list-block h5,.others-support-list-block h5{margin-bottom:30px;color:#0b132d;font-weight:700;font-size:18px;text-transform:uppercase}.others-support-list-block{padding:47px 0;border-top:1px solid;border-bottom:1px solid;border-color:#e8e9eb}.others-support-list-section{padding:0 0 120px 0}.user-login-signup-section{padding:290px 0 180px 0;background:url("~@/assets/img/bg/5.jpg") no-repeat center center;background-size:cover}.user-login-signup-form-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.user-login-signup-form-wrap .modal-content{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-preferred-size:50%;flex-basis:50%}.user-login-signup-form-wrap .modal-content>h3{font-size:24px;font-weight:700;color:#fff;margin:0 auto 45px auto}.dashboard-fullwidth{padding:0 50px}.dashboard-fullwidth .col-form-label{font-size:10px}.exchange-chart-block{margin-bottom:20px;padding:15px;border:1px solid #e8e9eb}.order-count-dropdown button.dropdown-toggle{background:transparent;border:none}.order-count-dropdown button.dropdown-toggle:focus,.order-count-dropdown button.dropdown-toggle:hover,.order-count-dropdown button.dropdown-toggle:active{-webkit-box-shadow:none;box-shadow:none;border:none}.order-count-dropdown button.dropdown-toggle:after{content:none}.order-count-dropdown button.dropdown-toggle:before{position:absolute;font-size:14px;top:8px;right:-3px;content:'\f107';font-family:Font Awesome\ 5 Free;font-weight:600;color:#a2a2a2}.order-count-dropdown .dropdown-menu{min-width:auto}.dahboard-order-block,.das-market-block,.order-history-block{width:100%}.dahboard-order-block{-webkit-border-radius:5px;-o-border-radius:5px;border-radius:5px;border:1px solid #f0f0f0}.das-market-nav,.das-oreder-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-bottom:1px solid #f0f0f0}.das-market-nav .nav-item,.das-oreder-nav .nav-item{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;min-width:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.das-market-nav .nav-item a,.das-oreder-nav .nav-item a{padding:0px;margin:0 auto}.das-market-nav .nav-item-first,.das-oreder-nav .nav-item-first{-webkit-box-flex:6;-ms-flex-positive:6;flex-grow:6}.das-market-nav .nav-item-first a,.das-oreder-nav .nav-item-first a{text-align:left;color:#1c2437;font-weight:500;font-size:14px}.das-market-nav li,.das-oreder-nav li{height:35px;text-align:center;border-right:1px solid #f0f0f0}.das-market-nav li:last-child,.das-oreder-nav li:last-child{border:none}.das-oreder-table{border-bottom:1px solid #f0f0f0;margin-bottom:0}.das-oreder-table thead th{border:none;font-weight:500;font-size:12px;color:#a2a2a2}.das-oreder-table td{position:relative;border-top:none;background:#fff}.das-oreder-table td span{z-index:2;font-weight:600;font-size:13px;position:relative}.rate-ratio{position:absolute;right:0;top:50%;bottom:1px;z-index:1;height:20px;width:30px;-webkit-transform:translateY(-10px);-ms-transform:translateY(-10px);transform:translateY(-10px);background:#fcedeb}.das-oreder-table.das-buy-table thead th{border-bottom:1px solid #f0f0f0}.das-oreder-table.das-buy-table thead h4{font-weight:600;margin-bottom:0;font-size:14px}.das-oreder-table.das-buy-table thead h4,.das-oreder-table.das-buy-table thead img{display:inline-block}.das-oreder-table.das-buy-table .rate-ratio{background:#ebfaf3}.das-market-tab-pane{height:500px;position:relative}.history-table,.das-market-table{height:500px}.history-table .favorite-coin,.das-market-table .favorite-coin{padding:0 10px;font-size:11px}.history-table tbody tr,.das-market-table tbody tr{border-bottom:1px solid transparent}.history-table tbody tr:hover,.das-market-table tbody tr:hover{background:#e6f1ff}.history-table tbody tr td,.das-market-table tbody tr td{padding:6px 5px;font-size:13px}.market-new-ticker-block{background:#fff;margin-bottom:25px;border:1px solid #e8e9eb;-webkit-border-radius:5px;-o-border-radius:5px;border-radius:5px}.market-new-ticker-block .search-form .input-box button{height:36px}.market-new-ticker-block .search-form .input-box input[type='text']{height:36px;border-bottom:1px solid #f0f0f0}.market-new-ticker-block .ticker-nav .nav-item{min-width:0}.market-new-ticker-block .ticker-nav .nav-item a{padding:8px 5px;font-size:13px}.market-new-ticker-block .ticker-nav .nav-item:last-child a{border-right:none}.order-history-block{-webkit-border-radius:5px;-o-border-radius:5px;border-radius:5px;border:1px solid #f0f0f0}.order-history-block .history-table tbody tr td{padding:6px 15px}.order-history-block-inner{height:695px;position:relative}.order-history-block-inner table{margin-bottom:0}.dark-blue-bg .dahboard-order-block,.dark-blue-bg .dahboard-market-block{border:1px solid rgba(255,255,255,0.06)}.dark-blue-bg .das-oreder-nav,.dark-blue-bg .das-market-nav{border-bottom:1px solid rgba(255,255,255,0.1)}.dark-blue-bg .das-oreder-nav li,.dark-blue-bg .das-market-nav li{border-right:1px solid rgba(255,255,255,0.06)}.dark-blue-bg .das-oreder-nav li.nav-item:not(.nav-item-first),.dark-blue-bg .das-market-nav li.nav-item:not(.nav-item-first){background:rgba(255,255,255,0.05)}.dark-blue-bg .das-oreder-nav li:last-child,.dark-blue-bg .das-market-nav li:last-child{border:none}.dark-blue-bg .new-ticker-block{border:1px solid rgba(255,255,255,0.06)}.dark-blue-bg .market-new-ticker-block .search-form .input-box input[type='text']{background:transparent;border-left:1px solid rgba(255,255,255,0.1)}.dark-blue-bg .search-form .input-box input[type='text']{border-bottom:none}.dark-blue-bg .search-form .input-box button{color:#fff}.dark-blue-bg .market-new-ticker-block .ticker-nav .nav-item{background:rgba(255,255,255,0.05)}.dark-blue-bg .ticker-nav{border-bottom:1px solid rgba(255,255,255,0.1)}.dark-blue-bg .ticker-nav .nav-item a{background:transparent;color:#fff;border-right:1px solid rgba(255,255,255,0.1);border-bottom:none}.dark-blue-bg .nav-tabs .nav-link.active{border:none;background:rgba(255,255,255,0.05)}.dark-blue-bg .das-market-nav .nav-item-first a,.dark-blue-bg .das-oreder-nav .nav-item-first a{color:#fff;background:rgba(255,255,255,0.05)}.dark-blue-bg .order-count-dropdown button.dropdown-toggle{color:#797979}.dark-blue-bg .das-oreder-table{border-bottom:1px solid rgba(255,255,255,0.06)}.dark-blue-bg .das-oreder-table thead{background:rgba(255,255,255,0.05);color:rgba(255,255,255,0.5)}.dark-blue-bg .das-oreder-table thead th{font-weight:500;font-size:12px;color:#a2a2a2}.dark-blue-bg .das-oreder-table td{background:transparent}.dark-blue-bg .das-oreder-table td span:not(.color-sell):not(.color-buy){color:#fff}.dark-blue-bg .das-oreder-table td .rate-ratio{background:rgba(221,25,0,0.08)}.dark-blue-bg .das-oreder-table.das-buy-table .rate-ratio{background:rgba(0,193,98,0.08)}.dark-blue-bg .market-new-ticker-block{background:transparent}.dark-blue-bg .order-history-block{border:1px solid rgba(255,255,255,0.05)}.dark-blue-bg .panel-heading-block{background:rgba(255,255,255,0.05)}.dark-blue-bg .panel-heading-block h5{color:#fff}.dark-blue-bg .coin-list tbody tr{background:transparent}.dark-blue-bg .coin-list thead{background:rgba(255,255,255,0.1)}.dark-blue-bg .latest-tranjections-table thead th{background:rgba(255,255,255,0.05);border:none}.dark-blue-bg .parent-order-tab .nav-item a.nav-link{background:rgba(255,255,255,0.05)}.dark-blue-bg .tv_orde_table,.dark-blue-bg .tv_ammount-form-block .form-input-block .form-control,.dark-blue-bg .tv_orde_table.table td,.dark-blue-bg .tv_orde_table.table th,.dark-blue-bg .tv_orde_table thead th.tv_orde_1st_th,.dark-blue-bg .parent-order-tab .nav-item a.nav-link,.dark-blue-bg .panel-heading-block,.dark-blue-bg .coin-list tbody tr,.dark-blue-bg .das-oreder-table.das-buy-table thead th,.dark-blue-bg .exchange-chart-block,.dark-blue-bg .latest-tranjections-block-inner{border-color:#192030}.dark-blue-bg .latest-tranjections-block{border:1px solid rgba(255,255,255,0.05)}.dark-blue-bg .latest-tranjections-block .panel-heading-block{border:1px solid rgba(255,255,255,0.05)}.dark-blue-bg .col-form-label{color:#797979}.dark-blue-bg .tv_ammount-form-block .readonly .form-control[readonly],.dark-blue-bg .tv_ammount-form-block .form-input-block .tv-btc-tag,.dark-blue-bg .form-control{background-color:#1b2334}.dark-blue-bg .currency-rate .currency-convert .dropdown .btn{color:#fff}.dark-blue-bg .currency-rate .update-rate .currency-info>span{color:#717f9d}.dark-blue-bg .currency-rate .update-rate .currency-info h6{color:#fff}.dark-blue-bg .currency-rate .update-rate .currency-info h6.color-buy{color:#00c162}.dark-blue-bg .ticker-nav .nav-item a h5{color:#fff}.dark-blue-bg .ticker-nav .nav-item a.active{color:#0978ff}.dark-blue-bg .ticker-nav .nav-item a.active h5{color:#0978ff}.dark-blue-bg .history-table tr td,.dark-blue-bg .das-market-table tr td{color:#fff}.parent-order-tab{border:none}.parent-order-tab .nav-item{margin-bottom:0}.parent-order-tab .nav-item a.nav-link{border:1px solid #f0f0f0;background:#fff}.parent-order-tab .nav-item a.nav-link h5{margin:0;font-weight:600}.parent-order-tab .nav-item a.nav-link.active{color:#1652f0;background:transparent}.tv_orde_table{border:1px solid #f0f0f0;-webkit-border-radius:5px;-o-border-radius:5px;border-radius:5px}.tv_orde_table thead th{border:none;font-size:12px;color:#a2a2a2}.tv_ammount-form-block .form-input-block{position:relative}.tv_ammount-form-block .form-input-block .tv-btc-tag{position:absolute;right:21px;top:1px;height:36px;width:30px;text-align:center;color:#c1c1c1;line-height:38px;background:#fff}.tv_ammount-form-block .form-input-block .form-control{border:1px solid #f0f0f0;height:40px}.tv_ammount-form-block .form-input-block .form-control:focus,.tv_ammount-form-block .form-input-block .form-control:active{-webkit-box-shadow:none;box-shadow:none}.tv_ammount-form-block .readonly .tv-btc-tag{background:#f7f7f7}.tv_ammount-form-block .readonly .form-control[readonly]{background:#f7f7f7}.tv_ammount-form-block .amcharts-axis-label tspan{color:#fff !important}.tv_ammount-form-two .form-input-block .tv-btc-tag{right:50px;color:#827f7f}.dashboard-body{margin-bottom:30px}.order-form-area-block table{margin-bottom:0}#chartdiv{width:100%;height:350px;margin-top:-20px}#chartdiv_2{height:530px}.amcharts-axis-title{display:none}.amcharts-balloon-div-categoryAxis{display:none}.tradingview-widget-container{margin-bottom:10px}.latest-tranjections-block-inner{border:1px solid #e8e9eb;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;position:relative}.latest-tranjections-block-inner .panel-heading-block h5{color:#192030;font-weight:600}.latest-tranjections-table{margin-bottom:0;border-radius:5px}.latest-tranjections-table thead th{color:#a2a2a2;background:#fafafa;border-bottom:1px solid #e8e9eb}.latest-tranjections-table tbody tr{border:none}.latest-tranjections-table tbody tr td{font-weight:500;padding:10px 15px}.login-warning-block{position:absolute;top:50%;width:100%;left:0;right:0;text-align:center}.login-warning-block img{display:block;margin:0 auto 10px auto}.login-warning-block p{margin-bottom:0}.login-warning-block a{color:#1652f0}.btc-parcentage{list-style:none;margin:0;padding:0;font-size:0}.btc-parcentage li{display:inline-block;padding:8px 0;width:25%;text-align:center}.btc-parcentage li a{font-size:16px;color:#fff}.total-btc,.usd-ammount{display:block;text-align:right;padding:6px 0 0 0;font-size:16px;color:#fff}.currency-rate{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:15px 50px;border:1px solid #e8e9eb;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.currency-rate .currency-convert{padding-right:30px;border-right:1px solid rgba(0,0,0,0.06)}.currency-rate .currency-convert .dropdown .dropdown-toggle{background:transparent;font-weight:700}.currency-rate .currency-convert .dropdown .btn:focus{-webkit-box-shadow:none;box-shadow:none}.currency-rate .update-rate{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:40px}.currency-rate .update-rate .currency-info{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.currency-rate .update-rate .currency-info>span{font-size:14px;color:#797979;font-weight:600}.currency-rate .update-rate .currency-info h6{font-size:15px;font-weight:700}.currency-rate .update-rate .currency-info h6 .transmoney{font-size:13px;font-weight:500}.currency-rate-v2{border-color:transparent}sub.transmoney-value{bottom:0px}.currency-info-base{color:#c6cbdb;font-weight:700}.form-top-block{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:30px}.form-top-block span{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:16px;color:#fff}.order-form-area-block{margin-bottom:30px}.latest-tranjections-area{padding-bottom:120px}.not-login{padding-bottom:50px}.tv_orde_table thead th.tv_orde_1st_th{border-right:1px solid #e8e9eb}.new-ticker-block-wrap{border-radius:10px}.teanding-info-block{padding:120px 0}.teanding-info-block table{border:1px solid #e8e9eb}.teanding-info-block table thead tr th:first-child{padding:15px;text-align:center;border-right:1px solid #e8e9eb}.teanding-info-block table tbody tr td{padding:15px}.teanding-info-block table tbody tr td:first-child{text-align:center;border-right:1px solid #e8e9eb}.teanding-info-block table tbody tr td img{display:inline-block;margin-right:8px}.teanding-info-block table tbody tr td span{vertical-align:middle}.teanding-info-block .search-form input[type='text']{height:50px;min-width:270px;border:1px solid #e8e9eb;-webkit-border-radius:5px;-o-border-radius:5px;border-radius:5px}.teanding-info-block .search-form button{height:50px}.trending-info-currency-option .dropdown-toggle{background:#f7f7f7;color:#797979;min-width:150px;min-height:50px;vertical-align:middle;position:relative;border:1px solid #e8e9eb}.trending-info-currency-option .dropdown-toggle:focus,.trending-info-currency-option .dropdown-toggle:active{-webkit-box-shadow:none;box-shadow:none}.trending-info-currency-option .dropdown-toggle:after{position:absolute;right:25px;top:21px}.trending-info-currency-option .dropdown-menu{min-width:150px}.trending-info-currency-option .dropdown-item.active,.trending-info-currency-option .dropdown-item:active{background:#f7f7f7;color:#797979}.trending-info-currency-option i.fas{background:#fff;border:1px solid #e8e9eb;height:26px;width:26px;vertical-align:middle;font-size:13px;line-height:25px;text-align:center;color:#1c2437;-webkit-border-radius:50%;-o-border-radius:50%;border-radius:50%;position:absolute;left:15px}.trending-info-currency-option .btn-primary:not(:disabled):not(.disabled).active,.trending-info-currency-option .btn-primary:not(:disabled):not(.disabled):active,.trending-info-currency-option.show>.btn-primary.dropdown-toggle{background:#f7f7f7;color:#797979;border:1px solid #e8e9eb;-webkit-box-shadow:none;box-shadow:none}.trending-info-tab{margin-bottom:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.trending-info-tab .nav-item{-webkit-box-flex:initial;-ms-flex-positive:initial;flex-grow:initial;min-width:100px}.account-server-info-block{border:1px solid #e8e9eb;margin-top:30px}.account-table{margin-bottom:0}.account-table thead tr th{border:none;text-align:right;color:#a2a2a2}.account-table thead tr th:first-child{text-align:left}.account-table tbody tr{background:#fff;text-align:right}.account-table tbody tr td:first-child{text-align:left}.working-process-section{padding:120px 0 80px 0}.working-process-list{margin:0;padding:0;list-style:none}.working-process-list li+li{margin-top:55px}.working-process-step h4{font-weight:700;color:#0b132d;margin-bottom:10px}.working-process-step h4 span{color:#1652f0}.process-details{margin-left:15px;padding:10px 0 0 35px;position:relative}.process-details p{margin-bottom:0}.process-details:before{content:url("~@/assets/img/others/19.png");position:absolute;left:0;top:9px}.user-connected-form-block{padding:40px 40px 45px 40px;background:#fff;-webkit-box-shadow:0px -20px 45px 0px rgba(0,0,0,0.05);box-shadow:0px -20px 45px 0px rgba(0,0,0,0.05)}.user-connected-form-block h3{font-size:24px;line-height:36px;font-weight:700;color:#1c2437;margin-bottom:30px}.user-connected-form-block p{margin:0 auto;text-align:center;font-size:14px}.user-connected-form-block p a{color:#1652f0}.user-connected-from input{border-radius:0px;-webkit-border-radius:0px;-moz-border-radius:0px;-ms-border-radius:0px;-o-border-radius:0px;min-height:50px;padding:0 20px;border:1px solid #e8e9eb}.user-connected-from input:focus{outline:none;-webkit-box-shadow:none;box-shadow:none;border-color:#e8e9eb}.user-connected-from .form-group{margin-bottom:30px}.user-connected-from .btn-default{width:100%;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;background:#1652f0;color:#fff;font-weight:700;font-size:15px;min-height:50px;margin-bottom:20px}.user-connected-from .btn-default:active,.user-connected-from .btn-default:focus:active,.user-connected-from .btn-default:focus{outline:none;-webkit-box-shadow:none;box-shadow:none}.counter-section.counter-style-two{padding:210px 0 286px 0}.counter-section{position:relative;overflow:hidden;padding:210px 0 120px 0;background:url(~@/assets/img/bg/3.png) no-repeat top -10px center}.counter-block{text-align:center;margin-bottom:30px}.counter-block h3{color:#1652f0;font-weight:700;margin-bottom:10px}.counter-block p{margin-bottom:0;font-size:18px}.counter-vintage{position:absolute;right:0;left:0;bottom:-90px;margin:0 auto}.counter-vintage img{display:block;margin:0 auto}.app-download-section{padding:120px 0 90px 0;background-image:-moz-linear-gradient(90deg, white 0%, rgba(22,82,240,0.03) 100%);background-image:-webkit-linear-gradient(90deg, white 0%, rgba(22,82,240,0.03) 100%);background-image:-ms-linear-gradient(90deg, white 0%, rgba(22,82,240,0.03) 100%)}.download-options-list{margin:0 auto;padding:0;list-style:none;text-align:center}.download-options-list li{display:inline-block;margin:0 30px 30px 0}.download-options-list li:last-child{margin-right:0}.apps-download-btn{display:-webkit-box;display:-ms-flexbox;display:flex;min-width:200px;padding:12px 25px;border:1px solid #e8e9eb;background:#fff;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.apps-download-btn:focus,.apps-download-btn:active,.apps-download-btn:focus:active{outline:none;-webkit-box-shadow:none;box-shadow:none}.apps-download-btn p{margin:0}.apps-download-btn i.fab,.apps-download-btn i.fas{font-size:30px;color:#1652f0}.apps-download-btn .btn-content{padding-left:15px;text-align:left}.apps-download-btn .btn-content span{font-size:14px}.apps-download-btn .btn-content p{font-size:16px;font-weight:700;line-height:20px}.latest-post-section{padding:120px 0 60px 0}.post-style-two.post-full-width{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:80px}.post-style-two.post-full-width .post-contnet-wrap{padding:100px 100px 101px 50px}.post-style-two.post-full-width .post-thumb{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-preferred-size:50%;flex-basis:50%}.post-style-two.post-full-width .post-meta{margin-bottom:8px}.post-style-two.post-full-width .post-title{margin-bottom:26px}.post-style-two.post-full-width .post-title a{font-size:24px}.post-style-two.post-full-width .post-entry{margin-bottom:60px}.post-style-two{margin-bottom:60px}.post-style-two .post-contnet-wrap{padding:22px 30px 18px 30px;background-color:#fff;border:1px solid #e8e9eb;transition:all 0.3s ease-in;-webkit-transition:all 0.3s ease-in;-moz-transition:all 0.3s ease-in;-ms-transition:all 0.3s ease-in;-o-transition:all 0.3s ease-in}.post-style-two .post-contnet-wrap:hover{-webkit-box-shadow:0px 20px 45px 0px rgba(0,0,0,0.05);box-shadow:0px 20px 45px 0px rgba(0,0,0,0.05)}.post-style-two .post-thumb img,.post-style-two .post-thumb a{display:block}.post-style-two .post-meta{font-size:14px;color:#1652f0;display:block;margin-bottom:5px}.post-style-two .post-title{margin-bottom:25px}.post-style-two .post-title a{color:#1c2437;font-size:18px;font-weight:700}.post-style-two .post-entry{margin-bottom:35px}.post-style-two .post-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.post-style-two .author-thumb img{border-radius:50%;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%;display:block;margin-right:12px}.post-style-two .post-comments,.post-style-two .post-author-block,.post-style-two .post-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.post-style-two .author-info h5{font-size:14px;font-weight:700}.post-style-two .post-comments img{margin-right:9px}.blog-details-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:120px 0 40px 0}.blog-details-wrapper .info{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-preferred-size:20%;flex-basis:20%}.blog-details-wrapper .info .post-author-block{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:42px}.blog-details-wrapper .info .post-author-block a{display:block}.blog-details-wrapper .info .author-info h5{font-weight:700;margin-bottom:0;font-size:14px;color:#5f5f5f}.blog-details-wrapper .info .author-thumb{margin-right:15px}.blog-details-wrapper .info .post-meta-block span{color:#1652f0;display:block;margin-bottom:10px}.blog-details-wrapper .info .post-comments{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.blog-details-wrapper .info .post-comments img{margin:0 15px 0 0}.details-post-meta-block{padding:50px 0;background:#fff;border-top:1px solid;border-bottom:1px solid;border-color:#e8e9eb}.post-tag-block h5{margin-bottom:15px;font-weight:700;color:#1c2437}.post-tag-block .tags a{padding:3px 15px;border:1px solid #e8e9eb;margin-right:5px;font-size:12px;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;-webkit-transition:all 0.3s ease-in;-o-transition:all 0.3s ease-in;transition:all 0.3s ease-in}.post-tag-block .tags a:hover{border-color:#1652f0;color:#1652f0}.details-post-meta-block-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.details-post-meta-block-wrap .post-author-block{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.details-post-meta-block-wrap .post-author-block img{margin-right:15px}.details-post-meta-block-wrap .post-author-block .author-info h5{font-weight:700;margin-bottom:0}.single-post-block .post-thumb-block{margin-bottom:40px}.single-post-block .post-title{font-size:24px;font-weight:700;color:#0b132d;margin-bottom:20px}.single-post-block blockquote{padding:15px 30px;font-size:16px;font-weight:700;color:#0b132d}.single-post-block .list-post-entry{margin:0 0 30px 0;padding:0;list-style:none}.single-post-block .list-post-entry li i.fas{margin-right:20px;color:#aaaaaa}.single-post-block .list-post-entry li+li{margin-top:10px}.post-comment-block{display:-webkit-box;display:-ms-flexbox;display:flex}.post-comment-block .comment-respond,.post-comment-block .comment-area{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:60px 30px}.post-comment-block .comment-respond h4,.post-comment-block .comment-area h4{font-size:18px;font-weight:700;color:#1c2437;margin-bottom:42px}.post-comment-block .form-control{background:transparent}.post-comment-block .comment-respond{position:relative}.post-comment-block .comment-respond:before{position:absolute;content:'';top:60px;right:0;bottom:60px;width:1px;background:rgba(17,17,17,0.08)}.post-comment-block .comment-respond .form-group{margin-bottom:30px}.post-comment-block .comment-respond .form-group textarea{resize:none}.post-comment-block .comment-respond .form-group .form-control{height:50px;border:0;border-bottom:1px solid rgba(17,17,17,0.08);border-radius:0;font-size:14px;outline:none;-webkit-box-shadow:none;box-shadow:none}.post-comment-block .comment-respond .form-group .form-control:focus{border-bottom-color:#1652f0}.post-comment-block .comment-respond .form-group textarea.form-control{height:100px}.post-comment-block .comment-area .comments{padding:0;margin:0;list-style:none}.post-comment-block .comment-area .comments .comment .comment-wrap{padding-bottom:30px;border-bottom:1px solid rgba(17,17,17,0.08)}.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .commenter-thumb{height:55px;width:55px;border-radius:50%;overflow:hidden}.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .commenter-info{padding-left:20px}.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .commenter-info span{display:block}.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .commenter-info span.commenter-name{font-size:14px;font-weight:700;line-height:100%;color:#1c2437}.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .commenter-info span.date{font-size:12px;color:#5f5f5f}.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .reply{margin-left:auto}.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .reply .reply-button{font-size:12px;outline:none;-webkit-box-shadow:none;box-shadow:none;cursor:pointer;text-transform:uppercase;color:#fcfdff;background:#f7f9fc;color:#5f5f5f;border:1px solid #e8e9eb;border-radius:3px;padding:0px 15px;transition:all 0.3s ease-in;-webkit-transition:all 0.3s ease-in;-moz-transition:all 0.3s ease-in;-ms-transition:all 0.3s ease-in;-o-transition:all 0.3s ease-in}.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .reply .reply-button:hover{color:#1652f0;border-color:#1652f0}.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .reply .modal-body .comment-respond:before{height:0;width:0}.post-comment-block .comment-area .comments .comment .comment-wrap .comment-body{padding-top:12px;color:#5f5f5f}.post-comment-block .comment-area .comments .comment .comment-wrap .comment-body p{margin-bottom:5px}.post-comment-block .comment-area .comments .comment .child-comment{margin-left:40px;margin-top:30px}.post-comment-block .comment-area .comments .comment:last-child .child-comment .comment:last-child .comment-wrap{border-bottom:1px solid rgba(17,17,17,0.08);padding-bottom:30px}.post-comment-block .comment-area .comments .comment+.comment{margin-top:30px}.post-comment-block .comment-area .view-all{margin-top:20px;text-align:center;font-size:1.4rem;font-weight:500;color:#1652f0;text-decoration:underline}.comment-respond .btn-default{width:170px;height:55px;background:#1652f0;font-weight:700;color:#fff;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.comment-respond .btn-default:hover,.comment-respond .btn-default:active,.comment-respond .btn-default:active:focus{outline:none;-webkit-box-shadow:none;box-shadow:none}.support-details-section{padding:120px 0 0 0}.support-details-tab-nav h4{font-weight:700;color:#0b132d;margin-bottom:50px}.support-list .nav-tabs{border-color:transparent}.support-list .nav-link{padding:10px 20px;background:transparent;border:none;text-align:left;line-height:24px;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.support-list .nav-link.active{background:#1652f0;color:#fff}.support-details-content .sp-title{font-size:24px;font-weight:700;margin-bottom:30px;color:#0b132d}.supporter-details{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:35px}.supporter-details img{margin-right:15px}.sp-info h5{font-weight:700;margin-bottom:3px}.support-entry-block{margin-bottom:37px}.support-entry-block p{margin-bottom:25px}.support-entry-block p+p{margin-bottom:0}.details-support-steps h5{margin-bottom:17px;font-weight:700;color:#1c2437}.details-support-steps p{margin-bottom:25px}.account-support-block{margin-bottom:45px}.account-support-img-block.double-img{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.account-support-img-block.double-img>div{margin-right:45px}.chart-support-block{margin-bottom:33px}.last-support-block{margin-bottom:65px}.last-support-block p{margin-bottom:0}.support-details-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding-bottom:60px;border-bottom:1px solid #e8e9eb}.post-share-block h5,.ishelpful-block h5{margin-bottom:15px;font-weight:700;color:#1c2437}.post-share-block ul,.ishelpful-block ul{margin:0;padding:0;list-style:none}.post-share-block ul li,.ishelpful-block ul li{display:inline-block}.ishelpful-list a{padding:4px 15px;border:1px solid #1652f0;color:#1652f0;text-transform:uppercase;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.ishelpful-list li:first-child{margin-right:15px}.social-share-list li{margin-right:15px}.social-share-list li:last-child{margin-right:0}.social-share-list li a{height:26px;width:26px;line-height:26px;text-align:center;color:#fff;font-size:13px;border-radius:50%;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%}.qs-answer-section{padding:120px 0;text-align:center}.qs-answer-section h4{font-weight:700;font-size:24px;margin-bottom:15px}.qs-answer-section img{margin:0 auto 45px auto}.qs-answer-section>span{margin-bottom:35px;display:block}.qs-answer-section .btn-group{display:block;margin-bottom:50px}.qs-answer-section .btn-default{width:150px;height:50px;background:#cff0db;color:#19bb4c;font-weight:700;margin:0 25px;border-radius:5px !important;-webkit-border-radius:5px !important;-moz-border-radius:5px !important;-ms-border-radius:5px !important;-o-border-radius:5px !important}.qs-answer-section .btn-default:hover,.qs-answer-section .btn-default:focus,.qs-answer-section .btn-defaultfocus:active{-webkit-box-shadow:none;box-shadow:none;outline:none}.qs-answer-section .btn-default:hover{background:#19bb4c;color:#fff}.qs-answer-section .btn-default.active{background:#1652f0;color:#fff}.qs-answer-section p{margin-bottom:0}.qs-answer-section p span{color:#1652f0;font-weight:700}.faq-section{padding:120px 0}.faq-section .qs-answer-section{padding-bottom:0}.bg-offwhite{background-color:#f5f8f9}.accordion .accordion-header button{text-align:left;background-color:transparent;font-weight:400;font-size:1.8rem;color:#009efd;border:none;padding:12px 0 12px 40px;display:block;cursor:pointer;-webkit-transition:all 0.3s ease-out;-o-transition:all 0.3s ease-out;transition:all 0.3s ease-out;position:relative}.accordion .accordion-header button.collapsed{color:#003a49}.accordion .accordion-header button:before{content:'\f106';font-family:'Font Awesome 5 Free';font-weight:900;font-size:2.2rem;line-height:inherit;padding:12px 0;text-align:left;color:#009efd;position:absolute;top:0;left:0}.accordion .accordion-header button.collapsed:before{content:'\f107'}.accordion-body{padding:0 0 25px 40px}.list-group{border-left:1px solid rgba(0,0,0,0.08)}.list-group-item{border:none;padding:7px 30px;margin-left:-1px;background-color:transparent;position:relative}.list-group-item.active{background-color:transparent}.list-group-item-action:focus,.list-group-item-action:hover{background-color:transparent}.list-group-item:before{content:'';top:0;bottom:0;left:0;width:0;background-color:#009efd;position:absolute;-webkit-transition:all 0.3s ease-out;-o-transition:all 0.3s ease-out;transition:all 0.3s ease-out}.list-group-item.active:before{width:5px}.list-group-item+.list-group-item{margin-top:24px}.list-group-item h5{font-weight:700;color:#0b132d;font-size:18px;margin:0}.list-group-item p{margin-top:10px;margin-bottom:0}.list-group-item.active p{color:#5f5f5f}.tab-pane>h4{font-size:24px;color:#0b132d;font-weight:700;border-bottom:1px solid rgba(0,0,0,0.08);padding-bottom:60px;margin-bottom:0px}.accordion.style-2 .accordion-item{border-bottom:1px solid rgba(0,0,0,0.08)}.accordion.style-2 .accordion-header button{font-weight:400;color:#0b132d;font-size:18px;padding:35px 30px 35px 0;width:100%;position:relative}.accordion.style-2 .accordion-header button:focus,.accordion.style-2 .accordion-header button:active:focus{outline:none}.accordion.style-2 .accordion-header button:before{content:none}.accordion.style-2 .accordion-header button:after{content:"\e622";font-family:'themify';position:absolute;top:0;right:0;line-height:23px;width:25px;text-align:center;height:25px;border:1px solid rgba(0,0,0,0.08);border-radius:13px;font-size:1.2rem;margin:29px 0}.accordion.style-2 .accordion-header button.collapsed:after{content:"\e61a"}.accordion.style-2 .accordion-body{padding-left:0}.footer{background:white;border-top:1px solid #c7c7c7}.footer-upper-section{padding:70px 0;position:relative}.footer-upper-section .footer-icon-wrap{position:absolute;right:170px;bottom:55px}.footer-info-list>h4{font-size:19px;font-weight:700;color:#172636;margin-bottom:40px}.footer-info-list ul{list-style:none;margin:0;padding:0}.footer-info-list ul li{margin-bottom:15px}.footer-info-list ul li:last-child{margin-bottom:0}.footer-info-list ul li a{color:#c6cbdb;transition:all 0.3s ease-in;-webkit-transition:all 0.3s ease-in;-moz-transition:all 0.3s ease-in;-ms-transition:all 0.3s ease-in;-o-transition:all 0.3s ease-in}.footer-info-list ul li a:hover{color:#fff}.footer-info-list .contact-info{color:#c6cbdb;margin-bottom:65px}.footer-info-list .contact-info li{margin-bottom:5px}.footer-info-list .contact-info span{color:#fff}.footer-info-list .social-style-two{list-style:none}.footer-info-list .social-style-two li{display:inline-block;margin-right:30px}.footer-info-list .social-style-two li:last-child{margin-right:0}.footer-info-list .social-style-two li a{color:#fff;font-size:18px}.footer-info-list .social-style-two li a:hover{color:#1652f0}.footer-bottom{padding:15px 0;border-top:1px solid rgba(255,255,255,0.08)}.trade-volume-block{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.trade-volume-block ul{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:0;padding:0;list-style:none}.trade-volume-block ul li{color:#c6cbdb;margin-right:25px}.trade-volume-block ul li span{color:#fff}.trade-volume-block ul li:last-child{margin-right:0}.copyright-text{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;color:#c6cbdb}.banner-swiper img{width:100%;height:100%;object-fit:contain}.banner-swiper .banner-item{border-radius:10px;overflow:hidden}.marquee{width:100%;overflow:hidden}.marquee .marquee-pargress{width:200%;animation:marquee 40s infinite linear}.marquee .marquee-list{padding:14px 0;background:#1e2834;color:white}.marquee .marquee-list .item{padding:0 14px;width:200px}.marquee .marquee-list .item.border-right{border-color:#4E4E5D !important}.marquee:hover .marquee-pargress{animation-play-state:paused}@keyframes marquee{0%{transform:translateX(0)}100%{transform:translateX(-100%)}}.activity-box{position:relative;padding-top:40px;padding-bottom:40px}.activity-box:hover .nav-btn{opacity:1;transform:translateY(-50%)}.activity-box:hover .nav-btn.nav-left{left:-0px}.activity-box:hover .nav-btn.nav-right{right:-0px}.activity-box .nav-btn{opacity:0;transition:all .3s;position:absolute;top:50%;transform:translateY(0);z-index:99;font-size:20px}.activity-box .nav-btn.nav-left{left:40px}.activity-box .nav-btn.nav-right{right:40px}.activity-box .activity-slide{height:440px;transform:scale(0.9);transition:all .3s;background-color:#fff}.activity-box .activity-slide .icon{text-align:center;padding:100px 0 20px;transition:all .3s}.activity-box .activity-slide .icon img{height:110px;transition:all .3s}.activity-box .activity-slide .title{font-size:18px;font-weight:bold;text-align:center;margin:20px 0;transition:all .3s}.activity-box .activity-slide .message{padding:20px;max-height:0;transition:all .3s;opacity:0}.activity-box .activity-slide:hover{transform:scale(1);background-color:#f5f7fa}.activity-box .activity-slide:hover .icon{padding-top:20px}.activity-box .activity-slide:hover .icon img{height:90px}.activity-box .activity-slide:hover .title{font-size:16px}.activity-box .activity-slide:hover .message{max-height:120px;opacity:1}.section{background-color:#222e3e}.multi-platform{overflow:hidden;width:80%;margin:0 auto;display:flex;justify-content:space-between;align-items:center;height:600px;background-color:#222e3e;background-size:cover;color:white}.multi-platform .right img{width:100%}.multi-platform .left{background:#393947;padding:31px 40px 40px;border:1px solid #9494AC;border-radius:19px}.multi-platform .left .h2{font-weight:bold}.multi-platform .left .tip1{font-size:18px}.multi-platform .left .qr-code-box{border-radius:10px;padding:20px;padding-top:0;margin-top:20px}.multi-platform .left .qr-code-box .scan-icon{width:28px;height:28px}.multi-platform .left .qr-code-box .label{font-size:20px;padding:10px 0}.lattest-news-section .post-entry{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;height:42px}.lattest-news-section .setion-title-two{margin-top:40px} diff --git a/src/assets/scss/module/_home.scss b/src/assets/scss/module/_home.scss new file mode 100644 index 0000000..18209f1 --- /dev/null +++ b/src/assets/scss/module/_home.scss @@ -0,0 +1,4068 @@ +/* This css file is to override bootstarp4 css +********************************************************* / +* Theme Name: Ex-Coin +* Theme URI: http://themeforest.ne/user/uigigs +* Author: uigigs +* Author URI: http://uigigs.com +* Description: Ex-coin html5 template +* Version: 1.0.0 +* License: GNU General Public License v2 or later +* License URI: http://www.gnu.org/licenses/gpl-2.0.html +* Tags: template,site template, html5, template +*********************************************************** / + +/* +|---------------------------------------------------------------------------- +| CSS INDEX +|---------------------------------------------------------------------------- + +1. General Style +2. Navbar Style +3. Coin List Style +4. Activity Style +5. Wallets Style +6. Banner Style +7. Live-graph Style +8. Catagori Style +9. Common Component Style +10. Currency Dashboard Style +11. Tranding Info Style +12. Working-process Style +13. Post Style +14 Blog Details Style +15. Support Details Style +16. FAQ Style +17. Footer Style + +*/ +/* + * Mixin printing a linear-gradient + * as well as a plain color fallback + * and the `-webkit-` prefixed declaration + * @access public + * @param {Keyword | Angle} $direction - Linear gradient direction + * @param {Arglist} $color-stops - List of color-stops composing the gradient + * + * @see https://www.sitepoint.com/building-linear-gradient-mixin-sass/ + */ +/* +|---------------------------------------------------------------------------- +| 1. General Style +|---------------------------------------------------------------------------- +*/ + +h1 { + font-size: 42px; +} + +h2 { + font-size: 50px; +} + +h3 { + font-size: 30px; +} + +h4 { + font-size: 18px; +} + +h5 { + font-size: 15px; +} + +h6 { + font-size: 12px; +} + +img { + -o-object-fit: cover; + object-fit: cover; + display: inline-block; +} + +.img-responsive { + max-width: 100%; + height: auto; + display: block; +} + +a { + color: inherit; + text-decoration: none; + display: inline-block; + -webkit-transition: 0.4s ease-in; + -o-transition: 0.4s ease-in; + transition: 0.4s ease-in; + color: #797979; +} + +a:hover, +a:focus { + text-decoration: none; + color: #326AEB; + outline: 0; +} + +.faceboox { + background: #3b5998; +} + +.twitter { + background: #1da1f2; +} + +.google-plus { + background: #dd4b39; +} + +.linkdin { + background: #0077b5; +} + +.pinterest { + background: #bd081c; +} + +.instagram { + background: #5851db; +} + +button { + font-family: "Quicksand", sans-serif; +} + +iframe { + border: 0; +} + +.overlay { + position: absolute; + left: 0; + top: 0; + height: 100%; + width: 100%; + background: rgba(17, 17, 17, 0.7); +} + +.panel-heading-block { + padding: 10px 0 10px 15px; + background: #fff; + border-bottom: 1px solid #f0f0f0; +} + +.panel-heading-block h5 { + font-size: 14px; + color: #1c2437; + margin: 0; +} + +/*** Form and inputs ***/ +input:not([type=submit]):not([type=radio]):not([type=checkbox]):focus, +select:focus, +textarea:focus { + outline: none; +} + +.buy-btn { + height: 40px; + width: 100%; + font-size: 13px; + font-weight: 600; + color: #fff; + background: #00c162; + -webkit-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} + +.buy-btn:focus, +.buy-btn:active { + -webkit-box-shadow: none; + box-shadow: none; +} + +.sell-btn { + height: 40px; + width: 100%; + font-size: 13px; + font-weight: 600; + color: #fff; + background: #dd1900; + -webkit-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} + +.sell-btn:focus, +.sell-btn:active { + -webkit-box-shadow: none; + box-shadow: none; +} + +.section-padding { + padding: 100px 0; +} + +.section-padding-top { + padding-top: 100px; +} + +.section-padding-bottom { + padding-bottom: 100px; +} + +.section-padding-50 { + padding: 50px 0; +} + +.section-padding-50-top { + padding-top: 50px; +} + +.section-padding-80-top { + padding-top: 80px; +} + +.section-padding-80-bottom { + padding-bottom: 80px; +} + +.margin-balance { + margin-bottom: -30px; + zoom: 1; + position: relative; + overflow: hidden; +} + +.white-bg { + background: #fff; +} + +.dark-blue-bg { + background: #0b132d; +} + +.base-color { + color: #1652f0; +} + +.section-title-one { + text-align: center; + margin-bottom: 75px; +} + +.section-title-one h3 { + font-weight: 700; + font-size: 36px; + color: #0b132d; + margin-bottom: 33px; +} + +.section-title-one p { + line-height: 24px; + margin-bottom: 0; +} + +.setion-title-two { + text-align: center; + position: relative; + margin-bottom: 40px; +} + +.setion-title-two:before { + content: ''; + position: absolute; + top: 9px; + left: 0; + height: 1px; + width: 100%; + z-index: 2; + background: #e8e9eb; +} + +.setion-title-two h5 { + font-size: 16px; + font-weight: 700; + margin-bottom: 0; + position: relative; + z-index: 99; + max-width: 170px; + margin: 0 auto; + background: #fcfdff; + color: #5f5f5f; + text-transform: uppercase; +} + +.section-title-three { + margin-bottom: 55px; + text-align: center; +} + +.section-title-three h3 { + font-size: 36px; + font-weight: 700; + color: #0b132d; +} + +/* +|---------------------------------------------------------------------------- +| 3. Coin List Style +|---------------------------------------------------------------------------- +*/ +.new-ticker-block-section { + padding: 60px 0 60px 0; +// background:#141e2c; + background:#FFFFFF; +} + +.new-ticker-block-section .coin-list th, +.new-ticker-block-section .coin-list tr { + font-size: 14px; +} + +.new-ticker-block .search-form .input-box input[type='text'] { + border-color: transparent; +} + +.ex-color-buy, +.color-buy { + color: #00c162; +} + +.ex-color-sell, +.color-sell { + color: #dd1900; +} + +.color-buy, +.color-sell { + position: relative; + cursor: pointer; +} + +.ticker-nav { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + border-bottom: none; +} + +.ticker-nav .nav-item-last { + -webkit-box-flex: 6; + -ms-flex-positive: 6; + flex-grow: 6; +} + +.ticker-nav .nav-item { + min-width: 100px; + text-align: center; +} + +.ticker-nav .nav-item a { + font-weight: 600; + margin: 0; + padding: 16px 30px; + -webkit-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; + border-color: transparent; + +} + +.ticker-nav .nav-item a:focus, +.ticker-nav .nav-item a:active, +.ticker-nav .nav-item a:hover { + border-color: transparent; +} + + +.ticker-nav .nav-item a.active { + background: transparent; + color: white; + position: relative; + + &::after { + content: ''; + display: block; + position: absolute; + bottom: 3px; + left: 50%; + margin-left: -3px; + } + +} + +.ticker-nav .nav-item a.active h5 { + color: #1652f0; +} + +.ticker-nav .nav-item-last { + -webkit-box-flex: 6; + -ms-flex-positive: 6; + flex-grow: 6; +} + +.search-form .input-box { + position: relative; +} + +.search-form .input-box button { + position: absolute; + top: 0; + right: 0; + background: transparent; + width: 50px; + height: 55px; + border: none; + cursor: pointer; +} + +.search-form .input-box button:focus, +.search-form .input-box button:active { + outline: 0; + -webkit-box-shadow: none; + box-shadow: none; +} + +.search-form .input-box input[type='text'] { + height: 56px; + border: none; + border-bottom: 1px solid #b5d6ff; + -webkit-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; +} + +.search-form .input-box input[type='text']:focus, +.search-form .input-box input[type='text']:active { + outline: 0; + -webkit-box-shadow: none; + box-shadow: none; +} + +.coin-list { + margin-bottom: 0; + border-bottom: none; + .active{ + color: #c99445; + } +} + +.coin-list thead th { + border: none; + font-size: 13px; + font-family: "Quicksand", sans-serif; + color: #a2a2a2; + font-weight: 300; +} + +.coin-list tbody tr { + background: #fefff2; + transition: all .3s; + + &:nth-of-type(2n) { + background: #fefff2; + } +} + +.coin-list tbody tr:hover { + background: #fefff2; + + &:nth-of-type(2n) { + background:#fefff2; + } + + box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15) !important; + transform: scale(1.05); +} + +.coin-list tbody tr td { + border-top: none; + color: #9292AC; + padding: 18px 15px; + &:nth-last-of-type(1),&:nth-last-of-type(2),&:nth-last-of-type(3){ + // color: white; + } +} + +.coin-list tbody tr td b { + color: #a2a2a2; +} + +.favorite-coin { + padding: 0 20px; + position: relative; + cursor: pointer; +} + +.favorite-coin:before { + content: "\f005"; + font-weight: 300; + font-family: Font Awesome\ 5 Free; +} + +.favorite-coin.active:before { + content: "\f005"; + font-weight: 900; + color: #ff7700; +} + +/* +|---------------------------------------------------------------------------- +| 4. Activity Style +|---------------------------------------------------------------------------- +*/ +.activity-section { + padding: 120px 0 90px 0; +} + +.activity-block { + margin-bottom: 30px; + padding: 40px 30px; + background: #fff; + -webkit-box-shadow: 0px 20px 45px 0px rgba(0, 0, 0, 0.05); + box-shadow: 0px 20px 45px 0px rgba(0, 0, 0, 0.05); +} + +.activity-block img { + margin-bottom: 25px; +} + +.activity-block h4 { + font-weight: 700; + margin-bottom: 20px; + color: #0b132d; +} + +.activity-block p { + margin-bottom: 0; +} + +/* +|---------------------------------------------------------------------------- +| 5. Wallets Style +|---------------------------------------------------------------------------- +*/ +.wallets-section { + padding-bottom: 120px; +} + +.wallets-block { + text-align: center; +} + +.wallets-block>img { + display: inline; + margin-bottom: 35px; +} + +.wallets-block>img+h5 { + margin-bottom: 8px; +} + +.wallets-block h5 { + line-height: 20px; + font-weight: 600; +} + +.wallets-block .base-color { + margin-bottom: 45px; +} + +.download-option-block { + margin-bottom: 50px; +} + +.download-wrap-inner { + display: block; +} + +.download-wrap-inner { + margin-bottom: 20px; +} + +.download-wrap-inner+h4 { + font-weight: 700; + font-size: 15px; +} + +.download-wrap { + position: relative; + display: inline-block; + margin-right: 50px; +} + +.download-wrap:last-of-type { + margin-right: 0px; +} + +.download-wrap .input-hidden { + position: absolute; + left: -9999px; +} + +.download-wrap input[type=radio]+label>i.fab { + height: 70px; + width: 70px; + color: #0b132d; + border: 1px solid #e8e9eb; + border-radius: 50%; + text-align: center; + line-height: 65px; + font-size: 28px; + cursor: pointer; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; +} + +.download-wrap input[type=radio]:checked+label>i.fab { + background: #1652f0; + color: #fff; +} + +.download-btn { + width: 200px; + height: 60px; + font-weight: 500; + background: #1652f0; + color: #fff; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.download-btn:active, +.download-btn:focus, +.download-btnfocus:active { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +/* +|---------------------------------------------------------------------------- +| 6. Banner Style +|---------------------------------------------------------------------------- +*/ +.banner-block { + padding: 1px 0 1px 0; + position: relative; + // background: url("~@/assets/img/bg/1.jpg") no-repeat center center; + // background-size: cover; + height: 492px; + box-sizing: border-box; + img{ + width: 100%; + height: 100%; + object-fit: cover; + } +} + +.banner-content { + text-align: center; + margin-bottom: 100px; +} + +.banner-content h2 { + font-weight: 700; + color: #fff; + margin-bottom: 30px; +} + +.banner-content p { + color: #fff; + font-size: 17px; + line-height: 28px; + margin-bottom: 57px; +} + +.banner-content .subs-form .input-box { + max-width: 570px; + position: relative; + margin: 0 auto; +} + +.banner-content .subs-form input { + border: none; + height: 55px; + padding: 0 175px 0 25px; + background: #fff; +} + +.banner-content .subs-form input:focus { + outline: 0; + -webkit-box-shadow: none; + box-shadow: none; +} + +.banner-content .subs-form button { + position: absolute; + right: 0; + top: 0; + min-width: 170px; + height: 55px; + background: #1652f0; + color: #fff; + border: none; + outline: 0; + -webkit-box-shadow: none; + box-shadow: none; + font-weight: 700; + cursor: pointer; + border-radius: 0 3px 3px 0; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + -ms-border-radius: 0 3px 3px 0; + -o-border-radius: 0 3px 3px 0; +} + +.banner-content .subs-form button:active, +.banner-content .subs-form button:focus { + border: none; + outline: 0; + -webkit-box-shadow: none; + box-shadow: none; +} + + +/* +|---------------------------------------------------------------------------- +| 8. Catagori Style +|---------------------------------------------------------------------------- +*/ +.catagori-section { + margin-bottom: 120px; +} + +.catagori-content-block { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +.catagori-list { + -ms-flex-preferred-size: 30%; + flex-basis: 30%; +} + +.catagori-list .nav { + display: block; +} + +.catagori-list .nav-link { + padding: 18px; + border-bottom: 1px solid #e2e3e5; +} + +.catagori-list .nav-link h4 { + margin-bottom: 0; + font-weight: 700; + color: #0b132d; +} + +.catagori-list .nav-item { + text-align: left; +} + +.catagori-list .nav-link:hover, +.catagori-list .nav-link:focus, +.catagori-list .nav-link.active { + border-color: transparent; + -webkit-box-shadow: 0px 5px 5px 0px rgba(0, 0, 0, 0.08); + box-shadow: 0px 5px 5px 0px rgba(0, 0, 0, 0.08); +} + +.catagori-list .nav-link.active h4 { + color: #1652f0; +} + +.catagoritab-content { + -ms-flex-preferred-size: 70%; + flex-basis: 70%; + padding: 0 0 0 100px; +} + +.catagori-content>p { + margin-bottom: 26px; +} + +.catagori-content img { + margin-bottom: 26px; +} + +.pros-cons-block .cons-block, +.pros-cons-block .pros-block { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +.pros-cons-block h5, +.pros-cons-block p { + margin: 0; +} + +.pros-cons-block h5 { + font-weight: 700; + padding-right: 10px; +} + +.pros-cons-block p { + margin-top: -4px; +} + +.pros-cons-block .pros-block { + margin-bottom: 15px; +} + +/* +|---------------------------------------------------------------------------- +| 9. Common Component Style +|---------------------------------------------------------------------------- +*/ +.modal-backdrop { + background: #1b1e63; +} + +.modal-container .modal-content { + background: transparent; + border-color: transparent; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.modal-container .modal-body { + padding: 0; + background: #fff; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.modal-container .modal-header { + text-align: center; + background: #1b1e63; +} + +.modal-container .modal-header h5 { + font-size: 24px; + font-weight: 700; + color: #fff; +} + +.modal-container .modal-header .close { + color: #fff; +} + +.modal-container .modal-header .close:focus { + outline: none; +} + +.modal-container .modal-info-block { + text-align: center; + padding-top: 30px; +} + +.modal-container .modal-info-block p { + margin-bottom: 18px; +} + +.modal-container .modal-info-block .block-inner { + padding: 8px 25px; + background: #f7f7f7; + display: inline-block; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.modal-container .modal-info-block .block-inner p { + margin-bottom: 0; +} + +.modal-container .modal-info-block .block-inner span { + font-size: 14px; + font-weight: 700; + color: #00c162; +} + +.modal-container .user-connected-form-block { + -webkit-box-shadow: none; + box-shadow: none; + border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + -ms-border-radius: 0 0 5px 5px; + -o-border-radius: 0 0 5px 5px; +} + +.modal-container .user-connected-form-block p { + text-align: left; +} + +.modal-container .user-connected-form-block .btn-default, +.modal-container .user-connected-form-block .form-control { + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.modal-container .user-signup-form select { + font-size: 15px; +} + +.modal-container .user-signup-form select:focus, +.modal-container .user-signup-form select:active, +.modal-container .user-signup-form select:focus:active { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; + border-color: #e8e9eb; +} + +.user-login-form .pass-remember-block { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} + +.user-login-form .custom-checkbox .custom-control-label::before { + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; +} + + + +.news-headlines-slider a { + color: #fefefe; + line-height: 18px; + transition: all 0.3s ease-in; + -webkit-transition: all 0.3s ease-in; + -moz-transition: all 0.3s ease-in; + -ms-transition: all 0.3s ease-in; + -o-transition: all 0.3s ease-in; +} + +.news-headlines-slider a:hover { + color: #fff; +} + +.subheader { + background: url("~@/assets/img/bg/2.jpg") no-repeat bottom center; + padding: 255px 0 120px 0; + background-size: cover; + text-align: center; + position: relative; +} + +.subheader h3, +.subheader p { + font-weight: 700; + color: #fcfdff; +} + +.subheader p { + line-height: 24px; + font-weight: 300; + margin-bottom: 15px; +} + +.subheader h3 { + margin-bottom: 25px; +} + +.subheader-search { + width: 50%; + margin: 0 auto; + position: absolute; + bottom: 30px; + left: 0; + right: 0; +} + +.subheader-search .form-control { + background: transparent; +} + +.subheader-search .input-box input[type='text'] { + color: #fff; + border-bottom: 1px solid rgba(255, 255, 255, 0.15); + border-radius: 5px; + font-size: 15px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.subheader-search .input-box button .fa { + color: #fff; + font-size: 15px; +} + +.subheader-search ::-webkit-input-placeholder { + color: #fff; + opacity: 1; + /* Firefox */ +} + +.subheader-search :-ms-input-placeholder { + color: #fff; + opacity: 1; + /* Firefox */ +} + +.subheader-search ::-ms-input-placeholder { + color: #fff; + opacity: 1; + /* Firefox */ +} + +.subheader-search ::placeholder { + color: #fff; + opacity: 1; + /* Firefox */ +} + +.subheader-search :-ms-input-placeholder { + /* Internet Explorer 10-11 */ + color: #fff; +} + +.subheader-search ::-ms-input-placeholder { + /* Microsoft Edge */ + color: #fff; +} + +.contact-form-wrap { + padding: 120px 0; +} + +.contact-form .form-row { + margin-right: -15px; + margin-left: -15px; +} + +.contact-form .form-row>.col, +.contact-form .form-row>[class*=col-] { + padding-right: 15px; + padding-left: 15px; +} + +.contact-form .form-group { + margin-bottom: 30px; +} + +.contact-form .form-control { + background: #fff; + border: 1px solid #e8e9eb; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.contact-form .form-control:focus, +.contact-form .form-control:active, +.contact-form .form-control:focus:active { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.contact-form input.form-control { + padding: 0 20px; + min-height: 55px; +} + +.contact-form textarea { + resize: none; +} + +.contact-form .custom-checkbox { + position: relative; + padding: 18px 15px; + border: 1px solid #e8e9eb; + border-radius: 5px; + display: inline-block; + min-width: 300px; + margin-bottom: 0; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.contact-form .custom-checkbox .custom-checkbox-wrap { + position: relative; + padding-left: 30px; +} + +.contact-form .custom-checkbox img { + position: absolute; + right: 10px; + top: 5px; + width: 50px; + height: 50px; +} + +.contact-form .btn-default { + width: 200px; + height: 55px; + text-align: center; + border-radius: 5px; + background: #1652f0; + font-weight: 700; + color: #fff; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.contact-form .btn-default:focus, +.contact-form .btn-default:active, +.contact-form .btn-default:focus:active { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; + border-color: transparent; +} + +.custom-checkbox .custom-control-label::before { + border-radius: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + -o-border-radius: 0; +} + +.contact-info-outer { + padding-bottom: 120px; +} + +.contact-info-wrap { + border: 1px solid #e8e9eb; + -webkit-box-shadow: 0px 20px 45px 0px rgba(0, 0, 0, 0.05); + box-shadow: 0px 20px 45px 0px rgba(0, 0, 0, 0.05); + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.map-block { + height: 400px; + width: 100%; +} + +.contact-info-block { + padding: 0 160px 0 130px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.contact-info-block h4 { + font-size: 24px; + font-weight: 700; + color: #0b132d; + margin-bottom: 45px; +} + +.contact-info-list { + margin: 0; + padding: 0; + list-style: none; + text-align: left; +} + +.contact-info-list li { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; +} + +.contact-info-list li img { + margin: 10px 15px 0 0; +} + +.contact-info-list li p { + margin-bottom: 25px; +} + +.contact-info-list li:last-child p { + margin-bottom: 0; +} + +.lattest-news-section { + margin-bottom: 60px; +} + +.lattest-news-section .setion-title-two { + margin-bottom: 60px; +} + +.post-style-one { + padding: 40px 30px; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + background: #fff; + border: 1px solid #e8e9eb; +} + +.post-style-one .post-metat-date { + display: block; + font-size: 14px; + margin-bottom: 5px; +} + +.post-style-one .post-title { + font-weight: 700; + margin-bottom: 20px; +} + +.post-style-one .post-title a { + color: #0b132d; +} + +.post-style-one .post-entry { + margin-bottom: 20px; +} + +.post-style-one .post-link { + font-weight: 700; + font-size: 14px; + color: #1652f0; +} + +.features-section { + padding: 120px 0 40px 0; +} + +.features-block { + margin-bottom: 70px; + text-align: center; +} + +.features-block img { + margin: 0 auto 30px auto; + display: block; +} + +.features-block h4 { + margin-bottom: 20px; + font-weight: 700; + color: #1c2437; +} + +.features-block p { + margin-bottom: 0; +} + +.colto-section { + background: #101854 url("~@/assets/img/img18.jpg") no-repeat center center; + background-size: cover; + margin-bottom: -48px; +} + +.colto-content-wrap { + text-align: center; + height: 302px; + + .title { + font-size: 40px; + font-family: PingFang SC; + font-weight: 800; + color: #172636; + text-align: center; + margin-bottom: 40px; + } +} + + +.colto-btn-group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.colto-btn-group span { + font-weight: 700; + color: #fff; + height: 34px; + width: 34px; + margin: 0 15px; + display: block; + text-align: center; + line-height: 34px; + border-radius: 50%; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; + border: 1px solid rgba(252, 253, 255, 0.08); +} + +.callto-btn { + width: 180px; + height: 46px; +} + + + +.testimonials-section { + padding: 120px 0 160px 0; + border-top: 1px solid rgba(0, 0, 0, 0.08); +} + +.testimonials-title { + text-align: center; + margin-bottom: 55px; +} + +.testimonials-title h3 { + font-size: 36px; + font-weight: 700; + color: #0b132d; +} + +.testimonial-slider { + padding: 50px 75px; + background: #fff; + position: relative; + -webkit-box-shadow: 0px 20px 45px 0px rgba(0, 0, 0, 0.05); + box-shadow: 0px 20px 45px 0px rgba(0, 0, 0, 0.05); +} + +.testimonial-slider button.slick-next, +.testimonial-slider button.slick-prev { + position: absolute; + top: 50%; + color: transparent; + border: none; + outline: none; + height: 20px; + width: 20px; + cursor: pointer; + background: transparent; +} + +.testimonial-slider button.slick-next:before, +.testimonial-slider button.slick-prev:before { + font-family: Font Awesome\ 5 Free; + color: #5f5f5f; + font-weight: 900; + font-size: 18px; +} + +.testimonial-slider button.slick-next { + right: -43px; +} + +.testimonial-slider button.slick-next:before { + content: "\f105"; +} + +.testimonial-slider button.slick-prev { + left: -43px; +} + +.testimonial-slider button.slick-prev:before { + content: "\f104"; +} + +.testimonial-slider .slick-slide { + outline: none; +} + +.testimonial-slider .slick-dots { + list-style: none; + position: absolute; + width: 100%; + margin: 0 auto; + padding: 0; + text-align: center; + left: 0; + bottom: -43px; + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} + +.testimonial-slider .slick-dots li { + line-height: 100%; + margin: 8px 15px 0 0; +} + +.testimonial-slider .slick-dots li:last-child { + margin-right: 0px; +} + +.testimonial-slider .slick-dots li button { + color: transparent; + border: none; + outline: none; + height: 8px; + width: 8px; + padding: 0; + cursor: pointer; + background: rgba(22, 82, 240, 0.5); + border-radius: 50%; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; +} + +.testimonial-slider .slick-dots li.slick-active { + margin-top: 5px !important; +} + +.testimonial-slider .slick-dots li.slick-active button { + height: 14px; + width: 14px; + background: #1652f0; +} + +.testimonial-block { + text-align: center; +} + +.testimonial-block:focus { + outline: none; +} + +.testimonial-block img { + display: block; + margin: 0 auto 35px auto; +} + +.testimonial-block p { + font-size: 18px; + line-height: 30px; +} + +.testimonials-author h5 { + font-weight: 700; + margin-bottom: 5px; + color: #1c2437; +} + +.testimonials-author p { + margin-bottom: 0; + font-size: 15px; +} + +.support-category-section { + padding: 120px 0 50px 0; +} + +.support-category-block { + padding: 40px 0; + border: 1px solid #e8e9eb; + text-align: center; + border-radius: 5px; + margin-bottom: 30px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.support-category-block img { + display: block; + margin: 0 auto 35px auto; +} + +.support-category-block h4 { + font-weight: 700; + margin-bottom: 0; + color: #1c2437; +} + +.support-list-section { + border-top: 1px solid #e8e9eb; + padding: 80px 0 40px 0; +} + +.support-list, +.others-support-list { + list-style: none; + margin: 0; + padding: 0; +} + +.support-list li, +.others-support-list li { + margin-bottom: 15px; +} + +.support-list li:last-child, +.others-support-list li:last-child { + margin-bottom: 0; +} + +.support-list li a, +.others-support-list li a { + transition: all 0.3s ease-in; + -webkit-transition: all 0.3s ease-in; + -moz-transition: all 0.3s ease-in; + -ms-transition: all 0.3s ease-in; + -o-transition: all 0.3s ease-in; +} + +.support-list li a:hover, +.others-support-list li a:hover { + color: #1652f0; +} + +.support-list li.colord a, +.others-support-list li.colord a { + text-decoration: underline; + color: #1652f0; +} + +.support-list-block h5, +.others-support-list-block h5 { + margin-bottom: 30px; + color: #0b132d; + font-weight: 700; + font-size: 18px; + text-transform: uppercase; +} + +.others-support-list-block { + padding: 47px 0; + border-top: 1px solid; + border-bottom: 1px solid; + border-color: #e8e9eb; +} + +.others-support-list-section { + padding: 0 0 120px 0; +} + +.user-login-signup-section { + padding: 290px 0 180px 0; + background: url("~@/assets/img/bg/5.jpg") no-repeat center center; + background-size: cover; +} + +.user-login-signup-form-wrap { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.user-login-signup-form-wrap .modal-content { + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; +} + +.user-login-signup-form-wrap .modal-content>h3 { + font-size: 24px; + font-weight: 700; + color: #fff; + margin: 0 auto 45px auto; +} + +/* +|---------------------------------------------------------------------------- +| 10. Currency Dashboard Style +|---------------------------------------------------------------------------- +*/ +.dashboard-fullwidth { + padding: 0 50px; +} + +.dashboard-fullwidth .col-form-label { + font-size: 10px; +} + +.exchange-chart-block { + margin-bottom: 20px; + padding: 15px; + border: 1px solid #e8e9eb; +} + +.order-count-dropdown button.dropdown-toggle { + background: transparent; + border: none; +} + +.order-count-dropdown button.dropdown-toggle:focus, +.order-count-dropdown button.dropdown-toggle:hover, +.order-count-dropdown button.dropdown-toggle:active { + -webkit-box-shadow: none; + box-shadow: none; + border: none; +} + +.order-count-dropdown button.dropdown-toggle:after { + content: none; +} + +.order-count-dropdown button.dropdown-toggle:before { + position: absolute; + font-size: 14px; + top: 8px; + right: -3px; + content: '\f107'; + font-family: Font Awesome\ 5 Free; + font-weight: 600; + color: #a2a2a2; +} + +.order-count-dropdown .dropdown-menu { + min-width: auto; +} + +.dahboard-order-block, +.das-market-block, +.order-history-block { + width: 100%; +} + +.dahboard-order-block { + -webkit-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + border: 1px solid #f0f0f0; +} + +.das-market-nav, +.das-oreder-nav { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + border-bottom: 1px solid #f0f0f0; +} + +.das-market-nav .nav-item, +.das-oreder-nav .nav-item { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + min-width: 30px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.das-market-nav .nav-item a, +.das-oreder-nav .nav-item a { + padding: 0px; + margin: 0 auto; +} + +.das-market-nav .nav-item-first, +.das-oreder-nav .nav-item-first { + -webkit-box-flex: 6; + -ms-flex-positive: 6; + flex-grow: 6; +} + +.das-market-nav .nav-item-first a, +.das-oreder-nav .nav-item-first a { + text-align: left; + color: #1c2437; + font-weight: 500; + font-size: 14px; +} + +.das-market-nav li, +.das-oreder-nav li { + height: 35px; + text-align: center; + border-right: 1px solid #f0f0f0; +} + +.das-market-nav li:last-child, +.das-oreder-nav li:last-child { + border: none; +} + +.das-oreder-table { + border-bottom: 1px solid #f0f0f0; + margin-bottom: 0; +} + +.das-oreder-table thead th { + border: none; + font-weight: 500; + font-size: 12px; + color: #a2a2a2; +} + +.das-oreder-table td { + position: relative; + border-top: none; + background: #fff; +} + +.das-oreder-table td span { + z-index: 2; + font-weight: 600; + font-size: 13px; + position: relative; +} + +.rate-ratio { + position: absolute; + right: 0; + top: 50%; + bottom: 1px; + z-index: 1; + height: 20px; + width: 30px; + -webkit-transform: translateY(-10px); + -ms-transform: translateY(-10px); + transform: translateY(-10px); + background: #fcedeb; +} + +.das-oreder-table.das-buy-table thead th { + border-bottom: 1px solid #f0f0f0; +} + +.das-oreder-table.das-buy-table thead h4 { + font-weight: 600; + margin-bottom: 0; + font-size: 14px; +} + +.das-oreder-table.das-buy-table thead h4, +.das-oreder-table.das-buy-table thead img { + display: inline-block; +} + +.das-oreder-table.das-buy-table .rate-ratio { + background: #ebfaf3; +} + +.das-market-tab-pane { + height: 500px; + position: relative; +} + +.history-table, +.das-market-table { + height: 500px; +} + +.history-table .favorite-coin, +.das-market-table .favorite-coin { + padding: 0 10px; + font-size: 11px; +} + +.history-table tbody tr, +.das-market-table tbody tr { + border-bottom: 1px solid transparent; +} + +.history-table tbody tr:hover, +.das-market-table tbody tr:hover { + background: #e6f1ff; +} + +.history-table tbody tr td, +.das-market-table tbody tr td { + padding: 6px 5px; + font-size: 13px; +} + +.market-new-ticker-block { + background: #fff; + margin-bottom: 25px; + border: 1px solid #e8e9eb; + -webkit-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} + +.market-new-ticker-block .search-form .input-box button { + height: 36px; +} + +.market-new-ticker-block .search-form .input-box input[type='text'] { + height: 36px; + border-bottom: 1px solid #f0f0f0; +} + +.market-new-ticker-block .ticker-nav .nav-item { + min-width: 0; +} + +.market-new-ticker-block .ticker-nav .nav-item a { + padding: 8px 5px; + font-size: 13px; +} + +.market-new-ticker-block .ticker-nav .nav-item:last-child a { + border-right: none; +} + +.order-history-block { + -webkit-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + border: 1px solid #f0f0f0; +} + +.order-history-block .history-table tbody tr td { + padding: 6px 15px; +} + +.order-history-block-inner { + height: 695px; + position: relative; +} + +.order-history-block-inner table { + margin-bottom: 0; +} + +.dark-blue-bg .dahboard-order-block, +.dark-blue-bg .dahboard-market-block { + border: 1px solid rgba(255, 255, 255, 0.06); +} + +.dark-blue-bg .das-oreder-nav, +.dark-blue-bg .das-market-nav { + border-bottom: 1px solid rgba(255, 255, 255, 0.1); +} + +.dark-blue-bg .das-oreder-nav li, +.dark-blue-bg .das-market-nav li { + border-right: 1px solid rgba(255, 255, 255, 0.06); +} + +.dark-blue-bg .das-oreder-nav li.nav-item:not(.nav-item-first), +.dark-blue-bg .das-market-nav li.nav-item:not(.nav-item-first) { + background: rgba(255, 255, 255, 0.05); +} + +.dark-blue-bg .das-oreder-nav li:last-child, +.dark-blue-bg .das-market-nav li:last-child { + border: none; +} + +.dark-blue-bg .new-ticker-block { + border: 1px solid rgba(255, 255, 255, 0.06); +} + +.dark-blue-bg .market-new-ticker-block .search-form .input-box input[type='text'] { + background: transparent; + border-left: 1px solid rgba(255, 255, 255, 0.1); +} + +.dark-blue-bg .search-form .input-box input[type='text'] { + border-bottom: none; +} + +.dark-blue-bg .search-form .input-box button { + color: #fff; +} + +.dark-blue-bg .market-new-ticker-block .ticker-nav .nav-item { + background: rgba(255, 255, 255, 0.05); +} + +.dark-blue-bg .ticker-nav { + border-bottom: 1px solid rgba(255, 255, 255, 0.1); +} + +.dark-blue-bg .ticker-nav .nav-item a { + background: transparent; + color: #fff; + border-right: 1px solid rgba(255, 255, 255, 0.1); + border-bottom: none; +} + +.dark-blue-bg .nav-tabs .nav-link.active { + border: none; + background: rgba(255, 255, 255, 0.05); +} + +.dark-blue-bg .das-market-nav .nav-item-first a, +.dark-blue-bg .das-oreder-nav .nav-item-first a { + color: #fff; + background: rgba(255, 255, 255, 0.05); +} + +.dark-blue-bg .order-count-dropdown button.dropdown-toggle { + color: #797979; +} + +.dark-blue-bg .das-oreder-table { + border-bottom: 1px solid rgba(255, 255, 255, 0.06); +} + +.dark-blue-bg .das-oreder-table thead { + background: rgba(255, 255, 255, 0.05); + color: rgba(255, 255, 255, 0.5); +} + +.dark-blue-bg .das-oreder-table thead th { + font-weight: 500; + font-size: 12px; + color: #a2a2a2; +} + +.dark-blue-bg .das-oreder-table td { + background: transparent; +} + +.dark-blue-bg .das-oreder-table td span:not(.color-sell):not(.color-buy) { + color: #fff; +} + +.dark-blue-bg .das-oreder-table td .rate-ratio { + background: rgba(221, 25, 0, 0.08); +} + +.dark-blue-bg .das-oreder-table.das-buy-table .rate-ratio { + background: rgba(0, 193, 98, 0.08); +} + +.dark-blue-bg .market-new-ticker-block { + background: transparent; +} + +.dark-blue-bg .order-history-block { + border: 1px solid rgba(255, 255, 255, 0.05); +} + +.dark-blue-bg .panel-heading-block { + background: rgba(255, 255, 255, 0.05); +} + +.dark-blue-bg .panel-heading-block h5 { + color: #fff; +} + +.dark-blue-bg .coin-list tbody tr { + background: transparent; +} + +.dark-blue-bg .coin-list thead { + background: rgba(255, 255, 255, 0.1); +} + +.dark-blue-bg .latest-tranjections-table thead th { + background: rgba(255, 255, 255, 0.05); + border: none; +} + +.dark-blue-bg .parent-order-tab .nav-item a.nav-link { + background: rgba(255, 255, 255, 0.05); +} + +.dark-blue-bg .tv_orde_table, +.dark-blue-bg .tv_ammount-form-block .form-input-block .form-control, +.dark-blue-bg .tv_orde_table.table td, +.dark-blue-bg .tv_orde_table.table th, +.dark-blue-bg .tv_orde_table thead th.tv_orde_1st_th, +.dark-blue-bg .parent-order-tab .nav-item a.nav-link, +.dark-blue-bg .panel-heading-block, +.dark-blue-bg .coin-list tbody tr, +.dark-blue-bg .das-oreder-table.das-buy-table thead th, +.dark-blue-bg .exchange-chart-block, +.dark-blue-bg .latest-tranjections-block-inner { + border-color: #192030; +} + +.dark-blue-bg .latest-tranjections-block { + border: 1px solid rgba(255, 255, 255, 0.05); +} + +.dark-blue-bg .latest-tranjections-block .panel-heading-block { + border: 1px solid rgba(255, 255, 255, 0.05); +} + +.dark-blue-bg .col-form-label { + color: #797979; +} + +.dark-blue-bg .tv_ammount-form-block .readonly .form-control[readonly], +.dark-blue-bg .tv_ammount-form-block .form-input-block .tv-btc-tag, +.dark-blue-bg .form-control { + background-color: #1b2334; +} + +.dark-blue-bg .currency-rate .currency-convert .dropdown .btn { + color: #fff; +} + +.dark-blue-bg .currency-rate .update-rate .currency-info>span { + color: #717f9d; +} + +.dark-blue-bg .currency-rate .update-rate .currency-info h6 { + color: #fff; +} + +.dark-blue-bg .currency-rate .update-rate .currency-info h6.color-buy { + color: #00c162; +} + +.dark-blue-bg .ticker-nav .nav-item a h5 { + color: #fff; +} + +.dark-blue-bg .ticker-nav .nav-item a.active { + color: #0978ff; +} + +.dark-blue-bg .ticker-nav .nav-item a.active h5 { + color: #0978ff; +} + +.dark-blue-bg .history-table tr td, +.dark-blue-bg .das-market-table tr td { + color: #fff; +} + +.parent-order-tab { + border: none; +} + +.parent-order-tab .nav-item { + margin-bottom: 0; +} + +.parent-order-tab .nav-item a.nav-link { + border: 1px solid #f0f0f0; + background: #fff; +} + +.parent-order-tab .nav-item a.nav-link h5 { + margin: 0; + font-weight: 600; +} + +.parent-order-tab .nav-item a.nav-link.active { + color: #1652f0; + background: transparent; +} + +.tv_orde_table { + border: 1px solid #f0f0f0; + -webkit-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} + +.tv_orde_table thead th { + border: none; + font-size: 12px; + color: #a2a2a2; +} + +.tv_ammount-form-block .form-input-block { + position: relative; +} + +.tv_ammount-form-block .form-input-block .tv-btc-tag { + position: absolute; + right: 21px; + top: 1px; + height: 36px; + width: 30px; + text-align: center; + color: #c1c1c1; + line-height: 38px; + background: #fff; +} + +.tv_ammount-form-block .form-input-block .form-control { + border: 1px solid #f0f0f0; + height: 40px; +} + +.tv_ammount-form-block .form-input-block .form-control:focus, +.tv_ammount-form-block .form-input-block .form-control:active { + -webkit-box-shadow: none; + box-shadow: none; +} + +.tv_ammount-form-block .readonly .tv-btc-tag { + background: #f7f7f7; +} + +.tv_ammount-form-block .readonly .form-control[readonly] { + background: #f7f7f7; +} + +.tv_ammount-form-block .amcharts-axis-label tspan { + color: #fff !important; +} + +.tv_ammount-form-two .form-input-block .tv-btc-tag { + right: 50px; + color: #827f7f; +} + +.dashboard-body { + margin-bottom: 30px; +} + +.order-form-area-block table { + margin-bottom: 0; +} + +#chartdiv { + width: 100%; + height: 350px; + margin-top: -20px; +} + +#chartdiv_2 { + height: 530px; +} + +.amcharts-axis-title { + display: none; +} + +.amcharts-balloon-div-categoryAxis { + display: none; +} + +.tradingview-widget-container { + margin-bottom: 10px; +} + +.latest-tranjections-block-inner { + border: 1px solid #e8e9eb; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + position: relative; +} + +.latest-tranjections-block-inner .panel-heading-block h5 { + color: #192030; + font-weight: 600; +} + +.latest-tranjections-table { + margin-bottom: 0; + border-radius: 5px; +} + +.latest-tranjections-table thead th { + color: #a2a2a2; + background: #fafafa; + border-bottom: 1px solid #e8e9eb; +} + +.latest-tranjections-table tbody tr { + border: none; +} + +.latest-tranjections-table tbody tr td { + font-weight: 500; + padding: 10px 15px; +} + +.login-warning-block { + position: absolute; + top: 50%; + width: 100%; + left: 0; + right: 0; + text-align: center; +} + +.login-warning-block img { + display: block; + margin: 0 auto 10px auto; +} + +.login-warning-block p { + margin-bottom: 0; +} + +.login-warning-block a { + color: #1652f0; +} + +.btc-parcentage { + list-style: none; + margin: 0; + padding: 0; + font-size: 0; +} + +.btc-parcentage li { + display: inline-block; + padding: 8px 0; + width: 25%; + text-align: center; +} + +.btc-parcentage li a { + font-size: 16px; + color: #fff; +} + +.total-btc, +.usd-ammount { + display: block; + text-align: right; + padding: 6px 0 0 0; + font-size: 16px; + color: #fff; +} + +.currency-rate { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding: 15px 50px; + border: 1px solid #e8e9eb; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.currency-rate .currency-convert { + padding-right: 30px; + border-right: 1px solid rgba(0, 0, 0, 0.06); +} + +.currency-rate .currency-convert .dropdown .dropdown-toggle { + background: transparent; + font-weight: 700; +} + +.currency-rate .currency-convert .dropdown .btn:focus { + -webkit-box-shadow: none; + box-shadow: none; +} + +.currency-rate .update-rate { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding-left: 40px; +} + +.currency-rate .update-rate .currency-info { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + -ms-flex-negative: 1; + flex-shrink: 1; +} + +.currency-rate .update-rate .currency-info>span { + font-size: 14px; + color: #797979; + font-weight: 600; +} + +.currency-rate .update-rate .currency-info h6 { + font-size: 15px; + font-weight: 700; +} + +.currency-rate .update-rate .currency-info h6 .transmoney { + font-size: 13px; + font-weight: 500; +} + +.currency-rate-v2 { + border-color: transparent; +} + +sub.transmoney-value { + bottom: 0px; +} + +.currency-info-base { + color: #c6cbdb; + font-weight: 700; +} + +.form-top-block { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-bottom: 30px; +} + +.form-top-block span { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + font-size: 16px; + color: #fff; +} + +.order-form-area-block { + margin-bottom: 30px; +} + +.latest-tranjections-area { + padding-bottom: 120px; +} + +.not-login { + padding-bottom: 50px; +} + +.tv_orde_table thead th.tv_orde_1st_th { + border-right: 1px solid #e8e9eb; +} + +/* +|---------------------------------------------------------------------------- +| 11. Tranding Info Style +|---------------------------------------------------------------------------- +*/ +.new-ticker-block-wrap { + border-radius: 10px; +} + +.teanding-info-block { + padding: 120px 0; +} + +.teanding-info-block table { + border: 1px solid #e8e9eb; +} + +.teanding-info-block table thead tr th:first-child { + padding: 15px; + text-align: center; + border-right: 1px solid #e8e9eb; +} + +.teanding-info-block table tbody tr td { + padding: 15px; +} + +.teanding-info-block table tbody tr td:first-child { + text-align: center; + border-right: 1px solid #e8e9eb; +} + +.teanding-info-block table tbody tr td img { + display: inline-block; + margin-right: 8px; +} + +.teanding-info-block table tbody tr td span { + vertical-align: middle; +} + +.teanding-info-block .search-form input[type='text'] { + height: 50px; + min-width: 270px; + border: 1px solid #e8e9eb; + -webkit-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} + +.teanding-info-block .search-form button { + height: 50px; +} + +.trending-info-currency-option .dropdown-toggle { + background: #f7f7f7; + color: #797979; + min-width: 150px; + min-height: 50px; + vertical-align: middle; + position: relative; + border: 1px solid #e8e9eb; +} + +.trending-info-currency-option .dropdown-toggle:focus, +.trending-info-currency-option .dropdown-toggle:active { + -webkit-box-shadow: none; + box-shadow: none; +} + +.trending-info-currency-option .dropdown-toggle:after { + position: absolute; + right: 25px; + top: 21px; +} + +.trending-info-currency-option .dropdown-menu { + min-width: 150px; +} + +.trending-info-currency-option .dropdown-item.active, +.trending-info-currency-option .dropdown-item:active { + background: #f7f7f7; + color: #797979; +} + +.trending-info-currency-option i.fas { + background: #fff; + border: 1px solid #e8e9eb; + height: 26px; + width: 26px; + vertical-align: middle; + font-size: 13px; + line-height: 25px; + text-align: center; + color: #1c2437; + -webkit-border-radius: 50%; + -o-border-radius: 50%; + border-radius: 50%; + position: absolute; + left: 15px; +} + +.trending-info-currency-option .btn-primary:not(:disabled):not(.disabled).active, +.trending-info-currency-option .btn-primary:not(:disabled):not(.disabled):active, +.trending-info-currency-option.show>.btn-primary.dropdown-toggle { + background: #f7f7f7; + color: #797979; + border: 1px solid #e8e9eb; + -webkit-box-shadow: none; + box-shadow: none; +} + +.trending-info-tab { + margin-bottom: 20px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} + +.trending-info-tab .nav-item { + -webkit-box-flex: initial; + -ms-flex-positive: initial; + flex-grow: initial; + min-width: 100px; +} + +.account-server-info-block { + border: 1px solid #e8e9eb; + margin-top: 30px; +} + +.account-table { + margin-bottom: 0; +} + +.account-table thead tr th { + border: none; + text-align: right; + color: #a2a2a2; +} + +.account-table thead tr th:first-child { + text-align: left; +} + +.account-table tbody tr { + background: #fff; + text-align: right; +} + +.account-table tbody tr td:first-child { + text-align: left; +} + +/* +|---------------------------------------------------------------------------- +| 12. Working-process Style +|---------------------------------------------------------------------------- +*/ +.working-process-section { + padding: 120px 0 80px 0; +} + +.working-process-list { + margin: 0; + padding: 0; + list-style: none; +} + +.working-process-list li+li { + margin-top: 55px; +} + +.working-process-step h4 { + font-weight: 700; + color: #0b132d; + margin-bottom: 10px; +} + +.working-process-step h4 span { + color: #1652f0; +} + +.process-details { + margin-left: 15px; + padding: 10px 0 0 35px; + position: relative; +} + +.process-details p { + margin-bottom: 0; +} + +.process-details:before { + content: url("~@/assets/img/others/19.png"); + position: absolute; + left: 0; + top: 9px; +} + +.user-connected-form-block { + padding: 40px 40px 45px 40px; + background: #fff; + -webkit-box-shadow: 0px -20px 45px 0px rgba(0, 0, 0, 0.05); + box-shadow: 0px -20px 45px 0px rgba(0, 0, 0, 0.05); +} + +.user-connected-form-block h3 { + font-size: 24px; + line-height: 36px; + font-weight: 700; + color: #1c2437; + margin-bottom: 30px; +} + +.user-connected-form-block p { + margin: 0 auto; + text-align: center; + font-size: 14px; +} + +.user-connected-form-block p a { + color: #1652f0; +} + +.user-connected-from input { + border-radius: 0px; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + min-height: 50px; + padding: 0 20px; + border: 1px solid #e8e9eb; +} + +.user-connected-from input:focus { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; + border-color: #e8e9eb; +} + +.user-connected-from .form-group { + margin-bottom: 30px; +} + +.user-connected-from .btn-default { + width: 100%; + border-radius: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + -o-border-radius: 0; + background: #1652f0; + color: #fff; + font-weight: 700; + font-size: 15px; + min-height: 50px; + margin-bottom: 20px; +} + +.user-connected-from .btn-default:active, +.user-connected-from .btn-default:focus:active, +.user-connected-from .btn-default:focus { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.counter-section.counter-style-two { + padding: 210px 0 286px 0; +} + +.counter-section { + position: relative; + overflow: hidden; + padding: 210px 0 120px 0; + background: url(~@/assets/img/bg/3.png) no-repeat top -10px center; +} + +.counter-block { + text-align: center; + margin-bottom: 30px; +} + +.counter-block h3 { + color: #1652f0; + font-weight: 700; + margin-bottom: 10px; +} + +.counter-block p { + margin-bottom: 0; + font-size: 18px; +} + +.counter-vintage { + position: absolute; + right: 0; + left: 0; + bottom: -90px; + margin: 0 auto; +} + +.counter-vintage img { + display: block; + margin: 0 auto; +} + +.app-download-section { + padding: 120px 0 90px 0; + background-image: -moz-linear-gradient(90deg, white 0%, rgba(22, 82, 240, 0.03) 100%); + background-image: -webkit-linear-gradient(90deg, white 0%, rgba(22, 82, 240, 0.03) 100%); + background-image: -ms-linear-gradient(90deg, white 0%, rgba(22, 82, 240, 0.03) 100%); +} + +.download-options-list { + margin: 0 auto; + padding: 0; + list-style: none; + text-align: center; +} + +.download-options-list li { + display: inline-block; + margin: 0 30px 30px 0; +} + +.download-options-list li:last-child { + margin-right: 0; +} + +.apps-download-btn { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + min-width: 200px; + padding: 12px 25px; + border: 1px solid #e8e9eb; + background: #fff; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.apps-download-btn:focus, +.apps-download-btn:active, +.apps-download-btn:focus:active { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.apps-download-btn p { + margin: 0; +} + +.apps-download-btn i.fab, +.apps-download-btn i.fas { + font-size: 30px; + color: #1652f0; +} + +.apps-download-btn .btn-content { + padding-left: 15px; + text-align: left; +} + +.apps-download-btn .btn-content span { + font-size: 14px; +} + +.apps-download-btn .btn-content p { + font-size: 16px; + font-weight: 700; + line-height: 20px; +} + +/* +|---------------------------------------------------------------------------- +| 13. Post Style +|---------------------------------------------------------------------------- +*/ +.latest-post-section { + padding: 120px 0 60px 0; +} + +.post-style-two.post-full-width { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 80px; +} + +.post-style-two.post-full-width .post-contnet-wrap { + padding: 100px 100px 101px 50px; +} + +.post-style-two.post-full-width .post-thumb { + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; +} + +.post-style-two.post-full-width .post-meta { + margin-bottom: 8px; +} + +.post-style-two.post-full-width .post-title { + margin-bottom: 26px; +} + +.post-style-two.post-full-width .post-title a { + font-size: 24px; +} + +.post-style-two.post-full-width .post-entry { + margin-bottom: 60px; +} + +.post-style-two { + margin-bottom: 60px; +} + +.post-style-two .post-contnet-wrap { + padding: 22px 30px 18px 30px; + background-color: #fff; + border: 1px solid #e8e9eb; + transition: all 0.3s ease-in; + -webkit-transition: all 0.3s ease-in; + -moz-transition: all 0.3s ease-in; + -ms-transition: all 0.3s ease-in; + -o-transition: all 0.3s ease-in; +} + +.post-style-two .post-contnet-wrap:hover { + -webkit-box-shadow: 0px 20px 45px 0px rgba(0, 0, 0, 0.05); + box-shadow: 0px 20px 45px 0px rgba(0, 0, 0, 0.05); +} + +.post-style-two .post-thumb img, +.post-style-two .post-thumb a { + display: block; +} + +.post-style-two .post-meta { + font-size: 14px; + color: #1652f0; + display: block; + margin-bottom: 5px; +} + +.post-style-two .post-title { + margin-bottom: 25px; +} + +.post-style-two .post-title a { + color: #1c2437; + font-size: 18px; + font-weight: 700; +} + +.post-style-two .post-entry { + margin-bottom: 35px; +} + +.post-style-two .post-footer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.post-style-two .author-thumb img { + border-radius: 50%; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; + display: block; + margin-right: 12px; +} + +.post-style-two .post-comments, +.post-style-two .post-author-block, +.post-style-two .post-footer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.post-style-two .author-info h5 { + font-size: 14px; + font-weight: 700; +} + +.post-style-two .post-comments img { + margin-right: 9px; +} + +/*--------------------------------------------- + 14 Blog Details Style +---------------------------------------------*/ +.blog-details-wrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 120px 0 40px 0; +} + +.blog-details-wrapper .info { + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + -ms-flex-preferred-size: 20%; + flex-basis: 20%; +} + +.blog-details-wrapper .info .post-author-block { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 42px; +} + +.blog-details-wrapper .info .post-author-block a { + display: block; +} + +.blog-details-wrapper .info .author-info h5 { + font-weight: 700; + margin-bottom: 0; + font-size: 14px; + color: #5f5f5f; +} + +.blog-details-wrapper .info .author-thumb { + margin-right: 15px; +} + +.blog-details-wrapper .info .post-meta-block span { + color: #1652f0; + display: block; + margin-bottom: 10px; +} + +.blog-details-wrapper .info .post-comments { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.blog-details-wrapper .info .post-comments img { + margin: 0 15px 0 0; +} + +.details-post-meta-block { + padding: 50px 0; + background: #fff; + border-top: 1px solid; + border-bottom: 1px solid; + border-color: #e8e9eb; +} + +.post-tag-block h5 { + margin-bottom: 15px; + font-weight: 700; + color: #1c2437; +} + +.post-tag-block .tags a { + padding: 3px 15px; + border: 1px solid #e8e9eb; + margin-right: 5px; + font-size: 12px; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + -webkit-transition: all 0.3s ease-in; + -o-transition: all 0.3s ease-in; + transition: all 0.3s ease-in; +} + +.post-tag-block .tags a:hover { + border-color: #1652f0; + color: #1652f0; +} + +.details-post-meta-block-wrap { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.details-post-meta-block-wrap .post-author-block { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.details-post-meta-block-wrap .post-author-block img { + margin-right: 15px; +} + +.details-post-meta-block-wrap .post-author-block .author-info h5 { + font-weight: 700; + margin-bottom: 0; +} + +.single-post-block .post-thumb-block { + margin-bottom: 40px; +} + +.single-post-block .post-title { + font-size: 24px; + font-weight: 700; + color: #0b132d; + margin-bottom: 20px; +} + +.single-post-block blockquote { + padding: 15px 30px; + font-size: 16px; + font-weight: 700; + color: #0b132d; +} + +.single-post-block .list-post-entry { + margin: 0 0 30px 0; + padding: 0; + list-style: none; +} + +.single-post-block .list-post-entry li i.fas { + margin-right: 20px; + color: #aaaaaa; +} + +.single-post-block .list-post-entry li+li { + margin-top: 10px; +} + +.post-comment-block { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +.post-comment-block .comment-respond, +.post-comment-block .comment-area { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + padding: 60px 30px; +} + +.post-comment-block .comment-respond h4, +.post-comment-block .comment-area h4 { + font-size: 18px; + font-weight: 700; + color: #1c2437; + margin-bottom: 42px; +} + +.post-comment-block .form-control { + background: transparent; +} + +.post-comment-block .comment-respond { + position: relative; +} + +.post-comment-block .comment-respond:before { + position: absolute; + content: ''; + top: 60px; + right: 0; + bottom: 60px; + width: 1px; + background: rgba(17, 17, 17, 0.08); +} + +.post-comment-block .comment-respond .form-group { + margin-bottom: 30px; +} + +.post-comment-block .comment-respond .form-group textarea { + resize: none; +} + +.post-comment-block .comment-respond .form-group .form-control { + height: 50px; + border: 0; + border-bottom: 1px solid rgba(17, 17, 17, 0.08); + border-radius: 0; + font-size: 14px; + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.post-comment-block .comment-respond .form-group .form-control:focus { + border-bottom-color: #1652f0; +} + +.post-comment-block .comment-respond .form-group textarea.form-control { + height: 100px; +} + +.post-comment-block .comment-area .comments { + padding: 0; + margin: 0; + list-style: none; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap { + padding-bottom: 30px; + border-bottom: 1px solid rgba(17, 17, 17, 0.08); +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .commenter-thumb { + height: 55px; + width: 55px; + border-radius: 50%; + overflow: hidden; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .commenter-info { + padding-left: 20px; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .commenter-info span { + display: block; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .commenter-info span.commenter-name { + font-size: 14px; + font-weight: 700; + line-height: 100%; + color: #1c2437; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .commenter-info span.date { + font-size: 12px; + color: #5f5f5f; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .reply { + margin-left: auto; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .reply .reply-button { + font-size: 12px; + outline: none; + -webkit-box-shadow: none; + box-shadow: none; + cursor: pointer; + text-transform: uppercase; + color: #fcfdff; + background: #f7f9fc; + color: #5f5f5f; + border: 1px solid #e8e9eb; + border-radius: 3px; + padding: 0px 15px; + transition: all 0.3s ease-in; + -webkit-transition: all 0.3s ease-in; + -moz-transition: all 0.3s ease-in; + -ms-transition: all 0.3s ease-in; + -o-transition: all 0.3s ease-in; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .reply .reply-button:hover { + color: #1652f0; + border-color: #1652f0; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-info .reply .modal-body .comment-respond:before { + height: 0; + width: 0; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-body { + padding-top: 12px; + color: #5f5f5f; +} + +.post-comment-block .comment-area .comments .comment .comment-wrap .comment-body p { + margin-bottom: 5px; +} + +.post-comment-block .comment-area .comments .comment .child-comment { + margin-left: 40px; + margin-top: 30px; +} + +.post-comment-block .comment-area .comments .comment:last-child .child-comment .comment:last-child .comment-wrap { + border-bottom: 1px solid rgba(17, 17, 17, 0.08); + padding-bottom: 30px; +} + +.post-comment-block .comment-area .comments .comment+.comment { + margin-top: 30px; +} + +.post-comment-block .comment-area .view-all { + margin-top: 20px; + text-align: center; + font-size: 1.4rem; + font-weight: 500; + color: #1652f0; + text-decoration: underline; +} + +.comment-respond .btn-default { + width: 170px; + height: 55px; + background: #1652f0; + font-weight: 700; + color: #fff; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.comment-respond .btn-default:hover, +.comment-respond .btn-default:active, +.comment-respond .btn-default:active:focus { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +/* +|---------------------------------------------------------------------------- +| 15. Support Details Style +|---------------------------------------------------------------------------- +*/ +.support-details-section { + padding: 120px 0 0 0; +} + +.support-details-tab-nav h4 { + font-weight: 700; + color: #0b132d; + margin-bottom: 50px; +} + +.support-list .nav-tabs { + border-color: transparent; +} + +.support-list .nav-link { + padding: 10px 20px; + background: transparent; + border: none; + text-align: left; + line-height: 24px; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.support-list .nav-link.active { + background: #1652f0; + color: #fff; +} + +.support-details-content .sp-title { + font-size: 24px; + font-weight: 700; + margin-bottom: 30px; + color: #0b132d; +} + +.supporter-details { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 35px; +} + +.supporter-details img { + margin-right: 15px; +} + +.sp-info h5 { + font-weight: 700; + margin-bottom: 3px; +} + +.support-entry-block { + margin-bottom: 37px; +} + +.support-entry-block p { + margin-bottom: 25px; +} + +.support-entry-block p+p { + margin-bottom: 0; +} + +.details-support-steps h5 { + margin-bottom: 17px; + font-weight: 700; + color: #1c2437; +} + +.details-support-steps p { + margin-bottom: 25px; +} + +.account-support-block { + margin-bottom: 45px; +} + +.account-support-img-block.double-img { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.account-support-img-block.double-img>div { + margin-right: 45px; +} + +.chart-support-block { + margin-bottom: 33px; +} + +.last-support-block { + margin-bottom: 65px; +} + +.last-support-block p { + margin-bottom: 0; +} + +.support-details-footer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + padding-bottom: 60px; + border-bottom: 1px solid #e8e9eb; +} + +.post-share-block h5, +.ishelpful-block h5 { + margin-bottom: 15px; + font-weight: 700; + color: #1c2437; +} + +.post-share-block ul, +.ishelpful-block ul { + margin: 0; + padding: 0; + list-style: none; +} + +.post-share-block ul li, +.ishelpful-block ul li { + display: inline-block; +} + +.ishelpful-list a { + padding: 4px 15px; + border: 1px solid #1652f0; + color: #1652f0; + text-transform: uppercase; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; +} + +.ishelpful-list li:first-child { + margin-right: 15px; +} + +.social-share-list li { + margin-right: 15px; +} + +.social-share-list li:last-child { + margin-right: 0; +} + +.social-share-list li a { + height: 26px; + width: 26px; + line-height: 26px; + text-align: center; + color: #fff; + font-size: 13px; + border-radius: 50%; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; +} + +.qs-answer-section { + padding: 120px 0; + text-align: center; +} + +.qs-answer-section h4 { + font-weight: 700; + font-size: 24px; + margin-bottom: 15px; +} + +.qs-answer-section img { + margin: 0 auto 45px auto; +} + +.qs-answer-section>span { + margin-bottom: 35px; + display: block; +} + +.qs-answer-section .btn-group { + display: block; + margin-bottom: 50px; +} + +.qs-answer-section .btn-default { + width: 150px; + height: 50px; + background: #cff0db; + color: #19bb4c; + font-weight: 700; + margin: 0 25px; + border-radius: 5px !important; + -webkit-border-radius: 5px !important; + -moz-border-radius: 5px !important; + -ms-border-radius: 5px !important; + -o-border-radius: 5px !important; +} + +.qs-answer-section .btn-default:hover, +.qs-answer-section .btn-default:focus, +.qs-answer-section .btn-defaultfocus:active { + -webkit-box-shadow: none; + box-shadow: none; + outline: none; +} + +.qs-answer-section .btn-default:hover { + background: #19bb4c; + color: #fff; +} + +.qs-answer-section .btn-default.active { + background: #1652f0; + color: #fff; +} + +.qs-answer-section p { + margin-bottom: 0; +} + +.qs-answer-section p span { + color: #1652f0; + font-weight: 700; +} + +/*----------------------------------- +16. FAQ Style +-----------------------------------*/ +.faq-section { + padding: 120px 0; +} + +.faq-section .qs-answer-section { + padding-bottom: 0; +} + +.bg-offwhite { + background-color: #f5f8f9; +} + +.accordion .accordion-header button { + text-align: left; + background-color: transparent; + font-weight: 400; + font-size: 1.8rem; + color: #009efd; + border: none; + padding: 12px 0 12px 40px; + display: block; + cursor: pointer; + -webkit-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; + position: relative; +} + +.accordion .accordion-header button.collapsed { + color: #003a49; +} + +.accordion .accordion-header button:before { + content: '\f106'; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + font-size: 2.2rem; + line-height: inherit; + padding: 12px 0; + text-align: left; + color: #009efd; + position: absolute; + top: 0; + left: 0; +} + +.accordion .accordion-header button.collapsed:before { + content: '\f107'; +} + +.accordion-body { + padding: 0 0 25px 40px; +} + +.list-group { + border-left: 1px solid rgba(0, 0, 0, 0.08); +} + +.list-group-item { + border: none; + padding: 7px 30px; + margin-left: -1px; + background-color: transparent; + position: relative; +} + +.list-group-item.active { + background-color: transparent; +} + +.list-group-item-action:focus, +.list-group-item-action:hover { + background-color: transparent; +} + +.list-group-item:before { + content: ''; + top: 0; + bottom: 0; + left: 0; + width: 0; + background-color: #009efd; + position: absolute; + -webkit-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; +} + +.list-group-item.active:before { + width: 5px; +} + +.list-group-item+.list-group-item { + margin-top: 24px; +} + +.list-group-item h5 { + font-weight: 700; + color: #0b132d; + font-size: 18px; + margin: 0; +} + +.list-group-item p { + margin-top: 10px; + margin-bottom: 0; +} + +.list-group-item.active p { + color: #5f5f5f; +} + +.tab-pane>h4 { + font-size: 24px; + color: #0b132d; + font-weight: 700; + border-bottom: 1px solid rgba(0, 0, 0, 0.08); + padding-bottom: 60px; + margin-bottom: 0px; +} + +.accordion.style-2 .accordion-item { + border-bottom: 1px solid rgba(0, 0, 0, 0.08); +} + +.accordion.style-2 .accordion-header button { + font-weight: 400; + color: #0b132d; + font-size: 18px; + padding: 35px 30px 35px 0; + width: 100%; + position: relative; +} + +.accordion.style-2 .accordion-header button:focus, +.accordion.style-2 .accordion-header button:active:focus { + outline: none; +} + +.accordion.style-2 .accordion-header button:before { + content: none; +} + +.accordion.style-2 .accordion-header button:after { + content: "\e622"; + font-family: 'themify'; + position: absolute; + top: 0; + right: 0; + line-height: 23px; + width: 25px; + text-align: center; + height: 25px; + border: 1px solid rgba(0, 0, 0, 0.08); + border-radius: 13px; + font-size: 1.2rem; + margin: 29px 0; +} + +.accordion.style-2 .accordion-header button.collapsed:after { + content: "\e61a"; +} + +.accordion.style-2 .accordion-body { + padding-left: 0; +} + +/* +|---------------------------------------------------------------------------- +| 17. Footer Style +|---------------------------------------------------------------------------- +*/ +.footer { + background: white; + // border-top: 1px solid #c7c7c7; +} + +.footer-upper-section { + padding: 70px 0; + position: relative; +} + +.footer-upper-section .footer-icon-wrap { + position: absolute; + right: 170px; + bottom: 55px; +} + +.footer-info-list>h4 { + font-size: 19px; + font-weight: 700; + color: #172636; + margin-bottom: 40px; +} + +.footer-info-list ul { + list-style: none; + margin: 0; + padding: 0; +} + +.footer-info-list ul li { + margin-bottom: 15px; +} + +.footer-info-list ul li:last-child { + margin-bottom: 0; +} + +.footer-info-list ul li a { + color: #c6cbdb; + transition: all 0.3s ease-in; + -webkit-transition: all 0.3s ease-in; + -moz-transition: all 0.3s ease-in; + -ms-transition: all 0.3s ease-in; + -o-transition: all 0.3s ease-in; +} + +.footer-info-list ul li a:hover { + color: #fff; +} + +.footer-info-list .contact-info { + color: #c6cbdb; + margin-bottom: 65px; +} + +.footer-info-list .contact-info li { + margin-bottom: 5px; +} + +.footer-info-list .contact-info span { + color: #fff; +} + +.footer-info-list .social-style-two { + list-style: none; +} + +.footer-info-list .social-style-two li { + display: inline-block; + margin-right: 30px; +} + +.footer-info-list .social-style-two li:last-child { + margin-right: 0; +} + +.footer-info-list .social-style-two li a { + color: #fff; + font-size: 18px; +} + +.footer-info-list .social-style-two li a:hover { + color: #1652f0; +} + +.footer-bottom { + padding: 15px 0; + border-top: 1px solid rgba(255, 255, 255, 0.08); +} + +.trade-volume-block { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; +} + +.trade-volume-block ul { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + margin: 0; + padding: 0; + list-style: none; +} + +.trade-volume-block ul li { + color: #c6cbdb; + margin-right: 25px; +} + +.trade-volume-block ul li span { + color: #fff; +} + +.trade-volume-block ul li:last-child { + margin-right: 0; +} + +.copyright-text { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + color: #c6cbdb; +} + +// 重写的样式 +.banner-swiper { + img { + width: 100%; + height: 100%; + object-fit: contain; + } + + .banner-item { + border-radius: 10px; + overflow: hidden; + } +} + +.marquee { + width: 100%; + overflow: hidden; + + .marquee-pargress { + width: 200%; + animation: marquee 40s infinite linear; + } + + .marquee-list { + padding: 14px 0; + background:#1e2834; + color:white; + .item { + padding: 0 14px; + width: 200px; + &.border-right{ + border-color: #4E4E5D !important; + } + } + + } + + &:hover { + .marquee-pargress { + animation-play-state: paused; + } + } +} + +@keyframes marquee { + 0% { + transform: translateX(0); + } + + 100% { + transform: translateX(-100%); + } +} + +.activity-box { + position: relative; + padding-top: 40px; + padding-bottom: 40px; + + &:hover { + .nav-btn { + opacity: 1; + transform: translateY(-50%); + + &.nav-left { + left: -0px; + } + + &.nav-right { + right: -0px; + } + } + } + + .nav-btn { + opacity: 0; + transition: all .3s; + position: absolute; + top: 50%; + transform: translateY(0); + z-index: 99; + font-size: 20px; + + &.nav-left { + left: 40px; + } + + &.nav-right { + right: 40px; + } + } + + .activity-slide { + height: 440px; + transform: scale(.9); + transition: all .3s; + background-color: #fff; + + // max-width: 360px; + .icon { + text-align: center; + padding: 100px 0 20px; + transition: all .3s; + + img { + height: 110px; + transition: all .3s; + } + } + + .title { + font-size: 18px; + font-weight: bold; + text-align: center; + margin: 20px 0; + transition: all .3s; + } + + .message { + padding: 20px; + max-height: 0; + transition: all .3s; + opacity: 0; + } + + &:hover { + transform: scale(1); + background-color: #f5f7fa; + + .icon { + padding-top: 20px; + + img { + height: 90px; + } + } + + .title { + font-size: 16px; + } + + .message { + max-height: 120px; + opacity: 1; + } + } + } +} +.section{ + background-color: #222e3e; +} +// 多平台下载 +.multi-platform { + overflow: hidden; + width:80%; + margin: 0 auto; + display: flex; + justify-content: space-between; + align-items: center; + height: 600px; + background-color: #222e3e; + // background: url(~@/assets/img/home_bg.png) no-repeat top center; + background-size: cover; + color: white; + .right{ + img{ + width: 100%; + } + } + .left { + background:#393947; + padding: 31px 40px 40px; + border: 1px solid #9494AC; + border-radius: 19px; + // margin-top: 80px; + .h2 { + font-weight: bold; + } + + .tip1 { + font-size: 18px; + } + + .qr-code-box { + border-radius: 10px; + padding: 20px; + padding-top: 0; + margin-top: 20px; + + .scan-icon { + width: 28px; + height: 28px; + } + + .label { + font-size: 20px; + padding: 10px 0; + } + } + } +} + + +.lattest-news-section { + .post-entry { + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + height: 42px; + } + .setion-title-two{ + margin-top: 40px; + } +} diff --git a/src/assets/scss/module/_market-book.scss b/src/assets/scss/module/_market-book.scss new file mode 100644 index 0000000..bf71371 --- /dev/null +++ b/src/assets/scss/module/_market-book.scss @@ -0,0 +1,152 @@ +.order-book table, +.order-book tr, +.order-book td, +.order-book th { + width: 100%; + table-layout: fixed; +} +.order-book tr { + float: left; + clear: both; + overflow: hidden; +} +.order-book .table thead th { + font-weight: 400; + font-size: 12px; +} +.order-book thead tr { + border-bottom: 1px solid #e0e3eb; +} +.order-book tbody tr, +.order-book tbody td { + border: none; +} +.order-book { + border: 1px solid #e0e3eb; + border-radius: 2px; +} +.red-bg-80, +.red-bg-60, +.red-bg-40, +.red-bg-20, +.red-bg-10, +.red-bg-8, +.red-bg-5, +.red-bg, +.green-bg-80, +.green-bg-60, +.green-bg-40, +.green-bg-20, +.green-bg-10, +.green-bg-8, +.green-bg-5, +.green-bg { + position: relative; +} +.red-bg-80:after, +.red-bg-60:after, +.red-bg-40:after, +.red-bg-20:after, +.red-bg-10:after, +.red-bg-8:after, +.red-bg-5:after, +.red-bg:after { + position: absolute; + content: ""; + background: #de262663; + right: 0; + top: 0; + width: 280px; + height: 45px; +} +.red-bg-60:after { + width: 240px; +} +.red-bg-40:after { + width: 200px; +} +.red-bg-20:after { + width: 160px; +} +.red-bg-10:after { + width: 120px; +} +.red-bg-8:after { + width: 80px; +} +.red-bg-5:after { + width: 50px; +} +.red-bg:after { + width: 30px; +} + +.green-bg-80:after, +.green-bg-60:after, +.green-bg-40:after, +.green-bg-20:after, +.green-bg-10:after, +.green-bg-8:after, +.green-bg-5:after, +.green-bg:after { + position: absolute; + content: ""; + background: #26de8163; + right: 0; + top: 0; + width: 280px; + height: 45px; +} +.green-bg-60:after { + width: 240px; +} +.green-bg-40:after { + width: 200px; +} +.green-bg-20:after { + width: 160px; +} +.green-bg-10:after { + width: 120px; +} +.green-bg-8:after { + width: 80px; +} +.green-bg-5:after { + width: 50px; +} +.green-bg:after { + width: 30px; +} +.ob-heading span { + color: #4a4a4a; + display: block; + font-size: 12px; + font-weight: 400; +} + +.ob-heading td { + padding: 5px 12px; + cursor: default; +} + +.ob-heading tr { + border-top: 1px solid #f0f3fa !important; + border-bottom: 1px solid #f0f3fa !important; +} +.ob-heading tr:hover { + background: #fff; +} +.ob-heading td:first-child { + width: 65%; +} + +.order-book tbody { + display: block; + overflow-y: auto; + height: 211px; +} + +tbody.ob-heading { + height: inherit; +} diff --git a/src/assets/scss/module/_market-history.scss b/src/assets/scss/module/_market-history.scss new file mode 100644 index 0000000..bb0d13c --- /dev/null +++ b/src/assets/scss/module/_market-history.scss @@ -0,0 +1,40 @@ +.market-history .nav { + background: #F5F9FC; +} +.market-history .nav-link { + color: #4a4a4a; + padding: 10px 13px; +} + +.market-history .nav-link.active { + color: #007bff; + background: transparent; +} + +.market-history thead tr th, +.market-history tbody tr td { + cursor: pointer; + font-weight: 400; +} +.market-history tbody { + height: 320px; + overflow-y: auto; + display: block; +} + +.market-history table, +.market-history tr, +.market-history td, +.market-history th { + // table-layout: fixed; +} +.market-history tr { + float: left; + clear: both; + overflow: hidden; + width: 100%; +} +.market-history { + border: 1px solid #e0e3eb; + border-radius: 2px; +} diff --git a/src/assets/scss/module/_market-news.scss b/src/assets/scss/module/_market-news.scss new file mode 100644 index 0000000..f1e3eab --- /dev/null +++ b/src/assets/scss/module/_market-news.scss @@ -0,0 +1,40 @@ + +.market-news { + border: 1px solid #e0e3eb; + border-radius: 2px; +} + +.market-news li a { + color: #4a4a4a; + font-size: 11px; + display: block; + text-decoration: none; +} +.market-news li:hover { + background: #f6f8f9; +} +.market-news li strong { + display: block; + font-size: 13px; + margin-bottom: 2px; + color: #4a4a4ac7; +} + +.market-news li span { + display: block; + margin-top: 5px; +} + +.market-news li { + border-bottom: 1px solid #f0f3fa; + padding: 10px 13px; +} + +.market-news li:last-child { + border: 0; +} + +.market-news ul { + height: 348px; + overflow-y: auto; +} \ No newline at end of file diff --git a/src/assets/scss/module/_market-order.scss b/src/assets/scss/module/_market-order.scss new file mode 100644 index 0000000..6568262 --- /dev/null +++ b/src/assets/scss/module/_market-order.scss @@ -0,0 +1,26 @@ +.market-order th { + width: 13%; +} +.no-data { + position: absolute; + right: 48%; + top: 48%; + text-align: center; + color: #b9c2ca; +} +.no-data i { + font-size: 100px; + display: block; + line-height: 0px; + color: #dce1e5; +} +.market-order-item { + color: #758696; + padding: 8px 15px; +} +.market-order { + border-top: 0; + min-height: 392px; + border: 1px solid #e0e3eb; + border-radius: 2px; +} \ No newline at end of file diff --git a/src/assets/scss/module/_market-pairs.scss b/src/assets/scss/module/_market-pairs.scss new file mode 100644 index 0000000..4b59399 --- /dev/null +++ b/src/assets/scss/module/_market-pairs.scss @@ -0,0 +1,89 @@ +.market-pairs { + border: 1px solid #e0e3eb; + padding-top: 14px; + border-radius: 2px; +} + +.market-pairs .input-group { + padding: 0 14px; +} + +.market-pairs span { + background: transparent; +} + +.market-pairs input { + border-color: #e0e3eb; + border-left: 0; + font-weight: 300; +} + +.market-pairs input:focus { + box-shadow: none; + border-color: #e0e3eb; +} + +.market-pairs .nav { + margin-top: 14px; + background: #f5f9fc; +} + +.market-pairs .nav-link { + color: #4a4a4a; + padding: 10px 13px; +} + +.market-pairs .nav-link.active { + color: #007bff; + background: transparent; +} + +.table { + margin-bottom: 0; +} + +.table td { + font-size: 13px; + padding: 10px 18px; +} + +.market-pairs tbody tr td i { + color: #75869696; +} + +#STAR i { + color: #007bff; +} + +.market-pairs thead tr th, +.market-pairs tbody tr td { + cursor: pointer; + font-weight: 400; +} + +.market-pairs tbody { + height: 800px; + overflow-y: auto; + display: block; +} + +.no-fluid .market-pairs tbody { + height: 847px; +} + +.market-pairs table, +.market-pairs tr { + width: 100%; + table-layout: fixed; +} + +.market-pairs tr { + float: left; + clear: both; + overflow: hidden; +} + +.market-pairs thead th, +.market-pairs tbody td { + width: 65%; +} \ No newline at end of file diff --git a/src/assets/scss/module/_market-trade.scss b/src/assets/scss/module/_market-trade.scss new file mode 100644 index 0000000..40259b7 --- /dev/null +++ b/src/assets/scss/module/_market-trade.scss @@ -0,0 +1,126 @@ +.market-trade input { + border: 1px solid #e0e3eb; + font-weight: 300; +} + +.market-trade input:focus { + box-shadow: none; + border-color: #e0e3eb; +} + +.market-trade { + border: 1px solid #e0e3eb; + border-radius: 2px; +} + +.market-trade .tab-content { + height: 381px; + overflow-y: auto; + padding: 14px; +} + +.market-trade .nav { + padding: 14px 14px 0; +} + +.market-trade .nav .nav-item .nav-link.active { + background: #fff; + color: #007bff; +} + +.market-trade .nav .nav-item .nav-link { + color: #4a4a4a; + padding: 0; +} + +.market-trade .input-group-text { + background: #eff2f6; + color: #4a4a4a; + font-weight: 300; +} + +.market-trade .input-group { + margin-bottom: 14px; +} + +.market-trade .nav-item { + margin-right: 30px; +} + +.market-trade-list li a { + background: #eff2f6; + color: #4a4a4a; + font-weight: 300; + padding: 3px 15px; + border-radius: 5px; +} + +.market-trade-list li { + display: inline-block; + margin-right: 7px; + margin-bottom: 7px; +} + +.market-trade-list li:last-child { + margin-right: 0; +} + +.market-trade-buy .market-trade-list li a:hover { + text-decoration: none; + background: #26a69a; + color: #fff; +} + +.market-trade-sell .market-trade-list li a:hover { + text-decoration: none; + background: #ef5350; + color: #fff; +} + +.market-trade button.buy, +.market-trade button.sell { + background: #26de81; + color: #fff; + text-transform: uppercase; + padding: 10px; + margin-top: 30px; + width: 100%; + box-shadow: 0px 0px 15px 0px #26de81ad; +} + +.market-trade button.sell { + background: #ff231f; + box-shadow: 0px 0px 15px 0px #ff231fad; +} + +.market-trade p { + margin: 5px 0; + font-size: 13px; + color: #4a4a4a; +} + +.market-trade p span { + float: right; +} + +.market-trade-list { + margin-bottom: 23px; +} + +.market-trade-item { + width: 100%; +} + +.market-trade-buy, +.market-trade-sell { + width: 100%; +} + +.market-trade-buy { + padding: 0 15px 0 0; +} + +.market-trade-sell { + padding: 0 0 0 15px; + border-left: 1px solid #e0e3eb; +} \ No newline at end of file diff --git a/src/assets/scss/module/_markets.scss b/src/assets/scss/module/_markets.scss new file mode 100644 index 0000000..d1a5b04 --- /dev/null +++ b/src/assets/scss/module/_markets.scss @@ -0,0 +1,166 @@ +.markets-chart > div { + width: 110%; + margin-left: -16px; +} +.markets-container { + position: relative; + overflow: hidden; + height: 159px; + border: 1px solid rgba(0, 0, 0, 0.02); + box-shadow: 0 2px 16px 0 rgba(0, 0, 0, 0.04); + border-radius: 5px; + margin-bottom: 30px; + background-color: #222e3d; +} + +.markets-chart { + position: absolute; + top: 40px; + width: 100%; + left: 0; +} + +.markets-content span.green, +.markets-content span.red { + position: absolute; + right: 0; + background: #26a69a; + color: #fff; + top: 15px; + padding: 3px 12px; + border-top-left-radius: 50px; + border-bottom-left-radius: 50px; + font-weight: 600; +} +.markets-content span.red { + background: #ef5350; +} +.markets-content h2 { + font-size: 14px; + top: 14px; + position: absolute; + left: 15px; +} + +.markets-content p { + position: absolute; + top: 32px; + left: 15px; + font-size: 16px; +} + +.markets-pair-list tr { + cursor: pointer; +} +.markets-pair-list th, +.markets-pair-list td { + padding: 15px !important; + font-size: 14px; +} + +.markets-pair-list tbody tr td i { + color: #75869696; +} + +.markets-pair-list .nav-link.active { +// color: white; + + color: black; + background: transparent; + position: relative; + + &::after { + content: ''; + display: block; + position: absolute; + bottom: 0px; + left: 50%; + width: 6px; + height: 6px; + border-radius: 50%; + background-color: black; + margin-left: -3px; + } +} + +.markets-pair-list .nav-link { +// color: #888894; +color: #888894; +} + +.markets-pair-list .nav { + padding: 7px 0; +} + +.markets-pair-list th { + font-weight: 400; +} + +.markets-pair-list td img { + width: 18px; + vertical-align: text-top; + margin-right: 5px; +} + +.markets-pair-list .load-more { + border: 1px solid #e0e3eb; + display: inline-block; + padding: 11px 30px 8px; + color: #4a4a4a; + margin-top: 50px; + transition: 0.3s; +} + +.markets-pair-list .load-more i { + margin-left: 10px; +} + +.markets-pair-list .load-more:hover { + background: #007bff; + color: #fff; + border: 1px solid #007bff; +} +.markets-item { + margin-bottom: 30px; +} + +.markets-capital-item { + box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 14px -6px; + padding: 40px 0 0 0; + text-align: center; + border-radius: 5px; + border: 1px solid #f2f4f9; + height: 311px; + margin-bottom: 30px; +} + +.markets-capital-chart { + margin-left: -10px; +} + +.markets-capital-item img { + width: 25px; + margin-top: -3px; + margin-right: 2px; +} + +.markets-capital-item h4 { + margin-top: 16px; + margin-bottom: 15px; + font-size: 20px; +} +.markets-capital-item h2 { + font-size: 26px; +} + +.markets-capital-details h3 { + font-size: 18px; + margin-bottom: 40px; +} + +.market-capital-ticker .markets-capital-item { + height: 96.2%; + margin-bottom: 5px; +} + + diff --git a/src/assets/scss/module/_module.scss b/src/assets/scss/module/_module.scss new file mode 100644 index 0000000..68e5834 --- /dev/null +++ b/src/assets/scss/module/_module.scss @@ -0,0 +1,21 @@ +@import './market-pairs'; +@import './market-book'; +@import './market-trade'; +@import './market-history'; +@import './market-news'; +@import './market-order'; +@import './markets'; +@import './form-access'; +@import './error'; +@import './tradingview'; +@import './wallet'; +@import './profile'; +@import './contact-us'; +@import './setting'; +@import './order'; +@import './option'; +@import './home'; +@import './course'; +@import './subscride'; +@import './exchange'; +@import './contract'; \ No newline at end of file diff --git a/src/assets/scss/module/_option.scss b/src/assets/scss/module/_option.scss new file mode 100644 index 0000000..697390a --- /dev/null +++ b/src/assets/scss/module/_option.scss @@ -0,0 +1,229 @@ +.option-page { + background: #e0e3eb; + + .page-top { + padding-top: 1px; + + .kline-box { + background: $cls-white; + + .coin-change { + height: 50px; + + .icon { + height: 24px; + } + } + } + + .opt-box { + width: 356px; + + .time-box { + background: $cls-white; + } + + .form-box { + background: $cls-white; + + .form-coin:hover { + color: #fff; + } + + .sub { + color: #fff; + text-transform: uppercase; + width: 100%; + + &.buy { + background: $increace; + } + + &.sell { + background: $decreace; + } + } + } + + } + + .bill-list { + background: $cls-white; + + .list { + height: 565px; + overflow: auto; + } + } + } + + .page-bottom { + min-height: 200px; + background: $cls-white; + } + +} +.theme-switch{ + position: relative; + height: 24px; + width: 60px; + overflow: hidden; + cursor: pointer; + vertical-align: middle; + display: inline-block; + .theme-switch-button{ + width: 24px; + height: 24px; + position: absolute; + left: 0; + background-color: #007bff; + border-radius: 2px; + text-align: center; + color: #fff; + .left,.right{ + position: absolute; + top: 0; + width: 60px; + height: 100%; + box-sizing: border-box; + line-height: 24px; + color: #333; + } + .left{ + right: 0; + padding-right: 24px; + + } + .right{ + left: 0; + padding-left: 24px; + } + } + &.active{ + .theme-switch-button{ + left:34px; + } + } +} +.dark-app { + $header: #2b2839; + $page-bg: #e9e9e9; + $head: #1e2834; + $panel:#222e3d; + $panel-1: #455c71; + $border: #2a2e39; + $color: #c0c4cc; + + background: $page-bg; + + .option-page { + background: $page-bg; + color: $color; + + .page-top{ + .bill-list{ + background: $panel; + } + .opt-box { + .time-box, + .form-box { + background: $panel; + } + } + .kline-box{ + background: $panel; + } + } + } + + #common-header { + background: $header; + border-bottom-color: $page-bg; + } + + .markets-pair-list .nav { + background: $head; + } + + .heading { + background: $head; + color: $color; + } + + .bg-light { + background-color: $head !important; + } + .border-right{ + border-right-color:$border !important; + } + .form-control { + background-color: transparent; + border-color: #6c757d; + color: $color; + } + + header nav a { + color: $color; + } + + header nav a:hover { + color: #007bff; + } + + .tab-content { + background: $panel; + } + + .table { + + td, + th { + border-top-color: $border; + } + + tr:hover { + background: $page-bg; + } + } + tbody tr { + color: $color; + } + .nav-link{ + color: $color; + } + .theme-switch .theme-switch-button .left, .theme-switch .theme-switch-button .right{ + color: $color; + } + .border{ + border-color:$border !important; + } + .el-collapse-item__wrap{ + background: $panel-1; + border-color:$border; + } + + .el-popper[x-placement^=bottom] .popper__arrow::after{ + border-bottom-color: $panel-1; + } + .el-collapse-item__content{ + color:$color; + } + .el-popover,.el-collapse-item__header,.el-dropdown-menu{ + background:$panel-1; + color:$color; + border-color:$border; + } + .el-dropdown-menu__item{ + color: $color; + } + .el-pagination button:disabled, + .el-dialog, + .el-pager li { + background: transparent; + } + .el-button{ + background: $page-bg; + border-color: $border; + } + +} diff --git a/src/assets/scss/module/_order.scss b/src/assets/scss/module/_order.scss new file mode 100644 index 0000000..ed07944 --- /dev/null +++ b/src/assets/scss/module/_order.scss @@ -0,0 +1,32 @@ +.order-page{ + .panel-box { + border: 1px solid transparent; + border-radius: 2px; + .heading { + $i: 1; + + @while $i<=6 { + + .h#{$i}, + h#{$i} { + margin-bottom: 0; + } + + $i:$i+1; + } + .tab-item{ + cursor: pointer; + &:hover{ + color: $cls-blue; + } + } + .active{ + color: $cls-blue; + } + } + .tab-content { + overflow-y: auto; + padding: 14px; + } + } +} \ No newline at end of file diff --git a/src/assets/scss/module/_profile.scss b/src/assets/scss/module/_profile.scss new file mode 100644 index 0000000..0c566dd --- /dev/null +++ b/src/assets/scss/module/_profile.scss @@ -0,0 +1,36 @@ +.profile-page { + + .panel-box { + border: 1px solid transparent; + border-radius: 2px; + + .heading { + $i: 1; + + @while $i<=6 { + + .h#{$i}, + h#{$i} { + margin-bottom: 0; + } + + $i:$i+1; + } + } + + .tab-content { + overflow-y: auto; + padding: 14px; + } + } + + .min-height-50 { + min-height: 50px; + } + + // 重置密码 + .reset-password { + width: 350px; + margin-top: 70px; + } +} \ No newline at end of file diff --git a/src/assets/scss/module/_setting.scss b/src/assets/scss/module/_setting.scss new file mode 100644 index 0000000..bce8c1e --- /dev/null +++ b/src/assets/scss/module/_setting.scss @@ -0,0 +1,35 @@ +.setting-page { + .text-tips { + color: $caution; + } + .blue { + color: $cls-blue; + } + .color-cls-gray{ + color: $cls-gray; + } + .light-purple{ + color: $cls-purple; + } + .panel-box { + border: 1px solid transparent; + border-radius: 2px; + .heading { + $i: 1; + + @while $i<=6 { + + .h#{$i}, + h#{$i} { + margin-bottom: 0; + } + + $i:$i+1; + } + } + .tab-content { + overflow-y: auto; + padding: 14px; + } + } +} \ No newline at end of file diff --git a/src/assets/scss/module/_subscride.css b/src/assets/scss/module/_subscride.css new file mode 100644 index 0000000..df49a2b --- /dev/null +++ b/src/assets/scss/module/_subscride.css @@ -0,0 +1,6 @@ +.subscride-page { + background-color: #f4f5e6; + margin-bottom: -48px; + color: #172636; + padding: 1px 0; +} diff --git a/src/assets/scss/module/_subscride.min.css b/src/assets/scss/module/_subscride.min.css new file mode 100644 index 0000000..e567e5f --- /dev/null +++ b/src/assets/scss/module/_subscride.min.css @@ -0,0 +1 @@ +.subscride-page{background-color:#f4f5e6;margin-bottom:-48px;color:#172636;padding:1px 0} diff --git a/src/assets/scss/module/_subscride.scss b/src/assets/scss/module/_subscride.scss new file mode 100644 index 0000000..9ec1bb4 --- /dev/null +++ b/src/assets/scss/module/_subscride.scss @@ -0,0 +1,6 @@ +.subscride-page{ + background-color: #f4f5e6; + margin-bottom: -48px; + color: #172636; + padding: 1px 0; +} diff --git a/src/assets/scss/module/_tradingview.scss b/src/assets/scss/module/_tradingview.scss new file mode 100644 index 0000000..6e52fef --- /dev/null +++ b/src/assets/scss/module/_tradingview.scss @@ -0,0 +1,9 @@ +.technical-analysis .tradingview-widget-container { + margin-bottom: 30px; +} +.symbol-info .tradingview-widget-container { + margin-bottom: 15px; +} +.markets-overview .tradingview-widget-container { + margin-bottom: 30px; +} \ No newline at end of file diff --git a/src/assets/scss/module/_wallet.scss b/src/assets/scss/module/_wallet.scss new file mode 100644 index 0000000..1ac40f1 --- /dev/null +++ b/src/assets/scss/module/_wallet.scss @@ -0,0 +1,69 @@ +.wallet-page { + // // 颜色 + // $colorList: ( // 页面底色 + // $underpainting underpainting, + // // 主体颜色 + // $clr clr, + // $fontclr fontclr, + // // 经典浅紫色 + // $cls-purple cls-purple, + // $cls-blue cls-blue, + // // 字体主体灰 + // $cls-gray cls-gray, + // // 字体主体黑 + // $cls-black cls-black, + // $cls-white cls-white, + // // exchange & contract + // $decreace decreace, + // $increace increace, + // // tips + // $caution caution, + + // // disabled + // $dim dim); + + // @each $item1, + // $item2 in $colorList { + // .color-#{$item2} { + // color: $item1; + // } + + // .bg-#{$item2} { + // background-color: $item1; + // } + + // } + min-height: 500px; + .panel-box { + border: 1px solid transparent; + border-radius: 2px; + .heading{ + $i:1; + @while $i<=6 { + .h#{$i},h#{$i}{ + margin-bottom: 0; + } + $i:$i+1; + } + } + .tab-content { + min-height: 320px; + overflow-y: auto; + padding: 14px; + } + } + + .hover{ + transform: scale(1); + cursor: pointer; + transition: all .3s; + &:hover{ + transform: scale(1.1); + } + } + + .funding-table{ + max-height: 500px; + overflow-y: auto; + } +} \ No newline at end of file diff --git a/src/assets/scss/theme/_dark.scss b/src/assets/scss/theme/_dark.scss new file mode 100644 index 0000000..5f2163f --- /dev/null +++ b/src/assets/scss/theme/_dark.scss @@ -0,0 +1,678 @@ +#dark, +#dark header { + background: #131722 !important; + border-bottom: 1px solid #2d2c2c; +} + +#dark header nav a { + color: #ffffff; +} + +#dark header nav a:hover { + color: #007bff; +} + +#dark header nav a.btn:hover { + color: #ffffff; +} + +#dark header nav .nav-item.active a { + color: #007bff; +} + +#dark .market-pairs { + border: 1px solid #2a2e39; + background: #131722; +} + +#dark tr { + background: #131722; +} + +#dark .market-pairs .table td, +#dark .market-pairs .table th { + border-top: 1px solid #2a2e39; +} + +#dark .market-history .table td, +#dark .market-history .table th { + border-top: 1px solid #2a2e39; +} + +#dark .order-book thead tr { + border-bottom: 1px solid #2a2e39; +} + +#dark .order-book, +#dark .market-history, +#dark .market-news { + border: 1px solid #2a2e39; +} + +#dark tbody tr:hover { + background: #2a2e39; +} + +#dark .form-control::-webkit-input-placeholder { + /* Chrome/Opera/Safari */ + color: #69727a; +} + +#dark .form-control::-moz-placeholder { + /* Firefox 19+ */ + color: #69727a; +} + +#dark .form-control:-ms-input-placeholder { + /* IE 10+ */ + color: #69727a; +} + +#dark .form-control:-moz-placeholder { + /* Firefox 18- */ + color: #69727a; +} + +#dark tbody tr { + color: #ffffff; +} + +#dark thead th, +#dark .market-pairs .nav-link { + color: #4f5966; +} + +#dark .market-pairs .nav-link.active, +#dark #STAR i { + color: #ffffff; +} + +#dark .green { + color: #26de81; +} + +#dark .red { + color: #ff231f; +} + +#dark .market-pairs .nav { + background: #1c2030; +} + +#dark .market-pairs input, +#dark .market-pairs span { + border-color: #2a2e39; + background: #2a2e39; +} + +#dark .market-pairs input { + color: #ffffff; +} + +#dark .heading { + background: #1c2030; + color: #ffffff; +} + +#dark .ob-heading tr { + border-top: 1px solid #2a2e39 !important; + border-bottom: 1px solid #2a2e39 !important; +} + +#dark .ob-heading tr:hover { + background: #131722; + cursor: default; +} + +#dark .ob-heading span { + color: #4f5966; +} + +#dark .dropdown-menu { + background: #131722; + box-shadow: 0 0 10px 0 #131722; + border: 1px solid #2a2e39; +} + +#dark .dropdown-item:focus, +#dark .dropdown-item:hover { + background-color: #2a2e39; + color: #ffffff; +} + +#dark .market-history .nav { + background: #1c2030; +} + +#dark .market-history .nav-link.active { + color: #ffffff; +} + +#dark .market-history .nav-link { + color: #4f5966; +} + +#dark .red-bg-80:after, +#dark .red-bg-60:after, +#dark .red-bg-40:after, +#dark .red-bg-20:after, +#dark .red-bg-10:after, +#dark .red-bg-8:after, +#dark .red-bg-5:after, +#dark .red-bg:after { + background: #ff231f63; +} + +#dark .market-news { + background: #131722; +} + +#dark .market-news li { + border-bottom: 1px solid #2a2e39; +} + +#dark .market-news li:hover { + background: #2a2e39; +} + +#dark .market-news li strong, +#dark .market-news li a { + color: #c5cbce; +} + +#dark .market-order { + background: #131722; +} + +#dark .no-data i, +#dark .no-data { + color: #2a2e39; +} + +#dark .market-trade { + border: 1px solid #2a2e39; + background: #131722; +} + +#dark .market-trade .nav .nav-item .nav-link.active { + background: transparent; + color: #ffffff; +} + +#dark .market-trade .nav .nav-item .nav-link { + color: #4f5966; +} + +#dark .market-trade p { + color: #c5cbce; +} + +#dark .market-trade-list li a { + background: #2a2e39; + color: #ffffff; +} + +#dark .market-trade input { + border: 1px solid #2a2e39; + background: #2a2e39; + color: #ffffff; +} + +#dark .market-trade .input-group-text { + background: #2a2e39; + color: #ffffff; + border-color: #2a2e39; +} + +#dark .market-trade-buy .market-trade-list li a:hover { + background: #26de81; + color: #fff; +} + +#dark .market-trade-sell .market-trade-list li a:hover { + background: #ff231f; + color: #fff; +} + +#dark #darkDepthChart { + background: #131722; +} + +#dark .markets { + background: #131722; +} + +#dark .table td, +#dark table th { + border-top: 1px solid #2a2e39; +} + +#dark .markets-pair-list .nav { + background: #1c2030; +} + +#dark .markets-pair-list .nav-link.active, +#dark #STAR i { + color: #ffffff; +} + +#dark thead th, +#dark .markets-pair-list .nav-link { + color: #4f5966; +} + +#dark .markets-pair-list .load-more { + border: 1px solid #2a2e39; + color: #ffffff; +} + +#dark .markets-pair-list .load-more:hover { + color: #fff; + border: 1px solid #007bff; +} + +#dark .markets-content h2, +#dark .markets-content p { + color: #ffffff; +} + +#dark .markets-content span.green, +#dark .markets-content span.red { + color: #fff; +} + +#dark .market-trade-sell { + border-left: 1px solid #2a2e39; +} + +#dark .markets-container { + background: #1e222d; +} + +#dark .sign-up-form h3 { + border-top: 0; + margin-top: 0; + padding-top: 15px; +} + +#dark header nav .nav-item.active a.btn:hover { + color: #fff; +} + +#dark .custom-control-input:checked~.custom-control-label::before { + color: #fff; + border-color: #007bff; + background-color: #007bff; +} + +#dark .dropdown-menu::before { + background: #131722; + border-top: 1px solid #2a2e39; + border-left: 1px solid #2a2e39; +} + +#dark .dropdown-menu p { + color: #ffffff; +} + +#dark .dropdown-header { + border-bottom: 1px solid #2a2e39; +} + +#dark .dropdown-footer { + border-top: 1px solid #2a2e39; +} + +#dark .header-img-icon .profile-nav .nav-item .nav-link:hover { + background-color: #2a2e39; + color: #ffffff; +} + +#dark .form-control, +#dark .settings-profile select { + background-color: #2a2e39; + border: 1px solid #2a2e39; + color: #ffffff !important; +} + +#dark .form-access form { + padding: 30px; + border-radius: 5px; + min-width: 350px; + box-shadow: 0 0 10px 0 #131722; + border: 1px solid #2a2e39; +} + +#dark .form-access h2, +#dark .form-access { + color: #ffffff; +} + +#dark .form-access .custom-control-label::before { + border: #2a2e39 solid 1px; + background-color: #2a2e39; +} + +#dark .error-page a { + border: 1px solid #2a2e39; + color: #ffffff; +} + +#dark .error-page a:hover { + border: 1px solid #007bff; + background: #007bff; + color: #ffffff; +} + +#dark .error-page h2, +#dark .error-page p { + color: #c5cbce; +} + +#dark .wallet .nav-pills a, +#dark .wallet-history { + border-top: 1px solid #2a2e39; +} + +#dark .wallet .nav { + background: #1e222d; +} + +#dark .wallet h2, +#dark .wallet h3, +#dark .wallet h4, +#dark .wallet p { + color: #ffffff; +} + +#dark .wallet button.green, +#dark .wallet button.red, +#dark .wallet .nav-pills a.active h2, +#dark .wallet .nav-pills a.active h3, +#dark .wallet .nav-pills a.active p { + color: #ffffff; +} + +#dark .wallet .tab-content li:first-child { + border-bottom: 1px solid #2a2e39; +} + +#dark .wallet-history tr { + background: #1e222d; +} + +#dark .wallet-address input, +#dark .wallet-address input:focus { + border: 1px solid #2a2e39; + background: #2a2e39; + box-shadow: none; + color: #ffffff; +} + +#dark .depth-chart-inner { + border: 1px solid #2a2e39; +} + +#dark .markets-capital-item { + box-shadow: 0 0 10px 0 #131722; + border: 1px solid #2a2e39; +} + +#dark .markets-capital-item h2, +#dark .markets-capital-item h4 { + color: #fff; +} + +#dark .settings .card { + background: #1e222d; +} + +#dark .settings .card-title { + color: #fff; +} + +#dark .settings-nav { + background: #1e222d; +} + +#dark .settings-nav .nav-link { + color: #ffffff; +} + +#dark .settings-notification li { + border-bottom: 1px solid #2a2e39; +} + +#dark .settings-notification li:last-child { + border-bottom: 0; +} + +#dark .settings-notification p { + color: #ffffff; +} + +#dark .settings-notification span { + color: #4f5966; +} + +#dark .settings label { + color: #fff; +} + +#dark .settings .custom-file-label { + background: #2a2e39; + border: 1px solid #2a2e39; + color: #616d75; +} + +#dark .settings-profile input[type="submit"] { + border: 1px solid #007bff; +} + + +#dark .borders{ + color: #fff; + transition: .4s ease-in; +} + +#dark .borders:hover{ + color: #007bff; +} + +#dark .bordere{ + color: #fff; + border: 1px solid #fff; + transition: .4s ease-in; +} + +#dark .bordere:hover{ + color: #007bff; + border: 1px solid #007bff; +} + +#dark .footer{ + background: #131722; + color: #fff; +} + +#dark .footer .footer-right .footer-div{ + color: #fff; +} + +#dark .item_p{ + color: #fff; +} + +#dark .lang_now{ + color: #fff; + } + +#dark .exchange-history .nav{ + background-color: #1c2030; +} +#dark .market-order{ + border: 1px solid #2a2e39; +} +#dark .contract-page .bg-plain{ + background-color: #1c2030; + color: #fff; +} +#dark .contract-page .bg-white{ + // background-color: #1c2030 !important; + background-color: #2b3139 !important; +} +#dark .contract-page{ + background-color: #181A20; +} +#dark .SecondaryNav{ + // background-color: #1c2030; + background-color: rgb(29 31 35); +} +#dark .SecondaryNavUl .SecondaryNavList a{ + color: #fff; +} +#dark .SecondaryNavUl .SecondaryNavList a{ + color: #fff; +} +#dark .SecondaryNavUl .SecondaryNavList a:hover{ + color: #797979; +} +#dark .SecondaryNavUl .SecondaryNavList .SecondaryNavActive::after{ + // background: #fff; +} +#dark .contact-us-page{ + color: #fff; +} +#dark .contact-us-page .row{ + color: #172636; +} +#dark .bg-panel{ + background: #181A20 !important; +} +#dark .form-group .el-input__inner{ + background-color: #2a2e39; + border: 1px solid #2a2e39; + color: #fff !important; +} +#dark #myTab .active{ + background-color: #2a2e39; + color: #fff; +} +#dark .form-group .form-control{ + background-color: #2a2e39 !important; + border: 1px solid #2a2e39 !important; + color: #fff !important; +} +#dark .user{ + background-color: #181A20; + color: #fff; +} +#dark .container{ + color: #fff; +} +#dark .el-collapse-item__header{ + background-color: #181A20; + color: #fff; +} +#dark .el-collapse-item__wrap{ + background-color: #181A20; +} +#dark .modal-content{ + color: #fff; + background-color: #181A20; +} +#dark .container-col{ + background-color: #181A20; +} +#dark .top_color{ + color: #fff; + background-color: #1c2030; +} + +#dark .footer-upper-section-lang{ + border: 1px solid #fff; +} + +// 资产 +#dark .Secondary_col{ + // background-color: rgb(29 31 35); +} +#dark .SecondaryNav{ + background-color: #131722; +} +#dark .SecondaryNavActive{ + background-color: #1c2030; +} +#dark .SecondaryNavList:hover{ + background-color: #2a2e39; +} +#dark .tab-color{ + color: #fff; +} + +// 合约 +#dark .Whole{ + background-color: #2b3139; +} +#dark .lever_col{ + background-color: #2b3139; +} + +// 资产总览 +#dark .rounded-xl{ + color: #fff; +} +#dark .bor_col{ + border: 1px solid #2b3139 !important; +} + +// 首页 +#dark .textcol{ + color: #fff !important; +} +#dark .Transaction{ + color: #fff; + background-color: #181A20; +} +#dark #dowebok{ + background: #131722 !important; +} + +#dark .el-popover{ + background-color: #131722; +} +#dark .product{ + box-shadow: 0px 0px 10px 0px #757070; +} + + +#dark #dowebok{ + background-color: #181A20 !important; + color: #fff; +} +#dark .right_List{ + background-color: #1E2329; +} + +#dark .right_List_botton a{ + color: #EAECEF; +} + +#dark .right_List_botton a:hover{ + color: #616d75; +} + +#dark .illustration_area .left{ + color: #EAECEF; +} + +#dark .trade_box{ + color: #797979; +} +#dark .col1{ + color: #fff; +} +#dark .v-box__container{ + color: #fff; + background-color: #181A20; +} \ No newline at end of file diff --git a/src/assets/scss/theme/_responsive.scss b/src/assets/scss/theme/_responsive.scss new file mode 100644 index 0000000..04a693b --- /dev/null +++ b/src/assets/scss/theme/_responsive.scss @@ -0,0 +1,119 @@ +@media only screen and (max-width: 1434px) { + .market-pairs tbody { + height: 760px; + } + + .no-fluid .market-pairs tbody { + height: 815px; + } + + .settings-profile .custom-file { + width: 25%; + } +} + +@media only screen and (max-width: 1300px) { + .market-pairs tbody { + height: 740px; + } + + .no-fluid .market-pairs tbody { + height: 755px; + } +} + +@media only screen and (max-width: 1200px) { + .markets-capital-item { + height: 289px; + } +} + +@media only screen and (max-width: 991px) { + .settings-nav { + margin-bottom: 15px; + } + + .settings-profile .custom-file { + width: 35%; + } +} + +@media only screen and (max-width: 918px) { + .market-history tbody { + height: 274px; + } +} + +@media only screen and (max-width: 792px) { + .market-pairs tbody { + height: 699px; + } +} + +@media only screen and (max-width: 768px) { + .settings-profile .custom-file { + width: 45%; + } + + header button.navbar-toggler i { + font-size: 30px; + color: #4a4a4a; + } + + header button.navbar-toggler:focus { + outline: none; + } + + .navbar-collapse .dropdown.menu-avatar-icon { + margin-top: 10px; + } + + .no-fluid .market-pairs { + margin-bottom: 15px; + } + + .no-fluid .order-book { + margin-top: 15px; + } + + .circle-pulse { + left: 27px; + right: inherit; + } + + .dropdown-menu::before { + right: inherit; + left: 5%; + } + + .wallet .nav { + margin-bottom: 30px; + } + + .wallet-address img { + margin-top: 40px; + } + + #dark header button.navbar-toggler i { + color: #c5cbce; + } + + .market-order-item { + padding: 5px 5px; + overflow: hidden; + } + + .market-order-item li { + font-size: 12px; + } + + .markets-capital-item { + height: 304px; + } +} + +@media only screen and (max-width: 576px) { + .markets-capital-item { + height: 91.4%; + } +} \ No newline at end of file diff --git a/src/assets/scss/theme/_theme.scss b/src/assets/scss/theme/_theme.scss new file mode 100644 index 0000000..e495a0c --- /dev/null +++ b/src/assets/scss/theme/_theme.scss @@ -0,0 +1,2 @@ +@import './dark'; +@import './responsive'; \ No newline at end of file diff --git a/src/components/CommonFooter.vue b/src/components/CommonFooter.vue new file mode 100644 index 0000000..1a1bd50 --- /dev/null +++ b/src/components/CommonFooter.vue @@ -0,0 +1,734 @@ + + + \ No newline at end of file diff --git a/src/components/CommonHeader.vue b/src/components/CommonHeader.vue new file mode 100644 index 0000000..a7010d9 --- /dev/null +++ b/src/components/CommonHeader.vue @@ -0,0 +1,630 @@ + + + + + diff --git a/src/components/GetCode.vue b/src/components/GetCode.vue new file mode 100644 index 0000000..8e9eb62 --- /dev/null +++ b/src/components/GetCode.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/src/components/KLine.vue b/src/components/KLine.vue new file mode 100644 index 0000000..679cec6 --- /dev/null +++ b/src/components/KLine.vue @@ -0,0 +1,406 @@ + + + + + diff --git a/src/components/NewMsg.vue b/src/components/NewMsg.vue new file mode 100644 index 0000000..c455301 --- /dev/null +++ b/src/components/NewMsg.vue @@ -0,0 +1,147 @@ + + + \ No newline at end of file diff --git a/src/components/NoRecord.vue b/src/components/NoRecord.vue new file mode 100644 index 0000000..ee699ca --- /dev/null +++ b/src/components/NoRecord.vue @@ -0,0 +1,26 @@ + + + + + \ No newline at end of file diff --git a/src/components/SecondaryNav.vue b/src/components/SecondaryNav.vue new file mode 100644 index 0000000..dfe7e1f --- /dev/null +++ b/src/components/SecondaryNav.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/src/components/ThemeChange.vue b/src/components/ThemeChange.vue new file mode 100644 index 0000000..e13de15 --- /dev/null +++ b/src/components/ThemeChange.vue @@ -0,0 +1,41 @@ + + diff --git a/src/components/TimeCount.vue b/src/components/TimeCount.vue new file mode 100644 index 0000000..af1fdfc --- /dev/null +++ b/src/components/TimeCount.vue @@ -0,0 +1,70 @@ + + + + + diff --git a/src/components/UploadImg.vue b/src/components/UploadImg.vue new file mode 100644 index 0000000..006e315 --- /dev/null +++ b/src/components/UploadImg.vue @@ -0,0 +1,134 @@ + + + diff --git a/src/components/VBox.vue b/src/components/VBox.vue new file mode 100644 index 0000000..e7fb0ca --- /dev/null +++ b/src/components/VBox.vue @@ -0,0 +1,263 @@ + + + + + diff --git a/src/components/VerifyCode.vue b/src/components/VerifyCode.vue new file mode 100644 index 0000000..d98e4f4 --- /dev/null +++ b/src/components/VerifyCode.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/src/components/bus.js b/src/components/bus.js new file mode 100644 index 0000000..b433c90 --- /dev/null +++ b/src/components/bus.js @@ -0,0 +1,6 @@ +import Vue from 'vue'; + +// 使用 Event Bus +const bus = new Vue(); + +export default bus; \ No newline at end of file diff --git a/src/components/index.js b/src/components/index.js new file mode 100644 index 0000000..5d2a75f --- /dev/null +++ b/src/components/index.js @@ -0,0 +1,40 @@ +import Vue from 'vue' + +// 加入公共组件 +const requireComponent = require.context( + // 其组件目录的相对路径 + './', + // 是否查询其子目录 + false, + // 匹配基础组件文件名的正则表达式 + /[A-Z]\w+\.(vue|js)$/ +) + +// console.log(requireComponent); + +requireComponent.keys().forEach(fileName => { + + // 获取组件配置 - vm实例 + const componentConfig = requireComponent(fileName) + // console.log(fileName); // ./GetCode.vue + + // 获取组件的PascalCase命名 + const componentName = _.upperFirst( + _.camelCase( + // 获取和目录深度无关的文件名 + fileName + .split('/') + .pop() + .replace(/\.\w+$/, '') + ) + ) + // console.log(componentName); // VButton + // 全局注册组件 + Vue.component( + componentName, + // 如果这个组件选项是通过 `export default` 导出的, + // 那么就会优先使用 `.default`, + // 否则回退到使用模块的根。 + componentConfig.default || componentConfig + ) +}) \ No newline at end of file diff --git a/src/favicon.ico b/src/favicon.ico new file mode 100644 index 0000000..11c4bbe Binary files /dev/null and b/src/favicon.ico differ diff --git a/src/i18n/cn.json b/src/i18n/cn.json new file mode 100644 index 0000000..21e9be3 --- /dev/null +++ b/src/i18n/cn.json @@ -0,0 +1,1059 @@ +{ + "nav": { + "assets": "资产", + "contract": "合约账户", + "transfer": "资金划转", + "excOrders": "现货委托", + "contractOrders": "合约委托", + "fundHistory": "充提记录", + "security": "账号安全", + "invite": "邀请好友", + "login":"请先登录进行操作", + "tips":"系统提示", + "set":"请先设置一个合适的价格", + "a1":"价格不能为空或零", + "a2":"数量不能为空或零", + "a3":"数量不能少于", + "a4":"买入的市价单总量不能为空或零", + "a5":"买入的市价单总量不能小于", + "a6":"卖出的市价单数量不能为空或零", + "a7":"卖出的市价单数量不能少于", + "a8":"止盈止损单触发价不能为空或零", + "a9":"止盈止损-限价单限价不能为空或零", + "b1":"止盈止损-限价单数量不能为空或零", + "b2":"止盈止损-市价单触发价不能为空或零", + "b3":"止盈止损-市价买入的总量不能为空或零", + "b5":"止盈止损-市价买入的总量不能少于", + "b6":"止盈止损-市价卖出的数量不能为空或零", + "b7":"止盈止损-市价卖出的数量不能小于", + "b8":"页面断开连接,请刷新或稍后再试!", + "c1": "购买{amount}枚{name}代币可获{rate}%奖励", + "c2": "申购活动", + "c3":"发行总量", + "c4":"流通总量", + "c5":"发行价格", + "c6":"发行时间", + "c7":"白皮书地址", + "c8":"官网地址", + "c9":"简介" + }, + "common": { + "a3":"申购记录", + "option": "期权交易", + "exchange": "币币交易", + "markets": "行情", + "blogs": "博客", + "news": "行业资讯", + "helps": "帮助中心", + "service": "服务", + "contactUs": "联系我们", + "sign_in": "登录", + "sign_up": "注册", + "noRecord": "暂无记录", + "getCode": "获取验证码", + "help1": "外汇合约指南", + "help2": "合同规范", + "optional": "自选", + "price": "价格", + "upAndDown": "涨跌幅", + "heigh": "最高价", + "low": "最低价", + "vol": "成交量", + "pair": "交易对", + "buy": "买", + "sell": "卖", + "buy-in": "买入", + "sell-out": "卖出", + "open-orders": "当前委托", + "condition-orders": "条件委托", + "history-orders": "委托记录", + "limit": "限价", + "market": "市价", + "stop-limit": "止盈止损-限价", + "stop-market": "止盈止损-市价", + "limit-type": "限价交易", + "market-type": "市价交易", + "startTime": "开始时间", + "to": "至", + "confirmBtn": "确认", + "cancelBtn": "取消", + "cancel": "撤销", + "endTime": "结束时间", + "export": "导出", + "filter": "筛选器", + "all": "不限", + "search": "检索", + "reset": "重置", + "hideAll": "隐藏所有已取消委托", + "canceled": "已取消", + "waiting": "待撮合", + "triggered": "已触发", + "processing": "撮合中", + "completed": "已完成", + "available_phone": "请输入正确的手机号码", + "available_email": "请输入正确的邮箱", + "codeSent": "验证码已发送", + "captcha": "验证码错误", + "created": "时间", + "order-price": "委托价格", + "order-amount": "委托数量", + "order-total": "订单总额", + "avg-price": "平均价格", + "direction": "方向", + "order-type": "类型", + "executed-amount": "已撮合", + "executed-total": "成交额", + "outstanding": "待撮合", + "status": "状态", + "details": "详情", + "action": "操作", + "id": "订单编号", + "filled-price": "成交价", + "filled-amount": "成交数量", + "filled-total": "成交金额", + "fee": "手续费", + "enterValid": "请输入有效的手机号码或电子邮件!", + "enterValidEmail": "请输入正确的邮箱地址", + "enterValidPhone": "请输入有效的手机号码!", + "enterAccount": "请输入账户", + "enterEmail": "请输入正确的邮箱地址", + "enterPhone": "请输入手机号码", + "enterPwd": "请输入密码", + "passwordRegular": "密码必须由8至15位数字与字母组成(必须同时包含数字与字母,也可使用符号)。", + "newPassword": "请输入新密码", + "confirmNewPassword": "请输入确认的新密码", + "enterGoogleCode": "请输入谷歌验证码", + "enterEmailCode": "请输入邮箱验证码", + "enterSMSCode": "请输入短信验证码", + "enterVerCode": "请输入验证码", + "exportFile": "请点击确认以导出文件。", + "submit": "提交", + "newzone": "打新专区", + "college": "学院", + "goTo": "前往", + "logOut": "退出登录", + "homepage": "首页", + "application": "上币申请", + "purchase": "申购", + "accountInformation": "账户信息", + "myWallet": "我的钱包", + "commissionOrder": "委托订单", + "securitySetting": "安全设置", + "wallet": "钱包", + "allAssets": "所有资产", + "contractaccount": "合约账户", + "transferFunds": "资金划转", + "rechargeWithdraw": "充值提币", + "order": "订单", + "spotConsignment": "现货委托", + "optionOrders": "期权订单", + "perpetualContract": "永续合约", + "foreignContract": "外汇合约", + "notCertified": "未认证", + "notData": "暂无数据", + "assets": "资产", + "myCommission": "我的返佣", + "addressManagement": "地址管理", + "auth": "实名认证", + "invitationReward": "邀请奖励", + "visitHistory": "访问记录", + "noviceTutorial": "新手教程", + "tradingStrategy": "交易策略", + "industryResearch": "行业研究", + "blockchainDictionary": "区块链词典", + "mediaCoverage": "媒体报道", + "selectFile": "选择文件", + "upload": "上传", + "delete": "删除", + "tooBig": "文件尺寸过大,不得超过", + "errorType": "文件类型错误", + "resend": "重新发送", + "sms": "短信", + "email": "邮箱", + "sendSuccess": "验证码发送成功", + "retransmission": "重发", + "start-trade": "即刻开启数字货币之旅", + "login": "登录", + "register": "注册", + "trading": "去交易", + "dark": "黑", + "light": "白", + "notMore": "没有更多了", + "allRead": "全部已读", + "newMessage": "條新的消息", + "footerTips1": "市场有风险 投资需谨慎", + "footerTips2": "法律声明:该网站由{name}公司运营", + "footerTips3": "风险提示:数字资产交易有可能导致您的本金损失,请确保您充分理解其中的风险", + "footerTips4": "受限地区:无法为特定国家/地区的居民提供服务,例如:以色列和伊斯兰共和国" + }, + "exchange": { + "search": "搜索", + "pair": "交易对", + "last-price": "最新价", + "change": "涨跌幅", + "order-book": "买卖盘", + "price": "价格", + "amount": "数量", + "total": "总值", + "recent-trades": "最新成交", + "time": "时间", + "order-total": "委托总值", + "balance": "可用余额", + "enter-price": "请输入价格", + "enter-amount": "请输入数量", + "enter-total": "请输入总价", + "at-best-price": "在最佳市场价格成交", + "trigger-price": "请输入触发价格", + "min": "分钟", + "hour": "小时", + "day": "天", + "week": "周", + "month": "月" + }, + "login": { + "resend": "重新发送", + "sms": "短信", + "sendOK": "验证码发送成功!", + "enterPhoneEmail": "请输入电子邮箱", + "effectivePhoneEmail": "请输入有效的手机或者邮箱", + "enterPasswrod": "请输入{num}位长度的密码", + "passwordLength": "密码长度{num}位包含字母数字的密码", + "safe": "安全性验证", + "googleVer": "请输入您手机App上的{num}位谷歌验证码", + "phoneCode": "请输入发送至您手机号码的{num}位验证码", + "emailCode": "请输入发送至您邮箱的{num}位验证码", + "google-code": "谷歌验证码", + "email-code": "邮箱验证码", + "sms-code": "手机验证码", + "new-password": "新密码", + "confirm-password": "确认密码", + "forgetPassword": "忘记密码", + "rememberMe": "记住我", + "noAccountYet": "还没有账号", + "goRegister": "注册", + "goRegister1": "注册", + "safety": "安全性验证", + "regAccount": "注册账号", + "email": "邮箱", + "phone": "手机", + "pleaseEmail": "请输入邮箱地址", + "invalidEmail": "无效的邮箱地址", + "enterMobile": "请输入手机号码", + "invalidPhone": "无效的手机号码", + "enterLengthPassword": "请输入{num1}到{num2}位长度的密码", + "hasNumEn": "密码需要{num}位字母和数字组合", + "iSee": "我同意", + "terms": "条款及细则", + "reg": "注册", + "enterEmailCode": "请输入发送至您邮箱 ({email})的{num}位验证码", + "accountActivated": "以激活账户", + "backOld": "回到上一步", + "verCode": "验证码", + "notEmail": "如果您未收到邮箱,请尝试以下检查操作", + "confirmEmail": "请确保您所输入的邮箱地址是正确的", + "confing": "请检查您邮箱的垃圾邮件文件夹", + "checkTrashCan": "请确保您的邮箱连接至稳定的互联网", + "enterPhone1": "请输入发送至您手机号", + "enterPhone2": "的{num}位验证码", + "smsNotReceived": "如果您未收到短信,请尝试以下检查操作", + "phoneCorrect": "请确保您所输入的手机号和地区号是正确的", + "securePhone": "请确保您的手机信号稳定", + "hasAccount": "已经有一个帐号", + "toLogin": "前往登录", + "securityVerification": "安全性验证", + "disagree": "您还没有同意条款", + "registrationSuccess": "注册成功,正在跳转登录页面", + "referrer": "推荐人", + "optional": "选填", + "password": "密码", + "login": "登录", + "country": "区号", + "enter-account": "请输入账号", + "sign-in": "登录", + "find-password": "找回密码", + "submit": "提交", + "confirmpassword": "两次密码不一致" + }, + "application": { + "form": "项目上币申请表", + "sendUser": "项目发起方", + "sendUserEn": "币种英文名", + "sendUserCn": "币种中文名", + "contactPosition": "联系人及职位", + "phone": "联系人电话", + "tokenPrice": "市价", + "email": "联系人邮箱", + "address": "项目注册地", + "mechanism": "项目投资机构", + "personal": "个人", + "currencyCode": "币种代码", + "symbol": "符号", + "currencyIdentification": "币种标识", + "format": "支持{name}格式,文件小于{num}", + "fundraisingDate": "募资日期", + "officialWebsite": "官方网站", + "whitePaperLinks": "白皮书链接", + "noLink": "若无链接,请文末上传附件", + "total_issue": "币种总发行量", + "currencyCirculation": "币种流通量", + "currencyAllocationRatio": "币种分配比例", + "numberOfCurrencyHolders": "持币人数", + "tradingPlatform": "已上线交易平台", + "privatePlacement": "私募", + "publicOfferingPrice": "公募价格", + "company": "请附上货币单位", + "coinType": "币种区块网络类型", + "currencyIssueDate": "币种发行日期", + "blockBrowser": "区块浏览器", + "officialAddress": "官方钱包地址", + "contractAddress": "合约地址", + "link": "链接", + "budget": "上币费预算", + "unit": "为单位", + "ofTokens": "上币后市场活动项目代币数量", + "chineseCurrency": "币种中文介绍", + "enCurrency": "币种英文介绍 ", + "remarks": "备注", + "uploadWhitePaper": "上传白皮书", + "pleaseUpload": "请上传白皮书", + "recommendationCode": "推荐人姓名机构及推荐码", + "ifSo": "若有", + "affirmsThat": "申明: 我在此确认上述所有信息均真实,完整和准确。 我将在经济上和法律上承担提供虚假信息的责任", + "iKnow": "我知道了", + "reSubmit": "重新提交", + "pleaseConfirm": "请确认以上均为真实信息", + "pleaseEnter": "请输入", + "upLoadSuccess": "上传成功" + }, + "wallet": { + "inside": "内部资金划转", + "from": "从", + "history": "查看历史", + "balance": "余额", + "transferQuantity": "划转数量", + "capitalAccount": "资金账户", + "contract": "合约", + "financial": "理财账户", + "leverage": "杠杆账户", + "successful": "划转成功", + "confirm": "确定划转", + "pleaseSelect": "请选择币种", + "to": "至", + "assets": "资产", + "strokes": "请输入划转数量", + "addressManagement1": "地址管理", + "addAddress": "添加地址", + "filter": "筛选器", + "search": "搜索", + "selectActiveArea": "请选择活动区域", + "areaOne": "区域一", + "areaTwo": "区域二", + "addressAssets": "地址列表", + "addressNum": "地址数量", + "fee1": "手续费", + "creationTime": "创建时间", + "detailAddress": "详细地址", + "remarks1": "备注信息", + "operating": "操作", + "complete": "完成", + "copy": "复制", + "editAddress": "编辑地址", + "deleteAddress": "删除地址", + "next": "上一页", + "pre": "下一页", + "add": "添加", + "edit": "编辑", + "address": "地址", + "selectAssets": "请选择资产", + "drawAddress": "提币地址", + "addressRemarks": "该地址备注", + "remarksDelete": "确定删除此地址", + "optionSuccess": "操作成功", + "allAssets": "所有资产价值", + "showNum": "显示数字", + "contractAccount": "合约账户", + "marginAccount": "杠杆账户", + "financialAccount": "理财账户", + "spotAccount": "现货账户", + "hide": "隐藏", + "balanceAssets": "余额资产", + "searchCurrency": "搜索币种", + "addressManagement": "提币地址管理", + "totalAssets": "总资产", + "availableBalance": "可用余额", + "fee": "冻结余额", + "valuation": "估值", + "recharge": "充值", + "withdrawal": "提币", + "transaction": "交易", + "rechargeAddress": "充值地址", + "rechargeQuantity": "充值数量", + "enterQuantity": "请输入数量", + "rechargeInstructions": "充值说明", + "automaticallyCredited": "此地址是您最新的充值地址,当系统收到充值时,将进行自动入账", + "tran": "转账需要由整个区块链网络进行确认,到达{num}个网络确认时,您的{name}将被自动存入账户中", + "only": "请只发送{name}到此地址,发送其他数字货币到此地址会造成永久性的损失", + "low": "最低", + "addressList": "地址列表", + "enterDrawAddress": "请输入提币地址", + "invalidWallet": "不是有效的钱包地址,请重新输入", + "withdrawalsNumber": "提币数量", + "enterDrawNum": "请输入提币数量", + "withdrawalInstructions": "提币说明", + "enterAddress": "请仔细检查并输入正确的提币钱包地址", + "notSend": "发送不对应的数字货币到钱包地址会造成永久性的损失", + "deductionFee": "提币手续费将从提币数量中扣除", + "submitSuccess": "提交成功,正在审核", + "operationComplete": "提币操作完成,等待审核", + "rechargeRecord": "充值记录", + "withdrawalRecord": "提币记录", + "assetsName": "请输入资产名", + "selectStatus": "请选择状态", + "startTime": "开始日期", + "entTIme": "结束日期", + "date": "日期", + "hash": "哈希", + "num": "数量", + "progress": "进度", + "status": "状态", + "error": "失败", + "success": "成功", + "underReview": "审核中", + "handlingFee1": "手续费", + "processing": "审核中", + "transfer": "资金划转", + "transferDescription": "资金划转说明", + "handlingFee": "请注意内部资金划转是自动完成的,并且免手续费", + "onlyForeignExchange": "只有{name}可被划转至您的外汇合约账户", + "onlySustainable": "只有{name}可被划转至您的永续合约账户", + "inCase1": "如果您想要交易外汇合约,您必须划转{name}至外汇合约账户中,当做保证金", + "inCase2": "如果您想要交易永续合约,您必须划转{name}至永续合约账户中,当做保证金", + "transferRecord": "划转记录", + "allTransfer": "所有资产划转记录", + "direction": "方向", + "all": "全部", + "dateTime": "时间", + "UserWallet": "资产账户", + "ContractAccount": "合约账户", + "LeverageAccount": "杠杆账户", + "FinancialAccount": "理财账户", + "contractFlow": "合约流水", + "info": "详情", + "money": "金额" + }, + "contact": { + "contact": "联系我们", + "help": "需要任何帮助请联系我们", + "fullName": "全名", + "enterFullName": "请输入全名", + "email": "邮箱", + "enterEmail": "请输入邮箱地址", + "consultingService": "咨询项目", + "pleseSelect": "请选择", + "info": "信息", + "enterInfo": "请输入信息", + "contactInformation": "联系信息", + "routineConsultation": "常规咨询", + "customerService": "客户服务", + "mediaCooperation": "媒体合作", + "submit": "提交" + }, + "college": { + "college": "学院", + "article": "博客", + "tutorialDetails": "教程详情", + "howToBuyBitcoin": "如何购买比特币", + "recommendedCourse": "推荐教程", + "buy": "1分钟购买一笔比特币", + "register": "注册", + "visit": "访问{name}网站,并注册属于您的{name}账号", + "realName": "实名认证", + "upload": "上传有效证件,进行个人实名认证", + "quickBuy": "一键购买并支付款项", + "inIndex": "在首页/买币页面一键买币,支付完成后等待放币", + "tradeNow": "马上去交易", + "currencyTransaction": "秒懂币币交易", + "contractEntryTransaction": "合约入门交易", + "how": "如何进行期权交易", + "TradingStrategy": "交易策略", + "seeMore": "查看更多", + "industryResearch": "行业研究", + "oneClick": "一键智能交易", + "inAssets": "在资产/充币页面一键充币,完成后可交易", + "dictionary": "区块链词典", + "media": "媒体报道" + }, + "home": { + "newEra": "全球领先数字金融衍生品交易所", + "startTrading": "开始交易", + "walkingLantern": "走马灯", + "marketCenter": "交易市场", + "optional": "自选", + "latestPrice": "价格", + "upAndDown": "涨跌幅", + "heigh": "最高价", + "low": "最低价", + "vol": "交易量", + "coinType": "交易对", + "more": "查看更多>>", + "multiPlatform": "多平台下载", + "atTime": "随时随地", + "multiTerminal": "多平台终端交易", + "cover": "覆盖", + "multiTerminal1": "多个平台", + "support": "支持全业务功能", + "down": "下载", + "news": "市场动态", + "detail": "查看详情", + "quickly": "快速上手", + "major": "我们为投资者提供专业", + "safe": "安全的交易服务", + "login": "登录", + "reg": "注册", + "trading": "去交易", + "add": "添加成功", + "cancel": "取消成功", + "features": "核心优势", + "partners": "投资机构 & 合作伙伴", + "perpetual_title": "外汇永续合约", + "perpetual_cont": "作为全球首创最高100倍杠杆的由稳定币结算的外汇永续合约,AMATAK外汇永续合约是快速进行外汇交易的高性价比选择。", + "stablecoin_title": "全球首家稳定币交易中心", + "stablecoin_cont": "AMATAK构建了一个强大的稳定币生态环境,一个由稳定币交易、支付和汇款组成的完整架构,成为全球高质量稳定币俱乐部的组成部分!", + "security_title": "无可挑剔的安全", + "security_cont": "AMATAK采用最前沿的 Ledger Vault 来保护数字货币的端点安全,Ledger Vault平台为第三方盗窃、内线勾结和主种子盗窃提供高达1.5亿美元的保险。存储在AMATAK上98%以上的数字货币都是存放在多重签名冷钱包中,并且采用最高标准的市场风险控制流程来保障所有用户的资金安全。", + "service_title": "24/7 多语种实时客服", + "service_cont": "AMATAK的客服24/7随时待命,竭尽所能为用户提供帮助,通过实时聊天或发送邮件至support@AMATAK.com联系客服。", + "analy_title": "高级分析工具", + "analy_cont": "交易者可在交易页面使用不同的图表工具和基于稳定数据的指标辅助交易。", + "liquidity_title": "优秀的流动性", + "liquidity_cont": "24/7随时与AMATAK交易平台的高流动性相连。", + "technology_title": "自主开发的技术", + "technology_cont": "AMATAK交易平台基于久经考验的技术,由业内顶级专家打造,最大程度优化平台功能。", + "download": "下载AMATAK移动端", + "easy": "随时随地,开启掌上交易", + "skan": "立即扫码下载", + "core_advantages": "我的核心优势是数据" + }, + "option": { + "waitFor": "等待交割", + "history": "历史交割", + "orderNum": "订单号", + "option": "期权", + "buyTime": "买入时间", + "buyAmount": "买入数量", + "buyType": "购买类型", + "yield": "收益率", + "state": "状态", + "deliverytime": "交割时间", + "countDown": "交割倒计时", + "buyingUp": "买涨", + "buyDwon": "买跌", + "buyEven": "买平", + "result": "交割结果", + "settlementQuantity": "结算数量", + "up": "涨", + "down": "跌", + "flat": "平", + "buyOption": "购买期权", + "deliveryRecord": "交割记录", + "current": "当前", + "next": "下期", + "enterNum": "请输入数量", + "balance": "余额", + "expectedRevenue": "预计收益", + "seeMore": "看多", + "beBearish": "看空", + "time": "时间", + "zf": "涨幅", + "bullish": "看涨", + "lookAtPing": "看平", + "bearish": "看跌", + "amount": "数量", + "coinType": "币种", + "odds": "赔率", + "buySuccess": "买入成功" + }, + "order": { + "noData": "暂无成交记录", + "ifCancel": "是否撤销当前订单", + "cancelSuccess": "撤销成功", + "marketPrice": "市价交易", + "fixedPrice": "限价交易", + "sell": "卖出", + "buy": "买入", + "exchangeRecord": "交易记录", + "see": "查看", + "opt": "操作", + "status": "状态", + "time": "时间", + "tradingPair": "交易对", + "direction": "方向", + "type": "类型", + "averagePrice": "平均价格", + "price": "价格", + "matched": "已撮合", + "totalAmountEntrusted": "委托总量", + "total": "总计", + "toMatch": "未撮合", + "operation": "操作", + "reset": "重置", + "search": "搜索", + "to": "至", + "startTime": "开始日期", + "endTime": "结束日期", + "select": "请选择", + "entrustType": "委托类型", + "spotConsignment": "现货委托", + "surrentCommission": "当前委托", + "commissionRecord": "委托记录", + "optionTransaction": "期权交易", + "orderNum": "订单号", + "timeSharing": "分时", + "yield": "收益率", + "buyNum": "购买数量", + "upAndDown": "涨跌幅", + "settlementQuantity": "结算数量", + "transactionPrice": "成交价格", + "tradingVolume": "交易量", + "aTurnover": "交易额", + "serviceCharge": "手续费", + "cancel": "撤销", + "buyTime": "购买时间", + "buyUp": "买涨", + "buyDown": "买跌", + "buyLevel": "买平" + }, + "profile": { + "realName": "实名认证", + "primaryCertification": "初级认证", + "advancedCertification": "高级认证申请提交", + "toExamine": "审核", + "fullName": "姓名", + "legal": "法定", + "pleaseEnterName": "请输入姓名", + "dateOfBirth": "出生日期", + "selectDate": "选择日期", + "documentType": "证件类型", + "pelaseSelect": "请选择", + "certificateNumber": "证件号", + "endterIDNumber": "请输入证件号", + "addressInfo": "地址信息", + "residentialAddress": "居住地址", + "residentialAddress1": "请输入居住地址", + "ciy": "城市", + "incity": "请输入所在城市", + "postalCode": "邮政编码", + "thePostcode": "请输入邮政编码", + "additionalInformation": "额外信息", + "optional": "选填", + "contactInformation": "联系信息", + "phoneNumber": "电话号码", + "enterPhoneNumber": "请输入手机号", + "clickUpload1": "点击上传文件并提交身份验证时,即表示您已阅读并同意我们的 服务条款 及 隐私协议。", + "pelaseDownload": "请从以下文件中选择一份未过期的", + "passport": "护照", + "drivingLicense": "驾照", + "iD": "证件", + "upload": "进行上传", + "explain": "说明", + "unexpired": "未过期证件文件可以是图片或扫描件", + "pleaseConfirm": "请确证件照上的所有细节是清晰的,且未被遮盖", + "fileFormat": "文件格式", + "maximumFileSize": "最大文件大小", + "positive": "证件正面", + "theOtherSide": "证件反面", + "hold": "手持证件", + "dragHere": "拖到此处,或", + "clickUpload": "点击上传", + "uploadPhoto": "请上传证件正面照", + "reversePhoto": "请上传证件反面照", + "uploadIDCard": "请上传手持证件照", + "nextStep": "下一步", + "inSubmit": "您的验证申请已提交!我们将在获得结果的第一时间通知您", + "gotIt": "知道了", + "congratulations": "恭喜您", + "back": "返回", + "resetApply": "是否重新申请。", + "recertification": "重新认证", + "userInfo": "账户信息", + "verState": "验证状态", + "max": "最大", + "limitH": "小时提币限额", + "verLeave": "验证级别", + "exceed": "超过", + "contactUs": "联系我们", + "inviteFriends": "邀请好友", + "dividends": "邀请好友使用{name},获得好友未来交易手续费的{num}作为分红奖励。", + "sendInvitation": "发送邀请", + "resetPassword": "重置密码", + "forLoginAccount": "用于登录账户", + "clickReset": "点击重置", + "registrationDecord": "登录记录", + "recording": "用于显示详细历史登录记录", + "recordingDEtail": "详细记录", + "invitationReward": "邀请奖励", + "inviteUse": "邀请好友使用", + "futureCommission": "获得好友未来交易手续费的{num}作为分红奖励", + "joinThePlan": "加入{name}用户邀请分红计划", + "checkMyDividend": "查看我的分红", + "step1": "第一步", + "shareLink": "分享链接", + "step2": "第二步", + "shareFriend": "邀请好友", + "step3": "第三步", + "instantDividend": "立享分红", + "invitationInformation": "邀请信息", + "invitationLink": "邀请链接", + "invitationCode": "邀请码", + "registeredUser": "已注册用户", + "accountNumber": "账号", + "registrationTime": "注册时间", + "activityTerms": "活动条款", + "handlingFeeDividend": "手续费分红", + "equalInvitee": "等于被邀人", + "fee": "的交易手续费", + "afterThat": "将在被邀人交易后", + "follow": "分钟内转入邀请人账户。", + "limit": "活动遵循以下开始和结束时间,仅限于活动开始时间后且活动结束时间前的有效账户可获得", + "activityStartTime": "活动开始时间", + "Y": "年", + "M": "月", + "D": "日", + "endTime": "活动结束时间", + "proceed": "持续进行", + "atAnyTime": "保留随时修改,暂停,或终止{name}用户邀请计划的权利,且恕不另行通知", + "reservedRights": "保留不为重复帐户或虚假帐户发放手续费分红的权利", + "canDecide": "可全权决定接受或拒绝特定被引入或被邀请至{name}平台{link}的用户", + "bill": "访问记录", + "date": "日期", + "address": "地点", + "equipment": "设备", + "preliminary": "初步认证成功", + "clickToVerify": "点击验证" + }, + "setting": { + "smsVer": "短信验证", + "enterCode": "请输入验证码", + "emailVer": "邮箱验证", + "enterEmailVer": "请输入邮箱验证码", + "ver": "验证", + "enterNameCode": "请输入{name}验证码", + "openSuccess": "开启成功", + "closeSuccess": "关闭成功", + "email": "邮箱", + "enterEmail": "请输入邮箱", + "emailVerCode": "邮箱验证码", + "enterSmsCode": "请输入短信验证码", + "bind": "绑定", + "unbind": "解绑", + "bindSuccess": "绑定成功", + "unbindSuccess": "解绑成功", + "scanQrCode": "请扫描二维码", + "howToOpen": "了解如何开启{name}二次验证", + "read": "点击此处阅读安装信息", + "verKey": "验证密钥", + "safeSetting": "安全设置", + "loginPassword": "登录密码", + "resLoginPassword": "重置登录密码", + "transactionPassword": "交易密码", + "usedFor": "用于提交合约和现货委托", + "notOpen": "未开启", + "modifyPassword": "修改密码", + "setPassword": "设置密码", + "verCode": "验证码", + "forLogin": "用于登录、提币和安全设置变更", + "alLast": "至少开启一种验证方式", + "close": "关闭", + "open": "开启", + "phone": "手机号码", + "area": "请输入区号", + "enterPhone": "请输入手机号", + "newPassword": "新密码", + "passwordIs": "交易密码为{num}位数字", + "enterNewPassword": "请输入新密码", + "confirmPassword": "确认密码", + "pleaseConfirmPassword": "请确认密码", + "operationSuccess": "操作成功", + "combination": "密码需要字母和数字组合", + "changeSuccess": "修改成功" + }, + "purchase": { + "sendPrice": "发行价", + "subscriptionCurrency": "申购币种", + "expected": "预计上线时间", + "startTime": "开始申购时间", + "applyForPurchase": "结束申购时间", + "enterNum": "请输入数量", + "all": "所有", + "subscribeNow": "立即申购", + "subscriptionCycle": "申购周期", + "projectWarmUp": "项目预热", + "startSubscription": "开始申购", + "endOfSubscription": "结束申购", + "announceResults": "公布结果", + "projectCetails": "项目详情", + "useOrNot": "是否使用", + "subscribe": "申购", + "prompt": "提示", + "subscribeSuccess": "申购成功" + }, + "contract": { + "a0": "合约账户", + "a1": "资金划转", + "a2": "账户权益", + "a3": "可用", + "a4": "持仓保证金", + "a5": "委托冻结", + "a6": "未实现盈亏", + "a7": "风险率", + "a8": "预估强平价", + "a9": "合约", + "b0": "杠杆", + "b1": "时间", + "b2": "交易类型", + "b3": "已成交", + "b4": "委托总量", + "b5": "成交均价", + "b6": "委托价格", + "b7": "保证金", + "b8": "手续费", + "b9": "状态", + "c0": "操作", + "c1": "撤单", + "c2": "撤销", + "c3": "是否撤销当前订单", + "c4": "取消", + "c5": "确定", + "c6": "已撤销", + "c7": "未成交", + "c8": "部分成交", + "c9": "全部成交", + "d0": "买入开多", + "d1": "买入平空", + "d2": "卖出开空", + "d3": "卖出平多", + "d4": "撤销成功", + "d5": "开仓", + "d6": "平仓", + "d7": "触发价", + "d8": "价格", + "d9": "市价", + "e0": "限价", + "e1": "数量", + "e2": "张", + "e3": "所需保证金", + "e4": "多仓持仓", + "e5": "空仓持仓", + "e6": "看涨", + "e7": "可开", + "e8": "看跌", + "e9": "可平", + "f0": "的价格", + "f1": "开多", + "f2": "开空", + "f3": "是否以", + "f4": "倍杠杆", + "f5": "委托成功", + "f6": "平仓成功", + "f7": "盘口", + "f8": "实时成交", + "f9": "全部", + "g0": "买", + "g1": "卖", + "g2": "累计", + "g3": "最新价", + "g4": "详情", + "g5": "历史记录", + "g6": "成交时间", + "g7": "持仓", + "g8": "可平量", + "g9": "开仓平均价", + "h0": "收益率", + "h1": "市价平仓", + "h2": "是否以市价全平", + "h3": "全平", + "h4": "成功", + "h5": "交易对", + "h6": "涨跌幅", + "h7": "最高价", + "h8": "最低价", + "h9": "成交量", + "i0": "持有仓位", + "i1": "当前委托", + "i2": "历史委托", + "i3": "方向", + "i4": "多", + "i5": "空", + "i6": "仅显示当前", + "i7": "止盈", + "i8": "止损", + "i9": "止盈止损", + "j0": "盈亏", + "j1": "最新成交价", + "j2": "开仓均价", + "j3": "止盈触发价格", + "j4": "止损触发价格", + "j5": "市价至", + "j6": "时将触发止盈委托,成交后预计盈亏", + "j7": "时将触发止损委托,成交后预计盈亏", + "j8": "开通永续合约", + "j9": "开通成功", + "k0": "设置成功", + "k1": "结算盈亏", + "k2": "一键全平", + "k3": "一键反向", + "k4": "是否一键全平", + "k5": "是否一键反向", + "k6": "全平成功", + "k7": "反向成功", + "k8": "请先登录进行申购", + "k9":"请输入认购码", + "l1":"涨幅比例", + "l2":"保证金", + "l3":"倍", + "l4":"当前估值" + }, + "otc": { + "a0": "请选择交易类型", + "a1": "买入", + "a2": "卖出", + "a3": "交易币种", + "a4": "请选择币种", + "a5": "数量", + "a6": "请输入数量", + "a7": "价格", + "a8": "请输入价格", + "a9": "单次交易最低", + "b0": "单次交易最高", + "b1": "支付宝", + "b2": "微信", + "b3": "银行卡", + "b4": "备注", + "b5": "请输入备注", + "b6": "发布成功", + "b7": "购买", + "b8": "出售", + "b9": "已撤销", + "c0": "交易中", + "c1": "已完成", + "c2": "广告编号", + "c3": "状态", + "c4": "总价", + "c5": "单价", + "c6": "剩余", + "c7": "发布时间", + "c8": "收款方式", + "c9": "操作", + "d0": "下架", + "d1": "是否下架当前广告", + "d2": "温馨提示", + "d3": "撤销成功", + "d4": "订单详情", + "d5": "订单号", + "d6": "支付", + "d7": "姓名", + "d8": "账号", + "d9": "开户银行", + "e0": "开户支行", + "e1": "剩余时间", + "e2": "分", + "e3": "秒", + "e4": "支付凭证", + "e5": "上传收款二维码", + "e6": "请上传支付凭证", + "e7": "等待买家上传", + "e8": "取消订单", + "e9": "确认付款", + "f0": "未到账", + "f1": "确认收款", + "f2": "是否取消当前订单", + "f3": "确定", + "f4": "取消", + "f5": "订单已取消", + "f6": "确认当前已付款", + "f7": "操作成功", + "f8": "确认收款后将挂卖资产将自动划转", + "f9": "确认未收到款项后,此订单将自动进入申诉", + "g0": "发布广告", + "g1": "用户", + "g2": "总数", + "g3": "限量", + "g4": "支付方式", + "g5": "总量", + "g6": "下单成功", + "g7": "出售订单", + "g8": "购买订单", + "g9": "广告购买订单", + "h0": "广告出售订单", + "h1": "全部", + "h2": "已关闭", + "h3": "待支付", + "h4": "待确认", + "h5": "申诉中", + "h6": "交易数量", + "h7": "交易对象", + "h8": "时间", + "h9": "详情", + "i0": "请输入账号", + "i1": "请输入姓名", + "i2": "收款二维码", + "i3": "保存", + "i4": "银行名称", + "i5": "请输入银行名称", + "i6": "请输入开户支行", + "i7": "银行卡号", + "i8": "请输入银行卡号", + "i9": "编辑成功", + "j0": "添加成功", + "j1": "法币账户", + "j2": "资产", + "j3": "可用余额", + "j4": "冻结余额", + "j5": "法币交易", + "j6": "我的广告", + "j7": "我的订单", + "j8": "广告", + "j9": "一键购买", + "k0": "一键出售", + "k1": "购买金额", + "k2": "购买数量", + "k3": "出售金额", + "k4": "出售数量", + "k5": "请输入购买金额", + "k6": "请输入购买数量", + "k7": "请输入出售金额", + "k8": "请输入出售数量", + "k9":"按数量购买", + "k99":"按金额购买", + "l0":"法币交易说明", + "l1":"最小交易量", + "l2":"确认购买", + "l3":"确认出售", + "l4":"余额不足", + "l5":"下单时间", + "l6":"请选择支付方式", + "l7":"收款人", + "l8":"收款异常", + "l9":"请输入交易密码", + "m0":"已支付", + "m1":"审核通过", + "m2":"审核失败", + "m3":"订单结束", + "m4":"订单取消" + }, + "addinfo": { + "MarketTrend": "市场趋势", + "HourlyCurrencyUpdates": "小时货币最新动态", + "_24HoursUpsAndDowns": "24小时涨跌", + "TopEncryptionRiskManagement": "顶级加密风控管理", + "EscortYourPropertySafety": "为您的财产安全保驾护航", + "BuyCoins": "买币", + "ProvidedByTheExperimentalCenter": "由Fire phoenix实验中心提供", + "StartCurrencyTradingNow": "立刻开始货币交易", + "ScanTheQRCodeBelowToDownload": "扫描下方二维码下载", + "AndroidScanCodeDownload": "Android扫码下载", + "IOSScanCodeDownload": "IOS扫码下载", + "UseNow": "现在使用" + + } +} diff --git a/src/i18n/de.json b/src/i18n/de.json new file mode 100644 index 0000000..8b62c8b --- /dev/null +++ b/src/i18n/de.json @@ -0,0 +1,1162 @@ +{ + "nav": { + "assets": "Aktiva", + "contract": "Konto des Vertrags", + "transfer": "Übertragung von Mitteln", + "excOrders": "Kommission vor Ort", + "contractOrders": "Beauftragung von Verträgen", + "fundHistory": "Aufzeichnung füllen", + "security": "Sicherheit des Kontos", + "invite": "Freunde einladen", + "login": "Bitte melden Sie sich zuerst an", + "tips": "Eingabeaufforderung des Systems", + "set": "Bitte setzen Sie zuerst einen entsprechenden Preis ein", + "a1": "Der Preis kann nicht leer oder Null sein", + "a2": "Menge kann nicht leer oder Null sein", + "a3": "Quantität kann nicht geringer sein als", + "a4": "Der Gesamtbetrag der gekauften Kaufaufträge kann nicht leer oder null sein", + "a5": "Der Gesamtbetrag der gekauften Marktaufträge darf nicht geringer sein als", + "a6": "Die Menge der verkauften Bestellung kann nicht leer oder null sein", + "a7": "Die Zahl der verkauften Aufträge darf nicht geringer sein als", + "a8": "Der Auslösepreis der Stop Loss Order kann nicht leer oder Null sein", + "a9": "Stoppen Sie Gewinn und Stopp-Verlust - Preisgrenze kann nicht leer oder null sein", + "b1": "Stoppen Sie Gewinn und Stopp-Verlust - Bestellmenge kann nicht leer oder null sein", + "b2": "Stoppen Sie Gewinn und Stopp Verlust - Auslösepreis der Marktpreisbestellung kann nicht leer oder null sein", + "b3": "Stoppen Sie den Gewinn und den Stopp-Verlust – der zum Marktpreis gekaufte Gesamtbetrag kann nicht leer oder null sein", + "b5": "Stoppen Sie den Gewinn und den Stopp-Verlust – der Gesamtbetrag des Marktkaufs kann nicht geringer sein als", + "b6": "Die zum Marktpreis verkaufte Menge kann nicht leer oder null sein.", + "b7": "Die zum Marktpreis verkaufte Menge darf nicht geringer sein als", + "b8": "Seite abgeschaltet, aktualisieren Sie bitte oder versuchen Sie es später noch einmal!", + "c1": "Kauf{amount}Teile{name}Token verfügbar{rate}%Belohnung", + "c2": "Aktivitäten im Abonnement", + "c3": "Ausgabe insgesamt", + "c4": "Umlauf insgesamt", + "c5": "Preis der Emission", + "c6": "Uhrzeit der Ausstellung", + "c7": "Adresse auf weißem Papier", + "c8": "Offizielle Website", + "c9": "kurze Einführung" + }, + "common": { + "a3": "Aufzeichnungen über den Kauf", + "option": "Handel mit Optionen", + "exchange": "Transaktion in Währung", + "markets": "Angebot", + "blogs": "Blog", + "news": "Informationen über die Industrie", + "helps": "Hilfe Center", + "service": "Service", + "contactUs": "Kontaktieren Sie uns", + "sign_in": "Melden Sie sich", + "sign_up": "Register", + "noRecord": "Kein Eintrag", + "getCode": "Verifikationscode erhalten", + "help1": "Leitlinien für Devisenverträge", + "help2": "Spezifikation des Vertrags", + "optional": "Optional", + "price": "Preis", + "upAndDown": "Auf und ab", + "heigh": "Höchster Preis", + "low": "Mindestpreis", + "vol": "Volumen", + "pair": "Deal für", + "buy": "kaufen", + "sell": "verkaufen", + "buy-in": "Kauf", + "sell-out": "Verkauf aus", + "open-orders": "Aktuelle Delegation", + "condition-orders": "Bedingte Beauftragung", + "history-orders": "Aufzeichnungen der Delegation", + "limit": "Fester Preis", + "market": "der Marktpreis", + "stop-limit": "Stoppen Sie den Gewinn und stoppen Sie den Verlust", + "stop-market": "Stoppen Sie den Gewinn-Stopp-Verlust - Marktpreis", + "limit-type": "Beschränkung des Handels", + "market-type": "Marktbezogene Transaktion", + "startTime": "Zeitpunkt des Beginns", + "to": "zu", + "confirmBtn": "bestätigen", + "cancelBtn": "Stornieren", + "cancel": "Widerruf", + "endTime": "Die Endzeit", + "export": "Export", + "filter": "Filter", + "all": "unbegrenzt", + "search": "Abruf", + "reset": "Zurücksetzen", + "hideAll": "Alle Teilnehmer ausblenden", + "canceled": "Storniert", + "waiting": "Zu vergleichen", + "triggered": "Triggert", + "processing": "Passend", + "completed": "Abgeschlossen", + "available_phone": "Bitte geben Sie die richtige Mobiltelefonnummer ein", + "available_email": "Bitte geben Sie die richtige E-Mail-Adresse ein", + "codeSent": "Übermittlung von Verifizierungscode", + "captcha": "Fehler bei der Überprüfung", + "created": "Zeit", + "order-price": "Preis der Kommission", + "order-amount": "Eingeführte Menge", + "order-total": "Gesamtbetrag der Bestellung", + "avg-price": "Durchschnittspreis", + "direction": "Richtung", + "order-type": "Typ", + "executed-amount": "Es wurde abgestimmt", + "executed-total": "Umsatz", + "outstanding": "Zu vergleichen", + "status": "Zustand", + "details": "Details", + "action": "Betrieb", + "id": "Nummer der Bestellung", + "filled-price": "Preis der Transaktion", + "filled-amount": "Anzahl der Transaktionen", + "filled-total": "Betrag der Transaktion", + "fee": "Service berechnen", + "enterValid": "Bitte geben Sie eine gültige Mobiltelefonnummer oder E-Mail ein", + "enterValidEmail": "Bitte geben Sie die richtige E-Mail-Adresse ein", + "enterValidPhone": "Bitte geben Sie eine gültige Mobiltelefonnummer ein", + "enterAccount": "Bitte geben Sie ein", + "enterEmail": "Bitte geben Sie die richtige E-Mail-Adresse ein", + "enterPhone": "Bitte geben Sie die Mobiltelefonnummer ein", + "enterPwd": "Bitte geben Sie ein Passwort ein", + "passwordRegular": "Das Passwort muss aus 8-bis-15-Ziffern und Buchstaben bestehen (es muss sowohl Ziffern als auch Buchstaben enthalten, und Symbole können auch verwendet werden)", + "newPassword": "Bitte ein neues Passwort eingeben", + "confirmNewPassword": "Bitte geben Sie das neue Passwort für die Bestätigung ein", + "enterGoogleCode": "Bitte geben Sie Google-Verifizierungscode ein", + "enterEmailCode": "Bitte geben Sie E-Mail-Bestätigungscode ein", + "enterSMSCode": "Bitte geben Sie SMS-Bestätigungscode ein", + "enterVerCode": "Bitte geben Sie den Verifizierungscode ein", + "exportFile": "Bitte klicken Sie auf OK, um die Datei zu exportieren", + "submit": "Senden", + "newzone": "Neue Zone", + "college": "Hochschule", + "goTo": "zu gehen", + "logOut": "Loggen Sie sich", + "homepage": "Home Page", + "application": "Anwendung in Währung", + "purchase": "für den Kauf", + "accountInformation": "Informationen zum Konto", + "myWallet": "Meine Brieftasche", + "commissionOrder": "Anordnung der Kommission", + "securitySetting": "Einstellung der Sicherheit", + "wallet": "Brieftasche", + "allAssets": "Alle Vermögenswerte", + "contractaccount": "Konto des Vertrags", + "transferFunds": "Übertragung von Mitteln", + "rechargeWithdraw": "Recharge und Auszahlung", + "order": "Bestellung", + "spotConsignment": "Kommission vor Ort", + "optionOrders": "Bestellung der Option", + "perpetualContract": "Dauerhafter Vertrag", + "foreignContract": "Vertrag über den Devisenhandel", + "notCertified": "Nicht zertifiziert", + "notData": "Keine Daten verfügbar", + "assets": "Aktiva", + "myCommission": "Mein kehrender Diener", + "addressManagement": "Verwaltung der Adresse", + "auth": "Authentifizierung des realen Namens", + "invitationReward": "Belohnungen einladen", + "visitHistory": "Aufzeichnungen über den Zugriff", + "noviceTutorial": "Neuer Kurs", + "tradingStrategy": "Strategie des Handels", + "industryResearch": "Forschung in der Industrie", + "blockchainDictionary": "Wörterbuch der Blockkette", + "mediaCoverage": "Berichterstattung in Medien", + "selectFile": "Datei auswählen", + "upload": "Hochladen", + "delete": "Löschen", + "tooBig": "Die Dateigröße ist zu groß und darf nicht überschritten werden", + "errorType": "Fehler beim Dateityp", + "resend": "Zurücksetzen", + "sms": "kurze Nachricht", + "email": "Briefkasten", + "sendSuccess": "Bestätigungscode erfolgreich gesendet", + "retransmission": "Weiterverbreitung", + "start-trade": "Beginn der Reise der digitalen Währung", + "login": "Melden Sie sich", + "register": "Register", + "trading": "Zum Handel", + "dark": "schwarz", + "light": "weiß", + "notMore": "Nicht mehr", + "allRead": "Alles gelesen", + "newMessage": "Neue Nachrichten", + "footerTips1": "Risikoinvestitionen auf dem Markt sollten vorsichtig sein", + "footerTips2": "Rechtliche Hinweise: Die Website wird von {name} Firma betrieben", + "footerTips3": "Risikotipp: Digital Asset Trading kann zu Ihrem Verlust des Kapitals führen, stellen Sie bitte sicher, dass Sie die Risiken vollständig verstehen", + "footerTips4": "Eingeschränkte Gebiete: nicht in der Lage, Gebietsansässigen bestimmter Länder (z. B. Israel und der Islamischen Republik China) Dienstleistungen zu erbringen" + }, + "exchange": { + "search": "Suche", + "pair": "Deal für", + "last-price": "Aktuelle Preise", + "change": "Auf und ab", + "order-book": "Ordnung", + "price": "Preis", + "amount": "Anzahl", + "total": "Bruttowert (Bruttowert)", + "recent-trades": "Letzte Abmachung", + "time": "Zeit", + "order-total": "Gesamtwert der Kommission", + "balance": "Verfügbarer Saldo", + "enter-price": "Bitte geben Sie den Preis ein", + "enter-amount": "Bitte geben Sie die", + "enter-total": "Bitte geben Sie den Gesamtpreis ein", + "at-best-price": "Nahe zum besten Marktpreis", + "trigger-price": "Bitte geben Sie Auslösepreis ein", + "min": "Minute", + "hour": "Stunde", + "day": "Tag", + "week": "Woche", + "month": "Monat" + }, + "login": { + "resend": "Zurücksetzen", + "sms": "kurze Nachricht", + "sendOK": "Bestätigungscode erfolgreich gesendet!", + "enterPhoneEmail": "Bitte geben Sie E-Mail-Nummer ein", + "effectivePhoneEmail": "Bitte geben Sie ein gültiges Mobiltelefon oder eine E-Mail ein", + "enterPasswrod": "Bitte geben Sie {num} Bit-Passwort ein", + "passwordLength": "Die Passwortlänge ist {num} Bits. Sie enthält alphanumerisches Passwort", + "safe": "Überprüfung der Sicherheit", + "googleVer": "Bitte geben Sie den {num} Code der Google-Verifikation auf Ihrer mobilen App ein", + "phoneCode": "Bitte geben Sie den {num} Code ein, der an Ihre Mobiltelefonnummer gesendet wird.", + "emailCode": "Bitte geben Sie den {num} Bit-Verifizierungscode ein, der an Ihre E-Mail gesendet wird", + "google-code": "Google Captcha", + "email-code": "E-Mail-Code zur Überprüfung", + "sms-code": "Code der Handy-Verifikation", + "new-password": "Neues Passwort", + "confirm-password": "Passwort bestätigen", + "forgetPassword": "Vergessen Sie das Passwort", + "rememberMe": "Denk an mich.", + "noAccountYet": "Noch kein Konto", + "goRegister": "Register", + "safety": "Überprüfung der Sicherheit", + "regAccount": "Registrierte Kontonummer", + "email": "Briefkasten", + "phone": "Handy (Handy)", + "pleaseEmail": "Bitte E-Mail-Adresse eingeben", + "invalidEmail": "Ungültige E-Mail-Adresse", + "enterMobile": "Bitte geben Sie die Mobiltelefonnummer ein", + "invalidPhone": "Ungültige Mobilnummer", + "enterLengthPassword": "Bitte geben Sie ein Kennwort von {num1} bis {num2} in Länge ein", + "hasNumEn": "Das Passwort erfordert eine Kombination von {num} Buchstaben und Zahlen", + "iSee": "Ich stimme zu.", + "terms": "Allgemeine Geschäftsbedingungen", + "reg": "Register", + "enterEmailCode": "Bitte geben Sie den {num} Bit-Verifizierungscode an Ihre E-Mail ({email})", + "accountActivated": "Um das Konto zu aktivieren", + "backOld": "Zurück zum vorherigen Schritt", + "verCode": "Code der Überprüfung", + "notEmail": "Wenn Sie Ihre E-Mail nicht erhalten, versuchen Sie bitte die folgende Checkoperation", + "confirmEmail": "Bitte vergewissern Sie sich, dass die von Ihnen eingegebene E-Mail-Adresse korrekt ist.", + "confing": "Bitte überprüfen Sie Ihren E-Mail Spam Ordner", + "checkTrashCan": "Bitte stellen Sie sicher, dass Ihre E-Mail mit einem stabilen Internet verbunden ist", + "enterPhone1": "Bitte geben Sie die zu sendende Nummer an Ihr Mobiltelefon ein", + "enterPhone2": "Die {num} Bit Captcha von", + "smsNotReceived": "Wenn Sie keine SMS erhalten, versuchen Sie bitte die folgende Checkoperation", + "phoneCorrect": "Bitte vergewissern Sie sich, dass die von Ihnen eingegebene Nummer und Telefonnummer korrekt sind.", + "securePhone": "Bitte stellen Sie sicher, dass Ihr Mobiltelefon stabil ist", + "hasAccount": "Es gibt bereits ein Konto", + "toLogin": "Zum Login", + "securityVerification": "Überprüfung der Sicherheit", + "disagree": "Sie haben den Bedingungen noch nicht zugestimmt.", + "registrationSuccess": "Erfolgreich registriert, auf Anmeldeseite überspringen", + "referrer": "Referenzen", + "c6": "Einladungscode (erforderlich)", + "c7": "Bitte geben Sie den Einladungscode ein", + "optional": "Optional", + "password": "Passwort", + "login": "Melden Sie sich", + "country": "Code des Bereichs", + "enter-account": "Bitte geben Sie die Kontonummer ein", + "sign-in": "Melden Sie sich", + "find-password": "Finde das Passwort", + "submit": "Senden", + "confirmpassword": "Die beiden Passwörter sind inkonsistent", + "Remembered": "Haben Sie Ihr Passwort vergessen?" + }, + "application": { + "form": "Antragsformular für die Projektwährung", + "sendUser": "Sponsor des Projekts", + "sendUserEn": "Englische Bezeichnung der Währung", + "sendUserCn": "Chinesischer Name der Währung", + "contactPosition": "Ansprechpartner und Position", + "phone": "Kontakt Nummer", + "tokenPrice": "der Marktpreis", + "email": "Kontakt E-Mail", + "address": "Ort der Projektregistrierung", + "mechanism": "Organisation der Projektinvestitionen", + "personal": "persönliche", + "currencyCode": "Code der Währung", + "symbol": "Symbol", + "currencyIdentification": "Identifikation der Währung", + "format": "Unterstützung {name} Format, Datei unter {num}", + "fundraisingDate": "Datum der Finanzierung", + "officialWebsite": "Offizielle Website", + "whitePaperLinks": "Link mit weißem Papier", + "noLink": "Wenn es keinen Link gibt, laden Sie bitte den Anhang am Ende des Artikels hoch", + "total_issue": "Ausgabe der Währung insgesamt", + "currencyCirculation": "Umlauf der Währung", + "currencyAllocationRatio": "Verhältnis der Währungszuweisung", + "numberOfCurrencyHolders": "Anzahl der Deviseninhaber", + "tradingPlatform": "Online Handelsplattform", + "privatePlacement": "Private Platzierung", + "publicOfferingPrice": "Öffentliche Angebote", + "company": "Bitte die Währungseinheit anhängen", + "coinType": "Art des Währungsblocks", + "currencyIssueDate": "Datum der Währungsausgabe", + "blockBrowser": "Browser blockieren", + "officialAddress": "Amtliche Brieftasche", + "contractAddress": "Anschrift des Vertrags", + "link": "Link", + "budget": "Haushalt der Währungsgebühr", + "unit": "Einheit", + "ofTokens": "Anzahl der Token der Marktaktivitäten nach der Verladung", + "chineseCurrency": "Einführung in die Währung auf Chinesisch", + "enCurrency": "Einführung in die Währung in Englisch", + "remarks": "Bemerkungen", + "uploadWhitePaper": "White Paper hochladen", + "pleaseUpload": "Bitte laden Sie das weiße Papier hoch", + "recommendationCode": "Name der Empfehlung, Organisation und Empfehlungscode", + "ifSo": "Wenn ja", + "affirmsThat": "Erklärung: Ich bestätige hiermit, dass alle oben genannten Informationen wahr, vollständig und korrekt sind.Ich werde für die Bereitstellung falscher Informationen wirtschaftlich und rechtlich verantwortlich sein", + "iKnow": "Ich hab's!", + "reSubmit": "Erneut einreichen", + "pleaseConfirm": "Bitte bestätigen Sie, dass die obigen Informationen wahr sind", + "pleaseEnter": "Bitte geben", + "upLoadSuccess": "Upload erfolgreich" + }, + "wallet": { + "inside": "Übertragung interner Mittel", + "from": "von", + "history": "Geschichte ansehen", + "balance": "Bilanz", + "transferQuantity": "übertragene Menge", + "capitalAccount": "Kapitalverkehr (Kapitalverkehr)", + "contract": "Vertrag", + "financial": "Finanzielle Gesamtrechnung", + "leverage": "Konto des Leverage", + "successful": "Erfolgreicher Transfer", + "confirm": "Bestätigen der Übertragung", + "pleaseSelect": "Bitte wählen Sie Währung", + "to": "zu", + "assets": "Aktiva", + "strokes": "Bitte geben Sie die Transfermenge ein", + "addressManagement1": "Verwaltung der Adresse", + "addAddress": "Adresse hinzufügen", + "filter": "Filter", + "search": "Suche", + "selectActiveArea": "Bitte den aktiven Bereich auswählen", + "areaOne": "Region eins", + "areaTwo": "Region 2", + "addressAssets": "Liste der Adressen", + "addressNum": "Anzahl der Adressen", + "fee1": "Service berechnen", + "creationTime": "Zeit der Schöpfung", + "detailAddress": "Detaillierte Adresse", + "remarks1": "Bemerkungen", + "operating": "Betrieb", + "complete": "vollständig", + "copy": "Kopie", + "editAddress": "Adresse bearbeiten", + "deleteAddress": "Adresse löschen", + "next": "vorige Seite", + "pre": "nächste Seite", + "add": "hinzufügen zu", + "edit": "edit", + "address": "Adresse", + "selectAssets": "Bitte auswählen", + "drawAddress": "Anschrift der Rücknahme", + "addressRemarks": "Anmerkungen zur Adresse", + "remarksDelete": "Sind Sie sicher, dass Sie diese Adresse löschen möchten", + "optionSuccess": "Operation erfolgreich", + "allAssets": "Wert aller Vermögenswerte", + "showNum": "Zahlen anzeigen", + "contractAccount": "Konto des Vertrags", + "marginAccount": "Konto des Leverage", + "financialAccount": "Finanzielle Gesamtrechnung", + "spotAccount": "Spot Account", + "hide": "verstecken", + "balanceAssets": "Aktive Bilanz", + "searchCurrency": "Währung suchen", + "addressManagement": "Verwaltung der Rücknahmeadresse", + "totalAssets": "Aktiva insgesamt", + "availableBalance": "Verfügbarer Saldo", + "fee": "Waage gefroren", + "valuation": "Bewertung", + "recharge": "Aufladung", + "withdrawal": "Zurückziehen des Geldes", + "transaction": "Transaktion", + "rechargeAddress": "Adresse der Lade", + "rechargeQuantity": "Menge der Ladung", + "enterQuantity": "Bitte geben Sie die", + "rechargeInstructions": "Anweisungen zur Aufladung", + "automaticallyCredited": "Diese Adresse ist Ihre neueste Ladeadresse. Wenn das System die Aufladung empfängt, wird sie automatisch aufgezeichnet.", + "tran": "Der Transfer muss durch das gesamte Blockchain-Netzwerk bestätigt werden. Wenn Sie bei {num} Netzwerkbestätigung ankommen, wird Ihr {name} automatisch auf das Konto hinterlegt.", + "only": "Bitte senden Sie nur {name} an diese Adresse. Wenn Sie andere digitale Währung an diese Adresse senden, wird dies zu permanenten Verlusten führen.", + "low": "Minimum", + "addressList": "Liste der Adressen", + "enterDrawAddress": "Bitte geben Sie die Rücknahmeadresse ein", + "invalidWallet": "Keine gültige Brieftasche Adresse, bitte erneut eingeben", + "withdrawalsNumber": "Menge der Rücknahme", + "enterDrawNum": "Bitte geben Sie die Widerrufsmenge ein", + "withdrawalInstructions": "Anmerkungen zum Widerruf", + "enterAddress": "Bitte überprüfen Sie sorgfältig und geben Sie die richtige Adresse der Brieftasche ein.", + "notSend": "Das Senden einer nicht ausgeglichenen digitalen Währung an die Brieftasche-Adresse wird zu permanentem Verlust führen.", + "deductionFee": "Die Bearbeitungsgebühr wird von dem Betrag des eingezogenen Geldes abgezogen.", + "submitSuccess": "Erfolgreich eingereicht, wird geprüft", + "operationComplete": "Der Entzug ist abgeschlossen und wartet auf die Genehmigung", + "rechargeRecord": "Datensatz der Aufladung", + "withdrawalRecord": "Aufzeichnung des Entzugs", + "assetsName": "Bitte geben Sie den Namen an", + "selectStatus": "Bitte den Status auswählen", + "startTime": "Datum des Beginns", + "entTIme": "Datum des Endes", + "date": "Datum", + "hash": "Hasch", + "num": "Anzahl", + "progress": "Geschwindigkeit des Fortschritts", + "status": "Zustand", + "error": "fehlgeschlagen", + "success": "Erfolg", + "underReview": "Gegenstand der Überprüfung", + "handlingFee1": "Service berechnen", + "processing": "Gegenstand der Überprüfung", + "transfer": "Übertragung von Mitteln", + "transferDescription": "Beschreibung der Mittelübertragung", + "handlingFee": "Bitte beachten Sie, dass die interne Überweisung automatisch und kostenlos erfolgt.", + "onlyForeignExchange": "Nur {name} kann auf Ihr Devisenvertragskonto übertragen werden", + "onlySustainable": "Nur {name} kann auf Ihr unbefristetes Vertragskonto übertragen werden", + "inCase1": "Wenn Sie Devisenverträge tauschen möchten, müssen Sie {name} auf das Devisenkonto als Marge übertragen.", + "inCase2": "Wenn Sie einen unbefristeten Vertrag tauschen möchten, müssen Sie {Name} auf das unbefristete Vertragskonto als Marge übertragen.", + "transferRecord": "Datensatz der Übertragung", + "allTransfer": "Alle Vermögensübertragungsregister", + "direction": "Richtung", + "all": "ganze", + "dateTime": "Zeit", + "UserWallet": "Aktives Konto", + "ContractAccount": "Konto des Vertrags", + "LeverageAccount": "Konto des Leverage", + "FinancialAccount": "Finanzielle Gesamtrechnung", + "contractFlow": "Ablauf des Vertrags", + "info": "Details", + "money": "Betrag des Geldes", + "Authentication": "Authentifizierung" + + }, + "contact": { + "contact": "Kontaktieren Sie uns", + "help": "Wenn Sie Hilfe benötigen, kontaktieren Sie uns bitte", + "fullName": "vollständiger Name", + "enterFullName": "Bitte den vollständigen Namen eingeben", + "email": "Briefkasten", + "enterEmail": "Bitte E-Mail-Adresse eingeben", + "consultingService": "Projekt Beratung", + "pleseSelect": "Bitte wählen", + "info": "Informationen", + "enterInfo": "Bitte geben Sie die Informationen ein", + "contactInformation": "Kontakt Informationen", + "routineConsultation": "Routinemäßige Beratung", + "customerService": "Kundendienst", + "mediaCooperation": "Zusammenarbeit im Medienbereich", + "submit": "Senden" + }, + "college": { + "college": "Hochschule", + "article": "Blog", + "tutorialDetails": "Tutorial Details", + "howToBuyBitcoin": "Wie man Bitcoin kauft", + "recommendedCourse": "Empfohlene Anleitung", + "buy": "Eine Bitcoin in einer Minute kaufen", + "register": "Register", + "visit": "Visit the {name} website and register your {name} account", + "realName": "Authentifizierung des realen Namens", + "upload": "Hochladen von gültigen Zertifikaten für die persönliche Echtname-Authentifizierung", + "quickBuy": "Ein Klick Kauf und Zahlung", + "inIndex": "Ein Klick, um Geld auf der Startseite zu kaufen / Geld Seite kaufen, und warten, bis das Geld nach der Zahlung freigegeben werden", + "tradeNow": "Ich werde jetzt handeln.", + "currencyTransaction": "Zweitens verstehen Währungstransaktionen", + "contractEntryTransaction": "Transaktion zur Vertragseingabe", + "how": "Wie man Optionen tauscht", + "TradingStrategy": "Strategie des Handels", + "seeMore": "Weitere Informationen", + "industryResearch": "Forschung in der Industrie", + "oneClick": "Ein Klick intelligente Transaktion", + "inAssets": "Auf der Aktivseite / Währungsfüllseite können Sie eine Schaltfläche drücken, um die Währung zu berechnen, und dann können Sie handeln", + "dictionary": "Wörterbuch der Blockkette", + "media": "Berichterstattung in Medien" + }, + "home": { + "newEra": "Die weltweit führende digitale Finanzderivatbörse", + "startTrading": "Beginn des Handels", + "walkingLantern": "Laterne laufen", + "marketCenter": "Der Handelsmarkt", + "optional": "Optional", + "latestPrice": "Preis", + "upAndDown": "Auf und ab", + "heigh": "Höchster Preis", + "low": "Mindestpreis", + "vol": "Volumen des Handels", + "coinType": "Deal für", + "more": "Mehr dazu > >", + "multiPlatform": "Multi-Plattform Download", + "atTime": "wann und wo immer möglich", + "multiTerminal": "Multiplattform Terminal Transaktion", + "cover": "Deckel", + "multiTerminal1": "Mehrere Plattformen", + "support": "Full Service Support", + "down": "Download", + "news": "Trends auf dem Markt", + "detail": "Details anzeigen", + "quickly": "Beeilen Sie sich!", + "major": "Wir bieten professionelle Dienstleistungen für Investoren", + "safe": "Sichere Handelsdienstleistungen", + "login": "Melden Sie sich", + "reg": "Register", + "trading": "Zum Handel", + "add": "Erfolgreich hinzugefügt", + "cancel": "Abbrechen erfolgreich", + "features": "Wesentlicher Vorteil", + "partners": "Investment Institute & Partner", + "perpetual_title": "Vertrag über den Devisenhandel", + "perpetual_cont": "Da der weltweit erste Devisen-Perpetual-Vertrag mit stabiler Währung mit der höchsten Hebelwirkung von 100-mal abgewickelt wird, ist der AMATAK-Devisen-Perpetual-Vertrag eine kostengünstige Wahl für den schnellen Devisenhandel", + "stablecoin_title": "Das erste stabile Devisenhandelszentrum der Welt", + "stablecoin_cont": "AMATAK hat ein starkes, stabiles Währungs-ökologisches Umfeld aufgebaut, ein vollständiger Rahmen, der aus stabilen Währungstransaktionen, Zahlungen und Überweisungen besteht, und ist Teil des globalen, hochwertigen stabilen Währungsclubs geworden!", + "security_title": "Höchste Sicherheit", + "security_cont": "AMATAK übernimmt den modernsten Hauptbuch-Tresorraum, um die Endpunktsicherheit der digitalen Währung zu schützen. Die Haupttresterplattform bietet bis zu US $150 Millionen Versicherung für Drittdiebstahl, Insiderkollegen und Master-Saatdiebstahl.Mehr als 98% der in AMATAK gespeicherten digitalen Währungen werden in der Multisignatur Cold Portemonnaie gespeichert, und es wird der höchste Standard-Markt-Risikokontrolle angenommen, um die Kapitalsicherheit aller Nutzer zu gewährleisten.", + "service_title": "24 /7 mehrsprachiger Kundenservice in Echtzeit", + "service_cont": "Der Kundendienst von AMATAK 24 / 7 ist jederzeit auf Abruf und versucht, den Nutzern durch Echtzeit-Chat oder E-Mailsupport@AMATAK.comKontaktieren Sie den Kundendienst.", + "analy_title": "Fortgeschrittene Analysewerkzeuge", + "analy_cont": "Händler können verschiedene Diagrammwerkzeuge und -indikatoren verwenden, die auf stabilen Daten basieren, um den Handel auf der Handelspeite zu unterstützen.", + "liquidity_title": "Exzellente Liquidität", + "liquidity_cont": "24 / 7 ist jederzeit mit der hohen Liquidität der AMATAK-Handelsplattform verbunden.", + "technology_title": "Selbstentwickelte Technologie", + "technology_cont": "Die AMATAK-Handelsplattform basiert auf bewährter Technologie und wird von Top-Experten in der Branche gebaut, um die Funktionen der Plattform in höchstem Maße zu optimieren.", + "download": "AMATAK mobile Terminal herunterladen", + "easy": "Offener Palmhandel jederzeit und überall", + "skan": "Scan-Code und Download jetzt", + "core_advantages": "Meine Kernkraft sind Daten", + "about_us": "über uns" + }, + "option": { + "waitFor": "Warten auf die Lieferung", + "history": "Historische Lieferung", + "orderNum": "Nummer der Bestellung", + "option": "Option", + "buyTime": "Zeit kaufen", + "buyAmount": "Menge des Käufes", + "buyType": "Art der Bestellung", + "yield": "Rate der Rendite", + "state": "Zustand", + "deliverytime": "Zeit der Lieferung", + "countDown": "Countdown der Lieferung", + "buyingUp": "Kaufen Sie auf", + "buyDwon": "Kaufen Sie unten", + "buyEven": "Kaufen Sie sogar", + "result": "Ergebnis schließen", + "settlementQuantity": "Menge der Abrechnung", + "up": "steigen", + "down": "Fall", + "flat": "flach", + "buyOption": "Option kaufen", + "deliveryRecord": "Aufzeichnung der Lieferung", + "current": "aktuell", + "next": "Nächste Ausgabe", + "enterNum": "Bitte geben Sie die", + "balance": "Bilanz", + "expectedRevenue": "Erwartete Einnahmen", + "seeMore": "Weitere Informationen", + "beBearish": "sei bärtisch", + "time": "Zeit", + "zf": "Hoch!", + "bullish": "Bullisch", + "lookAtPing": "Siehe flach", + "bearish": "Bearish", + "amount": "Anzahl", + "coinType": "Währung", + "odds": "Verschiedenheiten", + "buySuccess": "Erfolgreicher Kauf" + }, + "order": { + "noData": "Kein Transaktionsprotokoll", + "ifCancel": "Löscht die aktuelle Bestellung", + "cancelSuccess": "Erfolgreich storniert", + "marketPrice": "Marktbezogene Transaktion", + "fixedPrice": "Beschränkung des Handels", + "sell": "Verkauf aus", + "buy": "Kauf", + "exchangeRecord": "Aufzeichnungen der Transaktionen", + "see": "siehe", + "opt": "Betrieb", + "status": "Zustand", + "time": "Zeit", + "tradingPair": "Deal für", + "direction": "Richtung", + "type": "Typ", + "averagePrice": "Durchschnittspreis", + "price": "Preis", + "matched": "Es wurde abgestimmt", + "totalAmountEntrusted": "Gesamtbetrag der anvertrauten Mittel", + "total": "insgesamt", + "toMatch": "Unvergleichbar", + "operation": "Betrieb", + "reset": "Zurücksetzen", + "search": "Suche", + "to": "zu", + "startTime": "Datum des Beginns", + "endTime": "Datum des Endes", + "select": "Bitte wählen", + "entrustType": "Art der Delegation", + "spotConsignment": "Kommission vor Ort", + "surrentCommission": "Aktuelle Delegation", + "commissionRecord": "Aufzeichnungen der Delegation", + "optionTransaction": "Handel mit Optionen", + "orderNum": "Nummer der Bestellung", + "timeSharing": "Teilen der Zeit", + "yield": "Rate der Rendite", + "buyNum": "Menge des Käufes", + "upAndDown": "Auf und ab", + "settlementQuantity": "Menge der Abrechnung", + "transactionPrice": "Preis der Transaktion", + "tradingVolume": "Volumen des Handels", + "aTurnover": "ein Umsatz", + "serviceCharge": "Service berechnen", + "cancel": "Widerruf", + "buyTime": "Zeit zum Kauf", + "buyUp": "Kaufen Sie auf", + "buyDown": "Kaufen Sie unten", + "buyLevel": "Kaufen Sie sogar" + }, + "profile": { + "realName": "Authentifizierung des realen Namens", + "SelectAreaCode": "Vorwahl auswählen", + "primaryCertification": "Primäre Zertifizierung", + "advancedCertification1": "Erweiterter Zertifizierungsantrag", + "advancedCertification2": "Fortgeschrittener Zertifizierungsantrag eingereicht", + "toExamine": "zu untersuchen", + "fullName": "vollständiger Name", + "legal": "legal", + "pleaseEnterName": "Bitte geben Sie Ihren Namen ein", + "dateOfBirth": "Datum der Geburt", + "selectDate": "Wählen Sie ein Datum", + "documentType": "Art des Dokuments", + "pelaseSelect": "Bitte wählen", + "certificateNumber": "Nummer des Zertifikats", + "endterIDNumber": "Bitte geben Sie die ID-Nummer ein", + "addressInfo": "Informationen zur Adresse", + "residentialAddress": "Anschrift des Wohnorts", + "residentialAddress1": "Bitte geben Sie Ihre Wohnadresse ein", + "ciy": "Stadt", + "incity": "Bitte betreten Sie Ihre Stadt", + "postalCode": "Postleitzahl (Postleitzahl)", + "thePostcode": "Bitte geben Sie die Postleitzahl ein", + "additionalInformation": "Weitere Informationen", + "optional": "Optional", + "contactInformation": "Kontakt Informationen", + "phoneNumber": "Telefon Nummer", + "enterPhoneNumber": "Bitte geben Sie die Mobiltelefonnummer ein", + "clickUpload1": "Wenn Sie auf Upload-Datei klicken und Authentifizierung einreichen, haben Sie unsere Nutzungsbedingungen gelesen und zugestimmt", + "pelaseDownload": "Bitte wählen Sie eine Kopie aus den folgenden Dokumenten aus", + "passport": "Reisepass", + "drivingLicense": "Führerschein (Führerschein)", + "iD": "ID", + "upload": "Hochladen", + "explain": "erklären", + "unexpired": "Unexpilierte Dokumente können Bilder oder gescannte Kopien sein.", + "pleaseConfirm": "Bitte stellen Sie sicher, dass alle Details auf dem Foto klar und nicht abgedeckt sind.", + "fileFormat": "Format der Datei", + "maximumFileSize": "Maximale Dateigröße", + "positive": "Vorderseite der Bescheinigung", + "theOtherSide": "Die Rückseite der Bescheinigung", + "hold": "Inhaber einer Bescheinigung", + "dragHere": "Ziehen Sie hier oder", + "clickUpload": "Klicken Sie auf Hochladen", + "uploadPhoto": "Bitte laden Sie das Foto Ihrer Personalausweise hoch", + "reversePhoto": "Bitte laden Sie das Foto auf der Rückseite des Zertifikats hoch", + "uploadIDCard": "Bitte laden Sie Ihr Handgerät hoch", + "nextStep": "nächster Schritt", + "inSubmit": "Ihr Bestätigungsantrag wurde eingereicht!Wir informieren Sie, sobald wir das Ergebnis erhalten", + "gotIt": "Ich hab's.", + "congratulations": "Gratulation!", + "back": "zurück", + "resetApply": "Erneut anwenden", + "recertification": "Rekertifikation", + "userInfo": "Informationen zum Konto", + "verState": "Status der Validierung", + "max": "Maximal", + "limitH": "Begrenzung der Wartezeit", + "verLeave": "Authentifizierungsniveau", + "exceed": "übersteigen", + "contactUs": "Kontaktieren Sie uns", + "inviteFriends": "Freunde einladen", + "dividends": "Laden Sie Freunde ein, um {Name}, und erhalten Sie {num} von Freunden zukünftige Transaktionsgebühren als Bonus.", + "sendInvitation": "Einladung senden", + "resetPassword": "Passwort zurücksetzen", + "forLoginAccount": "Für Login.", + "clickReset": "Klicken Sie auf Reset", + "registrationDecord": "Loggen Sie sich ein", + "recording": "Wird verwendet, um detaillierte Protokolle in der Geschichte anzuzeigen", + "recordingDEtail": "Ausführliche Aufzeichnung", + "invitationReward": "Belohnungen einladen", + "inviteUse": "Freunde zur Nutzung einladen", + "futureCommission": "Erhalten Sie {num} der zukünftigen Transaktionsgebühr von Freunden als Bonus", + "joinThePlan": "Join {name} user invitation bonus plan", + "checkMyDividend": "Sehen Sie sich meine Dividenden an", + "step1": "Der erste Schritt", + "shareLink": "Links teilen", + "step2": "Schritt zwei", + "shareFriend": "Freunde einladen", + "step3": "Der dritte Schritt", + "instantDividend": "Genießen Sie Dividenden", + "invitationInformation": "Informationen zur Einladung", + "invitationLink": "Link zur Einladung", + "invitationCode": "Code der Einladung", + "registeredUser": "Registrierte Benutzer", + "accountNumber": "Nummer des Kontos", + "registrationTime": "Zeit der Registrierung", + "activityTerms": "Terms of activity", + "handlingFeeDividend": "Dividende der Kommission", + "equalInvitee": "Es ist wie eingeladen zu werden.", + "fee": "Entgelt für Transaktionsabwicklung", + "afterThat": "Nach der Einladung zum Handel", + "follow": "Transfer auf das Konto des Gastes innerhalb von Minuten", + "limit": "Die Aktivität folgt den folgenden Start- und Endzeiten und ist nur für gültige Konten nach der Startzeit und vor dem Ende der Tätigkeit verfügbar", + "activityStartTime": "Beginn der Tätigkeit", + "Y": "Jahr", + "M": "Monat", + "D": "Tag", + "endTime": "Endzeit der Tätigkeit", + "proceed": "Weiter geht's", + "atAnyTime": "Wir behalten uns das Recht vor, das {name} Benutzer-Einladungsprogramm jederzeit ohne vorherige Ankündigung zu ändern, auszusetzen oder zu beenden", + "reservedRights": "Reservieren Sie das Recht, keine Dividenden für doppelte Konten oder falsche Konten zu zahlen", + "canDecide": "Sie können bestimmte Benutzer akzeptieren oder ablehnen, die auf {name} Plattform {link} eingeführt oder eingeladen werden.", + "bill": "Aufzeichnungen über den Zugriff", + "date": "Datum", + "address": "Ort", + "equipment": "Ausrüstung", + "preliminary": "Vorläufige Zertifizierung erfolgreich", + "clickToVerify": "Klicken Sie, um zu überprüfen", + "clickToVerify1": "Abgeschlossen", + "tips1": "Basiszertifizierung: Um Bargeld zu wählen, müssen Sie eine erweiterte Zertifizierung absolvieren.", + "tips2": "Erweiterte Zertifizierung: 24-Stunden-Auszahlungslimit bis zu 5.000 USDT. Wenn Sie mehr Auszahlungsbeträge benötigen, wenden Sie sich bitte an den Kundendienst." + }, + "setting": { + "smsVer": "SMS-Überprüfung", + "enterCode": "Bitte geben Sie den Verifizierungscode ein", + "emailVer": "Überprüfung der Mailbox", + "enterEmailVer": "Bitte geben Sie den E-Mail-Bestätigungscode ein", + "ver": "Überprüfung", + "enterNameCode": "Bitte geben Sie den {name} Verifizierungscode ein", + "openSuccess": "Erfolgreich geöffnet", + "closeSuccess": "Shutdown erfolgreich", + "email": "Briefkasten", + "enterEmail": "Bitte E-Mail eingeben", + "emailVerCode": "E-Mail-Code zur Überprüfung", + "enterSmsCode": "Bitte geben Sie SMS-Bestätigungscode ein", + "bind": "Bindung", + "unbind": "Entbündelung", + "bindSuccess": "Verbinden erfolgreich", + "unbindSuccess": "Unbindend erfolgreich", + "scanQrCode": "Bitte scannen Sie den QR-Code", + "howToOpen": "Erfahren Sie, wie Sie {name} sekundäre Validierung aktivieren", + "read": "Klicken Sie hier, um die Installationsinformationen zu lesen", + "verKey": "Schlüssel überprüfen", + "safeSetting": "Einstellung der Sicherheit", + "loginPassword": "Passwort einloggen", + "resLoginPassword": "Passwort zurücksetzen", + "transactionPassword": "Passwort der Transaktion", + "usedFor": "Für die Übermittlung von Aufträgen und Aufträgen vor Ort", + "notOpen": "Nicht geöffnet", + "modifyPassword": "Passwort ändern", + "setPassword": "Passwort setzen", + "verCode": "Code der Überprüfung", + "forLogin": "Für Login, Währungsrücknahme und Sicherheitseinstellungen", + "alLast": "Mindestens ein Prüfmodus ist eingeschaltet", + "close": "schließen", + "open": "geöffnet", + "phone": "Telefon Nummer", + "area": "Bitte Code eingeben", + "enterPhone": "Bitte geben Sie die Mobiltelefonnummer ein", + "newPassword": "Neues Passwort", + "passwordIs": "Passwort für die Transaktion ist {num} Ziffer", + "enterNewPassword": "Bitte ein neues Passwort eingeben", + "confirmPassword": "Passwort bestätigen", + "pleaseConfirmPassword": "Bitte bestätigen Sie das Passwort", + "operationSuccess": "Operation erfolgreich", + "combination": "Passwörter erfordern eine Kombination von Buchstaben und Zahlen", + "changeSuccess": "Geändert erfolgreich" + }, + "purchase": { + "sendPrice": "Preis der Emission", + "subscriptionCurrency": "Währung der Abonnements", + "expected": "Erwartete Online-Zeit", + "startTime": "Beginn des Abonnements", + "applyForPurchase": "Zeit zum Schließen", + "enterNum": "Bitte geben Sie die", + "all": "Alle", + "subscribeNow": "Sofort anwenden", + "subscriptionCycle": "Zyklus der Abonnements", + "projectWarmUp": "Projekt aufwärmen", + "startSubscription": "Abonnement starten", + "endOfSubscription": "Schließen Sie das Abonnement", + "announceResults": "Veröffentlichen von Ergebnissen", + "projectCetails": "Details des Projekts", + "useOrNot": "Verwenden oder nicht", + "subscribe": "für den Kauf", + "prompt": "Tipps", + "subscribeSuccess": "Erfolgreicher Kauf" + }, + "contract": { + "a0": "Konto des Vertrags", + "a1": "Übertragung von Mitteln", + "a2": "Eigenkapital des Kontos", + "a3": "verfügbar", + "a4": "Rand der Position", + "a5": "Einfrieren der Kommission", + "a6": "Nicht realisierter Gewinn und Verlust", + "a7": "Risiko rate", + "a8": "Geschätzte starke Parität", + "a9": "Vertrag", + "b0": "Hebel", + "b1": "Zeit", + "b2": "Art der Transaktion", + "b3": "Geschlossen", + "b4": "Gesamtbetrag der anvertrauten Mittel", + "b5": "Durchschnittlicher Transaktionspreis", + "b6": "Preis der Kommission", + "b7": "Bindung", + "b8": "Service berechnen", + "b9": "Zustand", + "c0": "Betrieb", + "c1": "Stornieren Sie die Bestellung", + "c2": "Widerruf", + "c3": "Löscht die aktuelle Bestellung", + "c4": "Stornieren", + "c5": "bestimmen", + "c6": "aufgehoben", + "c7": "Unsichtbar", + "c8": "Teilweise Transaktion", + "c9": "Alles geschlossen", + "d0": "Kaufen kaiduo", + "d1": "Wohnung kaufen", + "d2": "Offen verkaufen", + "d3": "Verkauf von pingduo", + "d4": "Erfolgreich storniert", + "d5": "ein Kornspeicher zur Verfügung stellen", + "d6": "eine Position schließen", + "d7": "Preis des Triggers", + "d8": "Preis", + "d9": "der Marktpreis", + "e0": "Fester Preis", + "e1": "Anzahl", + "e2": "Zhang.", + "e3": "Erforderliche Marge", + "e4": "Multi Position", + "e5": "Kurze Position", + "e6": "Bullisch", + "e7": "Offenbar", + "e8": "Bearish", + "e9": "Keping", + "f0": "Der Preis von", + "f1": "Kaiduo!", + "f2": "Open Air", + "f3": "Basiert sie auf", + "f4": "Doppeltes Druckmittel", + "f5": "Erfolgreiche Kommission", + "f6": "Erfolgreiche Schließung", + "f7": "Handicap", + "f8": "Transaktion in Echtzeit", + "f9": "ganze", + "g0": "kaufen", + "g1": "verkaufen", + "g2": "Kumulativ", + "g3": "Aktuelle Preise", + "g4": "Details", + "g5": "Geschichte", + "g6": "Zeit der Transaktion", + "g7": "Position", + "g8": "Gleichfähige Menge", + "g9": "Durchschnittlicher Öffnungspreis", + "h0": "Rate der Rendite", + "h1": "Schließung des Marktes", + "h2": "Ist das alles auch zum Marktpreis", + "h3": "Alle flach", + "h4": "Erfolg", + "h5": "Deal für", + "h6": "Auf und ab", + "h7": "Höchster Preis", + "h8": "Mindestpreis", + "h9": "Volumen", + "i0": "Position gehalten", + "i1": "Aktuelle Delegation", + "i2": "Historische Kommission", + "i3": "Richtung", + "i4": "viele", + "i5": "leer", + "i6": "Nur aktuell anzeigen", + "i7": "Stoppen des Gewinns", + "i8": "Stoppen Sie den Verlust", + "i9": "Stoppen Sie den Gewinn und stoppen Sie den Verlust", + "j0": "Gewinn und Verlust", + "j1": "Aktuelle Transaktionspreise", + "j2": "Durchschnittlicher Öffnungspreis", + "j3": "Stoppen Sie den Auslösepreis", + "j4": "Stopp Verlust Auslösepreis", + "j5": "Marktpreis für", + "j6": "Wenn die Transaktion abgeschlossen ist, wird der Gewinn und Verlust geschätzt", + "j7": "Die Stop-Loss-Kommission wird ausgelöst, wenn die Transaktion abgeschlossen ist, und Gewinn und Verlust werden nach der Transaktion erwartet", + "j8": "Öffnen Sie einen unbefristeten Vertrag", + "j9": "Erfolgreiche Eröffnung", + "k0": "Setzt erfolgreich", + "k1": "Abrechnung von Gewinn und Verlust", + "k2": "Ein Klick flach", + "k3": "Ein Klick rückwärts", + "k4": "Ist alles flach", + "k5": "Ein Schlüssel rückwärts", + "k6": "Alle gleich, Erfolg", + "k7": "umgekehrter Erfolg", + "k8": "Bitte melden Sie sich zuerst an", + "k9": "Bitte geben Sie den Abonnement-Code ein" + }, + "otc": { + "a0": "Bitte wählen Sie den Transaktionstyp", + "a1": "Kauf", + "a2": "Verkauf aus", + "a3": "Währung der Transaktion", + "a4": "Bitte wählen Sie Währung", + "a5": "Anzahl", + "a6": "Bitte geben Sie die", + "a7": "Preis", + "a8": "Bitte geben Sie den Preis ein", + "a9": "Mindestbetrag für Einzeltransaktionen", + "b0": "Höchste Einzeltransaktion", + "b1": "Alipay", + "b2": "WeChatGenericName", + "b3": "Karte der Bank", + "b4": "Bemerkungen", + "b5": "Bitte geben Sie Ihre Kommentare ein", + "b6": "Erfolgreich veröffentlicht", + "b7": "Kauf", + "b8": "verkaufen", + "b9": "aufgehoben", + "c0": "Im Handel", + "c1": "Abgeschlossen", + "c2": "Nummer der Werbung", + "c3": "Zustand", + "c4": "Preis insgesamt", + "c5": "Preis pro Einheit", + "c6": "Überschuss", + "c7": "Zeit der Veröffentlichung", + "c8": "Methode der Zahlung", + "c9": "Betrieb", + "d0": "Aus dem Regal", + "d1": "Ist die aktuelle Anzeige entfernt", + "d2": "Erinnerung", + "d3": "Erfolgreich storniert", + "d4": "Details zur Bestellung", + "d5": "Nummer der Bestellung", + "d6": "Zahlung", + "d7": "vollständiger Name", + "d8": "Nummer des Kontos", + "d9": "Bank der Einlagen", + "e0": "Zweig zur Kontoeröffnung", + "e1": "Restliche Zeit", + "e2": "Zweig", + "e3": "Sekunde", + "e4": "Gutschein für Zahlungen", + "e5": "Herunterladen QR-Code hochladen", + "e6": "Bitte laden Sie den Zahlungsbeleg hoch", + "e7": "Warten auf den Upload von Käufern", + "e8": "Stornierung der Bestellung", + "e9": "Bestätigung der Zahlung", + "f0": "Nicht eingegangen", + "f1": "Bestätigen Sie den Empfang", + "f2": "Löscht die aktuelle Bestellung", + "f3": "bestimmen", + "f4": "Stornieren", + "f5": "Bestellung storniert", + "f6": "Bestätigung der laufenden Zahlung", + "f7": "Operation erfolgreich", + "f8": "Nach Bestätigung der Einziehung werden die Vermögenswerte automatisch verkauft und übertragen.", + "f9": "Nach Bestätigung, dass die Zahlung nicht eingegangen ist, wird der Auftrag automatisch in den Beschwerdemodus eingegeben", + "g0": "Werbung", + "g1": "Benutzer", + "g2": "insgesamt", + "g3": "Grenzen", + "g4": "Methode der Zahlung", + "g5": "insgesamt", + "g6": "Erfolg der Kasse", + "g7": "Bestellung des Vertriebs", + "g8": "Bestellung bestellen", + "g9": "Kaufauftrag für Werbung", + "h0": "Verkaufsauftrag der Werbung", + "h1": "ganze", + "h2": "Geschlossen", + "h3": "Zu zahlen", + "h4": "Zu bestätigen", + "h5": "Gegenstand der Beschwerde", + "h6": "Anzahl der Transaktionen", + "h7": "Handelspartner und Handelspartner", + "h8": "Zeit", + "h9": "Details", + "i0": "Bitte geben Sie die Kontonummer ein", + "i1": "Bitte geben Sie Ihren Namen ein", + "i2": "Sammlung QR-Code", + "i3": "Erhaltung", + "i4": "Name der Bank", + "i5": "Bitte geben Sie den Banknamen ein", + "i6": "Bitte geben Sie die Kontoeröffnung ein", + "i7": "Nummer der Bankkarte", + "i8": "Bitte geben Sie die Bankkartennummer ein", + "i9": "erfolgreich editiert", + "j0": "Erfolgreich hinzugefügt", + "j1": "Rechtliches Währungskonto", + "j2": "Aktiva", + "j3": "Verfügbarer Saldo", + "j4": "Waage gefroren", + "j5": "Legale Währungstransaktion", + "j6": "Meine Anzeige", + "j7": "Meine Bestellung", + "j8": "Werbung", + "j9": "Ein Klick Kauf", + "k0": "Ein Klick Verkauf", + "k1": "Betrag der Anschaffung", + "k2": "Menge des Käufes", + "k3": "Betrag des Verkaufs", + "k4": "Menge verkauft", + "k5": "Bitte geben Sie den Kaufbetrag ein", + "k6": "Bitte geben Sie die Bestellmenge ein", + "k7": "Bitte geben Sie den Verkaufsbetrag ein", + "k8": "Bitte geben Sie die Verkaufsmenge ein", + "k9": "Nach Menge kaufen", + "l0": "Anmerkungen zum Rechtsgeschäft", + "l1": "Minimales Transaktionsvolumen", + "l2": "Kauf bestätigen", + "l3": "Bestätigung des Verkaufs", + "l4": "Tut mir leid, dein Kredit ist knapp.", + "l5": "Zeit der Bestellung", + "l6": "Bitte wählen Sie die Zahlungsmethode", + "l7": "Zahlungsempfänger", + "l8": "Abnormale Sammlung", + "l9": "Bitte geben Sie das Transaktionspasswort ein", + "m0": "Bezahlt", + "m1": "Genehmigt", + "m2": "Prüfung fehlgeschlagen", + "m3": "Ende der Bestellung", + "m4": "Stornierung der Bestellung" + }, + "cxiNewText": { + "a0": "Top 10", + "a1": "5 Millionen+", + "a2": "< 0.10%", + "a3": "200+", + "a4": "Globales Ranking", + "a5": "Benutzer vertrauen uns", + "a6": "Extrem niedrige Gebühren", + "a7": "Länder", + "a21": "Jetzt Geld verdienen", + "a22": "Erstellen Sie ein persönliches Kryptowährungsportfolio", + "a23": "Kaufen, handeln und halten Sie über 100 Kryptowährungen", + "a24": "Laden Sie Ihr Konto auf", + "a25": "Melden Sie sich per E-Mail an", + "a38": "Starten Sie Transaktionen jederzeit und überall.", + "a39": "Beginnen Sie jederzeit sicher und bequem mit dem Handel über unsere APP und Webseite", + "a40": "Scannen Sie den QR-Code, um die APP herunterzuladen", + "a41": "Vertrauenswürdige Handelsplattform für Kryptowährungen", + "a42": "Wir setzen uns dafür ein, die Sicherheit der Benutzer mit strengen Protokollen und branchenführenden technischen Maßnahmen zu gewährleisten.", + "a43": "Benutzersicherheits-Asset-Fonds", + "a44": "Wir speichern 10 % aller Transaktionsgebühren in sicheren Vermögensfonds, um einen teilweisen Schutz der Benutzergelder zu gewährleisten", + "a45": "Personalisierte Zugangskontrolle", + "a46": "Die personalisierte Zugriffskontrolle schränkt die Geräte und Adressen ein, die auf persönliche Konten zugreifen, sodass Benutzer keine Sorgen haben müssen.", + "a47": "Erweiterte Datenverschlüsselung", + "a48": "Persönliche Transaktionsdaten werden durch Ende-zu-Ende-Verschlüsselung gesichert und der Zugriff auf persönliche Informationen ist auf den Einzelnen beschränkt.", + "a57": "Klicken Sie hier, um zu gehen", + "a71": "Einsteigerhandbuch ", + "a72": "Beginnen Sie sofort mit dem Erlernen des digitalen Devisenhandels ", + "a77": "Wie kaufe ich digitale Währung", + "a78": "Wie verkauft man digitale Währungen ", + "a79": "So handeln Sie mit digitalen Währungen", + "a80": "Marktplatz", + "a81": "24-Stunden-Markttrend", + "a82": "Fügen Sie Ihrem Wallet Kryptowährungsgelder hinzu und beginnen Sie sofort mit dem Handel" + }, + "homeNewText": { + "aa1": "Kryptowährungstor", + "aa2": "Sicherer, schneller und einfacher Handel mit über 100 Kryptowährungen", + "aa3": "Registrieren Sie sich per E-Mail", + "aa4": "Beginnen Sie jetzt mit dem Handel", + "aa5": "Markt Trend", + "aa6": "Digital Asset Quote Express", + "aa7": "Währung", + "bb1": "Aktueller Preis (USD)", + "bb2": "24-Stunden-Erhöhung", + "bb3": "24-Stunden-Handelsvolumen", + "bb4": "Kryptowährungsaustausch für alle", + "bb5": "Beginnen Sie hier mit dem Handel und erleben Sie eine bessere Kryptowährungsreise", + "bb6": "Persönlich", + "bb7": "Eine Kryptowährungsbörse für alle. Die vertrauenswürdigste führende Handelsplattform mit einer großen Auswahl an Währungen", + "cc1": "Geschäft", + "cc2": "Entwickelt für Unternehmen und Institutionen. Bereitstellung von Kryptolösungen für institutionelle Anleger und Unternehmen", + "cc3": "Entwickler", + "cc4": "Entwickelt für Entwickler, damit Entwickler die Tools und APIs der Zukunft von Web3 erstellen können", + "cc6": "QR-Code scannen", + "cc7": "Laden Sie die Android/IOS-App herunter", + "dd1": "Sicher und stabil, ohne Unfälle", + "dd2": "Mehrere Sicherheitsstrategien und eine 100-prozentige Reservegarantie stellen sicher, dass es seit seiner Gründung zu keinen Sicherheitsvorfällen gekommen ist.", + "dd3": "Handeln Sie Krypto-Assets einfach und bequem", + "dd4": "Bei CXIsux sind die Produkte leicht zu verstehen, der Transaktionsprozess bequem und die Blockchain-Asset-Service-Plattform aus einer Hand", + "dd5": "Derivate", + "dd6": "Sie können Verträge auf über 100 Kryptowährungen mit bis zu 150-facher Hebelwirkung handeln und hohe Gewinne erzielen", + "ee1": "Unterstützung mehrerer Terminals", + "ee2": "Handeln Sie jederzeit und überall mit digitalen Vermögenswerten", + "ee3": "Unterstützt eine breite Palette von Vermögenswerttypen, wobei alle Währungsinformationen verfügbar sind", + "ee4": "Verstehen Sie schnell den Prozess des Handels mit digitalen Vermögenswerten", + "ee5": "Beginnen Sie Ihre Verschlüsselungsreise", + "ee6": "Grafische Überprüfung", + "hh0": "Teilen Sie das beste Handelserlebnis mit den weltweit führenden Börsen", + "hh1": "Auf der Suche nach guten Handelsmöglichkeiten", + "hh2": "Sicher, schnell und einfach mit über 100 Kryptowährungen handeln", + "hh3": "Erfahren Sie mehr über unsere Produkte", + "hh4": "Beginnen Sie hier mit dem Handel und erleben Sie eine bessere Kryptowährungsreise", + "hh5": "Spothandel", + "hh6": "Über 100 Kryptowährungen mit ermäßigten Handelsgebühren kaufen und verkaufen", + "hh7": "Vertragstransaktion", + "hh8": "Verbessern Sie Ihr Einkommen durch unbefristeten USDT-Vertrag", + "hh9": "Einfacher und bequemer Handel mit Krypto-Assets", + "hh10": "Die Produkte sind leicht zu verstehen, der Transaktionsprozess ist bequem und die Blockchain-Asset-Service-Plattform aus einer Hand", + "hh11": "Fondsverwaltung", + "hh12": "Erzielen Sie hohe Renditen durch unsere vielfältigen Einsatzprodukte", + "hh13": "Derivate", + "hh14": "Sie können über 100 Kryptowährungsverträge mit einem bis zu 150-fachen Hebel handeln und hohe Gewinne erzielen", + "hh15": "Sicher und stabil, ohne Unfälle", + "hh16": "Mehrere Sicherheitsrichtliniengarantien, 100 % Reservegarantie und seit seiner Gründung sind keine Sicherheitsvorfälle aufgetreten.", + "hh17": "Warum BXRCO wählen", + "hh18": "Ihre vertrauenswürdige Kryptowährungsbörse", + "hh19": "Sicherheit", + "hh20": "Seit 2020 läuft BXRCO mit seinem selbst entwickelten System stabil und zuverlässig.", + "hh21": "Dienst", + "hh22": "Sie können sofortige Antworten im Servicecenter erhalten oder uns rund um die Uhr per E-Mail kontaktieren.", + "hh23": "Einfach zu bedienen", + "hh24": "BXRCO macht den Handel mit Kryptowährungen einfach. Kaufen Sie Münzen mit einem Klick und verpassen Sie nie die flüchtige Gelegenheit, Geld zu verdienen.", + "hh25": "Flexibler Kauf und Verkauf", + "hh26": "Eine Vielzahl von Kryptowährungen unterstützen Transaktionen. Bleiben Sie mit dem Trend auf dem Laufenden, damit Sie keine Vermögenschancen verpassen.", + "hh27": "Der Handel beginnt in 1 Minute", + "hh28": "Kostenlos ein BXRCO-Konto erstellen", + "hh29": "Zertifizierung abschließen", + "hh30": "Transaktion durchführen", + "hh31": "Überall handeln", + "hh32": "Bleiben Sie mit unserer App und unserem Desktop-Client auf dem Laufenden.", + "hh33": "Jetzt den Code zum Herunterladen scannen", + "hh34": "Registrieren und mit dem Handel beginnen!", + "hh35": "Jetzt registrieren", + "hh36": "Jetzt per E-Mail registrieren", + "hh37": "Globales Ranking", + "hh38": "Benutzer vertrauen uns", + "hh39": "Extrem niedrige Gebühren", + "hh40": "Länder", + "hh41": "BXRCO, jederzeit und überall handeln", + "hh42": "Jetzt handeln", + "hh43": "Scannen Sie den QR-Code, um BXRCO APP herunterzuladen" + } +} diff --git a/src/i18n/en.json b/src/i18n/en.json new file mode 100644 index 0000000..1a751b4 --- /dev/null +++ b/src/i18n/en.json @@ -0,0 +1,1252 @@ +{ + "nav": { + "assets": "Assets", + "contract": "Contract Accounts", + "transfer": "Transfer", + "excOrders": "Exchange Orders", + "contractOrders": "Contract Orders", + "fundHistory": "Fund History", + "security": "Security", + "invite": "Invite Friends", + "login": "Please log in first", + "tips": "System prompt", + "set": "Please set an appropriate price first", + "a1": "Price cannot be empty or zero", + "a2": "Quantity cannot be empty or zero", + "a3": "Quantity cannot be less than", + "a4": "The total amount of market price orders purchased cannot be empty or zero", + "a5": "The total amount of market orders purchased cannot be less than", + "a6": "The quantity of the market order sold cannot be empty or zero", + "a7": "The number of market orders sold cannot be less than", + "a8": "The trigger price of stop loss order cannot be empty or zero", + "a9": "Stop profit and stop loss - price limit cannot be empty or zero", + "b1": "Stop profit and stop loss - limit order quantity cannot be empty or zero", + "b2": "Stop profit and stop loss - trigger price of market price order cannot be empty or zero", + "b3": "Stop profit and stop loss - the total amount bought at market price cannot be empty or zero", + "b5": "Stop profit and stop loss - the total amount of market purchase cannot be less than", + "b6": "Stop profit and stop loss - the quantity sold at the market price cannot be empty or zero", + "b7": "Stop loss - the quantity sold at market price cannot be less than", + "b8": "Page disconnected, please refresh or try again later!", + "c1": "purchase{amount}Pieces{name}Token available{rate}%reward", + "c2": "Subscription activities", + "c3": "Total issue", + "c4": "Total circulation", + "c5": "Issue price", + "c6": "Time of issue", + "c7": "White paper address", + "c8": "Official website address", + "c9": "brief introduction", + "rejection":"Reason for rejection" + }, + "common": { + "a3": "Purchase records", + "option": "Option", + "exchange": "Spot Trading", + "markets": "Markets", + "helps": "Help", + "course": "Support Center", + "activity": "Marketing activities", + "news": "Industry news", + "contactUs": "Contact Us", + "sign_in": "Log In", + "sign_up": "Register", + "noRecord": "No Record", + "getCode": "Get Code", + "export": "Export", + "optional": "Favorite", + "price": "Price", + "upAndDown": "Change", + "heigh": "High", + "low": "Low", + "vol": "Volumn", + "pair": "Pair", + "more": "More >>", + "buy": "Buy", + "sell": "Sell", + "buy-in": "Buy", + "sell-out": "Sell", + "open-orders": "Open Orders", + "condition-orders": "Order Conditions", + "history-orders": "Order History", + "limit": "Limit order", + "market": "Market order", + "stop-limit": "Stop Limit", + "stop-market": "Stop Market", + "limit-type": "Limit", + "market-type": "Market", + "all": "All", + "confirmBtn": "Confirm", + "cancelBtn": "Cancel", + "cancel": "Cancel", + "startTime": "Start Time", + "to": "To", + "endTime": "End Time", + "filter": "Filter", + "search": "Search", + "reset": "Reset", + "hideAll": "Hide All Canceled", + "canceled": "Canceled", + "waiting": "Waiting", + "processing": "Processing", + "completed": "Completed", + "available_phone": "The register phone is not available!", + "available_email": "The register email is not available!", + "codeSent": "Verification Code Sent", + "captcha": "Error getting captcha", + "triggered": "Triggered", + "created": "Time", + "order-price": "Order Price", + "order-amount": "Amount", + "order-total": "Total", + "avg-price": "Average Price", + "direction": "Side", + "order-type": "Type", + "executed-amount": "Executed", + "executed-total": "Turnover", + "outstanding": "Outstanding", + "status": "Status", + "details": "Details", + "action": "Action", + "id": "ID", + "filled-price": "Price", + "filled-amount": "Filled", + "filled-total": "Total", + "fee": "Fee", + "enterValid": "Please enter a valid phone or email!", + "enterValidEmail": "Please enter the valid email address.", + "enterValidPhone": "Please enter a valid phone.", + "enterEmail": "Please enter the valid email address.", + "enterPhone": "Please enter the Phone", + "enterPwd": "Please enter the password.", + "enterAccount": "Please enter the account.", + "passwordRegular": "The password must be between 8 and 15 characters with at least one number and one letter. Symbols are allowed.", + "newPassword": "Please enter the new password.", + "confirmNewPassword": "Please enter the confirmed new password.", + "enterGoogleCode": "Please enter the Google Authentication code.", + "enterEmailCode": "Please enter the Email Verification Code.", + "enterSMSCode": "Please enter the SMS Verification Code.", + "enterVerCode": "Please enter the verification code.", + "exportFile": "Click cofirm to export the file.", + "newzone": "New Product", + "college": "College", + "goTo": "Go To", + "logOut": "Log out", + "homepage": "Home", + "application": "Currency Application", + "purchase": "Purchase", + "accountInformation": "Account", + "myWallet": "Wallet", + "commissionOrder": "Orders", + "securitySetting": "Security", + "wallet": "Wallets", + "allAssets": "Assets", + "contractaccount": "Derivatives Account", + "transferFunds": "Transfer", + "rechargeWithdraw": "Deposit & Withdraw", + "order": "Orders", + "spotConsignment": "Exchange Orders", + "optionOrders": "Option Orders", + "perpetualContract": "Derivatives", + "foreignContract": "Crypto FX Contract", + "notCertified": "No Certification", + "notData": "No open orders", + "assets": "Assets", + "myCommission": "My Commission", + "addressManagement": "Address Management", + "auth": "Authentication", + "invitationReward": "Invite Reward ", + "visitHistory": "visit history", + "noviceTutorial": "Novice tutorial", + "tradingStrategy": "Trading Strategy", + "industryResearch": "Industry Research", + "blockchainDictionary": "Blockchain Dictionary", + "mediaCoverage": "Media Coverage", + "selectFile": "Select File", + "upload": "Upload", + "delete": "Delete", + "tooBig": "The file size is too large to exceed", + "errorType": "File type error", + "resend": "Resend", + "sms": "SMS", + "email": "Email", + "sendSuccess": "Already Send!", + "retransmission": "Resend", + "start-trade": "Start the journey of digital currency", + "login": "Login", + "register": "Register", + "trading": "Trade Now", + "service": "Service", + "dark": "dark", + "light": "light", + "notMore": "not more", + "allRead": "all read", + "newMessage": "new message", + "footerTips1": "Risk investment in the market needs to be cautious.", + "footerTips2": "Legal Notice: The website is operated by {name}", + "footerTips3": "Risk Tip: Digital asset trading may cause your principal loss, please make sure you fully understand the risks.", + "footerTips4": "Restricted Areas: Unable to provide services to residents of specific countries / regions, such as Israel and the Islamic Republic of China", + "learn": "Learn", + "GraphicValidation": "Graphical Verification", + "c12": "Rejection Information", + "c13": "Withdrawal password", + "c14": "Please fill in the withdrawal password", + "c15": "Reset withdrawal password", + "c35": "send", + "c36": "Contact Us" + }, + "exchange": { + "search": "Search", + "pair": "Pairs", + "last-price": "Last Price", + "change": "Change", + "order-book": "Order Book", + "price": "Price", + "amount": "Amount", + "total": "Sum", + "recent-trades": "Trades", + "time": "Time", + "order-total": "Order Total", + "balance": "Available Balance", + "enter-price": "Enter the Price", + "enter-amount": "Enter the amount", + "enter-total": "Enter the Total", + "at-best-price": "Market price", + "trigger-price": "Enter the Trigger Price", + "min": "min", + "hour": "hour", + "day": "day", + "week": "week", + "month": "month" + }, + "login": { + "resend": "Resend", + "sms": "SMS", + "enterPhoneEmail": "Enter email", + "email": "Email", + "sendOK": "code has already send!", + "phoneCode": "SMS Verification", + "googleVer": "Google Verification", + "emailCode": "Email Verification", + "password": "Password", + "passwordLength": "the password needs a length of {num}", + "new-password": "Enter a new password", + "confirm-password": "Confirm your password", + "forgetPassword": "Forget password", + "rememberMe": "remember me", + "noAccountYet": "No account", + "goRegister": "Register Account", + "goRegister1": "Register now", + "login": "Log In", + "come": "Welcome back! Let’s trade.", + "account": "Account", + "enterEccount": "Enter your account", + "enter-account": "Enter the registered Email", + "pwd": "Password", + "enterPwd": "Enter Password", + "forgotPwd": "Forgot Password?", + "dontAccunt": "Don’t have an account yet?", + "registerBtn": "Create Account", + "SMS": "SMS", + "Google": "Google", + "google-code": "Google Code", + "email-code": "Email Code", + "sms-code": "SMS Code", + "disagree": "You need to agree the items first", + "enterValid": "Please enter a valid phone or email!", + "enterPwdTips": "Please enter the Password.", + "safe": "Security verification", + "pleaseEmail": "Enter your email address", + "iSee": "I have knew", + "terms": "the privacy terms and agreements", + "reg": "Register", + "hasAccount": "Already have an account", + "toLogin": "Log In", + "country": "Country code", + "enterMobile": "Enter your phone number", + "invalidPhone": "Invalid mobile number", + "authenticationCode": "Authentication Code", + "googleAuthenticator": "Please input the 6-digit code on your Google Authenticator App", + "phoneAuthenticator": "Please input the 6-digit code we sent to your phone number: ", + "emailAuthenticator": "Please input the 6-digit code we sent to your email: ", + "register": "Register", + "startTrad": "Start Trading Today", + "emailBtn": "Email", + "phone": "Phone", + "emailAddress": "Email Address", + "enterEmailAddress": "Enter Email Address", + "enterEmailCode": "Please enter code that send to ({email})", + "accountActivated": "to active your account", + "backOld": "back to prev step", + "notEmail": "If don't receive, please try the following check operation", + "confirmEmail": "Please make sure that the email address is correct", + "confing": "Please check the spam folder in your mailbox", + "checkTrashCan": "Please make sure your email is connected to the stable Internet", + "smsNotReceived": "If don't receive, please try the following check operation", + "phoneCorrect": "Please make sure the mobile phone and area code are correct", + "securePhone": "Please make sure your phone signal is stable", + "verCode": "Verify Code", + "referrer": "Enter your referral code (Required)", + "referrer1": "Please fill in by the recommender", + "c6": "Invitation code (required)", + "c7": "Enter your invitation code", + "phoneNum": "Phone Number", + "enterPhoneNum": "Enter Phone Number", + "referral": "Referral Code ", + "optional": "Optional", + "enterReferral": "Enter Referral Code", + "protocol1_1": "I have read and agree to the ", + "protocol1_2": "Terms of Service", + "protocol1_3": " and ", + "protocol1_4": "Privacy Policy", + "protocol1_5": " and I am at least 18 years of age", + "protocol2": "I attest that I am not a citizen or a tax resident of the United States of America or Canada.", + "protocol3": "I agree to receive marketing and promotional information from www.virgox.com via the email provided in this form.", + "alreadyAccount": "Already have an account?", + "loginBtn": "Login", + "enterPhone1": "Please enter the code", + "enterPhone2": "to your phone", + "agree": "Fields denoted with an “*” must be completed!", + "successfully": "Register completed. Please login", + "verifyEmailNum": "Verify Email Address", + "enterEmailNumTips": "Please input the 6-digit verification code we sent to your email ", + "enterEmailNum_1": " to activate your account. ", + "verifyPhoneNum": "Verify Phone Number", + "enterPhoneNumTips": "Please input the 6-digit verification code we sent to your phone number ", + "enterPhoneNum_1": " to activate your account. ", + "verificationCode": "Verification Code", + "noEmail": "If you haven't received the email, please try the following checks:", + "noEmail_1": "Please make sure the email address you entered was correct.", + "noEmail_2": "Please check your Spam or Junk mail folders.", + "noEmail_3": "Please add VirgoX address to your email address whitelist. ", + "noEmail_4": " Learn more", + "noEmail_5": "Please make sure your email is connected to the stable internet.", + "noSMS": "If you haven't received the message (SMS) , please try the following checks:", + "noSMS_1": "Please make sure the phone number and the area code you entered were correct.", + "noSMS_2": "Please make sure your phone has a stable signal.", + "enterValidEmail": "Please enter a valid email!", + "enterValidPhone": "Please enter a valid phone.", + "pleaseEnterEmail": "Please enter the Email.", + "pleaseEnterPhone": "Please enter the Phone.", + "pleaseEnterPassword": "Please enter the Password.", + "pwdRegular": "The password must be between 8 and 15 characters with at least one number and one letter. Symbols are allowed.", + "resetPwd": "Reset Password", + "registeredAccount": "Registered Account", + "confirm": "Confirm", + "newPwd": "New Password", + "confirmPwd": "Confirm Password", + "setNewPwd": "Set New Password", + "inconsistent": "The password does not match!", + "reset": "Reset completed. Please login again", + "back": "Back", + "sign-in": "Account Login", + "find-password": "Reset login password", + "submit": "Submit", + "confirmpassword": "The two passwords are inconsistent", + "Remembered": "Remembered your password?" + }, + "application": { + "form": "project’s application form of listing currency", + "sendUser": "Project sponsor", + "sendUserEn": "the English name of currency type", + "sendUserCn": "the Chinese name of currency type", + "contactPosition": "Contact and position", + "phone": "Contact phone", + "tokenPrice": "TOKEN market price", + "email": "Contact email", + "address": "Project registration place", + "mechanism": "Project investment organization", + "personal": "individual", + "currencyCode": "Code of currency type", + "symbol": "symbol", + "currencyIdentification": "Identification of currency type", + "format": "{name} format is supported.The size of file less than {num}", + "fundraisingDate": "Date of fund-raising", + "officialWebsite": "Official website", + "whitePaperLinks": "Link of the white paper ", + "noLink": "if there is no link, please upload the attachment at the end", + "total_issue": "Total issuance of currency type", + "currencyCirculation": "Circulation of currency type", + "currencyAllocationRatio": "Distribution ratio of currency type ", + "numberOfCurrencyHolders": "Number of holders", + "tradingPlatform": "Online trading platform", + "privatePlacement": "Private placement", + "publicOfferingPrice": "public placement price", + "company": "please attach currency unit", + "coinType": "Currency Block Network Type", + "currencyIssueDate": "Date of currency type issued", + "blockBrowser": "Block browser", + "officialAddress": "Address of official wallet", + "contractAddress": "Contract address", + "link": "link", + "budget": "Budget of listing currency fee", + "unit": "as unit", + "ofTokens": "Number of tokens for market activity projects after listing currency ", + "chineseCurrency": "Currency introduction in Chinese", + "enCurrency": "Currency introduction in English ", + "remarks": "Note", + "uploadWhitePaper": "Upload White Paper", + "pleaseUpload": "Upload files", + "recommendationCode": "Referrer is name,institution and referral code", + "ifSo": "if there is", + "affirmsThat": "Statement:I hereby confirm that all the above information is true, complete and accurate. I shall be financially and legally liable for providing false information", + "iKnow": "I have learned", + "reSubmit": "Submit again", + "pleaseConfirm": "please confirm the information is correct", + "pleaseEnter": "please enter", + "upLoadSuccess": "apply success!" + }, + "wallet": { + "auth": "Please conduct real name authentication first", + "obtain": "Get recharge address", + "inside": "Inner Transfer", + "from": "From", + "history": "view history", + "balance": "balance", + "transferQuantity": "Amount", + "capitalAccount": "Spot Account", + "contract": "Contract", + "financial": "Financial Account", + "leverage": "Margin Account", + "successful": "Successfully", + "confirm": "Confirm", + "pleaseSelect": "please select the token", + "to": "To", + "assets": "Assets", + "strokes": "Enter the Amount", + "addressManagement1": "Address Management", + "addAddress": "add Adress", + "filter": "Filter", + "search": "Search", + "selectActiveArea": "Select Active Area", + "areaOne": "area one", + "areaTwo": "area two", + "addressAssets": "Address Book", + "addressNum": "Number of addresses", + "fee1": "Fee", + "creationTime": "Time", + "detailAddress": "Address", + "remarks1": "Notes", + "operating": "Action", + "complete": "Completed", + "copy": "Copy", + "editAddress": "edit", + "deleteAddress": "delete", + "next": "prev", + "pre": "next", + "add": "add", + "edit": "edit", + "address": "adress", + "selectAssets": "choose assets", + "drawAddress": "Withdraw Address", + "addressRemarks": "notes for address", + "remarksDelete": "Are you sure you want to delete this address", + "optionSuccess": "The operation was successful", + "allAssets": "Total Value", + "showNum": "show number", + "contractAccount": "Derivatives Account", + "marginAccount": "Margin Account", + "financialAccount": "Financial Account", + "spotAccount": "Spot Account", + "hide": "Hide", + "balanceAssets": "Balance", + "searchCurrency": "Search Coin", + "addressManagement": "withdrawal address management", + "totalAssets": "Total", + "availableBalance": "Available", + "fee": "Freezed", + "valuation": " Valution", + "recharge": "Deposit", + "withdrawal": "Withdraw", + "transaction": "Trade", + "rechargeAddress": "Deposit Address", + "rechargeQuantity": "Amount", + "enterQuantity": "Please enter Amount", + "rechargeInstructions": "Tips", + "automaticallyCredited": "This address is your latest recharge address. When the system receives the recharge, it will be automatically recorded.", + "tran": "The transfer needs to be confirmed by the whole blockchain network. When {num} network is confirmed, your {name} will be automatically deposited into the account.", + "only": "Please only send {name} to this address. Sending other digital currencies to this address will cause permanent losses.", + "low": "Low", + "addressList": "Address Book", + "enterDrawAddress": "Please enter the address", + "invalidWallet": "invalid wallet address, pelease retry", + "withdrawalsNumber": "Amount", + "enterDrawNum": "Please enter the Amount", + "withdrawalInstructions": "Tips", + "enterAddress": "Please check and enter the correct address of the coin wallet.", + "notSend": "Sending an unmatched digital currency to the wallet address will cause permanent loss.", + "deductionFee": "The handling fee will be deducted from the amount of withdrawal.", + "submitSuccess": "Submitted successfully, under review", + "operationComplete": "Your withdrawal application is under review. The estimated review time is 12 hours. Please wait patiently. You can also check the status update on the withdrawal record page.", + "rechargeRecord": "Depoiste record", + "withdrawalRecord": "Withdrawal record", + "assetsName": "Assets Name", + "selectStatus": "Choose Status", + "startTime": "Start Time", + "entTIme": "End Time", + "date": "Date", + "hash": "Hash", + "num": "Amount", + "progress": "Progress", + "status": "Status", + "error": "Error", + "success": "Completed", + "underReview": "In Review", + "handlingFee1": "Fee", + "processing": "Processing", + "transfer": "Transfer", + "transferDescription": "Description of Fund Transfer", + "handlingFee": "Please note that the transfer of internal funds is automatic and free of handling charges.", + "onlyForeignExchange": "Only {name} can be transferred to your foreign exchange contract account", + "onlySustainable": "Only {name} can be transferred to your perpetual contract account", + "inCase1": "If you want to trade foreign exchange contracts, you must transfer {name} to the foreign exchange contract account as margin", + "inCase2": "If you want to trade foreign exchange contracts, you must transfer {name} to the foreign exchange contract account as margin.", + "transferRecord": "Transfer record", + "allTransfer": "All asset transfer records", + "direction": "Direction", + "all": "All", + "dateTime": "Date", + "UserWallet": "Assets Account", + "ContractAccount": "Derivatives Account", + "LeverageAccount": "Leverage Account", + "FinancialAccount": "Financial Account", + "contractFlow": "Contract Flow", + "info": "Details", + "money": "Amount", + "Authentication": "Authentication", + "relatedassets": "This address only supports ETH/ERC20 related assets" + }, + "contact": { + "contact": "Contact Us", + "help": "If you need any help, please contact us!", + "fullName": "Full Name", + "enterFullName": "please enter your fullname", + "email": "Email", + "enterEmail": "Enter your email", + "consultingService": "Consulting Item", + "pleseSelect": "choose please!", + "info": "Message", + "enterInfo": "leave message here", + "contactInformation": "Contact Information", + "routineConsultation": "Routine Consultation", + "customerService": "Customer Service", + "mediaCooperation": "Media Cooperation", + "submit": "Submit" + }, + "college": { + "college": "College", + "noviceTutorial": "Novice Tutorial", + "article": "Blog", + "howToBuyBitcoin": "How To Buy Bitcoin", + "recommendedCourse": "Recommended Course", + "buy": "Buy BTC in 1 min", + "register": "register", + "visit": "visite {name} site,add sign-up your {name} account", + "realName": "Real Name", + "upload": "Upload valid certificate for personal real name authentication", + "quickBuy": "One click purchase and payment", + "inIndex": "One click to buy currency on the home page / purchase currency page, and wait for the money to be released after the payment is completed", + "tradeNow": "Trade now", + "currencyTransaction": "Second understand currency transaction", + "contractEntryTransaction": "Contract entry transaction", + "how": "How to trade options", + "TradingStrategy": "Trading strategy", + "seeMore": "View More", + "industryResearch": "Industry Research", + "oneClick": "Click to start your trade", + "inAssets": "deposite coin in assets page, then trade", + "dictionary": "Blockchain Dictionary", + "media": "Media" + }, + "home": { + "newEra": "The world's leading derivative digital asset exchange", + "startTrading": "Start Now", + "walkingLantern": "Revolving lantern", + "marketCenter": "Markets", + "optional": "Favorite", + "latestPrice": "Price", + "upAndDown": "Change", + "heigh": "High", + "low": "Low", + "vol": "Volumn", + "coinType": "Pair", + "more": "More>>", + "multiPlatform": "Multi-platform download", + "atTime": "Anytime, Anywhere", + "multiTerminal": "Multi-platform terminal trading", + "cover": "cover", + "multiTerminal1": "Multiple platforms", + "support": "Support full business functions", + "down": "Download", + "news": "News Center", + "detail": "View More", + "quickly": "Quick Start", + "major": "We provide majors for investors", + "safe": "Safe Transaction Service", + "login": "Login", + "reg": "Register", + "trading": "To trade", + "add": "Added successfully", + "cancel": "Cancel successful", + "features": "Our Features", + "partners": "Investors & Partners", + "perpetual_title": "Forex Perpetual Contracts", + "perpetual_cont": "World's first Forex Perpetual Contracts settled in stablecoins with up to 100x leverage. The AMATAK Forex Perpetual Contract is a fast and cost-effective option to trade forex while leveraging digital currency. ", + "stablecoin_title": "World's First Stablecoin Trading Center", + "stablecoin_cont": "AMATAK houses a strong Stablecoin eco-system. A complete infrastructure including Stablecoin trading, payment, remittance. Be part of the next global hub for high-quality Stablecoins. ", + "security_title": "Impeccable Security", + "security_cont": "AMATAK’s digital currency custody utilizes Ledger’s institutional vault system which is covered by ledger's insurance for up to 150 million USD. AMATAK also leverages multi-signature cold wallet technology and more than 98% of the assets will be stored in the cold wallet. ", + "service_title": "24/7 Multi-Language Support", + "service_cont": "Our customer support staff are available 24/7 across the globe. Talk to us through live chat or email us at support@AMATAK.com", + "analy_title": "Advanced Analytics", + "analy_cont": "Traders can use various charting tools and indicators with our robust analytic functions on the trading page.", + "liquidity_title": "Deep Liquidity", + "liquidity_cont": "Get access to high liquidity across AMATAK's trading platforms 24/7. ", + "technology_title": "Proprietary Technology", + "technology_cont": "AMATAK’s time-tested technology is developed with industry expertise and ensures optimized functionalities.", + "download": "Download AMATAK APP", + "easy": "Open palm trading anytime, anywhere", + "skan": "Scan code now to download", + "core_advantages": "My core strength is data", + "about_us": "About Us" + }, + "option": { + "waitFor": "Waiting for delivery", + "history": "History Delivery", + "orderNum": "Order Number", + "option": "Options", + "buyTime": "Buy Time", + "buyAmount": "Buy Amount", + "buyType": "Buy Type", + "yield": "Yield", + "state": "State", + "deliverytime": "Delivery Time", + "countDown": "Countdown to delivery", + "buyingUp": "Buy Up", + "buyDwon": "Buy Dwon", + "buyEven": "Buy Even", + "result": "Delivery result", + "settlementQuantity": "Settlement Quantity", + "up": "up", + "down": "fall", + "flat": "flat", + "buyOption": "Buy Option", + "deliveryRecord": "Delivery Record", + "current": "Current", + "next": "Next issue", + "enterNum": "Please enter the number", + "balance": "Balance", + "expectedRevenue": "Estimated Revenue", + "seeMore": "See more", + "beBearish": "Look at the empty", + "time": "Time", + "zf": "Increase", + "bullish": "bullish", + "lookAtPing": "look at Ping", + "bearish": "Bearish", + "amount": "Amount", + "coinType": "Currency", + "odds": "Odds", + "buySuccess": "Buy is successful" + }, + "order": { + "noData": "No Data", + "ifCancel": "confirm to cancel", + "cancelSuccess": "cancel", + "marketPrice": "Market", + "fixedPrice": "Limit", + "sell": "Sell", + "buy": "Buy", + "exchangeRecord": "Trades", + "see": "View", + "opt": "Action", + "status": "Status", + "time": "Time", + "tradingPair": "Pair", + "direction": "Direction", + "type": "Type", + "averagePrice": "Average Price", + "price": "Price", + "matched": "Filled", + "totalAmountEntrusted": "Amount", + "total": "Total", + "toMatch": "Outstanding", + "operation": "Action", + "reset": "Reset", + "search": "Search", + "to": "To", + "startTime": "start time", + "endTime": "end time", + "select": "Select", + "entrustType": "Entrust Type", + "spotConsignment": "Exchange Order", + "surrentCommission": "Open Orders", + "commissionRecord": "Orders History", + "optionTransaction": "Option Trades", + "orderNum": "Order id", + "timeSharing": "time sharing", + "yield": "yield", + "buyNum": "Amount", + "upAndDown": "Change Rate", + "settlementQuantity": "Settlement Amount", + "transactionPrice": "Transaction Price", + "tradingVolume": "Volume", + "aTurnover": "Turnover", + "serviceCharge": "Fee", + "cancel": "Cancel", + "buyTime": "Time", + "buyUp": "Rise", + "buyDown": "Fall", + "buyLevel": "equal" + }, + "profile": { + "tips": "Withdrawal quota. For more withdrawal quota, please complete advanced certification.", + "SelectAreaCode": "Select area code", + "driverLicense": "Driver's license", + "country": "Country", + "country1": "Please enter your country", + "realName": "Real Name Authentication", + "primaryCertification": "primary certification", + "advancedCertification1": "Advanced Certification Application", + "advancedCertification2": "Submit advanced certification application", + "toExamine": "audit", + "fullName": "Name", + "legal": "Legal", + "pleaseEnterName": "Please enter your name", + "dateOfBirth": "Date of Birth", + "selectDate": "Select Date", + "documentType": "Certificate Type", + "pelaseSelect": "Please select", + "certificateNumber": "Certificate Number", + "endterIDNumber": "Please enter the ID number", + "addressInfo": "Address Information", + "residentialAddress": "residential address", + "residentialAddress1": "Please enter residential address", + "ciy": "City", + "incity": "Please enter your city", + "postalCode": "Postal Code", + "thePostcode": "Please enter the postal code", + "additionalInformation": "Additional Information", + "optional": "optional", + "contactInformation": "Contact Information", + "phoneNumber": "Phone Number", + "enterPhoneNumber": "Please enter your phone number", + "clickUpload1": "When you click to upload a file and submit identity verification, it means that you have read and agreed to our terms of service and privacy agreement.", + "pelaseDownload": "Please select an unexpired one from the following files", + "passport": "Passport", + "drivingLicense": "Driving License", + "iD": "ID card", + "upload": "To upload", + "explain": "Explain", + "unexpired": "Unexpired documents can be pictures or scans.", + "pleaseConfirm": "Please make sure that all the details on the certificates photo are clear and not covered up.", + "fileFormat": "File Format", + "maximumFileSize": "Maximum File Size", + "positive": "Certificate front", + "theOtherSide": "The back of the document", + "hold": "Handheld ID", + "dragHere": "Drag here, or", + "clickUpload": "Click to upload", + "uploadPhoto": "Please upload the front photo of your ID", + "reversePhoto": "Please upload the reverse photo of your ID", + "uploadIDCard": "Please upload a hand-held ID photo", + "nextStep": "Next", + "inSubmit": "Your verification application has been submitted! We will notify you as soon as the result is obtained", + "gotIt": "Got it", + "congratulations": "Congratulations", + "back": "Return", + "resetApply": "Whether to reapply.", + "recertification": "Recertification", + "userInfo": "Account Information", + "verState": "Certification Status", + "max": "Max", + "limitH": "Hourly withdrawal limit.", + "verLeave": "Verification Level", + "exceed": "Exceed", + "contactUs": "Contact Us", + "inviteFriends": "Invite Friends", + "dividends": "Invite friends to use {name} and get {num} of the friends' future transaction fees as dividends.", + "sendInvitation": "Send Invitation", + "resetPassword": "Reset Password", + "forLoginAccount": "For login account.", + "clickReset": "Click to reset", + "registrationDecord": "Login Record", + "recording": "Used to display detailed historical login records", + "recordingDEtail": "Detailed Record", + "invitationReward": "Invitation Reward", + "inviteUse": "Invite friends to use", + "futureCommission": "Get {num} from your friend's future transaction fees as a dividend reward", + "joinThePlan": "Join {name} user invitation dividend plan", + "checkMyDividend": "Check My Dividend", + "step1": "First Step", + "shareLink": "Share Link", + "step2": "The second step", + "shareFriend": "Invite Friends", + "step3": "The third step", + "instantDividend": "Instantiate Dividend", + "invitationInformation": "Invitation Information", + "invitationLink": "Invitation Link", + "invitationCode": "Invitation Code", + "registeredUser": "Registered User", + "accountNumber": "Account", + "registrationTime": "Registration Time", + "activityTerms": "Activity Terms", + "handlingFeeDividend": "Handling Fee Dividend", + "equalInvitee": "Equal to the invited person", + "fee": "The transaction fee", + "afterThat": "will be after the invitee's transaction", + "follow": "Transfer to the inviter's account within minutes.", + "limit": "The event follows the following start and end time, and is limited to valid accounts after the event start time and before the event end time", + "activityStartTime": "Activity start time", + "Y": "year", + "M": "Month", + "D": "Day", + "endTime": "Activity end time", + "proceed": "Continue to proceed", + "atAnyTime": "Reserve the right to modify, suspend, or terminate the {name} user invitation program at any time without prior notice", + "reservedRights": "Reserve the right not to issue bonuses for duplicate accounts or fake accounts", + "canDecide": "You can accept or reject specific users who are introduced or invited to the {name} platform{link} at full discretion", + "bill": "Access Record", + "date": "Date", + "address": "Location", + "equipment": "Equipment", + "preliminary": "Preliminary certification successful", + "clickToVerify": "Click to verify", + "clickToVerify1": "Completed", + "tips1": "Primary Certification: To withdraw cash, you need to complete advanced certification.", + "tips2": "Advanced Certification: Up to 500k USDT 24-hour withdrawal limit. For more withdrawal amount, please contact customer service" + }, + "setting": { + "smsVer": "SMS Verification", + "enterCode": "Please enter the verification code", + "emailVer": "Email Verification", + "enterEmailVer": "Enter the verification code", + "ver": "Verify", + "enterNameCode": "Please enter {name} verification code", + "openSuccess": "Opened successfully", + "closeSuccess": "Closed successfully", + "email": "Email", + "enterEmail": "Please enter your email", + "emailVerCode": "Email Verification Code", + "enterSmsCode": "Please enter SMS verification code", + "bind": "Bind", + "unbind": "Unbind", + "bindSuccess": "Binding successful", + "unbindSuccess": "Unbind Successful", + "scanQrCode": "Please scan the QR code", + "howToOpen": "Learn how to turn on {name} secondary verification", + "read": "Click here to read the installation information", + "verKey": "Verification Key", + "safeSetting": "Safe Settings", + "loginPassword": "Login Password", + "resLoginPassword": "Reset Login Password", + "transactionPassword": "Transaction Password", + "usedFor": "Used to submit contracts and spot orders", + "notOpen": "Not Open", + "modifyPassword": "Modify Password", + "setPassword": "Set Password", + "verCode": "Verification Code", + "forLogin": "For login, withdrawal and security setting changes", + "alLast": "Open at least one verification method", + "close": "Close", + "open": "Open", + "phone": "Mobile Number", + "area": "Please enter the area code", + "enterPhone": "Please enter your phone number", + "newPassword": "New Password", + "passwordIs": "The transaction password is {num} digits", + "enterNewPassword": "Enter a new password", + "confirmPassword": "Confirm your Password", + "pleaseConfirmPassword": "Confirm password", + "operationSuccess": "Operation Successful", + "combination": "The password requires a combination of letters and numbers", + "changeSuccess": "Modified successfully" + }, + "purchase": { + "sendPrice": "Issue price", + "subscriptionCurrency": "Application currency", + "expected": "Expected launch time", + "startTime": "Application start time", + "applyForPurchase": "Application end time", + "enterNum": "Enter the Amount", + "all": "All", + "subscribeNow": "Apply Now", + "subscriptionCycle": "Apply cycle", + "projectWarmUp": "Project preheat", + "startSubscription": "Apply start", + "endOfSubscription": "Apply close", + "announceResults": "Results release", + "projectCetails": "Project details", + "useOrNot": "Using?", + "subscribe": "Apply", + "prompt": "Tips", + "subscribeSuccess": "Apply Success" + }, + "contract": { + "a0": "Futures Account", + "a1": "Wallets Transfer", + "a2": "Account Equity", + "a3": "Available Funds", + "a4": "position margin", + "a5": "Entrust freeze", + "a6": "Unrealized PNL", + "a7": "Risk Rate", + "a8": "Liq.Price", + "a9": "Symbol", + "b0": "Leverage", + "b1": "Time", + "b2": "Transaction Type", + "b3": "Filled", + "b4": "Amount", + "b5": "Avg.", + "b6": "Price", + "b7": "Margin", + "b8": "Fee", + "b9": "Status", + "c0": "Operation", + "c1": "Cancel Order", + "c2": "Cancel", + "c3": "Whether to cancel the current order", + "c4": "Cancel", + "c5": "OK", + "c6": "Cancelled", + "c7": "Unsold", + "c8": "Partial Transaction", + "c9": "Full deal", + "d0": "Open long", + "d1": "Close Short", + "d2": "Open short", + "d3": "Close Long", + "d4": "Undo successfully", + "d5": "Open", + "d6": "Close", + "d7": "Trigger Price", + "d8": "Price", + "d9": "Market price", + "e0": "Limit price", + "e1": "Size", + "e2": "Leaf", + "e3": "Margin", + "e4": "Multiple positions", + "e5": "Short position holding", + "e6": "bullish", + "e7": "Max", + "e8": "Bearish", + "e9": "Keping", + "f0": "The price", + "f1": "Open Multi", + "f2": "Open empty", + "f3": "Whether to use", + "f4": "Leverage times", + "f5": "Delegation successful", + "f6": "Successfully closed position", + "f7": "Order Book", + "f8": "Trades", + "f9": "All", + "g0": "Buy", + "g1": "Sell", + "g2": "Sum", + "g3": "Last Price", + "g4": "Details", + "g5": "History", + "g6": "Deal time", + "g7": "Position", + "g8": "Hirakura quantity", + "g9": "Entry Price", + "h0": "ROE %", + "h1": "Close the position at market price", + "h2": "Whether to balance at market price", + "h3": "Full Ping", + "h4": "Success", + "h5": "Symbols", + "h6": "Change", + "h7": "High", + "h8": "Low", + "h9": "Vol", + "i0": "Positions", + "i1": "Open Orders", + "i2": "Order History", + "i3": "Side", + "i4": "Open Long", + "i5": "Open short", + "i6": "Only display current", + "i7": "TP", + "i8": "SL", + "i9": "TP/SL", + "j0": "Realized PNL", + "j1": "Latest Transaction Price", + "j2": "Average opening price", + "j3": "Take Profit Trigger Price", + "j4": "Stop Loss Trigger Price", + "j5": "Market price to", + "j6": "The take profit order will be triggered when the transaction is completed, and the profit and loss is expected after the transaction", + "j7": "A stop loss order will be triggered at the time, and profit and loss is expected after the transaction", + "j8": "Open perpetual contract", + "j9": "Opened successfully", + "k0": "Set up successfully", + "k1": "Settlement profit and loss", + "k2": "Close All Positions", + "k3": "Reverse", + "k4": "Whether one-key full leveling", + "k5": "Whether one key is reversed", + "k6": "Completely successful", + "k7": "Reverse success", + "k8": "Please log in first to apply", + "k9": "Please enter the subscription code", + "l1": "Proportion of increase", + "l2": "Margin", + "l4": "Current valuation" + }, + "otc": { + "a0": "Please select transaction type", + "a1": "Buy", + "a2": "Sell", + "a3": "Trading currency", + "a4": "Please select currency", + "a5": "Quantity", + "a6": "Please enter the quantity", + "a7": "Price", + "a8": "Please enter the price", + "a9": "The lowest single transaction", + "b0": "The highest single transaction", + "b1": "Alipay", + "b2": "WeChat", + "b3": "Bank Card", + "b4": "Remarks", + "b5": "Please enter a note", + "b6": "Posted successfully", + "b7": "Buy", + "b8": "Sale", + "b9": "Revoked", + "c0": "In transaction", + "c1": "Completed", + "c2": "Advertisement Number", + "c3": "Status", + "c4": "Total Price", + "c5": "Unit Price", + "c6": "Remaining", + "c7": "Release time", + "c8": "Payment Method", + "c9": "Operation", + "d0": "Remove", + "d1": "Whether to remove the current ad", + "d2": "Warm Reminder", + "d3": "Undo successfully", + "d4": "Order Details", + "d5": "Order Number", + "d6": "Payment", + "d7": "Name", + "d8": "Account", + "d9": "Account Bank", + "e0": "Account Opening Branch", + "e1": "Remaining time", + "e2": "分", + "e3": "Second", + "e4": "Payment Voucher", + "e5": "Upload the QR code for payment", + "e6": "Please upload payment voucher", + "e7": "Waiting for buyer to upload", + "e8": "Cancel order", + "e9": "Confirm payment", + "f0": "Unpaid account", + "f1": "Confirm Payment", + "f2": "Whether to cancel the current order", + "f3": "OK", + "f4": "Cancel", + "f5": "Order has been cancelled", + "f6": "Confirm the current payment", + "f7": "Operation successful", + "f8": "After confirming the payment, the listed assets will be automatically transferred", + "f9": "After confirming that the payment has not been received, this order will automatically enter the appeal", + "g0": "Post an ad", + "g1": "User", + "g2": "Total", + "g3": "Limited", + "g4": "Payment Method", + "g5": "Total", + "g6": "Order successfully placed", + "g7": "Sell Order", + "g8": "Purchase Order", + "g9": "Advertising Purchase Order", + "h0": "Advertising Sale Order", + "h1": "All", + "h2": "Closed", + "h3": "Pending Payment", + "h4": "To be confirmed", + "h5": "Appealing", + "h6": "Transaction Quantity", + "h7": "Trade Object", + "h8": "Time", + "h9": "Details", + "i0": "Please enter the account number", + "i1": "Please enter your name", + "i2": "Payment QR Code", + "i3": "Save", + "i4": "Bank Name", + "i5": "Please enter the bank name", + "i6": "Please enter the account opening branch", + "i7": "Bank Card Number", + "i8": "Please enter the bank card number", + "i9": "Edited successfully", + "j0": "Added successfully", + "j1": "OTC account", + "j2": "Assets", + "j3": "Available balance", + "j4": "Freeze balance", + "j5": "OTC", + "j6": "My Ads", + "j7": "My Order", + "j8": "Advertisement", + "j9": "One click purchase", + "k0": "One click sale", + "k1": "Purchase amount", + "k2": "Purchase quantity", + "k3": "Sale amount", + "k4": "Quantity sold", + "k5": "Please input the purchase amount", + "k6": "Please input purchase quantity", + "k7": "Please enter the selling amount", + "k8": "Please enter the quantity for sale", + "k9": "Buy by quantity", + "l0": "Notes on legal currency transaction", + "l1": "Minimum transaction volume", + "l2": "Confirm purchase", + "l3": "Confirmation of sale", + "l4": "Sorry, your credit is running low", + "l5": "Order time ", + "l6": "Please choose the payment method", + "l7": "payee", + "l8": "Abnormal collection", + "l9": "Please enter the transaction password", + "m0": "Paid", + "m1": "Approved", + "m2": "Audit failed", + "m3": "End of order", + "m4": "Order cancellation" + }, + "addinfo": { + "MarketTrend": "MarketTrend", + "HourlyCurrencyUpdates": " hour Market trend", + "TopEncryptionRiskManagement": "TOP ENCRYPTION RISK MANAGEMENT", + "EscortYourPropertySafety": "ESCORT YOUR PROPERTY SAFETY", + "BuyCoins": "BuyCoins", + "ProvidedByTheExperimentalCenter": "Courtesy of Fire phoenix Experiment Center", + "StartCurrencyTradingNow": "Start currency trading now", + "ScanTheQRCodeBelowToDownload": "Scan the QR code below to download", + "AndroidScanCodeDownload": "Android scan code", + "IOSScanCodeDownload": "IOS scan code", + "UseNow": "USE NOW" + }, + "cxiNewText": { + "a0": "Top 10", + "a1": "5 million+", + "a2": "< 0.10%", + "a3": "200+", + "a4": "Global Ranking", + "a5": "Users trust us", + "a6": "Ultra-Low Fees", + "a7": "Countries", + "a21": "Earn money now", + "a22": "Create a Personal Cryptocurrency Portfolio", + "a23": "Buy, trade and hold 100+ cryptocurrencies", + "a24": "Top up your account", + "a25": "Sign up by email", + "a38": "Start trading anytime, anywhere.", + "a39": "Start trading safely and conveniently at any time through our APP and webpage", + "a40": "Scan the QR code to download the APP", + "a41": "Trustworthy cryptocurrency trading platform", + "a42": "We are committed to ensuring the safety of our users through strict protocols and industry-leading technological measures", + "a43": "User security asset funds", + "a44": "We store 10% of all transaction fees in safe asset funds to provide partial protection for user funds.", + "a45": "Personalized Access Control", + "a46": "Personalized access control restricts the devices and addresses that access personal accounts, so that users have no worries.", + "a47": "Advanced Data Encryption", + "a48": "Personal transaction data is secured through end-to-end encryption, and access to personal information is restricted to the individual.", + "a57": "Click to go", + "a71": "Beginner's Guide ", + "a72": "Start digital currency trading learning immediately ", + "a77": "How to buy digital currency ", + "a78": "How to sell digital currency ", + "a79": "How to Trade Digital Currencies", + "a80": "Marketplace", + "a81": "24 hours market trend", + "a82": "Add cryptocurrency funds to your wallet and start trading now" + }, + "homeNewText": { + "aa1": "Cryptocurrency Gate", + "aa2": "Safe, fast and easy trade on over 100 cryptocurrencies", + "aa3": "Register via email", + "aa4": "Start trading now", + "aa5": "Market trend", + "aa6": "Digital Asset Quote Express", + "aa7": "Currency", + "bb1": "Latest price (USD)", + "bb2": "24h increase", + "bb3": "24h trading volume", + "bb4": "Cryptocurrency exchange for everyone", + "bb5": "Start trading here and experience a better cryptocurrency journey", + "bb6": "Personal", + "bb7": "A cryptocurrency exchange for everyone. The most trustworthy leading trading platform with a wide range of currencies", + "cc1": "Business", + "cc2": "Built for businesses and institutions. Providing crypto solutions to institutional investors and businesses", + "cc3": "Developer", + "cc4": "Built for developers, for developers to build the tools and APIs of the future of web3", + "cc6": "Scan QR code", + "cc7": "Download Android/IOS App", + "dd1": "Safe and stable with zero accidents", + "dd2": "Multiple security strategies and 100% reserve guarantee ensure that no security incidents have occurred since its establishment.", + "dd3": "Trade crypto assets simply and conveniently", + "dd4": "In CXIsux, the products are easy to understand, the transaction process is convenient, and the one-stop blockchain asset service platform", + "dd5": "Derivatives", + "dd6": "You can trade contracts on 100+ cryptocurrencies with up to 150x leverage and earn high profits", + "ee1": "Multiple terminal support", + "ee2": "Trade digital assets anytime, anywhere", + "ee3": "Supports a wide range of asset types, with all currency information available", + "ee4": "Quickly understand the digital asset trading process", + "ee5": "Start your encryption journey", + "ee6": "Graphical verification", + "hh0": "Share the best trading experience with the world's leading exchanges", + "hh1": "Looking for good trading opportunities", + "hh2": "Safe, fast and easy to trade over 100 cryptocurrencies", + "hh3": "Learn about our products", + "hh4": "Start trading here and experience a better cryptocurrency journey", + "hh5": "Spot trading", + "hh6": "Buy and sell over 100 cryptocurrencies with discounted trading fees", + "hh7": "Contract transaction", + "hh8": "Improve your income through USDT perpetual contract", + "hh9": "Simple and convenient trading of crypto assets", + "hh10": "The products are easy to understand, the transaction process is convenient, and the one-stop blockchain asset service platform", + "hh11": "Fund Management", + "hh12": "Earn high returns through our diverse staking products", + "hh13": "Derivatives", + "hh14": "You can trade 100+ cryptocurrency contracts with leverage up to 150x and earn high profits", + "hh15": "Safe and stable with zero accidents", + "hh16": "Multiple security policy guarantees, 100% reserve guarantee, and no security incidents have occurred since its establishment.", + "hh17": "Why choose BXRCO", + "hh18": "Your Trusted Cryptocurrency Exchange", + "hh19": "Safety", + "hh20": "Since 2020, BXRCO has been running stably and reliably with its self-developed system.", + "hh21": "Service", + "hh22": "You can get instant answers at the service center, or contact us via email 24/7.", + "hh23": "Easy to use", + "hh24": "BXRCO makes it easy to trade cryptocurrencies. Buy coins with one click and never miss the fleeting opportunity to make money.", + "hh25": "Flexible buying and selling", + "hh26": "A variety of cryptocurrencies support transactions, keep up with the trend, so you don't miss any wealth opportunities.", + "hh27": "Trading starts in 1 minute", + "hh28": "Create a BXRCO account for free", + "hh29": "Complete certification", + "hh30": "Perform transaction", + "hh31": "Trade anywhere", + "hh32": "Stay informed with our app and desktop client.", + "hh33": "Scan the code to download now", + "hh34": "Register and start trading!", + "hh35": "Register now", + "hh36": "Register now via email", + "hh37": "Global Ranking", + "hh38": "users trust us", + "hh39": "Ultra-Low Fees", + "hh40": "Countries", + "hh41": "BXRCO, trade anytime, anywhere", + "hh42": "Trade now", + "hh43": "Scan the QR code to download BXRCO APP" + } +} diff --git a/src/i18n/fin.json b/src/i18n/fin.json new file mode 100644 index 0000000..3b11053 --- /dev/null +++ b/src/i18n/fin.json @@ -0,0 +1,1038 @@ +{ + "nav": { + "assets":"varat", + "contract":"Sopimusta koskeva tili", + "transfer":"Varojen siirto", + "excOrders":"Paikallinen komissio", + "contractOrders":"Sopimusten toimeksianto", + "fundHistory":"Talletuksen täyttäminen", + "security":"Tilin turvallisuus", + "invite":"Kutsu ystävät.", + "login":"Kirjaudu sisään ensin", + "tips":"Järjestelmän nopeus", + "set":"Asettakaa ensin asianmukainen hinta.", + "a1":"Hinta ei voi olla tyhjä tai nolla", + "a2":"Määrä ei voi olla tyhjä tai nolla", + "a3":"Määrä ei voi olla pienempi kuin", + "a4":"Ostettujen markkinahintojen kokonaismäärä ei voi olla tyhjä tai nolla", + "a5":"Ostettujen markkinatoimeksiantojen kokonaismäärä ei voi olla pienempi kuin", + "a6":"Myydyn markkinatilauksen määrä ei voi olla tyhjä tai nolla", + "a7":"Myytyjen markkinahintojen määrä ei voi olla pienempi kuin", + "a8":"Keskeytyksen tappion laukaisijahinta ei voi olla tyhjä tai nolla", + "a9":"Lopeta voitto ja lopeta tappio - hintaraja ei voi olla tyhjä tai nolla", + "b1":"Keskeytä voitto ja lopeta tappio - rajatilausmäärä ei voi olla tyhjä tai nolla", + "b2":"Keskeytä voitto ja lopeta tappio -laukaiseva hinta markkinahinto ei voi olla tyhjä tai nolla", + "b3":"Keskeytä voitto ja lopeta tappio --markkinahintaan ostettu kokonaismäärä ei voi olla tyhjä tai nolla", + "b5":"Keskeytä voitto ja lopeta tappio --markkinoiden oston kokonaismäärä ei voi olla pienempi kuin", + "b6":"Keskeytä voitto ja lopeta tappio --markkinahintaan myyty määrä ei voi olla tyhjä tai nolla", + "b7":"Keskeytystappio – markkinahintaan myyty määrä ei voi olla pienempi kuin", + "b8":"Sivu kytketty irti, virkistäytykää tai yrittäkää uudelleen myöhemmin!", + "c1": "osto{amount}Palaset{name}Saatavilla Token{rate}%Répalkkios", + "c2": "Tilaus- ja tilaustoiminta", + "c3":"Liikkeeseen laskeminen yhteensä", + "c4":"Kierre yhteensä", + "c5":"Liikkeeseenlaskun hinta", + "c6":"Liikkeeseenlaskun kellonaika", + "c7":"Valkoisen paperin osoite", + "c8":"Virallinen verkkosivuston osoite", + "c9":"lyhyt esittely" + }, + "common": { + "a3":"Ostosta koskevat tiedot", + "option":"Vaihtoehtojen kauppa", + "exchange":"Valuutta transaktio", + "markets":"noteeraus", + "blogs":"Blogi", + "news":"Teollisuuden tiedot", + "helps":"Apua keskus", + "service":"Palvelu", + "contactUs":"Ota yhteyttä", + "sign_in":"Kirjaudu sisään.", + "sign_up":"rekisteri", + "noRecord":"Ei rekisteriä", + "getCode":"Hanki tarkastuskoodi", + "help1":"Valuutanvaihtosopimuksia koskevat suuntaviivat", + "help2":"Sopimusten erittely", + "optional":"Valinnainen", + "price":"Hinta", + "upAndDown":"Ylös ja alas", + "heigh":"Korkein hinta", + "low":"alin hinta", + "vol":"tilavuus", + "pair":"Sovitaan näin.", + "buy":"osto", + "sell":"Myy", + "buy-in":"osto", + "sell-out":"Myy loppuun", + "open-orders":"Nykyinen delegointi", + "condition-orders":"Ehdollinen toimeksianto", + "history-orders":"Lähetystöjen asiakirjat", + "limit":"kiinteä hinta", + "market":"markkinahinta (markkinahinta)", + "stop-limit":"Lopeta voitto ja lopeta tappio --hintaraja", + "stop-market":"Voitto seis — tappio — markkinahinta", + "limit-type":"Hintojen rajakauppa", + "market-type":"Markkinoiden liiketoimi", + "startTime":"alkamisen aika", + "to":"ja", + "confirmBtn":"vahvistus", + "cancelBtn":"peruuta", + "cancel":"kumoa", + "endTime":"Loppuaika@ info: whatsthis", + "export":"vienti", + "filter":"Suodatin", + "all":"rajoittamaton", + "search":"nouto", + "reset":"Nollaa", + "hideAll":"Piilota kaikki peruutetut delegaatit", + "canceled":"Peruutettu", + "waiting":"Ollaanko yhdessä?", + "triggered":"Laukaistu", + "processing":"Täsmäys", + "completed":"Valmis", + "available_phone":"Syötä oikea matkapuhelimen numero@ info: whatsthis", + "available_email":"Syötä oikea sähköpostiosoite@ info: whatsthis", + "codeSent":"Lähetetty tarkistuskoodi", + "captcha":"Tarkastuskoodin virhe", + "created":"aika", + "order-price":"Komission hinta", + "order-amount":"Sallittu määrä", + "order-total":"Tilauksen kokonaismäärä", + "avg-price":"Keskimääräinen hinta", + "direction":"suunta", + "order-type":"tyyppi", + "executed-amount":"Se on löydetty.", + "executed-total":"Liikevaihto", + "outstanding":"Ollaanko yhdessä?", + "status":"valtio", + "details":"yksityiskohdat", + "action":"toiminta", + "id":"Järjestyksen numero", + "filled-price":"Tapahtuman hinta", + "filled-amount":"Toimien lukumäärä", + "filled-total":"Tapahtuman määrä", + "fee":"Palvelun lataus", + "enterValid":"Syötä voimassa oleva matkapuhelimen numero tai sähköposti", + "enterValidEmail":"Syötä oikea sähköpostiosoite@ info: whatsthis", + "enterValidPhone":"Anna kelvollinen matkapuhelimen numero@ info: whatsthis", + "enterAccount":"Syötä tili", + "enterEmail":"Syötä oikea sähköpostiosoite@ info: whatsthis", + "enterPhone":"Syötä matkapuhelimen numero@ info: whatsthis", + "enterPwd":"Syötä salasana@ info: whatsthis", + "passwordRegular":"Salasanan on koostuttava 8–15-numeroista ja kirjaimista (siinä on oltava sekä numeroita että kirjaimia, ja myös symboleja voidaan käyttää)", + "newPassword":"Anna uusi salasana@ info: whatsthis", + "confirmNewPassword":"Anna uusi salasana varmistusta varten", + "enterGoogleCode":"Syötä Googlen tarkistuskoodi", + "enterEmailCode":"Syötä sähköpostin varmennuskoodi", + "enterSMSCode":"Syötä tekstiviestien tarkistuskoodi", + "enterVerCode":"Syötä todentamiskoodi@ info: whatsthis", + "exportFile":"Napsauta OK viedäksesi tiedoston", + "submit":"Lähetä", + "newzone":"Uusi alue", + "college":"korkeakoulu", + "goTo":"Mene sinne", + "logOut":"Kirjaudu ulos", + "homepage":"kotisivu@ info: whatsthis", + "application":"Valuutta koskeva hakemus", + "purchase":"hakea muutosta", + "accountInformation":"Tilin tiedot", + "myWallet":"Minun lompakkoni.", + "commissionOrder":"Komission määräys", + "securitySetting":"turvan asettaminen", + "wallet":"lompakko", + "allAssets":"Kaikki varat", + "contractaccount":"Sopimusta koskeva tili", + "transferFunds":"Varojen siirto", + "rechargeWithdraw":"Rahat takaisin ja takaisin.", + "order":"järjestys", + "spotConsignment":"Paikallinen komissio", + "optionOrders":"Valinnan järjestys", + "perpetualContract":"Pysyvä sopimus", + "foreignContract":"Valuuttakurssia koskeva sopimus", + "notCertified":"Ei sertifioitu", + "notData":"Tietoja ei ole saatavilla", + "assets":"varat", + "myCommission":"Palaava palvelijani.", + "addressManagement":"Osoitteiden hallinta", + "auth":"Oikea nimi", + "invitationReward":"Kutsutut palkkiot", + "visitHistory":"Pääsyä koskevat tiedot", + "noviceTutorial":"Uusi kurssi", + "tradingStrategy":"Kaupan strategia", + "industryResearch":"Teollisuuden tutkimus", + "blockchainDictionary":"Blockchainen sanakirja", + "mediaCoverage":"median kattavuus", + "selectFile":"Valitse tiedosto", + "upload":"Lataa", + "delete":"poista", + "tooBig":"Tiedoston koko on liian suuri eikä voi ylittää", + "errorType":"Tiedoston tyypin virhe", + "resend":"Palauta", + "sms":"lyhyt viesti", + "email":"postilaatikko", + "sendSuccess":"Tarkastuskoodi lähetetty onnistuneesti", + "retransmission":"uudelleensiirto", + "start-trade":"Aloitetaan digitaalisen valuutan matka", + "login":"Kirjaudu sisään.", + "register":"rekisteri", + "trading":"Kauppaa varten", + "dark":"musta", + "light":"valkoinen", + "notMore":"Ei enää", + "allRead":"Kaikki luetut", + "newMessage":"Uudet uutiset", + "footerTips1":"Markkinoihin tehtävien riskiinvestointien on oltava varovaisia.", + "footerTips2":"Oikeudellinen huomautus: verkkosivustoa ylläpitää {nimi} yritys", + "footerTips3":"Riskivihje: Digital asset trading voi johtaa tappio pääoma, varmista, että ymmärrät täysin riskit", + "footerTips4":"Rajoitetut alueet: ei pysty tarjoamaan palveluja tiettyjen maiden tai alueiden, kuten Israelin ja Kiinan islamilaisen tasavallan, asukkaille" + }, + "exchange": { + "search":"haku", + "pair":"Sovitaan näin.", + "last-price":"Viimeisin hinta", + "change":"Ylös ja alas", + "order-book":"Järjestys", + "price":"Hinta", + "amount":"numero", + "total":"bruttoarvo (bruttoarvo)", + "recent-trades":"Viimeisin sopimus", + "time":"aika", + "order-total":"Komission kokonaisarvo", + "balance":"Käytettävissä oleva saldo", + "enter-price":"Olkaa hyvä ja ilmoittakaa hinta.", + "enter-amount":"Syötä määrä", + "enter-total":"Syötä täydellinen hinta@ info: whatsthis", + "at-best-price":"Lähellä parhaaseen markkinahintaan@ info: whatsthis", + "trigger-price":"Syötä laukaisimen hinta", + "min":"minuutti", + "hour":"tunti", + "day":"päivä", + "week":"viikko", + "month":"kuukausi" + }, + "login": { + "resend":"Palauta", + "sms":"lyhyt viesti", + "sendOK":"Tarkastuskoodi lähetetty onnistuneesti!", + "enterPhoneEmail":"Syötä matkapuhelimen tai sähköpostin numero", + "effectivePhoneEmail":"Syötä voimassa oleva matkapuhelin tai sähköposti", + "enterPasswrod":"Syötä {num} bitti- salasana", + "passwordLength":"Salasanan pituus on {num} bitts. Se sisältää aakkosnumeerisen salasanan", + "safe":"Turvallisuuden todentaminen", + "googleVer":"Syötä {num} Googlen tunnuskoodi matkapuhelinvovellukseesi@ info: whatsthis", + "phoneCode":"Anna numeroon {num} lähetetty numero, joka on lähetetty matkapuhelimen numeroon", + "emailCode":"Syötä sähköpostiisi lähetetty {num} bittitunnus@ info: whatsthis", + "google-code":"Google captcha", + "email-code":"Sähköpostin tarkistuskoodi", + "sms-code":"Kännykän varmennuskoodi", + "new-password":"Uusi salasana", + "confirm-password":"Vahvista salasana", + "forgetPassword":"Unohda salasana", + "rememberMe":"Muista minut", + "noAccountYet":"Ei tiliä vielä", + "goRegister":"rekisteri", + "safety":"Turvallisuuden todentaminen", + "regAccount":"Rekisteröity tilinumero", + "email":"postilaatikko", + "phone":"matkapuhelin (matkapuhelin)", + "pleaseEmail":"Syötä sähköpostiosoite@ info: whatsthis", + "invalidEmail":"Virheellinen sähköpostiosoite", + "enterMobile":"Syötä matkapuhelimen numero@ info: whatsthis", + "invalidPhone":"Virheellinen mobiilin numero", + "enterLengthPassword":"Anna salasana osoitteesta {num1} osoitteeseen {num2} bits pituussuunnassa", + "hasNumEn":"Salasana vaatii {num} kirjainten ja numeroiden yhdistelmän", + "iSee":"Olen samaa mieltä.", + "terms":"Ehdot ja edellytykset", + "reg":"rekisteri", + "enterEmailCode":"Syötä sähköpostiisi lähetetty {num} bittitarkastuskoodi ({sähköposti}", + "accountActivated":"Tilin aktivoimiseksi@ info: whatsthis", + "backOld":"Takaisin edelliseen vaiheeseen@ info: whatsthis", + "verCode":"Tarkastuksen koodi", + "notEmail":"Jos et saa sähköpostiasi, yritä seuraavalla tarkistusoperaatiolla@ info: whatsthis", + "confirmEmail":"Varmista, että antamasi sähköpostiosoite on oikea@ info: whatsthis", + "confing":"Tarkista sähköpostiviestien roskaviestien kansio@ info: whatsthis", + "checkTrashCan":"Varmista, että sähköpostisi on yhteydessä vakaaseen internetiin", + "enterPhone1":"Ole hyvä ja anna matkapuhelimeesi lähetettävä numero@ info: whatsthis", + "enterPhone2":"NAME OF TRANSLATORS TRANSLATORS", + "smsNotReceived":"Jos et saa tekstiviestejä, kokeile seuraavaa tarkastusta", + "phoneCorrect":"Varmista, että tallennettu matkapuhelimen numero ja alueen numero ovat oikeat", + "securePhone":"Varmista, että puhelimesi signaali on vakaa.", + "hasAccount":"On jo olemassa tili", + "toLogin":"Mene sisään", + "securityVerification":"Turvallisuuden todentaminen", + "disagree":"Et ole vielä suostunut ehtoihin.", + "registrationSuccess":"Onnistuneesti rekisteröitynyt, jättäen kirjautumiskirjan väliin", + "referrer":"Viitteet", + "optional":"Valinnainen", + "password":"salasana", + "login":"Kirjaudu sisään.", + "country":"Alueen koodi", + "enter-account":"Syötä tilin numero@ info: whatsthis", + "sign-in":"Kirjaudu sisään.", + "find-password":"Etsi salasana", + "submit":"Lähetä", + "confirmpassword":"Nämä kaksi salasanaa ovat epäjohdonmukaisia " + }, + "application": { + "form":"Hankkeen valuuttasovelluksen muoto", + "sendUser":"Hankkeen järjestäjä", + "sendUserEn":"Englannin kielen nimi", + "sendUserCn":"Kiinan rahayksikön nimi", + "contactPosition":"Yhteyshenkilö ja sijainti", + "phone":"Yhteyshenkilön numero", + "tokenPrice":"markkinahinta (markkinahinta)", + "email":"Yhteys sähköpostiin", + "address":"Hankkeen rekisteröintipaikka", + "mechanism":"Investointihankkeiden organisaatio", + "personal":"henkilökohtainen", + "currencyCode":"Valuutan koodi", + "symbol":"Symboli", + "currencyIdentification":"Valuutan tunnistetiedot", + "format":"Tue {nimi} muoto, tiedosto vähemmän kuin {num}", + "fundraisingDate":"Rahoituksen myöntämispäivä", + "officialWebsite":"Virallinen verkkosivusto", + "whitePaperLinks":"Valkoisen paperin linkki", + "noLink":"Jos linkkiä ei ole, lataa liite artikkelin lopussa@ info: whatsthis", + "total_issue":"Valuutta yhteensä", + "currencyCirculation":"Liikkeeseen lasketut valuutat", + "currencyAllocationRatio":"Valuutan jakosuhde", + "numberOfCurrencyHolders":"Rahan haltijoiden lukumäärä", + "tradingPlatform":"Sähköinen kaupankäyntijärjestelmä", + "privatePlacement":"Yksityinen sijoittaminen", + "publicOfferingPrice":"Julkinen tarjoushinta", + "company":"Liittäkää mukaan valuuttayksikkö", + "coinType":"Valuuttalohkoverkon tyyppi", + "currencyIssueDate":"Valuutan liikkeeseenlaskun päivämäärä", + "blockBrowser":"Blokkaa selain", + "officialAddress":"Virallinen lompakkoosoite", + "contractAddress":"Sopimuksen osoite", + "link":"linkki", + "budget":"Valuuttamääräisen maksun talousarvio", + "unit":"Yksikkö", + "ofTokens":"Markkinatoiminnan merkkien lukumäärä lastauksen jälkeen", + "chineseCurrency":"Valuutan käyttöönotto kiinaksi", + "enCurrency":"Valuutta johdanto englanniksi", + "remarks":"huomautukset", + "uploadWhitePaper":"Lataa valkoinen kirja", + "pleaseUpload":"Ole hyvä ja lataa valkoinen paperi", + "recommendationCode":"Suosituksen tekijän nimi, organisaatio ja suosituskoodi", + "ifSo":"Jos näin on", + "affirmsThat":"Lausunto: Vahvistan täten, että kaikki edellä mainitut tiedot ovat totta, täydellisiä ja tarkkoja.Olen vastuussa väärien tietojen antamisesta taloudellisesti ja laillisesti.", + "iKnow":"Sain sen!", + "reSubmit":"Uudelleen toimitettava", + "pleaseConfirm":"Vahvistakaa, että edellä mainitut tiedot ovat totta.", + "pleaseEnter":"Syötä, ole hyvä.", + "upLoadSuccess":"Lähetys onnistui " + }, + "wallet": { + "inside":"Sisäisten varojen siirto", + "from":"mistä", + "history":"Näytä historia", + "balance":"tase", + "transferQuantity":"Siirron määrä", + "capitalAccount":"Oma pääoma", + "contract":"sopimus", + "financial":"Taloudellinen tili", + "leverage":"Tasoitettu tili", + "successful":"Siirto onnistui", + "confirm":"Vahvista siirto", + "pleaseSelect":"Valitse valuutta", + "to":"ja", + "assets":"varat", + "strokes":"Syötä siirtomäärä@ info: whatsthis", + "addressManagement1":"Osoitteiden hallinta", + "addAddress":"Lisää osoite", + "filter":"Suodatin", + "search":"haku", + "selectActiveArea":"Valitse aktiivinen alue@ info: whatsthis", + "areaOne":"Alue yksi", + "areaTwo":"Alue 2", + "addressAssets":"Osoitteiden luettelo", + "addressNum":"Osoitteiden lukumäärä", + "fee1":"Palvelun lataus", + "creationTime":"Luomisen aika", + "detailAddress":"Yksityiskohtainen osoite", + "remarks1":"Huomautukset", + "operating":"toiminta", + "complete":"täydellinen", + "copy":"Kopio", + "editAddress":"Muokkaa osoitetta", + "deleteAddress":"Poista osoite", + "next":"edellinen sivu", + "pre":"Seuraava sivu", + "add":"Lisää lisää", + "edit":"editointi", + "address":"Osoite", + "selectAssets":"Valitse omaisuuserät", + "drawAddress":"Peruuttamisen osoite", + "addressRemarks":"Huomautukset tähän osoitteeseen", + "remarksDelete":"OK poistaa tämä osoite", + "optionSuccess":"Operaatio onnistui", + "allAssets":"Kaikkien omaisuuserien arvo", + "showNum":"Näytä numerot", + "contractAccount":"Sopimusta koskeva tili", + "marginAccount":"Tasoitettu tili", + "financialAccount":"Taloudellinen tili", + "spotAccount":"Paikallinen tili", + "hide":"piilottaa", + "balanceAssets":"Taseen loppusumma", + "searchCurrency":"Etsi valuutta", + "addressManagement":"Peruuttamisen osoite", + "totalAssets":"saamiset yhteensä", + "availableBalance":"Käytettävissä oleva saldo", + "fee":"Jäädytetty saldo", + "valuation":"Arvostus", + "recharge":"Lataus", + "withdrawal":"Rahan nosto", + "transaction":"tapahtuma", + "rechargeAddress":"Latauksen osoite", + "rechargeQuantity":"Purkamisen määrä", + "enterQuantity":"Syötä määrä", + "rechargeInstructions":"Latauksen ohjeet", + "automaticallyCredited":"Tämä osoite on viimeisin lataussivu, ja se tallennetaan automaattisesti, kun järjestelmä vastaanottaa latauksen", + "tran":"Siirto on vahvistettava koko ketjuverkon kautta. Kun saavut {num} verkon vahvistumiseen, sinun {name} talletetaan automaattisesti tilille.", + "only":"Lähetä vain {name} tähän osoitteeseen, ja muiden digitaalisten valuuttojen lähettäminen tähän osoitteeseen aiheuttaa pysyvän tappion", + "low":"vähimmäismäärä", + "addressList":"Osoitteiden luettelo", + "enterDrawAddress":"Syötä se osoite, johon valuutasta luopuminen kuuluu", + "invalidWallet":"Ei kelvollinen lompakkoosoite, kirjoita uudelleen", + "withdrawalsNumber":"Peruuttamisen määrä", + "enterDrawNum":"Merkitkää nostorahan määrä, jos haluatte.", + "withdrawalInstructions":"Merkinnät valuutan käytöstä poistamisesta", + "enterAddress":"Tarkista huolellisesti ja anna lompakkoon oikea osoite.", + "notSend":"Tallettamattoman digitaalisen valuutan lähettäminen lompakkoosoitteeseen voi aiheuttaa pysyvää tappiota", + "deductionFee":"Valuuttakurssin käytöstä poistamisesta perittävä käsittelymaksu on vähennettävä markkinoilta poistamisen määrästä, joka on", + "submitSuccess":"Toimitus onnistui, tilintarkastus käynnissä", + "operationComplete":"Valuutan keruutoiminto on valmis ja odottaa hyväksyntää", + "rechargeRecord":"Latauksen tietue", + "withdrawalRecord":"Peruuttamista koskevat tiedot", + "assetsName":"Syötä omaisuuserän nimi@ info: whatsthis", + "selectStatus":"Valitse tila", + "startTime":"Alustava päivämäärä", + "entTIme":"Loppupäivä@ info: whatsthis", + "date":"päivämäärä", + "hash":"Hashi", + "num":"numero", + "progress":"edistymisen nopeus", + "status":"valtio", + "error":"epäonnistuu", + "success":"menestys", + "underReview":"Tarkasteltavana oleva", + "handlingFee1":"Palvelun lataus", + "processing":"Tarkasteltavana oleva", + "transfer":"Varojen siirto", + "transferDescription":"Varojen siirto", + "handlingFee":"Huomatkaa, että sisäisten varojen siirto tapahtuu automaattisesti ja että siitä ei peritä maksuja.", + "onlyForeignExchange":"Vain {nimi} voidaan siirtää valuutanvaihdon sopimustilillesi", + "onlySustainable":"Vain {nimi} voidaan siirtää ikuiseen sopimustilillesi", + "inCase1":"Jos haluat käydä kauppaa valuutanvaihtosopimuksilla, sinun on siirrettävä {nimi} valuutanvaihtosopimuksen tilille marginaalina", + "inCase2":"Jos haluat vaihtaa ikuisen sopimuksen, sinun on siirrettävä {nimi} ikuiselle sopimustilille marginaalina", + "transferRecord":"Siirtoa koskeva tietue", + "allTransfer":"Kaikkien omaisuuserien luovutusta koskeva kirjanpito", + "direction":"suunta", + "all":"koko", + "dateTime":"aika", + "UserWallet":"Omaisuuserän tili", + "ContractAccount":"Sopimusta koskeva tili", + "LeverageAccount":"Tasoitettu tili", + "FinancialAccount":"Taloudellinen tili", + "contractFlow":"Sopimusten kulku", + "info":"yksityiskohdat", + "money":"rahan määrä " + }, + "contact": { + "contact":"Ota yhteyttä", + "help":"Jos tarvitset apua, ota yhteyttä", + "fullName":"koko nimi", + "enterFullName":"Anna täydellinen nimi", + "email":"postilaatikko", + "enterEmail":"Syötä sähköpostiosoite@ info: whatsthis", + "consultingService":"Projektin konsultointi", + "pleseSelect":"Ole hyvä ja valitse", + "info":"tiedot", + "enterInfo":"Syötä tiedot@ info: whatsthis", + "contactInformation":"Yhteystiedot@ info: whatsthis", + "routineConsultation":"Tavanomainen kuuleminen", + "customerService":"Asiakkaiden palvelut", + "mediaCooperation":"Tiedotusvälineiden yhteistyö", + "submit":"Lähetä " + }, + "college": { + "college":"korkeakoulu", + "article":"Blogi", + "tutorialDetails":"Opetuksen yksityiskohdat", + "howToBuyBitcoin":"Miten ostaa bitcoin", + "recommendedCourse":"Suositeltu opetusohjelma", + "buy":"Osta bitcoin minuutin päästä.", + "register":"rekisteri", + "visit":"Vieraile {nimi} verkkosivustolla ja rekisteröi {nimi} tilisi", + "realName":"Oikea nimi", + "upload":"Lataa kelvolliset varmenteet henkilön todellisen nimen todentamista varten", + "quickBuy":"Yksi napsautus osto ja maksu", + "inIndex":"Yksi napsautus ostaa rahaa kotisivulla / ostaa rahaa sivulla, ja odottaa, että rahaa vapautuu sen jälkeen, kun maksu", + "tradeNow":"Aion tehdä vaihtokaupan nyt heti.", + "currencyTransaction":"Toinen ymmärrettävä valuuttatapahtuma", + "contractEntryTransaction":"Sopimusta koskeva liiketoimi", + "how":"Miten vaihtaa vaihtoehtoja", + "TradingStrategy":"Kaupan strategia", + "seeMore":"Katso lisää", + "industryResearch":"Teollisuuden tutkimus", + "oneClick":"Yksi klikkaus älykäs tapahtuma", + "inAssets":"Omaisuuserän / valuutan täytesivulla voit painaa yhtä nappia veloittaa valuuttaa, ja sitten voit vaihtaa", + "dictionary":"Blockchainen sanakirja", + "media":"median kattavuus" + }, + "home": { + "newEra":"Maailman johtava digitaalinen johdannaisten pörssi", + "startTrading":"Kaupan aloittaminen", + "walkingLantern":"Kävelevä lyhty", + "marketCenter":"Kaupan markkinat", + "optional":"Valinnainen", + "latestPrice":"Hinta", + "upAndDown":"Ylös ja alas", + "heigh":"Korkein hinta", + "low":"alin hinta", + "vol":"Kaupan määrä", + "coinType":"Sovitaan näin.", + "more":"Katso lisää", + "multiPlatform":"Monialustan lataus", + "atTime":"aina ja aina kun mahdollista", + "multiTerminal":"Monialustainen terminaalitapahtuma", + "cover":"kansi", + "multiTerminal1":"Useita alustoja", + "support":"Täyden palvelun tuki", + "down":"lataaminen", + "news":"Markkinoiden kehitys", + "detail":"Näytä yksityiskohdat", + "quickly":"Aloittakaa nopeasti.", + "major":"Tarjoamme sijoittajille ammattimaisia palveluja.", + "safe":"Turvatut kaupankäyntipalvelut", + "login":"Kirjaudu sisään.", + "reg":"rekisteri", + "trading":"Kauppaa varten", + "add":"Lisää onnistuneesti", + "cancel":"Peruuta onnistuneesti", + "features":"Ydinalan etu", + "partners":"Investointilaitokset &kumppanit", + "perpetual_title":"Valuuttakurssia koskeva ikuinen sopimus", + "perpetual_cont":"Koska maailman ensimmäinen valuuttakurssin ikuinen sopimus, joka on kirjattu vakaalla valuutalla, jolla on korkein vipuvaikutus 100-kertaisesti, AMATAK:n ulkomaanvaluutan ikuinen sopimus on kustannustehokas valinta nopeaan valuuttakauppaan", + "stablecoin_title":"Maailman ensimmäinen vakaa valuutan kauppakeskus", + "stablecoin_cont":"AMATAK on rakentanut vahvan vakaan valuutan ekologisen ympäristön, täydellisen kehyksen, joka koostuu vakaista valuuttakaupoista, maksuista ja rahalähetyksistä, ja siitä on tullut osa maailmanlaajuista korkealaatuista vakaata valuuttakerhoa!", + "security_title":"Moitteeton turvallisuus", + "security_cont":"AMATAK hyväksyy kehittyneimmän tiliholvin suojellakseen lopputulosta, digitaalista valuuttaa. Kirjanpidon holvi tarjoaa jopa Yhdysvaltain $150 miljoonaa vakuutusta kolmannen osapuolen varkaudesta, sisäpiirin salaliitosta ja pääsiementen varastamisesta.Yli 98 prosenttia AMATAK:ssä varastoiduista digitaalisista valuutoista varastoidaan useisiin signaaleihin kylmälompakkoihin, ja käyttöön otetaan korkein standardi markkinoiden riskienhallintamenettely, jolla varmistetaan kaikkien käyttäjien pääomavarmuus.", + "service_title":"24 / 7 monikielinen reaaliaikainen asiakaspalvelu", + "service_cont":"AMATAK: n asiakaspalvelu 24 / 7 on päivystävä milloin tahansa, ja yrittää parhaansa avulla auttaa käyttäjiä reaaliaikaisen keskustelun tai s ähköpostin avullasupport@AMATAK.comOta yhteys asiakaspalveluun.", + "analy_title":"Kehittyneet analyysivälineet", + "analy_cont":"Kauppiaat voivat käyttää erilaisia kaavion työkaluja ja indikaattoreita, jotka perustuvat vakaisiin tietoihin, jotta kaupankäynnin sivulla.", + "liquidity_title":"Erinomainen maksuvalmius", + "liquidity_cont":"24 / 7 on yhteydessä AMATAK:n kaupankäyntijärjestelmän suureen likviditeettiin milloin tahansa.", + "technology_title":"Itsekehittynyt teknologia", + "technology_cont":"AMATAK kaupankäynnin foorumi perustuu todistettu teknologia ja rakennettu huippuasiantuntijoiden alalla, jotta optimoida toimintoja alusta mahdollisimman paljon.", + "download":"Lataa AMATAK- mobiililterminaali", + "easy":"Avoin palmukauppa milloin tahansa, missä tahansa", + "skan":"Skannaa koodi ja lataa nyt", + "core_advantages":"Ydinvoimani on data. " + }, + "option": { + "waitFor":"Odottaa toimitusta", + "history":"Aikaisempi toimitus", + "orderNum":"tilauksen numero", + "option":"vaihtoehto", + "buyTime":"Ajan ostaminen", + "buyAmount":"Hankinnan määrä", + "buyType":"Oston tyyppi", + "yield":"Palautuksen määrä", + "state":"valtio", + "deliverytime":"Toimitusaika@ info: whatsthis", + "countDown":"Lähetyksen lähtölaskenta", + "buyingUp":"Osta pois.", + "buyDwon":"Osta alas", + "buyEven":"Osta tasan.", + "result":"Lopputulos@ info: whatsthis", + "settlementQuantity":"Selvityksen määrä", + "up":"nousu", + "down":"putoaminen", + "flat":"tasainen", + "buyOption":"Osto optio", + "deliveryRecord":"Toimituksen tietue", + "current":"nykyinen", + "next":"Seuraava numero", + "enterNum":"Syötä määrä", + "balance":"tase", + "expectedRevenue":"Odotetut tulot", + "seeMore":"Katso lisää", + "beBearish":"Ole karhunkainen", + "time":"aika", + "zf":"Ylös", + "bullish":"Kiusaaja", + "lookAtPing":"Katso litteä", + "bearish":"Parta", + "amount":"numero", + "coinType":"valuutta", + "odds":"Todennäköisyys", + "buySuccess":"Onnistunut osto " + }, + "order": { + "noData":"Ei tapahtumarekisteriä", + "ifCancel":"Peruuta nykyinen järjestys", + "cancelSuccess":"Peruutettu onnistuneesti", + "marketPrice":"Markkinoiden liiketoimi", + "fixedPrice":"Hintojen rajakauppa", + "sell":"Myy loppuun", + "buy":"osto", + "exchangeRecord":"Tapahtuman tiedot", + "see":"Katso", + "opt":"toiminta", + "status":"valtio", + "time":"aika", + "tradingPair":"Sovitaan näin.", + "direction":"suunta", + "type":"tyyppi", + "averagePrice":"Keskimääräinen hinta", + "price":"Hinta", + "matched":"Se on löydetty.", + "totalAmountEntrusted":"Luotettu kokonaismäärä", + "total":"yhteensä", + "toMatch":"Ei täsmää", + "operation":"toiminta", + "reset":"Nollaa", + "search":"haku", + "to":"ja", + "startTime":"Alustava päivämäärä", + "endTime":"Loppupäivä@ info: whatsthis", + "select":"Ole hyvä ja valitse", + "entrustType":"Edustuston tyyppi", + "spotConsignment":"Paikallinen komissio", + "surrentCommission":"Nykyinen delegointi", + "commissionRecord":"Lähetystöjen asiakirjat", + "optionTransaction":"Vaihtoehtojen kauppa", + "orderNum":"tilauksen numero", + "timeSharing":"Ajan jakaminen", + "yield":"Palautuksen määrä", + "buyNum":"Hankinnan määrä", + "upAndDown":"Ylös ja alas", + "settlementQuantity":"Selvityksen määrä", + "transactionPrice":"Tapahtuman hinta", + "tradingVolume":"Kaupan määrä", + "aTurnover":"a liikevaihto", + "serviceCharge":"Palvelun lataus", + "cancel":"kumoa", + "buyTime":"Oston aika", + "buyUp":"Osta pois.", + "buyDown":"Osta alas", + "buyLevel":"Osta tasan. " + }, + "profile": { + "realName":"Oikea nimi", + "primaryCertification":"Ensisijainen sertifiointi", + "advancedCertification":"Myönnetty pitkälle kehitetty varmennushakemus", + "toExamine":"tutkittavaksi ottaminen", + "fullName":"koko nimi", + "legal":"laillinen", + "pleaseEnterName":"Ole hyvä ja kirjoita nimesi", + "dateOfBirth":"syntymän päivämäärä", + "selectDate":"Valitse päivämäärä", + "documentType":"Asiakirjan tyyppi", + "pelaseSelect":"Ole hyvä ja valitse", + "certificateNumber":"Todistuksen numero", + "endterIDNumber":"Syötä ID- numero", + "addressInfo":"Osoitteen tiedot", + "residentialAddress":"Kotipaikan osoite", + "residentialAddress1":"Olkaa hyvä ja ilmoittakaa asuinosoitteenne.", + "ciy":"Kaupunki", + "incity":"Olkaa hyvä ja astukaa kaupunkiinne.", + "postalCode":"Postin koodi", + "thePostcode":"Ole hyvä ja anna postinumero", + "additionalInformation":"Muut tiedot", + "optional":"Valinnainen", + "contactInformation":"Yhteystiedot@ info: whatsthis", + "phoneNumber":"Puhelinnumero@ info: whatsthis", + "enterPhoneNumber":"Syötä matkapuhelimen numero@ info: whatsthis", + "clickUpload1":"Kun napsautat ladata tiedosto ja toimittaa aitouden, olet lukenut ja hyväksynyt meidän ehdot palvelun ja yksityisyyden suojaa sopimus", + "pelaseDownload":"Ole hyvä ja valitse julkaisematon kopio seuraavista asiakirjoista", + "passport":"passi", + "drivingLicense":"Ajokortti ja ajokortti", + "iD":"ID", + "upload":"Lataa", + "explain":"selittää", + "unexpired":"Tulostamattomat asiakirjat voivat olla kuvia tai skannattuja jäljennöksiä", + "pleaseConfirm":"Varmista, että kaikki kuvan yksityiskohdat ovat selkeitä ja ettei niitä käsitellä", + "fileFormat":"tiedoston muoto", + "maximumFileSize":"Suurin tiedostokoko", + "positive":"Varmennuksen alku", + "theOtherSide":"Todistuksen kääntöpuoli@ info: whatsthis", + "hold":"Todistuksen hallussapito", + "dragHere":"Raahaa tänne, tai", + "clickUpload":"Napsauta latausta", + "uploadPhoto":"Ole hyvä ja lataa etusivu henkilökorttistasi", + "reversePhoto":"Ole hyvä ja lataa kuva todistuksen takaosaan", + "uploadIDCard":"Lataa kädessäsi oleva ID- kuva", + "nextStep":"Seuraava vaihe", + "inSubmit":"Sinun todentamista koskeva hakemuksesi on toimitettu!Ilmoitamme teille heti, kun olemme saaneet tulokset.", + "gotIt":"Sain sen.", + "congratulations":"Onnittelut.", + "back":"paluu", + "resetApply":"Sovelletaan uudelleen", + "recertification":"Purkaminen", + "userInfo":"Tilin tiedot", + "verState":"Validoinnin tila", + "max":"maksimi", + "limitH":"Peruuttamisen määräaika tunnissa", + "verLeave":"Tunnistamisen taso", + "exceed":"ylittää", + "contactUs":"Ota yhteyttä", + "inviteFriends":"Kutsu ystävät.", + "dividends":"Kutsu ystävät käyttämään {name}, ja hanki {num} ystävien tulevista tapahtumamaksuista bonuksena.", + "sendInvitation":"Lähetä kutsu", + "resetPassword":"Palauta salasana", + "forLoginAccount":"Kirjautumistiliä varten", + "clickReset":"Napsauta nollaa", + "registrationDecord":"Kirjaudu tietueeseen", + "recording":"Käytetään historian yksityiskohtaisen lokin näyttämiseen", + "recordingDEtail":"Yksityiskohtainen tietue", + "invitationReward":"Kutsutut palkkiot", + "inviteUse":"Kutsu ystävät käyttämään", + "futureCommission":"Hanki {num} ystäviesi tulevasta tapahtumamaksusta bonuksena", + "joinThePlan":"Liitä {nimi} Käyttäjän kutsu bonus suunnitelma", + "checkMyDividend":"Katso, mitä saan.", + "step1":"Ensimmäinen vaihe", + "shareLink":"Jaa linkkejä", + "step2":"Vaihe kaksi", + "shareFriend":"Kutsu ystävät.", + "step3":"Kolmas vaihe", + "instantDividend":"Nauti osingoista", + "invitationInformation":"Kutsu koskevat tiedot", + "invitationLink":"Kutsu linkki", + "invitationCode":"Kutsujen koodi", + "registeredUser":"Rekisteröidyt käyttäjät", + "accountNumber":"tilin numero", + "registrationTime":"Rekisteröinnin aika", + "activityTerms":"Toimien ilmaisut", + "handlingFeeDividend":"Komission osinko", + "equalInvitee":"Kuin olisi kutsuttu.", + "fee":"Liikenteen käsittelymaksu", + "afterThat":"Kun sinut on kutsuttu kauppaan", + "follow":"Siirto matkustajan tilille muutamassa minuutissa", + "limit":"Toimi seuraa seuraavia alkamis- ja päättymisaikoja, ja se on saatavilla ainoastaan päteville tileille toiminnan alkamisen jälkeen ja ennen toiminnan päättymistä", + "activityStartTime":"Aktiviteetin alkamisaika", + "Y":"vuosi", + "M":"kuukausi", + "D":"päivä", + "endTime":"Aktiviteetin päättymisaika", + "proceed":"Jatka matkaa.", + "atAnyTime":"Meillä on oikeus muuttaa, keskeyttää tai lopettaa {nimi} käyttäjäkutsuohjelma milloin tahansa ilman ennakkoilmoitusta", + "reservedRights":"Varaa oikeus olla maksamatta osinkoja kaksinkertaisen kirjanpidon tai väärän kirjanpidon vuoksi", + "canDecide":"Voit hyväksyä tai hylätä tietyt käyttäjät, jotka on otettu käyttöön tai kutsuttu {nimi} alustalle {linkki}", + "bill":"Pääsyä koskevat tiedot", + "date":"päivämäärä", + "address":"paikka", + "equipment":"laitteet", + "preliminary":"Alustava sertifiointi onnistui", + "clickToVerify":"Napsauta varmistaaksesi " + }, + "setting": { + "smsVer":"tekstiviestien tarkastus", + "enterCode":"Syötä todentamiskoodi@ info: whatsthis", + "emailVer":"Sähköpostin tarkastus", + "enterEmailVer":"Syötä sähköpostin varmennuskoodi", + "ver":"todentaminen", + "enterNameCode":"Syötä {nimi} varmennuskoodi@ info: whatsthis", + "openSuccess":"Avaa onnistuneesti", + "closeSuccess":"Suljettu onnistuneesti", + "email":"postilaatikko", + "enterEmail":"Syötä sähköposti", + "emailVerCode":"Sähköpostin tarkistuskoodi", + "enterSmsCode":"Syötä tekstiviestien tarkistuskoodi", + "bind":"sidonta", + "unbind":"Irtisanominen", + "bindSuccess":"Sidonta onnistui", + "unbindSuccess":"Vapauttaminen onnistui", + "scanQrCode":"Skannaa QR- koodi", + "howToOpen":"Lue, miten {nimi} toissijainen varmennus käynnistetään", + "read":"Napsauta tästä luettaaksesi asennusta koskevat tiedot", + "verKey":"Tarkista avain", + "safeSetting":"turvan asettaminen", + "loginPassword":"Kirjautumisen salasana", + "resLoginPassword":"Palauta salasana", + "transactionPassword":"Tapahtuman koodi", + "usedFor":"Käytetään sopimusten ja tilausten toimittamiseen", + "notOpen":"Ei auki", + "modifyPassword":"Muuta salasanaa", + "setPassword":"Aseta salasana", + "verCode":"Tarkastuksen koodi", + "forLogin":"Käyttö kirjautumissa, valuutan poistossa ja turvaasetusten muuttamisessa", + "alLast":"Salli vähintään yksi tunnistustila", + "close":"Sulje", + "open":"avoin", + "phone":"Puhelinnumero@ info: whatsthis", + "area":"Syötä alue- koodi@ info: whatsthis", + "enterPhone":"Syötä matkapuhelimen numero@ info: whatsthis", + "newPassword":"Uusi salasana", + "passwordIs":"Transaktion salasana on {num} numeroita", + "enterNewPassword":"Anna uusi salasana@ info: whatsthis", + "confirmPassword":"Vahvista salasana", + "pleaseConfirmPassword":"Vahvista salasana@ info: whatsthis", + "operationSuccess":"Operaatio onnistui", + "combination":"Salasanat edellyttävät kirjainten ja numeroiden yhdistelmää", + "changeSuccess":"Muokattu onnistuneesti " + }, + "purchase": { + "sendPrice":"Liikkeeseenlaskun hinta", + "subscriptionCurrency":"Osakkuuden valuutta", + "expected":"Odotettu online-aika", + "startTime":"Tilauksen alkamisajankohta", + "applyForPurchase":"Aika lopettaa.", + "enterNum":"Syötä määrä", + "all":"Kaikki", + "subscribeNow":"Täytä välittömästi", + "subscriptionCycle":"Tilauksen sykli", + "projectWarmUp":"Projektin lämmittäminen", + "startSubscription":"Aloita tilaus", + "endOfSubscription":"Sulje tilaus", + "announceResults":"Tulosten julkaiseminen", + "projectCetails":"Hankkeen yksityiskohdat", + "useOrNot":"Käyttö tai ei", + "subscribe":"hakea muutosta", + "prompt":"Tipit", + "subscribeSuccess":"Onnistunut osto " + }, + "contract": { + "a0":"Sopimusta koskeva tili", + "a1":"Varojen siirto", + "a2":"Tilin oma pääoma", + "a3":"saatavilla", + "a4":"Position marginaali", + "a5":"Komission jäädyttäminen", + "a6":"Selvittämätön voitto ja tappio", + "a7":"Riskien määrä", + "a8":"Arvio vahvasta pariteetista", + "a9":"sopimus", + "b0":"vipu", + "b1":"aika", + "b2":"Tapahtuman tyyppi", + "b3":"Suljettu", + "b4":"Luotettu kokonaismäärä", + "b5":"Keskimääräinen transaktiohinta", + "b6":"Komission hinta", + "b7":"sidos", + "b8":"Palvelun lataus", + "b9":"valtio", + "c0":"toiminta", + "c1":"peruuta tilaus", + "c2":"kumoa", + "c3":"Peruuta nykyinen järjestys", + "c4":"peruuta", + "c5":"määrittää", + "c6":"peruutettu", + "c7":"Levoton", + "c8":"Osittainen tapahtuma", + "c9":"Kaikki kiinni.", + "d0":"Osta kaiduo", + "d1":"Osta tasainen", + "d2":"Avoin myynti", + "d3":"Pingduon myynti", + "d4":"Peruutettu onnistuneesti", + "d5":"avata viljavarasto avun antamiseksi", + "d6":"Sulje sijainti", + "d7":"Käynnistävä hinta", + "d8":"Hinta", + "d9":"markkinahinta (markkinahinta)", + "e0":"kiinteä hinta", + "e1":"numero", + "e2":"Zhang.", + "e3":"Tarvittava marginaali", + "e4":"Moninen sijainti", + "e5":"Lyhyt sijainti", + "e6":"Kiusaaja", + "e7":"Avoin", + "e8":"Parta", + "e9":"Kepping", + "f0":"Sen hinta", + "f1":"Kaiduo.", + "f2":"Avoin ilma", + "f3":"Onko se perustuu", + "f4":"Kaksinkertainen vipuvaikutus", + "f5":"Onnistunut komissio", + "f6":"Onnistunut sulkeminen", + "f7":"Vammaisuus", + "f8":"Reaaliaikaiset tapahtumat", + "f9":"koko", + "g0":"osto", + "g1":"Myy", + "g2":"Kumulatiivinen", + "g3":"Viimeisin hinta", + "g4":"yksityiskohdat", + "g5":"Historia", + "g6":"Tapahtuman aika", + "g7":"Sijainti", + "g8":"Tasa-arvoinen määrä", + "g9":"Keskimääräinen avaamisen hinta", + "h0":"Palautuksen määrä", + "h1":"Markkinoiden sulkeminen", + "h2":"Onko se kaikki edes markkinahintaa vastaan?", + "h3":"Kaikki tasaiset", + "h4":"menestys", + "h5":"Sovitaan näin.", + "h6":"Ylös ja alas", + "h7":"Korkein hinta", + "h8":"alin hinta", + "h9":"tilavuus", + "i0":"Asema hallussa", + "i1":"Nykyinen delegointi", + "i2":"Historiallinen komissio", + "i3":"suunta", + "i4":"monia", + "i5":"tyhjä", + "i6":"Näytä vain nykyinen", + "i7":"Keskeytä voitto", + "i8":"Keskeytä tappio", + "i9":"Lopeta voitto ja lopeta tappio", + "j0":"Voitto ja tappio", + "j1":"Viimeisin kauppahinta", + "j2":"Keskimääräinen avaamisen hinta", + "j3":"Lopeta liipaisinhinnan ansaitseminen", + "j4":"Keskeytä tappion laukaisijahinta", + "j5":"Markkinoiden hinta", + "j6":"Kun liiketoimi on suoritettu, voitto ja tappio arvioidaan", + "j7":"Keskeytystappio Komissio käynnistetään, kun liiketoimi on saatu päätökseen, ja voitto ja tappio odotetaan tapahtuman jälkeen", + "j8":"Avaa ikuinen sopimus", + "j9":"Onnistunut avautuminen", + "k0":"Aseta onnistuneesti", + "k1":"Voittojen ja tappioiden kirjaaminen", + "k2":"Yksi klikkaus tasainen", + "k3":"Yksi napsautus taaksepäin", + "k4":"Onko kaikki litteä?", + "k5":"Yksi avain peruutetaan", + "k6":"Kaikki yhtä hyvin, menestys", + "k7":"Käänteinen menestys", + "k8":"Kirjaudu sisään ensin hakeaksesi ", + "k9":"Syötä merkintäkoodi@ info: whatsthis " + }, + "otc": { + "a0":"Valitse tapahtuman tyyppi", + "a1":"osto", + "a2":"Myy loppuun", + "a3":"Taloustoimen valuutta", + "a4":"Valitse valuutta", + "a5":"numero", + "a6":"Syötä määrä", + "a7":"Hinta", + "a8":"Olkaa hyvä ja ilmoittakaa hinta.", + "a9":"Yksittäinen transaktio vähintään", + "b0":"Korkein yksittäinen tapahtuma", + "b1":"Alipay.", + "b2":"WeChatLanguage", + "b3":"pankin kortti", + "b4":"huomautukset", + "b5":"Syötä kommentit@ info: whatsthis", + "b6":"Julkaistu onnistuneesti", + "b7":"osto", + "b8":"Myy", + "b9":"peruutettu", + "c0":"Kaupan alalla", + "c1":"Valmis", + "c2":"Mainoksen numero", + "c3":"valtio", + "c4":"Hinta yhteensä", + "c5":"Yksikön hinta", + "c6":"ylijäämä", + "c7":"Vapautuksen aika", + "c8":"Maksun menetelmä", + "c9":"toiminta", + "d0":"Pois hyllyltä.", + "d1":"Onko nykyinen mainos poistettu", + "d2":"muistutus", + "d3":"Peruutettu onnistuneesti", + "d4":"Tilausta koskevat tiedot", + "d5":"tilauksen numero", + "d6":"maksu", + "d7":"koko nimi", + "d8":"tilin numero", + "d9":"Talletusten pankki", + "e0":"Tilin avaaminen", + "e1":"Jäljellä oleva aika", + "e2":"haara", + "e3":"toinen", + "e4":"Maksun tosite", + "e5":"Lähetyksen QR- koodi", + "e6":"Ole hyvä ja lataa maksukuponki", + "e7":"Odotetaan, että ostajat lataavat", + "e8":"tilauksen peruuttaminen", + "e9":"vahvistaa maksun", + "f0":"Ei saatu", + "f1":"Vahvista vastaanotto", + "f2":"Peruuta nykyinen järjestys", + "f3":"määrittää", + "f4":"peruuta", + "f5":"Tilaus peruutettu", + "f6":"Vahvista nykyinen maksu", + "f7":"Operaatio onnistui", + "f8":"Keräyksen vahvistamisen jälkeen varat myydään ja siirretään automaattisesti", + "f9":"Kun on vahvistettu, että maksua ei ole saatu, määräys siirtyy automaattisesti valitustilaan", + "g0":"Mainonta", + "g1":"käyttäjä", + "g2":"yhteensä", + "g3":"Raja", + "g4":"Maksun menetelmä", + "g5":"yhteensä", + "g6":"Checkout menestys", + "g7":"Myynnin tilaus", + "g8":"Oston tilaus", + "g9":"Mainoston tilaus", + "h0":"Mainonnan myyntitilaus", + "h1":"koko", + "h2":"Suljettu", + "h3":"Maksettava määrä", + "h4":"Tullaan vahvistamaan", + "h5":"Kantelun kohteena", + "h6":"Toimien lukumäärä", + "h7":"Kaupallinen kumppani", + "h8":"aika", + "h9":"yksityiskohdat", + "i0":"Syötä tilin numero@ info: whatsthis", + "i1":"Ole hyvä ja kirjoita nimesi", + "i2":"Kokoelman QR- koodi", + "i3":"säilyttäminen", + "i4":"Pankin nimi", + "i5":"Syötä pankin nimi", + "i6":"Syötä tilin avaamista koskeva sivukonttori", + "i7":"Pankkikortin numero", + "i8":"Syötä pankin kortin numero", + "i9":"Muokattu onnistuneesti", + "j0":"Lisää onnistuneesti", + "j1":"Oikeudellinen valuuttatili", + "j2":"varat", + "j3":"Käytettävissä oleva saldo", + "j4":"Jäädytetty saldo", + "j5":"Oikeudellinen valuuttakauppa", + "j6":"Minun mainokseni", + "j7":"Minun tilaukseni.", + "j8":"mainonta ", + "j9":"Yksi napsautus osto", + "k0":"Yhden klikkauksen myynti", + "k1":"Hankinnan määrä", + "k2":"Hankinnan määrä", + "k3":"Myynnin määrä", + "k4":"Myyty määrä", + "k5":"Syötä oston määrä", + "k6":"Syötä oston määrä", + "k7":"Syötä myyntimäärä@ info: whatsthis", + "k8":"Syötä kaupan oleva määrä", + "k9":"Ostaminen määrien mukaan", + "l0":"Merkinnät laillisen valuutan transaktiosta", + "l1":"Kaupan vähimmäismäärä", + "l2":"Vahvista osto", + "l3":"Myynnin vahvistaminen", + "l4":"Valitan, luottosi on vähissä.", + "l5":"Tilauksen aika", + "l6":"Valitse maksutapa@ info: whatsthis", + "l7":"maksunsaaja", + "l8":"Epänormaali kokoelma", + "l9":"Syötä transaktion salasana", + "m0":"Maksettu", + "m1":"Hyväksytty", + "m2":"Tarkastus epäonnistui", + "m3":"Järjestyksen loppu", + "m4":"Tilauksen peruutus" + } +} diff --git a/src/i18n/fra.json b/src/i18n/fra.json new file mode 100644 index 0000000..997fd31 --- /dev/null +++ b/src/i18n/fra.json @@ -0,0 +1,1162 @@ +{ + "nav": { + "assets": "Actifs", + "contract": "Comptes contractuels", + "transfer": "Transfert de fonds", + "excOrders": "Mandat au comptant", + "contractOrders": "Mandat contractuel", + "fundHistory": "Dossier de remplissage", + "security": "Sécurité du compte", + "invite": "Inviter des amis", + "login": "Veuillez vous connecter pour l'opération", + "tips": "Conseils du système", + "set": "Veuillez d'abord fixer un prix approprié", + "a1": "Le prix ne peut être nul ou nul", + "a2": "La quantité ne peut être nulle ou nulle", + "a3": "La quantité ne doit pas être inférieure à", + "a4": "Le montant total du bon de marché acheté ne peut être nul ou nul", + "a5": "Le montant total des bons de marché achetés ne peut être inférieur à", + "a6": "La quantité du bon de marché vendu ne peut être vide ou nulle", + "a7": "La quantité de bons de marché vendus ne doit pas être inférieure à", + "a8": "Le prix de déclenchement de l'arrêt des gains et des pertes ne peut être nul ou nul", + "a9": "Limiter les gains et les pertes - la limite de prix ne peut être nulle ou nulle", + "b1": "Arrêter les gains et les pertes - la quantité de la Feuille de limitation des prix ne peut être nulle ou nulle", + "b2": "Stop gain stop loss - le prix de déclenchement du document de marché ne peut être nul ou nul", + "b3": "Arrêt des gains et des pertes - le montant total des achats au prix du marché ne peut être nul ou nul", + "b5": "Arrêt des gains et arrêt des pertes - le montant total des achats au prix du marché ne peut être inférieur à", + "b6": "Arrêt des gains et des pertes - la quantité vendue au prix du marché ne peut être nulle ou nulle", + "b7": "Arrêt du gain et arrêt de la perte - la quantité vendue au prix du marché ne peut être inférieure à", + "b8": "Page déconnectée, s'il vous plaît rafraîchir ou réessayer plus tard!", + "c1": "Achats{amount}Pièce{name}Jetons disponibles{rate}%Récompenses", + "c2": "Activités de souscription", + "c3": "Total des émissions", + "c4": "Total de la circulation", + "c5": "Prix d'émission", + "c6": "Date de publication", + "c7": "Adresse du Livre blanc", + "c8": "Adresse du site officiel", + "c9": "Introduction" + }, + "common": { + "a3": "Ostosta koskevat tiedot", + "option": "Opérations d'options", + "exchange": "Opérations en monnaie", + "markets": "Marché", + "blogs": "Blogs", + "news": "Informations sur l'industrie", + "helps": "Centre d'assistance", + "service": "Services", + "contactUs": "Contactez - nous", + "sign_in": "Connexion", + "sign_up": "Inscription", + "noRecord": "Pas d'enregistrement pour le moment", + "getCode": "Obtenir le Code de vérification", + "help1": "Lignes directrices sur les contrats de change", + "help2": "Cahier des charges", + "optional": "Auto - Sélection", + "price": "Prix", + "upAndDown": "Augmentation ou diminution", + "heigh": "Prix maximum", + "low": "Prix le plus bas", + "vol": "Volume", + "pair": "- Oui.", + "buy": "Acheter", + "sell": "Vendre", + "buy-in": "Acheter", + "sell-out": "Vendre", + "open-orders": "Mandat actuel", + "condition-orders": "Mandat conditionnel", + "history-orders": "Dossiers de délégation", + "limit": "Limite de prix", + "market": "Prix du marché", + "stop-limit": "Limiter les gains et les pertes - limiter les prix", + "stop-market": "Fin du gain et fin de la perte - prix du marché", + "limit-type": "Opérations à prix limité", + "market-type": "Opérations sur le marché", + "startTime": "Heure de début", + "to": "à", + "confirmBtn": "Confirmation", + "cancelBtn": "Annulation", + "cancel": "Annulation", + "endTime": "Fin", + "export": "Exportation", + "filter": "Filtres", + "all": "Pas de limite", + "search": "Recherche", + "reset": "Réinitialiser", + "hideAll": "Masquer tous les délégués annulés", + "canceled": "Annulé", + "waiting": "À apparier", + "triggered": "Déclenché", + "processing": "Appariement", + "completed": "Terminé", + "available_phone": "Veuillez saisir le numéro de téléphone correct", + "available_email": "Veuillez saisir la bonne boîte aux lettres", + "codeSent": "Code de vérification envoyé", + "captcha": "Erreur de code de vérification", + "created": "Temps", + "order-price": "Prix de la Commission", + "order-amount": "Nombre de mandats", + "order-total": "Total des commandes", + "avg-price": "Prix moyen", + "direction": "Orientation", + "order-type": "Type", + "executed-amount": "Apparié", + "executed-total": "Chiffre d[affaires", + "outstanding": "À apparier", + "status": "Statut", + "details": "Détails", + "action": "Fonctionnement", + "id": "No de commande", + "filled-price": "Prix de transaction", + "filled-amount": "Nombre de transactions", + "filled-total": "Montant de la transaction", + "fee": "Frais de manutention", + "enterValid": "Veuillez saisir un numéro de téléphone mobile valide ou un courriel", + "enterValidEmail": "Veuillez saisir l'adresse électronique correcte", + "enterValidPhone": "Veuillez saisir un numéro de téléphone valide", + "enterAccount": "Veuillez saisir un compte", + "enterEmail": "Veuillez saisir l'adresse électronique correcte", + "enterPhone": "Veuillez saisir le numéro de téléphone", + "enterPwd": "Veuillez saisir le mot de passe", + "passwordRegular": "Le mot de passe doit être composé de 8 à 15 chiffres et de lettres (doit contenir à la fois des chiffres et des lettres et peut également utiliser des symboles).", + "newPassword": "Veuillez saisir un nouveau mot de passe", + "confirmNewPassword": "Veuillez saisir un nouveau mot de passe pour confirmation", + "enterGoogleCode": "Veuillez saisir le Code de vérification Google", + "enterEmailCode": "Veuillez saisir le Code de vérification de la boîte aux lettres", + "enterSMSCode": "Veuillez saisir le Code de vérification SMS", + "enterVerCode": "Veuillez saisir le Code de vérification", + "exportFile": "Veuillez cliquer sur OK pour exporter le fichier", + "submit": "Présentation", + "newzone": "Nouvelle zone spéciale", + "college": "Institut", + "goTo": "En route", + "logOut": "Déconnecter", + "homepage": "Page d'accueil", + "application": "Demande de monnaie supérieure", + "purchase": "Abonnement", + "accountInformation": "Informations sur le compte", + "myWallet": "Mon portefeuille.", + "commissionOrder": "Ordre de délégation", + "securitySetting": "Paramètres de sécurité", + "wallet": "Portefeuille", + "allAssets": "Tous les actifs", + "contractaccount": "Comptes contractuels", + "transferFunds": "Transfert de fonds", + "rechargeWithdraw": "Recharge et retrait de pièces", + "order": "Ordre", + "spotConsignment": "Mandat au comptant", + "optionOrders": "Commandes d'options", + "perpetualContract": "Contrat permanent", + "foreignContract": "Contrats de change", + "notCertified": "Non certifié", + "notData": "Aucune donnée disponible", + "assets": "Actifs", + "myCommission": "Mon domestique.", + "addressManagement": "Gestion des adresses", + "auth": "Authentification par nom réel", + "invitationReward": "Prix de l'invitation", + "visitHistory": "Accès aux dossiers", + "noviceTutorial": "Nouveau tutoriel", + "tradingStrategy": "Stratégie commerciale", + "industryResearch": "Recherche industrielle", + "blockchainDictionary": "Dictionnaire blockchain", + "mediaCoverage": "Couverture médiatique", + "selectFile": "Sélectionner un fichier", + "upload": "Télécharger", + "delete": "Supprimer", + "tooBig": "La taille du document est trop grande pour dépasser", + "errorType": "Mauvais type de fichier", + "resend": "Resend", + "sms": "SMS", + "email": "E - mail", + "sendSuccess": "Code de vérification envoyé avec succès", + "retransmission": "Rediffusion", + "start-trade": "Commencez votre voyage en monnaie numérique maintenant", + "login": "Connexion", + "register": "Inscription", + "trading": "Pour échanger", + "dark": "Noir", + "light": "Blanc", + "notMore": "Il n'y en a plus.", + "allRead": "Tous lus", + "newMessage": "Nouveaux messages", + "footerTips1": "Les investissements risqués sur le marché doivent être prudents", + "footerTips2": "Avis juridique: le site est géré par la société {name}.", + "footerTips3": "Conseils sur les risques: les opérations sur actifs numériques peuvent entraîner une perte de capital. Assurez - vous de bien comprendre les risques.", + "footerTips4": "Zones restreintes: les services ne sont pas disponibles pour les résidents de certains pays / régions, par exemple Israël et la République islamique d'Iran" + }, + "exchange": { + "search": "Recherche", + "pair": "- Oui.", + "last-price": "Dernier prix", + "change": "Augmentation ou diminution", + "order-book": "Marché des changes", + "price": "Prix", + "amount": "Nombre", + "total": "Valeur totale", + "recent-trades": "Dernière transaction", + "time": "Temps", + "order-total": "Valeur totale commandée", + "balance": "Solde disponible", + "enter-price": "Veuillez entrer le prix", + "enter-amount": "Veuillez entrer la quantité", + "enter-total": "Veuillez saisir le prix total", + "at-best-price": "Au meilleur prix du marché", + "trigger-price": "Veuillez saisir le prix de déclenchement", + "min": "Minutes", + "hour": "Heures", + "day": "Oh, mon Dieu.", + "week": "Semaine", + "month": "Mois" + }, + "login": { + "resend": "Resend", + "sms": "SMS", + "sendOK": "Code de vérification envoyé avec succès!", + "enterPhoneEmail": "Veuillez saisir le numéro de téléphone ou de courriel", + "effectivePhoneEmail": "Veuillez saisir un téléphone ou une boîte aux lettres valide", + "enterPasswrod": "Veuillez saisir un mot de passe pour la longueur du BIT {num}.", + "passwordLength": "Longueur du mot de passe {num} bits contenant un mot de passe alphanumérique", + "safe": "Vérification de la sécurité", + "googleVer": "Veuillez saisir le Code de vérification Google {num} BIT sur votre application mobile", + "phoneCode": "Veuillez saisir le Code de vérification {num} bit envoyé à votre num éro de téléphone", + "emailCode": "Veuillez saisir le Code de vérification {num} bit envoyé à votre boîte aux lettres", + "google-code": "Code de vérification Google", + "email-code": "Code de vérification de la boîte aux lettres", + "sms-code": "Code de vérification du téléphone mobile", + "new-password": "Nouveau mot de passe", + "confirm-password": "Confirmer le mot de passe", + "forgetPassword": "Mot de passe oublié", + "rememberMe": "Souviens - toi de moi.", + "noAccountYet": "Pas encore de compte", + "goRegister": "Inscription", + "safety": "Vérification de la sécurité", + "regAccount": "Numéro de compte enregistré", + "email": "E - mail", + "phone": "Téléphone portable", + "pleaseEmail": "Veuillez saisir l'adresse électronique", + "invalidEmail": "Adresse électronique non valable", + "enterMobile": "Veuillez saisir le numéro de téléphone", + "invalidPhone": "Numéro de téléphone non valable", + "enterLengthPassword": "Veuillez saisir un mot de passe pour la longueur des bits {num1} à {num2}.", + "hasNumEn": "Le mot de passe nécessite une combinaison de lettres et de chiffres {num} bits", + "iSee": "Je suis d'accord.", + "terms": "Conditions générales", + "reg": "Inscription", + "enterEmailCode": "Veuillez saisir le Code de vérification {num} bit envoyé à votre boîte aux lettres ({email})", + "accountActivated": "Pour activer le compte", + "backOld": "Retour à l'étape précédente", + "verCode": "Code de vérification", + "notEmail": "Si vous n'avez pas reçu de boîte aux lettres, Essayez ce qui suit:", + "confirmEmail": "Assurez - vous d'avoir entré l'adresse électronique correcte", + "confing": "Veuillez vérifier le dossier pourriel de votre boîte aux lettres", + "checkTrashCan": "Assurez - vous que votre boîte aux lettres est connectée à Internet stable", + "enterPhone1": "Veuillez entrer votre numéro de téléphone", + "enterPhone2": "Code de vérification du BIT {num} pour", + "smsNotReceived": "Si vous ne recevez pas de SMS, Essayez ce qui suit:", + "phoneCorrect": "Assurez - vous d'avoir entré le bon numéro de téléphone et de région", + "securePhone": "Assurez - vous que votre téléphone est stable.", + "hasAccount": "Il y a déjà un compte", + "toLogin": "Aller à login", + "securityVerification": "Vérification de la sécurité", + "disagree": "Vous n'avez pas accepté les termes", + "registrationSuccess": "Inscription réussie, page de connexion de saut", + "referrer": "Références", + "c6": "Code d'invitation (obligatoire)", + "c7": "Veuillez remplir le code d'invitation", + "optional": "Facultatif", + "password": "Mot de passe", + "login": "Connexion", + "country": "Indicatif régional", + "enter-account": "Veuillez saisir le numéro de compte", + "sign-in": "Connexion", + "find-password": "Récupérer le mot de passe", + "submit": "Présentation", + "confirmpassword": "Les mots de passe sont incohérents deux fois", + "Remembered": "Vous vous souvenez de votre mot de passe ?" + + }, + "application": { + "form": "Formulaire de demande de monnaie pour le projet", + "sendUser": "Initiateur du projet", + "sendUserEn": "Monnaie nom anglais", + "sendUserCn": "Monnaie nom chinois", + "contactPosition": "Personne de contact et poste", + "phone": "Numéro de contact", + "tokenPrice": "Prix du marché", + "email": "Adresse électronique du contact", + "address": "Lieu d'enregistrement du projet", + "mechanism": "Project Investment Agency", + "personal": "Particuliers", + "currencyCode": "Code de devise", + "symbol": "Symbole", + "currencyIdentification": "Identification de la monnaie", + "format": "Le format {name} est pris en charge et le fichier est inférieur à {num}", + "fundraisingDate": "Date de collecte de fonds", + "officialWebsite": "Site officiel", + "whitePaperLinks": "Liens vers le livre blanc", + "noLink": "S'il n'y a pas de lien, veuillez télécharger la pièce jointe à la fin du document.", + "total_issue": "Émission totale en monnaie", + "currencyCirculation": "Flux de devises", + "currencyAllocationRatio": "Répartition par monnaie", + "numberOfCurrencyHolders": "Nombre de détenteurs de monnaie", + "tradingPlatform": "Plate - forme de négociation en ligne", + "privatePlacement": "Placement privé", + "publicOfferingPrice": "Prix de l'offre publique", + "company": "Veuillez joindre l'unit é monétaire", + "coinType": "Type de réseau de blocs monétaires", + "currencyIssueDate": "Date d'émission de la monnaie", + "blockBrowser": "Navigateur de blocs", + "officialAddress": "Adresse officielle du portefeuille", + "contractAddress": "Adresse contractuelle", + "link": "Liens", + "budget": "Budget des frais d'utilisation de la monnaie", + "unit": "En unités", + "ofTokens": "Nombre de jetons de l'activité de marché après l'introduction de la monnaie", + "chineseCurrency": "Introduction à la monnaie chinoise", + "enCurrency": "Introduction à la monnaie anglaise", + "remarks": "Remarques", + "uploadWhitePaper": "Télécharger le livre blanc", + "pleaseUpload": "Veuillez télécharger le livre blanc", + "recommendationCode": "Nom de la référence institution et Code de référence", + "ifSo": "Si oui", + "affirmsThat": "Déclaration: Je confirme par la présente que toutes les informations ci - dessus sont vraies, complètes et exactes.J'assumerai la responsabilité financière et juridique de fournir de fausses informations", + "iKnow": "Je le vois.", + "reSubmit": "Soumettre à nouveau", + "pleaseConfirm": "Veuillez confirmer que toutes les informations ci - dessus sont vraies.", + "pleaseEnter": "Veuillez entrer", + "upLoadSuccess": "Téléchargement réussi" + }, + "wallet": { + "inside": "Transfert interne de fonds", + "from": "De", + "history": "Voir l'historique", + "balance": "Solde", + "transferQuantity": "Nombre de transferts", + "capitalAccount": "Comptes des fonds", + "contract": "Contrats", + "financial": "Comptes financiers", + "leverage": "Compte de levier", + "successful": "Transfert réussi", + "confirm": "OK.", + "pleaseSelect": "Veuillez sélectionner la devise", + "to": "à", + "assets": "Actifs", + "strokes": "Veuillez saisir la quantité de rotation", + "addressManagement1": "Gestion des adresses", + "addAddress": "Ajouter une adresse", + "filter": "Filtres", + "search": "Recherche", + "selectActiveArea": "Veuillez sélectionner la zone active", + "areaOne": "Région I", + "areaTwo": "Région II", + "addressAssets": "Liste des adresses", + "addressNum": "Nombre d'adresses", + "fee1": "Frais de manutention", + "creationTime": "Temps de création", + "detailAddress": "Adresse détaillée", + "remarks1": "Remarques", + "operating": "Fonctionnement", + "complete": "Terminé.", + "copy": "Copier", + "editAddress": "Modifier l'adresse", + "deleteAddress": "Supprimer l'adresse", + "next": "Page précédente", + "pre": "Page suivante", + "add": "Ajouter", + "edit": "Édition", + "address": "Adresse", + "selectAssets": "Veuillez sélectionner un actif", + "drawAddress": "Adresse de retrait", + "addressRemarks": "Note d'adresse", + "remarksDelete": "OK pour supprimer cette adresse", + "optionSuccess": "Opération réussie", + "allAssets": "Valeur de tous les actifs", + "showNum": "Afficher les chiffres", + "contractAccount": "Comptes contractuels", + "marginAccount": "Compte de levier", + "financialAccount": "Comptes financiers", + "spotAccount": "Comptes au comptant", + "hide": "Cacher", + "balanceAssets": "Solde des actifs", + "searchCurrency": "Monnaie de recherche", + "addressManagement": "Gestion des adresses de retrait de pièces", + "totalAssets": "Total des actifs", + "availableBalance": "Solde disponible", + "fee": "Gel des soldes", + "valuation": "Évaluation", + "recharge": "Recharge", + "withdrawal": "Retrait de pièces", + "transaction": "Commerce", + "rechargeAddress": "Adresse de recharge", + "rechargeQuantity": "Nombre de recharges", + "enterQuantity": "Veuillez entrer la quantité", + "rechargeInstructions": "Description de la recharge", + "automaticallyCredited": "Cette adresse est votre dernière adresse de recharge et sera automatiquement affichée lorsque le système recevra la recharge.", + "tran": "Le transfert doit être confirmé par l'ensemble du réseau blockchain et votre {name} sera automatiquement déposé dans votre compte lorsque les {num} réseaux seront confirmés.", + "only": "N'envoyez que {name} à cette adresse, l'envoi d'autres devises numériques à cette adresse causera une perte permanente.", + "low": "Minimum", + "addressList": "Liste des adresses", + "enterDrawAddress": "Veuillez saisir l'adresse de retrait de monnaie", + "invalidWallet": "N'est pas une adresse de portefeuille valide, veuillez saisir à nouveau", + "withdrawalsNumber": "Nombre de retraits", + "enterDrawNum": "Veuillez saisir la quantité de retrait", + "withdrawalInstructions": "Instructions de retrait", + "enterAddress": "Veuillez vérifier attentivement et saisir l'adresse correcte du portefeuille de retrait de pièces.", + "notSend": "L'envoi d'une monnaie numérique non correspondante à l'adresse du portefeuille entraîne une perte permanente.", + "deductionFee": "Les frais de manutention de la collecte de pièces seront déduits de la quantité de collecte de pièces.", + "submitSuccess": "Soumission réussie, vérification en cours", + "operationComplete": "Retrait de la monnaie terminé, en attente d'approbation", + "rechargeRecord": "Enregistrement de recharge", + "withdrawalRecord": "Enregistrement de la monnaie", + "assetsName": "Veuillez saisir le nom de l'actif", + "selectStatus": "Veuillez sélectionner l'état", + "startTime": "Date de début", + "entTIme": "Date de fin", + "date": "Date", + "hash": "Hashi", + "num": "Nombre", + "progress": "Progrès accomplis", + "status": "Statut", + "error": "Échec", + "success": "Succès", + "underReview": "En cours de vérification", + "handlingFee1": "Frais de manutention", + "processing": "En cours de vérification", + "transfer": "Transfert de fonds", + "transferDescription": "Description du transfert de fonds", + "handlingFee": "Veuillez noter que le transfert interne de fonds est automatique et gratuit.", + "onlyForeignExchange": "Seul {nom} peut être transféré à votre compte de contrat de change", + "onlySustainable": "Seul {nom} peut être transféré à votre compte de contrat permanent", + "inCase1": "Si vous souhaitez échanger des contrats de change, vous devez transférer {nom} au compte des contrats de change en tant que marge.", + "inCase2": "Si vous souhaitez échanger des contrats perpétuels, vous devez transférer {nom} sur le compte des contrats perpétuels comme dépôt de garantie.", + "transferRecord": "Enregistrement des transferts", + "allTransfer": "Transfert de tous les actifs", + "direction": "Orientation", + "all": "Tous", + "dateTime": "Temps", + "UserWallet": "Comptes d'actifs", + "ContractAccount": "Comptes contractuels", + "LeverageAccount": "Compte de levier", + "FinancialAccount": "Comptes financiers", + "contractFlow": "Flux contractuel", + "info": "Détails", + "money": "Montant", + "Authentication": "Authentification" + }, + "contact": { + "contact": "Contactez - nous", + "help": "Si vous avez besoin d'aide, veuillez nous contacter.", + "fullName": "Nom complet", + "enterFullName": "Veuillez saisir le nom complet", + "email": "E - mail", + "enterEmail": "Veuillez saisir l'adresse électronique", + "consultingService": "Projets de consultation", + "pleseSelect": "Veuillez sélectionner", + "info": "Information", + "enterInfo": "Veuillez saisir les informations", + "contactInformation": "Coordonnées", + "routineConsultation": "Consultation régulière", + "customerService": "Service à la clientèle", + "mediaCooperation": "Coopération avec les médias", + "submit": "Présentation" + }, + "college": { + "college": "Institut", + "article": "Blogs", + "tutorialDetails": "Détails du tutoriel", + "howToBuyBitcoin": "Comment acheter bitcoin", + "recommendedCourse": "Tutoriels recommandés", + "buy": "Acheter un bitcoin en 1 minute", + "register": "Inscription", + "visit": "Visitez le site Web {name} et inscrivez - vous à votre compte {name}.", + "realName": "Authentification par nom réel", + "upload": "Télécharger un certificat valide pour l'authentification du vrai nom personnel", + "quickBuy": "Acheter et payer en un clic", + "inIndex": "Cliquez sur la page d'accueil / achat de monnaie pour acheter de la monnaie et attendez que la monnaie soit libérée après le paiement.", + "tradeNow": "On va faire un marché.", + "currencyTransaction": "Deuxième transaction de monnaie", + "contractEntryTransaction": "Opérations d'introduction au contrat", + "how": "Comment effectuer une transaction d'option", + "TradingStrategy": "Stratégie commerciale", + "seeMore": "Voir plus", + "industryResearch": "Recherche industrielle", + "oneClick": "Transaction intelligente à un clic", + "inAssets": "Cliquez sur la page de recharge de l'actif / de la monnaie pour recharger la monnaie et la transaction peut être effectuée une fois terminée.", + "dictionary": "Dictionnaire blockchain", + "media": "Couverture médiatique" + }, + "home": { + "newEra": "Global Leading Digital Financial Derivatives Exchange", + "startTrading": "Commencez la transaction.", + "walkingLantern": "Feu de cheval", + "marketCenter": "Marché des changes", + "optional": "Auto - Sélection", + "latestPrice": "Prix", + "upAndDown": "Augmentation ou diminution", + "heigh": "Prix maximum", + "low": "Prix le plus bas", + "vol": "Volume des échanges", + "coinType": "-Oui.", + "more": "Voir plus > >", + "multiPlatform": "Téléchargement multiplateforme", + "atTime": "N'importe quand, n'importe où.", + "multiTerminal": "Transactions multiplateforme", + "cover": "Couverture", + "multiTerminal1": "Plusieurs plateformes", + "support": "Prend en charge toutes les fonctions commerciales", + "down": "Télécharger", + "news": "Évolution du marché", + "detail": "Voir les détails", + "quickly": "Vite!", + "major": "Nous offrons une expertise aux investisseurs", + "safe": "Services commerciaux sécurisés", + "login": "Connexion", + "reg": "Inscription", + "trading": "Pour échanger", + "add": "Ajouté avec succès", + "cancel": "Annulation réussie", + "features": "Principaux avantages", + "partners": "Organismes d'investissement & partenaires", + "perpetual_title": "Contrat permanent de change", + "perpetual_cont": "En tant que premier contrat permanent de change avec un effet de levier maximal de 100 fois dans le monde réglé en monnaie stable, le contrat permanent de change de AMATAK est une option rentable pour effectuer rapidement des opérations de change.", + "stablecoin_title": "Le premier centre de change stable au monde", + "stablecoin_cont": "AMATAK a mis en place un environnement écologique solide et stable pour la monnaie, une structure complète comprenant des transactions, des paiements et des envois de fonds en monnaie stable, qui fait partie du Club mondial de la monnaie stable de haute qualité!", + "security_title": "Sécurité impeccable", + "security_cont": "AMATAK utilise la voûte Ledger à la fine pointe de la technologie pour sécuriser les paramètres de la monnaie numérique, et la plate - forme de la voûte Ledger fournit jusqu'à 150 millions de dollars d'assurance contre le vol par des tiers, la collusion interne et le vol de semences primaires.Plus de 98% de la monnaie numérique stockée sur le AMATAK est stockée dans des portefeuilles froids Multi - signatures et utilise le processus de contrôle des risques de marché le plus standard pour assurer la sécurité financière de tous les utilisateurs.", + "service_title": "24 / 7 Service à la clientèle multilingue en temps réel", + "service_cont": "Le service à la clientèle de AMATAK est disponible 24 heures sur 24 et 7 jours sur 7 pour aider les utilisateurs, par chat en direct ou par courriel àsupport@AMATAK.comContactez le service à la clientèle.", + "analy_title": "Outils d'analyse avancés", + "analy_cont": "Les commerçants peuvent utiliser différents outils graphiques et indicateurs basés sur des données stables sur la page des transactions pour faciliter les transactions.", + "liquidity_title": "Excellente liquidité", + "liquidity_cont": "24 / 7 connecté à la plate - forme de négociation AMATAK à haut niveau de liquidité.", + "technology_title": "Technologie auto - développée", + "technology_cont": "La plate - forme de négociation AMATAK est basée sur une technologie éprouvée et est construite par des experts de haut niveau de l'industrie pour optimiser au maximum les fonctions de la plate - forme.", + "download": "Télécharger le terminal mobile AMATAK", + "easy": "Ouvrir le commerce de poche n'importe quand, n'importe où", + "skan": "Numériser le Code pour télécharger maintenant", + "core_advantages": "Mon principal avantage est les données.", + "about_us": "à propos de nous" + }, + "option": { + "waitFor": "En attente de clôture", + "history": "Clôture historique", + "orderNum": "No de commande", + "option": "Options", + "buyTime": "Temps d'achat", + "buyAmount": "Quantité achetée", + "buyType": "Type d'achat", + "yield": "Taux de rendement", + "state": "Statut", + "deliverytime": "Date de clôture", + "countDown": "Compte à rebours de clôture", + "buyingUp": "Augmentation des achats", + "buyDwon": "Buy down", + "buyEven": "Bupping.", + "result": "Résultats de clôture", + "settlementQuantity": "Nombre de règlements", + "up": "Augmentation", + "down": "Chute", + "flat": "Ping", + "buyOption": "Options d'achat", + "deliveryRecord": "Dossiers de clôture", + "current": "En cours", + "next": "Période suivante", + "enterNum": "Veuillez entrer la quantité", + "balance": "Solde", + "expectedRevenue": "Recettes prévues", + "seeMore": "Regarde.", + "beBearish": "Regardez en l'air.", + "time": "Temps", + "zf": "Augmentation", + "bullish": "Bullish", + "lookAtPing": "Regarde Ping.", + "bearish": "Putting", + "amount": "Nombre", + "coinType": "Monnaie", + "odds": "Cote", + "buySuccess": "Achat réussi" + }, + "order": { + "noData": "Pas de transaction", + "ifCancel": "Annuler l'ordre actuel", + "cancelSuccess": "Annulation réussie", + "marketPrice": "Opérations sur le marché", + "fixedPrice": "Opérations à prix limité", + "sell": "Vendre", + "buy": "Acheter", + "exchangeRecord": "Transactions", + "see": "Voir", + "opt": "Fonctionnement", + "status": "Statut", + "time": "Temps", + "tradingPair": "", + "direction": "Orientation", + "type": "Type", + "averagePrice": "Prix moyen", + "price": "Prix", + "matched": "Apparié", + "totalAmountEntrusted": "Total des mandats", + "total": "Total général", + "toMatch": "Non apparié", + "operation": "Fonctionnement", + "reset": "Réinitialiser", + "search": "Recherche", + "to": "à", + "startTime": "Date de début", + "endTime": "Date de fin", + "select": "Veuillez sélectionner", + "entrustType": "Type de délégation", + "spotConsignment": "Mandat au comptant", + "surrentCommission": "Mandat actuel", + "commissionRecord": "Dossiers de délégation", + "optionTransaction": "Opérations d'options", + "orderNum": "No de commande", + "timeSharing": "Heure", + "yield": "Taux de rendement", + "buyNum": "Quantité achetée", + "upAndDown": "Augmentation ou diminution", + "settlementQuantity": "Nombre de règlements", + "transactionPrice": "Prix de transaction", + "tradingVolume": "Volume des échanges", + "aTurnover": "Montant de la transaction", + "serviceCharge": "Frais de manutention", + "cancel": "Annulation", + "buyTime": "Temps d'achat", + "buyUp": "Augmentation des achats", + "buyDown": "Buy down", + "buyLevel": "Bupping." + }, + "profile": { + "realName": "Authentification par nom réel", + "SelectAreaCode": "sélectionner l'indicatif régional", + "primaryCertification": "Certification primaire", + "advancedCertification1": "Demande de certification avancée", + "advancedCertification2": "Demande de certification avancée soumise", + "toExamine": "Audit", + "fullName": "Nom (s)", + "legal": "Statut", + "pleaseEnterName": "Veuillez saisir un nom", + "dateOfBirth": "Date de naissance", + "selectDate": "Sélectionner la date", + "documentType": "Type de certificat", + "pelaseSelect": "Veuillez sélectionner", + "certificateNumber": "Numéro du certificat", + "endterIDNumber": "Veuillez saisir le numéro d'identification", + "addressInfo": "Adresse", + "residentialAddress": "Adresse de résidence", + "residentialAddress1": "Veuillez entrer votre adresse résidentielle", + "ciy": "Les villes", + "incity": "Veuillez entrer votre ville", + "postalCode": "Code Postal", + "thePostcode": "Veuillez saisir le Code Postal", + "additionalInformation": "Informations complémentaires", + "optional": "Facultatif", + "contactInformation": "Coordonnées", + "phoneNumber": "Numéro de téléphone", + "enterPhoneNumber": "Veuillez saisir le numéro de téléphone", + "clickUpload1": "En cliquant sur télécharger le fichier et en soumettant l'authentification, vous avez lu et accepté nos conditions de service et notre accord de confidentialité", + "pelaseDownload": "Veuillez sélectionner une copie non expirée de", + "passport": "Passeport", + "drivingLicense": "Permis de conduire", + "iD": "Carte d'identité", + "upload": "Télécharger", + "explain": "Description", + "unexpired": "Le fichier de certificat non expiré peut être une image ou une copie numérisée.", + "pleaseConfirm": "Assurez - vous que tous les détails de la photo d'identité sont clairs et non couverts.", + "fileFormat": "Format du fichier", + "maximumFileSize": "Taille maximale du fichier", + "positive": "Recto du document", + "theOtherSide": "Revers du certificat", + "hold": "Carte d'identité portative", + "dragHere": "Faites glisser ici, ou", + "clickUpload": "Cliquez pour télécharger", + "uploadPhoto": "Veuillez télécharger la photo de face du certificat", + "reversePhoto": "Veuillez télécharger la photo inversée du certificat", + "uploadIDCard": "S'il vous plaît télécharger la photo d'identification manuelle", + "nextStep": "Prochaines étapes", + "inSubmit": "Votre demande de validation a été soumise!Nous vous informerons des résultats dès qu'ils seront disponibles.", + "gotIt": "J'ai compris.", + "congratulations": "Merci beaucoup.", + "back": "Retour", + "resetApply": "Nouvelle demande ou non", + "recertification": "Recertification", + "userInfo": "Informations sur le compte", + "verState": "État de validation", + "max": "Max.", + "limitH": "Limite de retrait horaire", + "verLeave": "Niveau de validation", + "exceed": "Plus de", + "contactUs": "Contactez - nous", + "inviteFriends": "Inviter des amis", + "dividends": "Invitez vos amis à utiliser {name} pour obtenir {num} des frais de transaction futurs de vos amis comme bonus.", + "sendInvitation": "Envoyer une invitation", + "resetPassword": "Réinitialiser le mot de passe", + "forLoginAccount": "Pour ouvrir un compte.", + "clickReset": "Cliquez sur Réinitialiser", + "registrationDecord": "Enregistrement de connexion", + "recording": "Utilisé pour afficher l'historique détaillé des logins", + "recordingDEtail": "Comptes rendus détaillés", + "invitationReward": "Prix de l'invitation", + "inviteUse": "Invitez vos amis à utiliser", + "futureCommission": "Obtenez {num} des frais de transaction futurs de votre ami comme bonus de dividende", + "joinThePlan": "Joignez - vous au plan de dividende invité par l'utilisateur {name}.", + "checkMyDividend": "Voir mes dividendes", + "step1": "Première étape", + "shareLink": "Partager des liens", + "step2": "Deuxième étape", + "shareFriend": "Inviter des amis", + "step3": "Troisième étape", + "instantDividend": "Dividende Lixiang", + "invitationInformation": "Informations sur l'invitation", + "invitationLink": "Liens d'invitation", + "invitationCode": "Code d'invitation", + "registeredUser": "Utilisateurs enregistrés", + "accountNumber": "Numéro de compte", + "registrationTime": "Date d'inscription", + "activityTerms": "Dispositions relatives aux activités", + "handlingFeeDividend": "Dividendes sur les frais de service", + "equalInvitee": "égal à invité", + "fee": "Frais de transaction", + "afterThat": "Après l'échange de l'invité", + "follow": "Transfert au compte de l'invitateur dans les minutes", + "limit": "L'activité suit les heures de début et de fin suivantes et est limitée aux comptes en vigueur après l'heure de début de l'activité et avant l'heure de fin de l'activité.", + "activityStartTime": "Début de l'activité", + "Y": "Année", + "M": "Mois", + "D": "Jour", + "endTime": "Fin de l'activité", + "proceed": "En cours", + "atAnyTime": "Se réserve le droit de modifier, de suspendre ou de mettre fin au Programme d'invitation de l'utilisateur {name} à tout moment sans préavis", + "reservedRights": "Se réserve le droit de ne pas verser de dividendes sur les frais de service pour les comptes en double ou faux", + "canDecide": "Accepte ou rejette à sa seule discrétion certains utilisateurs introduits ou invités à la plateforme {name} {Link}", + "bill": "Accès aux dossiers", + "date": "Date", + "address": "Lieu", + "equipment": "Matériel", + "preliminary": "Certification préliminaire réussie", + "clickToVerify": "Cliquez sur valider", + "clickToVerify1": "Terminé", + "tips1": "Certification de base : pour choisir le paiement en espèces, vous devez compléter une certification avancée.", + "tips2": "Certification avancée : limite de retrait de 24 heures jusqu'à 5 000 USDT. Si vous avez besoin de montants de retrait supérieurs, veuillez contacter le service client" + }, + "setting": { + "smsVer": "Vérification des SMS", + "enterCode": "Veuillez saisir le Code de vérification", + "emailVer": "Vérification des boîtes aux lettres", + "enterEmailVer": "Veuillez saisir le Code de vérification de la boîte aux lettres", + "ver": "Validation", + "enterNameCode": "Veuillez saisir le Code de vérification {name}.", + "openSuccess": "Ouverture réussie", + "closeSuccess": "Fermeture réussie", + "email": "E - mail", + "enterEmail": "Veuillez saisir une boîte aux lettres", + "emailVerCode": "Code de vérification de la boîte aux lettres", + "enterSmsCode": "Veuillez saisir le Code de vérification SMS", + "bind": "Liaison", + "unbind": "Dégroupage", + "bindSuccess": "Liaison réussie", + "unbindSuccess": "Débranchement réussi", + "scanQrCode": "Veuillez scanner le Code QR", + "howToOpen": "Apprendre à activer la validation secondaire {name}.", + "read": "Cliquez ici pour lire les informations d'installation", + "verKey": "Vérifier la clé", + "safeSetting": "Paramètres de sécurité", + "loginPassword": "Mot de passe de connexion", + "resLoginPassword": "Réinitialiser le mot de passe de connexion", + "transactionPassword": "Mot de passe de la transaction", + "usedFor": "Utilisé pour soumettre des contrats et des commandes au comptant", + "notOpen": "Non ouvert", + "modifyPassword": "Modifier le mot de passe", + "setPassword": "Définir le mot de passe", + "verCode": "Code de vérification", + "forLogin": "Utilisé pour l'ouverture de session, le retrait de devises et les modifications des paramètres de sécurité", + "alLast": "Activer au moins un mode de vérification", + "close": "Fermer", + "open": "On y va.", + "phone": "Numéro de téléphone portable", + "area": "Veuillez saisir l'indicatif régional", + "enterPhone": "Veuillez saisir le numéro de téléphone", + "newPassword": "Nouveau mot de passe", + "passwordIs": "Le mot de passe de la transaction est {num} chiffre", + "enterNewPassword": "Veuillez saisir un nouveau mot de passe", + "confirmPassword": "Confirmer le mot de passe", + "pleaseConfirmPassword": "Veuillez confirmer le mot de passe", + "operationSuccess": "Opération réussie", + "combination": "Le mot de passe nécessite une combinaison de lettres et de chiffres", + "changeSuccess": "Modification réussie" + }, + "purchase": { + "sendPrice": "Prix d'émission", + "subscriptionCurrency": "Monnaie de souscription", + "expected": "Temps de mise en service prévu", + "startTime": "Date de début de l'abonnement", + "applyForPurchase": "Date de clôture de l'abonnement", + "enterNum": "Veuillez entrer la quantité", + "all": "Tous", + "subscribeNow": "Souscription immédiate", + "subscriptionCycle": "Cycle de souscription", + "projectWarmUp": "Préchauffage du projet", + "startSubscription": "Début de la souscription", + "endOfSubscription": "Clôture de la souscription", + "announceResults": "Publication des résultats", + "projectCetails": "Détails du projet", + "useOrNot": "Oui Non", + "subscribe": "Abonnement", + "prompt": "Conseils", + "subscribeSuccess": "Souscription réussie" + }, + "contract": { + "a0": "Comptes contractuels", + "a1": "Transfert de fonds", + "a2": "Capitaux propres du compte", + "a3": "Disponible", + "a4": "Marge de position", + "a5": "Gel délégué", + "a6": "Résultat non réalisé", + "a7": "Taux de risque", + "a8": "Parités fortes estimées", + "a9": "Contrats", + "b0": "Levier", + "b1": "Temps", + "b2": "Type de transaction", + "b3": "Marché conclu", + "b4": "Total des mandats", + "b5": "Prix de transaction moyen", + "b6": "Prix de la Commission", + "b7": "Dépôt de garantie", + "b8": "Frais de manutention", + "b9": "Statut", + "c0": "Fonctionnement", + "c1": "Annulation", + "c2": "Annulation", + "c3": "Annuler l'ordre actuel", + "c4": "Annulation", + "c5": "C'est sûr.", + "c6": "Annulé", + "c7": "Non conclu.", + "c8": "Accord partiel", + "c9": "Tout est réglé.", + "d0": "Acheter plus", + "d1": "Acheter flat", + "d2": "Vente à découvert", + "d3": "Vendre Pinto", + "d4": "Annulation réussie", + "d5": "Ouverture de la position", + "d6": "Fermeture de la position", + "d7": "Prix de déclenchement", + "d8": "Prix", + "d9": "Prix du marché", + "e0": "Limite de prix", + "e1": "Nombre", + "e2": "Zhang.", + "e3": "Dépôt requis", + "e4": "Positions multiples", + "e5": "Positions courtes", + "e6": "Bullish", + "e7": "Ouvert.", + "e8": "Putting", + "e9": "Koping", + "f0": "Prix", + "f1": "Kaido.", + "f2": "Vide.", + "f3": "Oui Non", + "f4": "Double levier", + "f5": "Délégation réussie", + "f6": "Clôture réussie", + "f7": "Pankou", + "f8": "Transactions en temps réel", + "f9": "Tous", + "g0": "Acheter", + "g1": "Vendre", + "g2": "Cumul", + "g3": "Dernier prix", + "g4": "Détails", + "g5": "Historique", + "g6": "Date de clôture", + "g7": "Position", + "g8": "Nivellement", + "g9": "Prix moyen d'ouverture", + "h0": "Taux de rendement", + "h1": "Clôture du marché", + "h2": "Si le prix du marché est égal ou non", + "h3": "Quanping", + "h4": "Succès", + "h5": "- Oui.", + "h6": "Augmentation ou diminution", + "h7": "Prix maximum", + "h8": "Prix le plus bas", + "h9": "Volume", + "i0": "Position de détention", + "i1": "Mandat actuel", + "i2": "Mandat Historique", + "i3": "Orientation", + "i4": "Beaucoup.", + "i5": "Vide", + "i6": "Afficher uniquement le courant", + "i7": "Fin de l'interférence", + "i8": "Stop loss", + "i9": "Arrêt des gains et des pertes", + "j0": "Profits et pertes", + "j1": "Dernier prix de transaction", + "j2": "Prix moyen d'ouverture", + "j3": "Prix de déclenchement de l'arrêt des bénéfices", + "j4": "Prix de déclenchement de l'arrêt des pertes", + "j5": "Prix du marché à", + "j6": "Le mandat d'arrêt des bénéfices sera déclenché et les bénéfices et pertes seront estimés après la transaction.", + "j7": "Le mandat d'arrêt des pertes sera déclenché et les bénéfices et pertes seront estimés après la transaction.", + "j8": "Ouverture d'un contrat permanent", + "j9": "Ouverture réussie", + "k0": "Configuration réussie", + "k1": "Règlement des profits et pertes", + "k2": "Un bouton tout plat", + "k3": "Un bouton en arrière", + "k4": "Si un bouton est complètement plat", + "k5": "Si un bouton est inversé", + "k6": "Quanping a réussi.", + "k7": "Inversion réussie", + "k8": "Veuillez vous connecter pour l'abonnement", + "k9": "Veuillez saisir le Code d'abonnement" + }, + "otc": { + "a0": "Veuillez sélectionner le type de transaction", + "a1": "Acheter", + "a2": "Vendre", + "a3": "Monnaie de transaction", + "a4": "Veuillez sélectionner la devise", + "a5": "Nombre", + "a6": "Veuillez entrer la quantité", + "a7": "Prix", + "a8": "Veuillez entrer le prix", + "a9": "Transaction unique la plus basse", + "b0": "Plus élevé pour une seule transaction", + "b1": "AliPay", + "b2": "Wechat", + "b3": "Carte bancaire", + "b4": "Remarques", + "b5": "Veuillez entrer un commentaire", + "b6": "Publié avec succès", + "b7": "Achats", + "b8": "Vente", + "b9": "Annulé", + "c0": "En cours de négociation", + "c1": "Terminé", + "c2": "Numéro de l'annonce", + "c3": "Statut", + "c4": "Prix total", + "c5": "Prix unitaire", + "c6": "Reste", + "c7": "Date de publication", + "c8": "Mode de collecte", + "c9": "Fonctionnement", + "d0": "Cadre inférieur", + "d1": "Annonce actuelle", + "d2": "Conseils chaleureux", + "d3": "Annulation réussie", + "d4": "Détails de la commande", + "d5": "No de commande", + "d6": "Paiement", + "d7": "Nom (s)", + "d8": "Numéro de compte", + "d9": "Banque de dépôt", + "e0": "Sous - direction de l'ouverture du compte", + "e1": "Temps restant", + "e2": "Points", + "e3": "Secondes", + "e4": "Certificat de paiement", + "e5": "Télécharger le Code QR de collecte", + "e6": "Veuillez télécharger le bon de paiement", + "e7": "En attente de téléchargement par l'acheteur", + "e8": "Annuler la commande", + "e9": "Confirmation du paiement", + "f0": "Non reçu", + "f1": "Confirmer le recouvrement", + "f2": "Annuler la commande actuelle", + "f3": "C'est sûr.", + "f4": "Annulation", + "f5": "Ordre annulé", + "f6": "Confirmer le paiement actuel", + "f7": "Opération réussie", + "f8": "Les actifs à vendre seront automatiquement transférés après confirmation de la collecte.", + "f9": "Cette commande entrera automatiquement en appel après confirmation du non - paiement", + "g0": "Annonce", + "g1": "Utilisateurs", + "g2": "Total général", + "g3": "Limites", + "g4": "Mode de paiement", + "g5": "Total", + "g6": "Commande réussie", + "g7": "Ordre de vente", + "g8": "Bon de commande", + "g9": "Bon de commande publicitaire", + "h0": "Commandes publicitaires", + "h1": "Tous", + "h2": "Fermé", + "h3": "À payer", + "h4": "À confirmer", + "h5": "Dans la plainte", + "h6": "Nombre de transactions", + "h7": "Partenaires commerciaux", + "h8": "Temps", + "h9": "Détails", + "i0": "Veuillez saisir le numéro de compte", + "i1": "Veuillez saisir un nom", + "i2": "Code QR de collecte", + "i3": "Enregistrer", + "i4": "Nom de la Banque", + "i5": "Veuillez saisir le nom de la Banque", + "i6": "Veuillez saisir la Sous - direction de l'ouverture du compte", + "i7": "Numéro de carte bancaire", + "i8": "Veuillez saisir le numéro de carte bancaire", + "i9": "Édition réussie", + "j0": "Ajouté avec succès", + "j1": "Comptes en monnaie française", + "j2": "Actifs", + "j3": "Solde disponible", + "j4": "Gel des soldes", + "j5": "Opérations en monnaie française", + "j6": "Ma Pub", + "j7": "Ma commande", + "j8": "Publicité", + "j9": "Acheter en un clic", + "k0": "Vente en un clic", + "k1": "Montant de l'achat", + "k2": "Quantité achetée", + "k3": "Montant de la vente", + "k4": "Quantité vendue", + "k5": "Veuillez saisir le montant de l'achat", + "k6": "Veuillez entrer la quantité achetée", + "k7": "Veuillez saisir le montant de la vente", + "k8": "Veuillez entrer la quantité vendue", + "k9": "Acheter par quantité", + "l0": "Description de la transaction en monnaie française", + "l1": "Volume minimal des transactions", + "l2": "Confirmer l'achat", + "l3": "Confirmation de la vente", + "l4": "Solde insuffisant", + "l5": "Temps de commande", + "l6": "Veuillez sélectionner le mode de paiement", + "l7": "Bénéficiaire", + "l8": "Réception anormale", + "l9": "Veuillez saisir le mot de passe de la transaction", + "m0": "Payé", + "m1": "Approuvé", + "m2": "Échec de la vérification", + "m3": "Fin de la commande", + "m4": "Annulation de la commande" + }, + "cxiNewText": { + "a0": "Top 10", + "a1": "5 millions+", + "a2": "< 0.10%", + "a3": "200+", + "a4": "Classement mondial", + "a5": "Les utilisateurs nous font confiance", + "a6": "Frais ultra-bas", + "a7": "Des pays", + "a21": "Gagner un revenu immédiatement", + "a22": "Créer un portefeuille personnel de crypto-monnaie", + "a23": "Achetez, échangez et détenez plus de 100 crypto-monnaies", + "a24": "Recharger le compte", + "a25": "Inscrivez-vous par e-mail", + "a38": "Ouvrez des transactions à tout moment, n'importe où.", + "a39": "Commencez à négocier en toute sécurité et facilement à tout moment via notre application et notre page Web", + "a40": "Scannez le code QR pour télécharger l'application", + "a41": "Une plateforme de trading de crypto-monnaie de confiance", + "a42": "Nous nous engageons à assurer la sécurité des utilisateurs avec des protocoles stricts et des mesures techniques de pointe.", + "a43": "Fonds d'actifs de sécurité des utilisateurs", + "a44": "Nous stockons 10 % de tous les frais de transaction dans des fonds d'actifs sûrs pour fournir une protection partielle aux fonds des utilisateurs", + "a45": "Contrôle d'accès personnalisé", + "a46": "Le contrôle d'accès personnalisé restreint l'accès aux appareils et aux adresses des comptes personnels, afin que les utilisateurs n'aient aucun souci.", + "a47": "Cryptage avancé des données", + "a48": "Les données de transaction personnelles sont protégées par un cryptage de bout en bout, et seule la personne peut accéder aux informations personnelles.", + "a57": "Cliquez pour aller", + "a71": "Guide du débutant ", + "a72": "Démarrez immédiatement l'apprentissage du trading de devises numériques ", + "a77": "Comment acheter de la monnaie numérique ", + "a78": "Comment vendre de la monnaie numérique ", + "a79": "Comment négocier des devises numériques", + "a80": "Place du marché", + "a81": "Tendance du marché sur 24 heures", + "a82": "Ajoutez des fonds de crypto-monnaie à votre portefeuille et commencez à trader instantanément" + }, + "homeNewText": { + "aa1": "Porte de crypto-monnaie", + "aa2": "Échangez de manière sûre, rapide et facile sur plus de 100 crypto-monnaies", + "aa3": "Inscrivez-vous par e-mail", + "aa4": "Commencez à trader maintenant", + "aa5": "tendance du marché", + "aa6": "Devis d'actifs numériques Express", + "aa7": "Devise", + "bb1": "Dernier prix (USD)", + "bb2": "Augmentation de 24h", + "bb3": "Volume des transactions sur 24 heures", + "bb4": "Échange de crypto-monnaie pour tous", + "bb5": "Commencez à trader ici et vivez un meilleur voyage en matière de crypto-monnaie", + "bb6": "personnel", + "bb7": "Un échange de crypto-monnaie pour tous. La plateforme de trading la plus fiable avec une large gamme de devises", + "cc1": "ntreprise", + "cc2": "Conçu pour les entreprises et les institutions. Fournir des solutions cryptographiques aux investisseurs institutionnels et aux entreprises", + "cc3": "Développeur", + "cc4": "Conçu pour les développeurs, pour que les développeurs puissent créer les outils et les API du futur du web3", + "cc6": "Scanner le code QR", + "cc7": "Téléchargez l'application Android/IOS", + "dd1": "Sûr et stable avec zéro accident", + "dd2": "De multiples stratégies de sécurité et une garantie de réserve à 100 % garantissent qu'aucun incident de sécurité ne s'est produit depuis sa création.", + "dd3": "Échangez des actifs cryptographiques de manière simple et pratique", + "dd4": "Dans CXIsux, les produits sont faciles à comprendre, le processus de transaction est pratique et la plateforme unique de services d'actifs blockchain", + "dd5": "Dérivés", + "dd6": "Vous pouvez négocier des contrats sur plus de 100 crypto-monnaies avec un effet de levier jusqu'à 150x et réaliser des bénéfices élevés", + "ee1": "Prise en charge de plusieurs terminaux", + "ee2": "Échangez des actifs numériques à tout moment et en tout lieu", + "ee3": "Prend en charge un large éventail de types d'actifs, avec toutes les informations sur les devises disponibles", + "ee4": "Comprendre rapidement le processus de trading d'actifs numériques", + "ee5": "Commencez votre voyage de chiffrement", + "ee6": "Vérification graphique", + "hh0": "Partagez la meilleure expérience de trading avec les principales bourses mondiales", + "hh1": "À la recherche de bonnes opportunités de trading", + "hh2": "Échangez plus de 100 crypto-monnaies de manière sûre, rapide et facile", + "hh3": "Découvrez nos produits", + "hh4": "Commencez à trader ici et vivez un meilleur voyage en matière de crypto-monnaie", + "hh5": "Commerce au comptant", + "hh6": "Achetez et vendez plus de 100 crypto-monnaies avec des frais de trading réduits", + "hh7": "Transaction contractuelle", + "hh8": "Améliorez vos revenus grâce au contrat perpétuel USDT", + "hh9": "Négoce simple et pratique d'actifs cryptographiques", + "hh10": "Les produits sont faciles à comprendre, le processus de transaction est pratique et la plateforme unique de services d'actifs blockchain", + "hh11": "Gestion des fonds", + "hh12": "Gagnez des rendements élevés grâce à nos divers produits de staking", + "hh13": "Dérivés", + "hh14": "Vous pouvez négocier plus de 100 contrats de crypto-monnaie avec un effet de levier jusqu'à 150x et réaliser des bénéfices élevés", + "hh15": "Sûr et stable avec zéro accident", + "hh16": "Plusieurs garanties de politique de sécurité, garantie de réserve à 100 % et aucun incident de sécurité ne s'est produit depuis sa création.", + "hh17": "Pourquoi choisir BXRCO", + "hh18": "Votre échange de crypto-monnaie de confiance", + "hh19": "Sécurité", + "hh20": "Depuis 2020, BXRCO fonctionne de manière stable et fiable grâce à son système auto-développé.", + "hh21": "Service", + "hh22": "Vous pouvez obtenir des réponses instantanées au centre de service ou nous contacter par e-mail 24h/24 et 7j/7.", + "hh23": "Facile à utiliser", + "hh24": "BXRCO facilite le trading de crypto-monnaies. Achetez des pièces en un seul clic et ne manquez jamais l'opportunité passagère de gagner de l'argent.", + "hh25": "Achat et vente flexibles", + "hh26": "Une variété de crypto-monnaies prennent en charge les transactions, suivez la tendance, afin de ne manquer aucune opportunité de richesse.", + "hh27": "Le trading commence dans 1 minute", + "hh28": "Créez un compte BXRCO gratuitement", + "hh29": "Certification complète", + "hh30": "Effectuer une transaction", + "hh31": "Échangez n'importe où", + "hh32": "Restez informé grâce à notre application et notre client de bureau.", + "hh33": "Scannez le code pour télécharger maintenant", + "hh34": "Inscrivez-vous et commencez à trader !", + "hh35": "Inscrivez-vous maintenant", + "hh36": "Inscrivez-vous maintenant par e-mail", + "hh37": "Classement mondial", + "hh38": "les utilisateurs nous font confiance", + "hh39": "Frais ultra-bas", + "hh40": "Pays", + "hh41": "BXRCO, échangez à tout moment et n'importe où", + "hh42": "Négociez maintenant", + "hh43": "Scannez le code QR pour télécharger BXRCO APP" + } +} diff --git a/src/i18n/he.json b/src/i18n/he.json new file mode 100644 index 0000000..9a7ca09 --- /dev/null +++ b/src/i18n/he.json @@ -0,0 +1,1178 @@ +{ + "nav": { + "assets": "נכסים", + "contract": "חשבון חוזה", + "transfer": "העברת כספים", + "excOrders": "הזמנות נקודתיות", + "contractOrders": "הזמנות חוזה", + "fundHistory": "רישומי הפקדה ומשיכה", + "security": "אבטחת חשבון", + "invite": "להזמין חברים", + "login": "אנא התחבר תחילה כדי לפעול", + "tips": "טיפים למערכת", + "set": "אנא קבע תחילה מחיר מתאים", + "a1": "המחיר לא יכול להיות ריק או אפס", + "a2": "הכמות לא יכולה להיות ריקה או אפס", + "a3": "הכמות לא יכולה להיות קטנה מ-", + "a4": "הסכום הכולל של הוראת השוק לקנייה אינו יכול להיות ריק או אפס", + "a5": "הסכום הכולל של פקודות שוק לקנייה לא יכול להיות פחות מ", + "a6": "כמות הוראת המכירה בשוק אינה יכולה להיות ריקה או אפס", + "a7": "כמות הוראת השוק למכירה לא יכולה להיות פחות מ", + "a8": "מחיר הטריגר של פקודת סטופ-לוס אינו יכול להיות ריק או אפס", + "a9": "מחיר הגבול של הוראת הגבול של סטופ-לוס אינו יכול להיות ריק או אפס", + "b1": "מספר פקודות ה-stop-loss-limit לא יכול להיות ריק או אפס", + "b2": "מחיר הטריגר של פקודת שוק עצירה-הפסד לא יכול להיות ריק או אפס", + "b3": "רווח עצירה וסטופ לוס - הסכום הכולל של רכישת השוק אינו יכול להיות ריק או אפס", + "b5": "רווח עצירה והפסד עצירה - הסכום הכולל של רכישת השוק לא יכול להיות פחות מ", + "b6": "רווח עצירה והפסד עצירה - מחיר שוק כמות המכירה אינה יכולה להיות ריקה או אפס", + "b7": "עצור רווח וסטור הפסד - הכמות שנמכרה במחיר השוק לא יכולה להיות פחות מ", + "b8": "הדף מנותק, אנא שרטט מחדש או נסה שוב מאוחר יותר!", + "c1": "קנה אסימונים בשווי {amount} {name} וקבל פרס ב-{rate}%", + "c2": "פעילות מנוי", + "c3": "סכום כולל שהונפק", + "c4": "נפח מחזור כולל", + "c5": "מחיר הנפקה", + "c6": "זמן שחרור", + "c7": "כתובת לנייר לבן", + "c8": "כתובת אתר האינטרנט הרשמית", + "c9": "מבוא", + "rejection": "סיבת הדחייה" + }, + "common": { + "a3": "רשומת מנוי", + "option": "מסחר באופציות", + "exchange": "עסקת מטבע למטבע", + "markets": "שווקים", + "blogs": "בלוגים", + "news": "חדשות התעשייה", + "helps": "מרכז עזרה", + "service": "שירות", + "contactUs": "צור קשר", + "sign_in": "התחברות", + "sign_up": "הירשם", + "noRecord": "אין רישום", + "getCode": "קבל קוד אימות", + "help1": "מדריך לחוזי מטבע חוץ", + "help2": "מפרטי חוזה", + "optional": "אופציונלי", + "price": "מחיר", + "upAndDown": "למעלה ולמטה", + "heigh": "המחיר הגבוה ביותר", + "low": "המחיר הנמוך ביותר", + "vol": "עוצמת קול", + "pair": "זוג מסחר", + "buy": "לקנות", + "sell": "למכור", + "buy-in": "לקנות", + "sell-out": "יגמר", + "open-orders": "הזמנות נוכחיות", + "condition-orders": "הוראות מותנות", + "history-orders": "רשומות הזמנות", + "limit": "מחיר גבול", + "market": "מחיר שוק", + "stop-limit": "מחיר רווח וסטופ-לוס-לימיט", + "stop-market": "עצור רווח וסטור הפסד - מחיר שוק", + "limit-type": "מסחר במחיר מוגבל", + "market-type": "מסחר במחירי שוק", + "startTime": "שעת התחלה", + "to": "אֶל", + "confirmBtn": "אשר", + "cancelBtn": "ביטול", + "cancel": "ביטול", + "endTime": "שעת סיום", + "export": "ייצוא", + "filter": "לסנן", + "all": "ללא הגבלה", + "search": "חיפוש", + "reset": "איפוס", + "hideAll": "הסתר את כל ההזמנות שבוטלו", + "canceled": "בוטל", + "waiting": "מחכה לשידוך", + "triggered": "הופעל", + "processing": "התאמות מתבצעות", + "completed": "הושלם", + "available_phone": "אנא הזן מספר טלפון תקין", + "available_email": "אנא הזן את כתובת האימייל הנכונה", + "codeSent": "קוד האימות נשלח", + "captcha": "שגיאה בקוד אימות", + "created": "זמן", + "price-order": "מחיר הזמנה", + "order-amount": "כמות הזמנה", + "order-total": "סכום ההזמנה הכולל", + "avg-price": "מחיר ממוצע", + "direction": "כיוון", + "order-type": "סוג", + "executed-amount": "כבר הותאם", + "executed-total": "סכום העסקה", + "outstanding": "התאמת התאמה ממתינה", + "status": "סטטוס", + "details": "פרטים", + "action": "פעולה", + "id": "מזהה הזמנה", + "filled-price": "מחיר מלא", + "filled-amount": "כמות מלאה", + "filled-total": "סכום העסקה", + "fee": "עמלת טיפול", + "enterValid": "אנא הזן מספר טלפון נייד או דוא ל חוקיים!", + "enterValidEmail": "אנא הזן את כתובת האימייל הנכונה", + "enterValidPhone": "אנא הזן מספר טלפון תקין!", + "enterAccount": "אנא הזן את חשבונך", + "enterEmail": "אנא הזן את כתובת האימייל הנכונה", + "enterPhone": "אנא הזן את מספר הטלפון שלך", + "enterPwd": "אנא הזן את הסיסמה שלך", + "passwordRegular": ".(הסיסמה חייבת להיות באורך של 8 עד 15 תווים ולהכיל גם מספרים וגם אותיות (מותר גם סמלים", + "newPassword": "אנא הזן את הסיסמה החדשה שלך", + "confirmNewPassword": "אנא הזן את הסיסמה החדשה לאישור", + "enterGoogleCode": "אנא הזן את קוד האימות של גוגל", + "enterEmailCode": "אנא הזן את קוד האימות באימייל", + "enterSMSCode": "SMS-ה לש תומיאה דוק תא ןזה אנא", + "enterVerCode": "אנא הזן את קוד האימות", + "exportFile": "אנא לחץ על אישור כדי לייצא את הקובץ.", + "submit": "שלח", + "newzone": "אזור חדש", + "college": "הוֹרָאָה", + "goTo": "לך אל", + "logOut": "התנתק", + "homepage": "דף הבית", + "application": "אפליקציית רישום מטבעות", + "purchase": "רכישה", + "accountInformation": "פרטי חשבון", + "myWallet": "הארנק שלי", + "commissionOrder": "צו עמלה", + "securitySetting": "הגדרות אבטחה", + "wallet": "ארנק", + "allAssets": "כל הנכסים", + "contractaccount": "חשבון חוזה", + "transferFunds": "העברת כספים", + "rechargeWithdraw": "משיכת טעינה", + "order": "הזמנה", + "spotConsignment": "משלוח נקודתי", + "optionOrders": "הוראות אופציה", + "perpetualContract": "חוזה נצחי", + "foreignContract": "חוזה מטבע חוץ", + "notCertified": "לא מוסמך", + "notData": "אין נתונים", + "assets": "נכסים", + "myCommission": "הוועדה שלי", + "addressManagement": "ניהול כתובות", + "auth": "אימות שם אמיתי", + "invitationReward": "פרס הזמנה", + "visitHistory": "היסטוריית ביקורים", + "noviceTutorial": "מדריך למתחילים", + "tradingStrategy": "אסטרטגיית מסחר", + "industryResearch": "מחקר בתעשייה", + "blockchainDictionary": "מילון בלוקצ'יין", + "mediaCoverage": "סיקור תקשורתי", + "selectFile": "בחר קובץ", + "upload": "העלאה", + "delete": "מחק", + "tooBig": "גודל הקובץ גדול מדי, אסור לחרוג מגודלו", + "errorType": "שגיאה בסוג הקובץ", + "resend": "לשלוח שוב", + "sms": "הודעת SMS", + "email": "אימייל", + "sendSuccess": "קוד האימות נשלח בהצלחה", + "retransmission": "לשלוח שוב", + "start-trade": "התחילו את מסע המטבע הדיגיטלי שלכם עכשיו", + "login": "התחברות", + "register": "הירשם", + "trading": "עבור למסחר", + "dark": "שחור", + "light": "לבן", + "notMore": "לא עוד", + "allRead": "נקרא", + "newMessage": "הודעה חדשה", + "footerTips1": "ישנם סיכונים בשוק, לכן היזהרו בעת השקעה", + "footerTips2": "הודעה משפטית: אתר זה מופעל על ידי חברת {name}", + "footerTips3": "אזהרת סיכון: מסחר בנכסים דיגיטליים עלול לגרום לאובדן הקרן שלך, אנא ודא שאתה מבין את הסיכונים במלואם", + "footerTips4": "אזורים מוגבלים: שירותים אינם זמינים לתושבי מדינות מסוימות, כגון ישראל והרפובליקה האסלאמית", + "learn": "הוֹרָאָה", + "GraphicValidation": "אימות גרפי", + "c12": "מידע על דחייה", + "c13": "סיסמת ביטול", + "c14": "אנא מלאו את סיסמת המשיכה", + "c15": "איפוס סיסמת משיכה" + }, + "exchange": { + "search": "חיפוש", + "pair": "זוג מסחר", + "last-price": "מחיר אחרון", + "change": "הגדלה או הקטנה", + "order-book": "הזמנה", + "price": "מחיר", + "amount": "כמות", + "total": "ערך כולל", + "recent-trades": "עסקאות אחרונות", + "time": "זמן", + "order-total": "ערך הזמנה כולל", + "balance": "יתרה זמינה", + "enter-price": "אנא הזן את המחיר", + "enter-amount": "אנא הזן את הסכום", + "enter-total": "אנא הזן את המחיר הכולל", + "at-best-price": "במחיר השוק הטוב ביותר", + "trigger-price": "אנא הזן את מחיר ההדק", + "min": "דקות", + "hour": "שעה", + "day": "שָׁמַיִם", + "שבוע": "שבוע", + "month": "חודש" + }, + "login": { + "confirm-password": "אשר את הסיסמה", + "resend": "שלח מחדש", + "sms": "SMS", + "sendOK": "קוד האימות נשלח בהצלחה!", + "enterPhoneEmail": "נא להזין את כתובת האימייל שלך", + "effectivePhoneEmail": "נא להזין טלפון נייד או כתובת אימייל חוקיים", + "enterPasswrod": "אנא הזן סיסמה באורך {num} סיביות", + "passwordLength": "אורך סיסמה {num} סיביות המכילה סיסמאות אלפאנומריות", + "safe": "אימות אבטחה", + "googleVer": "אנא הזן את קוד האימות של Google ב-{num} bit באפליקציה שלך לנייד", + "phoneCode": "אנא הזן את קוד האימות של {num} סיביות שנשלח למספר הטלפון הנייד שלך", + "emailCode": "אנא הזן את קוד האימות של {num} סיביות שנשלח לאימייל שלך", + "google-code": "קוד אימות של Google", + "email-code": "קוד אימות באימייל", + "sms-code": "קוד אימות טלפון נייד", + "forgetPassword": "שכחתי סיסמה", + "rememberMe": "זכור אותי", + "noAccountYet": "עדיין אין חשבון", + "goRegister": "הירשם", + "safety": "אימות בטיחות", + "regAccount": "רשום חשבון", + "email": "אימייל", + "phone": "טלפון נייד", + "pleaseEmail": "אנא הכנס את כתובת הדוא ל שלך", + "invalidEmail": "כתובת דוא ל לא חוקית", + "enterMobile": "אנא הזן את מספר הטלפון הנייד שלך", + "invalidPhone": "מספר טלפון נייד לא חוקי", + "enterLengthPassword": "אנא הזן סיסמה באורך של {num1} עד {num2} סיביות", + "hasNumEn": "הסיסמה דורשת {num} סיביות של אותיות וספרות", + "iSee": "אני מסכים", + "terms": "תנאים והגבלות", + "reg": "הירשם", + "enterEmailCode": "אנא הזן את קוד האימות בגודל {num} סיביות שנשלח לכתובת הדוא ל שלך ({email})", + "accountActivated": "כדי להפעיל חשבון", + "backOld": "חזור לשלב הקודם", + "verCode": "קוד אימות", + "notEmail": "אם אינך מקבל את המייל, אנא נסה את פעולות הסימון הבאות", + "confirmEmail": "אנא ודא שכתובת האימייל שהזנת נכונה", + "confing": "אנא בדוק את תיקיית הספאם שלך", + "checkTrashCan": "אנא ודא שהאימייל שלך מחובר לאינטרנט יציב", + "enterPhone1": "אנא הזן את מספר הטלפון שיישלח אליך", + "enterPhone2": "קוד אימות של {num} סיביות", + "smsNotReceived": "אם לא קיבלת את ה-SMS, אנא נסה את פעולות הבדיקה הבאות", + "phoneCorrect": "אנא ודא שמספר הטלפון הנייד וקידומת החיוג שהזנת נכונים", + "securePhone": "אנא ודא שאות הטלפון הנייד שלך יציב", + "hasAccount": "כבר יש לך חשבון", + "toLogin": "עבור לכניסה", + "securityVerification": "אימות אבטחה", + "disagree": "לא הסכמת לתנאים", + "registrationSuccess": "ההרשמה הצליחה, קפיצה לדף הכניסה", + "referrer": "referrer", + "referrer1": "נא למלא את הממליץ", + "c6": "(קוד הזמנה (נדרש", + "c7": "נא למלא את קוד ההזמנה", + "optional": "אופציונלי", + "password": "סיסמה", + "login": "התחברות", + "country": "אזור חיוג", + "sign-in": "התחבר", + "confirmpassword": "שתי הסיסמאות אינן עקביות", + "find-password": "אפס את סיסמת הכניסה", + "enter-account": "הזן את כתובת האימייל של הרשמה", + "submit": "שלח", + "Remembered": "זוכר את הסיסמה שלך?", + "new-password": "סיסמה חדשה" + }, + "application": { + "form": "טופס בקשה לרישום אסימוני פרויקט", + "sendUser": "יוזם הפרויקט", + "sendUserEn": "שם מטבע באנגלית", + "sendUserCn": "שם המטבע הסיני", + "contactPosition": "איש קשר ותפקיד", + "phone": "מספר טלפון ליצירת קשר", + "tokenPrice": "מחיר שוק", + "email": "אימייל ליצירת קשר", + "address": "מיקום רישום הפרויקט", + "mechanism": "מוסד להשקעה בפרויקט", + "personal": "אִישִׁי", + "currencyCode": "קוד מטבע", + "symbol": "סמל", + "currencyIdentification": "זיהוי מטבע", + "format": "תמיכה בפורמט {name}, הקובץ קטן מ-{num}", + "fundraisingDate": "תאריך גיוס כספים", + "officialWebsite": "אתר רשמי", + "whitePaperLinks": "קישורים לספר לבן", + "noLink": "אם אין קישור, אנא העלה את הקובץ המצורף בסוף המאמר", + "total_issue": "סך הנפקת המטבעות", + "currencyCirculation": "מחזור מטבע", + "currencyAllocationRatio": "יחס הקצאת מטבע", + "numberOfCurrencyHolders": "מספר מחזיקי המטבע", + "tradingPlatform": "פלטפורמת מסחר מקוונת", + "privatePlacement": "הנפקה פרטית", + "publicOfferingPrice": "מחיר הנפקה לציבור", + "company": "אנא ציין מטבע", + "coinType": "סוג רשת בלוק מטבע", + "currencyIssueDate": "תאריך הנפקת המטבע", + "blockBrowser": "חסימת דפדפן", + "officialAddress": "כתובת ארנק רשמית", + "contractAddress": "כתובת החוזה", + "link": "קישור", + "budget": "תקציב עבור עמלות רישום", + "unit": "לארגון", + "ofTokens": "מספר טוקנים לפעילויות שיווק לאחר הרישום", + "chineseCurrency": "מבוא למטבע הסיני", + "enCurrency": "מבוא למטבע באנגלית", + "remarks": "הערות", + "uploadWhitePaper": "העלה נייר עמדה", + "pleaseUpload": "אנא העלה את המסמך הלבן", + "recommendationCode": "שם הממליץ, הארגון שלו וקוד ההמלצה", + "ifSo": "אם כך", + "affirmsThat": "הצהרה: אני מאשר/ת בזאת כי כל המידע הנ ל הוא נכון, שלם ומדויק. אהיה אחראי/ת מבחינה כלכלית ומשפטית על מסירת מידע כוזב", + "iKnow": "אני רואה", + "reSubmit": "שלח מחדש", + "pleaseConfirm": "אנא אשרו כי המידע הנ ל נכון", + "pleaseEnter": "בבקשה מורה", + "upLoadSuccess": "העלאה בוצעה בהצלחה" + }, + "wallet": { + "auth": "אנא בצע תחילה אימות שם אמיתי", + "obtain": "קבל את כתובת הטעינה", + "inside": "העברת כספים פנימית", + "from": "from", + "history": "הצג היסטוריה", + "balance": "איזון", + "transferQuantity": "כמות העברה", + "capitalAccount": "חשבון הון", + "contract": "חוזה", + "financial": "חשבון פיננסי", + "leverage": "חשבון מינוף", + "successful": "ההעברה הצליחה", + "confirm": "אשר העברה", + "pleaseSelect": "אנא בחר מטבע", + "to": "אֶל", + "asses": "נכסים", + "strokes": "אנא הזן את סכום ההעברה", + "addressManagement1": "ניהול כתובות", + "addAddress": "הוסף כתובת", + "filter": "מסנן", + "search": "חיפוש", + "selectActiveArea":"אנא בחר את אזור הפעילות", + "areaOne": "אזור ראשון", + "areaTwo": "אזור שני", + "addressAssets": "רשימת כתובות", + "addressNum": "מספר כתובות", + "fee1": "דמי טיפול", + "creationTime": "זמן יצירה", + "detailAddress": "כתובת מפורטת", + "remarks1": "מידע על הערות", + "operating": "פעולה", + "complete": "הושלם", + "copy": "העתק", + "editAddress": "עריכת כתובת", + "deleteAddress": "מחק כתובת", + "next": "עמוד קודם", + "pre": "העמוד הבא", + "add": "הוסף", + "edit": "עריכה", + "address": "כתובת", + "selectAssets": "אנא בחר נכסים", + "drawAddress": "משיכת כתובת", + "addressRemarks": "הערות כתובת", + "remarksDelete": "אשר מחיקת כתובת זו", + "optionSuccess": "הפעולה בוצעה בהצלחה", + "allAssets": "כל ערכי הנכסים", + "showNum": "הצג ספרה", + "contractAccount": "חשבון חוזה", + "marginAccount": "חשבון מרווח", + "financialAccount": "חשבון פיננסי", + "spotAccount": "חשבון ספוט", + "hide": "הסתר", + "balanceAssets": "איזון נכסים", + "searchCurrency": "חיפוש מטבע", + "addressManagement": "ניהול כתובות משיכה", + "totalAssets": "סך כל הנכסים", + "availableBalance": "יתרה זמינה", + "fee": "הקפאת יתרה", + "valuation": "הערכה", + "recharge": "טעינה מחדש", + "withdrawal": "משיכה", + "transaction": "עסקה", + "rechargeAddress": "כתובת טעינה", + "rechargeQuantity": "כמות טעינה", + "enterQuantity": "אנא הזן כמות", + "rechargeInstructions": "הוראות טעינה", + "automaticallyCredited": "כתובת זו היא כתובת ההפקדה האחרונה שלך. כאשר המערכת תקבל הפקדות, הן יזוכו אוטומטית.", + "tran": "יש לאשר את ההעברה על ידי רשת הבלוקצ'יין כולה. כאשר יתקבלו {num} אישורי רשת, ה-{name} שלך יופקד אוטומטית לחשבונך.", + "only": "אנא שלחו רק את {name} לכתובת זו. שליחת מטבעות דיגיטליים אחרים לכתובת זו תגרום לאובדן קבוע.", + "low": "הנמוך ביותר", + "addressList": "רשימת כתובות", + "enterDrawAddress": "אנא הזן את כתובת המשיכה", + "invalidWallet": "כתובת ארנק אינה חוקית, אנא הזן שוב", + "withdrawalsNumber": "כמות משיכה", + "enterDrawNum": "אנא הזן את סכום המשיכה", + "withdrawalInstructions": "הוראות משיכה", + "enterAddress": "אנא בדוק היטב והזן את כתובת ארנק המשיכה הנכונה.", + "notSend": "שליחת מטבעות דיגיטליים שאינם תואמים לכתובות ארנק תגרום להפסדים קבועים.", + "deductionFee": "דמי משיכה ינוכו מסכום המשיכה.", + "submitSuccess": "ההגשה הצליחה, ביקורת מתבצעת", + "operationComplete": "בקשת המשיכה שלך נכנסה לתהליך ביקורת. זמן הביקורת המשוער הוא 12 שעות. אנא המתן בסבלנות. ניתן גם לבדוק את עדכון הסטטוס בדף רישום המשיכה", + "rechargeRecord": "טעינת רשומה", + "withdrawalRecord": "רשומת משיכה", + "assetsName": "אנא הזן את שם הנכס", + "selectStatus": "אנא בחר את הסטטוס", + "startTime": "תאריך התחלה", + "entTIme": "תאריך סיום", + "date": "תאריך", + "hash": "חשיש", + "num": "מספר", + "progress": "התקדמות", + "status": "סטטוס", + "error": "נכשל", + "success": "הצלחה", + "underReview": "נמצא בבדיקה", + "handlingFee1": "דמי טיפול", + "processing": "עיבוד", + "transfer": "העברת כספים", + "transferDescription": "תיאור העברת הכספים", + "handlingFee": "שימו לב כי העברות כספים פנימיות מתבצעות באופן אוטומטי ואינן כרוכות בדמי טיפול.", + "onlyForeignExchange": "ניתן להעביר רק את הסכום של {name} לחשבון חוזה ה-FX שלך", + "onlySustainable": "ניתן להעביר רק את {name} לחשבון החוזה הקבוע שלך", + "inCase1": "אם ברצונך לסחור בחוזי מט ח, עליך להעביר את {name} לחשבון חוזי המט ח שלך כביטחונות.", + "inCase2": "אם ברצונך לסחור בחוזים קבועים, עליך להעביר את {name} לחשבון החוזה הקבוע שלך כביטחונה.", + "transferRecord": "רשומת העברה", + "allTransfer": "כל רשומות העברת הנכסים", + "direction": "כיוון", + "all": "הכל", + "dateTime": "שעה", + "UserWallet": "חשבון נכס", + "ContractAccount": "חשבון חוזה", + "LeverageAccount": "חשבון מינוף", + "FinancialAccount": "חשבון פיננסי", + "contractFlow": "זרימת חוזה", + "info": "פרטים", + "money": "סכום", + "Authentication": "אימות", + "relatedassets": "כתובת זו תומכת רק בנכסים הקשורים ל-ETH/ERC20" + }, + "contact": { + "contact": "צור קשר", + "help": "אנא צרו קשר אם אתם זקוקים לעזרה", + "fullName": "שם מלא", + "enterFullName": "אנא הזן את שמך המלא", + "email": "דוֹאַר", + "enterEmail": "אנא הזן את כתובת הדוא ל שלך", + "consultingService": "פרויקט ייעוץ", + "pleseSelect": "אנא בחר", + "info": "מֵידָע", + "enterInfo": "אנא הזן מידע", + "contactInformation": "פרטי קשר", + "routineConsultation": "ייעוץ כללי", + "customerService": "שֵׁירוּת לָקוֹחוֹת", + "mediaCooperation": "שיתוף פעולה בתקשורת", + "submit": "לְהַגִישׁ" + }, + "college": { + "college": "הוֹרָאָה", + "article": "בלוג", + "tutorialDetails": "פרטי הדרכה", + "howToBuyBitcoin": "כיצד לקנות ביטקוין", + "recommendedCourse": "קורס מומלץ", + "buy": "קנה ביטקוין אחד בדקה אחת", + "register": "רשום", + "visit": "בקר באתר {name} ורשום את חשבון {name} שלך", + "realName": "אימות שם אמיתי", + "upload": "העלה אישורים חוקיים לאימות אישי של שם אמיתי", + "quickBuy": "קנה ושלם בקליק אחד", + "inIndex": "קנה מטבעות בקליק אחד בדף הבית/דף קנה מטבעות, והמתן לשחרור המטבעות לאחר השלמת התשלום", + "tradeNow": "סחר עכשיו", + "currencyTransaction": "הבן עסקאות מטבע בשניות", + "contractEntryTransaction": "עסקת הזנת חוזה", + "how": "כיצד לסחור באופציות", + "TradingStrategy": "TradingStrategy", + "seeMore": "ראה עוד", + "industryResearch": "מחקר בתעשייה", + "oneClick": "מסחר חכם בקליק אחד", + "inAssets": "הפקד מטבעות בקליק אחד בדף הנכסים/הפקדה, ותוכל לסחור לאחר השלמתו", + "dictionary": "מילון בלוקצ'יין", + "media": "דיווחים בתקשורת" + }, + "home": { + "newEra": "עידן חדש של מסחר במטבעות דיגיטליים", + "startTrading": "התחל לסחור", + "walkingLantern": "פנס מהלך", + "marketCenter": "שוק מסחר", + "optional": "אופציונלי", + "latestPrice": "מחיר", + "upAndDown": "למעלה ולמטה", + "heigh": "המחיר הגבוה ביותר", + "low": "המחיר הנמוך ביותר", + "vol": "נפח מסחר", + "coinType": "זוג מסחר", + "more": "הצג עוד", + "multiPlatform": "הורדה מרובת פלטפורמות", + "atTime": "בכל זמן, בכל מקום", + "multiTerminal": "מסחר בטרמינלים מרובי פלטפורמות", + "cover": "כיסוי", + "multiTerminal1": "מספר פלטפורמות", + "support": "תמיכה בפונקציות עסקיות מלאות", + "down": "הורדה", + "news": "חדשות שוק", + "detail": "הצג פרטים", + "quickly": "התחילו במהירות", + "major": "אנו מספקים שירותים מקצועיים למשקיעים", + "safe": "שירות עסקאות בטוח", + "login": "התחברות", + "reg": "הרשמה", + "trading": "עבור למסחר", + "add": "נוסף בהצלחה", + "cancel": "הביטול הצליח", + "features": "יתרונות מרכזיים", + "partners": "מוסדות השקעה ושותפים", + "perpetual_title": "חוזה נצחי על מטבע חוץ", + "perpetual_cont": "כחוזה הפורקס התמידי הראשון בעולם המבוסס על מטבע יציב עם מינוף מקסימלי של פי 100, חוזה הפורקס התמידי של AMATAK הוא בחירה משתלמת למסחר מהיר בפורקס.", + "stablecoin_title": "מרכז המסחר הראשון בעולם בסטייבלקוינים", + "stablecoin_cont": "AMATAK בנתה מערכת אקולוגית חזקה של סטייבל-קוין, מסגרת שלמה המורכבת מעסקאות, תשלומים והעברות כספים של סטייבל-קוין, והפכה לחלק ממועדון הסטייבל-קוין האיכותי העולמי!", + "security_title": "אבטחה ללא דופי", + "security_cont": "AMATAK משתמשת ב-Ledger Vault המתקדמת כדי להגן על אבטחת נקודות הקצה של מטבעות דיגיטליים. פלטפורמת Ledger Vault מספקת ביטוח של עד 150 מיליון דולר מפני גניבת צד שלישי, קנוניה פנימית וגניבת זרעים ראשיים. יותר מ-98% מהמטבעות הדיגיטליים המאוחסנים ב-AMATAK מאוחסנים בארנקים קרים מרובי חתימות, והסטנדרטים הגבוהים ביותר של תהליכי בקרת סיכוני שוק משמשים כדי להבטיח את שלומם של כל כספי המשתמשים.", + "service_title": "שירות לקוחות רב-לשוני בזמן אמת 24/7", + "service_cont": "שירות הלקוחות של AMATAK זמין 24/7 כדי לעזור לכם בכל דרך אפשרית. צרו איתם קשר באמצעות צ'אט חי או דוא ל support@AMATAK.com.", + "analy_title": "כלי ניתוח מתקדמים", + "analy_cont": "סוחרים יכולים להשתמש בכלי גרפים ואינדיקטורים שונים המבוססים על נתונים יציבים כדי לסייע במסחר בדף המסחר.", + "liquidity_title": "נזילות מצוינת", + "liquidity_cont": "התחבר לנזילות הגבוהה של פלטפורמת המסחר AMATAK 24/7 בכל עת.", + "technology_title": "טכנולוגיה שפותחה באופן עצמאי", + "technology_cont": "פלטפורמת המסחר של AMATAK מבוססת על טכנולוגיה שעברה ניסיון רב ונבנתה על ידי מומחים מובילים בתעשייה כדי לייעל את תפקודי הפלטפורמה במידה המרבית.", + "download": "הורד את אפליקציית AMATAK לנייד", + "easy": "התחילו לסחור בטלפון הנייד שלכם בכל זמן ובכל מקום", + "skan": "סרוק את הקוד כדי להוריד עכשיו", + "core_advantages": "היתרון המרכזי שלי הוא נתונים", + "about_us": "אודותינו" + }, + "option": { + "waitFor": "המתן", + "history": "מסירה היסטורית", + "orderNum": "מספר הזמנה", + "option": "אפשרויות", + "buyTime": "לקנות זמן", + "buyAmount": "כמות קנייה", + "buyType": "סוג קנייה", + "yield": "תְשׁוּאָה", + "state": "מְדִינָה", + "deliverytime": "זמן אספקה", + "countDown": "ספירה לאחור למשלוח", + "buyingUp": "קונים למעלה", + "buyDwon": "לקנות", + "buyEven": "קנה זוג", + "result": "סרט משלוח", + "settlementQuantity": "כמות התשלום", + "up": "לעלות", + "down": "למטה", + "flat": "שָׁטוּחַ", + "buyOption": "אופציית קנייה", + "deliveryRecord": "רשומת משלוח", + "current": "נוכחי", + "next": "הגיליון הבא", + "enterNum": "אנא הזינו את מספר הנשים שייגרשו", + "balance": "איזון", + "expectedRevenue": "סרטים צפויים", + "seeMore": "ראה עוד", + "beBearish": "להיות דובי", + "time": "זמן", + "zf": "עלייה קטנה", + "bullish": "שורי", + "lookAtPing": "הבט בפינג", + "bearish": "הבט על הכביש", + "amount": "כמות", + "coinType": "מטבע", + "odds": "קְטָטָה", + "buySuccess": "קנה הצלחה" + }, + "order": { + "noData": "אין רישום עסקה", + "ifCancel": "בטל את ההזמנה הנוכחית", + "cancelSuccess": "אין הצלחה במכירה", + "marketPrice": "מסחר במחיר שוק", + "fixedPrice": "מחיר קבוע חמישה שימושים", + "sell": "למכור", + "buy": "לקנות", + "exchangeRecord": "היסטוריית עסקאות", + "see": "לִבדוֹק", + "opt": "פעולה", + "status": "סטטוס", + "time": "זמן", + "tradingPair": "זוג מסחר", + "direction": "כיוון", + "type": "סוג", + "averagePrice": "מחיר כולל", + "price": "מחיר", + "matched": "תואם", + "totalAmountEntrusted": "סקירת מוסמכים", + "total": "סַך הַכֹּל", + "toMatch": "Wei Shi He", + "operation": "פעולה", + "reset": "איפוס", + "search": "חיפוש", + "to": "אֶל", + "startTime": "שעת התחלה", + "endTime": "תאריך סיום", + "select": "אנא בחר", + "entrustType": "סוג הפקדה", + "spotConsignment": "משלוח נקודתי", + "commission current": "הוועדה הנוכחית", + "commissionRecord": "רשומת עמלה", + "optionTransaction": "עסקת אופציה", + "orderNum": "מספר הזמנה", + "timeSharing": "שיתוף זמן", + "yield": "תְשׁוּאָה", + "buyNum": "כמות קנייה", + "upAndDown": "למעלה ולמטה", + "settlementQuantity": "כמות התשלום", + "transactionPrice": "מחיר עסקה", + "tradingVolume": "חמישה כרכים", + "aTurnover": "סכום משלוח", + "serviceCharge": "דמי שירות", + "cancel": "לְבַטֵל", + "buyTime": "לקנות זמן", + "buyUp": "לקנות", + "buyDown": "לקנות", + "buyLevel": "רמת קנייה" + }, + "profile": { + "tips": "מגבלת משיכה, אם אתם זקוקים למגבלת משיכה גבוהה יותר, אנא השלמו הסמכה מתקדמת", + "SelectAreaCode": "בחר קידומת", + "driverLicense": "רישיון נהיגה", + "country": "מדינה", + "country1": "אנא הזן את המדינה", + "realName": "אימות שם אמיתי", + "primaryCertification": "הסמכה ראשית", + "advancedCertification1": "בקשה להסמכה מתקדמת", + "advancedCertification2": "הוגשה בקשה להסמכה מתקדמת", + "toExamine": "ביקורת", + "fullName": "שם", + "legal": "חוקי", + "pleaseEnterName": "אנא הזן את שמך", + "dateOfBirth": "תאריך לידה", + "selectDate": "בחר תאריך", + "documentType": "סוג תעודה", + "pelaseSelect": "מספר תעודה", + "certificateNumber": "מספר זהות", + "endterIDNumber": "אנא הזן את מספר הזיהוי שלך", + "addressInfo": "פרטי כתובת", + "residentialAddress": "כתובת מגורים", + "residentialAddress1": "אנא הזן את כתובת המגורים שלך", + "ciy": "עיר", + "incity": "אנא הזן את עירך", + "postalCode": "מיקוד", + "thePostcode": "אנא הזן את המיקוד", + "additionalInformation": "מידע נוסף", + "optional": "אופציונלי", + "contactInformation": "פרטי קשר", + "phoneNumber": "מספר טלפון", + "enterPhoneNumber": "אנא הזן את מספר הטלפון שלך", + "clickUpload1": "על ידי לחיצה להעלאת הקובץ ושליחת אימות הזהות, משמעות הדבר היא שקראת והסכמת לתנאי השירות ולהסכם הפרטיות שלנו.", + "pelaseDownload": "אנא בחר קובץ שפג תוקפו מהארכיונים הבאים", + "passport": "דרכון", + "drivingLicense": "רישיון נהיגה", + "iD": "תעודת זהות", + "upload": "העלאה", + "explain": "הסבר", + "unexpired": "מסמכים שלא פג תוקפם יכולים להיות תמונות או עותקים סרוקים", + "pleaseConfirm": "אנא אשרו שכל הפרטים בתמונת הזיהוי ברורים ואינם מכוסים", + "fileFormat": "פורמט קובץ", + "maximumFileSize": "גודל קובץ מקסימלי", + "positive": "הצד החיובי של המסמך", + "theOtherSide": "הצד השני של המסמך", + "hold": "תעודת החזקה", + "dragHere": "גרור לכאן, או", + "clickUpload": "לחץ להעלאה", + "uploadPhoto": "אנא העלה תמונה מקדימה של תעודת הזהות שלך", + "reversePhoto": "אנא העלה את הצד האחורי של תעודת הזהות שלך", + "uploadIDCard": "אנא העלה תמונה שבה תעודת הזהות שלך", + "nextStep": "הצעד הבא", + "inSubmit": "בקשת האימות שלך נשלחה! נעדכן אותך ברגע שנקבל את התוצאה", + "gotIt": "הבנתי", + "congratulations": "מזל טוב", + "back": "חזרה", + "resetApply": "האם להגיש בקשה מחדש.", + "recertification": "הסמכה מחודשת", + "userInfo": "פרטי חשבון", + "verState": "סטטוס אימות", + "max": "מקסימום", + "limitH": "מגבלת משיכה שעתית.", + "verLeave": "רמת אימות", + "exceed": "לחרוג", + "contactUs": "צור קשר", + "inviteFriends": "הזמן חברים", + "dividends": "הזמן חברים להשתמש ב-{name} ולקבל {num} מעמלות העסקה העתידיות שלהם כדיבידנדים.", + "sendInvitation": "שלח הזמנה", + "resetPassword": "איפוס סיסמה", + "forLoginAccount": "להתחברות לחשבון.", + "clickReset": "לחץ לאיפוס", + "registrationDecord": "רשומת רישום", + "recording": "משמש להצגת רשומות התחברות היסטוריות מפורטות", + "recordingDEtail": "הקלטה מפורטת", + "invitationReward": "פרס הזמנה", + "inviteUse": "הזמן חברים להשתמש", + "futureCommission": "קבל {num} מעמלות העסקאות העתידיות של חברך כתגמולי דיבידנד", + "joinThePlan": "הצטרף לתוכנית הדיבידנד של המשתמש {name} באמצעות הזמנה", + "checkMyDividend": "בדוק את הדיבידנד שלי", + "step1": "הצעד הראשון", + "shareLink": "שתף קישור", + "step2": "שלב 2", + "shareFriend": "הזמן חברים", + "step3": "שלב 3", + "instantDividend": "דיבידנדים מיידיים", + "invitationInformation": "מידע על ההזמנה", + "invitationLink": "קישור להזמנה", + "invitationCode": "קוד הזמנה", + "registeredUser": "משתמש רשום", + "accountNumber": "מספר חשבון", + "registrationTime": "שעת רישום", + "activityTerms": "תנאי פעילות", + "handlingFeeDividend": "דיבידנד של דמי טיפול", + "equalInvitee": "שווה למוזמן", + "fee": "עמלת עסקה", + "afterThat": "לאחר שהאדם המוזמן סחר", + "follow": "העברה לחשבון המזמין תוך דקות.", + "limit": "האירוע פועל לפי זמני ההתחלה והסיום הבאים, והוא זמין רק לחשבונות תקפים לאחר שעת תחילת האירוע ולפני שעת סיום האירוע", + "activityStartTime": "שעת תחילת הפעילות", + "Y": "שנה", + "M": "חודש", + "D": "יְוֹם", + "endTime": "שעת סיום האירוע", + "proceed": "המשך", + "atAnyTime": "שומרת לעצמה את הזכות לשנות, להשעות או לסיים את תוכנית הזמנות המשתמשים של {name} בכל עת ללא הודעה מוקדמת", + "reservedRights": "שומרת לעצמה את הזכות לא להנפיק דיבידנדים של עמלות לחשבונות כפולים או חשבונות מזויפים", + "canDecide": "יכול להחליט לפי שיקול דעתו הבלעדי לקבל או לדחות משתמשים ספציפיים שהוצגו או הוזמנו לפלטפורמת {name} {link}", + "bill": "גישה לרשומות", + "date": "תאריך", + "address": "מיקום", + "equipment": "ציוד", + "preliminary": "האימות הראשוני הצליח", + "clickToVerify": "לחץ כדי לאמת", + "clickToVerify1": "הושלם", + "tips1": "הסמכה ראשונית: כדי לבחור במזומן, עליך להשלים הסמכה מתקדמת.", + "tips2": "הסמכה מתקדמת: מגבלת משיכה של עד 5000 דולר אמריקאי תוך 24 שעות. אם אתם זקוקים לסכום משיכה גדול יותר, אנא צרו קשר עם שירות הלקוחות" + }, + "setting": { + "smsVer": "אימות SMS", + "enterCode": "אנא הזן את קוד האימות", + "emailVer": "אימות דוא ל", + "enterEmailVer": "אנא הזן את קוד אימות הדוא", + "ver": "אמת", + "enterNameCode": "אנא הזן את קוד האימות של {name}", + "openSuccess": "פתיחה בהצלחה", + "closeSuccess": "נסגר בהצלחה", + "email": "דוֹאַר", + "enterEmail": "אנא הזן את כתובת הדוא", + "emailVerCode": "קוד אימות דוא", + "enterSmsCode": "אנא הזן את קוד האימות של ה-SMS", + "bind": "קשור", + "unbind": "לשחרר", + "bindSuccess": "הקישור הצליח", + "unbindSuccess": "ניתוק הקישור הצליח", + "scanQrCode": "אנא סרוק את קוד ה-QR", + "howToOpen": "למד כיצד לפתוח את אימות הדו-שלבי של {name}", + "read": "לחץ כאן כדי לקרוא את פרטי ההתקנה", + "verKey": "מפתח אימות", + "safeSetting": "הגדרות בטיחות", + "loginPassword": "סיסמת התחברות", + "resLoginPassword": "איפוס סיסמת ההתחברות", + "transactionPassword": "סיסמת עסקה", + "usedFor": "משמש להגשת חוזים והוראות ספוט", + "notOpen": "לא פתוח", + "modifyPassword": "שינוי סיסמה", + "setPassword": "הגדר סיסמה", + "verCode": "קוד אימות", + "forLogin": "לשינוי הגדרות התחברות, משיכה ואבטחה", + "alLast": "פתח לפחות ערוץ אימות אחד", + "close": "סגור", + "open": "פתוח", + "phone": "מספר טלפון נייד", + "area": "אנא הזן את קידומת האזור", + "enterPhone": "אנא הזן את מספר הטלפון שלך", + "newPassword": "סיסמה חדשה", + "passwordIs": "סיסמת העסקה היא {num} סיביות", + "enterNewPassword": "אנא הזן את הסיסמה החדשה שלך", + "confirmPassword": "אשר סיסמה", + "pleaseConfirmPassword": "אנא אשר את הסיסמה", + "operationSuccess": "הפעולה בוצעה בהצלחה", + "combination": "הסיסמה דורשת שילוב של אותיות ומספרים", + "changeSuccess": "השינוי הצליח" + }, + "purchase": { + "sendPrice": "מחיר הנפקה", + "subscriptionCurrency": "מטבע המנוי", + "expected": "זמן שיגור צפוי", + "startTime": "זמן תחילת המנוי", + "applyForPurchase": "זמן סיום הרכישה", + "enterNum": "אנא הזן את הכמות", + "all": "הכל", + "subscribeNow": "הירשם עכשיו", + "subscriptionCycle": "מחזור מנוי", + "projectWarmUp": "פרויקט חימום", + "startSubscription": "התחלת מנוי", + "endOfSubscription": "סיום המנוי", + "announceResults": "הכרזה על תוצאות", + "projectCetails": "פרטי הפרויקט", + "useOrNot": "האם להשתמש", + "subscribe": "הירשם", + "prompt": "הנחיה", + "subscribeSuccess": "ההרשמה הצליחה" + }, + "contract": { + "a0": "חשבון חוזה", + "a1": "העברת כספים", + "a2": "הון עצמי בחשבון", + "a3": "זמין", + "a4": "שולי מיקום", + "a5": "הקפאת אמון", + "a6": "רווח והפסד שלא מומשו", + "a7": "שיעור סיכון", + "a8": "מחיר פירוק משוער", + "a9": "חוזה", + "b0": "מינוף", + "b1": "זמן", + "b2": "סוג עסקה", + "b3": "העסקה הושלמה", + "b4": "סכום כולל של הפקדה", + "b5": "מחיר עסקה ממוצע", + "b6": "מחיר הזמנה", + "b7": "שוליים", + "b8": "דמי טיפול", + "b9": "סטטוס", + "c0": "פעולה", + "c1": "ביטול הזמנה", + "c2": "ביטול", + "c3": "האם לבטל את ההזמנה הנוכחית", + "c4": "ביטול", + "c5": "אישור", + "c6": "בוטל", + "c7": "לא נמכר", + "c8": "נסחר חלקית", + "c9": "הכל נמכר", + "d0": "קנייה לונג", + "d1": "קנייה לסגירה בחסר", + "d2": "מכירה ופתיחה בחסר", + "d3": "מכירה לסגירה לונג", + "d4": "בוטל בהצלחה", + "d5": "מצב פתוח", + "d6": "עמדה סגורה", + "d7": "מחיר טריגר", + "d8": "מחיר", + "d9": "מחיר שוק", + "e0": "מחיר מגבלה", + "e1": "כמות", + "e2": "לִפְתוֹחַ", + "e3": "מרווח נדרש", + "e4": "פוזיציות ארוכות", + "e5": "פוזיציית שורט", + "e6": "שור", + "e7": "ניתן לפתיחה", + "e8": "דובי", + "e9": "ניתן להעלות את הרמה", + "f0": "מחיר", + "f1": "פתיחה ארוכה", + "f2": "פתיחה קצרה", + "f3": "האם", + "f4": "מינוף", + "f5": "ההרצה בוצעה בהצלחה", + "f6": "סגירת הפוזיציה בהצלחה", + "f7": "שוק", + "f8": "עסקה בזמן אמת", + "f9": "הכל", + "g0": "קנייה", + "g1": "מכירה", + "g2": "נצבר", + "g3": "המחיר האחרון", + "g4": "פרטים", + "g5": "היסטוריה", + "g6": "זמן עסקה", + "g7": "מיקום", + "g8": "ניתן להעלות את הרמה", + "g9": "מחיר פתיחה ממוצע", + "h0": "שיעור תשואה", + "h1": "סגירת השוק", + "h2": "האם לסגור במחיר השוק", + "h3": "כל הרמות", + "h4": "הצלחה", + "h5": "זוגות מסחר", + "h6": "עלייה/ירידה", + "h7": "המחיר הגבוה ביותר", + "h8": "המחיר הנמוך ביותר", + "h9": "נפח מסחר", + "i0": "מצב החזקה", + "i1": "ההזמנה הנוכחית", + "i2": "הוועדה ההיסטורית", + "i3": "כיוון", + "i4": "מרובה", + "i5": "ריק", + "i6": "הצג רק את הנוכחי", + "i7": "עצור את הרווח", + "i8": "עצור הפסד", + "i9": "עצור רווח וסגור הפסד", + "j0": "רווח והפסד", + "j1": "מחיר העסקה האחרון", + "j2": "מחיר פתיחה ממוצע", + "j3": "מחיר טריגר לניצול רווח", + "j4": "מחיר טריגר סטופ-לוס", + "j5": "מחיר שוק", + "j6": "הוראה לקיחת רווח תופעל, והרווח וההפסד המשוערים לאחר השלמת העסקה יועברו", + "j7": "הוראה על הפסד תופעל, והרווח וההפסד הצפויים לאחר השלמת העסקה", + "j8": "חוזה פתוח לתמיד", + "j9": "נפתח בהצלחה", + "k0": "ההגדרה בוצעה בהצלחה", + "k1": "רווח והפסד של יישוב", + "k2": "יתרה מלאה בלחיצה אחת", + "k3": "היפוך בלחיצה אחת", + "k4": "האם לסגור את כל החשבונות בלחיצה אחת", + "k5": "האם להפוך בלחיצה אחת", + "k6": "כל ההגרלות בוצעו בהצלחה", + "k7": "הצלחה הפוכה", + "k8": "אנא התחבר תחילה כדי לרכוש", + "k9": "אנא הזן את קוד המנוי", + "l1": "הגדלת יחס", + "l2": "שוליים" + }, + "otc": { + "a0": "אנא בחר את סוג העסקה", + "a1": "לקנות", + "a2": "למכור", + "a3": "מטבע העסקה", + "a4": "אנא בחר מטבע", + "a5": "כמות", + "a6": "אנא הזן את הכמות", + "a7": "מחיר", + "a8": "אנא הזן את המחיר", + "a9": "מינימום עסקה בודדת", + "b0": "מקסימום עסקה בודדת", + "b1": "אליפיי", + "b2": "ויצ'אט", + "b3": "כרטיס אשראי", + "b4": "הערות", + "b5": "אנא הזן הערות", + "b6": "פורסם בהצלחה", + "b7": "לקנות", + "b8": "למכירה", + "b9": "בוטל", + "c0": "מסחר", + "c1": "הושלם", + "c2": "מספר פרסומת", + "c3": "סטטוס", + "c4": "מחיר כולל", + "c5": "מחיר ליחידה", + "c6": "נותרים", + "c7": "זמן שחרור", + "c8": "אמצעי תשלום", + "c9": "פעולה", + "d0": "מהמדף", + "d1": "האם להסיר את הפרסומת הנוכחית", + "d2": "טיפים חמים", + "d3": "בוטל בהצלחה", + "d4": "פרטי הזמנה", + "d5": "מספר הזמנה", + "d6": "תשלום", + "d7": "שם", + "d8": "חשבון", + "d9": "בנק לפתיחת חשבון בנק", + "e0": "פותח ענף", + "e1": "זמן שנותר", + "e2": "נקודות", + "e3": "שניות", + "e4": "שובר תשלום", + "e5": "העלה קוד QR לתשלום", + "e6": "אנא העלה קבלה לתשלום", + "e7": "ממתין להעלאת קונים", + "e8": "ביטול הזמנה", + "e9": "אישור תשלום", + "f0": "טרם התקבל", + "f1": "אישור תשלום", + "f2": "לבטל את ההזמנה הנוכחית?", + "f3": "אישור", + "f4": "ביטול", + "f5": "ההזמנה בוטלה", + "f6": "אישור התשלום הנוכחי", + "f7": "הפעולה הסתיימה בהצלחה", + "f8": "לאחר אישור הקבלה, הנכסים למכירה יועברו אוטומטית", + "f9": "לאחר אישור כי התשלום לא התקבל, הזמנה זו תיכנס אוטומטית לתהליך ערעור", + "g0": "פרסם פרסומת", + "g1": "משתמש", + "g2": "סַך הַכֹּל", + "g3": "מוגבל", + "g4": "אמצעי תשלום", + "g5": "סכום כולל", + "g6": "ההזמנה בוצעה בהצלחה", + "g7": "הוראת מכירה", + "g8": "הזמנת קנייה", + "g9": "הזמנת רכש פרסומית", + "h0": "הזמנת מכירת פרסומת", + "h1": "הכל", + "h2": "סגור", + "h3": "ממתין לתשלום", + "h4": "יאושר", + "h5": "הערעור בתהליך", + "h6": "כמות עסקה", + "h7": "אובייקט עסקה", + "h8": "זמן", + "h9": "פרטים", + "i0": "אנא הזן את מספר החשבון שלך", + "i1": "אנא הזן את שמך", + "i2": "קוד QR לתשלום", + "i3": "שמור", + "i4": "שם הבנק", + "i5": "אנא הזן את שם הבנק", + "i6": "אנא הזן את הסניף בו פתחת את חשבונך", + "i7": "מספר כרטיס בנק", + "i8": "אנא הזן את מספר כרטיס האשראי שלך", + "i9": "נערך בהצלחה", + "j0": "נוסף בהצלחה", + "j1": "חשבון מטבע פיאט", + "j2": "נכסים", + "j3": "יתרה זמינה", + "j4": "הקפאת יתרה", + "j5": "מסחר במטבע פיאט", + "j6": "הפרסומת שלי", + "j7": "ההזמנה שלי", + "j8": "פרסומת", + "j9": "רכישה בלחיצה אחת", + "k0": "מכירה בלחיצה אחת", + "k1": "סכום קנייה", + "k2": "כמות רכישה", + "k3": "סכום מכירה", + "k4": "כמות שנמכרה", + "k5": "אנא הזן את סכום הרכישה", + "k6": "אנא הזן את כמות הרכישה", + "k7": "אנא הזן את סכום המכירה", + "k8": "אנא הזן את הכמות למכירה", + "k9": "קנה לפי כמות", + "l0": "הוראות עסקה במטבע פיאט", + "l1": "נפח עסקאות מינימלי", + "l2": "אישור רכישה", + "l3": "אישור מכירה", + "l4": "איזון לא מספק", + "l5": "זמן הזמנה", + "l6": "אנא בחר אמצעי תשלום", + "l7": "מוטב", + "l8": "גביית תשלומים חריגה", + "l9": "אנא הזן את סיסמת העסקה", + "m0": "בתשלום", + "m1": "הביקורת עברה", + "m2": "הביקורת נכשלה", + "m3": "ההזמנה הסתיימה", + "m4": "הזמנה בוטלה" + }, + "cxiNewText": { + "a0": "10 המובילים", + "a1": "5 מיליון+", + "a2": "< 0.10%", + "a3": "200+", + "a4": "דירוג עולמי", + "a5": "המשתמשים סומכים עלינו", + "a6": "עלות נמוכה במיוחד", + "a7": "מדינה", + "a21": "להרוויח באופן מיידי", + "a22": "צור תיק מטבעות קריפטוגרפיים אישי", + "a23": "קנה, סחר והחזק מעל 100 מטבעות קריפטוגרפיים", + "a24": "טעינת החשבון", + "a25": "הרשמה באמצעות דוא ל", + "a38": "התחילו לסחור בכל זמן, בכל מקום.", + "a39": "התחילו לסחור בכל עת, בצורה מאובטחת ונוחה דרך האפליקציה והאתר שלנו.", + "a40": "סרוק את הקוד כדי להוריד את האפליקציה", + "a41": "פלטפורמת מסחר בקריפטו ראויה לאמון המשתמשים", + "a42": "אנו מחויבים לספק למשתמשים שלנו הגנה בטוחה בנהיגה באמצעות פרוטוקולים מחמירים ואמצעים טכניים מובילים בתעשייה.", + "a43": "נכסי אבטחת משתמש", + "a44": "אנו מפקידים 10% מכל עמלות העסקה לקרנות נכסים בטוחות כדי לספק הגנה חלקית לכספי המשתמשים.", + "a45": "בקרת גישה מותאמת אישית", + "a46": "בקרת גישה מותאמת אישית מגבילה את המכשירים והכתובות שניגשים לחשבונות אישיים, ומעניקה למשתמשים שקט נפשי.", + "a47": "הצפנת נתונים מתקדמת", + "a48": "נתוני עסקאות אישיים מוגנים על ידי הצפנה מקצה לקצה, ורק האדם יכול לגשת למידע אישי.", + "a57": "לחץ כדי להמשיך", + "a71": "מדריך למתחילים", + "a72": "התחילו ללמוד על מסחר במטבעות דיגיטליים עכשיו", + "a77": "כיצד לקנות מטבע דיגיטלי", + "a78": "כיצד למכור מטבע דיגיטלי", + "a79": "כיצד לסחור במטבע דיגיטלי", + "a80": "שוק מסחר", + "a81": "מגמת שוק של 24 שעות", + "a82": "הוסף כספי קריפטו לארנק שלך והתחל לסחור באופן מיידי" + }, + "homeNewText": { + "aa1": "שער למטבעות קריפטוגרפיים", + "aa2": "סחרו ביותר מ-100 מטבעות קריפטוגרפיים בצורה מאובטחת, מהירה וקלה", + "aa3": "הרשמה באמצעות דוא ל", + "aa4": "התחל לסחור עכשיו", + "aa5": "מגמות שוק", + "aa6": "אקספרס שוק הנכסים הדיגיטליים", + "aa7": "מטבע", + "bb1": "(USD) המחיר העדכני ביותר", + "bb2": "הגדלה של 24 שעות", + "bb3": "נפח מסחר של 24 שעות", + "bb4": "בורסת מטבעות קריפטוגרפיים לכולם", + "bb5": "התחילו לסחור כאן וחוו מסע טוב יותר של מטבעות קריפטוגרפיים", + "bb6": "אישי", + "bb7": "בורסת מטבעות קריפטוגרפיים לכולם. פלטפורמת המסחר המהימנה והמובילה ביותר עם מגוון רחב של מטבעות", + "cc1": "עסק", + "cc2": "נבנה עבור עסקים ומוסדות. מספקת פתרונות קריפטו למשקיעים מוסדיים ועסקים", + "cc3": "מפתח", + "cc4": "נבנה עבור מפתחים, כלים ו-APIs עבור מפתחים לבניית עתיד web3", + "cc6": "סרוק את קוד ה-QR", + "cc7": "הורדת אפליקציית אנדרואיד/IOS", + "dd1": "בטוח, יציב ואפס תאונות", + "dd2": "אסטרטגיות אבטחה מרובות, ערבות של 100% לקרן עתודה, לא התרחשו תאונות בטיחות מאז הקמתה", + "dd3": "סחר בנכסי קריפטו בקלות ובנוחות", + "dd4": "ב-CXIsux, המוצרים קלים להבנה, תהליכי העסקה נוחים, וזוהי פלטפורמת שירות נכסי בלוקצ'יין מקיפה", + "dd5": "מוצרים נגזרים", + "dd6": "ניתן לסחור ביותר מ-100 חוזים של מטבעות קריפטוגרפיים עם מינוף של עד פי 150 ולהרוויח תשואות גבוהות", + "ee1": "תמיכה בריבוי טרמינלים", + "ee2": "סחרו בנכסים דיגיטליים בכל זמן ובכל מקום", + "ee3": "תומך במגוון רחב של סוגי נכסים ומידע על מטבע זמין במלואו", + "ee4": "הבנה מהירה של תהליך עסקת נכסים דיגיטליים", + "ee5": "התחילו את מסע ההצפנה שלכם", + "ee6": "אימות גרפי", + "hh0": "שתפו את חוויית המסחר הטובה ביותר עם בורסות המסחר המובילות בעולם", + "hh1": "מחפש הזדמנויות מסחר", + "hh2": "סחרו ביותר מ-100 מטבעות קריפטוגרפיים בצורה מאובטחת, מהירה וקלה", + "hh3": "למד על המוצרים שלנו", + "hh4": "התחילו לסחור כאן וחוו מסע טוב יותר של מטבעות קריפטוגרפיים", + "hh5": "מסחר נקודתי", + "hh6": "קנה ומכור מעל 100 מטבעות קריפטוגרפיים עם עמלות מסחר מוזלות", + "hh7": "מסחר בחוזים", + "hh8": "הגדל את הכנסתך באמצעות חוזי USDT קבועים", + "hh9": "סחר בנכסי קריפטו בקלות ובנוחות", + "hh10": "המוצר קל להבנה, תהליך העסקה נוח, וזוהי פלטפורמת שירות נכסי בלוקצ'יין מקיפה", + "hh11": "ניהול קרנות", + "hh12": "קבל תשואות גבוהות באמצעות מוצרי ההימור המגוונים שלנו", + "hh13": "נגזרים", + "hh14": "ניתן לסחור ביותר מ-100 חוזים של מטבעות קריפטוגרפיים עם מינוף של עד פי 150 ולהרוויח תשואות גבוהות", + "hh15": "בטוח, יציב וללא תאונות", + "hh16": "אסטרטגיות אבטחה מרובות, ערבות של 100% לקרן עתודה, לא התרחשו תאונות בטיחות מאז הקמתה", + "hh17": "BXRCO-למה לבחור ב", + "hh18": "בורסת הקריפטו המהימנה שלך", + "hh19": "בטיחות", + "hh20": "מאז 2020, BXRCO פועלת ביציבות ובאמינות בעזרת מערכת שפיתחה באופן עצמאי", + "hh21": "שירות", + "hh22": ".ניתן לקבל תשובות מיידיות במוקד השירות או ליצור איתנו קשר במייל 24/7", + "hh23": "קל לשימוש", + "hh24": "BXRCO הופך את המסחר במטבעות קריפטוגרפיים לקל. קנו מטבעות בלחיצה אחת ואל תחמיצו את ההזדמנות החולפת להרוויח כסף", + "hh25": "קנייה ומכירה גמישות", + "hh26": "מטבעות קריפטוגרפיים מרובים תומכים בעסקאות, הישארו מעודכנים במגמה, כך שלא תפספסו הזדמנויות להתעשר", + "hh27": "התחל לסחור בעוד דקה", + "hh28": "צור חשבון BXRCO בחינם", + "hh29": "הסמכה מלאה", + "hh30": "בצע עסקה", + "hh31": "סחור בכל מקום", + "hh32": "הישארו מעודכנים בעזרת האפליקציה ולקוח שולחן העבודה שלנו", + "hh33": "סרוק את הקוד כדי להוריד עכשיו", + "hh34": "הירשמו והתחלו לסחור", + "hh35": "הירשמו עכשיו", + "hh36": "הירשמו עכשיו באמצעות דוא ל", + "hh37": "דירוג עולמי", + "hh38": "משתמשים סומכים עלינו", + "hh39": "עמלות נמוכות במיוחד", + "hh40": "מדינות", + "hh41": "BXRCO, מסחר בכל זמן, בכל מקום", + "hh42": "סחור עכשיו", + "hh43": "APP BXRCO כדי להוריד את QR-סרוק את קוד ה" + } +} \ No newline at end of file diff --git a/src/i18n/index.js b/src/i18n/index.js new file mode 100644 index 0000000..a907365 --- /dev/null +++ b/src/i18n/index.js @@ -0,0 +1,49 @@ +import Vue from 'vue' +import VueI18n from 'vue-i18n' +// import enLocale from 'element-ui/lib/locale/lang/en' +// import zhLocale from 'element-ui/lib/locale/lang/zh-CN' +import en from './en.json' +import cn from './cn.json' +import tw from './tw.json' +import jp from './jp.json' +import qs from 'qs' +import kor from './kor.json' +import de from './de.json' +import fin from './fin.json' +import fra from './fra.json' +import it from './it.json' +import pl from './pl.json' +import pt from './pt.json' +import spa from './spa.json' +import swe from './swe.json' +import ukr from './ukr.json' +import tr from './tr.json' +import he from './he.json' + +Vue.use(VueI18n) + +let UALang; +// 检测中文简体和翻译 +// if (navigator.language.startsWith("zh")) { +// UALang = _.trimStart(navigator.language, 'zh-').toLowerCase() +// } else { + UALang = "en";// 其余英文 +// } + +let local = localStorage.lang || UALang; +// 检测地址栏有无指定语言 ?lang=cn/tw/en +let querystring = location.search.slice(1); +if (querystring.includes('lang')) { + local = qs.parse(querystring).lang; +} + +// 加载i18n语言包 +const i18n = new VueI18n({ + locale: local, // 默认语言 + messages: { en, cn,tw,kor,jp,de,fin,fra,it,pl,pt,spa,swe,ukr,tr,he } // 文件列表 +}); + +// 加载element语言包 +// local == 'cn' ? ELEMENT.locale(ELEMENT.lang.zhCN) : ELEMENT.locale(ELEMENT.lang.en) + +export default i18n; \ No newline at end of file diff --git a/src/i18n/it.json b/src/i18n/it.json new file mode 100644 index 0000000..fef6f41 --- /dev/null +++ b/src/i18n/it.json @@ -0,0 +1,1161 @@ +{ + "nav": { + "assets": "attività", + "contract": "Conto contrattuale", + "transfer": "Trasferimento di fondi", + "excOrders": "Commissione di punti", + "contractOrders": "Contratto di incarico", + "fundHistory": "Registrazione di riempimento", + "security": "Sicurezza dei conti", + "invite": "Invita amici", + "login": "Si prega di accedere prima", + "tips": "Richiesta di sistema", + "set": "Si prega di fissare un prezzo adeguato prima", + "a1": "Il prezzo non può essere vuoto o zero", + "a2": "La quantità non può essere vuota o zero", + "a3": "La quantità non può essere inferiore a", + "a4": "L'importo totale degli ordini di prezzo di mercato acquistati non può essere vuoto o nullo", + "a5": "L'importo totale degli ordini di mercato acquistati non può essere inferiore a", + "a6": "Il quantitativo dell’ordine di mercato venduto non può essere vuoto o nullo", + "a7": "Il numero di ordini di mercato venduti non può essere inferiore a", + "a8": "Il prezzo di innesco dell'ordine di arresto perdita non può essere vuoto o zero", + "a9": "Stop profit and stop loss - prezzo limite non può essere vuoto o zero", + "b1": "Stop profit e stop loss - limite ordine non può essere vuoto o zero", + "b2": "Cessare il profitto e la perdita di arresto - prezzo di attivazione dell'ordine di prezzo di mercato non può essere vuoto o zero", + "b3": "Stop profit e stop loss - l'importo complessivo acquistato al prezzo di mercato non può essere vuoto o zero", + "b5": "Stop profit e stop loss - l'importo totale dell'acquisto di mercato non può essere inferiore a", + "b6": "Smettere di profitti e perdite di arresto - il quantitativo venduto al prezzo di mercato non può essere vuoto o nullo", + "b7": "La perdita di arresto - il quantitativo venduto al prezzo di mercato non può essere inferiore a", + "b8": "Pagina interrotta, aggiorna o riprova più tardi!", + "c1": "acquisto{amount}Pezzi{name}Token disponibile{rate}%ricompensa", + "c2": "Attività di sottoscrizione", + "c3": "Numero totale", + "c4": "Totale della circolazione", + "c5": "Prezzo di emissione", + "c6": "Tempo di emissione", + "c7": "Indirizzo della carta bianca", + "c8": "Indirizzo ufficiale del sito", + "c9": "breve introduzione" + }, + "common": { + "a3": "Registri di acquisto", + "option": "Scambio di opzioni", + "exchange": "Operazioni di valuta", + "markets": "citazione", + "blogs": "Blog.", + "news": "Informazioni sull'industria", + "helps": "Aiuto centro", + "service": "servizio", + "contactUs": "ci contatti", + "sign_in": "Firma in", + "sign_up": "registrazione", + "noRecord": "Nessun record", + "getCode": "Ottenere codice di verifica", + "help1": "Orientamenti per i contratti di cambio", + "help2": "Specifiche contrattuali", + "optional": "Facoltativo", + "price": "Prezzo", + "upAndDown": "Su e giù", + "heigh": "Prezzo più alto", + "low": "prezzo minimo", + "vol": "volume", + "pair": "Accordo per", + "buy": "comprare", + "sell": "vendere", + "buy-in": "acquisto", + "sell-out": "vendere fuori", + "open-orders": "Delegazione attuale", + "condition-orders": "Obbligo condizionale", + "history-orders": "Documenti di delegazione", + "limit": "prezzo fisso", + "market": "Prezzo di mercato", + "stop-limit": "Fermare il profitto e fermare la perdita - limite di prezzo", + "stop-market": "Stop alla perdita di utile - prezzo di mercato", + "limit-type": "Traffico limite di prezzo", + "market-type": "Operazioni di mercato", + "startTime": "ora di inizio", + "to": "a", + "confirmBtn": "conferma", + "cancelBtn": "annulla", + "cancel": "revoco", + "endTime": "Tempo di fine", + "export": "esportazione", + "filter": "Filtro", + "all": "illimitato", + "search": "recupero", + "reset": "Azzera", + "hideAll": "Nascondi tutti i delegati cancellati", + "canceled": "Annullato", + "waiting": "Da abbinare", + "triggered": "Triggerato", + "processing": "Corrisponde", + "completed": "Completato", + "available_phone": "Inserisci il numero di cellulare corretto", + "available_email": "Inserisci l'indirizzo email corretto", + "codeSent": "Codice di verifica inviato", + "captcha": "Errore di codice di verifica", + "created": "tempo", + "order-price": "Prezzo della Commissione", + "order-amount": "Quantità ceduta", + "order-total": "Importo totale dell'ordine", + "avg-price": "prezzo medio", + "direction": "direzione", + "order-type": "tipo", + "executed-amount": "E'stato abbinato", + "executed-total": "Fatturato", + "outstanding": "Da abbinare", + "status": "Stato", + "details": "dettagli", + "action": "operazione", + "id": "Numero d'ordine", + "filled-price": "Prezzo di transazione", + "filled-amount": "Numero di operazioni", + "filled-total": "Importo della transazione", + "fee": "Carica di servizio", + "enterValid": "Inserisci un numero di cellulare valido o e-mail", + "enterValidEmail": "Inserisci l'indirizzo email corretto", + "enterValidPhone": "Inserisci un numero di cellulare valido", + "enterAccount": "Inserisci conto", + "enterEmail": "Inserisci l'indirizzo email corretto", + "enterPhone": "Inserisci il numero di telefono cellulare", + "enterPwd": "Inserisci una password", + "passwordRegular": "La password deve essere costituita da cifre e lettere da 8 a 15 (deve contenere sia cifre che lettere, e anche i simboli possono essere utilizzati)", + "newPassword": "Inserisci una nuova password", + "confirmNewPassword": "Inserisci la nuova password per conferma", + "enterGoogleCode": "Inserisci il codice di verifica di Google", + "enterEmailCode": "Inserisci codice di verifica e-mail", + "enterSMSCode": "Inserisci codice di verifica SMS", + "enterVerCode": "Inserire il codice di verifica", + "exportFile": "Fare clic su OK per esportare il file", + "submit": "Invia", + "newzone": "Nuova zona", + "college": "college", + "goTo": "Vai a", + "logOut": "Esci fuori", + "homepage": "home page", + "application": "Applicazione della valuta", + "purchase": "domanda per l'acquisto", + "accountInformation": "Informazioni sul conto", + "myWallet": "Il mio portafoglio", + "commissionOrder": "Ordine della Commissione", + "securitySetting": "impostazione di sicurezza", + "wallet": "portafoglio", + "allAssets": "Tutte le attività", + "contractaccount": "Conto contrattuale", + "transferFunds": "Trasferimento di fondi", + "rechargeWithdraw": "Ricarica e prelievo di denaro", + "order": "ordine", + "spotConsignment": "Commissione di punti", + "optionOrders": "Opzione ordine", + "perpetualContract": "Perpetuo contratto", + "foreignContract": "Contratto di cambio", + "notCertified": "Non certificata", + "notData": "Nessun dato disponibile", + "assets": "attività", + "myCommission": "Il mio servo", + "addressManagement": "Gestione degli indirizzi", + "auth": "Autenticazione del nome reale", + "invitationReward": "Regali di invito", + "visitHistory": "Registri di accesso", + "noviceTutorial": "Novità corso", + "tradingStrategy": "Strategia di negoziazione", + "industryResearch": "Ricerca industriale", + "blockchainDictionary": "Blockchain dizionario", + "mediaCoverage": "copertura mediatica", + "selectFile": "Seleziona file", + "upload": "upload", + "delete": "eliminare", + "tooBig": "La dimensione del file è troppo grande e non può superare", + "errorType": "Errore del tipo di file", + "resend": "Ripristina", + "sms": "breve messaggio", + "email": "mailbox", + "sendSuccess": "Codice di verifica inviato con successo", + "retransmission": "ritrasmissione", + "start-trade": "Inizia il viaggio della valuta digitale", + "login": "Firma in", + "register": "registrazione", + "trading": "Al commercio", + "dark": "black", + "light": "bianco", + "notMore": "Basta così.", + "allRead": "Tutte le letture", + "newMessage": "Nuova notizia", + "footerTips1": "Gli investimenti a rischio nel mercato dovrebbero essere cauti", + "footerTips2": "Avviso legale: il sito web è gestito da {nome} azienda", + "footerTips3": "Risk tip: trading digitale di asset può portare alla perdita del capitale, si prega di assicurarsi di comprendere pienamente i rischi", + "footerTips4": "Zone ristrette: non sono in grado di fornire servizi ai residenti di paesi specifici /regioni, come Israele e la Repubblica Islamica di Cina" + }, + "exchange": { + "search": "ricerca", + "pair": "Accordo per", + "last-price": "Prezzo ultimo", + "change": "Su e giù", + "order-book": "Ordine", + "price": "Prezzo", + "amount": "numero", + "total": "valore lordo", + "recent-trades": "Ultimo accordo", + "time": "tempo", + "order-total": "Valore totale della Commissione", + "balance": "Bilancio disponibile", + "enter-price": "Inserisci il prezzo", + "enter-amount": "Quantità di input", + "enter-total": "Inserisci il prezzo totale", + "at-best-price": "Chiudi al miglior prezzo di mercato", + "trigger-price": "Prezzo del grilletto", + "min": "minuto", + "hour": "ora", + "day": "giorno", + "week": "settimana", + "month": "mese" + }, + "login": { + "resend": "Ripristina", + "sms": "breve messaggio", + "sendOK": "Codice di verifica inviato con successo!", + "enterPhoneEmail": "Inserisci il cellulare o il numero di posta elettronica", + "effectivePhoneEmail": "Per favore inserisci un cellulare o e-mail validi", + "enterPasswrod": "Inserisci la password {num} bit", + "passwordLength": "La lunghezza della password è {num} bit. Contiene password alfanumerica", + "safe": "Verifica della sicurezza", + "googleVer": "Inserisci il {num} codice di verifica di Google sulla tua app mobile", + "phoneCode": "Inserisci il codice di verifica della cifra {num} inviato al tuo numero di cellulare", + "emailCode": "Inserisci il codice di verifica del bit inviato alla tua e-mail", + "google-code": "Google captcha", + "email-code": "Codice di verifica Email", + "sms-code": "Codice di verifica cellulare", + "new-password": "Nuova password", + "confirm-password": "Conferma password", + "forgetPassword": "Scordati la password", + "rememberMe": "Ricordati di me.", + "noAccountYet": "Nessun conto ancora", + "goRegister": "registrazione", + "safety": "Verifica della sicurezza", + "regAccount": "Numero di conto registrato", + "email": "mailbox", + "phone": "cellulare", + "pleaseEmail": "Inserisci indirizzo email", + "invalidEmail": "Indirizzo email non valido", + "enterMobile": "Inserisci il numero di telefono cellulare", + "invalidPhone": "Numero cellulare non valido", + "enterLengthPassword": "Inserisci una password da {num1} a {num2} bit in lunghezza", + "hasNumEn": "La password richiede una combinazione di {num} lettere e numeri", + "iSee": "Sono d'accordo.", + "terms": "Termini e condizioni", + "reg": "registrazione", + "enterEmailCode": "Inserisci il codice di verifica del bit inviato alla tua e-mail ({e-mail})", + "accountActivated": "Per attivare l'account", + "backOld": "Torna alla fase precedente", + "verCode": "Codice di verifica", + "notEmail": "Se non ricevi la tua email, prova la seguente operazione di controllo", + "confirmEmail": "Assicurati che l'indirizzo email che hai inserito sia corretto", + "confing": "Per favore controlla la cartella spam della tua email", + "checkTrashCan": "Assicurati che la tua email sia collegata ad un Internet stabile", + "enterPhone1": "Inserisci il numero da inviare al tuo cellulare", + "enterPhone2": "Il {num} bit captcha di", + "smsNotReceived": "Se non ricevete SMS, provate la seguente operazione di controllo", + "phoneCorrect": "Assicurati che il numero di cellulare e il numero di area che hai inserito siano corretti.", + "securePhone": "Assicurati che il tuo segnale cellulare sia stabile.", + "hasAccount": "C'è già un conto", + "toLogin": "Vai al login", + "securityVerification": "Verifica della sicurezza", + "disagree": "Non hai ancora accettato i termini.", + "registrationSuccess": "Registrato correttamente, salta alla pagina di login", + "referrer": "Riferimenti", + "c6": "Codice invito (richiesto)", + "c7": "Per favore inserisci il codice invito", + "optional": "Facoltativo", + "password": "password", + "login": "Firma in", + "country": "Codice area", + "enter-account": "Inserisci il numero di conto", + "sign-in": "Firma in", + "find-password": "Trova la password", + "submit": "Invia", + "confirmpassword": "Le due password sono incoerenti", + "Remembered": "Hai ricordato la password?" + }, + "application": { + "form": "Modulo di richiesta valuta del progetto", + "sendUser": "sponsor del progetto", + "sendUserEn": "Denominazione inglese della valuta", + "sendUserCn": "Denominazione cinese della valuta", + "contactPosition": "Persona di contatto e posizione", + "phone": "Numero di contatto", + "tokenPrice": "Prezzo di mercato", + "email": "e-mail di contatto", + "address": "Luogo di registrazione del progetto", + "mechanism": "Organizzazione di investimenti di progetto", + "personal": "personale", + "currencyCode": "Codice valuta", + "symbol": "Simbolo", + "currencyIdentification": "Identificazione della valuta", + "format": "Supporto {nome} formato, file meno di {num}", + "fundraisingDate": "Data di raccolta dei fondi", + "officialWebsite": "Site officiel", + "whitePaperLinks": "Collegamento carta bianca", + "noLink": "Se non c'è nessun collegamento, per favore carica l'allegato alla fine dell'articolo", + "total_issue": "Emissione in valuta totale", + "currencyCirculation": "Valuta di circolazione", + "currencyAllocationRatio": "Rapporto di allocazione della valuta", + "numberOfCurrencyHolders": "Numero di possessori di valuta", + "tradingPlatform": "Piattaforma di trading online", + "privatePlacement": "Formazione privata", + "publicOfferingPrice": "Prezzo di offerta pubblica", + "company": "Si prega di allegare l'unit à monetaria", + "coinType": "Tipo di rete di blocco valuta", + "currencyIssueDate": "Data di emissione della moneta", + "blockBrowser": "Block browser", + "officialAddress": "Indirizzo del portafoglio ufficiale", + "contractAddress": "Indirizzo contrattuale", + "link": "Link", + "budget": "Bilancio di spesa monetaria", + "unit": "Unit à", + "ofTokens": "Numero di gettoni delle attività di mercato dopo il carico", + "chineseCurrency": "Introduzione della valuta in cinese", + "enCurrency": "Introduzione alla moneta in inglese", + "remarks": "osservazioni", + "uploadWhitePaper": "Carica carta bianca", + "pleaseUpload": "Si prega di caricare la carta bianca", + "recommendationCode": "Nome del codice di raccomandazione, organizzazione e raccomandazione", + "ifSo": "Se è così", + "affirmsThat": "Dichiarazione: Confermo che tutte le informazioni di cui sopra sono veritiere, complete e accurate.Sarò responsabile di fornire informazioni false economicamente e legalmente", + "iKnow": "Ce l'ho!", + "reSubmit": "Rientro", + "pleaseConfirm": "Si prega di confermare che le suddette informazioni sono vere", + "pleaseEnter": "Inserisci prego", + "upLoadSuccess": "Upload riuscito" + }, + "wallet": { + "inside": "Trasferimento di fondi interni", + "from": "da", + "history": "Storia della vista", + "balance": "saldo", + "transferQuantity": "Quantità di trasferimento", + "capitalAccount": "Conto di capitale", + "contract": "contratto", + "financial": "Conto finanziario", + "leverage": "Conto di leva", + "successful": "Trasferimento riuscito", + "confirm": "Conferma trasferimento", + "pleaseSelect": "Seleziona la valuta", + "to": "a", + "assets": "attività", + "strokes": "Inserire il quantitativo di trasferimento", + "addressManagement1": "Gestione degli indirizzi", + "addAddress": "Aggiungi indirizzo", + "filter": "Filtro", + "search": "ricerca", + "selectActiveArea": "Seleziona l'area attiva", + "areaOne": "Regione uno", + "areaTwo": "Area 2", + "addressAssets": "Elenco degli indirizzi", + "addressNum": "Numero di indirizzi", + "fee1": "Carica di servizio", + "creationTime": "Tempo di creazione", + "detailAddress": "Indirizzo dettagliato", + "remarks1": "Osservazioni", + "operating": "operazione", + "complete": "completa", + "copy": "Ricevuto.", + "editAddress": "Modifica indirizzo", + "deleteAddress": "Elimina indirizzo", + "next": "pagina precedente", + "pre": "pagina successiva", + "add": "aggiungere a", + "edit": "modifica", + "address": "indirizzo", + "selectAssets": "Seleziona le attività", + "drawAddress": "Indirizzo del ritiro", + "addressRemarks": "Osservazioni a questo indirizzo", + "remarksDelete": "OK per eliminare questo indirizzo", + "optionSuccess": "Funzionamento riuscito", + "allAssets": "Valore di tutte le attività", + "showNum": "Mostra numeri", + "contractAccount": "Conto contrattuale", + "marginAccount": "Conto di leva", + "financialAccount": "Conto finanziario", + "spotAccount": "Spot account", + "hide": "nascondere", + "balanceAssets": "Attività di bilancio", + "searchCurrency": "Cerca valuta", + "addressManagement": "Gestione indirizzi del ritiro", + "totalAssets": "Totale attività", + "availableBalance": "Bilancio disponibile", + "fee": "Congelato saldo", + "valuation": "Valutazione", + "recharge": "Ricarica", + "withdrawal": "Ritirare i soldi", + "transaction": "transazione", + "rechargeAddress": "Indirizzo di ricarica", + "rechargeQuantity": "Quantità di ricarica", + "enterQuantity": "Quantità di input", + "rechargeInstructions": "Istruzioni di ricarica", + "automaticallyCredited": "Questo indirizzo è il tuo ultimo indirizzo di ricarica, e sarà registrato automaticamente quando il sistema riceve la ricarica.", + "tran": "Il trasferimento deve essere confermato da tutta la rete di blockchain. Quando si arriva alla conferma della rete {num}, il tuo {name} sarà automaticamente depositato nel conto.", + "only": "Invia solo {name} a questo indirizzo, e inviare altre valute digitali a questo indirizzo causerà perdite permanenti.", + "low": "minimo", + "addressList": "Elenco degli indirizzi", + "enterDrawAddress": "Inserisci l'indirizzo del ritiro della valuta", + "invalidWallet": "Non un indirizzo del portafoglio valido, per favore inserisci", + "withdrawalsNumber": "Quantità di ritiro", + "enterDrawNum": "Inserisci l'importo della valuta di recesso", + "withdrawalInstructions": "Note sul ritiro della valuta", + "enterAddress": "Si prega di controllare attentamente ed inserire l'indirizzo corretto del portafoglio.", + "notSend": "Inviare una valuta digitale senza pari all'indirizzo del portafoglio può causare perdite permanenti.", + "deductionFee": "La tassa di gestione per il ritiro della valuta sarà detratta dall’importo del ritiro.", + "submitSuccess": "Spedizione riuscita, audit in corso", + "operationComplete": "L'operazione di raccolta valuta è completata e in attesa di approvazione", + "rechargeRecord": "Registrazione di ricarica", + "withdrawalRecord": "Registrazione di ritiro", + "assetsName": "Inserisci il nome dell'attività", + "selectStatus": "Seleziona lo stato", + "startTime": "Data di inizio", + "entTIme": "Data di fine", + "date": "data", + "hash": "Hash.", + "num": "numero", + "progress": "velocità di avanzamento", + "status": "Stato", + "error": "fail", + "success": "successo", + "underReview": "In revisione", + "handlingFee1": "Carica di servizio", + "processing": "In revisione", + "transfer": "Trasferimento di fondi", + "transferDescription": "Trasferimento di fondi", + "handlingFee": "Si prega di notare che il trasferimento di fondi interni è completato automaticamente e senza spese di gestione.", + "onlyForeignExchange": "Solo {nome} può essere trasferito sul tuo conto del contratto di cambio", + "onlySustainable": "Solo {nome} può essere trasferito al tuo account di contratto perpetuo", + "inCase1": "Se vuoi scambiare contratti di cambio, devi trasferire {nome} al conto del contratto di cambio come margine", + "inCase2": "Se vuoi scambiare un contratto perpetuo, devi trasferire {nome} al conto di contratto perpetuo come margine.", + "transferRecord": "Registrazione di trasferimento", + "allTransfer": "Registrazione di trasferimento di tutte le attività", + "direction": "direzione", + "all": "intero", + "dateTime": "tempo", + "UserWallet": "Conto di attività", + "ContractAccount": "Conto contrattuale", + "LeverageAccount": "Conto di leva", + "FinancialAccount": "Conto finanziario", + "contractFlow": "Flusso contrattuale", + "info": "dettagli", + "money": "importo del denaro", + "Authentication": "Autenticazione" + }, + "contact": { + "contact": "ci contatti", + "help": "Se avete bisogno di aiuto, vi preghiamo di contattarci", + "fullName": "nome completo", + "enterFullName": "Inserisci il nome completo", + "email": "mailbox", + "enterEmail": "Inserisci indirizzo email", + "consultingService": "Progetto di consulenza", + "pleseSelect": "Seleziona", + "info": "informazioni", + "enterInfo": "Inserire le informazioni", + "contactInformation": "Informazioni di contatto", + "routineConsultation": "Consultazione di routine", + "customerService": "Servizio clienti", + "mediaCooperation": "Cooperazione dei media", + "submit": "Invia" + }, + "college": { + "college": "college", + "article": "Blog.", + "tutorialDetails": "Tutoriali dettagli", + "howToBuyBitcoin": "Come acquistare bitcoin", + "recommendedCourse": "Raccomandato tutorial", + "buy": "Compra una bitcoin in un minuto", + "register": "registrazione", + "visit": "Visita il sito {nome} e registra il tuo {nome} account", + "realName": "Autenticazione del nome reale", + "upload": "Carica certificati validi per autenticazione personale di nome reale", + "quickBuy": "Un click acquisto e pagamento", + "inIndex": "Un click per acquistare i soldi sulla home page / acquistare la pagina del denaro, e aspettare che il denaro sia rilasciato dopo il pagamento", + "tradeNow": "Sto per fare uno scambio.", + "currencyTransaction": "Seconda operazione di valuta", + "contractEntryTransaction": "Operazione di entrata a contratto", + "how": "Come scambiare opzioni", + "TradingStrategy": "Strategia di negoziazione", + "seeMore": "Vedi di più", + "industryResearch": "Ricerca industriale", + "oneClick": "Una transazione intelligente clic", + "inAssets": "Nella pagina di riempimento dell'attività / valuta, è possibile premere un pulsante per caricare valuta, e poi è possibile commerciare", + "dictionary": "Blockchain dizionario", + "media": "copertura mediatica" + }, + "home": { + "newEra": "Il principale scambio di derivati finanziari digitali del mondo", + "startTrading": "Inizio negoziazione", + "walkingLantern": "lanterna da passeggio", + "marketCenter": "Mercato commerciale", + "optional": "Facoltativo", + "latestPrice": "Prezzo", + "upAndDown": "Su e giù", + "heigh": "Prezzo più alto", + "low": "prezzo minimo", + "vol": "Volume delle transazioni", + "coinType": "Accordo per", + "more": "Vedi più >>", + "multiPlatform": "Trasferimento multi piattaforma", + "atTime": "quando e quando possibile", + "multiTerminal": "Operazione terminale multi piattaforma", + "cover": "copertura", + "multiTerminal1": "Piattaforme multiple", + "support": "Supporto completo del servizio", + "down": "download", + "news": "Tendenze del mercato", + "detail": "Visualizza dettagli", + "quickly": "Iniziare in fretta", + "major": "Forniamo servizi professionali per gli investitori", + "safe": "Servizi di trading sicuri", + "login": "Firma in", + "reg": "registrazione", + "trading": "Al commercio", + "add": "Aggiunto con successo", + "cancel": "Annulla con successo", + "features": "Vantaggio principale", + "partners": "Istituti di investimento e partner", + "perpetual_title": "Contratto perpetuo di cambio", + "perpetual_cont": "Dato che il primo contratto perpetuo di cambio mondiale regolato da una valuta stabile con la leva più alta di cento volte, il contratto perpetuo di cambio AMATAK è una scelta conveniente per il rapido scambio di valuta", + "stablecoin_title": "Il primo centro di scambio di valuta stabile mondiale", + "stablecoin_cont": "AMATAK ha costruito un ambiente ecologico stabile in valuta, un quadro completo composto da transazioni valutarie stabili, pagamenti e rimesse, ed è diventato parte del club di valuta stabile di alta qualità globale!", + "security_title": "Sicurezza impeccabile", + "security_cont": "AMATAK adotta il caveau registro più avanzato per proteggere la sicurezza finale della valuta digitale. La piattaforma del registro fornisce fino agli Stati Uniti $150 milioni di assicurazione per furto di terzi, insider collusione e furto di semi master.Più di 98% delle monete digitali memorizzate in AMATAK sono immagazzinate nel portafoglio a freddo multi firma, e il processo di controllo del rischio di mercato più standard è adottato per garantire la sicurezza di capitale di tutti gli utenti.", + "service_title": "24 / 7 servizio clienti multilingue in tempo reale", + "service_cont": "Il servizio clienti di AMATAK 24 / 7 è reperibile in qualsiasi momento e cerca di fornire il suo meglio per aiutare gli utenti attraverso chat o e-mail in tempo reale asupport@AMATAK.comContatta il servizio clienti.", + "analy_title": "Strumenti di analisi avanzati", + "analy_cont": "Gli operatori possono utilizzare diversi strumenti grafici e indicatori basati su dati stabili per assistere la negoziazione sulla pagina di negoziazione.", + "liquidity_title": "Ottima liquidità", + "liquidity_cont": "24 / 7 è collegato con l'elevata liquidità della piattaforma di negoziazione AMATAK in qualsiasi momento.", + "technology_title": "Autotecnologia sviluppata", + "technology_cont": "La piattaforma di trading AMATAK si basa su una tecnologia collaudata e costruita dai migliori esperti del settore per ottimizzare al massimo le funzioni della piattaforma.", + "download": "Scarica terminale mobile AMATAK", + "easy": "Aprire il palmo trading in qualsiasi momento, ovunque", + "skan": "Scansione codice e download ora", + "core_advantages": "La mia forza principale è dati", + "about_us": "riguardo a noi" + }, + "option": { + "waitFor": "In attesa di consegna", + "history": "Consegna storica", + "orderNum": "Numero d'ordine", + "option": "opzione", + "buyTime": "Tempo di acquisto", + "buyAmount": "Quantità di acquisto", + "buyType": "Tipo di acquisto", + "yield": "Tasso di ritorno", + "state": "Stato", + "deliverytime": "tempo di consegna", + "countDown": "Conto alla consegna", + "buyingUp": "Acquista tutto", + "buyDwon": "Acquista giù", + "buyEven": "Acquista pari", + "result": "Risultato di chiusura", + "settlementQuantity": "Quantità di regolamento", + "up": "aumento", + "down": "caduta", + "flat": "piatto", + "buyOption": "Opzione di acquisto", + "deliveryRecord": "Registrazione di consegna", + "current": "corrente", + "next": "Prossimo numero", + "enterNum": "Quantità di input", + "balance": "saldo", + "expectedRevenue": "Entrate previste", + "seeMore": "Vedi di più", + "beBearish": "essere portatori", + "time": "tempo", + "zf": "Su", + "bullish": "Buffo", + "lookAtPing": "Vedi piano", + "bearish": "Orribile", + "amount": "numero", + "coinType": "valuta", + "odds": "Scommesse", + "buySuccess": "Acquisto riuscito" + }, + "order": { + "noData": "Nessun record di transazione", + "ifCancel": "Annulla l'ordine corrente", + "cancelSuccess": "Cancellato con successo", + "marketPrice": "Operazioni di mercato", + "fixedPrice": "Traffico limite di prezzo", + "sell": "vendere fuori", + "buy": "acquisto", + "exchangeRecord": "Registri delle transazioni", + "see": "vedi", + "opt": "operazione", + "status": "Stato", + "time": "tempo", + "tradingPair": "Accordo per", + "direction": "direzione", + "type": "tipo", + "averagePrice": "prezzo medio", + "price": "Prezzo", + "matched": "E'stato abbinato", + "totalAmountEntrusted": "Importo delegato totale", + "total": "totale", + "toMatch": "Eliminato", + "operation": "operazione", + "reset": "Azzera", + "search": "ricerca", + "to": "a", + "startTime": "Data di inizio", + "endTime": "Data di fine", + "select": "Seleziona", + "entrustType": "Tipo di delegazione", + "spotConsignment": "Commissione di punti", + "surrentCommission": "Delegazione attuale", + "commissionRecord": "Documenti di delegazione", + "optionTransaction": "Scambio di opzioni", + "orderNum": "Numero d'ordine", + "timeSharing": "Condivisione del tempo", + "yield": "Tasso di ritorno", + "buyNum": "Quantità di acquisto", + "upAndDown": "Su e giù", + "settlementQuantity": "Quantità di regolamento", + "transactionPrice": "Prezzo di transazione", + "tradingVolume": "Volume delle transazioni", + "aTurnover": "un fatturato", + "serviceCharge": "Carica di servizio", + "cancel": "revoco", + "buyTime": "Tempo di acquisto", + "buyUp": "Acquista tutto", + "buyDown": "Acquista giù", + "buyLevel": "Acquista pari" + }, + "profile": { + "realName": "Autenticazione del nome reale", + "SelectAreaCode": "selezionare il prefisso", + "primaryCertification": "Certificazione primaria", + "advancedCertification1": "Domanda di certificazione avanzata", + "advancedCertification2": "Domanda di certificazione avanzata presentata", + "toExamine": "da esaminare", + "fullName": "nome completo", + "legal": "legale", + "pleaseEnterName": "Inserisci il tuo nome", + "dateOfBirth": "data di nascita", + "selectDate": "Seleziona una data", + "documentType": "Tipo di documento", + "pelaseSelect": "Seleziona", + "certificateNumber": "Numero del certificato", + "endterIDNumber": "Inserisci numero identificativo", + "addressInfo": "Informazioni sull'indirizzo", + "residentialAddress": "Indirizzo di residenza", + "residentialAddress1": "Inserisci il tuo indirizzo residenziale", + "ciy": "Città", + "incity": "Entrate nella vostra città", + "postalCode": "Codice postale", + "thePostcode": "Inserisci il codice zip", + "additionalInformation": "Ulteriori informazioni", + "optional": "Facoltativo", + "contactInformation": "Informazioni di contatto", + "phoneNumber": "numero di telefono", + "enterPhoneNumber": "Inserisci il numero di telefono cellulare", + "clickUpload1": "Quando fai clic sul file di upload e invia autenticazione, hai letto e accettato i nostri termini di servizio e di privacy accordo", + "pelaseDownload": "Si prega di selezionare una copia non richiesta dai seguenti documenti", + "passport": "passaporto", + "drivingLicense": "patente di guida", + "iD": "ID", + "upload": "Carica", + "explain": "spiegare", + "unexpired": "I documenti non spiegati possono essere immagini o copie scansionate.", + "pleaseConfirm": "Si prega di assicurarsi che tutti i dettagli sulla foto sono chiari e non coperti.", + "fileFormat": "formato file", + "maximumFileSize": "Dimensione del file massima", + "positive": "Anteprima del certificato", + "theOtherSide": "Il lato opposto del certificato", + "hold": "In possesso di un certificato", + "dragHere": "Trascinare qui, o", + "clickUpload": "Fare clic su upload", + "uploadPhoto": "Si prega di caricare la foto anteriore della carta d'identità", + "reversePhoto": "Si prega di caricare la foto sul retro del certificato", + "uploadIDCard": "Per favore carica la tua foto identificativa tenuta a mano", + "nextStep": "passo successivo", + "inSubmit": "La vostra domanda di verifica è stata presentata!Vi informeremo non appena avremo il risultato", + "gotIt": "Ho capito.", + "congratulations": "Congratulazioni.", + "back": "ritorno", + "resetApply": "Applicare", + "recertification": "Rettificazione", + "userInfo": "Informazioni sul conto", + "verState": "Stato di convalida", + "max": "massimo", + "limitH": "Limite di ritiro orario", + "verLeave": "Livello di autenticazione", + "exceed": "superare", + "contactUs": "ci contatti", + "inviteFriends": "Invita amici", + "dividends": "Invita gli amici a usare {nome}, e ottenere {num} delle future commissioni di transazione degli amici come bonus.", + "sendInvitation": "Invia invito", + "resetPassword": "reset password", + "forLoginAccount": "Per account di login.", + "clickReset": "Fare clic su Reit", + "registrationDecord": "Registra il registro", + "recording": "Utilizzato per visualizzare un log dettagliato nella storia", + "recordingDEtail": "Registro dettagliato", + "invitationReward": "Regali di invito", + "inviteUse": "Invita gli amici ad usare", + "futureCommission": "Ottenere {num} delle future transazioni degli amici come bonus", + "joinThePlan": "Unisciti a {nome} piano bonus di invito utente", + "checkMyDividend": "Guarda i miei dividendi", + "step1": "Il primo passo", + "shareLink": "Condividi link", + "step2": "Fase due", + "shareFriend": "Invita amici", + "step3": "Il terzo passo", + "instantDividend": "Approfitta dei dividendi", + "invitationInformation": "Informazioni di invito", + "invitationLink": "Collegamento invito", + "invitationCode": "Codice di invito", + "registeredUser": "Registrati utenti", + "accountNumber": "numero di conto", + "registrationTime": "Tempo di registrazione", + "activityTerms": "Condizioni di attività", + "handlingFeeDividend": "Divieto della Commissione", + "equalInvitee": "E'come essere invitati.", + "fee": "Costi di gestione delle transazioni", + "afterThat": "Dopo essere stato invitato al commercio", + "follow": "Trasferimento al conto dell'invito entro pochi minuti", + "limit": "L'attività segue i seguenti tempi di inizio e di fine ed è disponibile solo per conti validi dopo l'inizio e prima della fine dell'attività", + "activityStartTime": "Tempo di inizio attività", + "Y": "anno", + "M": "mese", + "D": "giorno", + "endTime": "Tempo di fine attività", + "proceed": "Vai avanti", + "atAnyTime": "Ci riserviamo il diritto di modificare, sospendere o terminare il programma {nome} di invito utente in qualsiasi momento senza preavviso", + "reservedRights": "Riserva il diritto di non pagare dividendi per conti duplicati o falsi", + "canDecide": "È possibile accettare o rifiutare utenti specifici che sono introdotti o invitati a {nome} piattaforma {link}", + "bill": "Registri di accesso", + "date": "data", + "address": "luogo", + "equipment": "attrezzature", + "preliminary": "Certificazione preliminare riuscita", + "clickToVerify": "Fare clic per verificare", + "clickToVerify1": "Completato", + "tips1": "Certificazione di base: per scegliere i contanti, è necessario completare la certificazione avanzata.", + "tips2": "Certificazione avanzata: limite di prelievo in 24 ore fino a 5000USDT. Se hai bisogno di più importi di prelievo, contatta il servizio clienti" + }, + "setting": { + "smsVer": "Verifica SMS", + "enterCode": "Inserire il codice di verifica", + "emailVer": "Verifica posta elettronica", + "enterEmailVer": "Inserisci codice di verifica e-mail", + "ver": "verifica", + "enterNameCode": "Inserisci il codice di verifica {nome}.", + "openSuccess": "Apri con successo", + "closeSuccess": "Chiuso con successo", + "email": "mailbox", + "enterEmail": "Inserisci email", + "emailVerCode": "Codice di verifica Email", + "enterSmsCode": "Inserisci codice di verifica SMS", + "bind": "vincolante", + "unbind": "Separazione", + "bindSuccess": "Binding riuscito", + "unbindSuccess": "Unlegante riuscito", + "scanQrCode": "Si prega di scannerizzare il codice QR", + "howToOpen": "Scopri come attivare {nome} verifica secondaria", + "read": "Clicca qui per leggere le informazioni di installazione", + "verKey": "Verifica chiave", + "safeSetting": "impostazione di sicurezza", + "loginPassword": "Login password", + "resLoginPassword": "Reimposta password di login", + "transactionPassword": "Codice di transazione", + "usedFor": "Utilizzato per la presentazione di contratti e ordini spot", + "notOpen": "Non aperto", + "modifyPassword": "Cambia password", + "setPassword": "Imposta password", + "verCode": "Codice di verifica", + "forLogin": "Utilizzato per il login, il ritiro valuta e le impostazioni di sicurezza cambiano", + "alLast": "Abilita almeno una modalità di autenticazione", + "close": "chiusura", + "open": "aperto", + "phone": "numero di telefono", + "area": "Inserisci il codice area", + "enterPhone": "Inserisci il numero di telefono cellulare", + "newPassword": "Nuova password", + "passwordIs": "La password della transazione è {num} cifre", + "enterNewPassword": "Inserisci una nuova password", + "confirmPassword": "Conferma password", + "pleaseConfirmPassword": "Conferma la password", + "operationSuccess": "Funzionamento riuscito", + "combination": "Le password richiedono una combinazione di lettere e numeri", + "changeSuccess": "Modificato con successo" + }, + "purchase": { + "sendPrice": "Prezzo di emissione", + "subscriptionCurrency": "Moneta di sottoscrizione", + "expected": "Tempo previsto online", + "startTime": "Orario di inizio della sottoscrizione", + "applyForPurchase": "Tempo di chiusura", + "enterNum": "Quantità di input", + "all": "Tutti", + "subscribeNow": "Applicare immediatamente", + "subscriptionCycle": "Ciclo di sottoscrizione", + "projectWarmUp": "Progetto di riscaldamento", + "startSubscription": "Avvia sottoscrizione", + "endOfSubscription": "Chiudi l'abbonamento", + "announceResults": "Pubblica i risultati", + "projectCetails": "Dettagli del progetto", + "useOrNot": "Uso o no", + "subscribe": "domanda per l'acquisto", + "prompt": "Suggerimenti", + "subscribeSuccess": "Acquisto riuscito" + }, + "contract": { + "a0": "Conto degli appalti", + "a1": "Trasferimenti di fondi", + "a2": "Diritti di godimento", + "a3": "disponibili", + "a4": "Margine di immobilizzazione", + "a5": "Commissione congelamento", + "a6": "Non si sono realizzati profitti e perdite", + "a7": "Tasso di rischio", + "a8": "Parità stimate", + "a9": "contratto", + "b0": "leva", + "b1": "tempo", + "b2": "Tipo di operazione", + "b3": "Numero degli stati membri", + "b4": "Totale commissione", + "b5": "Prezzo medio di transazione", + "b6": "Commissione prezzi", + "b7": "margine", + "b8": "Spese di personale", + "b9": "Lo stato", + "c0": "operazioni", + "c1": "Eliminato mono", + "c2": "annullamento", + "c3": "Annullamento o meno dell’ordine in corso", + "c4": "soppressione", + "c5": "definire", + "c6": "annullamento", + "c7": "Non ancora", + "c8": "Annullamento parziale", + "c9": "Totale degli stanziamenti", + "d0": "Acquisti all’intervento", + "d1": "Acquisti a prezzo ridotto", + "d2": "Vendete a vuoto", + "d3": "Per quanto riguarda le vendite di prodotti piatto", + "d4": "Annullamento di un successo", + "d5": "Per mette", + "d6": "Ping sili", + "d7": "Prezzo limite", + "d8": "prezzi", + "d9": "Al prezzi di mercato", + "e0": "Fissazione dei prezzi", + "e1": "numero", + "e2": "cheung", + "e3": "Margine necessario", + "e4": "Aziende con più di 50 addetti", + "e5": "(’) barr", + "e6": "floors", + "e7": "Può guidare", + "e8": "put", + "e9": "Può piatta", + "f0": "Prezzo di vendita", + "f1": "Oltre a", + "f2": "Guidano vuoti", + "f3": "Sono stati", + "f4": "Raddoppiare la leva finanziaria", + "f5": "Il successo della commissione", + "f6": "Il successo delle operazioni di livellamento", + "f7": "PanKou", + "f8": "Fatturato in tempo reale", + "f9": "totale", + "g0": "comprare", + "g1": "vende", + "g2": "cumulativo", + "g3": "Prezzi più recenti", + "g4": "dettagli", + "g5": "Archivi storici", + "g6": "Tempo di realizzazione", + "g7": "nell’azienda", + "g8": "Livello di comparabilità", + "g9": "Prezzo medio aperto", + "h0": "Tasso di rendimento", + "h1": "Prezzi di mercato", + "h2": "A prezzi di mercato", + "h3": "Tutta piatta", + "h4": "Il successo", + "h5": "Operazioni nette", + "h6": "Variazioni rispetto all’anno precedente", + "h7": "Prezzo massimo", + "h8": "Prezzo più basso", + "h9": "Volume della produzione", + "i0": "Numero di aziende", + "i1": "Commissione attuale", + "i2": "La commissione nella storia", + "i3": "direzione", + "i4": "oltre", + "i5": "vuota", + "i6": "Solo la situazione attuale", + "i7": "Fino alla infront", + "i8": "Agli arresti", + "i9": "Fine marzo", + "j0": "Profitti e perdite", + "j1": "Ultimo prezzo di vendita", + "j2": "Prezzi medi aperti", + "j3": "Prezzo limite per l’intervento", + "j4": "Prezzo di soglia", + "j5": "A prezzi di mercato", + "j6": "La commissione deve essere in grado di agire immediatamente e il risultato previsto dopo il suo fatturato", + "j7": "La commissione di arresto scatterà e il risultato è previsto dopo il fatturato", + "j8": "Apertura dei contratti permanenti", + "j9": "Il successo del lancio", + "k0": "Stabilire il successo", + "k1": "Compensazione perdite e profitti", + "k2": "Un tasto è tutto liscio", + "k3": "Inversione di tasto", + "k4": "— se un tasto è completamente liscio", + "k5": "Si tratta di una questione di principio", + "k6": "Successo globale", + "k7": "Successo opposto", + "k8": "Per favore collegatevi prima alla richiesta", + "k9": "Inserisci il codice di sottoscrizione" + }, + "otc": { + "a0": "Scegliete il tipo di transazione", + "a1": "acquisto", + "a2": "vendi", + "a3": "Valuta di transazione", + "a4": "Scegliete la valuta", + "a5": "numero", + "a6": "Indicare la quantità", + "a7": "prezzi", + "a8": "Si prega di indicare il prezzo", + "a9": "Le transazioni più basse si sono registrate in un solo caso", + "b0": "Il numero più alto di transazioni si registra in un singolo caso", + "b1": "Versamento di contributi", + "b2": "wechat", + "b3": "Carte bancarie", + "b4": "Il commento", + "b5": "Indicare le osservazioni", + "b6": "Il successo della pubblicazione", + "b7": "acquisti", + "b8": "vendita", + "b9": "annullamento", + "c0": "Nelle operazioni", + "c1": "Fatto a", + "c2": "N. Di pubblicità", + "c3": "Lo stato", + "c4": "totale", + "c5": "Prezzo unitario", + "c6": "residuo", + "c7": "Data di pubblicazione", + "c8": "Modalità di riscossione", + "c9": "operazioni", + "d0": "scaffali", + "d1": "(1) scatta o no la pubblicità corrente", + "d2": "Indicazione dei garofani caldi", + "d3": "Annullamento di un successo", + "d4": "Dettaglio dell’ordinazione", + "d5": "Numero d’ordine", + "d6": "pagamento", + "d7": "nomi", + "d8": "account", + "d9": "Apertura di un conto corrente", + "e0": "Apri un ramo di una famiglia", + "e1": "Tempo residuo", + "e2": "un", + "e3": "secondi", + "e4": "Documenti di pagamento", + "e5": "Caricare il codice qr di raccolta", + "e6": "Per favore caricate la prova di pagamento", + "e7": "In attesa del carico da parte dell’acquirente", + "e8": "Annullamento dell’ordinanza", + "e9": "Conferma di pagamento", + "f0": "Non alla contabilità", + "f1": "Conferma della riscossione", + "f2": "Annullamento o meno dell’ordine in corso", + "f3": "definire", + "f4": "soppressione", + "f5": "Ordini annullati", + "f6": "Conferma dei pagamenti effettuati nel corso dell’esercizio", + "f7": "Successo dell’operazione", + "f8": "Il riporto è automatico", + "f9": "Dopo la conferma di non aver ricevuto il pagamento, l’ordine viene inserito d’ufficio nella denuncia", + "g0": "Pubblicazione di annunci", + "g1": "Gli utenti", + "g2": "totale", + "g3": "I limiti massimi", + "g4": "Modalità di pagamento", + "g5": "totale", + "g6": "Ordine di successo", + "g7": "Ordini di vendita", + "g8": "Ordini di acquisto", + "g9": "Ordinanza di acquisto pubblico", + "h0": "Ordine di vendita", + "h1": "totale", + "h2": "chiuso", + "h3": "Da versare", + "h4": "Da confermare", + "h5": "Nella denuncia", + "h6": "Numero di transazioni", + "h7": "Oggetto dell’operazione", + "h8": "tempo", + "h9": "dettagli", + "i0": "Per favore digitate il vostro numero di conto", + "i1": "Indicare il nome", + "i2": "Codice di raccolta qr", + "i3": "conservazione", + "i4": "Nome della banca", + "i5": "Per favore digitate il nome della banca", + "i6": "Per piacere digitare una branca aperta", + "i7": "Numero della carta bancaria", + "i8": "Per favore digitare la carta bancaria", + "i9": "Il successo editoriale", + "j0": "Aggiungere successi", + "j1": "Conti in valuta", + "j2": "beni", + "j3": "Saldo disponibile", + "j4": "Congelamento delle disponibilità", + "j5": "Transazioni in moneta legale", + "j6": "I i pubblicità", + "j7": "Ordine dei lavori", + "j8": "pubblicità", + "j9": "Acquisto di un click", + "k0": "Vendita di un click", + "k1": "Importo dell’acquisto", + "k2": "Quantità di acquisto", + "k3": "Importo di vendita", + "k4": "Quantità vendute", + "k5": "Inserisci l'importo dell'acquisto", + "k6": "Input quantità di acquisto", + "k7": "Inserisci l'importo della vendita", + "k8": "Inserire il quantitativo in vendita", + "k9": "Acquisto per quantità", + "l0": "Note relative all'operazione di valuta legale", + "l1": "Volume minimo della transazione", + "l2": "Conferma acquisto", + "l3": "Conferma di vendita", + "l4": "Scusa, il tuo credito sta finendo.", + "l5": "Ora dell'ordine", + "l6": "Si prega di scegliere il metodo di pagamento", + "l7": "beneficiario", + "l8": "Anormale raccolta", + "l9": "Inserisci la password della transazione", + "m0": "Pagato", + "m1": "Approvato", + "m2": "Audit non riuscito", + "m3": "Fine dell'ordine", + "m4": "Annullamento dell'ordine" + }, + "cxiNewText": { + "a0": "Primi 10", + "a1": "5 milioni +", + "a2": "< 0.10%", + "a3": "200+", + "a4": "Classifica globale", + "a5": "Gli utenti si fidano di noi", + "a6": "Commissioni ultra basse", + "a7": "Paesi", + "a21": "Guadagna reddito immediatamente", + "a22": "Crea un portafoglio personale di criptovalute", + "a23": "Compra, scambia e detieni oltre 100 criptovalute", + "a24": "Ricarica il conto", + "a25": "Iscriviti tramite e-mail", + "a38": "Apri transazioni sempre e ovunque.", + "a39": "Inizia a fare trading in modo sicuro e conveniente in qualsiasi momento tramite la nostra APP e la nostra pagina web", + "a40": "Scansiona il codice QR per scaricare l'APP", + "a41": "Una piattaforma affidabile per il trading di criptovalute", + "a42": "Ci impegniamo a garantire la sicurezza degli utenti con protocolli rigorosi e misure tecniche leader del settore.", + "a43": "Fondi di sicurezza dell'utente", + "a44": "Conserviamo il 10% di tutte le commissioni di transazione in fondi di asset sicuri per fornire una protezione parziale ai fondi degli utenti", + "a45": "Controllo accessi personalizzato", + "a46": "Il controllo degli accessi personalizzato limita l'accesso ai dispositivi e agli indirizzi degli account personali, in modo che gli utenti non abbiano preoccupazioni.", + "a47": "Crittografia dati avanzata", + "a48": "I dati delle transazioni personali sono protetti dalla crittografia end-to-end e solo la persona può accedere alle informazioni personali.", + "a57": "Clicca per andare", + "a71": "Guida per principianti ", + "a72": "Inizia immediatamente l'apprendimento del trading di valuta digitale ", + "a77": "Come acquistare valuta digitale ", + "a78": "Come vendere valuta digitale ", + "a79": "Come scambiare valute digitali", + "a80": "Piazza del mercato", + "a81": "Andamento del mercato 24 ore", + "a82": "Aggiungi fondi di criptovaluta al tuo portafoglio e inizia a fare trading all'istante" + }, + "homeNewText": { + "aa1": "Porta della criptovaluta", + "aa2": "Fai trading sicuro, veloce e facile su oltre 100 criptovalute", + "aa3": "Registrati tramite e-mail", + "aa4": "Inizia a fare trading adesso", + "aa5": "tendenza di mercato", + "aa6": "Preventivo rapido di risorse digitali", + "aa7": "Valuta", + "bb1": "Ultimo prezzo (USD)", + "bb2": "Incremento 24h", + "bb3": "Volume degli scambi nelle 24 ore", + "bb4": "Scambio di criptovaluta per tutti", + "bb5": "Inizia a fare trading qui e sperimenta un viaggio migliore nella criptovaluta", + "bb6": "personale", + "bb7": "Uno scambio di criptovaluta per tutti. La piattaforma di trading leader più affidabile con una vasta gamma di valute", + "cc1": "Attività commerciale", + "cc2": "Pensato per aziende e istituzioni. Fornire soluzioni crittografiche a investitori istituzionali e imprese", + "cc3": "Sviluppatore", + "cc4": "Costruito per gli sviluppatori, affinché gli sviluppatori possano creare gli strumenti e le API del futuro del web3", + "cc6": "Scansiona il codice QR", + "cc7": "Scarica l'applicazione Android/IOS", + "dd1": "Sicuro e stabile con zero incidenti", + "dd2": "Molteplici strategie di sicurezza e una garanzia di riserva del 100% assicurano che non si sia verificato alcun incidente di sicurezza dalla sua istituzione.", + "dd3": "Scambia risorse crittografiche in modo semplice e conveniente", + "dd4": "In CXIsux, i prodotti sono facili da comprendere, il processo di transazione è conveniente e la piattaforma di servizi asset blockchain unica", + "dd5": "Derivati", + "dd6": "Puoi scambiare contratti su oltre 100 criptovalute con una leva fino a 150x e ottenere profitti elevati", + "ee1": "Supporto di terminali multipli", + "ee2": "Scambia risorse digitali sempre e ovunque", + "ee3": "Supporta un'ampia gamma di tipi di asset, con tutte le informazioni sulla valuta disponibili", + "ee4": "Comprendi rapidamente il processo di trading delle risorse digitali", + "ee5": "Inizia il tuo viaggio nella crittografia", + "ee6": "Verifica grafica", + "hh0": "Condividi la migliore esperienza di trading con i principali exchange del mondo", + "hh1": "Cerco buone opportunità di trading", + "hh2": "Scambiare oltre 100 criptovalute in modo sicuro, veloce e facile", + "hh3": "Scopri i nostri prodotti", + "hh4": "Inizia a fare trading qui e sperimenta un viaggio migliore nella criptovaluta", + "hh5": "Commercio a pronti", + "hh6": "Acquista e vendi oltre 100 criptovalute con commissioni di trading scontate", + "hh7": "Transazione contrattuale", + "hh8": "Migliora i tuoi guadagni con il contratto perpetuo USDT", + "hh9": "Scambio semplice e conveniente di criptovalute", + "hh10": "I prodotti sono facili da capire, il processo di transazione è conveniente e la piattaforma di servizi asset blockchain unica", + "hh11": "Gestione dei fondi", + "hh12": "Guadagna rendimenti elevati attraverso i nostri diversi prodotti di staking", + "hh13": "Derivati", + "hh14": "Puoi scambiare più di 100 contratti di criptovaluta con una leva fino a 150x e ottenere profitti elevati", + "hh15": "Sicuro e stabile con zero incidenti", + "hh16": "Molteplici garanzie di politica di sicurezza, garanzia di riserva del 100% e nessun incidente di sicurezza si è verificato dalla sua istituzione.", + "hh17": "Perché scegliere DFIcoin", + "hh18": "Il tuo scambio di criptovaluta fidato", + "hh19": "Sicurezza", + "hh20": "Dal 2020, BXRCO funziona in modo stabile e affidabile con il suo sistema sviluppato internamente.", + "hh21": "Servizio", + "hh22": "Puoi ottenere risposte immediate al centro servizi o contattarci via email 24 ore su 24, 7 giorni su 7.", + "hh23": "Facile da usare", + "hh24": "BXRCO rende semplice il trading di criptovalute. Acquista monete con un clic e non perdere mai la fugace opportunità di fare soldi.", + "hh25": "Acquisto e vendita flessibili", + "hh26": "Una varietà di criptovalute supporta le transazioni, tieni il passo con la tendenza, così non perdi nessuna opportunità di ricchezza.", + "hh27": "Il trading inizia tra 1 minuto", + "hh28": "Crea un account BXRCO gratuitamente", + "hh29": "Certificazione completa", + "hh30": "Esegui transazione", + "hh31": "Fai trading ovunque", + "hh32": "Resta informato con la nostra app e il client desktop.", + "hh33": "Scansiona il codice per scaricarlo adesso", + "hh34": "Registrati e inizia a fare trading!", + "hh35": "Registrati ora", + "hh36": "Registrati ora tramite email", + "hh37": "Classifica globale", + "hh38": "gli utenti si fidano di noi", + "hh39": "Commissioni ultra-basse", + "hh40": "Paesi", + "hh41": "BXRCO, fai trading sempre e ovunque", + "hh42": "Fai trading ora", + "hh43": "Scansiona il codice QR per scaricare BXRCO APP" + } +} diff --git a/src/i18n/jp.json b/src/i18n/jp.json new file mode 100644 index 0000000..80ac06c --- /dev/null +++ b/src/i18n/jp.json @@ -0,0 +1,1160 @@ +{ + "nav": { + "assets": "資産", + "contract": "契約口座", + "transfer": "資金の振り替え", + "excOrders": "現物委託", + "contractOrders": "契約依頼", + "fundHistory": "記録をチャージする", + "security": "アカウントのセキュリティ", + "invite": "親友を招く", + "login": "まずログインして操作してください。", + "tips": "システムのヒント", + "set": "まず適当な価格を設定してください。", + "a1": "価格は空か0ではいけません。", + "a2": "数量は空か0ではいけません。", + "a3": "数量が少なくてはいけません", + "a4": "購入した市価表の総量は空かそれとも零ではいけません。", + "a5": "購入した市価表の総量は以下にしてはいけません。", + "a6": "売りの市価表の数量は空ですか?それとも零ですか?", + "a7": "売りさばく相場の数量は少なくてはいけません。", + "a8": "ストップロスを停止します。トリガ価格は空またはゼロにできません。", + "a9": "ストップロス", + "b1": "ストップロス", + "b2": "株式停止損失-時価表のトリガ価格は空またはゼロにできません。", + "b3": "株価停止損-市価購入の総量は空または零ではいけません。", + "b5": "株価停止損失-市価購入の総量は以下を下回ってはいけない。", + "b6": "ストップロス-市価の販売数量は空または零ではいけません。", + "b7": "株式の停止損失-市価の販売数量は以下のとおりにしてはいけません。", + "b8": "ページが切断されました。更新してください。または後でやり直してください。", + "c1": "買います{amount}枚{name}トークンがもらえます{rate}%奨励", + "c2": "申し込み活動", + "c3": "発行総量", + "c4": "流通総量", + "c5": "発行価格", + "c6": "リリース時間", + "c7": "白書の住所", + "c8": "公式サイトのアドレス", + "c9": "概要" + }, + "common": { + "a3": "購入申請記録", + "option": "約束権", + "exchange": "貨幣取引", + "markets": "相場", + "blogs": "ブログ", + "news": "市場の動き", + "helps": "ヘルプセンター", + "service": "サービス", + "contactUs": "連絡します", + "sign_in": "ログイン", + "sign_up": "登録する", + "noRecord": "記録がない", + "getCode": "認証コードを取得", + "help1": "外国為替契約マニュアル", + "help2": "契約書の仕様", + "optional": "記入する", + "price": "価格", + "upAndDown": "上昇幅", + "heigh": "高値", + "low": "最低価格", + "vol": "取引高", + "pair": "取引ペア", + "buy": "買い入れる", + "sell": "売りに出る", + "buy-in": "買い入れる", + "sell-out": "売りに出る", + "open-orders": "現在の依頼", + "condition-orders": "条件付き依頼", + "history-orders": "委託記録", + "limit": "活動は以下の開始時間と終了時間に従い、活動開始時間後及び活動終了時間前の有効アカウントに限ります。", + "market": "市価", + "stop-limit": "ストップロス", + "stop-market": "ストップロス-相場", + "limit-type": "指し値取引", + "market-type": "市価取引", + "startTime": "申し込み開始時間", + "to": "を選択します", + "confirmBtn": "確認", + "cancelBtn": "キャンセル", + "cancel": "取り消す", + "endTime": "イベント終了時間", + "export": "エクスポート", + "filter": "フィルタ", + "all": "すべて", + "search": "検索", + "reset": "リセット", + "hideAll": "キャンセルしたすべての依頼を隠す", + "canceled": "キャンセルしました", + "waiting": "取り持つ", + "triggered": "トリガされました", + "processing": "審査中", + "completed": "完了しました", + "available_phone": "正しい携帯電話番号を入力してください。", + "available_email": "正しいメールアドレスを入力してください。", + "codeSent": "認証コードが送信されました", + "captcha": "認証コードエラー", + "created": "時間", + "order-price": "委託価格", + "order-amount": "委託数量", + "order-total": "委託総価値", + "avg-price": "平均価格", + "direction": "方向", + "order-type": "タイプ", + "executed-amount": "取り持つ", + "executed-total": "出来高", + "outstanding": "取り持つ", + "status": "状態", + "details": "詳細", + "action": "操作", + "id": "注文番号", + "filled-price": "出来値", + "filled-amount": "出来高", + "filled-total": "取引高", + "fee": "の取引手数料", + "enterValid": "有効な携帯電話番号またはメールを入力してください。", + "enterValidEmail": "正しいメールアドレスを入力してください。", + "enterValidPhone": "有効な携帯電話番号を入力してください。", + "enterAccount": "アカウントを入力してください", + "enterEmail": "メールボックスを入力してください", + "enterPhone": "携帯の番号を入力してください", + "enterPwd": "パスワードを入力してください", + "passwordRegular": "パスワードは8から15桁の数字とアルファベットから構成されていなければなりません。", + "newPassword": "新しいパスワード", + "confirmNewPassword": "確認した新しいパスワードを入力してください。", + "enterGoogleCode": "Googleの認証コードを入力してください。", + "enterEmailCode": "あなたのメールボックスに送る{email}の{num}ビット認証コードを入力してください。", + "enterSMSCode": "メールの検証コードを入力してください。", + "enterVerCode": "認証コードを入力してください", + "exportFile": "確認をクリックしてファイルをエクスポートしてください。", + "submit": "送信", + "newzone": "新コーナーを開く", + "college": "学院", + "goTo": "行きます", + "logOut": "ログアウト", + "homepage": "最初のページ", + "application": "お札を入れる", + "purchase": "購入を申請する", + "accountInformation": "アカウント情報", + "myWallet": "私の財布", + "commissionOrder": "委託注文", + "securitySetting": "セキュリティ設定", + "wallet": "財布", + "allAssets": "すべての資産価値", + "contractaccount": "契約口座", + "transferFunds": "資金の振り替え", + "rechargeWithdraw": "チャージして貨幣を引き出します", + "order": "注文書", + "spotConsignment": "現物委託", + "optionOrders": "オプション注文", + "perpetualContract": "継続契約", + "foreignContract": "外国為替契約", + "notCertified": "認証なし", + "notData": "データがありません", + "assets": "資産", + "myCommission": "私の返用", + "addressManagement": "お札の住所管理", + "auth": "実名認証", + "invitationReward": "奨励を招く", + "visitHistory": "アクセス履歴", + "noviceTutorial": "初心者教程", + "tradingStrategy": "取引戦略", + "industryResearch": "ビジネス研究", + "blockchainDictionary": "ブロック辞典", + "mediaCoverage": "メディア報道", + "selectFile": "ファイルを選択", + "upload": "アップロードします", + "delete": "削除", + "tooBig": "ファイルサイズが大きすぎて、超えてはいけません。", + "errorType": "ファイルタイプエラー", + "resend": "再送信", + "sms": "メッセージ", + "email": "メールボックス", + "sendSuccess": "認証コードの送信に成功しました。", + "retransmission": "再送", + "start-trade": "すぐにデジタル通貨の旅を開始します。", + "login": "ログイン", + "register": "登録する", + "trading": "取引に行く", + "dark": "黒い", + "light": "白", + "notMore": "これ以上ないです", + "allRead": "すべて読みました", + "newMessage": "新しいニュース", + "footerTips1": "市場にはリスクがありますので、慎重に投資してください。", + "footerTips2": "法律声明:このサイトは{name}会社が運営しています。", + "footerTips3": "リスク提示:デジタル資産取引は元金の損失を招く可能性があります。そのリスクを十分理解してください。", + "footerTips4": "制限区域:特定の国/地域の住民にサービスを提供することができません。例えば、イスラエルとイスラム共和国です。" + }, + "exchange": { + "search": "検索", + "pair": "取引ペア", + "price": "価格", + "order-total": "委託総価値", + "last-price": "最新の価格", + "change": "上昇幅", + "order-book": "商売相場", + "amount": "数", + "total": "合計", + "recent-trades": "最新の取引", + "time": "時間", + "balance": "残額", + "enter-price": "価格を入力してください", + "enter-amount": "数量を入力してください", + "enter-total": "総価格を入力してください", + "at-best-price": "ベスト市場で取引が成立する", + "trigger-price": "トリガ価格を入力してください。", + "min": "分", + "hour": "時間", + "day": "空", + "week": "週間", + "month": "月" + }, + "login": { + "resend": "再送信", + "sms": "メッセージ", + "email": "メールボックス", + "enterEmailCode": "あなたのメールボックスに送る{email}の{num}ビット認証コードを入力してください。", + "login": "ログイン", + "optional": "記入する", + "submit": "送信", + "sendOK": "認証コードの送信に成功しました。", + "enterPhoneEmail": "メールアドレスを入力してください。", + "effectivePhoneEmail": "有効な携帯やメールを入力してください。", + "enterPasswrod": "{num}ビット長のパスワードを入力してください。", + "passwordLength": "パスワード長さ{num}ビットにはアルファベットのパスワードが含まれています。", + "safe": "安全な取引サービス", + "googleVer": "あなたの携帯アプリのGoogle認証コードを入力してください。", + "phoneCode": "あなたの携帯番号に送る{num}ビット認証コードを入力してください。", + "emailCode": "あなたのメールアドレスに送る{num}ビット認証コードを入力してください。", + "google-code": "Googleの認証コード", + "email-code": "メールアドレス", + "sms-code": "携帯の認証コード", + "new-password": "新しいパスワード", + "confirm-password": "パスワードを確認する", + "forgetPassword": "パスワードを忘れます", + "rememberMe": "覚えてください", + "noAccountYet": "まだアカウントがありません", + "goRegister": "登録する", + "safety": "セキュリティ検証", + "regAccount": "アカウントを登録する", + "phone": "携帯の番号", + "pleaseEmail": "メールアドレスを入力してください。", + "invalidEmail": "不正なメールアドレス", + "enterMobile": "携帯電話の番号を入力してください。", + "invalidPhone": "無効な携帯電話番号", + "enterLengthPassword": "{num 1}から{num 2}ビット長のパスワードを入力してください。", + "hasNumEn": "パスワードは「num」の文字と数字の組み合わせが必要です。", + "iSee": "同意します", + "terms": "条項及び細則", + "reg": "登録する", + "accountActivated": "を選択して、アカウントをアクティブにします", + "backOld": "前のステップに戻ります", + "verCode": "認証コード", + "notEmail": "メールが届かなかったら、以下のチェックをしてみてください。", + "confirmEmail": "入力されたメールアドレスが正しいことを確認してください。", + "confing": "メールボックスの迷惑メールフォルダを確認してください。", + "checkTrashCan": "あなたのメールアドレスが安定したインターネットに接続されていることを確認してください。", + "enterPhone1": "あなたに送る携帯番号を入力してください。", + "enterPhone2": "の{num}ビット検証コード", + "smsNotReceived": "メッセージを受け取っていないなら、以下のチェックをしてみてください。", + "phoneCorrect": "入力された携帯番号と地域番号が正しいことを確認してください。", + "securePhone": "携帯電話の電波が安定していることを確認してください。", + "hasAccount": "すでにアカウントがあります。", + "toLogin": "ログイン", + "securityVerification": "セキュリティ検証", + "disagree": "まだ条項に同意していません。", + "registrationSuccess": "登録に成功しました。ログインページにジャンプしています。", + "referrer": "推薦人", + "c6": "招待コード(必須)", + "c7": "請填寫邀招待コードを入力してください請碼", + "password": "パスワード", + "country": "区番号", + "enter-account": "アカウントを入力してください", + "sign-in": "ログイン", + "find-password": "パスワードを取得", + "confirmpassword": "二回のパスワードが一致しません。", + "Remembered": "パスワードを覚えていますか?" + }, + "application": { + "email": "メールボックス", + "phone": "携帯の番号", + "form": "プロジェクトの申し込み用紙", + "sendUser": "プロジェクトの発起者", + "sendUserEn": "貨幣名", + "sendUserCn": "通貨の中国語名", + "contactPosition": "連絡先と役職", + "tokenPrice": "市価", + "address": "場所", + "mechanism": "プロジェクト投資機構", + "personal": "個人", + "currencyCode": "通貨コード", + "symbol": "記号", + "currencyIdentification": "貨幣種類の標識", + "format": "{name}フォーマットをサポートします。ファイルは{num}より小さいです。", + "fundraisingDate": "募金の日付", + "officialWebsite": "公式サイト", + "whitePaperLinks": "白書リンク", + "noLink": "リンクがない場合は、添付ファイルを文末にアップロードしてください。", + "total_issue": "貨幣の総発行高", + "currencyCirculation": "貨幣の流通量", + "currencyAllocationRatio": "貨幣の割当比率", + "numberOfCurrencyHolders": "貨幣所持人数", + "tradingPlatform": "オンライン取引プラットフォーム", + "privatePlacement": "私募する", + "publicOfferingPrice": "公募価格", + "company": "通貨単位を添付してください。", + "coinType": "貨幣種類", + "currencyIssueDate": "貨幣の発行日", + "blockBrowser": "ブロックブラウザ", + "officialAddress": "公式ウォレットアドレス", + "contractAddress": "契約の住所", + "link": "リンク", + "budget": "つうか料予算", + "unit": "単位とする", + "ofTokens": "貨幣登録後の市場活動項目の貨幣数", + "chineseCurrency": "通貨の紹介", + "enCurrency": "貨幣種類の英語紹介", + "remarks": "コメント", + "uploadWhitePaper": "アップロード白書", + "pleaseUpload": "白書をアップロードしてください", + "recommendationCode": "推薦者氏名機構及び推薦コード", + "ifSo": "あるなら", + "affirmsThat": "ここで上記のすべての情報が真実で、完全かつ正確であることを確認します。私は経済と法律の面で虚偽の情報を提供する責任を負います。", + "iKnow": "分かりました", + "reSubmit": "再提出", + "pleaseConfirm": "確認してください。写真の細部は明らかで、覆い隠されていません", + "pleaseEnter": "入力してください", + "upLoadSuccess": "アップロード成功" + }, + "wallet": { + "low": "最低", + "startTime": "申し込み開始時間", + "status": "状態", + "processing": "審査中", + "direction": "方向", + "all": "全部", + "balance": "残額", + "to": "を選択します", + "assets": "資産", + "filter": "フィルタ", + "search": "検索", + "allAssets": "すべての資産価値", + "addressManagement": "お札の住所管理", + "fee": "凍結残高", + "inside": "内部資金振り替え", + "from": "から", + "history": "歴史の受け渡し", + "transferQuantity": "数量を振り替える", + "capitalAccount": "資金勘定", + "contract": "契約書", + "financial": "投資信託口座", + "leverage": "てこの口座", + "successful": "振り替え成功", + "confirm": "划転を確定する", + "pleaseSelect": "貨幣を選んでください", + "strokes": "振り替え数量を入力してください。", + "addressManagement1": "アドレス管理", + "addAddress": "アドレスを追加", + "selectActiveArea": "アクティブエリアを選択してください。", + "areaOne": "エリア1", + "areaTwo": "エリア2", + "addressAssets": "アドレスリスト", + "addressNum": "住所の数", + "fee1": "手数料", + "creationTime": "作成時間", + "detailAddress": "詳細住所", + "remarks1": "メモ情報", + "operating": "操作", + "complete": "完了", + "copy": "コピー", + "editAddress": "アドレスを編集", + "deleteAddress": "アドレスを削除", + "next": "次の号", + "pre": "次のページ", + "add": "追加成功", + "edit": "編集", + "selectAssets": "資産を選択してください", + "drawAddress": "お札の住所", + "addressRemarks": "このアドレスのコメント", + "remarksDelete": "このアドレスを削除します。", + "optionSuccess": "操作が成功しました", + "showNum": "数字を表示", + "contractAccount": "契約口座", + "marginAccount": "てこの口座", + "financialAccount": "投資信託口座", + "spotAccount": "現物勘定", + "hide": "非表示", + "balanceAssets": "残余資産", + "searchCurrency": "通貨を検索する", + "totalAssets": "総資産", + "availableBalance": "利用可能残高", + "valuation": "推定値", + "recharge": "チャージ", + "withdrawal": "貨幣を受け取る", + "transaction": "取引", + "rechargeAddress": "チャージアドレス", + "rechargeQuantity": "チャージ数量", + "enterQuantity": "数量を入力してください", + "rechargeInstructions": "チャージの説明", + "automaticallyCredited": "この住所は最新のチャージ住所です。システムがチャージを受けると、自動的に入金されます.", + "tran": "振替はブロックチェーンネットワーク全体で確認する必要があります.{num}個のネットワークに確認したら、{name}自動的に口座に振り込みます.", + "only": "このアドレスにのみ{name}を送信してください。このアドレスに他のデジタル通貨を送信すると永久的な損失が発生します.", + "addressList": "アドレスリスト", + "enterDrawAddress": "お札の住所を入力してください。", + "invalidWallet": "有効なウォレットアドレスではありません。もう一度入力してください。", + "withdrawalsNumber": "貨幣の引き出し数", + "enterDrawNum": "端数を入力してください。", + "withdrawalInstructions": "お札の説明", + "enterAddress": "財布の住所をよく確認して入力してください.", + "notSend": "対応していないデジタル通貨をウォレットアドレスに送ると永久的な損失が発生します.", + "deductionFee": "お引き出し手数料は引き出しの数から差し引きます.", + "submitSuccess": "提出に成功しました。審査中です。", + "operationComplete": "お札の操作が完了しました。審査待ちです。", + "rechargeRecord": "チャージ記録", + "withdrawalRecord": "貨幣の引き出し記録", + "assetsName": "資産名を入力してください", + "selectStatus": "状態を選択してください", + "entTIme": "終了日", + "date": "日付", + "hash": "ハッシュ", + "num": "数", + "progress": "進捗", + "error": "失敗", + "success": "成功", + "underReview": "審査中", + "handlingFee1": "手数料", + "transfer": "資金の振り替え", + "transferDescription": "資金振り替えの説明", + "handlingFee": "内部資金の振り替えは自動的に行われますので、手数料は無料です.", + "onlyForeignExchange": "ただあなたの外貨契約口座に振替できます。", + "onlySustainable": "あなたの継続契約口座に振替できるのはnameだけです。", + "inCase1": "外国為替契約をしたいなら、外国為替契約口座に送金してください。保証金としてください。", + "inCase2": "もしあなたが契約を継続したいなら、永遠の契約口座に振り替えて保証金とします.", + "transferRecord": "記録を振り替える", + "allTransfer": "すべての資産振替記録", + "dateTime": "時間", + "UserWallet": "資産口座", + "ContractAccount": "契約口座", + "LeverageAccount": "てこの口座", + "FinancialAccount": "投資信託口座", + "contractFlow": "契約流水", + "info": "メッセージ", + "money": "金額", + "Authentication": "本人認証" + }, + "contact": { + "email": "メールボックス", + "submit": "送信", + "enterEmail": "メールボックスを入力してください", + "info": "メッセージ", + "contact": "連絡します", + "help": "どんな助けが必要ですか?連絡してください。", + "fullName": "名前", + "enterFullName": "フルネームを入力してください", + "consultingService": "お問い合わせ項目", + "pleseSelect": "選択してください", + "enterInfo": "メッセージを入力してください", + "contactInformation": "連絡情報", + "routineConsultation": "一般的なコンサルティング", + "customerService": "顧客サービス", + "mediaCooperation": "メディア連携" + }, + "college": { + "college": "学院", + "buy": "買い入れる", + "register": "登録する", + "upload": "アップロードします", + "industryResearch": "ビジネス研究", + "article": "ブログ", + "tutorialDetails": "教程の詳細", + "howToBuyBitcoin": "ビットコインはどう買いますか?", + "recommendedCourse": "推薦教程", + "visit": "サイトにアクセスして、あなたのアカウントに登録します。", + "realName": "実名認証", + "quickBuy": "一押しで買ってお金を支払う。", + "inIndex": "トップページ/貨幣ページでワンタッチでお金を買い、お支払いが完了したらお金を入れるのを待っています。", + "tradeNow": "すぐ取引に行きます", + "currencyTransaction": "秒で貨幣の取引が分かります", + "contractEntryTransaction": "契約入門取引", + "how": "オプション取引はどうやって行いますか?", + "TradingStrategy": "取引戦略", + "seeMore": "多目に見る", + "oneClick": "ワンキー知能取引", + "inAssets": "資産/チャージページでワンタッチでチャージし、完了したら取引できます。", + "dictionary": "ブロック辞典", + "media": "メディア報道" + }, + "home": { + "optional": "記入する", + "upAndDown": "上昇幅", + "login": "ログイン", + "trading": "取引に行く", + "heigh": "高値", + "low": "最低価格", + "vol": "取引高", + "coinType": "貨幣種類", + "news": "市場の動き", + "safe": "安全な取引サービス", + "reg": "登録する", + "add": "追加成功", + "cancel": "取り消す", + "newEra": "世界トップのデジタル金融派生品取引所", + "startTrading": "取引を開始する", + "walkingLantern": "走馬灯", + "marketCenter": "交易市場", + "latestPrice": "価格", + "more": "もっと見る>>", + "multiPlatform": "マルチプラットフォームのダウンロード", + "atTime": "いつでもどこでも", + "multiTerminal": "マルチプラットフォーム端末取引", + "cover": "上書き", + "multiTerminal1": "複数のプラットフォーム", + "support": "全業務機能対応", + "down": "転ぶ", + "detail": "詳細を表示", + "quickly": "手っ取り早い", + "major": "私たちは投資家のために専門を提供します。", + "features": "核心的な優勢", + "partners": "投資機関&パートナー", + "perpetual_title": "外国為替継続契約", + "perpetual_cont": "世界初の最高100倍のレバレッジとして、安定貨幣で決済された外国為替永続契約は、AMATAK外国為替継続契約が迅速に外国為替取引を行うための高い価格性能比の選択です。", + "stablecoin_title": "世界初の安定貨幣取引センター", + "stablecoin_cont": "AMATAKは強力な安定貨幣の生態環境を構築しています。安定貨幣取引、決済、送金からなる完全な構造は世界の高品質安定貨幣クラブの構成部分になります。", + "security_title": "申し分のない安全", + "security_cont": "AMATAKは最前線のLedger Vaultを採用してデジタル通貨の端点安全を保護しています。Ledger Vaultプラットフォームは第三者の窃盗、内線結託、主種子窃盗に1.5億ドルの保険を提供しています。AMATAKに記憶されている98%以上のデジタル通貨は多重署名式冷財布に保管されており、最高基準の市場リスクコントロールプロセスを採用して、すべてのユーザーの資金安全を保障しています。", + "service_title": "24/7多言語リアルタイムサービス", + "service_cont": "AMATAKのカスタマーサービスは24/7いつでも待機しています。できる限りユーザーに助けを提供して、リアルタイムチャットまたはメールで送ります。support@AMATAK.comカスタマー・サービスに連絡する。", + "analy_title": "高度な分析ツール", + "analy_cont": "トレーダーは、取引ページで異なるグラフツールを使用し、安定したデータに基づく指標で補助的な取引を行うことができます。", + "liquidity_title": "優れた流動性", + "liquidity_cont": "24/7は常にAMATAK取引プラットフォームの高流動性に接続されている。", + "technology_title": "自主開発の技術", + "technology_cont": "AMATAK取引プラットフォームは長い間試練された技術に基づいて、業界のトップ専門家によって作られ、最大の程度でプラットフォームの機能を最適化する。", + "download": "ダウンロードAMATAKモバイル端末", + "easy": "いつでもどこでも、手のひらの取引を開始します。", + "skan": "すぐにコードをスキャンしてダウンロードします", + "core_advantages": "私の核心の優位はデータです。", + "about_us": "私たちについて" + }, + "option": { + "coinType": "貨幣種類", + "history": "歴史の受け渡し", + "option": "約束権", + "down": "転ぶ", + "next": "次の号", + "balance": "残額", + "time": "時間", + "amount": "数", + "seeMore": "多目に見る", + "waitFor": "受け渡しを待つ", + "orderNum": "注文番号", + "buyTime": "購入時間", + "buyAmount": "購入数量", + "buyType": "購入タイプ", + "yield": "収益率", + "state": "状態", + "deliverytime": "受け渡し時間", + "countDown": "受け渡しカウントダウン", + "buyingUp": "買い上げる", + "buyDwon": "買いおとす", + "buyEven": "平たく買う", + "result": "受け渡しの結果", + "settlementQuantity": "決済数量", + "up": "上がる", + "flat": "フラット", + "buyOption": "購入オプション", + "deliveryRecord": "受け渡し記録", + "current": "現在", + "enterNum": "数量を入力してください", + "expectedRevenue": "予想収益", + "beBearish": "暇を見る", + "zf": "値上がり幅", + "bullish": "上伸歩調だ", + "lookAtPing": "平を読む", + "bearish": "弱気になる", + "odds": "損失率", + "buySuccess": "買い入れ成功" + }, + "order": { + "status": "状態", + "direction": "方向", + "upAndDown": "上昇幅", + "sell": "売りに出る", + "buy": "買い入れる", + "price": "価格", + "total": "合計", + "search": "検索", + "cancel": "取り消す", + "orderNum": "注文番号", + "time": "時間", + "reset": "リセット", + "to": "を選択します", + "startTime": "申し込み開始時間", + "endTime": "イベント終了時間", + "spotConsignment": "現物委託", + "yield": "収益率", + "settlementQuantity": "決済数量", + "buyTime": "購入時間", + "noData": "取引記録はまだありません", + "ifCancel": "現在の注文をキャンセルしますか?", + "cancelSuccess": "キャンセル成功", + "marketPrice": "市価取引", + "fixedPrice": "指し値取引", + "exchangeRecord": "取引記録", + "see": "表示", + "opt": "操作", + "tradingPair": "取引ペア", + "type": "タイプ", + "averagePrice": "平均価格", + "matched": "取り持つ", + "totalAmountEntrusted": "委託総量", + "toMatch": "とりとめがない", + "operation": "操作", + "select": "選択してください", + "entrustType": "依頼の種類", + "surrentCommission": "現在の依頼", + "commissionRecord": "委託記録", + "optionTransaction": "オプション取引", + "timeSharing": "時を分かつ", + "buyNum": "購入数量", + "transactionPrice": "成約価格", + "tradingVolume": "取引高", + "aTurnover": "取引高", + "serviceCharge": "手数料", + "buyUp": "買い上げる", + "buyDown": "買いおとす", + "buyLevel": "平たく買う" + }, + "profile": { + "optional": "記入する", + "SelectAreaCode": "市外局番を選択してください", + "upload": "アップロードします", + "pleaseConfirm": "確認してください。写真の細部は明らかで、覆い隠されていません.", + "endTime": "イベント終了時間", + "realName": "実名認証", + "fullName": "名前", + "contactInformation": "連絡情報", + "contactUs": "連絡します", + "invitationReward": "奨励を招く", + "fee": "の取引手数料", + "limit": "活動は以下の開始時間と終了時間に従い、活動開始時間後及び活動終了時間前の有効アカウントに限ります。", + "date": "日付", + "address": "場所", + "primaryCertification": "ジュニア認証", + "advancedCertification1": "高度な認証申請", + "advancedCertification2": "高級認証申請はすでに提出されました。", + "toExamine": "審査する", + "legal": "法定", + "pleaseEnterName": "名前を入力してください", + "dateOfBirth": "生年月日", + "selectDate": "日付を選択", + "documentType": "証明書の種類", + "pelaseSelect": "選択してください", + "certificateNumber": "証明書番号", + "endterIDNumber": "証明書の番号を入力してください", + "addressInfo": "住所情報", + "residentialAddress": "住所", + "residentialAddress1": "住所を入力してください。", + "ciy": "都市", + "incity": "場所都市を入力してください。", + "postalCode": "郵便番号", + "thePostcode": "郵便番号を入力してください。", + "additionalInformation": "追加情報", + "phoneNumber": "電話番号", + "enterPhoneNumber": "携帯の番号を入力してください", + "clickUpload1": "アップロードファイルをクリックして、身分証明書を提出すると、すでに読んでいて、こちらのサービス条項とプライバシー協議に同意しているということです。", + "pelaseDownload": "以下のファイルから有効期限が切れていないものを選択してください。", + "passport": "パスポート", + "drivingLicense": "運転免許証", + "iD": "身分証", + "explain": "説明", + "unexpired": "証明書の有効期限が切れていないファイルは写真かスキャンができます.", + "fileFormat": "ファイル形式", + "maximumFileSize": "最大ファイルサイズ", + "positive": "証明書の表", + "theOtherSide": "証明書の裏", + "hold": "手帳を持つ", + "dragHere": "ここにドラッグしますか", + "clickUpload": "クリックしてアップロード", + "uploadPhoto": "証明書の正面写真をアップロードしてください。", + "reversePhoto": "証明書の裏写真をアップロードしてください。", + "uploadIDCard": "手に持っている証明書の写真をアップロードしてください。", + "nextStep": "次のステップ", + "inSubmit": "あなたの検証申請はすでに提出されました。結果を得た最初の時間にお知らせします。", + "gotIt": "分かりました", + "congratulations": "おめでとうございます", + "back": "戻る", + "resetApply": "再申請するかどうか。", + "recertification": "再認証", + "userInfo": "アカウント情報", + "verState": "検証状態", + "max": "最大", + "limitH": "時間貨幣の限度額", + "verLeave": "認証レベル", + "exceed": "オーバー", + "inviteFriends": "親友を招く", + "dividends": "友達を招待して、{name}を使って、友達の未来の取引の手数料のnumを獲得して配当の奨励とします。", + "sendInvitation": "招待状を送信", + "resetPassword": "パスワードをリセット", + "forLoginAccount": "アカウント登録用。", + "clickReset": "リセットをクリックします", + "registrationDecord": "ログインログ", + "recording": "詳細履歴登録記録を表示するために使用します。", + "recordingDEtail": "詳細記録", + "inviteUse": "友達を誘って使います", + "futureCommission": "親友の未来取引手数料を獲得した{num}配当金として", + "joinThePlan": "ユーザー招待の配当計画に参加します。", + "checkMyDividend": "私の配当を確認します", + "step1": "第一歩", + "shareLink": "リンクを共有", + "step2": "第二のステップ", + "shareFriend": "親友を招く", + "step3": "第三歩", + "instantDividend": "配当を受ける", + "invitationInformation": "招待情報", + "invitationLink": "招待リンク", + "invitationCode": "招待コード", + "registeredUser": "登録済みのユーザ", + "accountNumber": "アカウント", + "registrationTime": "登録時間", + "activityTerms": "活動規約", + "handlingFeeDividend": "手数料配当", + "equalInvitee": "招待者に等しい", + "afterThat": "招待者の取引後に", + "follow": "分以内に招待者口座に振り込みます。", + "activityStartTime": "イベント開始時間", + "Y": "年", + "M": "月", + "D": "日", + "proceed": "継続的に行う", + "atAnyTime": "随時修正、一時停止、またはユーザ招待計画を終了する権利を保留し、別途通知しないことを許す。", + "reservedRights": "重複口座または虚偽口座のために手数料を支払わない権利を留保する。", + "canDecide": "特定の導入を受け入れるかまたは拒否するか、または「name」プラットフォーム{link}に招待されたユーザを決定することができる。", + "bill": "アクセス履歴", + "equipment": "デバイス", + "preliminary": "初歩認証に成功しました", + "clickToVerify": "クリックして確認します", + "clickToVerify1": "完了", + "tips1": "基本認証: 現金を選択するには、高度な認証を完了する必要があります。", + "tips2": "高度な認定: 24 時間の出金制限は最大 5000USDT です。これ以上の出金額が必要な場合は、カスタマー サービスにお問い合わせください。" + }, + "setting": { + "email": "メールボックス", + "phone": "携帯の番号", + "newPassword": "新しいパスワード", + "enterEmail": "メールボックスを入力してください", + "verCode": "認証コード", + "enterPhone": "携帯の番号を入力してください", + "smsVer": "メールの検証", + "enterCode": "認証コードを入力してください", + "emailVer": "メール認証", + "enterEmailVer": "メールの検証コードを入力してください。", + "ver": "検証", + "enterNameCode": "認証コードを入力してください。", + "openSuccess": "オープン成功", + "closeSuccess": "クローズ成功", + "emailVerCode": "メールアドレス", + "enterSmsCode": "メールの検証コードを入力してください。", + "bind": "結合", + "unbind": "縛りを解く", + "bindSuccess": "バインディング成功", + "unbindSuccess": "縛りを解くことに成功した", + "scanQrCode": "二次元コードをスキャンしてください", + "howToOpen": "どうやって開けますか?二回検証します。", + "read": "ここをクリックしてインストール情報を読みます。", + "verKey": "検証鍵", + "safeSetting": "セキュリティ設定", + "loginPassword": "ログインパスワード", + "resLoginPassword": "ログインパスワードをリセット", + "transactionPassword": "取引パスワード", + "usedFor": "契約書と現物依頼の提出に使用します。", + "notOpen": "開いていません", + "modifyPassword": "パスワードを変更", + "setPassword": "パスワードの設定", + "forLogin": "登録、お札、安全設定の変更に使用します。", + "alLast": "少なくとも一つの検証方式を開く。", + "close": "閉じる", + "open": "開く", + "area": "局番を入力してください", + "passwordIs": "取引パスワードは「num」桁の数字です。", + "enterNewPassword": "新しいパスワードを入力してください", + "confirmPassword": "パスワードを確認する", + "pleaseConfirmPassword": "パスワードを確認してください", + "operationSuccess": "操作が成功しました", + "combination": "パスワードはアルファベットと数字の組み合わせが必要です。", + "changeSuccess": "修正成功" + }, + "purchase": { + "startTime": "申し込み開始時間", + "enterNum": "数量を入力してください", + "all": "すべて", + "sendPrice": "発行価格", + "subscriptionCurrency": "通貨を申請購入する", + "expected": "予定ライン時間", + "applyForPurchase": "申請終了時間", + "subscribeNow": "即座に申し込みます", + "subscriptionCycle": "申請期間", + "projectWarmUp": "プロジェクト予熱", + "startSubscription": "申し込みを開始する", + "endOfSubscription": "申し込みを終了する", + "announceResults": "結果を公表する", + "projectCetails": "プロジェクトの詳細", + "useOrNot": "使用するかどうか", + "subscribe": "購入を申請する", + "prompt": "ヒント", + "subscribeSuccess": "申し込み成功" + }, + "contract": { + "a0": "取引の種類を選択してください。", + "a1": "買い入れる", + "a2": "売りに出る", + "a3": "貨幣を取引する", + "a4": "貨幣を選んでください", + "a5": "数", + "a6": "数量を入力してください", + "a7": "価格", + "a8": "価格を入力してください", + "a9": "一回の取引が一番低いです", + "b0": "一回の取引が一番高いです", + "b1": "アリペイを支払う", + "b2": "WeChat", + "b3": "銀行カード", + "b4": "コメント", + "b5": "コメントを入力してください", + "b6": "リリース成功", + "b7": "買います", + "b8": "売りに出す", + "b9": "キャンセルしました", + "c0": "取引中", + "c1": "完了しました", + "c2": "広告番号", + "c3": "状態", + "c4": "総価格", + "c5": "単価", + "c6": "残り", + "c7": "リリース時間", + "c8": "お支払い方法", + "c9": "操作", + "d0": "棚をおりる", + "d1": "現在の広告を降りますか?", + "d2": "暖かいヒント", + "d3": "キャンセル成功", + "d4": "注文の詳細", + "d5": "注文番号", + "d6": "支払い", + "d7": "名前", + "d8": "アカウント", + "d9": "銀行を開く", + "e0": "銀行を開設する", + "e1": "残り時間", + "e2": "ポイント", + "e3": "秒", + "e4": "支払証明書", + "e5": "入金二次元コードをアップロードする", + "e6": "支払証明書をアップロードしてください。", + "e7": "バイヤーのアップロードを待つ", + "e8": "注文をキャンセルする", + "e9": "支払いの確認", + "f0": "未着勘定", + "f1": "入金確認", + "f2": "現在の注文をキャンセルしますか?", + "f3": "を選択します", + "f4": "キャンセル", + "f5": "注文はキャンセルされました", + "f6": "現在の支払い確認", + "f7": "操作が成功しました", + "f8": "入金確認後、販売資産は自動的に振り替えられます。", + "f9": "お金を受け取っていないことを確認したら、この注文は自動的に申告に入ります。", + "g0": "広告を出す", + "g1": "ユーザー", + "g2": "合計", + "g3": "数量を限定する", + "g4": "支払い方法", + "g5": "総量", + "g6": "注文しました", + "g7": "注文を売る", + "g8": "注文書を買う", + "g9": "広告購入注文書", + "h0": "広告販売注文書", + "h1": "全部", + "h2": "閉じられました", + "h3": "支払い待ち", + "h4": "確認します", + "h5": "訴えが当たる", + "h6": "取引の数量", + "h7": "取引先", + "h8": "時間", + "h9": "詳細", + "i0": "アカウントを入力してください", + "i1": "名前を入力してください", + "i2": "入金二次元コード", + "i3": "保存", + "i4": "銀行の名前", + "i5": "銀行名を入力してください。", + "i6": "口座開設支店を入力してください。", + "i7": "銀行カード番号", + "i8": "銀行カード番号を入力してください。", + "i9": "編集に成功しました", + "j0": "追加成功", + "j1": "仏貨の口座", + "j2": "資産", + "j3": "利用可能残高", + "j4": "凍結残高", + "j5": "仏貨取引", + "j6": "私の広告", + "j7": "私の注文", + "j8": "広告", + "j9": "オープン成功", + "k0": "設定成功", + "k1": "損益を決算する", + "k2": "ワンボタン", + "k3": "ワンボタンの逆方向", + "k4": "ワンタッチで全フラットにしますか", + "k5": "キーが逆になるかどうか", + "k6": "完全に成功する", + "k7": "逆効果成功", + "k8": "まず登録して申請してください", + "k9": "予約コードを入力してください" + }, + "otc": { + "a0": "取引の種類を選択してください。", + "a1": "買い入れる", + "a2": "売りに出る", + "a3": "貨幣を取引する", + "a4": "貨幣を選んでください", + "a5": "数", + "a6": "数量を入力してください", + "a7": "価格", + "a8": "価格を入力してください", + "a9": "一回の取引が一番低いです", + "b0": "一回の取引が一番高いです", + "b1": "アリペイを支払う", + "b2": "WeChat", + "b3": "銀行カード", + "b4": "コメント", + "b5": "コメントを入力してください", + "b6": "リリース成功", + "b7": "買います", + "b8": "売りに出す", + "b9": "キャンセルしました", + "c0": "取引中", + "c1": "完了しました", + "c2": "広告番号", + "c3": "状態", + "c4": "総価格", + "c5": "単価", + "c6": "残り", + "c7": "リリース時間", + "c8": "お支払い方法", + "c9": "操作", + "d0": "棚をおりる", + "d1": "現在の広告を降りますか?", + "d2": "暖かいヒント", + "d3": "キャンセル成功", + "d4": "注文の詳細", + "d5": "注文番号", + "d6": "支払い", + "d7": "名前", + "d8": "アカウント", + "d9": "銀行を開く", + "e0": "銀行を開設する", + "e1": "残り時間", + "e2": "ポイント", + "e3": "秒", + "e4": "支払証明書", + "e5": "入金二次元コードをアップロードする", + "e6": "支払証明書をアップロードしてください。", + "e7": "バイヤーのアップロードを待つ", + "e8": "注文をキャンセルする", + "e9": "支払いの確認", + "f0": "未着勘定", + "f1": "入金確認", + "f2": "現在の注文をキャンセルしますか?", + "f3": "を選択します", + "f4": "キャンセル", + "f5": "注文はキャンセルされました", + "f6": "現在の支払い確認", + "f7": "操作が成功しました", + "f8": "入金確認後、販売資産は自動的に振り替えられます。", + "f9": "お金を受け取っていないことを確認したら、この注文は自動的に申告に入ります。", + "g0": "広告を出す", + "g1": "ユーザー", + "g2": "合計", + "g3": "数量を限定する", + "g4": "支払い方法", + "g5": "総量", + "g6": "注文しました", + "g7": "注文を売る", + "g8": "注文書を買う", + "g9": "広告購入注文書", + "h0": "広告販売注文書", + "h1": "全部", + "h2": "閉じられました", + "h3": "支払い待ち", + "h4": "確認します", + "h5": "訴えが当たる", + "h6": "取引の数量", + "h7": "取引先", + "h8": "時間", + "h9": "詳細", + "i0": "アカウントを入力してください", + "i1": "名前を入力してください", + "i2": "入金二次元コード", + "i3": "保存", + "i4": "銀行の名前", + "i5": "銀行名を入力してください。", + "i6": "口座開設支店を入力してください。", + "i7": "銀行カード番号", + "i8": "銀行カード番号を入力してください。", + "i9": "編集に成功しました", + "j0": "追加成功", + "j1": "仏貨の口座", + "j2": "資産", + "j3": "利用可能残高", + "j4": "凍結残高", + "j5": "仏貨取引", + "j6": "私の広告", + "j7": "私の注文", + "j8": "広告", + "j9": "ワンタッチで買う", + "k0": "一押しで売る", + "k1": "購入金額", + "k2": "購入数量", + "k3": "売却額", + "k4": "販売数量", + "k5": "購入金額を入力してください。", + "k6": "購入数量を入力してください。", + "k7": "販売金額を入力してください。", + "k8": "販売数量を入力してください。", + "k9": "数量別に買う", + "l0": "フランス円取引の説明", + "l1": "最小取引量", + "l2": "購入確認", + "l3": "販売の確認", + "l4": "残高が足りない", + "l5": "注文時間", + "l6": "お支払い方法を選択してください。", + "l7": "受取人", + "l8": "入金異常", + "l9": "取引のパスワードを入力してください。", + "m0": "支払い済み", + "m1": "審査が通る", + "m2": "審査に失敗しました", + "m3": "注文完了", + "m4": "注文キャンセル" + }, + "cxiNewText": { + "a0": "トップ10", + "a1": "500万以上", + "a2": "< 0.10%", + "a3": "200+", + "a4": "世界ランキング", + "a5": "ユーザーは私たちを信頼しています", + "a6": "超低料金", + "a7": "国", + "a21": "すぐに収入を得る", + "a22": "個人の暗号通貨ポートフォリオを作成する", + "a23": "100 以上の暗号通貨を購入、取引、保持", + "a24": "アカウントにリチャージします", + "a25": "メールでサインアップする", + "a38": "いつでもどこでも取引を開始できます。", + "a39": "アプリとウェブページでいつでも安全かつ便利に取引を開始できます", + "a40": "QRコードをスキャンしてAPPをダウンロードしてください", + "a41": "信頼できる仮想通貨取引プラットフォーム", + "a42": "当社は、厳格なプロトコルと業界をリードする技術対策によりユーザーの安全を確保することに尽力しています。", + "a43": "ユーザーセキュリティ資産ファンド", + "a44": "ユーザー資金を部分的に保護するために、すべての取引手数料の 10% を安全資産基金に保管します。", + "a45": "個人的なアクセス制御", + "a46": "個人用アクセス制御により、個人アカウントのデバイスとアドレスへのアクセスが制限されるため、ユーザーは心配ありません。", + "a47": "高度なデータ暗号化", + "a48": "個人の取引データはエンドツーエンドの暗号化によって保護されており、本人のみが個人情報にアクセスできます。", + "a57": "クリックして移動", + "a71": "初心者ガイド", + "a72": "デジタル通貨取引の学習を今すぐ開始します", + "a77": "デジタル通貨の購入方法", + "a78": "デジタル通貨の販売方法", + "a79": "デジタル通貨の取引方法", + "a80": "取引市場", + "a81": "24時間市場動向", + "a82": "ウォレットに暗号通貨資金を追加して、すぐに取引を開始しましょう" + }, + "homeNewText": { + "aa1": "暗号通貨ゲート", + "aa2": "100 を超える仮想通貨の安全、迅速、簡単な取引", + "aa3": "メールで登録する", + "aa4": "今すぐ取引を始めましょう", + "aa5": "市場動向", + "aa6": "デジタル資産見積エクスプレス", + "aa7": "通貨", + "bb1": "最新価格(米ドル)", + "bb2": "24時間増加", + "bb3": "24時間の取引量", + "bb4": "誰もが利用できる仮想通貨交換所", + "bb5": "ここで取引を開始して、より良い仮想通貨の旅を体験してください", + "bb6": "個人的", + "bb7": "誰もが利用できる仮想通貨取引所。 幅広い通貨を扱う最も信頼できる大手取引プラットフォーム", + "cc1": "仕事", + "cc2": "企業や機関向けに構築されています。 機関投資家や企業への暗号ソリューションの提供", + "cc3": "開発者", + "cc4": "開発者向けに構築され、開発者が Web3 の将来のツールと API を構築できるようにする", + "cc6": "QRコードをスキャンします", + "cc7": "Android/iOSアプリをダウンロード", + "dd1": "事故ゼロで安全・安定", + "dd2": "複数のセキュリティ戦略と 100% の予備保証により、設立以来セキュリティ事故が発生していないことを保証します。", + "dd3": "暗号資産を簡単かつ便利に取引", + "dd4": "CXIsux では、製品が理解しやすく、取引プロセスが便利で、ワンストップのブロックチェーン資産サービス プラットフォームを提供します", + "dd5": "デリバティブ", + "dd6": "最大 150 倍のレバレッジで 100 以上の暗号通貨の契約を取引し、高い利益を得ることができます", + "ee1": "複数端末のサポート", + "ee2": "いつでもどこでもデジタル資産を取引する", + "ee3": "幅広い資産タイプをサポートし、すべての通貨情報を利用可能", + "ee4": "デジタル資産の取引プロセスをすぐに理解する", + "ee5": "暗号化への取り組みを始めましょう", + "ee6": "グラフィカルな検証", + "hh0": "世界有数の取引所で最高の取引体験を共有しましょう", + "hh1": "良い取引機会を探しています", + "hh2": "100 以上の暗号通貨を安全、高速、簡単に取引", + "hh3": "当社の製品について学ぶ", + "hh4": "ここから取引を開始して、より良い暗号通貨の旅を体験してください", + "hh5": "現物取引", + "hh6": "割引取引手数料で 100 以上の仮想通貨を売買", + "hh7": "契約トランザクション", + "hh8": "USDT 無期限契約を通じて収入を向上させます", + "hh9": "簡単・便利な暗号資産取引", + "hh10": "製品は理解しやすく、取引プロセスは便利で、ワンストップのブロックチェーン資産サービス プラットフォーム", + "hh11": "資金管理", + "hh12": "当社の多様なステーキング製品を通じて高い収益を獲得します", + "hh13": "派生語", + "hh14": "最大 150 倍のレバレッジで 100 以上の暗号通貨契約を取引し、高い利益を得ることができます", + "hh15": "事故ゼロで安全・安定", + "hh16": "複数のセキュリティ ポリシーが保証され、100% の予備保証があり、設立以来セキュリティ インシデントは発生していません。", + "hh17": "BXRCO を選ぶ理由", + "hh18": "信頼できる暗号通貨取引所", + "hh19": "安全性", + "hh20": "2020 年以来、BXRCO は自社開発のシステムにより安定して確実に実行されています。", + "hh21": "サービス", + "hh22": "サービス センターですぐに回答を得ることができ、年中無休で電子メールでお問い合わせいただけます。", + "hh23": "使いやすい", + "hh24": "BXRCO を使用すると、暗号通貨の取引が簡単になります。ワンクリックでコインを購入でき、お金を稼ぐ一瞬のチャンスを逃すことはありません。", + "hh25": "柔軟な売買", + "hh26": "さまざまな暗号通貨がトランザクションをサポートしており、トレンドを常に把握しているため、富の機会を逃すことはありません。", + "hh27": "1 分後に取引が開始されます", + "hh28": "BXRCO アカウントを無料で作成します", + "hh29": "認証を完了しました", + "hh30": "トランザクションを実行", + "hh31": "どこでも取引", + "hh32": "アプリとデスクトップ クライアントに関する最新情報を入手してください。", + "hh33": "コードをスキャンして今すぐダウンロードします", + "hh34": "登録して取引を始めましょう!", + "hh35": "今すぐ登録", + "hh36": "メールで今すぐ登録してください", + "hh37": "グローバルランキング", + "hh38": "ユーザーは私たちを信頼しています", + "hh39": "超低手数料", + "hh40": "国", + "hh41": "BXRCO、いつでもどこでも取引", + "hh42": "今すぐ取引", + "hh43": "QR コードをスキャンして BXRCO APP をダウンロードします" + } +} diff --git a/src/i18n/kor.json b/src/i18n/kor.json new file mode 100644 index 0000000..a60672c --- /dev/null +++ b/src/i18n/kor.json @@ -0,0 +1,1160 @@ +{ + "nav": { + "assets": "자산.", + "contract": "계약 계좌", + "transfer": "자금 을 이체 하 다.", + "excOrders": "현물 위탁", + "contractOrders": "계약 의뢰", + "fundHistory": "충전 기록", + "security": "계 정 보안", + "invite": "친 구 를 초대 하 다.", + "login": "우선 로그 인하 여 조작 하 세 요", + "tips": "시스템 알림", + "set": "우선 적당 한 가격 을 설정 해 주세요.", + "a1": "가격 은 공백 또는 제로 가 될 수 없다", + "a2": "수량 이 공백 또는 0 일 수 없습니다", + "a3": "수량 이 적 으 면 안 된다.", + "a4": "매입 한 시가 표 의 총량 은 공백 또는 제로 가 되 어 서 는 안 된다.", + "a5": "매입 한 시가 표 의 총량 은 작 을 수 없다", + "a6": "판 매 된 시가 의 수량 은 공백 또는 제로 가 되 어 서 는 안 된다.", + "a7": "판매 하 는 시가 표 의 수량 이 적 으 면 안 된다.", + "a8": "이윤 정지 손실 단 촉발 가 는 공 또는 영 이 되 어 서 는 안 된다.", + "a9": "이윤 정지, 손실 정지. - 한정 가격 은 공 또는 영 이 될 수 없습니다.", + "b1": "이윤 정지, 손실 감소. - 한정 수량 이 공백 또는 0 이 되면 안 됩 니 다.", + "b2": "이윤 정지 손실 - 시가 의 촉발 가 는 공 또는 영 이 되 어 서 는 안 된다.", + "b3": "이윤 정지 손실 - 시가 매입 의 총량 은 공백 또는 제로 가 되 어 서 는 안 된다.", + "b5": "이윤 정지 손실 - 시가 매입 의 총량 보다 적 으 면 안 된다.", + "b6": "이윤 정지, 손실 감소. - 시가 판매 수량 이 공백 또는 제로 가 되 어 서 는 안 됩 니 다.", + "b7": "이윤 정지, 손실 감소. - 시가 매출 이 적 으 면 안 돼 요.", + "b8": "페이지 연결 끊 기, 새로 고치 거나 잠시 후 다시 시도 하 세 요!", + "c1": "구입 하 다{amount}매{name}토 큰 획득 가능{rate}%장려 하 다.", + "c2": "구 매 신청 이벤트", + "c3": "발행 총량", + "c4": "유통 총량", + "c5": "발행 가격", + "c6": "발행 시간", + "c7": "백서 주소", + "c8": "홈 페이지 주소", + "c9": "간단 한 소개" + }, + "common": { + "a3": "구 매 신청 기록", + "option": "옵션", + "exchange": "화폐 거래", + "markets": "시세.", + "blogs": "블 로그", + "news": "시장 동향", + "helps": "도움말 센터", + "service": "복무 하 다.", + "contactUs": "연락 주세요.", + "sign_in": "등록 하 다.", + "sign_up": "등록 하 다.", + "noRecord": "기록 이 없다", + "getCode": "인증번호 가 져 오기", + "help1": "외환 계약 가이드", + "help2": "계약 규범", + "optional": "골 라 적다", + "price": "가격.", + "upAndDown": "상승폭", + "heigh": "최고가", + "low": "최저 가", + "vol": "거래 량", + "pair": "거래 팀", + "buy": "매입 하 다.", + "sell": "매출 하 다.", + "buy-in": "매입 하 다.", + "sell-out": "매출 하 다.", + "open-orders": "현재 의뢰", + "condition-orders": "조건 부 의뢰", + "history-orders": "위탁 기록", + "limit": "행 사 는 다음 과 같은 시작 과 종료 시간 을 따 르 고 이벤트 시작 시간 이후 에 만 한정 되 며 활동 종료 시간 전의 유효 계 정 을 획득 할 수 있 습 니 다.", + "market": "시가.", + "stop-limit": "이윤 정지. - 가격 제한.", + "stop-market": "이윤 정지. - 시가.", + "limit-type": "제한 거래", + "market-type": "시가 거래", + "startTime": "구입 신청 시작 시간", + "to": "까지", + "confirmBtn": "확인 하 다.", + "cancelBtn": "취소 하 다.", + "cancel": "철회 하 다.", + "endTime": "이벤트 종료 시간", + "export": "내 보 내기", + "filter": "사별 기", + "all": "소유 하 다.", + "search": "수색 하 다.", + "reset": "초기 화", + "hideAll": "모든 것 을 숨 기 고 이미 취소 한 의뢰", + "canceled": "취소 됨", + "waiting": "주선 을 기다리다", + "triggered": "발동 됨", + "processing": "심사 중 입 니 다.", + "completed": "완료 됨", + "available_phone": "정확 한 핸드폰 번 호 를 입력 하 세 요.", + "available_email": "정확 한 메 일 을 입력 하 세 요.", + "codeSent": "인증번호 이미 발송", + "captcha": "인증번호 오류", + "created": "시간.", + "order-price": "위탁 가격", + "order-amount": "위탁 수량", + "order-total": "위탁 총액", + "avg-price": "평균 가격", + "direction": "방향.", + "order-type": "유형.", + "executed-amount": "이미 알선 하 다", + "executed-total": "거래액", + "outstanding": "주선 을 기다리다", + "status": "상태.", + "details": "상세 한 상황.", + "action": "조작 하 다.", + "id": "주문 번호", + "filled-price": "거래 가", + "filled-amount": "거래 량", + "filled-total": "거래 금액", + "fee": "거래 수수료", + "enterValid": "유효한 핸드폰 번호 나 이메일 을 입력 하 세 요!", + "enterValidEmail": "정확 한 메 일주 소 를 입력 하 세 요", + "enterValidPhone": "유효한 핸드폰 번 호 를 입력 하 세 요!", + "enterAccount": "계 정 을 입력 하 세 요", + "enterEmail": "메 일 박스 를 입력 하 세 요.", + "enterPhone": "핸드폰 번 호 를 입력 하 세 요.", + "enterPwd": "비밀 번 호 를 입력 하 세 요.", + "passwordRegular": "비밀 번 호 는 8 - 15 자리 숫자 와 알파벳 으로 이 루어 져 야 합 니 다.", + "newPassword": "새 비밀번호", + "confirmNewPassword": "확인 한 새 암 호 를 입력 하 세 요", + "enterGoogleCode": "구 글 인증 코드 를 입력 하 세 요", + "enterEmailCode": "메 일 로 보 낼 {Mail} 의 {num} 비트 인증 번 호 를 입력 하 십시오.", + "enterSMSCode": "문자 인증 번 호 를 입력 하 세 요.", + "enterVerCode": "인증번호 입력", + "exportFile": "확인 을 누 르 면 파일 을 내 보 냅 니 다.", + "submit": "제출 하 다.", + "newzone": "새로운 전문 지역 을 개척 하 다.", + "college": "대학.", + "goTo": "가다.", + "logOut": "로그아웃 로그 인", + "homepage": "홈 페이지", + "application": "코 인 신청", + "purchase": "구입 을 신청 하 다.", + "accountInformation": "계좌 정보", + "myWallet": "내 지갑", + "commissionOrder": "주문 을 의뢰 하 다", + "securitySetting": "안전 설정", + "wallet": "지갑", + "allAssets": "모든 자산 가치", + "contractaccount": "계약 계좌", + "transferFunds": "자금 을 이체 하 다.", + "rechargeWithdraw": "충전 인출", + "order": "주문 하 다.", + "spotConsignment": "현물 위탁", + "optionOrders": "옵션 주문서", + "perpetualContract": "무기한 계약", + "foreignContract": "외환 계약", + "notCertified": "인증 되 지 않 음", + "notData": "데이터 없 음", + "assets": "자산.", + "myCommission": "나의 리베이트", + "addressManagement": "코 인 주소 관리", + "auth": "실명 인증", + "invitationReward": "초대 보상", + "visitHistory": "방문 기록", + "noviceTutorial": "신 입 교정", + "tradingStrategy": "거래 전략", + "industryResearch": "업 종 연구", + "blockchainDictionary": "블록 체인 사전", + "mediaCoverage": "언론 보도", + "selectFile": "파일 선택", + "upload": "업로드 진행", + "delete": "삭제 하 다.", + "tooBig": "문건 의 크기 가 너무 커서 초과 해 서 는 안 된다.", + "errorType": "파일 형식 오류", + "resend": "다시 보 내기", + "sms": "문자 메시지", + "email": "메 일주 소", + "sendSuccess": "인증번호 발송 성공", + "retransmission": "재발 하 다", + "start-trade": "즉시 디지털 화폐 여행 을 시작 합 니 다.", + "login": "등록 하 다.", + "register": "등록 하 다.", + "trading": "거래 를 나가다", + "dark": "어둡다.", + "light": "희다.", + "notMore": "더 없어.", + "allRead": "모두 읽 었 습 니 다.", + "newMessage": "새로운 소식.", + "footerTips1": "시장 에 위험 이 있 는 투 자 는 신중 해 야 한다.", + "footerTips2": "법률 성명: 이 사 이 트 는 {name} 회사 에서 운영 합 니 다.", + "footerTips3": "리 스 크 알림: 디지털 자산 거래 는 귀하 의 원금 손실 을 초래 할 수 있 으 므 로 귀하 가 그 중의 위험 을 충분히 이해 하도록 하 십시오.", + "footerTips4": "제한 지역: 특정 국가 / 지역 의 주민 에 게 서 비 스 를 제공 할 수 없다. 예 를 들 어 이스라엘 과 이슬람 공화국 이다." + }, + "exchange": { + "search": "수색 하 다.", + "pair": "거래 팀", + "price": "가격.", + "order-total": "위탁 총액", + "last-price": "최신 가", + "change": "상승폭", + "order-book": "매매 시세", + "amount": "수량.", + "total": "총계 하 다", + "recent-trades": "최신 거래", + "time": "시간.", + "balance": "잔금", + "enter-price": "가격 입력 해 주세요.", + "enter-amount": "수량 을 입력 하 세 요", + "enter-total": "총 가격 을 입력 하 세 요", + "at-best-price": "최고의 시장가 격 에서 거래 가 이 루어 집 니 다.", + "trigger-price": "트리거 가격 을 입력 하 세 요", + "min": "분.", + "hour": "시간.", + "day": "하늘.", + "week": "주.", + "month": "달." + }, + "login": { + "resend": "다시 보 내기", + "sms": "문자 메시지", + "email": "메 일주 소", + "enterEmailCode": "메 일 로 보 낼 {Mail} 의 {num} 비트 인증 번 호 를 입력 하 십시오.", + "login": "등록 하 다.", + "optional": "골 라 적다", + "submit": "제출 하 다.", + "sendOK": "인증번호 발송 성공!", + "enterPhoneEmail": "이메일을 입력하십시오.", + "effectivePhoneEmail": "올 바른 핸드폰 이나 메 일 을 입력 하 세 요.", + "enterPasswrod": "{num} 비트 길이 비밀 번 호 를 입력 하 십시오.", + "passwordLength": "비밀번호 길이 {num} 비트 알파벳 숫자 포함 비밀번호", + "safe": "안전 한 거래 서비스", + "googleVer": "핸드폰 App 에 있 는 {num} 비트 구 글 인증 코드 를 입력 하 십시오.", + "phoneCode": "핸드폰 번호 로 보 내 는 {num} 비트 인증 번 호 를 입력 하 십시오.", + "emailCode": "메 일 로 보 낼 {num} 비트 인증 번 호 를 입력 하 십시오.", + "google-code": "구 글 인증번호", + "email-code": "메 일주 소 인증번호", + "sms-code": "휴대폰 인증 코드", + "new-password": "새 비밀번호", + "confirm-password": "비밀번호 확인", + "forgetPassword": "비밀 번 호 를 잊어버리다.", + "rememberMe": "날 기억 해", + "noAccountYet": "계 정 이 없어 요.", + "goRegister": "등록 하 다.", + "safety": "안전성 검증", + "regAccount": "계 정 을 등록 하 다", + "phone": "핸드폰 번호", + "pleaseEmail": "메 일주 소 를 입력 하 세 요", + "invalidEmail": "잘못된 메 일주 소", + "enterMobile": "핸드폰 번 호 를 입력 하 세 요.", + "invalidPhone": "무효 핸드폰 번호", + "enterLengthPassword": "{num 1} 부터 {num 2} 까지 비트 길이 비밀 번 호 를 입력 하 십시오.", + "hasNumEn": "비밀 번 호 는 {num} 비트 와 숫자 조합 이 필요 합 니 다.", + "iSee": "나 는 동의 한다.", + "terms": "조항 및 세칙", + "reg": "등록 하 다.", + "accountActivated": "계 정 활성화", + "backOld": "이전 단계 로 되돌아가다", + "verCode": "인증번호", + "notEmail": "만약 당신 이 메 일 을 받 지 못 했다 면, 아래 의 검 사 를 시도 해 보십시오.", + "confirmEmail": "당신 이 입력 한 이메일 주소 가 정확 한 지 확인 하 세 요", + "confing": "메 일의 스 팸 메 일 폴 더 를 확인 하 세 요.", + "checkTrashCan": "메 일주 소 가 안정 적 인 인터넷 으로 연결 되 는 지 확인 하 세 요.", + "enterPhone1": "핸드폰 번호 입력 하 세 요", + "enterPhone2": "{num} 비트 인증번호", + "smsNotReceived": "만약 당신 이 문 자 를 받 지 못 했다 면, 아래 와 같은 검 사 를 시도 해 보십시오.", + "phoneCorrect": "당신 이 입력 한 핸드폰 번호 와 지역 번 호 를 확인 하 세 요.", + "securePhone": "핸드폰 신호 가 안정 적 인 지 확인 하 세 요.", + "hasAccount": "계 정 이 하나 있어 요.", + "toLogin": "로그 인 하 러 가기", + "securityVerification": "안전성 검증", + "disagree": "당신 은 아직 약관 에 동의 하지 않 았 습 니 다", + "registrationSuccess": "등록 성공, 로그 인 화면 전환 중", + "referrer": "추천인", + "c6": "초대코드 (필수)", + "c7": "초대코드를 입력해주세요", + "password": "비밀 번호", + "country": "지역 번호", + "enter-account": "계 정 을 입력 하 세 요", + "sign-in": "등록 하 다.", + "find-password": "비밀번호 찾기", + "confirmpassword": "두 번 의 비밀번호 가 일치 하지 않 습 니 다.", + "Remembered": "비밀번호를 기억하시나요?" + }, + "application": { + "email": "메 일주 소", + "phone": "핸드폰 번호", + "form": "상품 상의 화폐 신청서", + "sendUser": "프로젝트 제안 자", + "sendUserEn": "화폐 영문 명", + "sendUserCn": "화폐 종류 중국어 이름", + "contactPosition": "담당자 및 직위", + "tokenPrice": "시가.", + "address": "지점.", + "mechanism": "프로젝트 투자 기구", + "personal": "개인.", + "currencyCode": "화폐 종류 코드", + "symbol": "부호.", + "currencyIdentification": "화폐 종류 표식", + "format": "{name} 형식 을 지원 합 니 다. {num 보다 파일 이 작 습 니 다.", + "fundraisingDate": "모금 일", + "officialWebsite": "공식 사이트", + "whitePaperLinks": "백서 링크", + "noLink": "만약 링크 가 없다 면, 마지막 에 첨부 파일 을 올 려 주 십시오.", + "total_issue": "화폐 종 총 발행 량", + "currencyCirculation": "화폐 유통량", + "currencyAllocationRatio": "화폐 분배 비율", + "numberOfCurrencyHolders": "화폐 보유 인원수.", + "tradingPlatform": "이미 온라인 거래 플랫폼", + "privatePlacement": "사모 펀드", + "publicOfferingPrice": "공모 가격", + "company": "화폐 단위 에 첨부 해 주 십시오.", + "coinType": "화폐 종류.", + "currencyIssueDate": "화폐 발행 일자.", + "blockBrowser": "블록 브 라 우 저", + "officialAddress": "공식 지갑 주소", + "contractAddress": "계약 주소", + "link": "연결 하 다.", + "budget": "지불금 예산", + "unit": "단위", + "ofTokens": "화폐 가 나 온 후 시장 활동 항목 의 기호 화폐 수량.", + "chineseCurrency": "화폐 종류 중국어 소개", + "enCurrency": "화폐 영문 소개", + "remarks": "비고 하 다.", + "uploadWhitePaper": "백서 를 올리다", + "pleaseUpload": "백서 올 려 주세요.", + "recommendationCode": "추천인 성명 기구 및 추천 코드", + "ifSo": "있다 면", + "affirmsThat": "설명: 저 는 여기 서 상술 한 모든 정보 가 진실 하고 완전 하 며 정확 하 다 는 것 을 확인 합 니 다.저 는 경제적 이 고 법 적 으로 허위 정 보 를 제공 하 는 책임 을 지 겠 습 니 다.", + "iKnow": "알 겠 습 니 다.", + "reSubmit": "다시 제출한다", + "pleaseConfirm": "사진 에 찍 힌 모든 세부 사항 이 뚜렷 하고 가 려 지지 않 았 음 을 확증 해 주 십시오.", + "pleaseEnter": "입력 하 세 요", + "upLoadSuccess": "업로드 성공" + }, + "wallet": { + "balance": "잔금", + "to": "까지", + "assets": "자산.", + "filter": "사별 기", + "search": "수색 하 다.", + "allAssets": "모든 자산 가치", + "addressManagement": "코 인 주소 관리", + "fee": "잔액 을 동결 하 다", + "low": "가장 낮다.", + "startTime": "구입 신청 시작 시간", + "status": "상태.", + "processing": "심사 중 입 니 다.", + "direction": "방향.", + "all": "전부.", + "inside": "내부 자금 을 이체 하 다.", + "from": "부터.", + "history": "역사적 분할", + "transferQuantity": "회전 수량", + "capitalAccount": "자금 계좌", + "contract": "계약", + "financial": "재 테 크 계좌", + "leverage": "레버 계 정", + "successful": "자금 이체 에 성공 하 다.", + "confirm": "획 전 을 확정 하 다", + "pleaseSelect": "화폐 종 류 를 선택해 주세요.", + "strokes": "회전 수량 을 입력 하 세 요", + "addressManagement1": "주소 관리", + "addAddress": "주소 추가", + "selectActiveArea": "이벤트 영역 을 선택 하 세 요", + "areaOne": "구역 1", + "areaTwo": "구역 2", + "addressAssets": "주소 목록", + "addressNum": "주소 수량", + "fee1": "수수료", + "creationTime": "창설 시간", + "detailAddress": "상세 주소", + "remarks1": "정 보 를 비고 하 다.", + "operating": "조작 하 다.", + "complete": "완성 하 다.", + "copy": "복제 하 다.", + "editAddress": "주소 편집", + "deleteAddress": "주소 삭제", + "next": "다음 기", + "pre": "다음 페이지", + "add": "추가 성공", + "edit": "편집 하 다.", + "selectAssets": "자산 을 선택 하 세 요", + "drawAddress": "코 인 주소", + "addressRemarks": "이 주소 비고", + "remarksDelete": "이 주소 삭제 확인", + "optionSuccess": "조작 이 성공 하 다", + "showNum": "숫자 보이 기", + "contractAccount": "계약 계좌", + "marginAccount": "레버 계 정", + "financialAccount": "재 테 크 계좌", + "spotAccount": "현물 계 정", + "hide": "감추다.", + "balanceAssets": "잔고 자산", + "searchCurrency": "화폐 종 류 를 검색 하 다.", + "totalAssets": "총자 산", + "availableBalance": "사용 가능 잔액", + "valuation": "평가 하 다.", + "recharge": "충전", + "withdrawal": "돈 을 인출 하 다.", + "transaction": "거래 하 다.", + "rechargeAddress": "충전 주소", + "rechargeQuantity": "충전 수량", + "enterQuantity": "수량 을 입력 하 세 요", + "rechargeInstructions": "충전 설명", + "automaticallyCredited": "이 주 소 는 귀하 의 최신 충전 주소 입 니 다. 시스템 이 충전 을 받 으 면 자동 으로 입 금 됩 니 다.", + "tran": "계좌 이체 시 전체 블록 체인 네트워크 에서 확인 해 야 합 니 다. {num} 개 네트워크 확인 시 {name} 이 계 정 에 자동 으로 저 장 됩 니 다.", + "only": "{name} 을 이 주소 로 만 보 내 주세요. 다른 디지털 화 폐 를 이 주소 로 보 내 면 영구적 인 손실 이 발생 합 니 다.", + "addressList": "주소 목록", + "enterDrawAddress": "인출 주 소 를 입력 하 세 요.", + "invalidWallet": "유효한 지갑 주소 가 아 닙 니 다. 다시 입력 해 주세요.", + "withdrawalsNumber": "인출 수량", + "enterDrawNum": "코 인 수량 을 입력 하 세 요", + "withdrawalInstructions": "동전 인출 설명", + "enterAddress": "정확 한 코 인 지갑 주 소 를 자세히 확인 하고 입력 하 세 요.", + "notSend": "대응 하지 않 는 디지털 화 폐 를 지갑 주소 로 보 내 면 영구적 인 손실 을 초래 할 수 있다.", + "deductionFee": "인출 수수 료 는 인출 수량 에서 공제 된다.", + "submitSuccess": "제출 성공, 심사 중", + "operationComplete": "코 인 인출 작업 이 완료 되 었 습 니 다. 심 사 를 기다 리 고 있 습 니 다.", + "rechargeRecord": "충전 기록", + "withdrawalRecord": "동전 인출 기록", + "assetsName": "자산 명 입력", + "selectStatus": "상태 선택 하 세 요", + "entTIme": "종료 날짜", + "date": "날짜.", + "hash": "해시.", + "num": "수량.", + "progress": "진도.", + "error": "실패 하 다.", + "success": "성공 하 다.", + "underReview": "심사 중 입 니 다.", + "handlingFee1": "수수료", + "transfer": "자금 을 이체 하 다.", + "transferDescription": "자금 이체 설명", + "handlingFee": "내부 자금 의 이체 가 자동 으로 이 루어 지 며 수수 료 를 면제 하 는 것 을 주의 하 세 요.", + "onlyForeignExchange": "{name} 만 외환 계약 계좌 로 이체 가능", + "onlySustainable": "{name} 만 영구적 인 계 정 으로 이체 가능 합 니 다.", + "inCase1": "외환 계약 을 거래 하려 면 {name} 을 외환 계약 계좌 로 이체 하여 보증금 으로 해 야 합 니 다.", + "inCase2": "계약 을 계속 하 시 려 면 {name} 을 계약 계 정 에 계속 이체 하 셔 야 합 니 다. 보증금 으로 사용 하 십시오.", + "transferRecord": "이체 기록", + "allTransfer": "모든 자산 이체 기록", + "dateTime": "시간.", + "UserWallet": "자산 계좌", + "ContractAccount": "계약 계좌", + "LeverageAccount": "레버 계 정", + "FinancialAccount": "재 테 크 계좌", + "contractFlow": "계약 흐름", + "info": "정보.", + "money": "금액.", + "Authentication": "인증" + }, + "contact": { + "email": "메 일주 소", + "submit": "제출 하 다.", + "enterEmail": "메 일 박스 를 입력 하 세 요.", + "info": "정보.", + "contact": "연락 주세요.", + "help": "도움 이 필요 하 시 면 연락 주세요.", + "fullName": "성명.", + "enterFullName": "전체 이름 을 입력 하 세 요", + "consultingService": "프로젝트 문의", + "pleseSelect": "선택 하 세 요.", + "enterInfo": "정 보 를 입력 하 세 요", + "contactInformation": "연락 정보", + "routineConsultation": "일반 상담", + "customerService": "고객 서비스", + "mediaCooperation": "미디어 합작" + }, + "college": { + "college": "대학.", + "buy": "매입 하 다.", + "register": "등록 하 다.", + "upload": "업로드 진행", + "industryResearch": "업 종 연구", + "article": "블 로그", + "tutorialDetails": "튜 토리 얼 상세", + "howToBuyBitcoin": "어떻게 비트 코 인 을 구 매 합 니까?", + "recommendedCourse": "추천 강좌", + "visit": "{name} 웹 사 이 트 를 방문 하여 {name} 계 정 을 등록 합 니 다.", + "realName": "실명 인증", + "quickBuy": "원 키 구 매 및 대금 지급", + "inIndex": "홈 페이지 / 구 매 화면 에서 원 키 로 돈 을 사고, 지불 완료 후 동전 넣 기 를 기다린다.", + "tradeNow": "바로 거래 하 러 갑 니 다.", + "currencyTransaction": "코 인 거래", + "contractEntryTransaction": "계약 입문 거래", + "how": "어떻게 옵션 거래 를 진행 합 니까?", + "TradingStrategy": "거래 전략", + "seeMore": "많이 보다.", + "oneClick": "원 키 스마트 거래", + "inAssets": "자산 / 코 인 충전 화면 에서 원 키 로 코 인 충전, 완료 후 거래 가능", + "dictionary": "블록 체인 사전", + "media": "언론 보도" + }, + "home": { + "optional": "골 라 적다", + "login": "등록 하 다.", + "upAndDown": "상승폭", + "heigh": "최고가", + "low": "최저 가", + "vol": "거래 량", + "coinType": "화폐 종류.", + "news": "시장 동향", + "safe": "안전 한 거래 서비스", + "reg": "등록 하 다.", + "trading": "거래 를 나가다", + "add": "추가 성공", + "cancel": "철회 하 다.", + "newEra": "전 세계 에서 앞장 서 는 디지털 금융 파생 제품 거래소", + "startTrading": "거래 를 시작 하 다", + "walkingLantern": "주마등", + "marketCenter": "거래 시장", + "latestPrice": "가격.", + "more": "더 보기 > >", + "multiPlatform": "다 중 플랫폼 다운로드", + "atTime": "언제 어디서나", + "multiTerminal": "다 중 플랫폼 단말기 거래", + "cover": "덮다.", + "multiTerminal1": "여러 개의 플랫폼", + "support": "전 업무 기능 을 지원 하 다", + "down": "넘어지다.", + "detail": "상세 한 상황 을 보다.", + "quickly": "빨리 착수 하 다.", + "major": "우 리 는 투자 자 에 게 전공 을 제공한다.", + "features": "핵심 우위", + "partners": "투자 기구 & 파트너", + "perpetual_title": "외화 영속 계약", + "perpetual_cont": "전 세계 에서 최초 로 100 배 까지 의 레버 리 지 를 창 출하 는 안정 적 인 통화 결제 의 외화 영속 계약 으로서 AMATAK 외환 영속 계약 은 외환 거래 를 신속히 진행 하 는 높 은 가성 비 선택 이다.", + "stablecoin_title": "세계 최초의 안정 적 인 통화 거래 센터.", + "stablecoin_cont": "AMATAK 는 강력 한 안정 적 인 통화 생태 환경 을 구축 하고 안정 적 인 통화 거래, 지불 과 송금 으로 구 성 된 완전한 구 조 를 구축 하여 전 세계 고 품질 안정 적 인 통화 클럽 의 구성 부분 이 되 었 습 니 다!", + "security_title": "나 무 랄 데 없 는 안전", + "security_cont": "AMATAK 는 최첨단 Ledger Vault 로 디지털 화폐의 단점 안전 을 보호 한다. Ledger Vault 플랫폼 은 제3자 에 게 절도, 내선 유착 과 주 종자 절도 에 무려 1.5 억 달러 의 보험 을 제공한다.AMATAK 에 저 장 된 98% 이상 의 디지털 화 폐 는 모두 다 중 사인 콜 드 월 렛 에 보관 되 고 가장 높 은 기준 을 가 진 시장 리 스 크 제어 프로 세 스 를 통 해 모든 사용자 의 자금 안전 을 보장 합 니 다.", + "service_title": "24 / 7 다 국어 실시 간 서비스", + "service_cont": "AMATAK 의 고객 서비스 24 / 7 은 언제든지 대기 하고 최선 을 다 하여 사용자 에 게 도움 을 제공 하고 실시 간 채 팅 을 통 해 메 일 을 보 냅 니 다.support@AMATAK.com고객 지원 을 연락 하 다.", + "analy_title": "고급 분석 도구", + "analy_cont": "거래 자 는 거래 화면 에서 서로 다른 도표 도구 와 안정 적 인 데 이 터 를 바탕 으로 하 는 기준 으로 거래 를 보조 할 수 있다.", + "liquidity_title": "우수한 유동성", + "liquidity_cont": "24 / 7 은 수시로 AMATAK 거래 플랫폼 의 높 은 유동성 과 연결된다.", + "technology_title": "자체 개발 한 기술", + "technology_cont": "AMATAK 거래 플랫폼 은 오 랜 시련 을 겪 은 기술 을 바탕 으로 업계 최고의 전문가 에 의 해 만들어 지고 플랫폼 기능 을 최대한 최적화 시킨다.", + "download": "AMATAK 이동 단 다운로드", + "easy": "언제 어디서나 거래 를 시작 하 다.", + "skan": "즉시 스 캔 다운로드", + "core_advantages": "저의 핵심 장점 은 데이터 입 니 다.", + "about_us": "회사 소개" + }, + "option": { + "coinType": "화폐 종류.", + "history": "역사적 분할", + "option": "옵션", + "down": "넘어지다.", + "next": "다음 기", + "balance": "잔금", + "time": "시간.", + "amount": "수량.", + "seeMore": "많이 보다.", + "waitFor": "거래 를 기다리다", + "orderNum": "주문 번호", + "buyTime": "구입 시간", + "buyAmount": "매입 수량", + "buyType": "구 매 유형", + "yield": "수익 률", + "state": "상태.", + "deliverytime": "결제 시간", + "countDown": "분할 초읽기", + "buyingUp": "값 이 오르다", + "buyDwon": "매수 하여 떨어뜨리다", + "buyEven": "똑 같이 사다", + "result": "결 과 를 인계 하 다.", + "settlementQuantity": "결산 수량", + "up": "붇다.", + "flat": "평평 하 다.", + "buyOption": "옵션 을 구 매 하 다", + "deliveryRecord": "인계 기록", + "current": "현재.", + "enterNum": "수량 을 입력 하 세 요", + "expectedRevenue": "예상 수익", + "beBearish": "틈 을 보다.", + "zf": "상승폭", + "bullish": "상승 세 를 보이다.", + "lookAtPing": "똑바로 보다", + "bearish": "하락 세 를 보이다.", + "odds": "배상 율", + "buySuccess": "매입 성공" + }, + "order": { + "upAndDown": "상승폭", + "buy": "매입 하 다.", + "time": "시간.", + "price": "가격.", + "cancel": "철회 하 다.", + "sell": "매출 하 다.", + "status": "상태.", + "direction": "방향.", + "total": "총계 하 다", + "reset": "초기 화", + "to": "까지", + "startTime": "구입 신청 시작 시간", + "endTime": "이벤트 종료 시간", + "spotConsignment": "현물 위탁", + "orderNum": "주문 번호", + "yield": "수익 률", + "settlementQuantity": "결산 수량", + "buyTime": "구입 시간", + "noData": "거래 기록 이 잠시 없다.", + "ifCancel": "현재 주문 취소 여부", + "cancelSuccess": "취소 성공", + "marketPrice": "시가 거래", + "fixedPrice": "제한 거래", + "exchangeRecord": "거래 기록", + "see": "살펴보다.", + "opt": "조작 하 다.", + "tradingPair": "거래 팀", + "type": "유형.", + "averagePrice": "평균 가격", + "matched": "이미 알선 하 다", + "totalAmountEntrusted": "위탁 총량", + "toMatch": "맺 히 지 않다", + "operation": "조작 하 다.", + "select": "선택 하 세 요.", + "entrustType": "의뢰 유형", + "surrentCommission": "현재 의뢰", + "commissionRecord": "위탁 기록", + "optionTransaction": "옵션 거래", + "timeSharing": "시간 을 나누다.", + "buyNum": "구 매 수량", + "transactionPrice": "거래 가격", + "tradingVolume": "거래 량", + "aTurnover": "거래액", + "serviceCharge": "수수료", + "buyUp": "값 이 오르다", + "buyDown": "매수 하여 떨어뜨리다", + "buyLevel": "똑 같이 사다" + }, + "profile": { + "endTime": "이벤트 종료 시간", + "optional": "골 라 적다", + "upload": "업로드 진행", + "realName": "실명 인증", + "SelectAreaCode": "지역번호 선택", + "fullName": "성명.", + "contactInformation": "연락 정보", + "pleaseConfirm": "사진 에 찍 힌 모든 세부 사항 이 뚜렷 하고 가 려 지지 않 았 음 을 확증 해 주 십시오.", + "contactUs": "연락 주세요.", + "invitationReward": "초대 보상", + "fee": "거래 수수료", + "limit": "행 사 는 다음 과 같은 시작 과 종료 시간 을 따 르 고 이벤트 시작 시간 이후 에 만 한정 되 며 활동 종료 시간 전의 유효 계 정 을 획득 할 수 있 습 니 다.", + "date": "날짜.", + "address": "지점.", + "primaryCertification": "초급 인증", + "advancedCertification1": "고급 인증 신청", + "advancedCertification2": "고급 인증 신청 이미 제출", + "toExamine": "심사 하 다.", + "legal": "법정.", + "pleaseEnterName": "이름 을 입력 하 세 요", + "dateOfBirth": "생년월일", + "selectDate": "날 짜 를 선택 하 다", + "documentType": "증명서 유형", + "pelaseSelect": "선택 하 세 요.", + "certificateNumber": "여권번호", + "endterIDNumber": "증명 번 호 를 입력 하 세 요.", + "addressInfo": "주소 정보", + "residentialAddress": "거주 지", + "residentialAddress1": "거주 지 를 입력 하 세 요", + "ciy": "도시.", + "incity": "소재 도 시 를 입력 하 세 요", + "postalCode": "우편번호", + "thePostcode": "우편 번호 입력 하 세 요", + "additionalInformation": "추가 정보", + "phoneNumber": "전화 번호", + "enterPhoneNumber": "핸드폰 번 호 를 입력 하 세 요.", + "clickUpload1": "파일 을 업로드 하고 인증 서 를 제출 하려 면 귀하 가 저희 서비스 조항 과 프라이버시 협 의 를 읽 고 동의 한 다 는 뜻 입 니 다.", + "pelaseDownload": "다음 파일 중 기간 이 지나 지 않 은 것 을 선택 하 십시오.", + "passport": "여권.", + "drivingLicense": "운전 면허증", + "iD": "신분증", + "explain": "설명 하 다.", + "unexpired": "기한 이 지나 지 않 은 증명서 류 는 사진 이나 스 캔 파일 일 수 있다.", + "fileFormat": "서류 양식", + "maximumFileSize": "최대 파일 크기", + "positive": "증명서 의 앞면", + "theOtherSide": "증거 뒷면", + "hold": "신분증 을 소지 하 다.", + "dragHere": "여기에 끌 어 다 놓 거나,", + "clickUpload": "클릭 하여 업로드", + "uploadPhoto": "증명 서 를 정면 사진 으로 올 려 주세요.", + "reversePhoto": "증명 서 를 뒷면 사진 으로 올 려 주세요.", + "uploadIDCard": "신분증 사진 을 올 려 주세요.", + "nextStep": "다음 단계", + "inSubmit": "당신 의 인증 신청 이 제출 되 었 습 니 다!우 리 는 결 과 를 얻 는 첫 번 째 시간 에 당신 에 게 통지 할 것 입 니 다.", + "gotIt": "알 겠 습 니 다.", + "congratulations": "축하합니다.", + "back": "돌아가다", + "resetApply": "다시 신청 할 지 여부 입 니 다.", + "recertification": "재차 인증 하 다", + "userInfo": "계좌 정보", + "verState": "상태 검증", + "max": "최대", + "limitH": "시간 인출 한도액", + "verLeave": "인증 수준", + "exceed": "초과 하 다.", + "inviteFriends": "친 구 를 초대 하 다.", + "dividends": "친구 요청 {name}, 친구 의 미래 거래 수수료 {num} 을 보너스 로 받 습 니 다.", + "sendInvitation": "초대장 을 보내다", + "resetPassword": "비밀번호 초기 화", + "forLoginAccount": "계 정 로그 인 에 사용.", + "clickReset": "클릭 하여 리 셋", + "registrationDecord": "로그 인 기록", + "recording": "상세 한 과거 기록 을 표시 합 니 다", + "recordingDEtail": "상세 한 기록", + "inviteUse": "친구 요청 사용", + "futureCommission": "친구 의 미래 거래 수수료 의 {num} 을 배당 으로 받 았 습 니 다.", + "joinThePlan": "{name} 가입 사용자 요청 배당 계획", + "checkMyDividend": "나의 배당 을 살펴보다.", + "step1": "첫 걸음", + "shareLink": "링크 공유", + "step2": "두 번 째 단계", + "shareFriend": "친 구 를 초대 하 다.", + "step3": "세 번 째 단계", + "instantDividend": "이익 배당 을 즉시 누리다.", + "invitationInformation": "초대 메시지", + "invitationLink": "초대 링크", + "invitationCode": "초청장 코드", + "registeredUser": "이미 가입 한 사용자", + "accountNumber": "계좌번호", + "registrationTime": "등록 시간", + "activityTerms": "행사 조항", + "handlingFeeDividend": "수수료 배당", + "equalInvitee": "초 대 받 은 사람 이나 다름없다.", + "afterThat": "초 대 받 은 후", + "follow": "1 분 안에 초청장 계좌 로 넘 어 갑 니 다.", + "activityStartTime": "이벤트 시작 시간", + "Y": "나이.", + "M": "달.", + "D": "해.", + "proceed": "지속 적 으로 진행 하 다", + "atAnyTime": "사용자 초대 계획 을 수시로 수정, 일시 정지 또는 중지 할 권 리 를 보류 하고 별도로 통지 하지 않 는 것 을 용서 하 십시오.", + "reservedRights": "중복 계 정 이나 허위 계 좌 를 위해 수수 료 를 배당 하지 않 을 권 리 를 유보 하 다.", + "canDecide": "특정 인 도 를 수락 하거나 거부 하거나 {name} 플랫폼 {link} 에 초 대 된 사용 자 를 결정 할 수 있 습 니 다.", + "bill": "방문 기록", + "equipment": "설비.", + "preliminary": "초보 인증 성공", + "clickToVerify": "클릭 하여 인증", + "clickToVerify1": "완료됨", + "tips1": "기본 인증: 현금을 선택하려면 고급 인증을 완료해야 합니다.", + "tips2": "고급 인증: 24시간 출금 한도는 최대 5000USDT입니다. 더 많은 출금 금액이 필요한 경우 고객 서비스에 문의하세요." + }, + "setting": { + "email": "메 일주 소", + "phone": "핸드폰 번호", + "enterEmail": "메 일 박스 를 입력 하 세 요.", + "verCode": "인증번호", + "enterPhone": "핸드폰 번 호 를 입력 하 세 요.", + "newPassword": "새 비밀번호", + "enterNum": "수량 을 입력 하 세 요", + "smsVer": "문자 검증", + "enterCode": "인증번호 입력", + "emailVer": "메 일주 소 인증", + "enterEmailVer": "메 일 박스 인증 번 호 를 입력 하 세 요.", + "ver": "검증 하 다.", + "enterNameCode": "{name} 인증 코드 를 입력 하 십시오", + "openSuccess": "오픈 성공", + "closeSuccess": "종료 성공", + "emailVerCode": "메 일주 소 인증번호", + "enterSmsCode": "문자 인증 번 호 를 입력 하 세 요.", + "bind": "귀속 하 다.", + "unbind": "포박 을 풀다", + "bindSuccess": "귀속 성공", + "unbindSuccess": "해제 성공", + "scanQrCode": "QR 코드 를 스 캔 해 주세요.", + "howToOpen": "{name} 2 차 검증", + "read": "클릭 하여 설치 정보 읽 기", + "verKey": "키 검증", + "safeSetting": "안전 설정", + "loginPassword": "로그 인 비밀번호", + "resLoginPassword": "로그 인 비밀번호 초기 화", + "transactionPassword": "거래 비밀번호", + "usedFor": "계약 및 현물 의뢰 제출 에 사용", + "notOpen": "오픈 하지 않 음", + "modifyPassword": "비밀번호 변경", + "setPassword": "비밀 번 호 를 설정 하 다.", + "forLogin": "로그 인, 동전 인출 및 안전 설정 변경 에 사용", + "alLast": "최소한 하나의 검증 방식 을 실행", + "close": "폐쇄 하 다.", + "open": "열다.", + "area": "지역 번 호 를 입력 하 세 요.", + "passwordIs": "거래 비밀번호 {num} 비트 숫자", + "enterNewPassword": "새 암 호 를 입력 하 세 요", + "confirmPassword": "비밀번호 확인", + "pleaseConfirmPassword": "비밀번호 확인 해 주세요.", + "operationSuccess": "조작 이 성공 하 다", + "combination": "비밀 번 호 는 알파벳 과 숫자 조합 이 필요 합 니 다.", + "changeSuccess": "수정 성공" + }, + "purchase": { + "startTime": "구입 신청 시작 시간", + "endTime": "이벤트 종료 시간", + "all": "소유 하 다.", + "sendPrice": "발행 가격", + "subscriptionCurrency": "구 매 신청 화폐 종류", + "expected": "예상 접속 시간", + "applyForPurchase": "구 매 신청 마감 시간", + "subscribeNow": "즉시 구 매 신청", + "subscriptionCycle": "구입 신청 주기", + "projectWarmUp": "프로젝트 예열", + "startSubscription": "구 매 신청 을 시작 하 다", + "endOfSubscription": "구 매 신청 을 마감 하 다", + "announceResults": "결 과 를 발표 하 다", + "projectCetails": "프로젝트 정보", + "useOrNot": "사용 여부", + "subscribe": "구입 을 신청 하 다.", + "prompt": "제시 하 다.", + "subscribeSuccess": "구 매 신청 성공" + }, + "contract": { + "a0": "거래 유형 을 선택 하 세 요", + "a1": "매입 하 다.", + "a2": "매출 하 다.", + "a3": "거래 화폐 종류", + "a4": "화폐 종 류 를 선택해 주세요.", + "a5": "수량.", + "a6": "수량 을 입력 하 세 요", + "a7": "가격.", + "a8": "가격 입력 해 주세요.", + "a9": "1 회 거래 최저", + "b0": "1 회 거래 최고", + "b1": "알 리 페 이", + "b2": "위 챗 편지", + "b3": "은행 카드", + "b4": "비고 하 다.", + "b5": "설명 을 입력 하 세 요", + "b6": "발표 성공", + "b7": "구입 하 다.", + "b8": "판매 하 다.", + "b9": "취소 됨", + "c0": "거래 중", + "c1": "완료 됨", + "c2": "광고 번호", + "c3": "상태.", + "c4": "총가격", + "c5": "단가", + "c6": "나머지.", + "c7": "발표 시간", + "c8": "수금 방식", + "c9": "조작 하 다.", + "d0": "내리다", + "d1": "현재 광고 내리 기 여부", + "d2": "알림", + "d3": "취소 성공", + "d4": "주문 상세", + "d5": "주문 번호", + "d6": "지불 하 다.", + "d7": "성명.", + "d8": "계좌번호", + "d9": "계좌 개설 은행", + "e0": "계좌 개설 지점", + "e1": "남 은 시간", + "e2": "분.", + "e3": "초.", + "e4": "지불 증명서", + "e5": "수금 QR 코드 를 업로드 하 다", + "e6": "지급 증명 서 를 올 려 주세요.", + "e7": "바이어 가 올 리 기 를 기다리다", + "e8": "주문 취소", + "e9": "지불 을 확인 하 다", + "f0": "미 입금", + "f1": "수금 을 확인 하 다", + "f2": "현재 주문 취소 여부", + "f3": "확정 하 다.", + "f4": "취소 하 다.", + "f5": "주문 이 취소 되 었 습 니 다.", + "f6": "현재 지불 확인", + "f7": "조작 이 성공 하 다", + "f8": "수금 을 확인 한 후 매 물 자산 을 자동 으로 이체 하 다", + "f9": "미 입금 확인 후, 이 주문 서 는 자동 으로 신고 에 들 어 갑 니 다", + "g0": "광 고 를 내다", + "g1": "사용자", + "g2": "총수", + "g3": "한정 하 다.", + "g4": "지불 방식", + "g5": "총량", + "g6": "주문 성공", + "g7": "판매 주문서", + "g8": "주문 서 를 구입 하 다.", + "g9": "광고 구 매 주문서", + "h0": "광고 판매 주문서", + "h1": "전부.", + "h2": "종료 됨", + "h3": "미 지급", + "h4": "확인 을 기다리다", + "h5": "신고 중 입 니 다.", + "h6": "거래 량", + "h7": "거래 대상", + "h8": "시간.", + "h9": "상세 한 상황.", + "i0": "계 정 을 입력 하 세 요", + "i1": "이름 을 입력 하 세 요", + "i2": "수금 QR 코드", + "i3": "보존 하 다.", + "i4": "은행 명", + "i5": "은행 명칭 을 입력 하 세 요", + "i6": "계좌 개설 지점 을 입력 하 세 요", + "i7": "은행 카드번호", + "i8": "카드 번 호 를 입력 하 세 요.", + "i9": "편집 성공", + "j0": "추가 성공", + "j1": "법정 통화 계좌", + "j2": "자산.", + "j3": "사용 가능 잔액", + "j4": "잔액 을 동결 하 다", + "j5": "법정 통화 거래.", + "j6": "내 광고.", + "j7": "내 주문", + "j8": "광고", + "j9": "개통 성공", + "k0": "설정 성공", + "k1": "손익 을 결산 하 다.", + "k2": "원 키 전평", + "k3": "원 키 반전", + "k4": "원 키 전평 여부", + "k5": "원 클릭 반전 여부", + "k6": "순 전 히 성공 하 다", + "k7": "역방향 성공", + "k8": "먼저 로그 인하 여 구 매 신청 하 세 요", + "k9": "청 약 코드 를 입력 하 세 요" + }, + "otc": { + "a0": "거래 유형 을 선택 하 세 요", + "a1": "매입 하 다.", + "a2": "매출 하 다.", + "a3": "거래 화폐 종류", + "a4": "화폐 종 류 를 선택해 주세요.", + "a5": "수량.", + "a6": "수량 을 입력 하 세 요", + "a7": "가격.", + "a8": "가격 입력 해 주세요.", + "a9": "1 회 거래 최저", + "b0": "1 회 거래 최고", + "b1": "알 리 페 이", + "b2": "위 챗 편지", + "b3": "은행 카드", + "b4": "비고 하 다.", + "b5": "설명 을 입력 하 세 요", + "b6": "발표 성공", + "b7": "구입 하 다.", + "b8": "판매 하 다.", + "b9": "취소 됨", + "c0": "거래 중", + "c1": "완료 됨", + "c2": "광고 번호", + "c3": "상태.", + "c4": "총가격", + "c5": "단가", + "c6": "나머지.", + "c7": "발표 시간", + "c8": "수금 방식", + "c9": "조작 하 다.", + "d0": "내리다", + "d1": "현재 광고 내리 기 여부", + "d2": "알림", + "d3": "취소 성공", + "d4": "주문 상세", + "d5": "주문 번호", + "d6": "지불 하 다.", + "d7": "성명.", + "d8": "계좌번호", + "d9": "계좌 개설 은행", + "e0": "계좌 개설 지점", + "e1": "남 은 시간", + "e2": "분.", + "e3": "초.", + "e4": "지불 증명서", + "e5": "수금 QR 코드 를 업로드 하 다", + "e6": "지급 증명 서 를 올 려 주세요.", + "e7": "바이어 가 올 리 기 를 기다리다", + "e8": "주문 취소", + "e9": "지불 을 확인 하 다", + "f0": "미 입금", + "f1": "수금 을 확인 하 다", + "f2": "현재 주문 취소 여부", + "f3": "확정 하 다.", + "f4": "취소 하 다.", + "f5": "주문 이 취소 되 었 습 니 다.", + "f6": "현재 지불 확인", + "f7": "조작 이 성공 하 다", + "f8": "수금 을 확인 한 후 매 물 자산 을 자동 으로 이체 하 다", + "f9": "미 입금 확인 후, 이 주문 서 는 자동 으로 신고 에 들 어 갑 니 다", + "g0": "광 고 를 내다", + "g1": "사용자", + "g2": "총수", + "g3": "한정 하 다.", + "g4": "지불 방식", + "g5": "총량", + "g6": "주문 성공", + "g7": "판매 주문서", + "g8": "주문 서 를 구입 하 다.", + "g9": "광고 구 매 주문서", + "h0": "광고 판매 주문서", + "h1": "전부.", + "h2": "종료 됨", + "h3": "미 지급", + "h4": "확인 을 기다리다", + "h5": "신고 중 입 니 다.", + "h6": "거래 량", + "h7": "거래 대상", + "h8": "시간.", + "h9": "상세 한 상황.", + "i0": "계 정 을 입력 하 세 요", + "i1": "이름 을 입력 하 세 요", + "i2": "수금 QR 코드", + "i3": "보존 하 다.", + "i4": "은행 명", + "i5": "은행 명칭 을 입력 하 세 요", + "i6": "계좌 개설 지점 을 입력 하 세 요", + "i7": "은행 카드번호", + "i8": "카드 번 호 를 입력 하 세 요.", + "i9": "편집 성공", + "j0": "추가 성공", + "j1": "법정 통화 계좌", + "j2": "자산.", + "j3": "사용 가능 잔액", + "j4": "잔액 을 동결 하 다", + "j5": "법정 통화 거래.", + "j6": "내 광고.", + "j7": "내 주문", + "j8": "광고", + "j9": "원 클릭 구 매", + "k0": "원 클릭 판매", + "k1": "구 매 금액", + "k2": "구 매 수량", + "k3": "판매 금액", + "k4": "판매 수량", + "k5": "구 매 금액 을 입력 하 세 요", + "k6": "구 매 수량 을 입력 하 세 요", + "k7": "판매 금액 을 입력 하 세 요", + "k8": "판매 수량 을 입력 하 세 요", + "k9": "수량 에 따라 구 매 하 다", + "l0": "법정 통화 거래 설명", + "l1": "최소 거래 량", + "l2": "구 매 확인", + "l3": "판매 확인", + "l4": "잔고 가 부족 하 다", + "l5": "주문 시간", + "l6": "지불 방식 을 선택 하 세 요", + "l7": "수취인", + "l8": "수금 이상", + "l9": "거래 비밀 번 호 를 입력 하 세 요", + "m0": "지급", + "m1": "심사 에 통과 하 다", + "m2": "심사 실패", + "m3": "주문 완료", + "m4": "주문 취소" + }, + "cxiNewText": { + "a0": "상위 10 개", + "a1": "500만+", + "a2": "< 0.10%", + "a3": "200+", + "a4": "글로벌 랭킹", + "a5": "사용자는 우리를 신뢰합니다", + "a6": "매우 낮은 수수료", + "a7": "국가", + "a21": "즉시 수익 창출", + "a22": "개인 암호화폐 포트폴리오 만들기", + "a23": "100개 이상의 암호화폐 구매, 거래 및 보유", + "a24": "계정 충전", + "a25": "이메일로 가입", + "a38": "언제 어디서나 거래를 엽니다.", + "a39": "APP과 웹페이지를 통해 언제든지 안전하고 편리하게 거래를 시작하세요.", + "a40": "QR 코드를 스캔하여 앱을 다운로드하세요.", + "a41": "신뢰할 수 있는 암호화폐 거래 플랫폼", + "a42": "우리는 엄격한 프로토콜과 업계 최고의 기술적 조치로 사용자의 안전을 보장하기 위해 최선을 다하고 있습니다.", + "a43": "사용자 보안 자산 펀드", + "a44": "모든 거래 수수료의 10%를 안전자산 펀드에 보관하여 사용자 자금을 부분적으로 보호합니다.", + "a45": "개인화된 액세스 제어", + "a46": "개인화된 액세스 제어는 개인 계정 장치 및 주소에 대한 액세스를 제한하므로 사용자가 걱정할 필요가 없습니다.", + "a47": "고급 데이터 암호화", + "a48": "개인 거래 데이터는 종단 간 암호화로 보호되며 개인 정보에 접근할 수 있는 사람은 본인뿐입니다.", + "a57": "클릭하여 이동", + "a71": "초보자 가이드 ", + "a72": "즉시 디지털 통화 거래 학습 시작 ", + "a77": "디지털 화폐 구매 방법 ", + "a78": "디지털 통화 판매 방법 ", + "a79": "디지털 통화 거래 방법", + "a80": "시장", + "a81": "24시간 시장 동향", + "a82": "지갑에 암호화폐 자금을 추가하고 즉시 거래를 시작하세요." + }, + "homeNewText": { + "aa1": "암호화폐 게이트", + "aa2": "100개 이상의 암호화폐를 안전하고 빠르고 쉽게 거래하세요", + "aa3": "이메일로 등록", + "aa4": "지금 거래를 시작하세요", + "aa5": "시장 동향", + "aa6": "디지털 자산 견적 익스프레스", + "aa7": "통화", + "bb1": "최신 가격(USD)", + "bb2": "24시간 증가", + "bb3": "24시간 거래량", + "bb4": "모두를 위한 암호화폐 거래소", + "bb5": "여기에서 거래를 시작하고 더 나은 암호화폐 여행을 경험해보세요", + "bb6": "개인의", + "bb7": "모두를 위한 암호화폐 거래소. 다양한 통화를 제공하는 가장 신뢰할 수 있는 선도적인 거래 플랫폼", + "cc1": "사업", + "cc2": "기업과 기관을 위해 제작되었습니다. 기관 투자자 및 기업에 암호화폐 솔루션 제공", + "cc3": "개발자", + "cc4": "개발자를 위해 제작되었으며 개발자가 web3의 미래를 위한 도구와 API를 구축할 수 있도록 제작되었습니다.", + "cc6": "QR 코드 스캔", + "cc7": "안드로이드/IOS 앱 다운로드", + "dd1": "무사고로 안전하고 안정적입니다.", + "dd2": "다양한 보안 전략과 100% 예비 보장을 통해 설립 이후 보안 사고가 발생하지 않았음을 보장합니다.", + "dd3": "간단하고 편리하게 암호화폐 자산을 거래하세요", + "dd4": "CXIsux에서는 상품을 이해하기 쉽고, 거래 과정이 편리하며, 원스톱 블록체인 자산 서비스 플랫폼입니다.", + "dd5": "파생상품", + "dd6": "최대 150배의 레버리지로 100개 이상의 암호화폐 계약을 거래하고 높은 수익을 올릴 수 있습니다", + "ee1": "다중 터미널 지원", + "ee2": "언제 어디서나 디지털 자산을 거래하세요", + "ee3": "모든 통화 정보를 사용할 수 있는 다양한 자산 유형을 지원합니다.", + "ee4": "디지털 자산 거래 프로세스를 빠르게 이해하세요", + "ee5": "암호화 여정을 시작하세요", + "ee6": "그래픽 검증", + "hh0": "세계 최고의 거래소와 함께 최고의 거래 경험을 공유하세요", + "hh1": "좋은 거래 기회를 찾고 있습니다", + "hh2": "100개 이상의 암호화폐를 안전하고 빠르며 쉽게 거래할 수 있습니다", + "hh3": "저희 제품에 대해 알아보세요", + "hh4": "여기서 거래를 시작하고 더 나은 암호화폐 여행을 경험하세요", + "hh5": "현물 거래", + "hh6": "할인된 거래 수수료로 100개 이상의 암호화폐를 사고 팔 수 있습니다", + "hh7": "계약 거래", + "hh8": "USDT 무기한 계약을 통해 수입을 늘리세요", + "hh9": "간단하고 편리한 암호화폐 거래", + "hh10": "상품 이해가 쉽고, 거래 과정이 편리하며, 원스톱 블록체인 자산 서비스 플랫폼입니다.", + "hh11": "자금 관리", + "hh12": "다양한 스테이킹 상품을 통해 높은 수익을 얻으세요", + "hh13": "파생상품", + "hh14": "최대 150배의 레버리지로 100개 이상의 암호화폐 계약을 거래하고 높은 수익을 올릴 수 있습니다.", + "hh15": "사고 없이 안전하고 안정적입니다", + "hh16": "다중 보안 정책 보장, 100% 예비 보장, 설립 이후 보안 사고가 발생하지 않았습니다.", + "hh17": "BXRCO를 선택하는 이유", + "hh18": "신뢰할 수 있는 암호화폐 거래소", + "hh19": "안전", + "hh20": "2020년부터 BXRCO는 자체 개발 시스템을 통해 안정적이고 안정적으로 운영되고 있습니다.", + "hh21": "서비스", + "hh22": "서비스 센터에서 즉시 답변을 받거나 연중무휴 이메일을 통해 문의하실 수 있습니다.", + "hh23": "사용하기 쉽습니다", + "hh24": "BXRCO를 사용하면 암호화폐를 쉽게 거래할 수 있습니다. 클릭 한 번으로 코인을 구매하고 돈을 벌 수 있는 찰나의 기회를 절대 놓치지 마세요.", + "hh25": "유연한 구매 및 판매", + "hh26": "다양한 암호화폐가 거래를 지원하고 추세를 따라가므로 부의 기회를 놓치지 마세요.", + "hh27": "1분 후에 거래가 시작됩니다", + "hh28": "무료로 BXRCO 계정 만들기", + "hh29": "인증 완료", + "hh30": "거래 수행", + "hh31": "어디서나 거래하세요", + "hh32": "저희 앱과 데스크톱 클라이언트로 최신 정보를 받아보세요.", + "hh33": "지금 다운로드하려면 코드를 스캔하세요", + "hh34": "등록하고 거래를 시작하세요!", + "hh35": "지금 등록하세요", + "hh36": "지금 이메일로 등록하세요", + "hh37": "글로벌 순위", + "hh38": "사용자들은 우리를 신뢰합니다", + "hh39": "초저렴한 수수료", + "hh40": "국가", + "hh41": "BXRCO, 언제 어디서나 거래하세요", + "hh42": "지금 거래하세요", + "hh43": "BXRCO APP을 다운로드하려면 QR 코드를 스캔하세요" + } +} diff --git a/src/i18n/pl.json b/src/i18n/pl.json new file mode 100644 index 0000000..f782a0c --- /dev/null +++ b/src/i18n/pl.json @@ -0,0 +1,1038 @@ +{ + "nav": { + "assets":"aktywa", + "contract":"Konto kontraktowe", + "transfer":"Transfer środków", + "excOrders":"Komisja Punktowa", + "contractOrders":"Powierzenie kontraktu", + "fundHistory":"Wypełnianie rekordu", + "security":"Zabezpieczenie rachunku", + "invite":"Zaprosić przyjaciół", + "login":"Proszę zalogować się jako pierwszy", + "tips":"Polecenie systemowe", + "set":"Proszę najpierw ustalić odpowiednią cenę", + "a1":"Cena nie może być pusta lub zerowa", + "a2":"Ilość nie może być pusta lub zerowa", + "a3":"Ilość nie może być mniejsza niż", + "a4":"Całkowita kwota zamówień na cenę rynkową nie może być pusta lub zerowa", + "a5":"Całkowita kwota zakupów rynkowych nie może być mniejsza niż", + "a6":"Ilość sprzedanego zamówienia rynkowego nie może być pusta lub zerowa", + "a7":"Liczba sprzedanych zamówień rynkowych nie może być mniejsza niż", + "a8":"Cena progowa zlecenia utraty stopu nie może być pusta lub zerowa", + "a9":"Zatrzymanie zysków i strat - limit ceny nie może być pusty lub zero", + "b1":"Zatrzymanie zysków i strat - ograniczenie ilości zamówienia nie może być puste lub zero", + "b2":"Zatrzymanie zysków i strat - cena wywoławcza zamówienia cen rynkowych nie może być pusta lub zerowa", + "b3":"Zatrzymaj zysk i zatrzymaj stratę- całkowita kwota zakupiona po cenie rynkowej nie może być pusta lub zerowa", + "b5":"Zatrzymanie zysków i strat stopu – łączna kwota zakupu rynkowego nie może być mniejsza niż", + "b6":"Zatrzymaj zysk i zatrzymaj stratę- ilość sprzedana po cenie rynkowej nie może być pusta lub zerowa", + "b7":"Zatrzymanie strat- ilość sprzedana po cenie rynkowej nie może być mniejsza niż", + "b8":"Strona rozłączona, proszę odświeżyć lub spróbować ponownie później!", + "c1": "zakup{amount}Kawałki{name}Token dostępny{rate}%nagroda", + "c2": "Działalność subskrypcyjna", + "c3":"Emisja ogółem", + "c4":"Łączny obrót", + "c5":"Cena emisji", + "c6":"Czas wydania", + "c7":"Adres na papierze białym", + "c8":"Adres strony internetowej", + "c9":"krótkie wprowadzenie" + }, + "common": { + "a3":"Dokumentacja zakupu", + "option":"Handel opcjami", + "exchange":"Transakcja walutowa", + "markets":"cytat", + "blogs":"Blog", + "news":"Informacje o przemyśle", + "helps":"Centrum pomocy", + "service":"serwis", + "contactUs":"Skontaktuj się z nami", + "sign_in":"Wpisz się", + "sign_up":"Rejestr", + "noRecord":"Brak zapisu", + "getCode":"Kod weryfikacji", + "help1":"Wytyczne dotyczące umów walutowych", + "help2":"Specyfikacja umowy", + "optional":"Opcjonalne", + "price":"Cena", + "upAndDown":"W górę i w dół", + "heigh":"Najwyższa cena", + "low":"cena minimalna", + "vol":"objętość", + "pair":"Umowa na", + "buy":"kupić", + "sell":"sprzedaż", + "buy-in":"zakup", + "sell-out":"wyprzedaż się", + "open-orders":"Obecna delegacja", + "condition-orders":"Powierzenie warunkowe", + "history-orders":"Spis delegacji", + "limit":"stała cena", + "market":"cena rynkowa", + "stop-limit":"Zatrzymanie zysków i strat - limit cenowy", + "stop-market":"Zatrzymanie strat z punktu widzenia zysków - cena rynkowa", + "limit-type":"Ograniczenie cen", + "market-type":"Transakcja rynkowa", + "startTime":"czas rozpoczęcia", + "to":"do", + "confirmBtn":"potwierdzić", + "cancelBtn":"Anuluj", + "cancel":"cofnięcie", + "endTime":"Koniec czasu", + "export":"eksportu", + "filter":"Filtr", + "all":"nieograniczone", + "search":"odzyskiwanie", + "reset":"Przywróć", + "hideAll":"Ukryj wszystkie anulowane delegacje", + "canceled":"Anulowane", + "waiting":"Do dopasowania", + "triggered":"Zapalone", + "processing":"Dopasowanie", + "completed":"Zakończone", + "available_phone":"Proszę podać właściwy numer telefonu komórkowego", + "available_email":"Proszę podać właściwy adres e-mail", + "codeSent":"Wysłany kod weryfikacji", + "captcha":"Błąd kodu weryfikacji", + "created":"czas", + "order-price":"Cena Komisji", + "order-amount":"Powierzona ilość", + "order-total":"Łączna kwota zamówienia", + "avg-price":"Średnia cena", + "direction":"kierunek", + "order-type":"rodzaj", + "executed-amount":"Jest dopasowany do", + "executed-total":"Obrót", + "outstanding":"Do dopasowania", + "status":"stan", + "details":"szczegóły", + "action":"działanie", + "id":"Numer porządkowy", + "filled-price":"Cena transakcji", + "filled-amount":"Liczba transakcji", + "filled-total":"Kwota transakcji", + "fee":"Opłata za usługę", + "enterValid":"Proszę podać ważny numer telefonu komórkowego lub e-mail", + "enterValidEmail":"Proszę podać właściwy adres e-mail", + "enterValidPhone":"Proszę podać ważny numer telefonu komórkowego", + "enterAccount":"Proszę podać konto", + "enterEmail":"Proszę podać właściwy adres e-mail", + "enterPhone":"Proszę podać numer telefonu komórkowego", + "enterPwd":"Proszę podać hasło", + "passwordRegular":"Hasło musi składać się z 8–15 cyfr i liter (musi zawierać zarówno cyfry, jak i litery, a także mogą być użyte symbole)", + "newPassword":"Proszę podać nowe hasło", + "confirmNewPassword":"Proszę podać nowe hasło do potwierdzenia", + "enterGoogleCode":"Proszę wpisać kod weryfikacji Google", + "enterEmailCode":"Proszę podać kod weryfikacji e-mail", + "enterSMSCode":"Proszę wprowadzić kod weryfikacji SMS", + "enterVerCode":"Proszę podać kod weryfikacji", + "exportFile":"Proszę kliknąć OK, aby eksportować plik", + "submit":"Przedstaw", + "newzone":"Nowa strefa", + "college":"studia", + "goTo":"Idź do", + "logOut":"Zgłoś się.", + "homepage":"Strona główna", + "application":"Wniosek o walutę", + "purchase":"ubiegać się o zakup", + "accountInformation":"Informacje o koncie", + "myWallet":"Mój portfel.", + "commissionOrder":"Nakaz Komisji", + "securitySetting":"ustawienie zabezpieczeń", + "wallet":"portfel", + "allAssets":"Wszystkie aktywa", + "contractaccount":"Konto kontraktowe", + "transferFunds":"Transfer środków", + "rechargeWithdraw":"Odzyskanie i wycofanie pieniędzy", + "order":"zamówienie", + "spotConsignment":"Komisja Punktowa", + "optionOrders":"Zamówienie opcji", + "perpetualContract":"Nieustający kontrakt", + "foreignContract":"Umowa walutowa", + "notCertified":"Brak certyfikatu", + "notData":"Brak dostępnych danych", + "assets":"aktywa", + "myCommission":"Mój powracający sługa.", + "addressManagement":"Zarządzanie adresami", + "auth":"Uwierzytelnianie prawdziwej nazwy", + "invitationReward":"Zaproszenie nagród", + "visitHistory":"Rejestry dostępu", + "noviceTutorial":"Nowy kurs", + "tradingStrategy":"Strategia handlowa", + "industryResearch":"Badania przemysłowe", + "blockchainDictionary":"Słownik łańcucha blokowego", + "mediaCoverage":"reportaż mediów", + "selectFile":"Wybierz plik", + "upload":"upload", + "delete":"usunąć", + "tooBig":"Wielkość pliku jest zbyt duża i nie może przekroczyć", + "errorType":"Błąd typu pliku", + "resend":"Resend", + "sms":"krótka wiadomość", + "email":"skrzynka", + "sendSuccess":"Weryfikacja pomyślnie wysłana", + "retransmission":"retransmisja", + "start-trade":"Rozpoczęcie podróży w kierunku cyfrowej waluty", + "login":"Wpisz się", + "register":"Rejestr", + "trading":"Do handlu", + "dark":"czarny", + "light":"białe", + "notMore":"Koniec z tym.", + "allRead":"Wszystkie czytane", + "newMessage":"Nowe wiadomości", + "footerTips1":"Inwestycje w ryzyko na rynku powinny być ostrożne", + "footerTips2":"Informacja prawna: strona internetowa jest obsługiwana przez {name} firmę", + "footerTips3":"Ryzyko: cyfrowy handel aktywami może prowadzić do utraty kapitału, proszę upewnić się, że w pełni zrozumieć ryzyko", + "footerTips4":"Ograniczone obszary: niezdolne do świadczenia usług mieszkańcom określonych krajów / regionów, takich jak Izrael i Islamska Republika Chin" + }, + "exchange": { + "search":"wyszukiwanie", + "pair":"Umowa na", + "last-price":"Najnowsza cena", + "change":"W górę i w dół", + "order-book":"Porządek", + "price":"Cena", + "amount":"liczba", + "total":"Wartość brutto", + "recent-trades":"Najnowsza umowa", + "time":"czas", + "order-total":"Łączna wartość Komisji", + "balance":"Dostępne saldo", + "enter-price":"Proszę podać cenę", + "enter-amount":"Proszę podać ilość", + "enter-total":"Proszę podać całkowitą cenę", + "at-best-price":"Blisko po najlepszej cenie rynkowej", + "trigger-price":"Proszę podać cenę spustu", + "min":"minuta", + "hour":"godzina", + "day":"dzień", + "week":"tydzień", + "month":"miesiąc" + }, + "login": { + "resend":"Resend", + "sms":"krótka wiadomość", + "sendOK":"Weryfikacja wysłana pomyślnie!", + "enterPhoneEmail":"Proszę podać numer telefonu komórkowego lub e-mail", + "effectivePhoneEmail":"Proszę podać ważny telefon komórkowy lub e-mail", + "enterPasswrod":"Proszę podać hasło do {num} bitu", + "passwordLength":"Długość hasła to {num} bits. Zawiera hasło alfanumeryczne", + "safe":"Weryfikacja bezpieczeństwa", + "googleVer":"Proszę wpisać kod weryfikacji Google w swojej aplikacji mobilnej", + "phoneCode":"Proszę wpisać kod weryfikacji {num} wysyłany na numer telefonu komórkowego", + "emailCode":"Proszę podać kod weryfikacji {num} wysłany do Twojego maila", + "google-code":"Google captcha", + "email-code":"Kod weryfikacji e-mail", + "sms-code":"Kod weryfikacji telefonu komórkowego", + "new-password":"Nowe hasło", + "confirm-password":"Potwierdzenie hasła", + "forgetPassword":"Zapomnij o hasle.", + "rememberMe":"Pamiętaj o mnie.", + "noAccountYet":"Nie ma jeszcze konta", + "goRegister":"Rejestr", + "safety":"Weryfikacja bezpieczeństwa", + "regAccount":"Numer zarejestrowanego rachunku", + "email":"skrzynka", + "phone":"telefon komórkowy", + "pleaseEmail":"Proszę podać adres e-mail", + "invalidEmail":"Niepoprawny adres e-mail", + "enterMobile":"Proszę podać numer telefonu komórkowego", + "invalidPhone":"Niepoprawny numer komórki", + "enterLengthPassword":"Proszę podać hasło od {num1} do {num2} bitów w długości", + "hasNumEn":"Hasło wymaga kombinacji {num} liter i liczb", + "iSee":"Zgadzam się.", + "terms":"Warunki i warunki", + "reg":"Rejestr", + "enterEmailCode":"Proszę podać kod weryfikacji {num} wysłany do Twojego maila ({e- mail})", + "accountActivated":"Aby aktywować konto", + "backOld":"Powrót do poprzedniego etapu", + "verCode":"Kod weryfikacji", + "notEmail":"Jeśli nie otrzymasz swojego e-maila, spróbuj poniższej operacji sprawdzającej", + "confirmEmail":"Proszę upewnić się, że podany adres e-mail jest prawidłowy", + "confing":"Proszę sprawdzić folder spam e-mail", + "checkTrashCan":"Upewnij się, że twój e-mail jest połączony ze stabilnym Internetem", + "enterPhone1":"Proszę podać numer do wysłania na komórkę", + "enterPhone2":"The {num} bit captcha of", + "smsNotReceived":"Jeśli nie otrzymujesz SMS-ów, spróbuj poniższej operacji sprawdzającej", + "phoneCorrect":"Proszę upewnić się, że podany numer telefonu komórkowego i numer obszaru są prawidłowe.", + "securePhone":"Upewnij się, że sygnał telefonu komórkowego jest stabilny.", + "hasAccount":"Istnieje już konto", + "toLogin":"Przejdź do logowania", + "securityVerification":"Weryfikacja bezpieczeństwa", + "disagree":"Jeszcze nie zgodziłaś się na warunki.", + "registrationSuccess":"Zarejestrowany pomyślnie, pomijając stronę logowania", + "referrer":"Odesłania", + "optional":"Opcjonalne", + "password":"hasło", + "login":"Wpisz się", + "country":"Kod obszaru", + "enter-account":"Proszę podać numer konta", + "sign-in":"Wpisz się", + "find-password":"Znajdź hasło", + "submit":"Przedstaw", + "confirmpassword":"Te dwa hasła są niespójne." + }, + "application": { + "form":"Formularz wniosku o walucie projektu", + "sendUser":"sponsor projektu", + "sendUserEn":"Angielska nazwa waluty", + "sendUserCn":"Nazwa chińskiej waluty", + "contactPosition":"Osoba kontaktowa i stanowisko", + "phone":"Numer kontaktowy", + "tokenPrice":"cena rynkowa", + "email":"Kontakt e-mail", + "address":"Miejsce rejestracji projektu", + "mechanism":"Organizacja inwestycyjna projektu", + "personal":"osobiste", + "currencyCode":"Kod waluty", + "symbol":"Symbol", + "currencyIdentification":"Identyfikacja waluty", + "format":"Obsługa formatu {name} pliku mniejszego niż {num}", + "fundraisingDate":"Data finansowania", + "officialWebsite":"Oficjalna strona internetowa", + "whitePaperLinks":"Białe łącze papierowe", + "noLink":"Jeśli nie ma linku, proszę wysłać załącznik na koniec artykułu", + "total_issue":"Emisja waluty ogółem", + "currencyCirculation":"Przepływ walut", + "currencyAllocationRatio":"Współczynnik przydziału waluty", + "numberOfCurrencyHolders":"Liczba posiadaczy walut", + "tradingPlatform":"Platforma obrotu internetowego", + "privatePlacement":"Prywatne umiejscowienie", + "publicOfferingPrice":"Cena oferty publicznej", + "company":"Proszę dołączyć jednostkę walutową", + "coinType":"Rodzaj sieci bloków walutowych", + "currencyIssueDate":"Data wydania waluty", + "blockBrowser":"Blokuj przeglądarkę", + "officialAddress":"Oficjalny adres portfela", + "contractAddress":"Adres umowy", + "link":"link", + "budget":"Budżet opłaty pieniężnej", + "unit":"Jednostka", + "ofTokens":"Liczba żetonów działalności rynkowej po załadowaniu", + "chineseCurrency":"Wprowadzenie waluty w języku chińskim", + "enCurrency":"Wprowadzenie waluty w języku angielskim", + "remarks":"uwagi", + "uploadWhitePaper":"Biała księga", + "pleaseUpload":"Proszę przesłać biały papier", + "recommendationCode":"Nazwa zalecenia, organizacja i kod rekomendacyjny", + "ifSo":"Jeśli tak", + "affirmsThat":"Oświadczenie: niniejszym potwierdzam, że wszystkie powyższe informacje są prawdziwe, kompletne i dokładne.Będę odpowiedzialny za dostarczanie fałszywych informacji gospodarczych i prawnych", + "iKnow":"Mam go!", + "reSubmit":"Ponownie złożyć", + "pleaseConfirm":"Proszę potwierdzić, że powyższe informacje są prawdziwe", + "pleaseEnter":"Proszę podać", + "upLoadSuccess":"Upload zakończony " + }, + "wallet": { + "inside":"Transfer środków wewnętrznych", + "from":"od", + "history":"Historia widoku", + "balance":"bilans", + "transferQuantity":"Przeniesiona ilość", + "capitalAccount":"Rachunek kapitałowy", + "contract":"kontrakt", + "financial":"Rachunek finansowy", + "leverage":"Rachunek dźwigni", + "successful":"Udany transfer", + "confirm":"Potwierdzenie transferu", + "pleaseSelect":"Proszę wybrać walutę", + "to":"do", + "assets":"aktywa", + "strokes":"Proszę podać ilość transferową", + "addressManagement1":"Zarządzanie adresami", + "addAddress":"Dodaj adres", + "filter":"Filtr", + "search":"wyszukiwanie", + "selectActiveArea":"Proszę wybrać aktywny obszar", + "areaOne":"Region pierwszy", + "areaTwo":"Region 2", + "addressAssets":"Lista adresów", + "addressNum":"Liczba adresów", + "fee1":"Opłata za usługę", + "creationTime":"Czas tworzenia", + "detailAddress":"Szczegółowy adres", + "remarks1":"Uwagi", + "operating":"działanie", + "complete":"kompletny", + "copy":"kopiuj", + "editAddress":"Edytuj adres", + "deleteAddress":"Usuń adres", + "next":"poprzednia strona", + "pre":"następna strona", + "add":"Dodaj do", + "edit":"edytuj", + "address":"adres", + "selectAssets":"Proszę wybrać składnik aktywów", + "drawAddress":"Adres wycofania", + "addressRemarks":"Uwagi do adresu", + "remarksDelete":"Czy na pewno chcesz usunąć ten adres", + "optionSuccess":"Operacja zakończona sukcesem", + "allAssets":"Wartość wszystkich aktywów", + "showNum":"Pokaż numery", + "contractAccount":"Konto kontraktowe", + "marginAccount":"Rachunek dźwigni", + "financialAccount":"Rachunek finansowy", + "spotAccount":"Konto kasowe", + "hide":"ukryj", + "balanceAssets":"Aktywa salda", + "searchCurrency":"Szukanie waluty", + "addressManagement":"Zarządzanie adresem wycofania", + "totalAssets":"aktywa ogółem", + "availableBalance":"Dostępne saldo", + "fee":"Balans zamrożony", + "valuation":"Wycena", + "recharge":"Ładunek", + "withdrawal":"Wycofać pieniądze.", + "transaction":"Transakcja", + "rechargeAddress":"Adres naładowania", + "rechargeQuantity":"Ilość ładowania", + "enterQuantity":"Proszę podać ilość", + "rechargeInstructions":"Instrukcje ładowania", + "automaticallyCredited":"Ten adres jest twoim ostatnim adresem ładowania. Kiedy system otrzyma ładowanie, będzie on automatycznie rejestrowany", + "tran":"Transfer musi by ć potwierdzony przez całą sieć blokową. Po dotarciu do {num} potwierdzenia sieci, Twój {name} zostanie automatycznie zdeponowany na koncie", + "only":"Proszę tylko wysłać {name} na ten adres. Wysyłanie innej waluty cyfrowej na ten adres spowoduje trwałą utratę", + "low":"minimum", + "addressList":"Lista adresów", + "enterDrawAddress":"Proszę podać adres wycofania", + "invalidWallet":"Brak poprawnego adresu portfela, proszę ponownie wpisać", + "withdrawalsNumber":"Wielkość wycofania", + "enterDrawNum":"Proszę podać ilość wycofania", + "withdrawalInstructions":"Uwagi dotyczące wycofania", + "enterAddress":"Proszę dokładnie sprawdzić i podać właściwy adres portfela", + "notSend":"Wysyłanie nienamierzonej cyfrowej waluty na adres portfela spowoduje trwałą utratę", + "deductionFee":"Opłata manipulacyjna zostanie odjęta od kwoty pobranych pieniędzy", + "submitSuccess":"Przedstawione z powodzeniem, w trakcie przeglądu", + "operationComplete":"Operacja wycofania zakończona, oczekiwanie na zatwierdzenie", + "rechargeRecord":"Rejestr ładowania", + "withdrawalRecord":"Rejestr wycofania", + "assetsName":"Proszę podać nazwę aktywów", + "selectStatus":"Proszę wybrać status", + "startTime":"Data rozpoczęcia", + "entTIme":"Data końcowa", + "date":"data", + "hash":"Hasz", + "num":"liczba", + "progress":"prędkość postępu", + "status":"stan", + "error":"niepowodzenie", + "success":"sukces", + "underReview":"W trakcie przeglądu", + "handlingFee1":"Opłata za usługę", + "processing":"W trakcie przeglądu", + "transfer":"Transfer środków", + "transferDescription":"Opis transferu środków", + "handlingFee":"Należy pamiętać, że transfer wewnętrzny jest automatyczny i bezpłatny", + "onlyForeignExchange":"Tylko {name} może być przeniesiony na konto kontraktu walutowego", + "onlySustainable":"Tylko {name} może być przeniesiony na Twoje wieczne konto kontraktowe", + "inCase1":"Jeśli chcesz handlować kontraktami walutowymi, musisz przenieść {nazwa} na rachunek kontraktu walutowego jako depozyt zabezpieczający", + "inCase2":"Jeśli chcesz handlować kontraktem perpetual, musisz przenieść {name} na perpetual Konto jako marża", + "transferRecord":"Zapis transferu", + "allTransfer":"Wszystkie zapisy transferu aktywów", + "direction":"kierunek", + "all":"całe", + "dateTime":"czas", + "UserWallet":"Rachunek aktywów", + "ContractAccount":"Konto kontraktowe", + "LeverageAccount":"Rachunek dźwigni", + "FinancialAccount":"Rachunek finansowy", + "contractFlow":"Przepływ kontraktu", + "info":"szczegóły", + "money":"kwota pieniędzy" + }, + "contact": { + "contact":"Skontaktuj się z nami", + "help":"Jeśli potrzebujesz pomocy, skontaktuj się z nami.", + "fullName":"pełna nazwa", + "enterFullName":"Proszę podać pełną nazwę", + "email":"skrzynka", + "enterEmail":"Proszę podać adres e-mail", + "consultingService":"Projekt konsultacji", + "pleseSelect":"Proszę wybrać", + "info":"informacje", + "enterInfo":"Proszę podać informacje", + "contactInformation":"Informacje kontaktowe", + "routineConsultation":"Rutynowa konsultacja", + "customerService":"obsługi klienta", + "mediaCooperation":"Współpraca medialna", + "submit":"Przedstaw" + }, + "college": { + "college":"studia", + "article":"Blog", + "tutorialDetails":"Szczegółowe informacje", + "howToBuyBitcoin":"Jak kupić bitcoin", + "recommendedCourse":"Zalecany poradnik", + "buy":"Kup bitcoin za minutę.", + "register":"Rejestr", + "visit":"Odwiedź stronę {name} i zarejestruj swoje {name} konto", + "realName":"Uwierzytelnianie prawdziwej nazwy", + "upload":"Wyślij ważne certyfikaty do uwierzytelniania nazwy osobistej", + "quickBuy":"Jedno kliknięcie zakupu i płatności", + "inIndex":"Jedno kliknięcie, aby kupić pieniądze na stronie głównej / kupić stronę pieniężną, i czekać, aż pieniądze zostaną wydane po dokonaniu płatności", + "tradeNow":"Właśnie idę na wymianę.", + "currencyTransaction":"Drugi rozumie transakcje walutowe", + "contractEntryTransaction":"Transakcja wejścia na umowę", + "how":"Jak handlować opcjami", + "TradingStrategy":"Strategia handlowa", + "seeMore":"Więcej informacji", + "industryResearch":"Badania przemysłowe", + "oneClick":"Inteligentna transakcja jednym kliknięciem", + "inAssets":"Na stronie napełniania aktywów / walutą można nacisnąć jeden przycisk, aby naładować walutę, a następnie można handlować", + "dictionary":"Słownik łańcucha blokowego", + "media":"reportaż mediów" + }, + "home": { + "newEra":"Światowa wiodąca cyfrowa giełda instrumentów pochodnych", + "startTrading":"Rozpocznij handel", + "walkingLantern":"Latarnia wędrowna", + "marketCenter":"Rynek handlowy", + "optional":"Opcjonalne", + "latestPrice":"Cena", + "upAndDown":"W górę i w dół", + "heigh":"Najwyższa cena", + "low":"cena minimalna", + "vol":"Wielkość obrotu", + "coinType":"Umowa na", + "more":"Więcej informacji", + "multiPlatform":"Wieloplatformowe pobieranie", + "atTime":"kiedykolwiek i gdziekolwiek to możliwe", + "multiTerminal":"Transakcja terminalu wieloplatformowego", + "cover":"Pokrycie", + "multiTerminal1":"Wiele platform", + "support":"Pełna obsługa serwisowa", + "down":"Pobierz", + "news":"Tendencje rynkowe", + "detail":"Szczegóły widoku", + "quickly":"Zacznij szybko.", + "major":"Zapewniamy profesjonalne usługi dla inwestorów", + "safe":"Bezpieczne usługi handlowe", + "login":"Wpisz się", + "reg":"Rejestr", + "trading":"Do handlu", + "add":"Dodano pomyślnie", + "cancel":"Anuluj pomyślnie", + "features":"Podstawowa korzyść", + "partners":"Inwestycje i partnerzy", + "perpetual_title":"Kontrakt walutowy perpetual", + "perpetual_cont":"Jako że pierwszy na świecie kontrakt perpetual walutowy rozliczany przez stabilną walutę z najwyższą dźwignią ze sto razy, AMATAK kontrakt perpetual contract jest opłacalnym wyborem dla szybkiej wymiany walutowej", + "stablecoin_title":"Pierwszy na świecie stały ośrodek wymiany walut", + "stablecoin_cont":"AMATAK zbudował silne, stabilne środowisko walutowe, kompletne ramy składające się z stabilnych transakcji walutowych, płatności i przekazów pieniężnych, i stał się częścią światowego, wysokiej jakości stabilnego klubu walutowego!", + "security_title":"Nieskazitelna ochrona", + "security_cont":"AMATAK przyjmuje najbardziej zaawansowany skarbiec rejestrowy, aby chronić bezpieczeństwo punktu końcowego cyfrowej waluty. Platforma skarbca rejestru zapewnia do US $150 milionów ubezpieczeń za kradzież osób trzecich, tajne zmowy i kradzież nasion.Więcej niż 98% walut cyfrowych przechowywanych w AMATAK jest przechowywanych w wieloznakowym portfelu chłodniczym, a w celu zapewnienia bezpieczeństwa kapitałowego wszystkich użytkowników przyjmuje się najwyższy standard kontroli ryzyka rynkowego.", + "service_title":"24 / 7 wielojęzyczny serwis obsługi klienta w czasie rzeczywistym", + "service_cont":"Obsługa klienta AMATAK 24 / 7 jest w każdej chwili na wezwanie i stara się jak najlepiej zapewnić pomoc użytkownikom poprzez czat w czasie rzeczywistym lub e-mail dosupport@AMATAK.comSkontaktuj się z obsługą klienta.", + "analy_title":"Zaawansowane narzędzia analityczne", + "analy_cont":"Podmioty mogą korzystać z różnych narzędzi i wskaźników wykresowych opartych na stabilnych danych, aby pomóc w obrocie na stronie handlowej.", + "liquidity_title":"Doskonała płynność", + "liquidity_cont":"24 / 7 jest w każdej chwili związany z wysoką płynnością platformy handlowej AMATAK.", + "technology_title":"Samorozwinięta technologia", + "technology_cont":"AMATAK platforma handlowa oparta jest na sprawdzonej technologii i zbudowana przez najlepszych ekspertów w branży w celu optymalizacji funkcji platformy w największym stopniu.", + "download":"Pobierz mobilny terminal AMATAK", + "easy":"Handel palmami zawsze i wszędzie", + "skan":"Kod skanowania i pobieranie", + "core_advantages":"Moją siłą są dane. " + }, + "option": { + "waitFor":"Czekanie na dostawę", + "history":"Prezentacja historyczna", + "orderNum":"numer zamówienia", + "option":"opcja", + "buyTime":"Czas zakupu", + "buyAmount":"Ilość zakupu", + "buyType":"Rodzaj zakupu", + "yield":"Stopa zwrotu", + "state":"stan", + "deliverytime":"Czas dostawy", + "countDown":"Odliczanie dostawy", + "buyingUp":"Kup sobie", + "buyDwon":"Buy down", + "buyEven":"Kup nawet", + "result":"Wynik zamknięcia", + "settlementQuantity":"Ilość rozliczenia", + "up":"powstanie", + "down":"upadek", + "flat":"płasko", + "buyOption":"Opcja kupna", + "deliveryRecord":"Dokument dostawy", + "current":"Bieżąca", + "next":"Następny numer", + "enterNum":"Proszę podać ilość", + "balance":"bilans", + "expectedRevenue":"Oczekiwany dochód", + "seeMore":"Więcej informacji", + "beBearish":"bądź niedźwiedzia", + "time":"czas", + "zf":"W górę", + "bullish":"Bydlak", + "lookAtPing":"Patrz płasko", + "bearish":"Niedźwiedzie", + "amount":"liczba", + "coinType":"waluta", + "odds":"Szanse", + "buySuccess":"Udany zakup" + }, + "order": { + "noData":"Brak zapisu transakcji", + "ifCancel":"Anuluj aktualną kolejność", + "cancelSuccess":"Anulowanie pomyślnie", + "marketPrice":"Transakcja rynkowa", + "fixedPrice":"Ograniczenie cen", + "sell":"wyprzedaż się", + "buy":"zakup", + "exchangeRecord":"Zapisy transakcji", + "see":"patrz", + "opt":"działanie", + "status":"stan", + "time":"czas", + "tradingPair":"Umowa na", + "direction":"kierunek", + "type":"rodzaj", + "averagePrice":"Średnia cena", + "price":"Cena", + "matched":"Jest dopasowany do", + "totalAmountEntrusted":"Całkowita kwota powierzona", + "total":"ogółem", + "toMatch":"Niezrównany", + "operation":"działanie", + "reset":"Przywróć", + "search":"wyszukiwanie", + "to":"do", + "startTime":"Data rozpoczęcia", + "endTime":"Data końcowa", + "select":"Proszę wybrać", + "entrustType":"Rodzaj delegacji", + "spotConsignment":"Komisja Punktowa", + "surrentCommission":"Obecna delegacja", + "commissionRecord":"Spis delegacji", + "optionTransaction":"Handel opcjami", + "orderNum":"numer zamówienia", + "timeSharing":"Podział czasu", + "yield":"Stopa zwrotu", + "buyNum":"Ilość zakupu", + "upAndDown":"W górę i w dół", + "settlementQuantity":"Ilość rozliczenia", + "transactionPrice":"Cena transakcji", + "tradingVolume":"Wielkość obrotu", + "aTurnover":"a obrót", + "serviceCharge":"Opłata za usługę", + "cancel":"cofnięcie", + "buyTime":"Czas zakupu", + "buyUp":"Kup sobie", + "buyDown":"Buy down", + "buyLevel":"Kup nawet" + }, + "profile": { + "realName":"Uwierzytelnianie prawdziwej nazwy", + "primaryCertification":"Certyfikacja podstawowa", + "advancedCertification":"Zaawansowany wniosek o certyfikację złożony", + "toExamine":"do zbadania", + "fullName":"pełna nazwa", + "legal":"prawne", + "pleaseEnterName":"Proszę podać swoje imię", + "dateOfBirth":"data urodzenia", + "selectDate":"Wybierz datę", + "documentType":"Rodzaj dokumentu", + "pelaseSelect":"Proszę wybrać", + "certificateNumber":"Numer świadectwa", + "endterIDNumber":"Proszę podać numer identyfikacyjny", + "addressInfo":"Informacje adresowe", + "residentialAddress":"Adres zamieszkania", + "residentialAddress1":"Proszę podać swój adres zamieszkania", + "ciy":"miasto", + "incity":"Proszę wejść do swojego miasta", + "postalCode":"Kod pocztowy", + "thePostcode":"Proszę podać kod pocztowy", + "additionalInformation":"Dodatkowe informacje", + "optional":"Opcjonalne", + "contactInformation":"Informacje kontaktowe", + "phoneNumber":"numer telefonu", + "enterPhoneNumber":"Proszę podać numer telefonu komórkowego", + "clickUpload1":"Kiedy klikniesz na plik i przedłożysz uwierzytelnienie, przeczytałeś i zgodziłeś się na nasze warunki usługi i umowy prywatności", + "pelaseDownload":"Proszę wybrać kopię niewyświetloną z następujących dokumentów:", + "passport":"Paszport", + "drivingLicense":"prawo jazdy", + "iD":"ID", + "upload":"Pobierz", + "explain":"wyjaśnić", + "unexpired":"Nieoświetlone dokumenty mogą być obrazkami lub zeskanowanymi kopiami", + "pleaseConfirm":"Proszę upewnić się, że wszystkie szczegóły na zdjęciu są jasne i nie są pokryte", + "fileFormat":"format pliku", + "maximumFileSize":"Maksymalny rozmiar pliku", + "positive":"Przednia świadectwa", + "theOtherSide":"Odwrócona strona certyfikatu@ info: whatsthis", + "hold":"Posiadanie certyfikatu", + "dragHere":"Przeciągnij tutaj, lub", + "clickUpload":"Kliknij przycisk upload", + "uploadPhoto":"Proszę przesłać zdjęcie z przodu swojej karty identyfikacyjnej.", + "reversePhoto":"Proszę przesłać zdjęcie na odwrocie certyfikatu", + "uploadIDCard":"Proszę przesłać swoje zdjęcie ID", + "nextStep":"następny krok", + "inSubmit":"Twój wniosek o weryfikację został złożony!Poinformujemy Państwa o tym, jak tylko uzyskamy wyniki.", + "gotIt":"Mam to.", + "congratulations":"Gratulacje.", + "back":"powrót", + "resetApply":"Ponownie zastosowanie", + "recertification":"Rekertyfikacja", + "userInfo":"Informacje o koncie", + "verState":"Status zatwierdzenia", + "max":"maksimum", + "limitH":"Limit karencji godzinowej", + "verLeave":"Poziom uwierzytelniania", + "exceed":"przekracza", + "contactUs":"Skontaktuj się z nami", + "inviteFriends":"Zaprosić przyjaciół", + "dividends":"Zaproś przyjaciół do użycia {name}, i zdobądź {num} przyszłych opłat za transakcje przyjaciół jako bonus.", + "sendInvitation":"Wyślij zaproszenie", + "resetPassword":"hasło zresetować", + "forLoginAccount":"Dla konta logowania", + "clickReset":"Kliknij ponownie", + "registrationDecord":"Wpisz wpis", + "recording":"Używane do wyświetlania szczegółowego dziennika historii", + "recordingDEtail":"Szczegółowy zapis", + "invitationReward":"Zaproszenie nagród", + "inviteUse":"Zaproszenie przyjaciół do użycia", + "futureCommission":"Pobierz {num} przyszłych opłat transakcyjnych przyjaciół jako bonus", + "joinThePlan":"Dołącz do planu bonusowego zaproszenia użytkownika", + "checkMyDividend":"Sprawdź moje dywidendy.", + "step1":"Pierwszy krok", + "shareLink":"Podziel linki", + "step2":"Krok drugi", + "shareFriend":"Zaprosić przyjaciół", + "step3":"Trzeci krok", + "instantDividend":"Ciesz się dywidendami", + "invitationInformation":"Informacje o zaproszeniu", + "invitationLink":"Powiązanie z zaproszeniem", + "invitationCode":"Kod zaproszenia", + "registeredUser":"Zarejestrowani użytkownicy", + "accountNumber":"numer konta", + "registrationTime":"Czas rejestracji", + "activityTerms":"Warunki działalności", + "handlingFeeDividend":"dywidenda Komisji", + "equalInvitee":"To jak być zaproszonym.", + "fee":"Opłata za obsługę transakcji", + "afterThat":"Po zaproszeniu do handlu", + "follow":"Przelew na konto gościa w ciągu kilku minut.", + "limit":"Działalność następuje po następującej godzinie rozpoczęcia i zakończenia działalności i jest dostępna tylko dla ważnych rachunków po czasie rozpoczęcia i przed zakończeniem działalności", + "activityStartTime":"Czas rozpoczęcia działalności", + "Y":"rok", + "M":"miesiąc", + "D":"dzień", + "endTime":"Czas zakończenia działalności", + "proceed":"Już idę.", + "atAnyTime":"Zastrzegamy sobie prawo do modyfikacji, zawieszenia lub zakończenia programu {name} zaproszenia użytkownika w dowolnym momencie bez wcześniejszego powiadomienia", + "reservedRights":"Rezerwuje prawo do niepoddawania dywidend za podwójne rachunki lub fałszywe rachunki", + "canDecide":"Możesz zaakceptować lub odrzucić konkretnych użytkowników, którzy zostali wprowadzeni lub zaproszeni do {name} platformy {link}", + "bill":"Rejestry dostępu", + "date":"data", + "address":"miejsce", + "equipment":"sprzęt", + "preliminary":"Wstępna certyfikacja zakończona sukcesem", + "clickToVerify":"Kliknij, aby sprawdzić " + }, + "setting": { + "smsVer":"Weryfikacja SMS", + "enterCode":"Proszę podać kod weryfikacji", + "emailVer":"Weryfikacja e-mail", + "enterEmailVer":"Proszę podać kod weryfikacji e-mail", + "ver":"weryfikacja", + "enterNameCode":"Proszę podać kod weryfikacyjny {name} @ info: whatsthis", + "openSuccess":"Otwórz pomyślnie", + "closeSuccess":"Zakończone pomyślnie", + "email":"skrzynka", + "enterEmail":"Proszę podać e-mail", + "emailVerCode":"Kod weryfikacji e-mail", + "enterSmsCode":"Proszę wprowadzić kod weryfikacji SMS", + "bind":"wiążące", + "unbind":"Rozdzielenie", + "bindSuccess":"Powiązanie zakończone", + "unbindSuccess":"Niepowiązanie zakończone", + "scanQrCode":"Proszę zeskanować kod QR", + "howToOpen":"Dowiedz się, jak włączyć {name} weryfikację wtórną", + "read":"Kliknij tutaj, aby przeczytać informacje o instalacji", + "verKey":"Sprawdź klucz", + "safeSetting":"ustawienie zabezpieczeń", + "loginPassword":"Hasło do logowania", + "resLoginPassword":"Przywróć hasło do logowania", + "transactionPassword":"Kod transakcji", + "usedFor":"Używane do składania zamówień i zamówień na miejscu", + "notOpen":"Nie otwarte", + "modifyPassword":"Zmień hasło", + "setPassword":"Ustaw hasło", + "verCode":"Kod weryfikacji", + "forLogin":"Używane do logowania, wycofywania waluty i zmiany ustawień bezpieczeństwa", + "alLast":"Włącz co najmniej jeden tryb uwierzytelniania", + "close":"blisko", + "open":"otwarte", + "phone":"numer telefonu", + "area":"Proszę podać kod obszaru", + "enterPhone":"Proszę podać numer telefonu komórkowego", + "newPassword":"Nowe hasło", + "passwordIs":"Hasło transakcji to {num} cyfry", + "enterNewPassword":"Proszę podać nowe hasło", + "confirmPassword":"Potwierdzenie hasła", + "pleaseConfirmPassword":"Proszę potwierdzić hasło", + "operationSuccess":"Operacja zakończona sukcesem", + "combination":"Hasła wymagają kombinacji liter i liczb", + "changeSuccess":"Poprawiona pomyślnie" + }, + "purchase": { + "sendPrice":"Cena emisji", + "subscriptionCurrency":"Waluta subskrypcji", + "expected":"Oczekiwany czas online", + "startTime":"Czas rozpoczęcia subskrypcji", + "applyForPurchase":"Czas zamknięcia", + "enterNum":"Proszę podać ilość", + "all":"Wszystkie", + "subscribeNow":"Zastosuj natychmiast", + "subscriptionCycle":"Cykl subskrypcji", + "projectWarmUp":"Projekt rozgrzewka", + "startSubscription":"Rozpocznij subskrypcję", + "endOfSubscription":"Zamknij subskrypcję", + "announceResults":"Publikowanie wyników", + "projectCetails":"Szczegóły projektu", + "useOrNot":"Użyj lub nie", + "subscribe":"ubiegać się o zakup", + "prompt":"Wskazówki", + "subscribeSuccess":"Udany zakup" + }, + "contract": { + "a0":"Konto kontraktowe", + "a1":"Transfer środków", + "a2":"Udziały kapitałowe rachunku", + "a3":"dostępne", + "a4":"Margines pozycji", + "a5":"Zamrożenie Komisji", + "a6":"Niezrealizowane zyski i straty", + "a7":"Stawka ryzyka", + "a8":"Szacunkowa silna parytet", + "a9":"kontrakt", + "b0":"dźwignia", + "b1":"czas", + "b2":"Rodzaj transakcji", + "b3":"Zamknięte", + "b4":"Całkowita kwota powierzona", + "b5":"Średnia cena transakcji", + "b6":"Cena Komisji", + "b7":"obligacja", + "b8":"Opłata za usługę", + "b9":"stan", + "c0":"działanie", + "c1":"Anuluj zamówienie", + "c2":"cofnięcie", + "c3":"Anuluj aktualną kolejność", + "c4":"Anuluj", + "c5":"określić", + "c6":"unieważnione", + "c7":"Niezaspokojony", + "c8":"Częściowa transakcja", + "c9":"Wszystkie zamknięte", + "d0":"Kup kaiduo", + "d1":"Kup mieszkanie", + "d2":"Sprzedaż krótka", + "d3":"Sprzedaż pingduo", + "d4":"Anulowanie pomyślnie", + "d5":"otworzyć spichlerz w celu zapewnienia ulgi", + "d6":"Zamknij pozycję", + "d7":"Cena progowa", + "d8":"Cena", + "d9":"cena rynkowa", + "e0":"stała cena", + "e1":"liczba", + "e2":"Zhang.", + "e3":"Wymagany margines", + "e4":"Wielokrotne położenie", + "e5":"Krótka pozycja", + "e6":"Bydlak", + "e7":"Otwarte", + "e8":"Niedźwiedzie", + "e9":"Keping", + "f0":"Cena za", + "f1":"Kaiduo.", + "f2":"Otwarte powietrze", + "f3":"Czy jest oparta na", + "f4":"Podwójna dźwignia", + "f5":"Pomyślna Komisja", + "f6":"Zakończenie pomyślnie", + "f7":"Handel", + "f8":"Transakcja w czasie rzeczywistym", + "f9":"całe", + "g0":"kupić", + "g1":"sprzedaż", + "g2":"Kumulacja", + "g3":"Najnowsza cena", + "g4":"szczegóły", + "g5":"Historia", + "g6":"Czas transakcji", + "g7":"Pozycja", + "g8":"Ilość równana", + "g9":"Średnia cena otwarcia", + "h0":"Stopa zwrotu", + "h1":"Zamykanie rynku", + "h2":"Czy to wszystko jest nawet po cenie rynkowej", + "h3":"Wszystkie płaskie", + "h4":"sukces", + "h5":"Umowa na", + "h6":"W górę i w dół", + "h7":"Najwyższa cena", + "h8":"cena minimalna", + "h9":"objętość", + "i0":"Utrzymane stanowisko", + "i1":"Obecna delegacja", + "i2":"Komisja Historyczna", + "i3":"kierunek", + "i4":"wiele", + "i5":"pusty", + "i6":"Pokaż tylko aktualny", + "i7":"Zatrzymaj zysk", + "i8":"Zatrzymaj stratę.", + "i9":"Zatrzymaj zyski i zatrzymaj straty", + "j0":"Zysk i strata", + "j1":"Najnowsza cena transakcji", + "j2":"Średnia cena otwarcia", + "j3":"Przestać zarabiać cenę spustu", + "j4":"Cena progowa straty", + "j5":"Cena rynkowa do", + "j6":"Po zakończeniu transakcji, zysk i strata zostaną oszacowane", + "j7":"Komisja strat zatrzymanych zostanie uruchomiona po zakończeniu transakcji, a zysk i strata są oczekiwane po transakcji", + "j8":"Otwarcie kontraktu wieczystego", + "j9":"Udane otwarcie", + "k0":"Ustaw pomyślnie", + "k1":"Rozliczenie zysków i strat", + "k2":"Jedno kliknięcie", + "k3":"Jedno kliknięcie wsteczne", + "k4":"Czy wszystko jest płaskie", + "k5":"Jeden klucz wstecz", + "k6":"Wszyscy równi, sukces", + "k7":"Odwrotny sukces", + "k8":"Proszę zalogować się jako pierwszy", + "k9":"Proszę podać kod subskrypcji " + }, + "otc": { + "a0":"Proszę wybrać typ transakcji", + "a1":"zakup", + "a2":"wyprzedaż się", + "a3":"Waluta transakcji", + "a4":"Proszę wybrać walutę", + "a5":"liczba", + "a6":"Proszę podać ilość", + "a7":"Cena", + "a8":"Proszę podać cenę", + "a9":"Minimum pojedynczej transakcji", + "b0":"Najwyższa pojedyncza transakcja", + "b1":"Alipay", + "b2":"Comment", + "b3":"karta bankowa", + "b4":"uwagi", + "b5":"Proszę podać swoje uwagi", + "b6":"Udało się opublikować", + "b7":"zakup", + "b8":"sprzedaż", + "b9":"unieważnione", + "c0":"W handlu", + "c1":"Zakończone", + "c2":"Numer reklamy", + "c3":"stan", + "c4":"Cena ogółem", + "c5":"Cena jednostkowa", + "c6":"nadwyżka", + "c7":"Czas wydania", + "c8":"Metoda płatności", + "c9":"działanie", + "d0":"Z półki", + "d1":"Czy bieżąca reklama została usunięta", + "d2":"przypomnienie", + "d3":"Anulowanie pomyślnie", + "d4":"Szczegóły zamówienia", + "d5":"numer zamówienia", + "d6":"płatność", + "d7":"pełna nazwa", + "d8":"numer konta", + "d9":"Bank depozytu", + "e0":"Branża otwierająca konto", + "e1":"Pozostały czas", + "e2":"Branża", + "e3":"drugi", + "e4":"Kwit płatniczy", + "e5":"Pobieranie pliku QR", + "e6":"Proszę przesłać kupon płatniczy", + "e7":"Oczekiwanie na wysłanie kupców", + "e8":"anulowanie zamówienia", + "e9":"potwierdzenie płatności", + "f0":"Nie otrzymano", + "f1":"Potwierdzenie odbioru", + "f2":"Anuluj aktualną kolejność", + "f3":"określić", + "f4":"Anuluj", + "f5":"Zamówienie anulowane", + "f6":"Potwierdzenie bieżącej płatności", + "f7":"Operacja zakończona sukcesem", + "f8":"Po potwierdzeniu poboru, aktywa zostaną sprzedane i przeniesione automatycznie", + "f9":"Po potwierdzeniu, że płatność nie została otrzymana, zamówienie automatycznie wprowadzi tryb odwołania", + "g0":"Reklama", + "g1":"użytkownik", + "g2":"ogółem", + "g3":"Limit", + "g4":"Metoda płatności", + "g5":"ogółem", + "g6":"Wynik wymeldowania", + "g7":"Zamówienie sprzedaży", + "g8":"Zamówienie kupna", + "g9":"Zakup reklamy", + "h0":"Reklama sprzedaży", + "h1":"całe", + "h2":"Zamknięte", + "h3":"Do zapłaty", + "h4":"Do potwierdzenia", + "h5":"W skardze", + "h6":"Liczba transakcji", + "h7":"Partner handlowy", + "h8":"czas", + "h9":"szczegóły", + "i0":"Proszę podać numer konta", + "i1":"Proszę podać swoje imię", + "i2":"Gromadzenie kodu QR", + "i3":"konserwacja", + "i4":"Nazwa banku", + "i5":"Proszę podać nazwę banku", + "i6":"Proszę wpisać oddział otwierający konto", + "i7":"Numer karty bankowej", + "i8":"Proszę podać numer karty bankowej", + "i9":"Z powodzeniem edycja", + "j0":"Dodano pomyślnie", + "j1":"Rachunek waluty prawnej", + "j2":"aktywa", + "j3":"Dostępne saldo", + "j4":"Balans zamrożony", + "j5":"Transakcja w walucie prawnej", + "j6":"Moja reklama", + "j7":"Mój rozkaz.", + "j8":"reklama ", + "j9":"Jedno kliknięcie", + "k0":"Jedno kliknięcie", + "k1":"Kwota zakupu", + "k2":"Ilość zakupu", + "k3":"Kwota sprzedaży", + "k4":"Ilość sprzedana", + "k5":"Proszę podać kwotę zakupu", + "k6":"Proszę podać ilość zakupu", + "k7":"Proszę podać kwotę sprzedaży", + "k8":"Proszę podać ilość do sprzedaży", + "k9":"Kupowanie według ilości", + "l0":"Uwagi dotyczące transakcji waluty prawnej", + "l1":"Minimalna wielkość transakcji", + "l2":"Potwierdzenie zakupu", + "l3":"Potwierdzenie sprzedaży", + "l4":"Przykro mi, twój kredyt się kończy.", + "l5":"Czas zamówienia", + "l6":"Proszę wybrać metodę płatności", + "l7":"odbiorca", + "l8":"Nieprawidłowa kolekcja", + "l9":"Proszę podać hasło do transakcji", + "m0":"Płatne", + "m1":"Zatwierdzone", + "m2":"Błąd audytu", + "m3":"Koniec porządku", + "m4":"anulowanie zamówienia" + } +} \ No newline at end of file diff --git a/src/i18n/pt.json b/src/i18n/pt.json new file mode 100644 index 0000000..2ca49ed --- /dev/null +++ b/src/i18n/pt.json @@ -0,0 +1,1161 @@ +{ + "nav": { + "assets": "activos", + "contract": "Conta contratual", + "transfer": "Transferência de fundos", + "excOrders": "Delegação spot", + "contractOrders": "Delegação contratual", + "fundHistory": "Registo de carga", + "security": "A conta está segura.", + "invite": "Convide um amigo.", + "login": "Por favor, entre primeiro.", + "tips": "Sistema Pronto", + "set": "Por favor, primeiro estabeleça um preço apropriado.", + "a1": "O preço não Pode ser vazio Ou zero", + "a2": "Quantidade não Pode ser vazia Ou zero", + "a3": "Quantidade não Pode ser inferior a", + "a4": "O montante total Das encomendas de preços de Mercado compradas não Pode ser vazio NEM Nulo", + "a5": "O montante total Das encomendas de Mercado compradas não Pode ser inferior a", + "a6": "A quantidade de ordem de Mercado vendida não Pode ser vazia NEM NULA", + "a7": "O número de encomendas de Mercado vendidas não Pode ser inferior a", + "a8": "O preço de desencadeamento Da ordem de interrupção Da perda não Pode ser vazio Ou zero", + "a9": "Parar o lucro e parar a perda - limite de preço não Pode ser vazio Ou zero", + "b1": "Parar o lucro e parar a perda Da quantidade de ordem limite não Pode ser vazio Ou zero", + "b2": "Parar o lucro e parar a perda - preço de desencadeamento Da ordem de preço de Mercado não Pode ser vazio Ou zero", + "b3": "Parar o lucro e parar a perda - O montante total comprado Ao preço de Mercado não Pode ser vazio Ou zero", + "b5": "Parar o lucro e parar a perda - O montante total Da compra de Mercado não Pode ser inferior a", + "b6": "Parar o lucro e parar a perda - a quantidade vendida Ao preço de Mercado não Pode ser vazia ou NULA", + "b7": "Perda de paragem - a quantidade vendida Ao preço de Mercado não Pode ser inferior a", + "b8": "Página desconectada, por favor, refresque Ou tente novamente Mais tarde!", + "c1": "Compra{amount}Peças{name}Token disponível{rate}%Recompensa", + "c2": "Actividades de subscrição", + "c3": "Total Da emissão", + "c4": "Circulação total", + "c5": "Preço de emissão", + "c6": "Tempo de emissão", + "c7": "Endereço de Papel Branco", + "c8": "Endereço Oficial Do site", + "c9": "Breve introdução" + }, + "common": { + "a3": "Registos de Compras", + "option": "Operações de opção", + "exchange": "Operações monetárias", + "markets": "Os preços", + "blogs": "blog", + "news": "Informação da indústria", + "helps": "Centros de ajuda", + "service": "serviços", + "contactUs": "Contacte-nos.", + "sign_in": "autenticação", + "sign_up": "De registo", + "noRecord": "Não há registo.", + "getCode": "Obter um código de verificação", + "help1": "Guia dos contratos de câmbio", + "help2": "Especificação do contrato", + "optional": "voluntário", + "price": "preços", + "upAndDown": "Aumento ou diminuição", + "heigh": "Preço máximo", + "low": "Preço mais baixo", + "vol": "Volume de negócios", + "pair": "Um acordo.", + "buy": "comprar", + "sell": "vender", + "buy-in": "comprar", + "sell-out": "vende", + "open-orders": "Comissão actual", + "condition-orders": "Delegação condicional", + "history-orders": "Registos da comissão", + "limit": "preço", + "market": "Preço de mercado", + "stop-limit": "Stop-stop-loss- preço limite", + "stop-market": "Stop-stop-loss- preço de mercado", + "limit-type": "Transacções de preço limitado", + "market-type": "Operações de mercado", + "startTime": "Hora de início", + "to": "a", + "confirmBtn": "confirmação", + "cancelBtn": "cancelar", + "cancel": "revogação", + "endTime": "Hora final", + "export": "exportação", + "filter": "filtros", + "all": "ilimitada", + "search": "recuperar", + "reset": "substituição", + "hideAll": "Ocultar todos os delegados cancelados", + "canceled": "Cancelado.", + "waiting": "A ajustar", + "triggered": "Activado.", + "processing": "Em processo de conciliação", + "completed": "Feito.", + "available_phone": "Por favor, digite o número de telefone celular correto", + "available_email": "Por favor, insira a caixa de correio correta", + "codeSent": "O código de verificação foi enviado", + "captcha": "Erro de captcha", + "created": "tempo", + "order-price": "Preço da comissão", + "order-amount": "Número da comissão", + "order-total": "Total das encomendas", + "avg-price": "Preço médio", + "direction": "direcção", + "order-type": "Os tipos", + "executed-amount": "arranjado", + "executed-total": "Volume de negócios", + "outstanding": "A ajustar", + "status": "estado", + "details": "pormenores", + "action": "funcionamento", + "id": "Número de ordem", + "filled-price": "Preço de transacção", + "filled-amount": "Número de transacções", + "filled-total": "Montante da transacção", + "fee": "Taxas de tratamento", + "enterValid": "Por favor, digite um número de telefone celular válido ou um e-mail", + "enterValidEmail": "Por favor, insira o endereço de e-mail correto", + "enterValidPhone": "Por favor, digite um número de telefone celular válido", + "enterAccount": "Por favor, digite a conta.", + "enterEmail": "Por favor, insira o endereço de e-mail correto", + "enterPhone": "Por favor, digite o número de telefone celular", + "enterPwd": "Por favor, digite a senha.", + "passwordRegular": "A senha deve ser composta por números e letras de 8 a 15 dígitos (deve conter números e letras, mas também símbolos)", + "newPassword": "Por favor, insira uma nova senha", + "confirmNewPassword": "Por favor, insira uma nova senha para confirmar", + "enterGoogleCode": "Por favor, digite o código de verificação do google", + "enterEmailCode": "Por favor, insira o código de verificação do e-mail", + "enterSMSCode": "Por favor, digite o código de verificação SMS", + "enterVerCode": "Por favor, digite o código de verificação", + "exportFile": "Por favor, clique em confirmar para exportar o arquivo", + "submit": "apresentação", + "newzone": "Liga para a nova secção", + "college": "academia", + "goTo": "para", + "logOut": "Saída do login", + "homepage": "Ficha técnica", + "application": "Pedido de emissão de moeda", + "purchase": "subscrição", + "accountInformation": "Informação da conta", + "myWallet": "A minha carteira.", + "commissionOrder": "Ordem da comissão", + "securitySetting": "Configuração de segurança", + "wallet": "carteira", + "allAssets": "Todos os activos", + "contractaccount": "Conta contratual", + "transferFunds": "Transferência de fundos", + "rechargeWithdraw": "Moedas de recarga", + "order": "ordens", + "spotConsignment": "Delegação spot", + "optionOrders": "Ordens de opções", + "perpetualContract": "Contrato de perpetuidade", + "foreignContract": "Contratos de câmbio", + "notCertified": "Não certificado", + "notData": "Não há dados.", + "assets": "activos", + "myCommission": "A minha empregada", + "addressManagement": "Gestão de endereços", + "auth": "Autenticação do nome real", + "invitationReward": "Convite e prémio", + "visitHistory": "Registos de acesso", + "noviceTutorial": "Tutorial para principiantes", + "tradingStrategy": "Estratégia de negociação", + "industryResearch": "Investigação industrial", + "blockchainDictionary": "Dicionário da cadeia de blocos", + "mediaCoverage": "Cobertura da imprensa", + "selectFile": "Selecção de ficheiros", + "upload": "upload", + "delete": "apagar", + "tooBig": "As dimensões dos documentos são excessivas e não podem ser excedidas", + "errorType": "Erro de tipo de arquivo", + "resend": "reenviar", + "sms": "mensagens", + "email": "Caixa de correio", + "sendSuccess": "O captcha foi enviado com sucesso", + "retransmission": "retransmissão", + "start-trade": "Comece imediatamente a sua jornada pela moeda digital", + "login": "autenticação", + "register": "De registo", + "trading": "Vai fazer um acordo.", + "dark": "preto", + "light": "branco", + "notMore": "Não há mais.", + "allRead": "Tudo lido.", + "newMessage": "Uma nova mensagem.", + "footerTips1": "O mercado de capital de risco exige prudência", + "footerTips2": "Declaração legal: o site é operado pela empresa {nome}", + "footerTips3": "Dica de risco: as transações de ativos digitais podem levar à perda do seu capital, certifique-se de compreender plenamente os riscos envolvidos", + "footerTips4": "Áreas restritas: impossibilidade de prestar serviços a residentes de países específicos /regiões, Como Israel e a República Islâmica Da China" + }, + "exchange": { + "search": "busca", + "pair": "Um acordo.", + "last-price": "Preço mais recente", + "change": "Aumento ou diminuição", + "order-book": "Ofertas de compra e venda", + "price": "preços", + "amount": "quantidade", + "total": "bruto", + "recent-trades": "Último acordo.", + "time": "tempo", + "order-total": "Valor total da comissão", + "balance": "Saldo disponível", + "enter-price": "Por favor, insira o preço", + "enter-amount": "Por favor, indique a quantidade", + "enter-total": "Por favor, insira o preço total", + "at-best-price": "Fechar o negócio ao melhor preço de mercado", + "trigger-price": "Por favor, insira o preço de desencadeamento", + "min": "minutos", + "hour": "horas", + "day": "dias", + "week": "semanas", + "month": "mês" + }, + "login": { + "resend": "reenviar", + "sms": "mensagens", + "sendOK": "Código de verificação enviado!", + "enterPhoneEmail": "Por favor, digite o número de telefone celular ou e-mail", + "effectivePhoneEmail": "Por favor, insira um telemóvel ou uma caixa de correio válida", + "enterPasswrod": "Por favor, digite uma senha para o comprimento do número de bits {num}", + "passwordLength": "O comprimento da senha {num} bits contém a senha alfanumérica", + "safe": "Verificação da segurança", + "googleVer": "Por favor, digite um código de verificação do google num número de bits no seu aplicativo móvel", + "phoneCode": "Por favor, digite o código de verificação {num} bits enviado para o seu número de telemóvel", + "emailCode": "Por favor, digite o código de verificação {num} bit enviado para a sua caixa de correio", + "google-code": "Código de verificação do google", + "email-code": "Código de verificação da caixa de correio", + "sms-code": "Código de identificação do telemóvel.", + "new-password": "Novo código.", + "confirm-password": "Confirme a senha.", + "forgetPassword": "Esquece o código.", + "rememberMe": "Lembra-te de mim.", + "noAccountYet": "Ainda não tenho conta.", + "goRegister": "De registo", + "safety": "Verificação da segurança", + "regAccount": "Número de conta registado", + "email": "Caixa de correio", + "phone": "telemóvel", + "pleaseEmail": "Por favor, insira o endereço de e-mail", + "invalidEmail": "Endereço de e-mail inválido", + "enterMobile": "Por favor, digite o número de telefone celular", + "invalidPhone": "Número de telemóvel inválido", + "enterLengthPassword": "Por favor, insira uma senha para o comprimento de bits {num1} a {num2}", + "hasNumEn": "A senha precisa de uma combinação de letras e números num número de bits", + "iSee": "Eu concordo.", + "terms": "Termos e condições", + "reg": "De registo", + "enterEmailCode": "Por favor, digite o código de verificação de {num} bit enviado para a sua caixa de correio ({email})", + "accountActivated": "Para activar a conta", + "backOld": "De volta ao passo anterior.", + "verCode": "Código de verificação", + "notEmail": "Se você não receber uma caixa de correio, por favor, tente as seguintes ações de verificação", + "confirmEmail": "Por favor, certifique-se de que o endereço de e-mail que você digita está correto", + "confing": "Por favor, verifique a pasta de spam na sua caixa de correio", + "checkTrashCan": "Por favor, certifique-se de que a sua caixa de correio está conectada à internet estável", + "enterPhone1": "Por favor, digite para enviar para o seu número de telefone celular", + "enterPhone2": "Um captcha de bits", + "smsNotReceived": "Se você não receber uma mensagem de texto, tente as seguintes operações de verificação", + "phoneCorrect": "Por favor, certifique-se de que o número de telefone celular e o número de área que você digita estão corretos", + "securePhone": "Por favor, certifique-se de que o sinal do seu telemóvel é estável", + "hasAccount": "Já existe uma conta", + "toLogin": "Para entrar.", + "securityVerification": "Verificação da segurança", + "disagree": "Você ainda não concordou com os termos", + "registrationSuccess": "O registo foi bem sucedido e está a saltar para a página de destino", + "referrer": "referências", + "c6": "Código de convite (obrigatório)", + "c7": "Por favor preencha o código do convite", + "optional": "facultativo", + "password": "senha", + "login": "autenticação", + "country": "O código de área", + "enter-account": "Por favor, digite a sua conta.", + "sign-in": "autenticação", + "find-password": "Recupera o código.", + "submit": "apresentação", + "confirmpassword": "Duas vezes as senhas não coincidem", + "Remembered": "Lembrou-se da sua senha?" + }, + "application": { + "form": "Formulário de candidatura ao financiamento do projecto", + "sendUser": "Iniciador do projecto", + "sendUserEn": "Nome da moeda em inglês", + "sendUserCn": "Nome chinês da moeda", + "contactPosition": "Pessoa de contacto e cargo", + "phone": "Número de telefone da pessoa de contacto", + "tokenPrice": "Preço de mercado", + "email": "Endereço de correio electrónico da pessoa de contacto", + "address": "Local de registo do projecto", + "mechanism": "Instituições de investimento para projectos", + "personal": "pessoal", + "currencyCode": "Código da moeda", + "symbol": "símbolos", + "currencyIdentification": "Identificação da moeda", + "format": "O formato {name} é suportado e o arquivo é menor do que {num]", + "fundraisingDate": "Data de levantamento de fundos", + "officialWebsite": "Sítio web oficial", + "whitePaperLinks": "Ligações ao livro branco", + "noLink": "Se não houver nenhum link, por favor, envie o anexo no final do artigo", + "total_issue": "Total das moedas emitidas", + "currencyCirculation": "Moeda corrente", + "currencyAllocationRatio": "Proporção de distribuição das moedas", + "numberOfCurrencyHolders": "Número de titulares da moeda", + "tradingPlatform": "Plataforma de negociação online", + "privatePlacement": "privado", + "publicOfferingPrice": "Preço de oferta pública", + "company": "Anexar a unidade monetária", + "coinType": "Moeda bloco tipo de rede", + "currencyIssueDate": "Data de emissão da moeda", + "blockBrowser": "Navegador de bloco", + "officialAddress": "Endereço da carteira oficial", + "contractAddress": "Endereço do contrato", + "link": "ligações", + "budget": "Orçamento em dinheiro", + "unit": "Em unidades", + "ofTokens": "Número de fichas para o projecto de actividades de mercado pós-pagamento", + "chineseCurrency": "Introdução da moeda em chinês", + "enCurrency": "Introdução da moeda em inglês", + "remarks": "observações", + "uploadWhitePaper": "Carregar o livro branco", + "pleaseUpload": "Por favor, envie o livro branco.", + "recommendationCode": "Nome da organização de referência e código de recomendação", + "ifSo": "Se tem", + "affirmsThat": "Afirmação: eu confirmo que todas as informações acima mencionadas são verdadeiras, completas e exatas. Assumo a responsabilidade financeira e legal de fornecer informações falsas", + "iKnow": "- já percebi.", + "reSubmit": "Novo envio", + "pleaseConfirm": "Por favor, confirme que todas as informações acima são verdadeiras", + "pleaseEnter": "Por favor, digite", + "upLoadSuccess": "O carregamento foi feito." + }, + "wallet": { + "inside": "Transferências internas de fundos", + "from": "A partir de", + "history": "Ver história", + "balance": "equilíbrio", + "transferQuantity": "Quantidades retiradas", + "capitalAccount": "Conta de fundos", + "contract": "O contrato", + "financial": "Contas de gestão", + "leverage": "Conta de alavancagem", + "successful": "Rotação bem sucedida.", + "confirm": "Determinação do desvio", + "pleaseSelect": "Por favor, selecione a moeda", + "to": "a", + "assets": "activos", + "strokes": "Por favor, insira a quantidade de transferência", + "addressManagement1": "Gestão de endereços", + "addAddress": "Adicionar um endereço", + "filter": "filtros", + "search": "busca", + "selectActiveArea": "Por favor, selecione a área de atividade", + "areaOne": "Região i", + "areaTwo": "Região ii", + "addressAssets": "Lista de endereços", + "addressNum": "Número de endereços", + "fee1": "Taxas de tratamento", + "creationTime": "Hora de criação", + "detailAddress": "Endereço completo", + "remarks1": "Observações e informações", + "operating": "funcionamento", + "complete": "terminar", + "copy": "reproduzir", + "editAddress": "Endereço do editor", + "deleteAddress": "Endereço apagado", + "next": "Página anterior", + "pre": "Página seguinte", + "add": "adicionar", + "edit": "editor", + "address": "endereço", + "selectAssets": "Por favor, selecione o activo", + "drawAddress": "Endereço:", + "addressRemarks": "Observações sobre o endereço", + "remarksDelete": "Certifique-se de eliminar este endereço", + "optionSuccess": "Operação bem sucedida", + "allAssets": "Valor de todos os ativos", + "showNum": "Apresentação dos números", + "contractAccount": "Conta contratual", + "marginAccount": "Conta de alavancagem", + "financialAccount": "Contas de gestão", + "spotAccount": "Contas à vista", + "hide": "esconder", + "balanceAssets": "Activos em dívida", + "searchCurrency": "Procura de moeda", + "addressManagement": "Gestão de endereços", + "totalAssets": "Total dos activos", + "availableBalance": "Saldo disponível", + "fee": "Saldo congelado", + "valuation": "avaliação", + "recharge": "Para recarregar", + "withdrawal": "Sobre bitcoin", + "transaction": "acordo", + "rechargeAddress": "Endereço de recarga", + "rechargeQuantity": "Número de recarga", + "enterQuantity": "Por favor, indique a quantidade", + "rechargeInstructions": "Instruções de recarga", + "automaticallyCredited": "Este endereço é o seu endereço de recarga mais recente e quando o sistema recebe a recarga, a entrada automática será feita.", + "tran": "A transferência precisa ser confirmada por toda a rede blockchain. Ao chegar a {num} confirmações de rede, seu {name} será creditado automaticamente na conta.", + "only": "Por favor, envie apenas {name} para este endereço, o envio de outras moedas digitais para este endereço resultará em perda permanente.", + "low": "mínimo", + "addressList": "Lista de endereços", + "enterDrawAddress": "Por favor, insira o endereço do depósito", + "invalidWallet": "Não é um endereço de carteira válido, por favor, digite novamente", + "withdrawalsNumber": "Número de moedas em euros", + "enterDrawNum": "Por favor, insira o número de moedas", + "withdrawalInstructions": "Notas explicativas", + "enterAddress": "Por favor, verifique cuidadosamente e digite o endereço correto da carteira de moedas.", + "notSend": "O envio de moeda digital que não corresponde ao endereço da carteira causa perdas permanentes.", + "deductionFee": "A taxa de processamento de moedas de levantamento será deduzida do número de moedas de levantamento.", + "submitSuccess": "Apresentação bem sucedida, em processo de revisão", + "operationComplete": "Operação de levantamento de moeda concluída, aguardando revisão", + "rechargeRecord": "Registo da recarga", + "withdrawalRecord": "Registo de títulos", + "assetsName": "Por favor, insira o nome do ativo", + "selectStatus": "Por favor, selecione o estado", + "startTime": "Data de início", + "entTIme": "Data de fim", + "date": "data", + "hash": "haxixe", + "num": "quantidade", + "progress": "Os progressos", + "status": "estado", + "error": "fracasso", + "success": "sucesso", + "underReview": "Em processo de auditoria", + "handlingFee1": "Taxas de tratamento", + "processing": "Em processo de auditoria", + "transfer": "Transferência de fundos", + "transferDescription": "Descrição das transferências de fundos", + "handlingFee": "Por favor, note que as transferências internas de fundos são feitas automaticamente e sem custos de processamento.", + "onlyForeignExchange": "Apenas {nome} pode ser transferido para a sua conta de contrato de câmbio", + "onlySustainable": "Apenas {nome} pode ser transferido para a sua conta de contrato de perpetuidade", + "inCase1": "Se você quiser negociar um contrato de forex, você deve transferir {nome} para a conta do contrato de forex, como um depósito", + "inCase2": "Se você quiser negociar um contrato de perpetuidade, você deve transferir {nome} para a conta de perpetuidade como um depósito.", + "transferRecord": "Registo de transferências", + "allTransfer": "Registo de todas as transferências de activos", + "direction": "direcção", + "all": "todos", + "dateTime": "tempo", + "UserWallet": "Conta de património", + "ContractAccount": "Conta contratual", + "LeverageAccount": "Conta de alavancagem", + "FinancialAccount": "Contas de gestão", + "contractFlow": "Gestão de contratos", + "info": "pormenores", + "money": "montante", + "Authentication": "Autenticação de Identidade" + }, + "contact": { + "contact": "Contacte-nos.", + "help": "Para qualquer ajuda, entre em contato conosco", + "fullName": "Nome completo", + "enterFullName": "Por favor, digite seu nome completo", + "email": "Caixa de correio", + "enterEmail": "Por favor, insira o endereço de e-mail", + "consultingService": "Projectos de consultoria", + "pleseSelect": "Por favor, escolha", + "info": "informação", + "enterInfo": "Por favor, digite as suas informações.", + "contactInformation": "Informações de contacto", + "routineConsultation": "Consultas de rotina", + "customerService": "Serviço ao cliente", + "mediaCooperation": "Cooperação com os meios de comunicação social", + "submit": "apresentação" + }, + "college": { + "college": "academia", + "article": "blog", + "tutorialDetails": "Detalhes do tutorial", + "howToBuyBitcoin": "Como comprar bitcoin", + "recommendedCourse": "Tutorial recomendado", + "buy": "1 minuto para comprar uma moeda de bitcoin", + "register": "De registo", + "visit": "Visite o site {nome} e registre a sua conta {nome} que lhe pertence", + "realName": "Autenticação do nome real", + "upload": "Faça o upload de um documento válido para a autenticação do seu nome real", + "quickBuy": "Um clique para comprar e pagar", + "inIndex": "Na página inicial/comprar moeda com um clique, espere para colocar a moeda depois de completar o pagamento", + "tradeNow": "Vai fazer o negócio agora.", + "currencyTransaction": "Sabe negociar moedas", + "contractEntryTransaction": "Negociação de contrato inicial", + "how": "Como fazer uma negociação de opções", + "TradingStrategy": "Estratégia de negociação", + "seeMore": "Ver mais", + "industryResearch": "Investigação industrial", + "oneClick": "Negociação inteligente com um clique", + "inAssets": "Na página de activos/moedas de reposição com um clique, as moedas de reposição podem ser negociadas após a sua conclusão", + "dictionary": "Dicionário da cadeia de blocos", + "media": "Cobertura da imprensa" + }, + "home": { + "newEra": "A principal bolsa de derivados financeiros digitais do mundo", + "startTrading": "Iniciar o negócio.", + "walkingLantern": "Um lanterna.", + "marketCenter": "Mercado de negociação", + "optional": "voluntário", + "latestPrice": "preços", + "upAndDown": "Aumento ou diminuição", + "heigh": "Preço máximo", + "low": "Preço mais baixo", + "vol": "Volume de negócios", + "coinType": "Um acordo.", + "more": "Ver mais >>", + "multiPlatform": "Descarregamento multiplataforma", + "atTime": "Em qualquer lugar.", + "multiTerminal": "Negociação em terminais multiplataforma", + "cover": "cobertura", + "multiTerminal1": "Plataformas múltiplas", + "support": "Suporte para todas as funções do negócio", + "down": "descarregar", + "news": "Dinâmica do mercado", + "detail": "Ver detalhes", + "quickly": "Vamos, rápido!", + "major": "Oferecemos profissionalismo aos investidores", + "safe": "Serviços de transação seguros", + "login": "autenticação", + "reg": "De registo", + "trading": "Vai fazer um acordo.", + "add": "Adicionar sucesso", + "cancel": "Cancelado.", + "features": "Principais vantagens", + "partners": "Instituições de investimento e parceiros", + "perpetual_title": "Contratos de perpetuidade em divisas", + "perpetual_cont": "O AMATAK forex perpetuity é uma opção de alta relação qualidade/preço para realizar rapidamente operações de câmbio", + "stablecoin_title": "O primeiro centro de negociação de moeda estável do mundo", + "stablecoin_cont": "A AMATAK construiu uma forte ecologia de moeda estável, uma arquitetura completa de transações, pagamentos e remessas de moeda estável, tornando-se parte integrante de um clube global de moeda estável de alta qualidade!", + "security_title": "Segurança impecável", + "security_cont": "A AMATAK utiliza o Vault Ledger de ponta para proteger a segurança dos terminais de moeda digital. a plataforma Ledger Vault oferece um seguro de até us $150 milhões para o roubo de terceiros, colusão interna e roubo de sementes principais. Mais de 98% do dinheiro digital armazenado na AMATAK é armazenado em carteiras frias com assinatura múltiple. além disso, os mais altos padrões de controle de risco de mercado são aplicados para manter os fundos seguros para todos os usuários.", + "service_title": "Serviço de atendimento ao cliente 24 horas, 7 dias por semana, em tempo real e multilingue", + "service_cont": "O serviço de atendimento ao cliente da AMATAK está disponível 24 horas por dia, 7 dias por semana, fazendo o possível para ajudar os usuários, contactando o serviço de atendimento ao cliente através de chat ao vivo ou enviando um e-mail para support@AMATAK.com.", + "analy_title": "Ferramentas analíticas avançadas", + "analy_cont": "Os comerciantes podem auxiliar a negociação na página de negociação com diferentes ferramentas de gráfico e indicadores baseados em dados estáveis.", + "liquidity_title": "Excelente mobilidade", + "liquidity_cont": "24 horas por dia, 7 dias por semana, a todo o momento ligados à elevada liquidez da plataforma de negociação da AMATAK.", + "technology_title": "Tecnologia autodesenvolvida", + "technology_cont": "A plataforma de negociação AMATAK é baseada em tecnologia comprovada e foi construída pelos melhores especialistas da indústria para otimizar ao máximo a funcionalidade da plataforma.", + "download": "Baixe o AMATAK móvel", + "easy": "A qualquer momento e em qualquer lugar, abra a negociação na mão", + "skan": "Varre o código para baixar imediatamente", + "core_advantages": "Minha principal força são os dados", + "about_us": "Sobre nós" + }, + "option": { + "waitFor": "À espera da entrega.", + "history": "Entrega histórica", + "orderNum": "Número de ordem", + "option": "opções", + "buyTime": "Hora de compra", + "buyAmount": "Quantidade comprada", + "buyType": "Tipo de compra", + "yield": "Taxa de rendimento", + "state": "estado", + "deliverytime": "Hora de entrega", + "countDown": "Contagem decrescente para entrega", + "buyingUp": "Comprar rose", + "buyDwon": "comprar", + "buyEven": "Comprar uk", + "result": "Resultados da entrega", + "settlementQuantity": "Quantidade liquidada", + "up": "rose", + "down": "caiu", + "flat": "uk", + "buyOption": "Opções adquiridas", + "deliveryRecord": "Registos de entrega", + "current": "actual", + "next": "A próxima", + "enterNum": "Por favor, indique a quantidade", + "balance": "equilíbrio", + "expectedRevenue": "Receitas previstas", + "seeMore": "Ver mais", + "beBearish": "ursos", + "time": "tempo", + "zf": "ganhos", + "bullish": "taurino", + "lookAtPing": "Ver ping", + "bearish": "põe", + "amount": "quantidade", + "coinType": "moeda", + "odds": "A calcular", + "buySuccess": "Compra bem sucedida." + }, + "order": { + "noData": "Não há registro de transações", + "ifCancel": "Se a ordem em curso é revogada ou não", + "cancelSuccess": "Retirada aceite", + "marketPrice": "Operações de mercado", + "fixedPrice": "Transacções de preço limitado", + "sell": "vende", + "buy": "comprar", + "exchangeRecord": "Registo das operações", + "see": "ver", + "opt": "funcionamento", + "status": "estado", + "time": "tempo", + "tradingPair": "Um acordo.", + "direction": "direcção", + "type": "Os tipos", + "averagePrice": "Preço médio", + "price": "preços", + "matched": "arranjado", + "totalAmountEntrusted": "Total da comissão", + "total": "total", + "toMatch": "Não ajustado", + "operation": "funcionamento", + "reset": "substituição", + "search": "busca", + "to": "a", + "startTime": "Data de início", + "endTime": "Data de fim", + "select": "Por favor, escolha", + "entrustType": "Tipo de delegação", + "spotConsignment": "Delegação spot", + "surrentCommission": "Comissão actual", + "commissionRecord": "Registos da comissão", + "optionTransaction": "Operações de opção", + "orderNum": "Número de ordem", + "timeSharing": "Time-sharing", + "yield": "Taxa de rendimento", + "buyNum": "Quantidade comprada", + "upAndDown": "Aumento ou diminuição", + "settlementQuantity": "Quantidade liquidada", + "transactionPrice": "Preço de transacção", + "tradingVolume": "Volume de negócios", + "aTurnover": "Volume das operações", + "serviceCharge": "Taxas de tratamento", + "cancel": "revogação", + "buyTime": "Tempo de compra", + "buyUp": "Comprar rose", + "buyDown": "comprar", + "buyLevel": "Comprar uk" + }, + "profile": { + "realName": "Autenticação do nome real", + "SelectAreaCode": "selecione o código de área", + "primaryCertification": "Certificação primária", + "advancedCertification1": "Aplicação de Certificação Avançada", + "advancedCertification2": "O pedido de certificação avançada foi apresentado", + "toExamine": "auditoria", + "fullName": "O nome", + "legal": "obrigatória", + "pleaseEnterName": "Por favor, digite o seu nome.", + "dateOfBirth": "Data de nascimento", + "selectDate": "Data de selecção", + "documentType": "Tipo de certificado", + "pelaseSelect": "Por favor, escolha", + "certificateNumber": "Número de identificação", + "endterIDNumber": "Por favor, digite o número de identificação", + "addressInfo": "Informação sobre o endereço", + "residentialAddress": "Endereço de residência", + "residentialAddress1": "Por favor, insira o endereço de residência", + "ciy": "cidade", + "incity": "Por favor, insira a cidade", + "postalCode": "Código postal", + "thePostcode": "Por favor, digite o código postal", + "additionalInformation": "Informações adicionais", + "optional": "facultativo", + "contactInformation": "Informações de contacto", + "phoneNumber": "Número de telefone", + "enterPhoneNumber": "Por favor, digite o número de telefone celular", + "clickUpload1": "Ao clicar em carregar o arquivo e submeter a autenticação, você declara que leu e concorda com os nossos termos de serviço e acordo de privacidade", + "pelaseDownload": "Por favor, selecione um dos seguintes documentos que não está caducado", + "passport": "passaporte", + "drivingLicense": "Carta de condução", + "iD": "identificação", + "upload": "Faça o upload.", + "explain": "Significa que", + "unexpired": "Os documentos não caducados podem ser fotografias ou digitalizados.", + "pleaseConfirm": "Certifique-se de que todos os detalhes da foto são claros e não estão cobertos.", + "fileFormat": "Formato do ficheiro", + "maximumFileSize": "Tamanho máximo do arquivo", + "positive": "Frente da identificação", + "theOtherSide": "O reverso da identificação.", + "hold": "Identificação de mão.", + "dragHere": "Arrastar para aqui, ou", + "clickUpload": "Clique em upload", + "uploadPhoto": "Por favor, envie uma foto de identificação", + "reversePhoto": "Por favor, possua a foto do reverso da sua identificação", + "uploadIDCard": "Por favor, possua uma foto de identificação", + "nextStep": "O próximo passo", + "inSubmit": "O seu pedido de validação foi apresentado! Informaremos você logo que os resultados estejam disponíveis", + "gotIt": "Sim, eu sei.", + "congratulations": "Bem, parabéns.", + "back": "regresso", + "resetApply": "Novo pedido ou não", + "recertification": "recertificação", + "userInfo": "Informação da conta", + "verState": "Estado da validação", + "max": "maior", + "limitH": "Limite de prémio horário", + "verLeave": "Nível de validação", + "exceed": "Mais de", + "contactUs": "Contacte-nos.", + "inviteFriends": "Convide um amigo.", + "dividends": "Convidar amigos para usar {nome}, obter {num} da taxa de processamento de futuras transacções do amigo como um bónus de dividendos.", + "sendInvitation": "Envio de convites", + "resetPassword": "Reset a senha.", + "forLoginAccount": "Para aceder à conta.", + "clickReset": "Clique em reset", + "registrationDecord": "Registo de identificação", + "recording": "Usado para exibir o histórico de login detalhado", + "recordingDEtail": "Registo pormenorizado", + "invitationReward": "Convite e prémio", + "inviteUse": "Convidem os amigos.", + "futureCommission": "Ganhe um prémio de dividendos", + "joinThePlan": "Junte-se ao programa {name} para convidar o utilizador a participar", + "checkMyDividend": "Vê os meus dividendos", + "step1": "Primeiro passo", + "shareLink": "Partilha de ligações", + "step2": "Segundo passo", + "shareFriend": "Convide um amigo.", + "step3": "Passo 3", + "instantDividend": "Os dividendos", + "invitationInformation": "Convite à informação", + "invitationLink": "Ligações convidadas", + "invitationCode": "Código do convite", + "registeredUser": "Utilizadores registados", + "accountNumber": "conta", + "registrationTime": "Período de inscrição", + "activityTerms": "Condições de actividade", + "handlingFeeDividend": "Comissão de tratamento de dividendos", + "equalInvitee": "É igual a ser convidado", + "fee": "Comissões de processamento de transações", + "afterThat": "Será depois de ser convidado para negociar", + "follow": "Transferência para a conta do convidado em minutos", + "limit": "A actividade segue os horários de início e de fim a seguir indicados e está limitada à disponibilidade de uma conta válida após a data de início da actividade e até à data de fim da actividade", + "activityStartTime": "Hora de início da actividade", + "Y": "anos", + "M": "mês", + "D": "De outubro", + "endTime": "Hora de fim do evento", + "proceed": "Em curso", + "atAnyTime": "Reserva-se o direito de alterar, suspender, ou terminar o programa de convite do usuário {name} a qualquer momento e sem aviso prévio", + "reservedRights": "Reserva o direito de não emitir dividendos de comissões de processamento para contas duplas ou falsas", + "canDecide": "Pode aceitar ou rejeitar usuários especificamente introduzidos ou convidados para a plataforma {name} {link}", + "bill": "Registos de acesso", + "date": "data", + "address": "localização", + "equipment": "equipamento", + "preliminary": "Certificado inicial aprovado", + "clickToVerify": "Clique para verificar", + "clickToVerify1": "Concluído", + "tips1": "Certificação básica: Para escolher dinheiro, você precisa concluir a certificação avançada.", + "tips2": "Certificação avançada: limite de saque em 24 horas de até 5000USDT. Se precisar de mais valores de saque, entre em contato com o atendimento ao cliente" + }, + "setting": { + "smsVer": "Verificação SMS", + "enterCode": "Por favor, digite o código de verificação", + "emailVer": "Verificação da caixa de correio", + "enterEmailVer": "Por favor, insira o código de verificação do e-mail", + "ver": "verificação", + "enterNameCode": "Por favor, digite o código de verificação {name}", + "openSuccess": "Activado.", + "closeSuccess": "Desligou com sucesso.", + "email": "Caixa de correio", + "enterEmail": "Por favor, digite a caixa de correio.", + "emailVerCode": "Código de verificação da caixa de correio", + "enterSmsCode": "Por favor, digite o código de verificação SMS", + "bind": "vinculativo", + "unbind": "separação", + "bindSuccess": "Ligação bem sucedida.", + "unbindSuccess": "Desamarrado.", + "scanQrCode": "Por favor, verifique o código qr", + "howToOpen": "Sabe como activar a validação secundária {name}", + "read": "Clique aqui para ler as informações de instalação", + "verKey": "Chave de validação", + "safeSetting": "Configuração de segurança", + "loginPassword": "Senha de acesso", + "resLoginPassword": "Reset a senha de acesso.", + "transactionPassword": "Código da transacção.", + "usedFor": "Para a apresentação de contratos e delegações pontuais", + "notOpen": "Não aberto", + "modifyPassword": "Alterar a senha.", + "setPassword": "Defina a senha.", + "verCode": "Código de verificação", + "forLogin": "Usado para iniciar sessão, levantar moedas e mudar as configurações de segurança", + "alLast": "Pelo menos um modo de validação está activado", + "close": "encerramento", + "open": "abrir", + "phone": "Número de telemóvel", + "area": "Por favor, insira o código da área", + "enterPhone": "Por favor, digite o número de telefone celular", + "newPassword": "Novo código.", + "passwordIs": "A senha de negociação é um número de dígitos {num}", + "enterNewPassword": "Por favor, insira uma nova senha", + "confirmPassword": "Confirme a senha.", + "pleaseConfirmPassword": "Por favor, confirme a senha.", + "operationSuccess": "Operação bem sucedida", + "combination": "A senha requer uma combinação de letras e números", + "changeSuccess": "Modificação bem sucedida" + }, + "purchase": { + "sendPrice": "Preço de emissão", + "subscriptionCurrency": "Moeda de subscrição", + "expected": "Hora prevista de entrada em linha", + "startTime": "Hora de começar a subscrição", + "applyForPurchase": "Fim do período de subscrição", + "enterNum": "Por favor, indique a quantidade", + "all": "Todos os", + "subscribeNow": "Subscreva imediatamente.", + "subscriptionCycle": "Período de subscrição", + "projectWarmUp": "Pré-aquecimento do projecto", + "startSubscription": "Início da subscrição", + "endOfSubscription": "Fim da subscrição", + "announceResults": "Publicação dos resultados", + "projectCetails": "Pormenores do projecto", + "useOrNot": "São utilizados", + "subscribe": "subscrição", + "prompt": "dica", + "subscribeSuccess": "O pedido foi aceite." + }, + "contract": { + "a0": "Conta contratual", + "a1": "Transferência de fundos", + "a2": "Conta de capital próprio", + "a3": "disponibilidade", + "a4": "Margem de detenção", + "a5": "Congelamento da comissão", + "a6": "Ganhos e perdas não realizados", + "a7": "Taxa de risco", + "a8": "Previsão de paridade forte", + "a9": "O contrato", + "b0": "alavancagem", + "b1": "tempo", + "b2": "Tipo de transacção", + "b3": "Negócio fechado.", + "b4": "Total da comissão", + "b5": "Preço médio de transacção", + "b6": "Preço da comissão", + "b7": "margem", + "b8": "Taxas de tratamento", + "b9": "estado", + "c0": "funcionamento", + "c1": "Embora ímpar.", + "c2": "revogação", + "c3": "Se a ordem em curso é revogada ou não", + "c4": "cancelar", + "c5": "A certeza", + "c6": "revogado", + "c7": "Não há acordo.", + "c8": "Negócio parcial.", + "c9": "Todos fechados.", + "d0": "Compra e compra.", + "d1": "Compra livre", + "d2": "Vender e vender.", + "d3": "Vender o pinto.", + "d4": "Retirada aceite", + "d5": "lançamento", + "d6": "interesse", + "d7": "Preço de desencadeamento", + "d8": "preços", + "d9": "Preço de mercado", + "e0": "preço", + "e1": "quantidade", + "e2": "chang", + "e3": "Margem exigida", + "e4": "Explorações múltiplas", + "e5": "Exploração vazia", + "e6": "taurino", + "e7": "Pode abrir", + "e8": "põe", + "e9": "Mas, uk", + "f0": "O preço", + "f1": "Abrir mais", + "f2": "Abrir vazia.", + "f3": "Com ou sem", + "f4": "Dobrar a alavanca", + "f5": "O sucesso da comissão", + "f6": "A posição foi liquidada.", + "f7": "prato", + "f8": "Um acordo em tempo real.", + "f9": "todos", + "g0": "comprar", + "g1": "vender", + "g2": "cumulativo", + "g3": "Preço mais recente", + "g4": "pormenores", + "g5": "Registos históricos", + "g6": "Hora de fechar o negócio", + "g7": "posição", + "g8": "Quantidade de copinato", + "g9": "Preço médio de abertura", + "h0": "Taxa de rendimento", + "h1": "Liquidação do preço de mercado", + "h2": "Se são totalmente niveladas ao preço de mercado", + "h3": "Uk total", + "h4": "sucesso", + "h5": "Um acordo.", + "h6": "Aumento ou diminuição", + "h7": "Preço máximo", + "h8": "Preço mais baixo", + "h9": "Volume de negócios", + "i0": "Posições detidas", + "i1": "Comissão actual", + "i2": "Comissão histórica", + "i3": "direcção", + "i4": "mais", + "i5": "vazio", + "i6": "Mostra apenas o actual", + "i7": "Verificar excedentes", + "i8": "pára", + "i9": "Stop-stop-loss", + "j0": "Geralmente atingem", + "j1": "Último preço de transacção", + "j2": "Preço médio de abertura", + "j3": "Preço de desencadeamento", + "j4": "Preço de desencadeamento stop-loss", + "j5": "Preço de mercado", + "j6": "Quando será desencadeado o fim da comissão, após a conclusão da transacção, os ganhos e perdas previstos", + "j7": "Quando irá acionar a comissão de stop-loss, após a conclusão do negócio de previsão de ganhos e perdas", + "j8": "Abertura do contrato de perpetuidade", + "j9": "Inauguração bem sucedida", + "k0": "A configuração foi bem sucedida.", + "k1": "Resultados liquidados", + "k2": "Uma chave totalmente plana", + "k3": "Um clique ao contrário.", + "k4": "Se uma chave é totalmente plana", + "k5": "Se um clique é invertido", + "k6": "O chun ping conseguiu.", + "k7": "Sucesso inverso.", + "k8": "Por favor, entre primeiro para fazer a subscrição", + "k9": "Por favor, Digite o código de assinatura" + }, + "otc": { + "a0": "Por favor, selecione o tipo de transação", + "a1": "comprar", + "a2": "vende", + "a3": "Moeda da transacção", + "a4": "Por favor, selecione a moeda", + "a5": "quantidade", + "a6": "Por favor, indique a quantidade", + "a7": "preços", + "a8": "Por favor, insira o preço", + "a9": "A transacção única é a mais baixa", + "b0": "Máximo para uma única transação", + "b1": "alipay", + "b2": "A carta", + "b3": "Cartões bancários", + "b4": "observações", + "b5": "Por favor, introduza as suas observações.", + "b6": "Lançamento bem sucedido", + "b7": "comprar", + "b8": "A venda", + "b9": "revogado", + "c0": "Em negociação", + "c1": "Feito.", + "c2": "Número do anúncio", + "c3": "estado", + "c4": "Preço total", + "c5": "Preço unitário", + "c6": "restante", + "c7": "Hora de publicação", + "c8": "Modo de cobrança", + "c9": "funcionamento", + "d0": "prateleiras", + "d1": "Se o anúncio atual é retirado das prateleiras", + "d2": "Uma boa dica.", + "d3": "Retirada aceite", + "d4": "Dados relativos à encomenda", + "d5": "Número de ordem", + "d6": "pagamento", + "d7": "O nome", + "d8": "conta", + "d9": "Banco de abertura", + "e0": "Sucursal de abertura de conta", + "e1": "Tempo restante", + "e2": "pontos", + "e3": "Segundos.", + "e4": "Comprovativos de pagamento", + "e5": "Carregar um código qr para receber", + "e6": "Por favor, envie o comprovante de pagamento", + "e7": "À espera que o comprador faça o upload.", + "e8": "Anulação de uma ordem", + "e9": "Confirmação do pagamento", + "f0": "Não chegou.", + "f1": "Reconhecimento da cobrança", + "f2": "Se cancelar a ordem atual", + "f3": "A certeza", + "f4": "cancelar", + "f5": "A encomenda foi cancelada.", + "f6": "Confirmação do pagamento corrente", + "f7": "Operação bem sucedida", + "f8": "O activo pendente para venda após o reconhecimento do recebimento será automaticamente transferido", + "f9": "Após a confirmação do não recebimento do pagamento, esta ordem será automaticamente incluída na reclamação", + "g0": "Publicar um anúncio", + "g1": "utilizador", + "g2": "O número total", + "g3": "Edição limitada", + "g4": "Meios de pagamento", + "g5": "Montante total", + "g6": "O pedido foi feito.", + "g7": "Ordens de venda", + "g8": "Ordens de compra", + "g9": "Ordens de compra publicitárias", + "h0": "Publicidade ordens de venda", + "h1": "todos", + "h2": "Está fechado.", + "h3": "A pagar", + "h4": "A confirmar", + "h5": "Na queixa", + "h6": "Número de operações", + "h7": "Objecto da transacção", + "h8": "tempo", + "h9": "pormenores", + "i0": "Por favor, digite a sua conta.", + "i1": "Por favor, digite o seu nome.", + "i2": "Receba o código qr", + "i3": "conservação", + "i4": "Nome do banco", + "i5": "Por favor, digite o nome do banco", + "i6": "Por favor, insira a sucursal de abertura de conta", + "i7": "Número do cartão de crédito", + "i8": "Por favor, insira o número do cartão bancário", + "i9": "Sucesso editorial", + "j0": "Adicionar sucesso", + "j1": "Contas em moeda estrangeira", + "j2": "activos", + "j3": "Saldo disponível", + "j4": "Saldo congelado", + "j5": "Operações em moeda estrangeira", + "j6": "O meu anúncio.", + "j7": "As minhas ordens", + "j8": "publicidade", + "j9": "Um clique compra", + "k0": "Um clique de Venda", + "k1": "Montante de compra", + "k2": "Quantidade de compra", + "k3": "Montante de Venda", + "k4": "Quantidade vendida", + "k5": "Por favor, introduza o montante Da compra", + "k6": "Por favor, quantidade de compra", + "k7": "Por favor, Digite o montante de Venda", + "k8": "Por favor, indique a quantidade para Venda", + "k9": "Comprar por quantidade", + "l0": "Notas sobre transacções monetárias Legais", + "l1": "Volume mínimo Da transacção", + "l2": "Confirmar compra", + "l3": "Confirmação Da Venda", + "l4": "Desculpe, SEU crédito está acabando.", + "l5": "Hora Da encomenda", + "l6": "Por favor, escolha o método de pagamento", + "l7": "Beneficiário", + "l8": "Colecção anormal", + "l9": "Por favor, Digite a senha Da transação", + "m0": "Pagamento", + "m1": "Aprovado", + "m2": "A auditoria falhou.", + "m3": "Fim Da ordem", + "m4": "Cancelamento Da ordem" + }, + "cxiNewText": { + "a0": "10 melhores", + "a1": "5 milhões+", + "a2": "< 0.10%", + "a3": "200+", + "a4": "Classificação Global", + "a5": "Os usuários confiam em nós", + "a6": "Taxas ultrabaixas", + "a7": "Países", + "a21": "Ganhar renda imediatamente", + "a22": "Crie um portfólio pessoal de criptomoedas", + "a23": "Compre, negocie e mantenha mais de 100 criptomoedas", + "a24": "Recarregue a conta", + "a25": "Inscreva-se por e-mail", + "a38": "Transações abertas a qualquer hora, em qualquer lugar.", + "a39": "Comece a negociar com segurança e conveniência a qualquer momento através do nosso APP e página da web", + "a40": "Digitalize o código QR para baixar o APP", + "a41": "Uma plataforma confiável de negociação de criptomoedas", + "a42": "Fique a par das últimas novidades através da nossa App e página web.", + "a43": "Fundos de ativos de segurança do usuário", + "a44": "Armazenamos 10% de todas as taxas de transação em fundos de ativos seguros para fornecer proteção parcial aos fundos do usuário", + "a45": "Controle de Acesso Personalizado", + "a46": "O controle de acesso personalizado restringe o acesso a dispositivos e endereços de contas pessoais, para que os usuários não tenham preocupações.", + "a47": "Criptografia de dados avançada", + "a48": "Os dados de transações pessoais são protegidos por criptografia de ponta a ponta e somente a pessoa pode acessar as informações pessoais.", + "a57": "Clique para ir", + "a71": "Guia do Iniciante ", + "a72": "Inicie o aprendizado de negociação de moeda digital imediatamente ", + "a77": "Como comprar moeda digital ", + "a78": "Como vender moeda digital ", + "a79": "Como negociar moedas digitais", + "a80": "Mercado", + "a81": "Tendência de mercado 24 horas", + "a82": "Adicione fundos de criptomoeda à sua carteira e comece a negociar instantaneamente" + }, + "homeNewText": { + "aa1": "Portão de criptomoeda", + "aa2": "Negociação segura, rápida e fácil em mais de 100 criptomoedas", + "aa3": "Cadastre-se por e-mail", + "aa4": "Comece a negociar agora", + "aa5": "tendência de mercado", + "aa6": "Cotação Expressa de Ativos Digitais", + "aa7": "Moeda", + "bb1": "Preço mais recente (USD)", + "bb2": "Aumento de 24h", + "bb3": "Volume de negociação em 24 horas", + "bb4": "Troca de criptomoedas para todos", + "bb5": "Comece a negociar aqui e experimente uma jornada melhor com criptomoedas", + "bb6": "pessoal", + "bb7": "Uma troca de criptomoedas para todos. A plataforma de negociação líder mais confiável com uma ampla variedade de moedas", + "cc1": "negócios", + "cc2": "Construído para empresas e instituições. Fornecendo soluções criptográficas para investidores institucionais e empresas", + "cc3": "Desenvolvedor", + "cc4": "Construído para desenvolvedores, para que desenvolvedores construam as ferramentas e APIs do futuro da web3", + "cc6": "Digitalize o código QR", + "cc7": "Baixe o aplicativo Android/IOS", + "dd1": "Seguro e estável com zero acidentes", + "dd2": "Múltiplas estratégias de segurança e garantia de 100% de reserva garantem que nenhum incidente de segurança ocorreu desde a sua criação.", + "dd3": "Negocie ativos criptográficos de forma simples e conveniente", + "dd4": "Em CXIsux, os produtos são fáceis de entender, o processo de transação é conveniente e a plataforma completa de serviços de ativos blockchain", + "dd5": "Derivados", + "dd6": "Você pode negociar contratos em mais de 100 criptomoedas com alavancagem de até 150x e obter lucros elevados", + "ee1": "Suporte a vários terminais", + "ee2": "Negocie ativos digitais a qualquer hora, em qualquer lugar", + "ee3": "Suporta uma ampla variedade de tipos de ativos, com todas as informações monetárias disponíveis", + "ee4": "Entenda rapidamente o processo de negociação de ativos digitais", + "ee5": "Comece sua jornada de criptografia", + "ee6": "Verificação gráfica", + "hh0": "Compartilhe a melhor experiência de negociação com as principais bolsas do mundo", + "hh1": "Procurando boas oportunidades de negociação", + "hh2": "Seguro, rápido e fácil de negociar mais de 100 criptomoedas", + "hh3": "Conheça nossos produtos", + "hh4": "Comece a negociar aqui e experimente uma jornada melhor com criptomoedas", + "hh5": "Negociação à vista", + "hh6": "Compre e venda mais de 100 criptomoedas com descontos nas taxas de negociação", + "hh7": "Transação contratual", + "hh8": "Melhore sua renda através do contrato perpétuo USDT", + "hh9": "Negociação simples e conveniente de ativos criptográficos", + "hh10": "Os produtos são fáceis de entender, o processo de transação é conveniente e a plataforma completa de serviços de ativos blockchain", + "hh11": "Gestão de Fundos", + "hh12": "Ganhe altos retornos através de nossos diversos produtos de staking", + "hh13": "Derivativos", + "hh14": "Você pode negociar mais de 100 contratos de criptomoeda com alavancagem de até 150x e obter lucros elevados", + "hh15": "Seguro e estável com zero acidentes", + "hh16": "Múltiplas garantias de política de segurança, 100% de garantia de reserva e nenhum incidente de segurança ocorreu desde o seu estabelecimento.", + "hh17": "Por que escolher BXRCO", + "hh18": "Sua troca de criptomoedas confiável", + "hh19": "Segurança", + "hh20": "Desde 2020, BXRCO tem funcionado de forma estável e confiável com seu sistema autodesenvolvido.", + "hh21": "Serviço", + "hh22": "Você pode obter respostas instantâneas na central de atendimento ou entrar em contato conosco por e-mail 24 horas por dia, 7 dias por semana.", + "hh23": "Fácil de usar", + "hh24": "BXRCO facilita a negociação de criptomoedas. Compre moedas com um clique e nunca perca a oportunidade fugaz de ganhar dinheiro.", + "hh25": "Compra e venda flexíveis", + "hh26": "Uma variedade de criptomoedas suportam transações, acompanhe a tendência, para não perder nenhuma oportunidade de riqueza.", + "hh27": "A negociação começa em 1 minuto", + "hh28": "Crie uma conta BXRCO gratuitamente", + "hh29": "Certificação completa", + "hh30": "Realizar transação", + "hh31": "Negocie em qualquer lugar", + "hh32": "Mantenha-se informado com nosso aplicativo e cliente de desktop.", + "hh33": "Escaneie o código para baixar agora", + "hh34": "Registre-se e comece a negociar!", + "hh35": "Registre-se agora", + "hh36": "Registre-se agora por e-mail", + "hh37": "Küresel Sıralama", + "hh38": "kullanıcılar bize güveniyor", + "hh39": "Ultra Düşük Ücretler", + "hh40": "Ülkeler", + "hh41": "BXRCO, negocie a qualquer hora, em qualquer lugar", + "hh42": "Negocie agora", + "hh43": "Digitalize o código QR para baixar BXRCO APP" + } +} diff --git a/src/i18n/spa.json b/src/i18n/spa.json new file mode 100644 index 0000000..dd87185 --- /dev/null +++ b/src/i18n/spa.json @@ -0,0 +1,1161 @@ +{ + "nav": { + "assets": "Activos", + "contract": "Cuentas contractuales", + "transfer": "Transferencia de fondos", + "excOrders": "Comisión al contado", + "contractOrders": "Delegación contractual", + "fundHistory": "Registro de llenado", + "security": "Seguridad de la cuenta", + "invite": "Invitar a amigos", + "login": "Por favor, inicie sesión para la operación", + "tips": "Consejos del sistema", + "set": "Por favor, establezca un precio adecuado primero", + "a1": "El precio no puede estar vacío o cero", + "a2": "La cantidad no puede ser nula o nula", + "a3": "Cantidad no inferior a", + "a4": "La cantidad total de órdenes de mercado compradas no puede ser nula o nula", + "a5": "La cantidad total de órdenes de mercado compradas no debe ser inferior a", + "a6": "El número de órdenes de mercado vendidas no puede ser nulo o nulo", + "a7": "El número de órdenes de mercado vendidas no puede ser inferior a", + "a8": "El precio de activación no puede ser nulo o nulo.", + "a9": "Stop Profit Stop loss - Price limit Unit limit can not be null or Zero", + "b1": "Stop loss - limit Unit quantity cannot be null or Zero", + "b2": "Stop - el precio de mercado no puede ser nulo o nulo", + "b3": "Stop - Stop - la cantidad total comprada en el mercado no puede ser nula o nula", + "b5": "Stop - Stop - la cantidad total comprada en el mercado no debe ser inferior a", + "b6": "Stop - la cantidad vendida en el mercado no puede ser nula o nula", + "b7": "Stop Profit stop - la cantidad vendida en el mercado no debe ser inferior a", + "b8": "¡La página está desconectada, por favor actualice o inténtelo de nuevo más tarde!", + "c1": "Comprar{amount}Pieza{name}Token disponible{rate}%Recompensa", + "c2": "Actividades de suscripción", + "c3": "Total de emisiones", + "c4": "Cantidad total de circulación", + "c5": "Precio de emisión", + "c6": "Tiempo de emisión", + "c7": "Dirección del Libro Blanco", + "c8": "Dirección web oficial", + "c9": "Introducción" + }, + "common": { + "a3": "Registro de pedidos", + "option": "Comercio de opciones", + "exchange": "Transacciones monetarias", + "markets": "Cotización", + "blogs": "Blog", + "news": "Información de la industria", + "helps": "Centro de ayuda", + "service": "Servicios", + "contactUs": "Contáctenos.", + "sign_in": "Iniciar sesión", + "sign_up": "Registro", + "noRecord": "No hay registro", + "getCode": "Obtener Código de verificación", + "help1": "Directrices sobre contratos de divisas", + "help2": "Especificación del contrato", + "optional": "Auto - Elección", + "price": "Precio", + "upAndDown": "Rango de fluctuación", + "heigh": "Precio máximo", + "low": "Precio más bajo", + "vol": "Volumen de Negocios", + "pair": "Par de transacciones", + "buy": "Comprar", + "sell": "Vender", + "buy-in": "Comprar", + "sell-out": "Vender", + "open-orders": "Delegación actual", + "condition-orders": "Delegación condicional", + "history-orders": "Registro de delegados", + "limit": "Límite de precios", + "market": "Precio de mercado", + "stop-limit": "Stop loss - limit Price", + "stop-market": "Stop loss - market price", + "limit-type": "Comercio limitado", + "market-type": "Comercio de mercado", + "startTime": "Hora de inicio", + "to": "A", + "confirmBtn": "Confirmar", + "cancelBtn": "Cancelar", + "cancel": "Revocación", + "endTime": "Hora final", + "export": "Exportar", + "filter": "Filtro", + "all": "Ilimitado", + "search": "Recuperación", + "reset": "Reset", + "hideAll": "Ocultar todos los delegados cancelados", + "canceled": "Cancelado", + "waiting": "Para emparejar", + "triggered": "Activado", + "processing": "En el emparejamiento", + "completed": "Completado", + "available_phone": "Introduzca el número de teléfono correcto", + "available_email": "Introduzca el buzón de correo correcto", + "codeSent": "Código de verificación enviado", + "captcha": "Error de código de verificación", + "created": "Tiempo", + "order-price": "Precio confiado", + "order-amount": "Cantidad confiada", + "order-total": "Total de pedidos", + "avg-price": "Precio medio", + "direction": "Dirección", + "order-type": "Tipo", + "executed-amount": "Emparejado", + "executed-total": "Volumen de Negocios", + "outstanding": "Para emparejar", + "status": "Estado", + "details": "Detalles", + "action": "Operaciones", + "id": "Número de orden", + "filled-price": "Precio de transacción", + "filled-amount": "Volumen de Negocios", + "filled-total": "Volumen de Negocios", + "fee": "Gastos de tramitación", + "enterValid": "Introduzca un número de teléfono móvil o correo electrónico válido", + "enterValidEmail": "Introduzca la dirección de correo electrónico correcta", + "enterValidPhone": "Introduzca un número de teléfono móvil válido", + "enterAccount": "Por favor, introduzca una cuenta", + "enterEmail": "Introduzca la dirección de correo electrónico correcta", + "enterPhone": "Por favor, introduzca el número de teléfono móvil", + "enterPwd": "Introduzca la contraseña", + "passwordRegular": "Las contraseñas deben estar compuestas por números y letras de 8 a 15 dígitos (deben contener tanto números como letras, pero también pueden utilizar símbolos)", + "newPassword": "Introduzca una nueva contraseña", + "confirmNewPassword": "Introduzca una nueva contraseña para confirmar", + "enterGoogleCode": "Introduzca el Código de verificación de Google", + "enterEmailCode": "Introduzca el Código de verificación del buzón de correo", + "enterSMSCode": "Introduzca el Código de verificación SMS", + "enterVerCode": "Introduzca el Código de verificación", + "exportFile": "Haga clic en aceptar para exportar el archivo", + "submit": "Submission", + "newzone": "Zona de Daxin", + "college": "College", + "goTo": "Ir", + "logOut": "Iniciar sesión", + "homepage": "Página principal", + "application": "Solicitud en moneda extranjera", + "purchase": "Suscripción", + "accountInformation": "Información de la cuenta", + "myWallet": "Mi cartera", + "commissionOrder": "Orden delegada", + "securitySetting": "Configuración de Seguridad", + "wallet": "Cartera", + "allAssets": "Todos los activos", + "contractaccount": "Cuentas contractuales", + "transferFunds": "Transferencia de fondos", + "rechargeWithdraw": "Recargar y retirar dinero", + "order": "Orden", + "spotConsignment": "Comisión al contado", + "optionOrders": "Orden de opción", + "perpetualContract": "Contrato perpetuo", + "foreignContract": "Contratos de divisas", + "notCertified": "No autenticado", + "notData": "Datos no disponibles", + "assets": "Activos", + "myCommission": "Mi sirviente de vuelta", + "addressManagement": "Gestión de direcciones", + "auth": "Autenticación del nombre real", + "invitationReward": "Recompensa por invitación", + "visitHistory": "Registros de acceso", + "noviceTutorial": "Tutoriales para principiantes", + "tradingStrategy": "Estrategia comercial", + "industryResearch": "Investigación Industrial", + "blockchainDictionary": "Diccionario de cadenas de bloques", + "mediaCoverage": "Cobertura mediática", + "selectFile": "Seleccionar archivo", + "upload": "Subir", + "delete": "Borrar", + "tooBig": "El tamaño del documento es demasiado grande para exceder", + "errorType": "Error de tipo de archivo", + "resend": "Retransmisión", + "sms": "SMS", + "email": "Buzón de correo", + "sendSuccess": "Código de verificación enviado con éxito", + "retransmission": "Retransmisión", + "start-trade": "Un viaje inmediato a la moneda digital", + "login": "Iniciar sesión", + "register": "Registro", + "trading": "Para comerciar", + "dark": "Negro", + "light": "Blanco", + "notMore": "No más", + "allRead": "Todos leídos", + "newMessage": "Nuevo mensaje", + "footerTips1": "Capital de riesgo en el mercado", + "footerTips2": "Legal Statement: the site is operated by {name} Company", + "footerTips3": "Consejos de riesgo: las transacciones de activos digitales pueden causar pérdidas de capital, por favor asegúrese de entender plenamente los riesgos", + "footerTips4": "Zonas restringidas: incapacidad para prestar servicios a la población de determinados países o regiones, como Israel y la República Islámica del Irán" + }, + "exchange": { + "search": "Buscar", + "pair": "Par de transacciones", + "last-price": "El último precio", + "change": "Rango de fluctuación", + "order-book": "Oferta", + "price": "Precio", + "amount": "Cantidad", + "total": "Valor total", + "recent-trades": "Última transacción", + "time": "Tiempo", + "order-total": "Valor total de la Comisión", + "balance": "Saldo disponible", + "enter-price": "Por favor, introduzca el precio", + "enter-amount": "Por favor, introduzca la cantidad", + "enter-total": "Por favor, introduzca el precio total", + "at-best-price": "Negociar a los mejores precios de mercado", + "trigger-price": "Introduzca el precio de activación", + "min": "Minutos", + "hour": "Horas", + "day": "Días", + "week": "Semana", + "month": "Mes" + }, + "login": { + "resend": "Retransmisión", + "sms": "SMS", + "sendOK": "¡Código de verificación enviado con éxito!", + "enterPhoneEmail": "Por favor, introduzca su número de teléfono o correo electrónico", + "effectivePhoneEmail": "Por favor, introduzca un teléfono o correo electrónico válido", + "enterPasswrod": "Introduzca la contraseña para la longitud de {num} bit", + "passwordLength": "Una contraseña que contiene un número alfanumérico en la longitud de la contraseña {num} bit", + "safe": "Verificación de la seguridad", + "googleVer": "Introduzca el Código de verificación de Google de {num} bits en su aplicación móvil", + "phoneCode": "Introduzca el Código de verificación de bits {num} enviado a su número de teléfono", + "emailCode": "Introduzca el Código de verificación de bits {num} enviado a su buzón de correo", + "google-code": "Código de verificación de Google", + "email-code": "Código de verificación del buzón de correo", + "sms-code": "Código de verificación del teléfono móvil", + "new-password": "Nueva contraseña", + "confirm-password": "Confirmar contraseña", + "forgetPassword": "Olvida la contraseña.", + "rememberMe": "Recuérdame.", + "noAccountYet": "No hay cuenta todavía", + "goRegister": "Registro", + "safety": "Verificación de la seguridad", + "regAccount": "Número de cuenta registrado", + "email": "Buzón de correo", + "phone": "Teléfono móvil", + "pleaseEmail": "Introduzca la dirección de correo electrónico", + "invalidEmail": "Dirección de correo electrónico no válida", + "enterMobile": "Por favor, introduzca el número de teléfono móvil", + "invalidPhone": "Número de teléfono móvil no válido", + "enterLengthPassword": "Introduzca la contraseña de {num1} a {num2} longitud de bits", + "hasNumEn": "La contraseña requiere una combinación de letras y números de {num}.", + "iSee": "Estoy de acuerdo.", + "terms": "Términos y condiciones", + "reg": "Registro", + "enterEmailCode": "Introduzca el Código de verificación de bits {num} enviado a su buzón de correo ({email})", + "accountActivated": "Activar cuenta", + "backOld": "Volver al paso anterior", + "verCode": "Código de verificación", + "notEmail": "Si no recibe un buzón de correo, pruebe lo siguiente", + "confirmEmail": "Asegúrese de introducir la dirección de correo electrónico correcta", + "confing": "Compruebe la carpeta de spam de su buzón de correo", + "checkTrashCan": "Asegúrese de que su buzón de correo está conectado a Internet estable", + "enterPhone1": "Por favor, introduzca el número de teléfono enviado a usted", + "enterPhone2": "Código de verificación de bits {num} de", + "smsNotReceived": "Si no recibe un mensaje de texto, pruebe lo siguiente", + "phoneCorrect": "Por favor, asegúrese de introducir el número de teléfono y el número de área correctos", + "securePhone": "Por favor, asegúrese de que la señal de su teléfono móvil es estable", + "hasAccount": "Ya hay una cuenta", + "toLogin": "Ir a iniciar sesión", + "securityVerification": "Verificación de la seguridad", + "disagree": "Aún no ha aceptado los términos", + "registrationSuccess": "Registro exitoso, saltando a la página de inicio de sesión", + "referrer": "Recomendador", + "c6": "Código de invitación (obligatorio)", + "c7": "Por favor complete el código de invitación", + "optional": "Opcional", + "password": "Contraseña", + "login": "Iniciar sesión", + "country": "Código de área", + "enter-account": "Por favor, introduzca el número de cuenta", + "sign-in": "Iniciar sesión", + "find-password": "Recuperar contraseña", + "submit": "Submission", + "confirmpassword": "Dos contraseñas inconsistentes", + "Remembered": "¿Recordaste tu contraseña?" + }, + "application": { + "form": "Formulario de solicitud de moneda del proyecto", + "sendUser": "Patrocinador del proyecto", + "sendUserEn": "Nombre en inglés de la moneda", + "sendUserCn": "Nombre chino de la moneda", + "contactPosition": "Persona de contacto y cargo", + "phone": "Teléfono de contacto", + "tokenPrice": "Precio de mercado", + "email": "Correo electrónico de contacto", + "address": "Lugar de registro del proyecto", + "mechanism": "Project Investment Agency", + "personal": "Personal", + "currencyCode": "Código de moneda", + "symbol": "Símbolo", + "currencyIdentification": "Identificación de la moneda", + "format": "Soporta el formato {name} con archivos menores que {num}", + "fundraisingDate": "Fecha de recaudación de fondos", + "officialWebsite": "Sitio web oficial", + "whitePaperLinks": "Enlaces al libro blanco", + "noLink": "Si no hay enlaces, por favor suba los archivos adjuntos al final del artículo", + "total_issue": "Emisión total en moneda", + "currencyCirculation": "Volumen de circulación de divisas", + "currencyAllocationRatio": "Proporción de monedas asignadas", + "numberOfCurrencyHolders": "Número de titulares de moneda", + "tradingPlatform": "Plataforma comercial en línea", + "privatePlacement": "Colocación privada", + "publicOfferingPrice": "Precio de oferta pública", + "company": "Por favor, adjunte la unidad monetaria", + "coinType": "Tipo de red de bloques monetarios", + "currencyIssueDate": "Fecha de emisión de la moneda", + "blockBrowser": "Navegador de bloques", + "officialAddress": "Dirección oficial de la cartera", + "contractAddress": "Dirección del contrato", + "link": "Enlace", + "budget": "Presupuesto de gastos en moneda", + "unit": "En unidades", + "ofTokens": "Número de fichas de actividad de mercado después de la moneda", + "chineseCurrency": "Introducción a la moneda china", + "enCurrency": "Introducción a la moneda en inglés", + "remarks": "Observaciones", + "uploadWhitePaper": "Subir Libro Blanco", + "pleaseUpload": "Por favor, suba el libro blanco", + "recommendationCode": "Nombre, organización y Código de recomendación del Recomendador", + "ifSo": "En caso afirmativo", + "affirmsThat": "Declaración: Confirmo que toda la información anterior es verdadera, completa y exacta.Asumiré la responsabilidad financiera y jurídica de proporcionar información falsa.", + "iKnow": "Ya veo.", + "reSubmit": "Volver a presentar", + "pleaseConfirm": "Por favor, confirme que toda la información anterior es verdadera.", + "pleaseEnter": "Por favor, introduzca", + "upLoadSuccess": "Subida exitosa" + }, + "wallet": { + "inside": "Transferencia interna de fondos", + "from": "De", + "history": "Ver historia", + "balance": "Saldo", + "transferQuantity": "Número de transferencias", + "capitalAccount": "Cuenta de fondos", + "contract": "Contrato", + "financial": "Cuenta financiera", + "leverage": "Cuenta apalancada", + "successful": "Transferencia exitosa", + "confirm": "Determinar el giro", + "pleaseSelect": "Seleccione la moneda", + "to": "A", + "assets": "Activos", + "strokes": "Introduzca el número de transferencias", + "addressManagement1": "Gestión de direcciones", + "addAddress": "Añadir dirección", + "filter": "Filtro", + "search": "Buscar", + "selectActiveArea": "Seleccione el área activa", + "areaOne": "Región I", + "areaTwo": "Región II", + "addressAssets": "Lista de direcciones", + "addressNum": "Número de direcciones", + "fee1": "Gastos de tramitación", + "creationTime": "Tiempo de creación", + "detailAddress": "Dirección detallada", + "remarks1": "Observaciones", + "operating": "Operaciones", + "complete": "Complete", + "copy": "Copiar", + "editAddress": "Editar dirección", + "deleteAddress": "Borrar dirección", + "next": "En una página", + "pre": "Siguiente página", + "add": "Añadir", + "edit": "Editar", + "address": "Dirección", + "selectAssets": "Por favor, seleccione activos", + "drawAddress": "Dirección de la moneda", + "addressRemarks": "Observaciones sobre la dirección", + "remarksDelete": "Asegúrese de borrar esta dirección", + "optionSuccess": "Operación exitosa", + "allAssets": "Valor de todos los activos", + "showNum": "Mostrar números", + "contractAccount": "Cuentas contractuales", + "marginAccount": "Cuenta apalancada", + "financialAccount": "Cuenta financiera", + "spotAccount": "Cuenta al contado", + "hide": "Ocultar", + "balanceAssets": "Saldo activo", + "searchCurrency": "Buscar moneda", + "addressManagement": "Gestión de direcciones de monedas", + "totalAssets": "Activos totales", + "availableBalance": "Saldo disponible", + "fee": "Saldo congelado", + "valuation": "Valoración", + "recharge": "Recargar", + "withdrawal": "Retirada de moneda", + "transaction": "Comercio", + "rechargeAddress": "Dirección de recarga", + "rechargeQuantity": "Cantidad de recarga", + "enterQuantity": "Por favor, introduzca la cantidad", + "rechargeInstructions": "Descripción de recarga", + "automaticallyCredited": "Esta dirección es su última dirección de recarga, que se registrará automáticamente cuando el sistema reciba recarga.", + "tran": "Las transferencias deben ser confirmadas por toda la red de blockchain, y su {name} se depositará automáticamente en la cuenta cuando llegue a {num} Network confirms.", + "only": "Por favor, envíe sólo {name} a esta dirección. Enviar otra moneda digital a esta dirección causará una pérdida permanente.", + "low": "Mínimo", + "addressList": "Lista de direcciones", + "enterDrawAddress": "Introduzca la dirección de la moneda", + "invalidWallet": "No es una dirección de cartera válida.", + "withdrawalsNumber": "Número de monedas retiradas", + "enterDrawNum": "Introduzca el número de monedas", + "withdrawalInstructions": "Descripción de la moneda", + "enterAddress": "Por favor, compruebe cuidadosamente e introduzca la dirección correcta de la cartera de monedas.", + "notSend": "Enviar dinero digital no correspondiente a la dirección de la cartera puede causar pérdidas permanentes.", + "deductionFee": "Los gastos de manipulación de la retirada de moneda se deducirán de la cantidad de retirada de moneda.", + "submitSuccess": "Submitted successfully, under review", + "operationComplete": "Operación de recogida de monedas completada, pendiente de aprobación", + "rechargeRecord": "Registro de recarga", + "withdrawalRecord": "Registro de monedas", + "assetsName": "Introduzca el nombre del activo", + "selectStatus": "Por favor, seleccione el Estado", + "startTime": "Fecha de inicio", + "entTIme": "Fecha final", + "date": "Fecha", + "hash": "Hash", + "num": "Cantidad", + "progress": "Progreso", + "status": "Estado", + "error": "Fracaso", + "success": "éxito", + "underReview": "Auditoría en curso", + "handlingFee1": "Gastos de tramitación", + "processing": "Auditoría en curso", + "transfer": "Transferencia de fondos", + "transferDescription": "Descripción de la transferencia de fondos", + "handlingFee": "Tenga en cuenta que la transferencia interna de fondos se realiza automáticamente y sin cargo.", + "onlyForeignExchange": "Sólo {nombre} Se puede transferir a su cuenta de contrato de divisas", + "onlySustainable": "Sólo {nombre} puede transferirse a su cuenta de contrato permanente", + "inCase1": "Si desea negociar contratos de divisas, debe transferir {nombre} a la cuenta de contratos de divisas como depósito", + "inCase2": "Si desea negociar un contrato perpetuo, debe transferir {nombre} a la cuenta de contrato perpetuo como depósito.", + "transferRecord": "Registro de transferencias", + "allTransfer": "Todos los registros de transferencia de activos", + "direction": "Dirección", + "all": "Todos", + "dateTime": "Tiempo", + "UserWallet": "Cuenta de activos", + "ContractAccount": "Cuentas contractuales", + "LeverageAccount": "Cuenta apalancada", + "FinancialAccount": "Cuenta financiera", + "contractFlow": "Flujo contractual", + "info": "Detalles", + "money": "Importe", + "Authentication": "Autenticación" + }, + "contact": { + "contact": "Contáctenos.", + "help": "Si necesita ayuda, por favor póngase en contacto con nosotros.", + "fullName": "Nombre completo", + "enterFullName": "Introduzca el nombre completo", + "email": "Buzón de correo", + "enterEmail": "Introduzca la dirección de correo electrónico", + "consultingService": "Proyecto de consultoría", + "pleseSelect": "Por favor, elija", + "info": "Información", + "enterInfo": "Por favor, introduzca información", + "contactInformation": "Información de contacto", + "routineConsultation": "Consulta de rutina", + "customerService": "Servicio al cliente", + "mediaCooperation": "Cooperación con los medios de comunicación", + "submit": "Submission" + }, + "college": { + "college": "College", + "article": "Blog", + "tutorialDetails": "Detalles del tutorial", + "howToBuyBitcoin": "Cómo comprar Bitcoin", + "recommendedCourse": "Tutoriales recomendados", + "buy": "Comprar un Bitcoin en un minuto", + "register": "Registro", + "visit": "Visite el sitio web {name} y registre la cuenta {name} que le pertenece", + "realName": "Autenticación del nombre real", + "upload": "Cargar documentos válidos para la autenticación personal del nombre real", + "quickBuy": "Compra y pago con un solo clic", + "inIndex": "Haga clic en la página de Inicio / compra de moneda para comprar moneda. Espere a que la moneda se ponga después del pago.", + "tradeNow": "Ve a negociar ahora.", + "currencyTransaction": "Segundo comercio de divisas", + "contractEntryTransaction": "Negociación inicial de contratos", + "how": "Cómo llevar a cabo el comercio de opciones", + "TradingStrategy": "Estrategia comercial", + "seeMore": "Ver más", + "industryResearch": "Investigación Industrial", + "oneClick": "Transacciones inteligentes de un solo clic", + "inAssets": "Haga clic en la página de llenado de activos / moneda para llenar la moneda, y la transacción se puede realizar después de completar", + "dictionary": "Diccionario de cadenas de bloques", + "media": "Cobertura mediática" + }, + "home": { + "newEra": "El principal mercado mundial de derivados financieros digitales", + "startTrading": "Iniciar una transacción", + "walkingLantern": "Lámpara de montar", + "marketCenter": "Mercado de Comercio", + "optional": "Auto - Elección", + "latestPrice": "Precio", + "upAndDown": "Rango de fluctuación", + "heigh": "Precio máximo", + "low": "Precio más bajo", + "vol": "Volumen de transacciones", + "coinType": "Par de transacciones", + "more": "Ver más > >", + "multiPlatform": "Descarga multiplataforma", + "atTime": "En cualquier momento y en cualquier lugar", + "multiTerminal": "Transacciones de terminales multiplataforma", + "cover": "Cobertura", + "multiTerminal1": "Múltiples plataformas", + "support": "Apoyo a todas las funciones empresariales", + "down": "Descargar", + "news": "Dinámica del mercado", + "detail": "Ver detalles", + "quickly": "Manos rápidas", + "major": "Ofrecemos servicios profesionales a los inversores", + "safe": "Servicios comerciales seguros", + "login": "Iniciar sesión", + "reg": "Registro", + "trading": "Para comerciar", + "add": "Añadir con éxito", + "cancel": "Cancelación exitosa", + "features": "Ventajas básicas", + "partners": "Organismos de inversión & Asociados", + "perpetual_title": "Contratos permanentes de divisas", + "perpetual_cont": "AMATAK Forex perpetuity contract is the first Forex perpetuity contract to be settled by stable currency with the highest 100 Times Leverage in the World.", + "stablecoin_title": "El primer centro de comercio de monedas estables del mundo", + "stablecoin_cont": "¡AMATAK ha construido un fuerte entorno monetario estable, una estructura completa de transacciones monetarias estables, pagos y remesas, y se ha convertido en una parte integral del Club monetario estable de alta calidad del mundo!", + "security_title": "Seguridad impecable", + "security_cont": "AMATAK utiliza la bóveda de Ledger más avanzada para proteger los puntos finales de la moneda digital, y la Plataforma de la bóveda de Ledger proporciona hasta 150 millones de dólares en seguros contra robos de terceros, colusión interna y robo de semillas principales.Más del 98% de las monedas digitales almacenadas en AMATAK se almacenan en carteras frías con múltiples firmas, y el proceso de control de riesgos de mercado más alto se utiliza para garantizar la seguridad de los fondos de todos los usuarios.", + "service_title": "Servicio multilingüe en tiempo real 24 / 7", + "service_cont": "El Servicio al cliente de AMATAK está disponible 24 / 7 en cualquier momento, haciendo to do lo posible para ayudar a los usuarios a través de chat en tiempo real o correo electrónico asupport@AMATAK.comPóngase en contacto con el servicio al cliente.", + "analy_title": "Herramientas analíticas avanzadas", + "analy_cont": "Los comerciantes pueden utilizar diferentes herramientas gráficas e indicadores basados en datos estables para ayudar a las transacciones en la página de negociación.", + "liquidity_title": "Excelente liquidez", + "liquidity_cont": "24 / 7 siempre conectado a la alta liquidez de la plataforma comercial AMATAK.", + "technology_title": "Tecnología desarrollada independientemente", + "technology_cont": "La Plataforma de negociación AMATAK se basa en la tecnología probada, construida por los principales expertos de la industria, para maximizar la optimización de las funciones de la Plataforma.", + "download": "Descargar el terminal móvil AMATAK", + "easy": "En cualquier momento, en cualquier lugar, abrir el comercio de la palma de la mano", + "skan": "Descarga de código escaneado ahora", + "core_advantages": "Mi principal ventaja son los datos", + "about_us": "Sobre nosotros" + }, + "option": { + "waitFor": "Esperando la entrega", + "history": "Entrega histórica", + "orderNum": "Número de orden", + "option": "Opciones", + "buyTime": "Tiempo de compra", + "buyAmount": "Cantidad comprada", + "buyType": "Tipo de compra", + "yield": "Tasa de rendimiento", + "state": "Estado", + "deliverytime": "Tiempo de entrega", + "countDown": "Cuenta atrás para la entrega", + "buyingUp": "Comprar", + "buyDwon": "Comprar o caer", + "buyEven": "Comprar", + "result": "Resultados de la entrega", + "settlementQuantity": "Cantidad de liquidación", + "up": "Subir", + "down": "Caer", + "flat": "Plano", + "buyOption": "Opciones de compra", + "deliveryRecord": "Registros de entrega", + "current": "Actual", + "next": "Próximo período", + "enterNum": "Por favor, introduzca la cantidad", + "balance": "Saldo", + "expectedRevenue": "Ingresos previstos", + "seeMore": "Ver más", + "beBearish": "Ver vacío", + "time": "Tiempo", + "zf": "Aumento", + "bullish": "Alcista", + "lookAtPing": "Ver plano", + "bearish": "Bajista", + "amount": "Cantidad", + "coinType": "Moneda", + "odds": "Probabilidades", + "buySuccess": "Comprar éxito" + }, + "order": { + "noData": "No Transaction Record", + "ifCancel": "Cancelar el pedido actual", + "cancelSuccess": "Revocación exitosa", + "marketPrice": "Comercio de mercado", + "fixedPrice": "Comercio limitado", + "sell": "Vender", + "buy": "Comprar", + "exchangeRecord": "Transacciones", + "see": "Ver", + "opt": "Operaciones", + "status": "Estado", + "time": "Tiempo", + "tradingPair": "Par de transacciones", + "direction": "Dirección", + "type": "Tipo", + "averagePrice": "Precio medio", + "price": "Precio", + "matched": "Emparejado", + "totalAmountEntrusted": "Total confiado", + "total": "Total", + "toMatch": "No emparejado", + "operation": "Operaciones", + "reset": "Reset", + "search": "Buscar", + "to": "A", + "startTime": "Fecha de inicio", + "endTime": "Fecha final", + "select": "Por favor, elija", + "entrustType": "Tipo de delegación", + "spotConsignment": "Comisión al contado", + "surrentCommission": "Delegación actual", + "commissionRecord": "Registro de delegados", + "optionTransaction": "Comercio de opciones", + "orderNum": "Número de orden", + "timeSharing": "Tiempo compartido", + "yield": "Tasa de rendimiento", + "buyNum": "Cantidad comprada", + "upAndDown": "Rango de fluctuación", + "settlementQuantity": "Cantidad de liquidación", + "transactionPrice": "Precio de transacción", + "tradingVolume": "Volumen de transacciones", + "aTurnover": "Volumen de las transacciones", + "serviceCharge": "Gastos de tramitación", + "cancel": "Revocación", + "buyTime": "Tiempo de compra", + "buyUp": "Comprar", + "buyDown": "Comprar o caer", + "buyLevel": "Comprar" + }, + "profile": { + "realName": "Autenticación del nombre real", + "SelectAreaCode": "seleccionar código de área", + "primaryCertification": "Certificación primaria", + "advancedCertification1": "Solicitud de Certificación Avanzada", + "advancedCertification2": "Solicitud de acreditación avanzada presentada", + "toExamine": "Auditoría", + "fullName": "Nombre", + "legal": "Legal", + "pleaseEnterName": "Por favor, introduzca un nombre", + "dateOfBirth": "Fecha de nacimiento", + "selectDate": "Seleccionar fecha", + "documentType": "Tipo de documento", + "pelaseSelect": "Por favor, elija", + "certificateNumber": "Número de documento", + "endterIDNumber": "Por favor, introduzca el número de identificación", + "addressInfo": "Información de la dirección", + "residentialAddress": "Dirección de residencia", + "residentialAddress1": "Introduzca la dirección de residencia", + "ciy": "Ciudad", + "incity": "Por favor, introduzca su ciudad", + "postalCode": "Código postal", + "thePostcode": "Introduzca el código postal", + "additionalInformation": "Información adicional", + "optional": "Opcional", + "contactInformation": "Información de contacto", + "phoneNumber": "Número de teléfono", + "enterPhoneNumber": "Por favor, introduzca el número de teléfono", + "clickUpload1": "Al hacer clic en cargar el archivo y enviar la autenticación, usted está de acuerdo con las condiciones de servicio y el Acuerdo de privacidad.", + "pelaseDownload": "Por favor, elija una copia no caducada del siguiente archivo", + "passport": "Pasaporte", + "drivingLicense": "Licencia de conducir", + "iD": "Documento de identidad", + "upload": "Cargar", + "explain": "Descripción", + "unexpired": "Un documento no caducado puede ser una imagen o un escaneo.", + "pleaseConfirm": "Por favor, asegúrese de que todos los detalles de la foto del documento son claros y no están cubiertos.", + "fileFormat": "Formato de archivo", + "maximumFileSize": "Tamaño máximo del archivo", + "positive": "Fachada del documento", + "theOtherSide": "Reverso del documento", + "hold": "Documento de mano", + "dragHere": "Arrastre aquí, o", + "clickUpload": "Haga clic en cargar", + "uploadPhoto": "Por favor, suba la foto frontal del documento.", + "reversePhoto": "Por favor, suba la foto de identificación.", + "uploadIDCard": "Por favor, suba su foto de identificación", + "nextStep": "Siguiente paso", + "inSubmit": "¡Su solicitud de verificación ha sido presentada!Le informaremos de los resultados en el primer momento", + "gotIt": "Lo tengo.", + "congratulations": "Felicitaciones.", + "back": "Return", + "resetApply": "Volver a solicitar", + "recertification": "Recertificación", + "userInfo": "Información de la cuenta", + "verState": "Estado de validación", + "max": "Máximo", + "limitH": "Límite de retirada horaria", + "verLeave": "Nivel de validación", + "exceed": "Más allá", + "contactUs": "Contáctenos.", + "inviteFriends": "Invitar a amigos", + "dividends": "Invite a sus amigos a usar {name} para obtener {num} de los honorarios futuros de transacción de sus amigos como recompensa de dividendos.", + "sendInvitation": "Enviar Invitación", + "resetPassword": "Restablecer contraseña", + "forLoginAccount": "Para iniciar sesión en una cuenta.", + "clickReset": "Haga clic en reset", + "registrationDecord": "Registro de inicio de sesión", + "recording": "Para mostrar el historial detallado de inicio de sesión", + "recordingDEtail": "Registro detallado", + "invitationReward": "Recompensa por invitación", + "inviteUse": "Invitar a amigos", + "futureCommission": "Obtener {num} de los honorarios futuros de transacción de un amigo como recompensa de dividendos", + "joinThePlan": "Añadir {nombre} plan de bonificación de invitación de usuario", + "checkMyDividend": "Ver mis dividendos", + "step1": "Primer paso", + "shareLink": "Compartir enlaces", + "step2": "Paso 2", + "shareFriend": "Invitar a amigos", + "step3": "Paso 3", + "instantDividend": "Derecho a un dividendo", + "invitationInformation": "Mensaje de invitación", + "invitationLink": "Enlace de invitación", + "invitationCode": "Código de invitación", + "registeredUser": "Usuarios registrados", + "accountNumber": "Número de cuenta", + "registrationTime": "Tiempo de registro", + "activityTerms": "Cláusula de actividad", + "handlingFeeDividend": "Reparto de honorarios", + "equalInvitee": "Igual a ser invitado", + "fee": "Gastos de transacción", + "afterThat": "Después de que el invitado haga un trato", + "follow": "Transferencia a la cuenta del invitado en minutos", + "limit": "Las actividades siguen los siguientes tiempos de inicio y fin, y sólo están disponibles para cuentas válidas después de la hora de inicio y antes de la hora de finalización de la actividad", + "activityStartTime": "Hora de inicio de la actividad", + "Y": "Año", + "M": "Mes", + "D": "Día", + "endTime": "Hora de finalización de la actividad", + "proceed": "Continuar", + "atAnyTime": "Se reserva el derecho de modificar, suspender o terminar el programa de invitación de usuario {name} en cualquier momento sin previo aviso.", + "reservedRights": "Reserve el derecho de no distribuir dividendos de honorarios por cuentas duplicadas o falsas", + "canDecide": "Los usuarios específicos introducidos o invitados a la plataforma {nombre} pueden ser aceptados o rechazados a su entera discreción.", + "bill": "Registros de acceso", + "date": "Fecha", + "address": "Ubicación", + "equipment": "Equipo", + "preliminary": "Autenticación inicial exitosa", + "clickToVerify": "Verificación de clics", + "clickToVerify1": "Completado", + "tips1": "Certificación básica: Para elegir efectivo, debes completar una certificación avanzada.", + "tips2": "Certificación avanzada: límite de retiro en 24 horas de hasta 5000 USDT. Si necesita más montos de retiro, comuníquese con el servicio al cliente" + }, + "setting": { + "smsVer": "Verificación de mensajes cortos", + "enterCode": "Introduzca el Código de verificación", + "emailVer": "Validación del buzón de correo", + "enterEmailVer": "Introduzca el Código de verificación del buzón de correo", + "ver": "Verificación", + "enterNameCode": "Introduzca el Código de verificación {name}.", + "openSuccess": "Apertura exitosa", + "closeSuccess": "Cierre exitoso", + "email": "Buzón de correo", + "enterEmail": "Por favor, introduzca el buzón de correo", + "emailVerCode": "Código de verificación del buzón de correo", + "enterSmsCode": "Introduzca el Código de verificación SMS", + "bind": "Binding", + "unbind": "Desenganche", + "bindSuccess": "Unión exitosa", + "unbindSuccess": "Desenganche exitoso", + "scanQrCode": "Por favor, escanea el Código QR", + "howToOpen": "Aprenda cómo activar la validación secundaria {name}.", + "read": "Haga clic aquí para leer la información de instalación", + "verKey": "Clave de autenticación", + "safeSetting": "Configuración de Seguridad", + "loginPassword": "Contraseña de inicio de sesión", + "resLoginPassword": "Restablecer contraseña de inicio de sesión", + "transactionPassword": "Contraseña de transacción", + "usedFor": "Para la presentación de contratos y comisiones al contado", + "notOpen": "No abierto", + "modifyPassword": "Cambiar contraseña", + "setPassword": "Establecer contraseña", + "verCode": "Código de verificación", + "forLogin": "Para iniciar sesión, retirar dinero y cambiar la configuración de Seguridad", + "alLast": "Activar al menos un método de validación", + "close": "Cerrar", + "open": "Abrir", + "phone": "Número de teléfono móvil", + "area": "Introduzca el Código de área", + "enterPhone": "Por favor, introduzca el número de teléfono", + "newPassword": "Nueva contraseña", + "passwordIs": "La contraseña de transacción es un número de bits {num}.", + "enterNewPassword": "Introduzca una nueva contraseña", + "confirmPassword": "Confirmar contraseña", + "pleaseConfirmPassword": "Por favor, confirme la contraseña", + "operationSuccess": "Operación exitosa", + "combination": "Las contraseñas requieren combinaciones de letras y números", + "changeSuccess": "Modificación exitosa" + }, + "purchase": { + "sendPrice": "Precio de emisión", + "subscriptionCurrency": "Moneda de compra", + "expected": "Tiempo estimado en línea", + "startTime": "Hora de inicio de la compra", + "applyForPurchase": "Fin del tiempo de suscripción", + "enterNum": "Por favor, introduzca la cantidad", + "all": "Todos", + "subscribeNow": "Compra inmediata", + "subscriptionCycle": "Ciclo de suscripción", + "projectWarmUp": "Precalentamiento del proyecto", + "startSubscription": "Inicio de la compra", + "endOfSubscription": "Cierre de la suscripción", + "announceResults": "Publicación de los resultados", + "projectCetails": "Detalles del proyecto", + "useOrNot": "Usar o no", + "subscribe": "Suscripción", + "prompt": "Prompt", + "subscribeSuccess": "éxito de la compra" + }, + "contract": { + "a0": "Cuentas contractuales", + "a1": "Transferencia de fondos", + "a2": "Intereses de la cuenta", + "a3": "Disponible", + "a4": "Margen de posición", + "a5": "Delegación congelada", + "a6": "Ganancias y pérdidas no realizadas", + "a7": "Tasa de riesgo", + "a8": "Estimación de las fuertes paridades", + "a9": "Contrato", + "b0": "Palanca", + "b1": "Tiempo", + "b2": "Tipo de transacción", + "b3": "Trato hecho", + "b4": "Total confiado", + "b5": "Precio medio de transacción", + "b6": "Precio confiado", + "b7": "Margen", + "b8": "Gastos de tramitación", + "b9": "Estado", + "c0": "Operaciones", + "c1": "Retirada", + "c2": "Revocación", + "c3": "Cancelar el pedido actual", + "c4": "Cancelar", + "c5": "Determinar", + "c6": "Revocado", + "c7": "No cerrar", + "c8": "Trato parcial", + "c9": "Trato completo", + "d0": "Comprar más", + "d1": "Comprar aire plano", + "d2": "Vender en blanco", + "d3": "Vender pingdo", + "d4": "Revocación exitosa", + "d5": "Apertura", + "d6": "Cierre", + "d7": "Precio de activación", + "d8": "Precio", + "d9": "Precio de mercado", + "e0": "Límite de precios", + "e1": "Cantidad", + "e2": "Zhang.", + "e3": "Margen requerido", + "e4": "Posición múltiple", + "e5": "Posiciones cortas", + "e6": "Alcista", + "e7": "Abierto", + "e8": "Bajista", + "e9": "Keping", + "f0": "Precio", + "f1": "Kaiduo", + "f2": "Abrir espacio", + "f3": "Con o sin", + "f4": "Doble palanca", + "f5": "Delegación exitosa", + "f6": "Cierre exitoso", + "f7": "Pankou", + "f8": "Transacciones en tiempo real", + "f9": "Todos", + "g0": "Comprar", + "g1": "Vender", + "g2": "Acumulación", + "g3": "El último precio", + "g4": "Detalles", + "g5": "Historia", + "g6": "Tiempo de transacción", + "g7": "Posición", + "g8": "Cantidad nivelada", + "g9": "Precio medio de apertura", + "h0": "Tasa de rendimiento", + "h1": "Cierre de mercado", + "h2": "Si el precio de mercado es plano", + "h3": "Todo plano", + "h4": "éxito", + "h5": "Par de transacciones", + "h6": "Rango de fluctuación", + "h7": "Precio máximo", + "h8": "Precio más bajo", + "h9": "Volumen de Negocios", + "i0": "Posición mantenida", + "i1": "Delegación actual", + "i2": "Delegación histórica", + "i3": "Dirección", + "i4": "Muchos", + "i5": "Vacío", + "i6": "Mostrar sólo actual", + "i7": "Detener la ganancia", + "i8": "Stop loss", + "i9": "Stop loss", + "j0": "Ganancias y pérdidas", + "j1": "El último precio de transacción", + "j2": "Precio medio de apertura", + "j3": "Precio de activación", + "j4": "Stop loss trigger Price", + "j5": "Precio de mercado a", + "j6": "Se activará el mandato de detener las ganancias y se espera que las ganancias y pérdidas se produzcan después de la transacción.", + "j7": "La Comisión de STOP - loss se activará en el momento de la transacción, y se espera que las ganancias y pérdidas se produzcan después de la transacción.", + "j8": "Apertura de contratos permanentes", + "j9": "Apertura exitosa", + "k0": "Configuración exitosa", + "k1": "Liquidación de pérdidas y ganancias", + "k2": "Plano de un botón", + "k3": "Reversión de un botón", + "k4": "Si un botón es plano", + "k5": "Si un botón se invierte", + "k6": "éxito total", + "k7": "éxito inverso", + "k8": "Por favor, inicie sesión para solicitar", + "k9": "Introduzca el Código de suscripción " + }, + "otc": { + "a0": "Por favor, seleccione el tipo de transacción", + "a1": "Comprar", + "a2": "Vender", + "a3": "Moneda de transacción", + "a4": "Seleccione la moneda", + "a5": "Cantidad", + "a6": "Por favor, introduzca la cantidad", + "a7": "Precio", + "a8": "Por favor, introduzca el precio", + "a9": "Mínimo de una sola transacción", + "b0": "Máximo de una sola transacción", + "b1": "Alipay", + "b2": "Wechat", + "b3": "Tarjeta bancaria", + "b4": "Observaciones", + "b5": "Por favor, introduzca comentarios", + "b6": "Publicado con éxito", + "b7": "Comprar", + "b8": "Vender", + "b9": "Revocado", + "c0": "En el comercio", + "c1": "Completado", + "c2": "Número de anuncio", + "c3": "Estado", + "c4": "Precio total", + "c5": "Precio unitario", + "c6": "Remanente", + "c7": "Tiempo de publicación", + "c8": "Método de recogida", + "c9": "Operaciones", + "d0": "Marco inferior", + "d1": "Anuncios actuales fuera del estante", + "d2": "Consejos cálidos", + "d3": "Revocación exitosa", + "d4": "Detalles del pedido", + "d5": "Número de orden", + "d6": "Pago", + "d7": "Nombre", + "d8": "Número de cuenta", + "d9": "Banco depositario", + "e0": "Subdivisión de apertura de cuentas", + "e1": "Tiempo restante", + "e2": "Puntos", + "e3": "Segundos", + "e4": "Comprobante de pago", + "e5": "Cargar Código QR de colección", + "e6": "Por favor, suba el certificado de pago", + "e7": "Esperando a que el comprador suba", + "e8": "Cancelar orden", + "e9": "Confirmación del pago", + "f0": "Cuentas pendientes", + "f1": "Acuse de recibo", + "f2": "Cancelar el pedido actual", + "f3": "Determinar", + "f4": "Cancelar", + "f5": "Orden cancelada", + "f6": "Confirmar el pago actual", + "f7": "Operación exitosa", + "f8": "Los activos de venta se transferirán automáticamente después de la confirmación de la recogida", + "f9": "Una vez confirmada la falta de pago, la orden entrará automáticamente en la reclamación", + "g0": "Anunciar", + "g1": "Usuarios", + "g2": "Total", + "g3": "Límite", + "g4": "Método de pago", + "g5": "Total", + "g6": "Pedido exitoso", + "g7": "Orden de venta", + "g8": "Orden de compra", + "g9": "Orden de compra publicitaria", + "h0": "Orden de venta publicitaria", + "h1": "Todos", + "h2": "Cerrado", + "h3": "Pendiente de pago", + "h4": "Por confirmar", + "h5": "En apelación", + "h6": "Número de transacciones", + "h7": "Objeto de la transacción", + "h8": "Tiempo", + "h9": "Detalles", + "i0": "Por favor, introduzca el número de cuenta", + "i1": "Por favor, introduzca un nombre", + "i2": "Código bidimensional de recogida", + "i3": "Guardar", + "i4": "Nombre del Banco", + "i5": "Introduzca el nombre del Banco", + "i6": "Por favor, introduzca la sucursal de apertura de cuentas", + "i7": "Número de tarjeta bancaria", + "i8": "Introduzca el número de tarjeta bancaria", + "i9": "Edición exitosa", + "j0": "Añadir con éxito", + "j1": "Cuenta en moneda francesa", + "j2": "Activos", + "j3": "Saldo disponible", + "j4": "Saldo congelado", + "j5": "Transacciones en moneda francesa", + "j6": "Mi anuncio", + "j7": "Mi orden", + "j8": "Publicidad", + "j9": "Compra de un botón", + "k0": "Venta de un solo clic", + "k1": "Importe de la compra", + "k2": "Cantidad comprada", + "k3": "Importe de la venta", + "k4": "Cantidad vendida", + "k5": "Introduzca la cantidad de compra", + "k6": "Por favor, introduzca la cantidad de compra", + "k7": "Por favor, introduzca el importe de la venta", + "k8": "Por favor, introduzca la cantidad vendida", + "k9": "Comprar por cantidad", + "l0": "Descripción de las transacciones en moneda francesa", + "l1": "Volumen mínimo de negociación", + "l2": "Confirmar la compra", + "l3": "Confirmación de la venta", + "l4": "Saldo insuficiente", + "l5": "Tiempo de pedido", + "l6": "Por favor, seleccione el método de pago", + "l7": "Beneficiario", + "l8": "Excepción de cobro", + "l9": "Introduzca la contraseña de la transacción", + "m0": "Pagado", + "m1": "Aprobación de la auditoría", + "m2": "Fallo de auditoría", + "m3": "Fin del pedido", + "m4": "Orden cancelada" + }, + "cxiNewText": { + "a0": "10 mejores", + "a1": "5 millones+", + "a2": "< 0.10%", + "a3": "200+", + "a4": "Clasificación mundial", + "a5": "Los usuarios confían en nosotros", + "a6": "Tarifas ultra bajas", + "a7": "Países", + "a21": "Obtener ingresos inmediatamente", + "a22": "Crear una cartera personal de criptomonedas", + "a23": "Compre, intercambie y mantenga más de 100 criptomonedas", + "a24": "Recargar la cuenta", + "a25": "Registrarse por correo electrónico", + "a38": "Abrir transacciones en cualquier momento y en cualquier lugar.", + "a39": "Comience a operar de manera segura y conveniente en cualquier momento a través de nuestra aplicación y página web", + "a40": "Escanea el código QR para descargar la APP", + "a41": "Una plataforma de negociación de criptomonedas de confianza", + "a42": "Estamos comprometidos a garantizar la seguridad de los usuarios con estrictos protocolos y medidas técnicas líderes en la industria.", + "a43": "Fondos de activos de seguridad del usuario", + "a44": "Almacenamos el 10% de todas las tarifas de transacción en fondos de activos seguros para brindar protección parcial a los fondos de los usuarios", + "a45": "Control de acceso personalizado", + "a46": "El control de acceso personalizado restringe el acceso a dispositivos y direcciones de cuentas personales, para que los usuarios no tengan preocupaciones.", + "a47": "Cifrado de datos avanzado", + "a48": "Los datos de transacciones personales están protegidos por encriptación de extremo a extremo y solo la persona puede acceder a la información personal.", + "a57": "Haga clic para ir", + "a71": "Guía para principiantes ", + "a72": "Comience a aprender a operar con divisas digitales de inmediato ", + "a77": "Cómo comprar moneda digital ", + "a78": "Cómo vender moneda digital ", + "a79": "Cómo operar con monedas digitales", + "a80": "Mercado", + "a81": "Tendencia del mercado de 24 horas", + "a82": "Agregue fondos de criptomonedas a su billetera y comience a operar al instante" + }, + "homeNewText": { + "aa1": "Puerta de criptomonedas", + "aa2": "Opere de forma segura, rápida y sencilla con más de 100 criptomonedas", + "aa3": "Regístrese por correo electrónico", + "aa4": "Comience a operar ahora", + "aa5": "tendencia del mercado", + "aa6": "Cotización Express de Activos Digitales", + "aa7": "Divisa", + "bb1": "Último precio (USD)", + "bb2": "Augmentation de 24h", + "bb3": "Volume des transactions sur 24 heures", + "bb4": "Volume des transactions sur 24 heures", + "bb5": "Comience a operar aquí y experimente un mejor viaje con las criptomonedas", + "bb6": "personal", + "bb7": "Un intercambio de criptomonedas para todos. La plataforma comercial líder más confiable con una amplia gama de monedas", + "cc1": "Negocio", + "cc2": "Creado para empresas e instituciones. Proporcionar soluciones criptográficas a inversores institucionales y empresas.", + "cc3": "Desarrollador", + "cc4": "Creado para desarrolladores, para que los desarrolladores creen las herramientas y API del futuro de web3", + "cc6": "Escanear código QR", + "cc7": "Descargar la aplicación Android/IOS", + "dd1": "Seguro y estable con cero accidentes.", + "dd2": "Múltiples estrategias de seguridad y una garantía de reserva del 100% garantizan que no se hayan producido incidentes de seguridad desde su creación.", + "dd3": "Opere con criptoactivos de forma sencilla y cómoda", + "dd4": "En CXIsux, los productos son fáciles de entender, el proceso de transacción es conveniente y la plataforma integral de servicios de activos blockchain", + "dd5": "Derivados", + "dd6": "Puede negociar contratos en más de 100 criptomonedas con un apalancamiento de hasta 150x y obtener grandes ganancias", + "ee1": "Soporte para múltiples terminales", + "ee2": "Opere con activos digitales en cualquier momento y lugar", + "ee3": "Admite una amplia gama de tipos de activos, con toda la información monetaria disponible", + "ee4": "Comprenda rápidamente el proceso de negociación de activos digitales", + "ee5": "Comience su viaje de cifrado", + "ee6": "Verificación gráfica", + "hh0": "Comparta la mejor experiencia comercial con las principales bolsas del mundo", + "hh1": "Buscando buenas oportunidades comerciales", + "hh2": "Es seguro, rápido y fácil operar con más de 100 criptomonedas", + "hh3": "Conozca nuestros productos", + "hh4": "Empiece a operar aquí y experimente un mejor viaje con las criptomonedas", + "hh5": "Negociación al contado", + "hh6": "Compre y venda más de 100 criptomonedas con tarifas comerciales con descuento", + "hh7": "Transacción de contrato", + "hh8": "Mejora tus ingresos a través del contrato perpetuo USDT", + "hh9": "Negociación sencilla y cómoda de criptoactivos", + "hh10": "Los productos son fáciles de entender, el proceso de transacción es conveniente y la plataforma integral de servicios de activos blockchain", + "hh11": "Gestión de fondos", + "hh12": "Obtenga altos rendimientos a través de nuestros diversos productos de apuestas", + "hh13": "Derivados", + "hh14": "Puedes negociar más de 100 contratos de criptomonedas con un apalancamiento de hasta 150x y obtener grandes ganancias", + "hh15": "Seguro y estable con cero accidentes", + "hh16": "Múltiples garantías de política de seguridad, 100% de garantía de reserva y no han ocurrido incidentes de seguridad desde su establecimiento.", + "hh17": "¿Por qué elegir BXRCO?", + "hh18": "Su intercambio de criptomonedas de confianza", + "hh19": "Seguridad", + "hh20": "Desde 2020, BXRCO ha estado funcionando de manera estable y confiable con su sistema de desarrollo propio.", + "hh21": "Servicio", + "hh22": "Puede obtener respuestas instantáneas en el centro de servicio o contactarnos por correo electrónico las 24 horas, los 7 días de la semana.", + "hh23": "Fácil de usar", + "hh24": "BXRCO facilita el comercio de criptomonedas. Compre monedas con un clic y nunca pierda la fugaz oportunidad de ganar dinero.", + "hh25": "Compra y venta flexible", + "hh26": "Una variedad de criptomonedas admiten transacciones, manténgase al día con la tendencia para no perder ninguna oportunidad de riqueza.", + "hh27": "El comercio comienza en 1 minuto", + "hh28": "Crea una cuenta BXRCO gratis", + "hh29": "Certificación completa", + "hh30": "Realizar transacción", + "hh31": "Comercia en cualquier lugar", + "hh32": "Manténgase informado con nuestra aplicación y cliente de escritorio.", + "hh33": "Escanea el código para descargarlo ahora", + "hh34": "¡Regístrese y comience a operar!", + "hh35": "Regístrese ahora", + "hh36": "Regístrese ahora por correo electrónico", + "hh37": "Ranking Mundial", + "hh38": "los usuarios confían en nosotros", + "hh39": "Tarifas ultrabajas", + "hh40": "Países", + "hh41": "BXRCO, opera en cualquier momento y en cualquier lugar", + "hh42": "Negociar ahora", + "hh43": "Escanea el código QR para descargar BXRCO APP" + } +} diff --git a/src/i18n/swe.json b/src/i18n/swe.json new file mode 100644 index 0000000..e5ab0b0 --- /dev/null +++ b/src/i18n/swe.json @@ -0,0 +1,1038 @@ +{ + "nav": { + "assets":"tillgångar", + "contract":"kontrakt", + "transfer":"Överföring av medel", + "excOrders":"Mål C-01 Europeiska gemenskapernas kommission", + "contractOrders":"Tilldelning av kontrakt", + "fundHistory":"Fyll i post", + "security":"Kontots säkerhet", + "invite":"Bjud in vänner", + "login":"Skriv in dig först.", + "tips":"Systemets snabbhet", + "set":"Ange ett lämpligt pris först.", + "a1":"Priset kan inte vara tomt eller noll", + "a2":"Kvantiteten får inte vara tom eller noll", + "a3":"Kvantiteten får inte vara mindre än", + "a4":"Det totala beloppet för inköpta order om marknadspris får inte vara tomt eller noll", + "a5":"Det totala beloppet för inköpta order på marknaden får inte vara mindre än", + "a6":"Den sålda beställningens kvantitet får inte vara tom eller noll.", + "a7":"Antalet sålda order får inte vara mindre än", + "a8":"Det utlösande priset för en order om att stoppa förlusten får inte vara tomt eller noll", + "a9":"Stoppa vinst och stoppa förlust - prisgräns kan inte vara tom eller noll", + "b1":"Stoppa resultatet och stoppa förlusten - liminär ordervolym kan inte vara tom eller noll", + "b2":"Stoppa vinst och stoppa förlust - utlösande pris för marknadsprisorder får inte vara tomt eller noll", + "b3":"Stoppa vinst och stoppa förlust -- det totala belopp som köps till marknadspris kan inte vara tomt eller noll", + "b5":"Stoppa resultatet och stoppa förlusten - Det totala beloppet för köp på marknaden kan inte vara mindre än", + "b6":"Stoppa vinsten och stoppa förlusten -- den kvantitet som säljs till marknadspris får inte vara tom eller noll", + "b7":"Slutförlust - Den kvantitet som säljs till marknadspris får inte vara mindre än", + "b8":"Sidan är urkopplad, uppdatera eller försöka igen senare!", + "c1": "Inköp{amount}Delar{name}Tillgänglig symbol{rate}%Belöning", + "c2": "Verksamhet med prenumeration", + "c3":"Total emission", + "c4":"Total omsättning", + "c5":"Utfärdandepris", + "c6":"Tidpunkt för utfärdande", + "c7":"Adressen till vitpapper", + "c8":"Officiell webbplats", + "c9":"kort inledning" + }, + "common": { + "a3":"Lager om inköp", + "option":"Handel med optioner", + "exchange":"Valutatransaktion", + "markets":"notering", + "blogs":"Blogg", + "news":"Information om industrin", + "helps":"Hjälpcentralen@ info: whatsthis", + "service":"service", + "contactUs":"Kontakta oss", + "sign_in":"Skriv in dig", + "sign_up":"register", + "noRecord":"Ingen registrering", + "getCode":"Hämta verifieringskod", + "help1":"Riktlinjer för valutaavtal", + "help2":"Specifikation av kontraktet", + "optional":"Valfri", + "price":"Pris", + "upAndDown":"Upp och ner", + "heigh":"Högsta pris", + "low":"lägsta pris", + "vol":"volym", + "pair":"Deal för", + "buy":"köpa", + "sell":"Sälj", + "buy-in":"Inköp", + "sell-out":"Sälj ut", + "open-orders":"Nuvarande delegering", + "condition-orders":"Villkorlig tilldelning", + "history-orders":"Uppgifter om delegering", + "limit":"fast pris", + "market":"marknadspris (marknadspris)", + "stop-limit":"Stoppa vinst och stoppa förlust - prisgräns", + "stop-market":"Stoppa resultatstopp –marknadspris –", + "limit-type":"Handel med prisbegränsningar", + "market-type":"Transaktioner på marknaden", + "startTime":"starttid@ info: whatsthis", + "to":"till", + "confirmBtn":"Bekräfta", + "cancelBtn":"Avbryt", + "cancel":"återkalla", + "endTime":"Sluttid@ info: whatsthis", + "export":"Export", + "filter":"Filter", + "all":"obegränsat", + "search":"hämtning", + "reset":"Återställ", + "hideAll":"Dölj alla inställda delegater", + "canceled":"Avbruten", + "waiting":"Ska matchas", + "triggered":"Överdriven", + "processing":"Matchning", + "completed":"Avslutat", + "available_phone":"Ange det korrekta mobiltelefonnumret", + "available_email":"Skriv in rätt e- postadress", + "codeSent":"Kontrollkod skickad", + "captcha":"Fel i verifieringskoden", + "created":"tid", + "order-price":"Kommissionens pris", + "order-amount":"Tillåtna kvantiteter", + "order-total":"Totala ordesbelopp", + "avg-price":"Genomsnittligt pris", + "direction":"riktning", + "order-type":"Typ", + "executed-amount":"Den har matchats.", + "executed-total":"Omsättning", + "outstanding":"Ska matchas", + "status":"tillstånd", + "details":"Uppgifter", + "action":"Drift", + "id":"Ordning nummer", + "filled-price":"Transaktionspris", + "filled-amount":"Antal transaktioner", + "filled-total":"Transaktionsbelopp", + "fee":"Laddning av tjänst", + "enterValid":"Ange ett giltigt mobilnummer eller e- post", + "enterValidEmail":"Skriv in rätt e- postadress", + "enterValidPhone":"Ange ett giltigt mobilnummer", + "enterAccount":"Ange konto", + "enterEmail":"Skriv in rätt e- postadress", + "enterPhone":"Mata in mobilnummer", + "enterPwd":"Ange ett lösenord", + "passwordRegular":"Lösenordet måste bestå av 8–15 siffror och bokstäver (det måste innehålla både siffror och bokstäver, och symboler kan också användas)", + "newPassword":"Ange ett nytt lösenord", + "confirmNewPassword":"Ange det nya lösenordet för bekräftelse", + "enterGoogleCode":"Ange Googles verifikationskod", + "enterEmailCode":"Ange e- postverifikationskod", + "enterSMSCode":"Ange SMS-verifikationskod", + "enterVerCode":"Ange kontrollkoden, tack.", + "exportFile":"Klicka på Ok för att exportera filen", + "submit":"Skicka", + "newzone":"Ny zon", + "college":"college", + "goTo":"Gå till", + "logOut":"Logga ut", + "homepage":"Hemsida@ info: whatsthis", + "application":"Tillämpning av valuta", + "purchase":"Ansökan om köp", + "accountInformation":"Information om konto", + "myWallet":"Min plånbok.", + "commissionOrder":"Kommissionens beslut", + "securitySetting":"Inställning av säkerhet", + "wallet":"plånbok", + "allAssets":"Alla tillgångar", + "contractaccount":"Kontraktskonto", + "transferFunds":"Överföring av medel", + "rechargeWithdraw":"Återdebitering och uttag av medel", + "order":"ordning", + "spotConsignment":"Mål C-01 Europeiska gemenskapernas kommission", + "optionOrders":"Alternativ ordning", + "perpetualContract":"Evigt kontrakt", + "foreignContract":"Kontrakt om utländsk valuta", + "notCertified":"Ej certifierat", + "notData":"Inga data tillgängliga", + "assets":"tillgångar", + "myCommission":"Min hemvändande tjänare.", + "addressManagement":"Hantering av adresser", + "auth":"autentisering av verkligt namn", + "invitationReward":"Inbjuda belöningar", + "visitHistory":"Uppgifter om tillträde", + "noviceTutorial":"Ny kurs", + "tradingStrategy":"Strategi för handel", + "industryResearch":"Forskning inom industrin", + "blockchainDictionary":"Blockkedjehörordbok", + "mediaCoverage":"mediernas täckning", + "selectFile":"Välj fil", + "upload":"uppladdning", + "delete":"ta bort", + "tooBig":"Filstorleken är för stor och kan inte överstiga", + "errorType":"Fel i filtyp", + "resend":"Återställ", + "sms":"kort meddelande", + "email":"brevlåda", + "sendSuccess":"Verifikationskod skickad med lyckat resultat", + "retransmission":"återutsändning", + "start-trade":"Starta den digitala valutans resa", + "login":"Skriv in dig", + "register":"register", + "trading":"För handel", + "dark":"svart", + "light":"vitt", + "notMore":"Inte mer.", + "allRead":"Alla lästa", + "newMessage":"Nya nyheter", + "footerTips1":"Riskinvesteringar på marknaden bör vara försiktiga", + "footerTips2":"Rättslig underrättelse: Webbplatsen drivs av {namn} företag", + "footerTips3":"Risktips: Digital tillgångshandel kan leda till förlust av kapital, se till att du fullt ut förstår riskerna.", + "footerTips4":"Begränsade områden: kan inte tillhandahålla tjänster till invånare i särskilda länder/regioner, såsom Israel och Islamiska republiken Kina" + }, + "exchange": { + "search":"sök", + "pair":"Deal för", + "last-price":"Senaste pris", + "change":"Upp och ner", + "order-book":"Ordning", + "price":"Pris", + "amount":"nummer", + "total":"bruttovärde", + "recent-trades":"Senaste affär", + "time":"tid", + "order-total":"Totalt kommissionsvärde", + "balance":"Tillgängligt saldo", + "enter-price":"Skriv in priset.", + "enter-amount":"Ange mängd", + "enter-total":"Ange det totala priset", + "at-best-price":"Nära till bästa marknadspris", + "trigger-price":"Ange utlösande pris", + "min":"minut", + "hour":"timme", + "day":"dag", + "week":"vecka", + "month":"månad" + }, + "login": { + "resend":"Återställ", + "sms":"kort meddelande", + "sendOK":"Verifikationskod skickad med lyckat resultat!", + "enterPhoneEmail":"Ange e- postnummer", + "effectivePhoneEmail":"Ange en giltig mobiltelefon eller e- post", + "enterPasswrod":"Ange {num} bits lösenord", + "passwordLength":"Lösenordlängden är {num} bitar. Den innehåller alfanumeriskt lösenord", + "safe":"Kontroll av säkerhet", + "googleVer":"Skriv in {num} siffran Google verifikationskod på din mobila app", + "phoneCode":"Skriv in den {num} sifferverifikationskod som skickas till ditt mobilnummer", + "emailCode":"Skriv in {num} bitverifikationskoden som skickas till din e- post", + "google-code":"Google captcha", + "email-code":"Kod för e-post-kontroll", + "sms-code":"Kod för mobiltelefonkontroll", + "new-password":"Nytt lösenord", + "confirm-password":"Bekräfta lösenord", + "forgetPassword":"Glöm lösenordet.", + "rememberMe":"Kom ihåg mig.", + "noAccountYet":"Inget konto ännu", + "goRegister":"register", + "safety":"Kontroll av säkerhet", + "regAccount":"Registrerat kontonummer", + "email":"brevlåda", + "phone":"mobil telefon", + "pleaseEmail":"Ange e- postadress", + "invalidEmail":"Ogiltig e- postadress", + "enterMobile":"Mata in mobilnummer", + "invalidPhone":"Ogiltigt mobilnummer", + "enterLengthPassword":"Skriv in ett lösenord från {num1} till {num2} bitar i längd", + "hasNumEn":"Lösenordet kräver en kombination av {num} bokstäver och nummer", + "iSee":"Jag håller med.", + "terms":"Villkor och villkor", + "reg":"register", + "enterEmailCode":"Skriv in {num} bitverifikationskoden som skickats till din e- post ({e- post})", + "accountActivated":"För att aktivera kontot", + "backOld":"Tillbaka till föregående steg", + "verCode":"Kontrollkod", + "notEmail":"Om du inte får ditt e-postmeddelande, försök med följande kontroll", + "confirmEmail":"Försäkra dig om att e- postadressen du skrev in är korrekt", + "confing":"Kontrollera din skräppost- katalog", + "checkTrashCan":"Försäkra dig om att din e- post är ansluten till ett stabilt Internet", + "enterPhone1":"Ange numret som ska skickas till din mobiltelefon", + "enterPhone2":"The {num} bit captcha of", + "smsNotReceived":"Om du inte får SMS, försök med följande kontroll", + "phoneCorrect":"Försäkra dig om att det mobilnummer och områdesnummer du angav är korrekt", + "securePhone":"Se till att din mobilsignal är stabil.", + "hasAccount":"Det finns redan ett konto", + "toLogin":"Gå till inloggning", + "securityVerification":"Kontroll av säkerhet", + "disagree":"Du har inte gåt t med på villkoren än.", + "registrationSuccess":"Lyckligt registrerad, hoppa över till inloggningssida", + "referrer":"Referenser", + "optional":"Valfri", + "password":"lösenord", + "login":"Skriv in dig", + "country":"Områdets kod", + "enter-account":"Ange kontots nummer", + "sign-in":"Skriv in dig", + "find-password":"Hitta lösenordet", + "submit":"Skicka", + "confirmpassword":"De två lösenorden är inkonsekventa." + }, + "application": { + "form":"Formulär för ansökan om projektvaluta", + "sendUser":"Projektsponsor", + "sendUserEn":"Svenskt namn på valuta", + "sendUserCn":"Kinesiskt namn på valuta", + "contactPosition":"Kontaktperson och befattning", + "phone":"Kontaktnummer", + "tokenPrice":"marknadspris (marknadspris)", + "email":"Kontakt e- post", + "address":"Registreringsplats för projekt", + "mechanism":"Projektets investeringsorganisation", + "personal":"personligt", + "currencyCode":"Kod för valuta", + "symbol":"Symbol", + "currencyIdentification":"Identifiering av valuta", + "format":"Stöd {namn} format, fil mindre än {num}", + "fundraisingDate":"Datum för finansiering", + "officialWebsite":"Officiell webbplats", + "whitePaperLinks":"Länk för vitt papper", + "noLink":"Om det inte finns någon länk, ladda upp bilagan i slutet av artikeln", + "total_issue":"Summa valutaemissioner", + "currencyCirculation":"Växling i valuta", + "currencyAllocationRatio":"Förhållande mellan valutafördelning", + "numberOfCurrencyHolders":"Antal valutainnehavare", + "tradingPlatform":"Internethandelsplattform", + "privatePlacement":"Privat placering", + "publicOfferingPrice":"Pris för offentlig upphandling", + "company":"Bifoga valutaenheten till", + "coinType":"Typ av nätverk för valutablock", + "currencyIssueDate":"Datum för utgivning av valuta", + "blockBrowser":"Blockerad webbläsare", + "officialAddress":"Officiell plånbok", + "contractAddress":"Avtalets adress", + "link":"länk", + "budget":"Budget för valutaavgifter", + "unit":"Enhet", + "ofTokens":"Antal polletter för marknadsverksamhet efter lastning", + "chineseCurrency":"Valutaintroduktion på kinesiska", + "enCurrency":"Valuta introduktion på engelska", + "remarks":"Anmärkningar", + "uploadWhitePaper":"Ladda upp vitbok", + "pleaseUpload":"Var snäll och ladda upp det vita pappret", + "recommendationCode":"Namn på rekommendation, organisations- och rekommendationskod", + "ifSo":"I så fall", + "affirmsThat":"Uttalande: Jag bekräftar härmed att all ovanstående information är sann, fullständig och korrekt.Jag kommer att vara ansvarig för att lämna falsk information ekonomiskt och lagligt.", + "iKnow":"Jag har den!", + "reSubmit":"Återlämna in", + "pleaseConfirm":"Bekräfta att ovanstående information är sann", + "pleaseEnter":"Mata in", + "upLoadSuccess":"Uppladdning lyckades" + }, + "wallet": { + "inside":"Överföring av interna medel", + "from":"från", + "history":"Visa historik", + "balance":"balans", + "transferQuantity":"Överförd kvantitet", + "capitalAccount":"Eget kapital", + "contract":"kontrakt", + "financial":"Finansiell redovisning", + "leverage":"Konto för hävstång", + "successful":"Framgångsrik överföring", + "confirm":"Bekräfta överföring", + "pleaseSelect":"Välj valuta", + "to":"till", + "assets":"tillgångar", + "strokes":"Ange överföringskvantitet", + "addressManagement1":"Hantering av adresser", + "addAddress":"Lägg till adress", + "filter":"Filter", + "search":"sök", + "selectActiveArea":"Välj aktivt område", + "areaOne":"Region ett", + "areaTwo":"Region 2", + "addressAssets":"Adresslista@ info: whatsthis", + "addressNum":"Antal adresser", + "fee1":"Laddning av tjänst", + "creationTime":"Skapa tid", + "detailAddress":"Detaljerad adress", + "remarks1":"Anmärkningar", + "operating":"Drift", + "complete":"Fullständigt", + "copy":"kopia", + "editAddress":"Redigera adress", + "deleteAddress":"Ta bort adress", + "next":"föregående sida", + "pre":"Nästa sida", + "add":"Lägg till", + "edit":"redigera", + "address":"adress", + "selectAssets":"Välj tillgång", + "drawAddress":"Adressen till återkallandet", + "addressRemarks":"Anmärkningar till adressen", + "remarksDelete":"Är du säker på att du vill ta bort den här adressen", + "optionSuccess":"Operation lyckades", + "allAssets":"Värde på alla tillgångar", + "showNum":"Visa antal", + "contractAccount":"Kontraktskonto", + "marginAccount":"Konto för hävstång", + "financialAccount":"Finansiell redovisning", + "spotAccount":"Spot- konto", + "hide":"gömma", + "balanceAssets":"Balanstillgångar", + "searchCurrency":"Valuta för sökning", + "addressManagement":"Hantering av återtagandeadress", + "totalAssets":"Summa tillgångar", + "availableBalance":"Tillgängligt saldo", + "fee":"Fryst saldo", + "valuation":"Värdering", + "recharge":"Återladdning", + "withdrawal":"Dra tillbaka pengar", + "transaction":"transaktion", + "rechargeAddress":"Adressen till påfyllning", + "rechargeQuantity":"Kvantitet för påfyllning", + "enterQuantity":"Ange mängd", + "rechargeInstructions":"Anvisningar för påfyllning", + "automaticallyCredited":"Den här adressen är din senaste uppladdningsadress. När systemet tar emot uppladdningen, registreras den automatiskt.", + "tran":"Överföringen måste bekräftas av hela blockeringsnätet. När du kommer till {num} nätverksbekräftelse, läggs ditt {name} automatiskt ner på kontot.", + "only":"Skicka bara {name} till den här adressen. Att skicka annan digital valuta till den här adressen orsakar permanent förlust", + "low":"Lägst", + "addressList":"Adresslista@ info: whatsthis", + "enterDrawAddress":"Skriv in återkallandeadressen", + "invalidWallet":"Ingen giltig plånboksadress, vänligen returnera", + "withdrawalsNumber":"Kvantitet återtag", + "enterDrawNum":"Ange den återtagna kvantiteten", + "withdrawalInstructions":"Anmärkningar om återkallande", + "enterAddress":"Kontrollera noggrant och skriv in rätt adress för plånboken", + "notSend":"Att skicka icke avstämd digital valuta till plånboksadressen kommer att orsaka permanent förlust", + "deductionFee":"Avgiften för hantering dras av från det belopp som dragits tillbaka", + "submitSuccess":"Inlämnat med lyckat resultat, under översyn", + "operationComplete":"Återkallande slutförd, i väntan på godkännande", + "rechargeRecord":"Bokföring av påfyllning", + "withdrawalRecord":"Registrering om återkallelse", + "assetsName":"Ange namnet på tillgången", + "selectStatus":"Välj status", + "startTime":"Startdatum@ info: whatsthis", + "entTIme":"Slutdatum@ info: whatsthis", + "date":"datum", + "hash":"Hasch", + "num":"nummer", + "progress":"hastighet för framsteg", + "status":"tillstånd", + "error":"misslyckas", + "success":"framgång", + "underReview":"Under översyn", + "handlingFee1":"Laddning av tjänst", + "processing":"Under översyn", + "transfer":"Överföring av medel", + "transferDescription":"Beskrivning av överföringen av medel", + "handlingFee":"Observera att den interna överföringen av medel är automatisk och kostnadsfri", + "onlyForeignExchange":"Endast {namn} kan överföras till ditt valutakonto", + "onlySustainable":"Endast {namn} kan överföras till ditt perpetual kontraktskonto", + "inCase1":"Om du vill byta valutakontrakt måste du överföra {namn} till valutakontraktskontot som marginal", + "inCase2":"Om du vill byta ett permanent kontrakt, måste du överföra {namn} till det eviga kontraktskontot som marginal", + "transferRecord":"Registret för överföring", + "allTransfer":"Alla uppgifter om överföring av tillgångar", + "direction":"riktning", + "all":"hela", + "dateTime":"tid", + "UserWallet":"Tillgångskonto", + "ContractAccount":"Kontraktskonto", + "LeverageAccount":"Konto för hävstång", + "FinancialAccount":"Finansiell redovisning", + "contractFlow":"Avtalets flöde", + "info":"Uppgifter", + "money":"summa pengar" + }, + "contact": { + "contact":"Kontakta oss", + "help":"Om du behöver hjälp, kontakta oss.", + "fullName":"Fullständigt namn", + "enterFullName":"Ange fullständigt namn", + "email":"brevlåda", + "enterEmail":"Ange e- postadress", + "consultingService":"Konsulterande projekt", + "pleseSelect":"Välj", + "info":"information", + "enterInfo":"Skriv in informationen", + "contactInformation":"Information om kontakt", + "routineConsultation":"Rutinmässigt samråd", + "customerService":"kundtjänst (kundtjänst)", + "mediaCooperation":"Samarbete med media", + "submit":"Skicka" + }, + "college": { + "college":"college", + "article":"Blogg", + "tutorialDetails":"Information om handledning", + "howToBuyBitcoin":"Hur man köper bitcoin", + "recommendedCourse":"Rekommenderad handledning", + "buy":"Köp ett bitcoin om en minut", + "register":"register", + "visit":"Besök webbplatsen {namn} och registrera ditt konto {namn} Name", + "realName":"autentisering av verkligt namn", + "upload":"Ladda upp giltiga certifikat för behörighetskontroll av personligt riktiga namn", + "quickBuy":"Inköp och betalning med ett klick", + "inIndex":"Ett klick för att köpa pengar på hemsidan / köpa pengar, och vänta på att pengarna ska släppas efter betalning", + "tradeNow":"Jag ska byta nu.", + "currencyTransaction":"Andra förstående valutatransaktion", + "contractEntryTransaction":"Transaktioner för kontraktsinträde", + "how":"Hur man byter alternativ", + "TradingStrategy":"Strategi för handel", + "seeMore":"Se mer", + "industryResearch":"Forskning inom industrin", + "oneClick":"Ett klick på intelligent transaktion", + "inAssets":"På tillgångssidan / valutafyllning kan du trycka på en knapp för att ladda valuta, och sedan kan du handla", + "dictionary":"Blockkedjehörordbok", + "media":"mediernas täckning" + }, + "home": { + "newEra":"Världens ledande digitala finansiella derivatutbyte", + "startTrading":"Starta handeln", + "walkingLantern":"Vandrande lykta", + "marketCenter":"Marknaden för handel", + "optional":"Valfri", + "latestPrice":"Pris", + "upAndDown":"Upp och ner", + "heigh":"Högsta pris", + "low":"lägsta pris", + "vol":"Handelsvolym", + "coinType":"Deal för", + "more":"Se mer >", + "multiPlatform":"Ladda ner flera plattformar", + "atTime":"när och när så är möjligt", + "multiTerminal":"Terminaltransaktion med flera plattformar", + "cover":"täckning", + "multiTerminal1":"Flera plattformar", + "support":"Fullständigt servicestöd", + "down":"nerladdning", + "news":"Marknadstrender", + "detail":"Visa detaljinformation", + "quickly":"Sätt igång fort.", + "major":"Vi tillhandahåller professionella tjänster för investerare", + "safe":"Säker handel", + "login":"Skriv in dig", + "reg":"register", + "trading":"För handel", + "add":"Bifogat med lyckat resultat", + "cancel":"Avbryt med lyckat resultat", + "features":"Huvudsaklig fördel", + "partners":"Investeringsinstitut och partner", + "perpetual_title":"Kontinuerlig valutaöverenskommelse", + "perpetual_cont":"I egenskap av världens första avtal om permanent valutaväxling som har reglerats med stabil valuta med den högsta hävstångseffekten på 100-talet, är AMATAK:s valutaavtal ett kostnadseffektivt val för snabb valutahandel.", + "stablecoin_title":"Världens första stabila valutacentrum", + "stablecoin_cont":"AMATAK har byggt upp en stark stabil valutamiljö, en fullständig ram som består av stabila valutatransaktioner, betalningar och penningförsändelser, och har blivit en del av den global a stabila valutaklubben av hög kvalitet!", + "security_title":"Fullständig säkerhet", + "security_cont":"AMATAK antar det mest avancerade huvudbokshuset för att skydda den digitala valutans slutmål. Konturvalvet ger upp till US $150 miljoner försäkringar för tredjepartsstöld, insiderhandel och huvudstöld av frön.Mer än 98% av de digitala valutor som finns lagrade i AMATAK lagras i en frysplånbok med flera signaturer, och den högsta normala marknadsriskkontrollen tillämpas för att garantera alla användares kapitalsäkerhet.", + "service_title":"24/ 7 flerspråkig kundtjänst i realtid", + "service_cont":"AMATAK:s kundtjänst 24/ 7 är när som helst i tjänst, och gör sitt bästa för att hjälpa användare genom chatt i realtid eller e- post tillsupport@AMATAK.comKontakta kundtjänsten.", + "analy_title":"Avancerade analysverktyg", + "analy_cont":"Aktörerna kan använda olika diagramverktyg och indikatorer baserade på stabila data för att hjälpa handeln på handelsplatsen.", + "liquidity_title":"Utmärkt likviditet", + "liquidity_cont":"24 / 7 är när som helst anslutet till den höga likviditeten hos AMATAK:s handelsplattform.", + "technology_title":"Självutvecklad teknik", + "technology_cont":"AMATAK:s handelsplattform bygger på beprövad teknik och bygger av experter inom industrin för att optimera plattformens funktioner i största möjliga utsträckning.", + "download":"Ladda ner mobilterminal för AMATAK", + "easy":"Öppen palmhandel när som helst, var som helst.", + "skan":"Skanna kod och ladda ner nu", + "core_advantages":"Min styrka är data." + }, + "option": { + "waitFor":"Väntar på leverans", + "history":"Historisk leverans", + "orderNum":"ordningsnummer@ info: whatsthis", + "option":"alternativ", + "buyTime":"Tid för köp", + "buyAmount":"Inköpskvantitet", + "buyType":"Typ av köp", + "yield":"Räntesats i", + "state":"tillstånd", + "deliverytime":"Leverans tid", + "countDown":"Nedräkning för leverans", + "buyingUp":"Köp upp", + "buyDwon":"Köp ner", + "buyEven":"Köp jämnt", + "result":"Avslutande resultat", + "settlementQuantity":"Kvantitet av avräkning", + "up":"uppgång", + "down":"Fall", + "flat":"platt", + "buyOption":"Köp option", + "deliveryRecord":"Rapport om leverans", + "current":"aktuell", + "next":"Nästa nummer", + "enterNum":"Ange mängd", + "balance":"balans", + "expectedRevenue":"Förväntade inkomster", + "seeMore":"Se mer", + "beBearish":"vara björn", + "time":"tid", + "zf":"Upp", + "bullish":"Bullisk", + "lookAtPing":"Se platt", + "bearish":"Björn", + "amount":"nummer", + "coinType":"valuta", + "odds":"Oddsen", + "buySuccess":"Framgångsrik köp" + }, + "order": { + "noData":"Ingen transaktionsregistrering", + "ifCancel":"Avbryt nuvarande ordning", + "cancelSuccess":"Lyckligt inställd", + "marketPrice":"Transaktioner på marknaden", + "fixedPrice":"Handel med prisbegränsningar", + "sell":"Sälj ut", + "buy":"Inköp", + "exchangeRecord":"Uppgifter om transaktioner", + "see":"se", + "opt":"Drift", + "status":"tillstånd", + "time":"tid", + "tradingPair":"Deal för", + "direction":"riktning", + "type":"Typ", + "averagePrice":"Genomsnittligt pris", + "price":"Pris", + "matched":"Den har matchats.", + "totalAmountEntrusted":"Totalt anförtrott belopp", + "total":"Totalt", + "toMatch":"Omatchad", + "operation":"Drift", + "reset":"Återställ", + "search":"sök", + "to":"till", + "startTime":"Startdatum@ info: whatsthis", + "endTime":"Slutdatum@ info: whatsthis", + "select":"Välj", + "entrustType":"Typ av delegation", + "spotConsignment":"Mål C-01 Europeiska gemenskapernas kommission", + "surrentCommission":"Nuvarande delegering", + "commissionRecord":"Uppgifter om delegering", + "optionTransaction":"Handel med optioner", + "orderNum":"ordningsnummer@ info: whatsthis", + "timeSharing":"Tidsfördelning", + "yield":"Räntesats i", + "buyNum":"Inköpskvantitet", + "upAndDown":"Upp och ner", + "settlementQuantity":"Kvantitet av avräkning", + "transactionPrice":"Transaktionspris", + "tradingVolume":"Handelsvolym", + "aTurnover":"en omsättning", + "serviceCharge":"Laddning av tjänst", + "cancel":"återkalla", + "buyTime":"Inköpstid", + "buyUp":"Köp upp", + "buyDown":"Köp ner", + "buyLevel":"Köp jämnt " + }, + "profile": { + "realName":"autentisering av verkligt namn", + "primaryCertification":"Primär certifiering", + "advancedCertification":"Framställd certifieringsansökan", + "toExamine":"att undersöka", + "fullName":"Fullständigt namn", + "legal":"lagligt", + "pleaseEnterName":"Ange ditt namn", + "dateOfBirth":"födelsedatum@ info: whatsthis", + "selectDate":"Välj ett datum", + "documentType":"Typ av dokument", + "pelaseSelect":"Välj", + "certificateNumber":"Intygets nummer", + "endterIDNumber":"Ange identifikationsnummer", + "addressInfo":"Information om adress", + "residentialAddress":"Bostadens adress", + "residentialAddress1":"Ange din adress", + "ciy":"Ort", + "incity":"Stig in i er stad.", + "postalCode":"Postnummer", + "thePostcode":"Var snäll och skriv in postkoden", + "additionalInformation":"Ytterligare information", + "optional":"Valfri", + "contactInformation":"Information om kontakt", + "phoneNumber":"Telefonnummer@ info: whatsthis", + "enterPhoneNumber":"Mata in mobilnummer", + "clickUpload1":"När du klickar på uppladdningsfil och skickar in behörighetskontroll, har du läst och gått med på våra villkor för tjänst och privatliv", + "pelaseDownload":"Välj en kopia som inte har besvarats i följande dokument:", + "passport":"pass", + "drivingLicense":"körkort", + "iD":"ID", + "upload":"Ladda upp", + "explain":"förklara", + "unexpired":"Obearbetade dokument kan vara bilder eller skannade kopior", + "pleaseConfirm":"Se till att alla detaljer på fotot är klara och inte täckta", + "fileFormat":"filformat@ info: whatsthis", + "maximumFileSize":"Maximal filstorlek", + "positive":"Front of certificate", + "theOtherSide":"Den omvända sidan av intyget", + "hold":"Innehav av certifikat", + "dragHere":"Dra hit, eller", + "clickUpload":"Klicka på uppladdning", + "uploadPhoto":"Var snäll och ladda upp det främre fotot på ditt ID-kort", + "reversePhoto":"Vänligen ladda upp fotot på baksidan av certifikatet", + "uploadIDCard":"Var snäll och ladda upp ditt handhållna ID-foto", + "nextStep":"nästa steg", + "inSubmit":"Din ansökan om kontroll har lämnats in!Vi informerar er så snart vi får resultatet.", + "gotIt":"Jag har den.", + "congratulations":"Gratulerar.", + "back":"retur", + "resetApply":"Återanvänd", + "recertification":"Motcertifiering", + "userInfo":"Information om konto", + "verState":"Valideringsstatus", + "max":"högst", + "limitH":"Tidsgräns för indragning", + "verLeave":"Nivå för behörighetskontroll", + "exceed":"överstiger", + "contactUs":"Kontakta oss", + "inviteFriends":"Bjud in vänner", + "dividends":"Bjud in vänner att använda {namn}, och få {num} av vänners framtida transaktionsavgifter som bonus.", + "sendInvitation":"Skicka inbjudan", + "resetPassword":"lösenord för återställning", + "forLoginAccount":"För inloggningskonto", + "clickReset":"Klicka på Återställ", + "registrationDecord":"Logga in registrering", + "recording":"Används för att visa detaljerad logg i historik", + "recordingDEtail":"Detaljerade uppgifter", + "invitationReward":"Inbjuda belöningar", + "inviteUse":"Bjud in vänner att använda", + "futureCommission":"Hämta {num} av vänners framtida transaktionsavgift som bonus", + "joinThePlan":"Anslut dig till {namn} bonus plan för användarinbjudan", + "checkMyDividend":"Kolla in mina utdelningar.", + "step1":"Första steget", + "shareLink":"Dela länkar", + "step2":"Steg två", + "shareFriend":"Bjud in vänner", + "step3":"Det tredje steget", + "instantDividend":"Njut av utdelning", + "invitationInformation":"Information om inbjudan", + "invitationLink":"Koppling till inbjudan", + "invitationCode":"Kod för inbjudan", + "registeredUser":"Registrerade användare", + "accountNumber":"Kontots nummer", + "registrationTime":"Tidpunkt för registrering", + "activityTerms":"Aktivitetstermer", + "handlingFeeDividend":"Kommissionens utdelning", + "equalInvitee":"Det är som att bli inbjuden.", + "fee":"Avgifter för transaktionshantering", + "afterThat":"Efter att ha blivit inbjuden till handel", + "follow":"Överföring till gästens konto inom några minuter", + "limit":"Verksamheten följer följande start- och slutdatum och är endast tillgänglig för giltiga konton efter start och före verksamhetens slut.", + "activityStartTime":"Starttid för aktivitet", + "Y":"år", + "M":"månad", + "D":"dag", + "endTime":"Tid vid verksamhetsslut", + "proceed":"På väg", + "atAnyTime":"Vi förbehåller oss rätten att ändra, tillfälligt avbryta eller avsluta programmet {namn} för inbjudan till användare när som helst utan förvarning", + "reservedRights":"Reservera rätten att inte betala utdelning för duplicerade konton eller falska konton", + "canDecide":"Du kan acceptera eller förkasta specifika användare som införs eller inbjuds till {namn} plattform {länk}", + "bill":"Uppgifter om tillträde", + "date":"datum", + "address":"Plats", + "equipment":"Utrustning", + "preliminary":"Preliminär certifiering lyckades", + "clickToVerify":"Klicka för att kontrollera" + }, + "setting": { + "smsVer":"Kontroll av SMS", + "enterCode":"Ange kontrollkoden, tack.", + "emailVer":"Kontroll av e-post", + "enterEmailVer":"Ange e- postverifikationskod", + "ver":"Kontroll", + "enterNameCode":"Ange {namn} verifieringskod", + "openSuccess":"Öppna med lyckat resultat", + "closeSuccess":"Stängt med lyckat resultat", + "email":"brevlåda", + "enterEmail":"Mata in e- post", + "emailVerCode":"Kod för e-post-kontroll", + "enterSmsCode":"Ange SMS-verifikationskod", + "bind":"bindemedel", + "unbind":"Åtskillnad", + "bindSuccess":"Bindningen lyckades", + "unbindSuccess":"Avvecklingen lyckades", + "scanQrCode":"Läs igenom QR- koden.", + "howToOpen":"Lär dig att slå på {namn} sekundär verifiering", + "read":"Klicka här för att läsa installationsinformationen", + "verKey":"Kontrollera nyckel", + "safeSetting":"Inställning av säkerhet", + "loginPassword":"Logga in lösenord", + "resLoginPassword":"Återställ inloggninglösenord", + "transactionPassword":"Transaktionskod", + "usedFor":"Används för att lämna kontrakt och punktbeställningar", + "notOpen":"Inte öppen", + "modifyPassword":"Ändra lösenord", + "setPassword":"Ange lösenord", + "verCode":"Kontrollkod", + "forLogin":"Används för inloggning, valutauttag och ändringar av säkerhetssinställningarna", + "alLast":"Aktivera minst ett behörighetsläge", + "close":"Stäng", + "open":"öppen", + "phone":"Telefonnummer@ info: whatsthis", + "area":"Ange områdets kod, tack.", + "enterPhone":"Mata in mobilnummer", + "newPassword":"Nytt lösenord", + "passwordIs":"Transaktionslösenordet är {num} siffror", + "enterNewPassword":"Ange ett nytt lösenord", + "confirmPassword":"Bekräfta lösenord", + "pleaseConfirmPassword":"Bekräfta lösenordet, tack.", + "operationSuccess":"Operation lyckades", + "combination":"Lösenord kräver en kombination av bokstäver och nummer", + "changeSuccess":"Ändrad med lyckat resultat" + }, + "purchase": { + "sendPrice":"Utfärdandepris", + "subscriptionCurrency":"Valuta för prenumeration", + "expected":"Förväntad online-tid", + "startTime":"Starttid för prenumeration", + "applyForPurchase":"Avslutande tid", + "enterNum":"Ange mängd", + "all":"Alla", + "subscribeNow":"Verkställ omedelbart", + "subscriptionCycle":"cykel för prenumeration", + "projectWarmUp":"Projekt uppvärmning", + "startSubscription":"Starta abonnemang", + "endOfSubscription":"Stäng abonnemang", + "announceResults":"Publicera resultat", + "projectCetails":"Uppgifter om projektet", + "useOrNot":"Används eller ej", + "subscribe":"Ansökan om köp", + "prompt":"Tips", + "subscribeSuccess":"Framgångsrik köp" + }, + "contract": { + "a0":"Kontraktskonto", + "a1":"Överföring av medel", + "a2":"Eget kapital", + "a3":"tillgängligt", + "a4":"Marginal för position", + "a5":"Kommissionens frysning", + "a6":"Orealiserade resultat", + "a7":"Risknivå", + "a8":"Beräknad stark paritet", + "a9":"kontrakt", + "b0":"spak", + "b1":"tid", + "b2":"Typ av transaktion", + "b3":"Avslutat", + "b4":"Totalt anförtrott belopp", + "b5":"Genomsnittligt transaktionspris", + "b6":"Kommissionens pris", + "b7":"obligation", + "b8":"Laddning av tjänst", + "b9":"tillstånd", + "c0":"Drift", + "c1":"avbeställ ordern", + "c2":"återkalla", + "c3":"Avbryt nuvarande ordning", + "c4":"Avbryt", + "c5":"bestämma", + "c6":"återkallad", + "c7":"Obehandlad", + "c8":"Partiell transaktion", + "c9":"Alla stängda", + "d0":"Köp Kaiduo", + "d1":"Köp platt", + "d2":"Sälj kort", + "d3":"Försäljning av pingduo", + "d4":"Lyckligt inställd", + "d5":"öppna en Granar för att tillhandahålla lättnader", + "d6":"Stäng en position", + "d7":"Tröskelvärde", + "d8":"Pris", + "d9":"marknadspris (marknadspris)", + "e0":"fast pris", + "e1":"nummer", + "e2":"Zhang.", + "e3":"Nödvändig marginal", + "e4":"Multipla position", + "e5":"Kort position", + "e6":"Bullisk", + "e7":"Öppen", + "e8":"Björn", + "e9":"KeppningName", + "f0":"Priset för", + "f1":"Kaiduo", + "f2":"Öppen luft", + "f3":"Är det baserat på", + "f4":"Dubbel hävstångseffekt", + "f5":"Framgångsrik kommission", + "f6":"Framgångsrik avslutning", + "f7":"Handikap", + "f8":"Transaktioner i realtid", + "f9":"hela", + "g0":"köpa", + "g1":"Sälj", + "g2":"Kumulativ", + "g3":"Senaste pris", + "g4":"Uppgifter", + "g5":"Historia", + "g6":"Transaktionstid", + "g7":"Position", + "g8":"Lika stor kvantitet", + "g9":"Genomsnittligt öppningspris", + "h0":"Räntesats i", + "h1":"Stängning av marknaden", + "h2":"Är det ens till marknadspris?", + "h3":"Helt platt", + "h4":"framgång", + "h5":"Deal för", + "h6":"Upp och ner", + "h7":"Högsta pris", + "h8":"lägsta pris", + "h9":"volym", + "i0":"Position som innehas", + "i1":"Nuvarande delegering", + "i2":"Historisk kommission", + "i3":"riktning", + "i4":"många", + "i5":"tomt", + "i6":"Visa bara aktuell", + "i7":"Stoppa vinsten", + "i8":"Stoppa förlust", + "i9":"Stoppa vinsten och stoppa förlusten", + "j0":"Resultat och förluster", + "j1":"Senaste transaktionspris", + "j2":"Genomsnittligt öppningspris", + "j3":"Sluta tjäna trigger price", + "j4":"Stoppa förlust utlösande pris", + "j5":"Marknadspris till", + "j6":"När transaktionen är slutförd kommer resultatet att uppskattas.", + "j7":"Stop-förlust Kommissionen kommer att utlösas när transaktionen är slutförd och resultatet förväntas efter transaktionen", + "j8":"Öppna ett ständigt kontrakt", + "j9":"Framgångsrik öppning", + "k0":"Ställ in med lyckat resultat", + "k1":"Avveckling av resultat", + "k2":"Ett klick platt", + "k3":"Ett klick bakåt", + "k4":"Är allt platt?", + "k5":"En nyckel baklänges", + "k6":"Alla lika, framgång", + "k7":"Omvänd framgång", + "k8":"Logga in först för att tillämpa ", + "k9":"Skriv in prenumerationskoden " + }, + "otc": { + "a0":"Välj transaktionstyp", + "a1":"Inköp", + "a2":"Sälj ut", + "a3":"Transaktionsvaluta", + "a4":"Välj valuta", + "a5":"nummer", + "a6":"Ange mängd", + "a7":"Pris", + "a8":"Skriv in priset.", + "a9":"Minsta transaktion", + "b0":"Högsta enskilda transaktion", + "b1":"Alipay", + "b2":"WechatGenericName", + "b3":"bankkort@ info: whatsthis", + "b4":"Anmärkningar", + "b5":"Skriv in dina kommentarer", + "b6":"Framgångsrik publicering", + "b7":"Inköp", + "b8":"Sälj", + "b9":"återkallad", + "c0":"I handeln", + "c1":"Avslutat", + "c2":"Reklamnummer", + "c3":"tillstånd", + "c4":"Totalt pris", + "c5":"Pris per enhet", + "c6":"överskott", + "c7":"Tid för frisläppande", + "c8":"Betalningsmetod", + "c9":"Drift", + "d0":"Från hyllan", + "d1":"Är den nuvarande annonsen borttagen", + "d2":"påminnelse", + "d3":"Lyckligt inställd", + "d4":"Uppgifter om ordningen", + "d5":"ordningsnummer@ info: whatsthis", + "d6":"betalning", + "d7":"Fullständigt namn", + "d8":"Kontots nummer", + "d9":"Banken för insättning", + "e0":"Filial som öppnar konto", + "e1":"Återstående tid", + "e2":"filial", + "e3":"andra", + "e4":"Betalningsintyg", + "e5":"Ladda upp samling QR- kod", + "e6":"Vänligen ladda upp betalningskupongen", + "e7":"Väntar på att köpare ska ladda upp", + "e8":"annullering av order", + "e9":"bekräfta betalningen", + "f0":"Ej mottaget", + "f1":"Bekräfta mottagandet", + "f2":"Avbryt nuvarande ordning", + "f3":"bestämma", + "f4":"Avbryt", + "f5":"Ordning avbruten", + "f6":"Bekräfta löpande betalning", + "f7":"Operation lyckades", + "f8":"Efter det att insamlingen har bekräftats kommer tillgångarna att säljas och överföras automatiskt.", + "f9":"Efter att ha bekräftat att betalningen inte har mottagits kommer beslutet automatiskt att inleda överklagandet", + "g0":"Reklam", + "g1":"användare", + "g2":"Totalt", + "g3":"Gräns", + "g4":"Betalningsmetod", + "g5":"Totalt", + "g6":"Kontroll av framgång", + "g7":"Försäljningsordning", + "g8":"Inköpsorder", + "g9":"Inköp av reklam", + "h0":"Försäljningsorder för annonsering", + "h1":"hela", + "h2":"Avslutat", + "h3":"Ska betalas", + "h4":"Ska bekräftas", + "h5":"I klagomål", + "h6":"Antal transaktioner", + "h7":"Handelspartner", + "h8":"tid", + "h9":"Uppgifter", + "i0":"Ange kontots nummer", + "i1":"Ange ditt namn", + "i2":"Samling QR- kod", + "i3":"Bevarande", + "i4":"Bankens namn", + "i5":"Ange namn på banken", + "i6":"Ange filialen för att öppna konto", + "i7":"Bankkortsnummer@ info: whatsthis", + "i8":"Mata in bankkortsnummer", + "i9":"Redigerad med lyckat resultat", + "j0":"Bifogat med lyckat resultat", + "j1":"Konto för laglig valuta", + "j2":"tillgångar", + "j3":"Tillgängligt saldo", + "j4":"Fryst saldo", + "j5":"Transaktioner i laglig valuta", + "j6":"Min annons", + "j7":"Min order.", + "j8":"reklam ", + "j9":"Ett klick inköp", + "k0":"Ett klick försäljning", + "k1":"Inköpsbelopp", + "k2":"Inköpskvantitet", + "k3":"Försäljningens belopp", + "k4":"Såld kvantitet", + "k5":"Skriv in inköpsbeloppet", + "k6":"Ange insatskvantitet för inköp", + "k7":"Skriv in försäljningsbeloppet", + "k8":"Ange den kvantitet som är till salu", + "k9":"Köp per kvantitet", + "l0":"Anmärkningar om transaktioner i laglig valuta", + "l1":"Minsta transaktionsvolym", + "l2":"Bekräfta köp", + "l3":"Bekräftelse av försäljning", + "l4":"Ledsen, din kredit börjar ta slut.", + "l5":"Tid för beställning", + "l6":"Välj betalningsmetod för detta", + "l7":"betalare", + "l8":"Onormal samling", + "l9":"Skriv in transaktionslösenordet", + "m0":"Betald", + "m1":"Godkänd", + "m2":"Revision misslyckades", + "m3":"Avslutande av ordningen", + "m4":"Upphävande av order" + } +} diff --git a/src/i18n/tr.json b/src/i18n/tr.json new file mode 100644 index 0000000..5f73b8b --- /dev/null +++ b/src/i18n/tr.json @@ -0,0 +1,1161 @@ +{ + "nav": { + "assets": "varlıklar", + "contract": "Sözleşme hesabı", + "transfer": "Fon Transferi", + "excOrders": "Spot komisyon", + "contractOrders": "Sözleşme komisyonu", + "fundHistory": "Para yatırma ve çekme kayıtları", + "security": "Hesap Güvenliği", + "invite": "arkadaşları davet etmek", + "login": "Çalıştırmak için lütfen giriş yapın", + "tips": "sistem ipucu", + "set": "Lütfen önce uygun bir fiyat belirleyin", + "a1": "Fiyat boş veya sıfır olamaz", + "a2": "Miktar boş veya sıfır olamaz", + "a3": "Miktar şundan az olamaz", + "a4": "Satın alınan toplam piyasa emri miktarı boş veya sıfır olamaz", + "a5": "Satın alınan piyasa emirlerinin toplam miktarı şundan az olamaz:", + "a6": "Satılan piyasa emirlerinin miktarı boş veya sıfır olamaz", + "a7": "Satılan piyasa emri sayısı şundan az olamaz:", + "a8": "Zararı durdur emrinin tetikleyici fiyatı boş veya sıfır olamaz", + "a9": "Karı durdur ve zararı durdur-limit emri limit fiyatı boş veya sıfır olamaz", + "b1": "Kâr Al ve Zarar Durdur - limit emirlerinin miktarı boş veya sıfır olamaz", + "b2": "Karı durdur ve zararı durdur - bir piyasa emrinin tetikleyici fiyatı boş veya sıfır olamaz", + "b3": "Stop-kâr ve stop-loss-piyasa fiyatından satın alınan toplam tutar boş veya sıfır olamaz", + "b5": "Karı durdur ve zararı durdur-piyasa fiyatı alımlarının toplam miktarı,", + "b6": "Stop-kâr ve stop-loss-piyasa fiyatından satılan miktar boş veya sıfır olamaz", + "b7": "Karı durdur ve zararı durdur - piyasa fiyatından satılan miktar,", + "b8": "Sayfa bağlantısı kesildi, lütfen yenileyin veya daha sonra tekrar deneyin!", + "c1": "satın alın{amount}Parçalar{name}Token mevcut{rate}%Ödül", + "c2": "İmzalama etkinlikleri", + "c3": "Toplam mesele", + "c4": "Toplam devre", + "c5": "Çıkış fiyatı", + "c6": "Sorun zamanı", + "c7": "Beyaz kağıt adresi", + "c8": "Resmi web adresi", + "c9": "kısa tanıtım" + }, + "common": { + "a3": "Satın alma kaydı", + "option": "Opsiyon ticareti", + "exchange": "döviz işlemi", + "markets": "alıntılar", + "blogs": "Blog", + "news": "Sektör Bilgileri", + "helps": "Yardım Merkezi", + "service": "hizmet", + "contactUs": "Bize Ulaşın", + "sign_in": "oturum aç", + "sign_up": "kayıtlı", + "noRecord": "Kayıt yok", + "getCode": "doğrulama kodunu al", + "help1": "Döviz sözleşme rehberi", + "help2": "Sözleşme şartnamesi", + "optional": "İsteğe bağlı", + "price": "fiyat", + "upAndDown": "Teklif değişikliği", + "heigh": "En yüksek fiyat", + "low": "En düşük fiyat", + "vol": "Ses", + "pair": "Ticaret çifti", + "buy": "satın al", + "sell": "Satmak", + "buy-in": "Satın almak", + "sell-out": "Satmak", + "open-orders": "Mevcut komisyon", + "condition-orders": "şartlı komisyon", + "history-orders": "Komisyon kaydı", + "limit": "Sınır fiyat", + "market": "Market fiyatı", + "stop-limit": "Kar Al Zarar Durdur-Limit Fiyatı", + "stop-market": "Kar Al Zarar Durdur-Piyasa Fiyatı", + "limit-type": "İşlemi sınırla", + "market-type": "Piyasa işlemi", + "startTime": "Başlangıç ​​zamanı", + "to": "için", + "confirmBtn": "onaylamak", + "cancelBtn": "iptal etmek", + "cancel": "İptal", + "endTime": "Bitiş zamanı", + "export": "İhracat", + "filter": "Filtre", + "all": "Sınırsız", + "search": "Arama", + "reset": "Sıfırla", + "hideAll": "İptal edilen tüm siparişleri gizle", + "canceled": "İptal edildi", + "waiting": "Eşleştirilecek", + "triggered": "tetiklendi", + "processing": "Eşleştirme", + "completed": "Tamamlandı", + "available_phone": "Lütfen doğru telefon numarasını girin", + "available_email": "lütfen geçerli e-posta adresinizi girin", + "codeSent": "Doğrulama kodu gönderildi", + "captcha": "Doğrulama kodu hatası", + "created": "zaman", + "order-price": "Komisyon fiyatı", + "order-amount": "Sipariş sayısı", + "order-total": "Sipariş toplamı", + "avg-price": "ortalama fiyat", + "direction": "yön", + "order-type": "Türleri", + "executed-amount": "eşleşti", + "executed-total": "Devir", + "outstanding": "Eşleştirilecek", + "status": "durum", + "details": "Ayrıntılar", + "action": "işletme", + "id": "Sipariş numarası", + "filled-price": "son fiyat", + "filled-amount": "İşlem sayısı", + "filled-total": "Devir", + "fee": "Hizmet bedeli", + "enterValid": "Lütfen geçerli bir cep telefonu numarası veya e-posta girin!", + "enterValidEmail": "Lütfen doğru e-posta adresini girin", + "enterValidPhone": "Geçerli bir telefon numarası giriniz!", + "enterAccount": "Lütfen hesap girin", + "enterEmail": "Lütfen doğru e-posta adresini girin", + "enterPhone": "Lütfen telefon numarasını girin", + "enterPwd": "Lütfen şifreyi giriniz", + "passwordRegular": "Şifre 8 ila 15 rakam ve harften oluşmalıdır (hem rakam hem de harf içermelidir ve semboller de kullanılabilir).", + "newPassword": "Lütfen yeni bir şifre girin", + "confirmNewPassword": "Lütfen onaylanmış yeni şifreyi girin", + "enterGoogleCode": "Lütfen Google doğrulama kodunu girin", + "enterEmailCode": "Lütfen e-posta doğrulama kodunu girin", + "enterSMSCode": "Lütfen SMS doğrulama kodunu girin", + "enterVerCode": "lütfen doğrulama kodunu girin", + "exportFile": "Dosyayı dışa aktarmak için lütfen Tamam'ı tıklayın.", + "submit": "Sunmak", + "newzone": "Yeni bir bölgeye vur", + "college": "Akademi", + "goTo": "git", + "logOut": "oturumu Kapat", + "homepage": "Ev", + "application": "Listeleme başvurusu", + "purchase": "Abone ol", + "accountInformation": "Hesap Bilgileri", + "myWallet": "çantam", + "commissionOrder": "konsinye siparişi", + "securitySetting": "Güvenlik ayarları", + "wallet": "cüzdan", + "allAssets": "Tüm varlıklar", + "contractaccount": "Sözleşme hesabı", + "transferFunds": "Fon Transferi", + "rechargeWithdraw": "Para Yatırma ve Çekme", + "order": "Sipariş", + "spotConsignment": "Spot komisyon", + "optionOrders": "Seçenek sırası", + "perpetualContract": "sürekli sözleşme", + "foreignContract": "döviz sözleşmesi", + "notCertified": "sertifikalı değil", + "notData": "Veri yok", + "assets": "varlıklar", + "myCommission": "benim indirim", + "addressManagement": "Adres yönetimi", + "auth": "Doğrulandı", + "invitationReward": "davetiye ödülü", + "visitHistory": "Kayıtlara erişim", + "noviceTutorial": "Acemi öğretici", + "tradingStrategy": "Ticaret stratejisi", + "industryResearch": "Sanayi Araştırması", + "blockchainDictionary": "blok zinciri sözlüğü", + "mediaCoverage": "Medya raporları", + "selectFile": "Bir belge seçin", + "upload": "Yükle", + "delete": "silmek", + "tooBig": "Dosya boyutu aşılamayacak kadar büyük", + "errorType": "Dosya türü hatası", + "resend": "Yeniden gönder", + "sms": "SMS", + "email": "posta kutusu", + "sendSuccess": "Doğrulama kodu başarıyla gönderildi", + "retransmission": "Yeniden gönder", + "start-trade": "Dijital para yolculuğuna şimdi başlayın", + "login": "oturum aç", + "register": "kayıtlı", + "trading": "Ticaret", + "dark": "siyah", + "light": "Beyaz", + "notMore": "Daha fazla yok", + "allRead": "Hepsi okundu", + "newMessage": "Yeni Mesaj", + "footerTips1": "Piyasa riski, yatırımın dikkatli olması gerekiyor", + "footerTips2": "Yasal uyarı: Bu web sitesi {name} şirketi tarafından işletilmektedir.", + "footerTips3": "Risk uyarısı: dijital varlık ticareti, müdürünüzü kaybetmenize neden olabilir, lütfen riskleri tam olarak anladığınızdan emin olun.", + "footerTips4": "Kısıtlı alanlar: belirli ülkelerin/bölgelerin sakinlerine hizmet sağlayamamak, örneğin: İsrail ve İslam Cumhuriyeti" + }, + "exchange": { + "search": "aramak", + "pair": "Ticaret çifti", + "last-price": "Son fiyat", + "change": "Teklif değişikliği", + "order-book": "Al ve sat emri", + "price": "fiyat", + "amount": "miktar", + "total": "Toplam değer", + "recent-trades": "Son işlem", + "time": "zaman", + "order-total": "Toplam komisyon değeri", + "balance": "Kalan bakiye", + "enter-price": "Lütfen fiyatı girin", + "enter-amount": "Lütfen miktarı girin", + "enter-total": "Lütfen toplam fiyatı girin", + "at-best-price": "En iyi piyasa fiyatıyla anlaşma", + "trigger-price": "Lütfen tetikleyici fiyatını girin", + "min": "dakika", + "hour": "saat", + "day": "gün", + "week": "hafta", + "month": "ay" + }, + "login": { + "resend": "Yeniden gönder", + "sms": "SMS", + "sendOK": "Doğrulama kodu başarıyla gönderildi!", + "enterPhoneEmail": "Lütfen e-posta numaranızı girin", + "effectivePhoneEmail": "Lütfen geçerli bir cep telefonu veya e-posta girin", + "enterPasswrod": "Lütfen {num} karakterlik bir şifre girin", + "passwordLength": "Şifre uzunluğu {sayı} basamaklı, alfasayısal şifre içeren şifre", + "safe": "Güvenlik doğrulaması", + "googleVer": "Lütfen mobil Uygulamanıza {num} Google doğrulama kodunu girin", + "phoneCode": "Lütfen cep telefonu numaranıza gönderilen {num} haneli doğrulama kodunu girin", + "emailCode": "Lütfen posta kutunuza gönderilen {num} basamaklı doğrulama kodunu girin", + "google-code": "Google doğrulama kodu", + "email-code": "E-posta doğrulama kodu", + "sms-code": "Telefon doğrulama kodu", + "new-password": "Yeni Şifre", + "confirm-password": "Şifreyi Onayla", + "forgetPassword": "Parolanızı mı unuttunuz", + "rememberMe": "beni Hatırla", + "noAccountYet": "Henüz hesap yok", + "goRegister": "kayıtlı", + "safety": "Güvenlik doğrulaması", + "regAccount": "Bir hesap oluştur", + "email": "posta kutusu", + "phone": "Cep telefonu", + "pleaseEmail": "Lütfen e-posta adresini girin", + "invalidEmail": "Geçersiz e-posta adresi", + "enterMobile": "Lütfen telefon numarasını girin", + "invalidPhone": "Geçersiz cep telefonu numarası", + "enterLengthPassword": "Lütfen {num1} ila {num2} uzunluğunda bir şifre girin", + "hasNumEn": "Şifre, {sayı} harf ve rakamdan oluşan bir kombinasyon gerektiriyor", + "iSee": "Katılıyorum", + "terms": "Şartlar ve koşullar", + "reg": "kayıtlı", + "enterEmailCode": "Lütfen posta kutunuza gönderilen {sayı} basamaklı doğrulama kodunu girin ({email})", + "accountActivated": "Hesabı etkinleştirmek için", + "backOld": "Önceki adıma geri dön", + "verCode": "Doğrulama kodu", + "notEmail": "E-postayı almadıysanız, lütfen aşağıdaki kontrol işlemini deneyin.", + "confirmEmail": "Lütfen girdiğiniz e-posta adresinin doğru olduğundan emin olun", + "confing": "Lütfen posta kutunuzun spam klasörünü kontrol edin", + "checkTrashCan": "Lütfen posta kutunuzun sabit bir internete bağlı olduğundan emin olun.", + "enterPhone1": "Lütfen cep telefonunuza gönderilen numarayı giriniz", + "enterPhone2": "{Num} basamaklı doğrulama kodu", + "smsNotReceived": "Metin mesajını almadıysanız, lütfen aşağıdaki kontrolü deneyin", + "phoneCorrect": "Lütfen girdiğiniz telefon numarası ve alan kodunun doğru olduğundan emin olun.", + "securePhone": "Lütfen cep telefonu sinyalinizin sabit olduğundan emin olun.", + "hasAccount": "Zaten hesabınız var mı", + "toLogin": "Girişe git", + "securityVerification": "Güvenlik doğrulaması", + "disagree": "Şartları kabul etmedin", + "registrationSuccess": "Başarılı kayıt", + "referrer": "yönlendiren", + "c6": "Davetiye kodu (gerekli)", + "c7": "Lütfen davetiye kodunu giriniz", + "optional": "İsteğe bağlı", + "password": "parola", + "login": "oturum aç", + "country": "Alan kodu", + "enter-account": "lütfen hesaba girin", + "sign-in": "oturum aç", + "find-password": "Parola Al", + "submit": "Sunmak", + "confirmpassword": "İki şifre tutarsız", + "Remembered": "Şifrenizi hatırladınız mı?" + }, + "application": { + "form": "Proje listeleme başvuru formu", + "sendUser": "Proje sponsoru", + "sendUserEn": "İngilizce para birimi adı", + "sendUserCn": "Çince para birimi adı", + "contactPosition": "İlgili kişi ve pozisyon", + "phone": "iletişim numarası", + "tokenPrice": "Market fiyatı", + "email": "İletişim E-posta", + "address": "Proje kayıt yeri", + "mechanism": "proje yatırım ajansı", + "personal": "kişiye özel", + "currencyCode": "para birimi kodu", + "symbol": "sembol", + "currencyIdentification": "Para Birimi Kimliği", + "format": "{name} biçimini destekleyin, dosya {num} boyutundan daha küçük", + "fundraisingDate": "bağış toplama tarihi", + "officialWebsite": "Resmi internet sitesi", + "whitePaperLinks": "Beyaz kağıt bağlantısı", + "noLink": "Bağlantı yoksa, lütfen makalenin sonundaki eki yükleyin.", + "total_issue": "Toplam para birimi ihracı", + "currencyCirculation": "döviz dolaşımı", + "currencyAllocationRatio": "Para birimi dağılım oranı", + "numberOfCurrencyHolders": "Sahip sayısı", + "tradingPlatform": "Çevrimiçi ticaret platformu", + "privatePlacement": "Özel Yerleştirme", + "publicOfferingPrice": "halka arz fiyatı", + "company": "Lütfen para birimini ekleyin", + "coinType": "Para birimi blok ağ türü", + "currencyIssueDate": "Para birimi çıkış tarihi", + "blockBrowser": "Gezgini engelle", + "officialAddress": "Resmi cüzdan adresi", + "contractAddress": "Sözleşme adresi", + "link": "bağlantı", + "budget": "Listeleme ücreti bütçesi", + "unit": "birim olarak", + "ofTokens": "Listelendikten sonra piyasa faaliyetleri için jeton sayısı", + "chineseCurrency": "Çince para birimi tanıtımı", + "enCurrency": "İngilizce para birimi tanıtımı", + "remarks": "Uyarılar", + "uploadWhitePaper": "Teknik incelemeyi yükleyin", + "pleaseUpload": "Lütfen teknik incelemeyi yükleyin", + "recommendationCode": "Yönlendirenin adı, kurumu ve yönlendirme kodu", + "ifSo": "Varsa", + "affirmsThat": "Beyan: Yukarıdaki tüm bilgilerin doğru, eksiksiz ve doğru olduğunu onaylıyorum. ", + "iKnow": "biliyorum", + "reSubmit": "yeniden gönder", + "pleaseConfirm": "Lütfen yukarıdakilerin doğru bilgi olduğunu onaylayın", + "pleaseEnter": "girin lütfen", + "upLoadSuccess": "Başarıyla yüklendi" + }, + "wallet": { + "inside": "Dahili fon transferi", + "from": "itibaren", + "history": "Geçmişi görüntüle", + "balance": "Denge", + "transferQuantity": "Transfer sayısı", + "capitalAccount": "Fon hesabı", + "contract": "sözleşme", + "financial": "Finansal hesap", + "leverage": "marj hesabı", + "successful": "Başarılı aktarım", + "confirm": "Aktarımı onayla", + "pleaseSelect": "Lütfen para birimini seçin", + "to": "için", + "assets": "varlıklar", + "strokes": "Lütfen transfer tutarını girin", + "addressManagement1": "Adres yönetimi", + "addAddress": "Adres Ekle", + "filter": "Filtre", + "search": "aramak", + "selectActiveArea": "Lütfen etkinlik alanını seçin", + "areaOne": "Birinci bölge", + "areaTwo": "Alan iki", + "addressAssets": "adres listesi", + "addressNum": "Adres sayısı", + "fee1": "Hizmet bedeli", + "creationTime": "oluşturma zamanı", + "detailAddress": "Adres", + "remarks1": "Açıklama bilgileri", + "operating": "işletme", + "complete": "gerçekleştirmek", + "copy": "kopyalamak", + "editAddress": "Adresi düzelt", + "deleteAddress": "Adresi sil", + "next": "Önceki sayfa", + "pre": "Sonraki Sayfa", + "add": "a ekle", + "edit": "Düzenle", + "address": "adres", + "selectAssets": "Lütfen bir varlık seçin", + "drawAddress": "para çekme adresi", + "addressRemarks": "Bu adres için açıklamalar", + "remarksDelete": "Bu adresi mutlaka silin", + "optionSuccess": "Başarılı operasyon", + "allAssets": "Tüm varlıkların değeri", + "showNum": "Numarayı göster", + "contractAccount": "Sözleşme hesabı", + "marginAccount": "marj hesabı", + "financialAccount": "Finansal hesap", + "spotAccount": "Spot hesap", + "hide": "saklamak", + "balanceAssets": "Bakiye varlıkları", + "searchCurrency": "Para birimi ara", + "addressManagement": "Para çekme adresi yönetimi", + "totalAssets": "Toplam varlıklar", + "availableBalance": "Kalan bakiye", + "fee": "dengeyi dondur", + "valuation": "Değerleme", + "recharge": "şarj", + "withdrawal": "Para çekme", + "transaction": "işlem", + "rechargeAddress": "Adresi şarj et", + "rechargeQuantity": "şarj miktarı", + "enterQuantity": "Lütfen miktarı girin", + "rechargeInstructions": "Şarj talimatları", + "automaticallyCredited": "Bu adres en son yükleme adresinizdir.Sistem yüklemeyi aldığında otomatik olarak hesaba yatırılacaktır.", + "tran": "Transferin tüm blok zinciri ağı tarafından onaylanması gerekiyor. {num} ağ onayına ulaştığında, {name} otomatik olarak hesaba yatırılacaktır.", + "only": "Lütfen bu adrese yalnızca {name} gönderin, bu adrese başka dijital para birimleri göndermek kalıcı kayıplara neden olacaktır.", + "low": "en düşük", + "addressList": "adres listesi", + "enterDrawAddress": "Lütfen para çekme adresini girin", + "invalidWallet": "Geçerli bir cüzdan adresi değil, lütfen tekrar girin", + "withdrawalsNumber": "Para çekme sayısı", + "enterDrawNum": "Lütfen para çekme miktarını girin", + "withdrawalInstructions": "Para çekme talimatları", + "enterAddress": "Lütfen tekrar kontrol edin ve doğru cüzdan adresini girin.", + "notSend": "Cüzdan adresine karşılık gelmeyen dijital para birimi göndermek kalıcı kayıplara neden olur.", + "deductionFee": "Para çekme ücreti, para çekme sayısından düşülecektir.", + "submitSuccess": "Başarıyla gönderildi, inceleniyor", + "operationComplete": "Para çekme işlemi tamamlandı, inceleme bekleniyor", + "rechargeRecord": "Şarj kaydı", + "withdrawalRecord": "para çekme kaydı", + "assetsName": "Lütfen varlık adını girin", + "selectStatus": "Lütfen bir durum seçin", + "startTime": "Başlangıç ​​tarihi", + "entTIme": "Bitiş tarihi", + "date": "tarih", + "hash": "karma", + "num": "miktar", + "progress": "program", + "status": "durum", + "error": "başarısızlık", + "success": "başarı", + "underReview": "inceleme altında", + "handlingFee1": "Hizmet bedeli", + "processing": "inceleme altında", + "transfer": "Fon Transferi", + "transferDescription": "Fon transferi talimatları", + "handlingFee": "Lütfen dahili fon transferinin otomatik olarak yapıldığını ve işlem ücreti olmadığını unutmayın.", + "onlyForeignExchange": "Döviz sözleşmesi hesabınıza yalnızca {name} aktarılabilir", + "onlySustainable": "Kalıcı sözleşme hesabınıza yalnızca {name} aktarılabilir", + "inCase1": "Döviz kontratları ile işlem yapmak istiyorsanız, marj olarak döviz kontrat hesabınıza {name} transfer etmelisiniz.", + "inCase2": "Kalıcı sözleşmelerin ticaretini yapmak istiyorsanız, {name} öğesini marj olarak kalıcı sözleşme hesabına aktarmanız gerekir.", + "transferRecord": "Transfer kaydı", + "allTransfer": "Tüm varlık transfer kayıtları", + "direction": "yön", + "all": "Herşey", + "dateTime": "zaman", + "UserWallet": "varlık hesabı", + "ContractAccount": "Sözleşme hesabı", + "LeverageAccount": "marj hesabı", + "FinancialAccount": "Finansal hesap", + "contractFlow": "Sözleşme akışı", + "info": "Ayrıntılar", + "money": "Miktar", + "Authentication": "Kimlik Doğrulama" + }, + "contact": { + "contact": "Bize Ulaşın", + "help": "Herhangi bir yardıma ihtiyacınız olursa lütfen bizimle iletişime geçin", + "fullName": "Ad Soyad", + "enterFullName": "Lütfen tam adı girin", + "email": "posta kutusu", + "enterEmail": "Lütfen e-posta adresini girin", + "consultingService": "Danışmanlık Projesi", + "pleseSelect": "lütfen seç", + "info": "bilgi", + "enterInfo": "Lütfen bilgileri girin", + "contactInformation": "İletişim bilgileri", + "routineConsultation": "Rutin danışma", + "customerService": "müşteri servisi", + "mediaCooperation": "medya işbirliği", + "submit": "Sunmak" + }, + "college": { + "college": "Akademi", + "article": "Blog", + "tutorialDetails": "Eğitim ayrıntıları", + "howToBuyBitcoin": "Bitcoin nasıl satın alınır", + "recommendedCourse": "Önerilen eğitim", + "buy": "1 dakikada bitcoin satın alın", + "register": "kayıtlı", + "visit": "{name} web sitesini ziyaret edin ve {name} hesabınızı kaydedin", + "realName": "Doğrulandı", + "upload": "Geçerli belgeler yükleyin ve kişisel gerçek ad doğrulaması yapın", + "quickBuy": "Tek tıkla satın alma ve ödeme", + "inIndex": "Ana sayfada jeton satın almak / jeton satın almak için tek tıkla, ödeme yapıldıktan sonra jetonların serbest bırakılmasını bekleyin", + "tradeNow": "Şimdi ticaret yap", + "currencyTransaction": "Para birimi işlemlerini saniyeler içinde anlayın", + "contractEntryTransaction": "Sözleşme giriş işlemi", + "how": "Opsiyon ticareti nasıl yapılır?", + "TradingStrategy": "Ticaret stratejisi", + "seeMore": "daha fazla gör", + "industryResearch": "Sanayi Araştırması", + "oneClick": "Tek tıkla akıllı işlem", + "inAssets": "Varlık/yükleme sayfasında tek tıklamayla para yatırın ve tamamlandıktan sonra ticaret yapabilirsiniz", + "dictionary": "blok zinciri sözlüğü", + "media": "Medya raporları" + }, + "home": { + "newEra": "Dünyanın önde gelen dijital finansal türev borsası", + "startTrading": "Ticarete başlamak", + "walkingLantern": "döner fener", + "marketCenter": "pazar yeri", + "optional": "İsteğe bağlı", + "latestPrice": "fiyat", + "upAndDown": "Teklif değişikliği", + "heigh": "En yüksek fiyat", + "low": "En düşük fiyat", + "vol": "Işlem hacmi", + "coinType": "Ticaret çifti", + "more": "Daha fazlasını görüntüle>>", + "multiPlatform": "Çoklu platform indirme", + "atTime": "Her zaman her yerde", + "multiTerminal": "Çok platformlu terminal işlemi", + "cover": "örtmek", + "multiTerminal1": "Çoklu platformlar", + "support": "Tam iş fonksiyonlarını destekleyin", + "down": "indir", + "news": "Pazar dinamikleri", + "detail": "ayrıntılara bakınız", + "quickly": "Hızlı bir şekilde başlayın", + "major": "Yatırımcılara uzmanlık sağlıyoruz", + "safe": "Güvenli işlem hizmeti", + "login": "oturum aç", + "reg": "kayıtlı", + "trading": "Ticaret", + "add": "Başarıyla eklendi", + "cancel": "Başarıyı iptal et", + "features": "temel avantajlar", + "partners": "Yatırım kurumları ve ortakları", + "perpetual_title": "Döviz sürekli sözleşme", + "perpetual_cont": "100 katlık en yüksek kaldıraç ile istikrarlı para birimi ile gerçekleştirilen dünyanın ilk döviz sürekli sözleşmesi olan AMATAK döviz sürekli sözleşmesi, hızlı döviz işlemleri için uygun maliyetli bir seçimdir.", + "stablecoin_title": "Dünyanın ilk stablecoin ticaret merkezi", + "stablecoin_cont": "AMATAK, güçlü bir istikrarlı para birimi ekolojik ortamı, istikrarlı döviz işlemleri, ödemeler ve havalelerden oluşan eksiksiz bir yapı inşa etti ve küresel yüksek kaliteli istikrarlı döviz kulübünün bir parçası haline geldi!", + "security_title": "kusursuz güvenlik", + "security_cont": "AMATAK, dijital para birimlerinin uç nokta güvenliğini korumak için en modern Defter Kasasını kullanır.Ledger Vault platformu, üçüncü taraf hırsızlığı, içeriden gizli anlaşma ve ana tohum hırsızlığı için 150 milyon dolara kadar sigorta sağlar. ", + "service_title": "7/24 çok dilli gerçek zamanlı müşteri hizmetleri", + "service_cont": "AMATAK'nin müşteri hizmetleri 7/24 beklemededir ve kullanıcılara yardımcı olmak için mümkün olan her şeyi yapar.Müşteri hizmetleriyle gerçek zamanlı sohbet yoluyla veya support@AMATAK.com'a e-posta yoluyla iletişime geçin.", + "analy_title": "Gelişmiş analiz araçları", + "analy_cont": "Yatırımcılar, alım satım sayfasında alım satıma yardımcı olmak için sabit verilere dayalı farklı grafik araçları ve göstergeleri kullanabilir.", + "liquidity_title": "Mükemmel likidite", + "liquidity_cont": "AMATAK ticaret platformunun yüksek likiditesine 7/24 istediğiniz zaman bağlanın.", + "technology_title": "Kendi geliştirdiği teknoloji", + "technology_cont": "AMATAK ticaret platformu, zaman içinde test edilmiş teknolojiye dayanmaktadır ve platform işlevlerini en üst düzeye çıkarmak için sektördeki en iyi uzmanlar tarafından oluşturulmuştur.", + "download": "AMATAK mobil terminalini indirin", + "easy": "Her zaman, her yerde el ticareti açın", + "skan": "Şimdi indirmek için kodu tarayın", + "core_advantages": "Temel gücüm veri", + "about_us": "Hakkımızda" + }, + "option": { + "waitFor": "Teslim edilmeyi bekliyor", + "history": "Tarihi yerleşim", + "orderNum": "sipariş numarası", + "option": "Seçenek", + "buyTime": "satın alma zamanı", + "buyAmount": "Satın alınacak miktar", + "buyType": "Satın alma türü", + "yield": "getiri oranı", + "state": "durum", + "deliverytime": "Teslimat süresi", + "countDown": "Teslimat için geri sayım", + "buyingUp": "Tümünü satın almak", + "buyDwon": "Satın al veya düş", + "buyEven": "Daire satın al", + "result": "Teslimat sonucu", + "settlementQuantity": "yerleşim miktarı", + "up": "yükselmek", + "down": "sonbahar", + "flat": "seviye", + "buyOption": "Satın alma seçeneği", + "deliveryRecord": "Teslimat kaydı", + "current": "mevcut", + "next": "İkinci yarı", + "enterNum": "Lütfen miktarı girin", + "balance": "Denge", + "expectedRevenue": "Tahmini gelir", + "seeMore": "Daha fazla gör", + "beBearish": "ayı", + "time": "zaman", + "zf": "Artırmak", + "bullish": "boğa", + "lookAtPing": "Fuar", + "bearish": "ayı", + "amount": "miktar", + "coinType": "Para birimi", + "odds": "oranlar", + "buySuccess": "Başarıyla satın alındı" + }, + "order": { + "noData": "İşlem kaydı yok", + "ifCancel": "Mevcut siparişin iptal edilip edilmeyeceği", + "cancelSuccess": "İptal başarılı", + "marketPrice": "Piyasa işlemi", + "fixedPrice": "İşlemi sınırla", + "sell": "Satmak", + "buy": "Satın almak", + "exchangeRecord": "İşlem kaydı", + "see": "Görünüm", + "opt": "işletme", + "status": "durum", + "time": "zaman", + "tradingPair": "Ticaret çifti", + "direction": "yön", + "type": "Türleri", + "averagePrice": "ortalama fiyat", + "price": "fiyat", + "matched": "eşleşti", + "totalAmountEntrusted": "Toplam komisyon", + "total": "Toplam", + "toMatch": "Eşleşmedi", + "operation": "işletme", + "reset": "Sıfırla", + "search": "aramak", + "to": "için", + "startTime": "Başlangıç ​​tarihi", + "endTime": "Bitiş tarihi", + "select": "lütfen seç", + "entrustType": "Komisyon türü", + "spotConsignment": "Spot komisyon", + "surrentCommission": "Mevcut komisyon", + "commissionRecord": "Komisyon kaydı", + "optionTransaction": "Opsiyon ticareti", + "orderNum": "sipariş numarası", + "timeSharing": "Zaman paylaşımı", + "yield": "getiri oranı", + "buyNum": "Satın alma miktarı", + "upAndDown": "Teklif değişikliği", + "settlementQuantity": "yerleşim miktarı", + "transactionPrice": "anlaşma fiyatı", + "tradingVolume": "Işlem hacmi", + "aTurnover": "İşlem tutarı", + "serviceCharge": "Hizmet bedeli", + "cancel": "İptal", + "buyTime": "satın alma zamanı", + "buyUp": "Tümünü satın almak", + "buyDown": "Satın al veya düş", + "buyLevel": "Daire satın al" + }, + "profile": { + "realName": "Doğrulandı", + "SelectAreaCode": "alan kodunu seçin", + "primaryCertification": "Birincil sertifika", + "advancedCertification1": "Gelişmiş Sertifikasyon Başvurusu", + "advancedCertification2": "Gelişmiş sertifika başvurusu gönderildi", + "toExamine": "Denetim", + "fullName": "isim", + "legal": "yasal", + "pleaseEnterName": "Lütfen adınızı yazın", + "dateOfBirth": "doğum tarihi", + "selectDate": "Tarih seç", + "documentType": "sertifika türü", + "pelaseSelect": "lütfen seç", + "certificateNumber": "Lisans numarası", + "endterIDNumber": "Lütfen kimlik numarasını girin", + "addressInfo": "Adres bilgisi", + "residentialAddress": "Konut adresi", + "residentialAddress1": "Lütfen ikamet adresini girin", + "ciy": "Kent", + "incity": "Lütfen şehrinizi girin", + "postalCode": "Posta kodu", + "thePostcode": "Lütfen posta kodunu girin", + "additionalInformation": "ekstra bilgi", + "optional": "İsteğe bağlı", + "contactInformation": "İletişim bilgileri", + "phoneNumber": "telefon numarası", + "enterPhoneNumber": "Lütfen telefon numarasını girin", + "clickUpload1": "Dosya yükle'ye tıkladığınızda ve kimlik doğrulaması gönderdiğinizde, hizmet şartlarımızı ve gizlilik sözleşmemizi okuyup kabul ettiğiniz anlamına gelir.", + "pelaseDownload": "Lütfen aşağıdaki belgelerden süresi dolmamış bir tane seçin", + "passport": "pasaport", + "drivingLicense": "Ehliyet", + "iD": "kimlik kartı", + "upload": "Yüklemek", + "explain": "Açıklama", + "unexpired": "Süresi dolmamış belgeler resim veya tarama olabilir.", + "pleaseConfirm": "Lütfen kimlik fotoğrafındaki tüm ayrıntıların net olduğundan ve gizlenmediğinden emin olun.", + "fileFormat": "dosya formatı", + "maximumFileSize": "Maksimum dosya boyutu", + "positive": "Belgenin ön yüzü", + "theOtherSide": "Belgenin ters tarafı", + "hold": "El Kimliği", + "dragHere": "Buraya sürükleyin veya", + "clickUpload": "Yükle'yi tıklayın", + "uploadPhoto": "Lütfen kimliğinizin ön fotoğrafını yükleyin", + "reversePhoto": "Lütfen kimliğinizin negatif bir fotoğrafını yükleyin", + "uploadIDCard": "Lütfen elde taşınan bir kimlik fotoğrafı yükleyin", + "nextStep": "Sonraki adım", + "inSubmit": "Doğrulama isteğiniz gönderildi! ", + "gotIt": "Anladım", + "congratulations": "Tebrikler", + "back": "dönüş", + "resetApply": "Yeniden başvuru yapılıp yapılmayacağı.", + "recertification": "yeniden sertifikalandırma", + "userInfo": "Hesap Bilgileri", + "verState": "Doğrulama durumu", + "max": "maksimum", + "limitH": "Saatlik para çekme limiti", + "verLeave": "Doğrulama düzeyi", + "exceed": "aşmak", + "contactUs": "Bize Ulaşın", + "inviteFriends": "arkadaşları davet etmek", + "dividends": "Bir arkadaşınızı {name} kullanmaya davet edin ve arkadaşınızın gelecekteki işlem ücretinin {num} kadarını bonus olarak alın.", + "sendInvitation": "davetiye gönder", + "resetPassword": "şifreyi yenile", + "forLoginAccount": "Giriş hesabı için.", + "clickReset": "Sıfırla'yı tıklayın", + "registrationDecord": "kayıt kaydı", + "recording": "Ayrıntılı geçmiş giriş kayıtlarını görüntülemek için kullanılır", + "recordingDEtail": "ayrıntılı kayıt", + "invitationReward": "davetiye ödülü", + "inviteUse": "Arkadaşlarınızı kullanmaya davet edin", + "futureCommission": "Bonus olarak arkadaşlarınızın gelecekteki işlem ücretlerinden {num} alın", + "joinThePlan": "{name} kullanıcı daveti bonus programına katılın", + "checkMyDividend": "Temettülerimi kontrol et", + "step1": "ilk adım", + "shareLink": "Linki paylaş", + "step2": "İkinci adım", + "shareFriend": "arkadaşları davet etmek", + "step3": "üçüncü adım", + "instantDividend": "Anında temettü", + "invitationInformation": "Davetiye bilgileri", + "invitationLink": "Davet bağlantısı", + "invitationCode": "Davet Kodu", + "registeredUser": "Kayıtlı kullanıcı", + "accountNumber": "hesap numarası", + "registrationTime": "Kayıt zamanı", + "activityTerms": "Etkinlik terimleri", + "handlingFeeDividend": "İşlem ücreti temettü", + "equalInvitee": "Davetliye eşit", + "fee": "İşlem ücreti", + "afterThat": "Davetli işlemlerden sonra olacak", + "follow": "Dakikalar içinde davet edenin hesabına aktarın.", + "limit": "Etkinlik, aşağıdaki başlangıç ​​ve bitiş saatini takip eder ve yalnızca etkinlik başlangıç ​​saatinden sonra ve etkinlik bitiş saatinden önce geçerli hesaplar için kullanılabilir.", + "activityStartTime": "Aktivite başlangıç ​​zamanı", + "Y": "yıl", + "M": "ay", + "D": "gün", + "endTime": "Etkinlik bitiş zamanı", + "proceed": "ilerlemek", + "atAnyTime": "{name} kullanıcı davet programını herhangi bir zamanda önceden haber vermeksizin değiştirme, askıya alma veya sonlandırma hakkını saklı tutar", + "reservedRights": "Mükerrer hesaplar veya sahte hesaplar için komisyon temettü dağıtmama hakkını saklı tutar", + "canDecide": "{name} platformuna {link} tanıtılan veya davet edilen belirli kullanıcıları kabul etmeye veya reddetmeye tam olarak karar verin", + "bill": "Kayıtlara erişim", + "date": "tarih", + "address": "yer", + "equipment": "ekipman", + "preliminary": "İlk sertifika başarılı oldu", + "clickToVerify": "Doğrulamak için tıklayın", + "clickToVerify1": "Tamamlandı", + "tips1": "Temel sertifika: Nakit parayı seçmek için gelişmiş sertifikayı tamamlamanız gerekir.", + "tips2": "Gelişmiş sertifika: 5000 USDT'ye kadar 24 saatlik para çekme limiti. Daha fazla para çekme miktarına ihtiyacınız varsa lütfen müşteri hizmetleriyle iletişime geçin" + }, + "setting": { + "smsVer": "SMS doğrulama", + "enterCode": "lütfen doğrulama kodunu girin", + "emailVer": "Eposta Doğrulama", + "enterEmailVer": "Lütfen e-posta doğrulama kodunu girin", + "ver": "doğrulama", + "enterNameCode": "Lütfen {name} doğrulama kodunu girin", + "openSuccess": "Başarıyla açıldı", + "closeSuccess": "Başarıyla kapatıldı", + "email": "posta kutusu", + "enterEmail": "lütfen e-postanızı girin", + "emailVerCode": "E-posta doğrulama kodu", + "enterSmsCode": "Lütfen SMS doğrulama kodunu girin", + "bind": "bağla", + "unbind": "çöz", + "bindSuccess": "başarıyla bağla", + "unbindSuccess": "Bağlantıyı başarıyla kaldır", + "scanQrCode": "Lütfen QR kodunu tarayın", + "howToOpen": "{name} ikincil doğrulamasını nasıl açacağınızı öğrenin", + "read": "Kurulum bilgilerini okumak için buraya tıklayın", + "verKey": "Doğrulama anahtarı", + "safeSetting": "Güvenlik ayarları", + "loginPassword": "giriş şifresi", + "resLoginPassword": "Giriş şifresini sıfırla", + "transactionPassword": "İşlem Şifresi", + "usedFor": "Sözleşmeleri ve spot siparişleri göndermek için kullanılır", + "notOpen": "açılmamış", + "modifyPassword": "şifre değiştir", + "setPassword": "şifreyi belirle", + "verCode": "Doğrulama kodu", + "forLogin": "Giriş yapmak, jeton çekmek ve güvenlik ayarlarını değiştirmek için kullanılır", + "alLast": "En az bir doğrulama yöntemi açın", + "close": "kapat", + "open": "Aç", + "phone": "cep telefonu numarası", + "area": "Lütfen alan kodunu girin", + "enterPhone": "Lütfen telefon numarasını girin", + "newPassword": "Yeni Şifre", + "passwordIs": "İşlem şifresi {sayı} basamaktır", + "enterNewPassword": "Lütfen yeni bir şifre girin", + "confirmPassword": "Şifreyi Onayla", + "pleaseConfirmPassword": "Lütfen şifrenizi doğrulayınız", + "operationSuccess": "Başarılı operasyon", + "combination": "Şifre, harf ve rakam kombinasyonu gerektirir", + "changeSuccess": "Başarıyla değiştirildi" + }, + "purchase": { + "sendPrice": "Yayın fiyatı", + "subscriptionCurrency": "abonelik para birimi", + "expected": "Çevrimiçi olmak için tahmini süre", + "startTime": "Satın alma için başlangıç ​​zamanı", + "applyForPurchase": "Abonelik süresi sonu", + "enterNum": "Lütfen miktarı girin", + "all": "herşey", + "subscribeNow": "Şimdi abone ol", + "subscriptionCycle": "abonelik döngüsü", + "projectWarmUp": "Proje ısınması", + "startSubscription": "Satın almaya başla", + "endOfSubscription": "Aboneliğin sonu", + "announceResults": "Sonuçları duyurun", + "projectCetails": "Proje detayları", + "useOrNot": "kullan ya da kullanma", + "subscribe": "Abone ol", + "prompt": "Komut istemi", + "subscribeSuccess": "Başarılı abonelik" + }, + "contract": { + "a0": "Sözleşme hesabı", + "a1": "Fon Transferi", + "a2": "hesap öz sermayesi", + "a3": "Mevcut", + "a4": "pozisyon marjı", + "a5": "emanet dondurma", + "a6": "Gerçekleşmemiş kar ve zarar", + "a7": "Risk oranı", + "a8": "Tahmini Güçlü Parite", + "a9": "sözleşme", + "b0": "kaldıraç", + "b1": "zaman", + "b2": "işlem tipi", + "b3": "anlaşma yapıldı", + "b4": "Toplam komisyon", + "b5": "Ortalama işlem fiyatı", + "b6": "Komisyon fiyatı", + "b7": "marj", + "b8": "Hizmet bedeli", + "b9": "durum", + "c0": "işletme", + "c1": "Bir siparişi iptal et", + "c2": "İptal", + "c3": "Mevcut siparişin iptal edilip edilmeyeceği", + "c4": "iptal etmek", + "c5": "belirlemek", + "c6": "İptal edildi", + "c7": "Satılmamış", + "c8": "Kısmi işlem", + "c9": "Tüm İşlemler", + "d0": "Açık uzun satın al", + "d1": "Kısa satın al", + "d2": "kısa satmak", + "d3": "Daha fazla sat", + "d4": "İptal başarılı", + "d5": "Bir pozisyon aç", + "d6": "Tasfiye", + "d7": "Tetik fiyatı", + "d8": "fiyat", + "d9": "Market fiyatı", + "e0": "Sınır fiyat", + "e1": "miktar", + "e2": "Zhang", + "e3": "Gerekli marj", + "e4": "Uzun pozisyonlar", + "e5": "Kısa pozisyon", + "e6": "boğa", + "e7": "açılabilir", + "e8": "ayı", + "e9": "Keping", + "f0": "fiyat", + "f1": "Daha fazlasını aç", + "f2": "Boş alan", + "f3": "İster", + "f4": "Kaldıraç", + "f5": "başarıyla devreye alındı", + "f6": "Başarıyla kapatıldı", + "f7": "Handikap", + "f8": "Gerçek zamanlı işlem", + "f9": "Herşey", + "g0": "satın al", + "g1": "Satmak", + "g2": "Genel Toplam", + "g3": "Son fiyat", + "g4": "Ayrıntılar", + "g5": "tarih kaydı", + "g6": "işlem süresi", + "g7": "Durum", + "g8": "Seviyelendirilebilir", + "g9": "Ortalama açılış fiyatı", + "h0": "getiri oranı", + "h1": "Pazar kapanışı", + "h2": "Piyasa fiyatından düz olup olmadığı", + "h3": "Zenpei", + "h4": "başarı", + "h5": "Ticaret çifti", + "h6": "Teklif değişikliği", + "h7": "En yüksek fiyat", + "h8": "En düşük fiyat", + "h9": "Ses", + "i0": "Pozisyonu tut", + "i1": "Mevcut komisyon", + "i2": "Tarihsel komisyon", + "i3": "yön", + "i4": "birçok", + "i5": "hava", + "i6": "Yalnızca geçerli olanı göster", + "i7": "Dur", + "i8": "Kaybı durdurmak", + "i9": "Kar Al ve Zararı Durdur", + "j0": "Kar ve zarar", + "j1": "Son işlem fiyatı", + "j2": "Ortalama açılış fiyatı", + "j3": "Kâr Tetikleyici Fiyatını Al", + "j4": "Zararı durdur tetikleyici fiyatı", + "j5": "Piyasa fiyatı", + "j6": "Zaman geldiğinde bir kar al emri tetiklenecektir.", + "j7": "Zamanında bir zararı durdur emri tetiklenecek ve kar ve zarar beklenecek", + "j8": "Açık kalıcı sözleşme", + "j9": "Başarıyla açıldı", + "k0": "Başarıyla ayarla", + "k1": "Uzlaşma kar ve zararı", + "k2": "Tek tuşla tam tesviye", + "k3": "Tek tıkla ters", + "k4": "Tek tuşla tam tesviye olup olmadığı", + "k5": "Bir anahtar ters olsun", + "k6": "Tam başarı", + "k7": "Ters başarı", + "k8": "Satın almak için lütfen giriş yapın", + "k9": "Lütfen abonelik kodunu girin" + }, + "otc": { + "a0": "Lütfen işlem türünü seçin", + "a1": "Satın almak", + "a2": "Satmak", + "a3": "İşlem para birimi", + "a4": "Lütfen para birimini seçin", + "a5": "miktar", + "a6": "Lütfen miktarı girin", + "a7": "fiyat", + "a8": "Lütfen fiyatı girin", + "a9": "En düşük tek işlem", + "b0": "En yüksek tek işlem", + "b1": "Alipay", + "b2": "Wechat", + "b3": "banka kartı", + "b4": "Uyarılar", + "b5": "Lütfen bir not girin", + "b6": "Başarılı", + "b7": "satın al", + "b8": "satmak", + "b9": "İptal edildi", + "c0": "işlemde", + "c1": "Tamamlandı", + "c2": "reklam kimliği", + "c3": "durum", + "c4": "Toplam fiyat", + "c5": "birim fiyat", + "c6": "Kalan", + "c7": "serbest bırakma zamanı", + "c8": "Ödeme şekli", + "c9": "işletme", + "d0": "raf dışı", + "d1": "Mevcut reklamın kaldırılıp kaldırılmayacağı", + "d2": "İpuçları", + "d3": "İptal başarılı", + "d4": "sipariş detayları", + "d5": "sipariş numarası", + "d6": "Ödemek", + "d7": "isim", + "d8": "hesap numarası", + "d9": "banka hesabı", + "e0": "Hesap açma şubesi", + "e1": "kalan zaman", + "e2": "Dakika", + "e3": "ikinci", + "e4": "ödeme fişi", + "e5": "Ödeme QR kodunu yükleyin", + "e6": "Lütfen ödeme verici yükleyin", + "e7": "alıcıların yüklemesini bekliyor", + "e8": "emiri iptal et", + "e9": "ödemeyi onaylayın", + "f0": "alınmamış", + "f1": "koleksiyonun onaylaması", + "f2": "şu anda düzeni iptal", + "f3": "Tamam", + "f4": "iptal", + "f5": "emir iptal edildi", + "f6": "şu anda ödemeyi onaylayın", + "f7": "operation succeeded", + "f8": "koleksiyonu doğruladıktan sonra satılacak malları otomatik olarak aktarılacak", + "f9": "ödemenin alınmadığını doğruladıktan sonra, bu emir otomatik olarak apel moduna girecek", + "g0": "reklam", + "g1": "kullanıcılar", + "g2": "toplam", + "g3": "sınırlı", + "g4": "ödeme yöntemi", + "g5": "toplam miktar", + "g6": "düzeni başarıyla", + "g7": "satış emri", + "g8": "alış emiri", + "g9": "reklam satın emri", + "h0": "reklam satış düzeni", + "h1": "hepsi", + "h2": "kapalı", + "h3": "ödeyecek", + "h4": "onaylanacak", + "h5": "şikayet altında", + "h6": "number of transactions", + "h7": "ticaret ortağı", + "h8": "zaman", + "h9": "detaylar", + "i0": "lütfen hesap numarasını girin", + "i1": "Lütfen bir isim girin", + "i2": "Kolleksiyon QR kodu", + "i3": "kurtar", + "i4": "banka adı", + "i5": "Lütfen banka adını girin", + "i6": "Lütfen hesap açılış dalgalarını girin", + "i7": "banka kartı hayır", + "i8": "Lütfen banka kartını hayır girin", + "i9": "başarıyla düzenlenmiş", + "j0": "başarıyla eklendi", + "j1": "yasal para hesabı", + "j2": "mal", + "j3": "Mevcut denge", + "j4": "donmuş denge", + "j5": "legal currency transaction", + "j6": "reklamlarım", + "j7": "emirim", + "j8": "reklam", + "j9": "Tek tıkla satın alma", + "k0": "Tek tıkla satış", + "k1": "satın alma fiyatı", + "k2": "Satın alma miktarı", + "k3": "Satış miktarı", + "k4": "Satılan miktar", + "k5": "Lütfen satın alma tutarını girin", + "k6": "Lütfen satın alma miktarını girin", + "k7": "Lütfen satış tutarını girin", + "k8": "Lütfen satılan miktarı giriniz", + "k9": "miktara göre satın al", + "l0": "Yasal para birimi işlem açıklaması", + "l1": "Minimum işlem hacmi", + "l2": "satın almayı onayla", + "l3": "satışı onayla", + "l4": "Yetersiz bakiye", + "l5": "sipariş zamanı", + "l6": "Lütfen ödeme yöntemini seçin", + "l7": "Alacaklı", + "l8": "anormal koleksiyon", + "l9": "Lütfen işlem şifresini girin", + "m0": "ücretli", + "m1": "sınav geçti", + "m2": "Denetim hatası", + "m3": "sipariş sonu", + "m4": "siparişi iptal et" + }, + "cxiNewText": { + "a0": "En iyi 10", + "a1": "5 milyon+", + "a2": "< 0.10%", + "a3": "200+", + "a4": "Küresel Sıralama", + "a5": "Kullanıcılar bize güveniyor", + "a6": "Ultra Düşük Ücretler", + "a7": "Ülkeler", + "a21": "hemen gelir elde et", + "a22": "Kişisel bir kripto para portföyü oluştur", + "a23": "100'den fazla kripto para birimi satın alın, ticaret yapın ve tutun", + "a24": "Hesabı şarj et", + "a25": "E-posta ile kaydol", + "a38": "İşlemleri istediğiniz zaman, istediğiniz yerde açın.", + "a39": "APP ve web sayfamız aracılığıyla istediğiniz zaman güvenli ve rahat bir şekilde işlem yapmaya başlayın", + "a40": "APP'yi indirmek için QR kodunu tarayın", + "a41": "Güvenilir bir kripto para ticaret platformu", + "a42": "Katı protokoller ve endüstri lideri teknik önlemlerle kullanıcıların güvenliğini sağlamaya kararlıyız.", + "a43": "Kullanıcı güvenlik varlık fonları", + "a44": "Kullanıcı fonlarına kısmi koruma sağlamak için tüm işlem ücretlerinin %10'unu güvenli varlık fonlarında saklıyoruz", + "a45": "Kişiselleştirilmiş Erişim Kontrolü", + "a46": "Kişiselleştirilmiş erişim kontrolü, kullanıcıların endişelenmemesi için kişisel hesap cihazlarına ve adreslerine erişimi kısıtlar.", + "a47": "Gelişmiş Veri Şifreleme", + "a48": "Kişisel işlem verileri uçtan uca şifreleme ile korunmaktadır ve kişisel bilgilere yalnızca kişi erişebilir.", + "a57": "Gitmek için tıklayın", + "a71": "Başlangıç Kılavuzu ", + "a72": "Dijital döviz ticareti öğrenmeye hemen başlayın ", + "a77": "Dijital para birimi nasıl alınır ", + "a78": "Dijital para birimi nasıl satılır ", + "a79": "Dijital Para Birimleri Nasıl Ticaret Yapılır?", + "a80": "Pazar yeri", + "a81": "24 saat piyasa trendi", + "a82": "Cüzdanınıza kripto para birimi fonları ekleyin ve anında işlem yapmaya başlayın" + }, + "homeNewText": { + "aa1": "Kripto Para Kapısı", + "aa2": "100'den fazla kripto para biriminde güvenli, hızlı ve kolay ticaret", + "aa3": "E-posta yoluyla kayıt olun", + "aa4": "Şimdi ticarete başlayın", + "aa5": "piyasa eğilimi", + "aa6": "Dijital Varlık Fiyat Teklifi Ekspres", + "aa7": "Para birimi", + "bb1": "Son fiyat (USD)", + "bb2": "24 saatlik artış", + "bb3": "24 saatlik işlem hacmi", + "bb4": "Herkes için kripto para borsası", + "bb5": "Burada işlem yapmaya başlayın ve daha iyi bir kripto para birimi yolculuğunu deneyimleyin", + "bb6": "kişisel", + "bb7": "Herkes için bir kripto para borsası. Çok çeşitli para birimleriyle en güvenilir lider ticaret platformu", + "cc1": "İşletme", + "cc2": "İşletmeler ve kurumlar için tasarlandı. Kurumsal yatırımcılara ve işletmelere kripto çözümleri sağlamak", + "cc3": "Geliştirici", + "cc4": "Geliştiriciler için, geliştiricilerin web3'ün geleceğinin araçlarını ve API'lerini oluşturmaları için tasarlandı", + "cc6": "QR kodunu tarayın", + "cc7": "Android/IOS Uygulamasını İndirin", + "dd1": "Sıfır kazayla güvenli ve istikrarlı", + "dd2": "Çoklu güvenlik stratejileri ve %100 rezerv garantisi, kuruluşundan bu yana hiçbir güvenlik olayının yaşanmamasını sağlar.", + "dd3": "Kripto varlıklarıyla basit ve rahat bir şekilde ticaret yapın", + "dd4": "CXIsuxx'te ürünlerin anlaşılması kolaydır, işlem süreci uygundur ve tek noktadan blockchain varlık hizmeti platformu", + "dd5": "Türevler", + "dd6": "100'den fazla kripto para birimindeki sözleşmelerle 150 katına kadar kaldıraçla işlem yapabilir ve yüksek kar elde edebilirsiniz", + "ee1": "Çoklu terminal desteği", + "ee2": "Dijital varlıklarla istediğiniz zaman, istediğiniz yerde ticaret yapın", + "ee3": "Tüm para birimi bilgilerinin mevcut olduğu çok çeşitli varlık türlerini destekler", + "ee4": "Dijital varlık alım satım sürecini hızla anlayın", + "ee5": "Şifreleme yolculuğunuza başlayın", + "ee6": "Grafiksel doğrulama", + "hh0": "Dünyanın önde gelen borsalarıyla en iyi ticaret deneyimini paylaşın", + "hh1": "İyi ticaret fırsatları arıyorum", + "hh2": "100'den fazla kripto para biriminin ticareti güvenli, hızlı ve kolay", + "hh3": "Ürünlerimiz hakkında bilgi edinin", + "hh4": "Burada işlem yapmaya başlayın ve daha iyi bir kripto para birimi yolculuğunu deneyimleyin", + "hh5": "Spot ticaret", + "hh6": "İndirimli işlem ücretleriyle 100'ün üzerinde kripto para birimini alıp sat", + "hh7": "Sözleşme işlemi", + "hh8": "USDT kalıcı sözleşmesiyle gelirinizi artırın", + "hh9": "Kripto varlıklarının basit ve rahat ticareti", + "hh10": "Ürünlerin anlaşılması kolay, işlem süreci uygun ve tek noktadan blockchain varlık hizmeti platformu", + "hh11": "Fon Yönetimi", + "hh12": "Çeşitli staking ürünlerimizle yüksek getiri elde edin", + "hh13": "Türevler", + "hh14": "100'den fazla kripto para sözleşmesiyle 150x'e kadar kaldıraçla işlem yapabilir ve yüksek kar elde edebilirsiniz", + "hh15": "Sıfır kazayla güvenli ve istikrarlı", + "hh16": "Çoklu güvenlik politikası garantisi, %100 rezerv garantisi ve kuruluşundan bu yana herhangi bir güvenlik olayı yaşanmamıştır.", + "hh17": "Neden BXRCO'i seçmelisiniz", + "hh18": "Güvenilir Kripto Para Borsanız", + "hh19": "Güvenlik", + "hh20": "BXRCO 2020'den bu yana kendi geliştirdiği sistemiyle istikrarlı ve güvenilir bir şekilde çalışıyor.", + "hh21": "Hizmet", + "hh22": "Servis merkezinden anında yanıt alabilir veya 7/24 e-posta yoluyla bize ulaşabilirsiniz.", + "hh23": "Kullanımı kolay", + "hh24": "BXRCO, kripto para ticareti yapmayı kolaylaştırıyor. Tek tıklamayla coin satın alın ve kısa süreli para kazanma fırsatını asla kaçırmayın.", + "hh25": "Esnek alım ve satım", + "hh26": "Çeşitli kripto para birimleri işlemleri destekler, trendi takip eder, böylece hiçbir zenginlik fırsatını kaçırmazsınız.", + "hh27": "İşlemler 1 dakika içinde başlıyor", + "hh28": "Ücretsiz bir BXRCO hesabı oluşturun", + "hh29": "Sertifikanın tamamlanması", + "hh30": "İşlemi gerçekleştir", + "hh31": "Her yerde ticaret yapın", + "hh32": "Uygulamamız ve masaüstü istemcimizden haberdar olun.", + "hh33": "Şimdi indirmek için kodu tarayın", + "hh34": "Kayıt olun ve ticarete başlayın!", + "hh35": "Şimdi kaydolun", + "hh36": "Şimdi e-posta yoluyla kaydolun", + "hh37": "Classificação Global", + "hh38": "os usuários confiam em nós", + "hh39": "Taxas ultrabaixas", + "hh40": "Países", + "hh41": "BXRCO, her zaman, her yerde işlem yapın", + "hh42": "Şimdi işlem yap", + "hh43": "BXRCO APP'i indirmek için QR kodunu tarayın" + } +} diff --git a/src/i18n/tw.json b/src/i18n/tw.json new file mode 100644 index 0000000..5f2a364 --- /dev/null +++ b/src/i18n/tw.json @@ -0,0 +1,1180 @@ +{ + "nav": { + "assets": "資產", + "contract": "合約帳戶", + "transfer": "資金劃轉", + "excOrders": "現貨委託", + "contractOrders": "合約委託", + "fundHistory": "充提記錄", + "security": "帳號安全", + "invite": "邀請好友", + "login": "請先登錄進行操作", + "tips": "系統提示", + "set": "請先設定一個合適的價格", + "a1": "價格不能為空或零", + "a2": "數量不能為空或零", + "a3": "數量不能少於", + "a4": "買入的市價單總量不能為空或零", + "a5": "買入的市價單總量不能小於", + "a6": "賣出的市價單數量不能為空或零", + "a7": "賣出的市價單數量不能少於", + "a8": "止盈止損單觸發價不能為空或零", + "a9": "止盈止損-限價單限價不能為空或零", + "b1": "止盈止損-限價單數量不能為空或零", + "b2": "止盈止損-市價單觸發價不能為空或零", + "b3": "止盈止損-市價買入的總量不能為空或零", + "b5": "止盈止損-市價買入的總量不能少於", + "b6": "止盈止損-市價賣出的數量不能為空或零", + "b7": "止盈止損-市價賣出的數量不能小於", + "b8": "頁面斷開連接,請重繪或稍後再試!", + "c1": "購買{amount}枚{name}代幣可獲{rate}%獎勵", + "c2": "申購活動", + "c3": "發行總量", + "c4": "流通總量", + "c5": "發行價格", + "c6": "發行時間", + "c7": "白皮書地址", + "c8": "官網地址", + "c9": "簡介", + "rejection":"拒絕理由" + }, + "common": { + "a3": "申購記錄", + "option": "期權交易", + "exchange": "幣幣交易", + "markets": "行情", + "blogs": "部落格", + "news": "行業資訊", + "helps": "幫助中心", + "service": "服務", + "contactUs": "聯繫我們", + "sign_in": "登入", + "sign_up": "注册", + "noRecord": "暫無記錄", + "getCode": "獲取驗證碼", + "help1": "外匯合約指南", + "help2": "契约規範", + "optional": "自選", + "price": "價格", + "upAndDown": "漲跌幅", + "heigh": "最高價", + "low": "最低價", + "vol": "成交量", + "pair": "交易對", + "buy": "買", + "sell": "賣", + "buy-in": "買入", + "sell-out": "賣出", + "open-orders": "當前委託", + "condition-orders": "條件委託", + "history-orders": "委託記錄", + "limit": "限價", + "market": "市價", + "stop-limit": "止盈止損-限價", + "stop-market": "止盈止損-市價", + "limit-type": "限價交易", + "market-type": "市價交易", + "startTime": "開始時間", + "to": "至", + "confirmBtn": "確認", + "cancelBtn": "取消", + "cancel": "撤銷", + "endTime": "結束時間", + "export": "匯出", + "filter": "篩選器", + "all": "不限", + "search": "檢索", + "reset": "重置", + "hideAll": "隱藏所有已取消委託", + "canceled": "已取消", + "waiting": "待撮合", + "triggered": "已觸發", + "processing": "撮合中", + "completed": "已完成", + "available_phone": "請輸入正確的手機號碼", + "available_email": "請輸入正確的郵箱", + "codeSent": "驗證碼已發送", + "captcha": "驗證碼錯誤", + "created": "時間", + "order-price": "委託價格", + "order-amount": "委託數量", + "order-total": "訂單總額", + "avg-price": "平均價格", + "direction": "方向", + "order-type": "類型", + "executed-amount": "已撮合", + "executed-total": "成交额", + "outstanding": "待撮合", + "status": "狀態", + "details": "詳情", + "action": "操作", + "id": "訂單編號", + "filled-price": "成交價", + "filled-amount": "成交數量", + "filled-total": "成交金額", + "fee": "手續費", + "enterValid": "請輸入有效的手機號碼或電子郵件!", + "enterValidEmail": "請輸入正確的郵箱地址", + "enterValidPhone": "請輸入有效的手機號碼!", + "enterAccount": "請輸入帳戶", + "enterEmail": "請輸入正確的郵箱地址", + "enterPhone": "請輸入手機號碼", + "enterPwd": "請輸入密碼", + "passwordRegular": "密碼必須由8至15比特數位與字母組成(必須同時包含數位與字母,也可使用符號)。", + "newPassword": "請輸入新密碼", + "confirmNewPassword": "請輸入確認的新密碼", + "enterGoogleCode": "請輸入穀歌驗證碼", + "enterEmailCode": "請輸入郵箱驗證碼", + "enterSMSCode": "請輸入簡訊驗證碼", + "enterVerCode": "請輸入驗證碼", + "exportFile": "請點擊確認以匯出檔案。", + "submit": "提交", + "newzone": "打新專區", + "college": "學院", + "goTo": "前往", + "logOut": "登出", + "homepage": "首頁", + "application": "上幣申請", + "purchase": "申購", + "accountInformation": "帳戶資訊", + "myWallet": "我的錢包", + "commissionOrder": "委託訂單", + "securitySetting": "安全設置", + "wallet": "錢包", + "allAssets": "所有資產", + "contractaccount": "合約帳戶", + "transferFunds": "資金劃轉", + "rechargeWithdraw": "充值提幣", + "order": "訂單", + "spotConsignment": "現貨委託", + "optionOrders": "期權訂單", + "perpetualContract": "永續合約", + "foreignContract": "外匯合約", + "notCertified": "未認證", + "notData": "暫無數據", + "assets": "資產", + "myCommission": "我的返傭", + "addressManagement": "地址管理", + "auth": "實名認證", + "invitationReward": "邀請獎勵", + "visitHistory": "訪問記錄", + "noviceTutorial": "新手教程", + "tradingStrategy": "交易策略", + "industryResearch": "行業研究", + "blockchainDictionary": "區塊鏈詞典", + "mediaCoverage": "媒體報導", + "selectFile": "選擇檔案", + "upload": "上傳", + "delete": "删除", + "tooBig": "檔案尺寸過大,不得超過", + "errorType": "檔案類型錯誤", + "resend": "重新發送", + "sms": "簡訊", + "email": "郵箱", + "sendSuccess": "驗證碼發送成功", + "retransmission": "重發", + "start-trade": "即刻開啟數字貨幣之旅", + "login": "登錄", + "register": "註冊", + "trading": "去交易", + "dark": "黑", + "light": "白", + "notMore": "沒有更多了", + "allRead": "已讀", + "newMessage": "條新的消息", + "footerTips1": "市場有風險投資需謹慎", + "footerTips2": "法律聲明:該網站由{name}公司運營", + "footerTips3": "風險提示:數位資產交易有可能導致您的本金損失,請確保您充分理解其中的風險", + "footerTips4": "受限地區:無法為特定國家/地區的居民提供服務,例如:以色列和伊斯蘭共和國", + "learn": "學院", + "GraphicValidation": "圖形驗證", + "c12": "駁回信息", + "c13": "提款密碼", + "c14": "請填写提款密碼", + "c15": "重置提款密碼", + "c35": "發送", + "c36": "關於我們" + }, + "exchange": { + "search": "蒐索", + "pair": "交易對", + "last-price": "最新價", + "change": "漲跌幅", + "order-book": "買賣盤", + "price": "價格", + "amount": "数量", + "total": "總值", + "recent-trades": "最新成交", + "time": "時間", + "order-total": "委託總值", + "balance": "可用餘額", + "enter-price": "請輸入價格", + "enter-amount": "請輸入數量", + "enter-total": "請輸入總價", + "at-best-price": "在最佳市場價格成交", + "trigger-price": "請輸入觸發價格", + "min": "分鐘", + "hour": "小時", + "day": "天", + "week": "周", + "month": "月" + }, + "login": { + "confirm-password": "確認密碼", + "resend": "重新發送", + "sms": "簡訊", + "sendOK": "驗證碼發送成功!", + "enterPhoneEmail": "請輸入電子郵箱", + "effectivePhoneEmail": "請輸入有效的手機或者郵箱", + "enterPasswrod": "請輸入{num}比特長度的密碼", + "passwordLength": "密碼長度{num}比特包含字母數位的密碼", + "safe": "安全性驗證", + "googleVer": "請輸入您手機App上的{num}比特穀歌驗證碼", + "phoneCode": "請輸入發送至您手機號碼的{num}比特驗證碼", + "emailCode": "請輸入發送至您郵箱的{num}比特驗證碼", + "google-code": "谷歌驗證碼", + "email-code": "郵箱驗證碼", + "sms-code": "手機驗證碼", + "forgetPassword": "忘記密碼", + "rememberMe": "記住我", + "noAccountYet": "還沒有帳號", + "goRegister": "注册", + "safety": "安全性驗證", + "regAccount": "註冊帳號", + "email": "郵箱", + "phone": "手機", + "pleaseEmail": "請輸入郵箱地址", + "invalidEmail": "無效的郵箱地址", + "enterMobile": "請輸入手機號碼", + "invalidPhone": "無效的手機號碼", + "enterLengthPassword": "請輸入{num1}到{num2}比特長度的密碼", + "hasNumEn": "密碼需要{num}比特字母和數位組合", + "iSee": "我同意", + "terms": "條款及細則", + "reg": "注册", + "enterEmailCode": "請輸入發送至您郵箱 ({email})的{num}比特驗證碼", + "accountActivated": "以啟動帳戶", + "backOld": "回到上一步", + "verCode": "驗證碼", + "notEmail": "如果您未收到郵箱,請嘗試以下檢查操作", + "confirmEmail": "請確保您所輸入的郵箱地址是正確的", + "confing": "請檢查您郵箱的垃圾郵件資料夾", + "checkTrashCan": "請確保您的郵箱連接至穩定的互聯網", + "enterPhone1": "請輸入發送至您手機號", + "enterPhone2": "的{num}比特驗證碼", + "smsNotReceived": "如果您未收到簡訊,請嘗試以下檢查操作", + "phoneCorrect": "請確保您所輸入的手機號和地區號是正確的", + "securePhone": "請確保您的手機信號穩定", + "hasAccount": "已經有一個帳號", + "toLogin": "前往登入", + "securityVerification": "安全性驗證", + "disagree": "您還沒有同意條款", + "registrationSuccess": "注册成功,正在跳轉登入頁面", + "referrer": "推薦人", + "referrer1": "請填寫推薦人", + "c6": "邀請碼(必填)", + "c7": "請填寫邀請碼", + "optional": "選填", + "password": "密碼", + "login": "登入", + "country": "區號", + "sign-in": "登錄", + "confirmpassword": "兩次密碼不一致", + "find-password": "重設登入密碼", + "enter-account": "輸入註冊信箱", + "submit": "提交", + "Remembered": "還記得你的密碼?", + "new-password":"新密碼" + }, + "application": { + "form": "項目上幣申請表", + "sendUser": "項目發起方", + "sendUserEn": "幣種英文名", + "sendUserCn": "幣種中文名", + "contactPosition": "連絡人及職位", + "phone": "連絡人電話", + "tokenPrice": "市價", + "email": "連絡人郵箱", + "address": "項目注册地", + "mechanism": "項目投資機構", + "personal": "個人", + "currencyCode": "幣種程式碼", + "symbol": "符號", + "currencyIdentification": "幣種標識", + "format": "支持{name}格式,檔案小於{num}", + "fundraisingDate": "募資日期", + "officialWebsite": "官方網站", + "whitePaperLinks": "白皮書連結", + "noLink": "若無連結,請文末上傳附件", + "total_issue": "幣種總發行量", + "currencyCirculation": "幣種流通量", + "currencyAllocationRatio": "幣種分配比例", + "numberOfCurrencyHolders": "持幣人數", + "tradingPlatform": "已上線交易平臺", + "privatePlacement": "私募", + "publicOfferingPrice": "公募價格", + "company": "請附上貨幣單位", + "coinType": "幣種區塊網絡類型", + "currencyIssueDate": "幣種發行日期", + "blockBrowser": "區塊瀏覽器", + "officialAddress": "官方錢包地址", + "contractAddress": "合約地址", + "link": "連結", + "budget": "上幣費預算", + "unit": "為組織", + "ofTokens": "上幣後市場活動項目代幣數量", + "chineseCurrency": "幣種中文介紹", + "enCurrency": "幣種英文介紹 ", + "remarks": "備註", + "uploadWhitePaper": "上傳白皮書", + "pleaseUpload": "請上傳白皮書", + "recommendationCode": "推薦人姓名機构及推薦碼", + "ifSo": "若有", + "affirmsThat": "申明:我在此確認上述所有資訊均真實,完整和準確。我將在經濟上和法律上承擔提供虛假資訊的責任", + "iKnow": "我知道了", + "reSubmit": "重新提交", + "pleaseConfirm": "請確認以上均為真實資訊", + "pleaseEnter": "請輸入", + "upLoadSuccess": "上傳成功" + }, + "wallet": { + "auth": "請先進行實名認證", + "obtain": "獲取充值地址", + "inside": "內部資金劃轉", + "from": "從", + "history": "查看歷史", + "balance": "餘額", + "transferQuantity": "劃轉數量", + "capitalAccount": "資金帳戶", + "contract": "合約", + "financial": "理財帳戶", + "leverage": "杠杆帳戶", + "successful": "劃轉成功", + "confirm": "確定劃轉", + "pleaseSelect": "請選擇幣種", + "to": "至", + "assets": "資產", + "strokes": "請輸入劃轉數量", + "addressManagement1": "地址管理", + "addAddress": "添加地址", + "filter": "篩選器", + "search": "蒐索", + "selectActiveArea": "請選擇活動區域", + "areaOne": "區域一", + "areaTwo": "區域二", + "addressAssets": "地址清單", + "addressNum": "地址數量", + "fee1": "手續費", + "creationTime": "創建時間", + "detailAddress": "詳細地址", + "remarks1": "備註資訊", + "operating": "操作", + "complete": "完成", + "copy": "複製", + "editAddress": "編輯地址", + "deleteAddress": "删除地址", + "next": "上一頁", + "pre": "下一頁", + "add": "添加", + "edit": "編輯", + "address": "地址", + "selectAssets": "請選擇資產", + "drawAddress": "提幣地址", + "addressRemarks": "該地址備註", + "remarksDelete": "確定删除此地址", + "optionSuccess": "操作成功", + "allAssets": "所有資產價值", + "showNum": "顯示數位", + "contractAccount": "合約帳戶", + "marginAccount": "杠杆帳戶", + "financialAccount": "理財帳戶", + "spotAccount": "現貨帳戶", + "hide": "隱藏", + "balanceAssets": "餘額資產", + "searchCurrency": "蒐索幣種", + "addressManagement": "提幣地址管理", + "totalAssets": "總資產", + "availableBalance": "可用餘額", + "fee": "凍結餘額", + "valuation": "估值", + "recharge": "充值", + "withdrawal": "提幣", + "transaction": "交易", + "rechargeAddress": "充值地址", + "rechargeQuantity": "充值數量", + "enterQuantity": "請輸入數量", + "rechargeInstructions": "充值說明", + "automaticallyCredited": "此地址是您最新的充值地址,當系統收到充值時,將進行自動入帳。", + "tran": "轉帳需要由整個區塊鏈網絡進行確認,到達{num}個網絡確認時,您的{name}將被自動存入帳戶中。", + "only": "請只發送{name}到此地址,發送其他數位貨幣到此地址會造成永久性的損失。", + "low": "最低", + "addressList": "地址清單", + "enterDrawAddress": "請輸入提幣地址", + "invalidWallet": "不是有效的錢包地址,請重新輸入", + "withdrawalsNumber": "提幣數量", + "enterDrawNum": "請輸入提幣數量", + "withdrawalInstructions": "提幣說明", + "enterAddress": "請仔細檢查並輸入正確的提幣錢包地址。", + "notSend": "發送不對應的數位貨幣到錢包地址會造成永久性的損失。", + "deductionFee": "提幣手續費將從提幣數量中扣除。", + "submitSuccess": "提交成功,正在稽核", + "operationComplete": "您的提現申請已進⼊稽核中,預計稽核時間12⼩時,請耐⼼等待,你也可以在提現記錄⻚⾯查看狀態更新", + "rechargeRecord": "充值記錄", + "withdrawalRecord": "提幣記錄", + "assetsName": "請輸入資產名", + "selectStatus": "請選擇狀態", + "startTime": "開始日期", + "entTIme": "結束日期", + "date": "日期", + "hash": "雜湊", + "num": "數量", + "progress": "進度", + "status": "狀態", + "error": "失敗", + "success": "成功", + "underReview": "稽核中", + "handlingFee1": "手續費", + "processing": "處理中", + "transfer": "資金劃轉", + "transferDescription": "資金劃轉說明", + "handlingFee": "請注意內部資金劃轉是自動完成的,並且免手續費。", + "onlyForeignExchange": "只有{name}可被劃轉至您的外匯合約帳戶", + "onlySustainable": "只有{name}可被劃轉至您的永續合約帳戶", + "inCase1": "如果您想要交易外匯合約,您必須劃轉{name}至外匯合約帳戶中,當做保證金", + "inCase2": "如果您想要交易永續合約,您必須劃轉{name}至永續合約帳戶中,當做保證金。", + "transferRecord": "劃轉記錄", + "allTransfer": "所有資產劃轉記錄", + "direction": "方向", + "all": "全部", + "dateTime": "時間", + "UserWallet": "資產賬戶", + "ContractAccount": "合約賬戶", + "LeverageAccount": "杠杆账户", + "FinancialAccount": "理財賬戶", + "contractFlow": "合約流水", + "info": "詳情", + "money": "金額", + "Authentication": "身份認證", + "relatedassets": "此地址僅支持ETH/ERC20 相關資產" + }, + "contact": { + "contact": "聯繫我們", + "help": "需要任何幫助請聯繫我們", + "fullName": "全名", + "enterFullName": "請輸入全名", + "email": "郵箱", + "enterEmail": "請輸入郵箱地址", + "consultingService": "諮詢專案", + "pleseSelect": "請選擇", + "info": "資訊", + "enterInfo": "請輸入資訊", + "contactInformation": "聯系資訊", + "routineConsultation": "常規諮詢", + "customerService": "客戶服務", + "mediaCooperation": "媒體合作", + "submit": "提交" + }, + "college": { + "college": "學院", + "article": "部落格", + "tutorialDetails": "教程詳情", + "howToBuyBitcoin": "如何購買比特幣", + "recommendedCourse": "推薦教程", + "buy": "1分鐘購買一筆比特幣", + "register": "注册", + "visit": "訪問{name}網站,並注册屬於您的{name}帳號", + "realName": "實名認證", + "upload": "上傳有效證件,進行個人實名認證", + "quickBuy": "一鍵購買並支付款項", + "inIndex": "在首頁/買幣頁面一鍵買幣,支付完成後等待放幣", + "tradeNow": "馬上去交易", + "currencyTransaction": "秒懂幣幣交易", + "contractEntryTransaction": "合約入門交易", + "how": "如何進行期權交易", + "TradingStrategy": "交易策略", + "seeMore": "查看更多", + "industryResearch": "行業研究", + "oneClick": "一鍵智慧交易", + "inAssets": "在資產/充幣頁面一鍵充幣,完成後可交易", + "dictionary": "區塊鏈詞典", + "media": "媒體報導" + }, + "home": { + "newEra": "數位貨幣交易新時代", + "startTrading": "開始交易", + "walkingLantern": "走馬燈", + "marketCenter": "交易市场", + "optional": "自選", + "latestPrice": "價格", + "upAndDown": "漲跌幅", + "heigh": "最高價", + "low": "最低價", + "vol": "交易量", + "coinType": "交易對", + "more": "查看更多", + "multiPlatform": "多平臺下載", + "atTime": "隨時隨地", + "multiTerminal": "多平臺終端交易", + "cover": "覆蓋", + "multiTerminal1": "多個平臺", + "support": "支持全業務功能", + "down": "下載", + "news": "市場動態", + "detail": "查看詳情", + "quickly": "快速上手", + "major": "我們為投資者提供專業", + "safe": "安全的交易服務", + "login": "登入", + "reg": "注册", + "trading": "去交易", + "add": "添加成功", + "cancel": "取消成功", + "features": "核心優勢", + "partners": "投资机构 & 合作伙伴", + "perpetual_title": "外汇永续合约", + "perpetual_cont": "作为全球首创最高100倍杠杆的由稳定币结算的外汇永续合约,AMATAK外汇永续合约是快速进行外汇交易的高性价比选择。", + "stablecoin_title": "全球首家穩定幣交易中心", + "stablecoin_cont": "AMATAK構建了壹個強大的穩定幣生態環境,壹個由穩定幣交易、支付和匯款組成的完整架構,成為全球高質量穩定幣俱樂部的組成部分!", + "security_title": "無可挑剔的安全", + "security_cont": "AMATAK采用最前沿的 Ledger Vault 來保護數字貨幣的端點安全,Ledger Vault平臺為第三方盜竊、內線勾結和主種子盜竊提供高達1.5億美元的保險。存儲在AMATAK上98%以上的數字貨幣都是存放在多重簽名冷錢包中,並且采用最高標準的市場風險控制流程來保障所有用戶的資金安全。", + "service_title": "24/7 多語種實時客服", + "service_cont": "AMATAK的客服24/7隨時待命,竭盡所能為用戶提供幫助,通過實時聊天或發送郵件至support@AMATAK.com聯系客服。", + "analy_title": "高級分析工具", + "analy_cont": "交易者可在交易頁面使用不同的圖表工具和基於穩定數據的指標輔助交易。", + "liquidity_title": "優秀的流動性", + "liquidity_cont": "24/7隨時與AMATAK交易平臺的高流動性相連。", + "technology_title": "自主開發的技術", + "technology_cont": "AMATAK交易平臺基於久經考驗的技術,由業內頂級專家打造,最大程度優化平臺功能。", + "download": "下載AMATAK移動端", + "easy": "隨時隨地,開啟掌上交易", + "skan": "立即掃碼下載", + "core_advantages": "我的覈心優勢是數據", + "about_us": "關於我們" + }, + "option": { + "waitFor": "等待交割", + "history": "歷史交割", + "orderNum": "訂單號", + "option": "期權", + "buyTime": "買入時間", + "buyAmount": "買入數量", + "buyType": "購買類型", + "yield": "收益率", + "state": "狀態", + "deliverytime": "交割時間", + "countDown": "交割倒數計時", + "buyingUp": "買漲", + "buyDwon": "買跌", + "buyEven": "買平", + "result": "交割結果", + "settlementQuantity": "結算數量", + "up": "漲", + "down": "跌", + "flat": "平", + "buyOption": "購買期權", + "deliveryRecord": "交割記錄", + "current": "當前", + "next": "下期", + "enterNum": "請輸入數量", + "balance": "餘額", + "expectedRevenue": "預計收益", + "seeMore": "看多", + "beBearish": "看空", + "time": "時間", + "zf": "漲幅", + "bullish": "看漲", + "lookAtPing": "看平", + "bearish": "看跌", + "amount": "數量", + "coinType": "幣種", + "odds": "賠率", + "buySuccess": "买入成功" + }, + "order": { + "noData": "暫無成交記錄", + "ifCancel": "是否撤銷當前訂單", + "cancelSuccess": "撤銷成功", + "marketPrice": "市價交易", + "fixedPrice": "限價交易", + "sell": "賣出", + "buy": "買入", + "exchangeRecord": "交易記錄", + "see": "查看", + "opt": "操作", + "status": "狀態", + "time": "時間", + "tradingPair": "交易對", + "direction": "方向", + "type": "類型", + "averagePrice": "平均價格", + "price": "價格", + "matched": "已撮合", + "totalAmountEntrusted": "委託總量", + "total": "總計", + "toMatch": "未撮合", + "operation": "操作", + "reset": "重置", + "search": "蒐索", + "to": "至", + "startTime": "開始日期", + "endTime": "結束日期", + "select": "請選擇", + "entrustType": "委託類型", + "spotConsignment": "現貨委託", + "surrentCommission": "當前委託", + "commissionRecord": "委託記錄", + "optionTransaction": "期權交易", + "orderNum": "訂單號", + "timeSharing": "分時", + "yield": "收益率", + "buyNum": "購買數量", + "upAndDown": "漲跌幅", + "settlementQuantity": "結算數量", + "transactionPrice": "成交價格", + "tradingVolume": "交易量", + "aTurnover": "交易額", + "serviceCharge": "手續費", + "cancel": "撤銷", + "buyTime": "購買時間", + "buyUp": "買漲", + "buyDown": "買跌", + "buyLevel": "買平" + }, + "profile": { + "tips": "提幣限額,如需更多提幣額度,請完成⾼級認證", + "SelectAreaCode": "選擇區號", + "driverLicense": "駕駛證", + "country": "國家", + "country1": "請輸入國家", + "realName": "實名認證", + "primaryCertification": "初級認證", + "advancedCertification1": "高級認證申請", + "advancedCertification2": "高級認證申請已提交", + "toExamine": "稽核", + "fullName": "姓名", + "legal": "法定", + "pleaseEnterName": "請輸入姓名", + "dateOfBirth": "出生日期", + "selectDate": "选择日期", + "documentType": "證件類型", + "pelaseSelect": "請選擇", + "certificateNumber": "證件號", + "endterIDNumber": "请输入证件号", + "addressInfo": "地址資訊", + "residentialAddress": "居住地址", + "residentialAddress1": "請輸入居住地址", + "ciy": "城市", + "incity": "請輸入所在都市", + "postalCode": "郵遞區號", + "thePostcode": "請輸入郵遞區號", + "additionalInformation": "額外資訊", + "optional": "选填", + "contactInformation": "聯系資訊", + "phoneNumber": "電話號碼", + "enterPhoneNumber": "請輸入手機號", + "clickUpload1": "點擊上傳文件並提交身份驗證時,即表示您已閱讀並同意我們的服務條款及隱私協定。", + "pelaseDownload": "請從以下檔案中選擇一份未過期的", + "passport": "護照", + "drivingLicense": "駕照", + "iD": "身份證", + "upload": "進行上傳", + "explain": "說明", + "unexpired": "未過期證件檔案可以是圖片或掃描件", + "pleaseConfirm": "請確證件照上的所有細節是清晰的,且未被遮蓋", + "fileFormat": "檔案格式", + "maximumFileSize": "最大文件大小", + "positive": "證件正面", + "theOtherSide": "證件反面", + "hold": "手持證件", + "dragHere": "拖到此處,或", + "clickUpload": "點擊上傳", + "uploadPhoto": "請上傳證件正面照", + "reversePhoto": "請上傳證件反面照", + "uploadIDCard": "請上傳手持證件照", + "nextStep": "下一步", + "inSubmit": "您的驗證申請已提交!我們將在獲得結果的第一時間通知您", + "gotIt": "知道了", + "congratulations": "恭喜您", + "back": "返回", + "resetApply": "是否重新申請。", + "recertification": "重新認證", + "userInfo": "帳戶資訊", + "verState": "認證狀態", + "max": "最大", + "limitH": "小時提幣限額。", + "verLeave": "驗證級別", + "exceed": "超過", + "contactUs": "聯繫我們", + "inviteFriends": "邀請好友", + "dividends": "邀請好友使用{name},獲得好友未來交易手續費的{num}作為分紅獎勵。", + "sendInvitation": "發送邀請", + "resetPassword": "重置密碼", + "forLoginAccount": "用於登入帳戶。", + "clickReset": "點擊重置", + "registrationDecord": "登入記錄", + "recording": "用於顯示詳細歷史登入記錄", + "recordingDEtail": "詳細記錄", + "invitationReward": "邀請獎勵", + "inviteUse": "邀請好友使用", + "futureCommission": "獲得好友未來交易手續費的{num}作為分紅獎勵", + "joinThePlan": "加入{name}用戶邀請分紅計畫", + "checkMyDividend": "查看我的分紅", + "step1": "第一步", + "shareLink": "分享連結", + "step2": "第二步", + "shareFriend": "邀請好友", + "step3": "第三步", + "instantDividend": "立享分紅", + "invitationInformation": "邀請資訊", + "invitationLink": "邀請連結", + "invitationCode": "邀請碼", + "registeredUser": "已註冊用戶", + "accountNumber": "帳號", + "registrationTime": "註冊時間", + "activityTerms": "活動條款", + "handlingFeeDividend": "手續費分紅", + "equalInvitee": "等於被邀人", + "fee": "的交易手續費", + "afterThat": "將在被邀人交易後", + "follow": "分鐘內轉入邀請人帳戶。", + "limit": "活動遵循以下開始和結束時間,僅限於活動開始時間後且活動結束時間前的有效帳戶可獲得", + "activityStartTime": "活動開始時間", + "Y": "年", + "M": "月", + "D": "日", + "endTime": "活動結束時間", + "proceed": "持續進行", + "atAnyTime": "保留隨時修改,暫停,或終止{name}用戶邀請計畫的權利,且恕不另行通知", + "reservedRights": "保留不為重複帳戶或虛假帳戶發放手續費分紅的權利", + "canDecide": "可全權决定接受或拒絕特定被引入或被邀請至{name}平臺{link}的用戶", + "bill": "访问记录", + "date": "日期", + "address": "地點", + "equipment": "設備", + "preliminary": "初步認證成功", + "clickToVerify": "點擊驗證", + "clickToVerify1": "已完成", + "tips1": "初級認證:要選取現金,您需要完成高級認證。", + "tips2": "高級認證:最高5000USDT 24小時提款限額。 如需更多取款金額,請聯系客服" + }, + "setting": { + "smsVer": "簡訊驗證", + "enterCode": "請輸入驗證碼", + "emailVer": "郵箱驗證", + "enterEmailVer": "請輸入郵箱驗證碼", + "ver": "驗證", + "enterNameCode": "請輸入{name}驗證碼", + "openSuccess": "開啟成功", + "closeSuccess": "關閉成功", + "email": "郵箱", + "enterEmail": "請輸入郵箱", + "emailVerCode": "郵箱驗證碼", + "enterSmsCode": "請輸入簡訊驗證碼", + "bind": "綁定", + "unbind": "解綁", + "bindSuccess": "綁定成功", + "unbindSuccess": "解綁成功", + "scanQrCode": "請掃描二維碼", + "howToOpen": "瞭解如何開啟{name}二次驗證", + "read": "點擊此處閱讀安裝資訊", + "verKey": "驗證金鑰", + "safeSetting": "安全設置", + "loginPassword": "登入密碼", + "resLoginPassword": "重置登入密碼", + "transactionPassword": "交易密碼", + "usedFor": "用於提交合約和現貨委託", + "notOpen": "未開啟", + "modifyPassword": "修改密碼", + "setPassword": "設置密碼", + "verCode": "驗證碼", + "forLogin": "用於登入、提幣和安全設置變更", + "alLast": "至少開啟一種驗證管道", + "close": "關閉", + "open": "開啟", + "phone": "手機號碼", + "area": "請輸入區號", + "enterPhone": "請輸入手機號", + "newPassword": "新密碼", + "passwordIs": "交易密碼為{num}比特數位", + "enterNewPassword": "請輸入新密碼", + "confirmPassword": "確認密碼", + "pleaseConfirmPassword": "請確認密碼", + "operationSuccess": "操作成功", + "combination": "密碼需要字母和數位組合", + "changeSuccess": "修改成功" + }, + "purchase": { + "sendPrice": "發行價", + "subscriptionCurrency": "申購幣種", + "expected": "預計上線時間", + "startTime": "開始申購時間", + "applyForPurchase": "結束申購時間", + "enterNum": "請輸入數量", + "all": "所有", + "subscribeNow": "立即申購", + "subscriptionCycle": "申購週期", + "projectWarmUp": "項目預熱", + "startSubscription": "開始申購", + "endOfSubscription": "結束申購", + "announceResults": "公佈結果", + "projectCetails": "項目詳情", + "useOrNot": "是否使用", + "subscribe": "申購", + "prompt": "提示", + "subscribeSuccess": "申購成功" + }, + "contract": { + "a0": "合約賬戶", + "a1": "資金劃轉", + "a2": "賬戶權益", + "a3": "可用", + "a4": "持倉保證金", + "a5": "委託凍結", + "a6": "未實現盈虧", + "a7": "風險率", + "a8": "預估強平價", + "a9": "合約", + "b0": "槓桿", + "b1": "時間", + "b2": "交易類型", + "b3": "已成交", + "b4": "委託總量", + "b5": "成交均價", + "b6": "委託價格", + "b7": "保證金", + "b8": "手續費", + "b9": "狀態", + "c0": "操作", + "c1": "撤單", + "c2": "撤銷", + "c3": "是否撤銷當前訂單", + "c4": "取消", + "c5": "確定", + "c6": "已撤銷", + "c7": "未成交", + "c8": "部分成交", + "c9": "全部成交", + "d0": "買入開多", + "d1": "買入平空", + "d2": "賣出開空", + "d3": "賣出平多", + "d4": "撤銷成功", + "d5": "開倉", + "d6": "平倉", + "d7": "觸發價", + "d8": "價格", + "d9": "市價", + "e0": "限價", + "e1": "數量", + "e2": "張", + "e3": "所需保證金", + "e4": "多倉持倉", + "e5": "空倉持倉", + "e6": "看漲", + "e7": "可開", + "e8": "看跌", + "e9": "可平", + "f0": "的價格", + "f1": "開多", + "f2": "開空", + "f3": "是否以", + "f4": "倍槓桿", + "f5": "委託成功", + "f6": "平倉成功", + "f7": "盤口", + "f8": "實時成交", + "f9": "全部", + "g0": "買", + "g1": "賣", + "g2": "累計", + "g3": "最新價", + "g4": "詳情", + "g5": "歷史記錄", + "g6": "成交時間", + "g7": "持倉", + "g8": "可平量", + "g9": "開倉平均價", + "h0": "收益率", + "h1": "市價平倉", + "h2": "是否以市價全平", + "h3": "全平", + "h4": "成功", + "h5": "交易對", + "h6": "漲跌幅", + "h7": "最高價", + "h8": "最低價", + "h9": "成交量", + "i0": "持有倉位", + "i1": "當前委託", + "i2": "歷史委託", + "i3": "方向", + "i4": "多", + "i5": "空", + "i6": "僅顯示當前", + "i7": "止盈", + "i8": "止損", + "i9": "止盈止損", + "j0": "盈虧", + "j1": "最新成交價", + "j2": "開倉均價", + "j3": "止盈觸發價格", + "j4": "止損觸發價格", + "j5": "市價至", + "j6": "時將觸發止盈委託,成交後預計盈虧", + "j7": "時將觸發止損委託,成交後預計盈虧", + "j8": "開通永續合約", + "j9": "開通成功", + "k0": "設置成功", + "k1": "結算盈虧", + "k2": "一鍵全平", + "k3": "一鍵反向", + "k4": "是否一鍵全平", + "k5": "是否一鍵反向", + "k6": "全平成功", + "k7": "反向成功", + "k8": "請先登錄進行申購 ", + "k9": "請輸入認購碼", + "l1": "漲幅比例", + "l2": "保證金" + }, + "otc": { + "a0": "請選擇交易類型", + "a1": "買入", + "a2": "賣出", + "a3": "交易幣種", + "a4": "請選擇幣種", + "a5": "數量", + "a6": "請輸入數量", + "a7": "價格", + "a8": "請輸入價格", + "a9": "單次交易最低", + "b0": "單次交易最高", + "b1": "支付寶", + "b2": "微信", + "b3": "銀行卡", + "b4": "備註", + "b5": "請輸入備註", + "b6": "發布成功", + "b7": "購買", + "b8": "出售", + "b9": "已撤銷", + "c0": "交易中", + "c1": "已完成", + "c2": "廣告編號", + "c3": "狀態", + "c4": "總價", + "c5": "單價", + "c6": "剩餘", + "c7": "發佈時間", + "c8": "收款方式", + "c9": "操作", + "d0": "下架", + "d1": "是否下架當前廣告", + "d2": "溫馨提示", + "d3": "撤銷成功", + "d4": "訂單詳情", + "d5": "訂單號", + "d6": "支付", + "d7": "姓名", + "d8": "賬號", + "d9": "開戶銀行", + "e0": "開戶支行", + "e1": "剩餘時間", + "e2": "分", + "e3": "秒", + "e4": "支付憑證", + "e5": "上傳收款二維碼", + "e6": "請上傳支付憑證", + "e7": "等待買家上傳", + "e8": "取消訂單", + "e9": "確認付款", + "f0": "未到賬", + "f1": "確認收款", + "f2": "是否取消當前訂單", + "f3": "確定", + "f4": "取消", + "f5": "訂單已取消", + "f6": "確認當前已付款", + "f7": "操作成功", + "f8": "確認收款後將掛賣資產將自動劃轉", + "f9": "確認未收到款項後,此訂單將自動進入申訴", + "g0": "發布廣告", + "g1": "用戶", + "g2": "總數", + "g3": "限量", + "g4": "支付方式", + "g5": "總量", + "g6": "下單成功", + "g7": "出售訂單", + "g8": "購買訂單", + "g9": "廣告購買訂單", + "h0": "廣告出售訂單", + "h1": "全部", + "h2": "已關閉", + "h3": "待支付", + "h4": "待確認", + "h5": "申訴中", + "h6": "交易數量", + "h7": "交易對象", + "h8": "時間", + "h9": "詳情", + "i0": "請輸入賬號", + "i1": "請輸入姓名", + "i2": "收款二維碼", + "i3": "保存", + "i4": "銀行名稱", + "i5": "請輸入銀行名稱", + "i6": "請輸入開戶支行", + "i7": "銀行卡號", + "i8": "請輸入銀行卡號", + "i9": "編輯成功", + "j0": "添加成功", + "j1": "法幣賬戶", + "j2": "資產", + "j3": "可用餘額", + "j4": "凍結餘額", + "j5": "法幣交易", + "j6": "我的廣告", + "j7": "我的訂單", + "j8": "廣告", + "j9": "一鍵購買", + "k0": "一鍵出售", + "k1": "購買金額", + "k2": "購買數量", + "k3": "出售金額", + "k4": "出售數量", + "k5": "請輸入購買金額", + "k6": "請輸入購買數量", + "k7": "請輸入出售金額", + "k8": "請輸入出售數量", + "k9": "按數量購買", + "l0": "法幣交易說明", + "l1": "最小交易量", + "l2": "確認購買", + "l3": "確認出售", + "l4": "餘額不足", + "l5": "下單時間", + "l6": "請選擇支付方式", + "l7": "收款人", + "l8": "收款异常", + "l9": "請輸入交易密碼", + "m0": "已支付", + "m1": "稽核通過", + "m2": "稽核失敗", + "m3": "訂單結束", + "m4": "訂單取消" + }, + "cxiNewText": { + "a0": "前10名", + "a1": "500萬+", + "a2": "< 0.10%", + "a3": "200+", + "a4": "全球排名", + "a5": "用戶信任我們", + "a6": "超低費用", + "a7": "國家", + "a21": "立即賺取收益", + "a22": "創建個人加密貨幣投資組合", + "a23": "購買、交易和持有100多種加密貨幣", + "a24": "向賬戶充值", + "a25": "通過電子郵件註冊", + "a38": "隨時隨地,開啟交易。", + "a39": "通過我們的應用程序和網頁,隨時安全又便利地開始交易。", + "a40": "掃碼下載APP", + "a41": "值得用戶信賴的加密貨幣交易平台", + "a42": "我們終力承諾以嚴格協議和行業領先的技術措施為用戶安全駕駛護航。", + "a43": "用戶安全資產資金", + "a44": "我們將所有交易費用的10%存入與安全資產資金,為用戶資金提供部分保障。", + "a45": "個性化訪問控制", + "a46": "個性化訪問控制限制訪問個人賬戶的設備和地址,讓用戶無後顧之憂。", + "a47": "先進數據加密", + "a48": "個人交易數據通過端到端加密獲得保障,僅限本人訪問個人信息。", + "a57": "點擊前往", + "a71": "新手指引", + "a72": "即刻開啟數字貨幣交易學習", + "a77": "如何購買數字貨幣", + "a78": "如何出售數字貨幣", + "a79": "如何交易數字貨幣", + "a80": "交易市場", + "a81": "24小時市場走勢", + "a82": "將添加加密貨幣資金添加到您的錢包並立即開始交易" + }, + "homeNewText": { + "aa1": "加密貨幣之門", + "aa2": "安全,快捷,輕鬆交易超過100種加密貨幣", + "aa3": "透過電子郵件註冊", + "aa4": "立即開始交易", + "aa5": "市場趨勢", + "aa6": "數位資產行情速遞", + "aa7": "幣種", + "bb1": "最新價(USD)", + "bb2": "24h漲幅", + "bb3": "24h成交量", + "bb4": "適合所有人的加密貨幣交易所", + "bb5": "在這裡開始交易並體驗更好的加密貨幣之旅", + "bb6": "個人", + "bb7": "適合所有人的加密貨幣交易所。 最值得信賴的領先交易平台,幣種豐富", + "cc1": "商務", + "cc2": "專為企業和機構打造。 為機構投資者和企業提供加密解決方案", + "cc3": "開發者", + "cc4": "專為開發者打造,供開發人員建構web3未來的工具和API", + "cc6": "掃描二維碼", + "cc7": "下載 Android/IOS App", + "dd1": "安全穩定零事故", + "dd2": "多重安全策略保障、100%備用金保證,成立至今未發生安全事故、", + "dd3": "簡單便捷交易加密資產", + "dd4": "在CXIsux,產品簡單易懂、交易流程便捷,一站式區塊鏈資產服務平台", + "dd5": "衍生性商品", + "dd6": "您可以高達150倍的槓桿率交易100+加密貨幣的合約,賺取高額收益", + "ee1": "多終端支持", + "ee2": "隨時隨地交易數字資產", + "ee3": "支持豐富的資產種類,幣種信息一應俱全", + "ee4": "快速瞭解數字資產交易流程", + "ee5": "開啓加密之旅", + "ee6": "圖形驗證", + "hh0": "與全球領先交易所分享最佳交易體驗", + "hh1": "尋找交易良機", + "hh2": "安全,快捷,轻松交易超过100种加密货币", + "hh3": "了解我們的產品", + "hh4": "在这里开始交易并体验更好的加密货币之旅", + "hh5": "现货交易", + "hh6": "以折扣交易费买卖100多种加密货币", + "hh7": "合约交易", + "hh8": "通过USDT永续合约来提升你的收益", + "hh9": "简单便捷交易加密资产", + "hh10": "产品简单易懂、交易流程便捷,一站式区块链资产服务平台", + "hh11": "基金理财", + "hh12": "通过我们多样化的质押产品获取高收益", + "hh13": "衍生品", + "hh14": "您可以高达150倍的杠杆率交易100+加密货币的合约,赚取高额收益", + "hh15": "安全稳定零事故", + "hh16": "多重安全策略保障、100%备用金保证,成立至今未发生安全事故", + "hh17": "為什麼選擇BXRCO", + "hh18": "您值得信賴的加密貨幣交易所", + "hh19": "安全", + "hh20": "自2020年以來,BXRCO憑藉自研系統一直穩定可靠地運行.", + "hh21": "服務", + "hh22": "您可以在服務中心即時獲得解答,也可以透過電子郵件全天候聯繫我們。", + "hh23": "易用", + "hh24": "BXRCO讓交易加密貨幣變得簡單,一鍵買幣,不錯過稍縱即逝的賺錢機會。", + "hh25": "靈活買賣", + "hh26": "多種加密貨幣支持交易,緊跟潮流,讓你不錯過任何一個財富機會。", + "hh27": "1分鐘開始交易", + "hh28": "免費創建BXRCO帳戶", + "hh29": "完成認證", + "hh30": "進行交易", + "hh31": "隨處交易", + "hh32": "通過我們的應用程序和桌面客戶端隨時了解情況。", + "hh33": "立即掃碼下載", + "hh34": "註冊並開始交易吧!", + "hh35": "立即注册", + "hh36": "通过邮件立即注册", + "hh37": "Global Ranking", + "hh38": "users trust us", + "hh39": "Ultra-Low Fees", + "hh40": "Countries", + "hh41": "BXRCO,随时随地交易", + "hh42": "立即交易", + "hh43": "扫码下载BXRCO APP" + } +} diff --git a/src/i18n/ukr.json b/src/i18n/ukr.json new file mode 100644 index 0000000..df97a3d --- /dev/null +++ b/src/i18n/ukr.json @@ -0,0 +1,1038 @@ +{ + "nav": { + "assets":"активів", + "contract":"контракт", + "transfer":"Переказ коштів", + "excOrders":"Точкова комісія", + "contractOrders":"Комісія за контрактом", + "fundHistory":"Записи про внесення та зняття коштів", + "security":"Безпека рахунку", + "invite":"запросити друзів", + "login":"Будь ласка, увійдіть для роботи", + "tips":"системна підказка", + "set":"Спершу встановіть відповідну ціну", + "a1":"Ціна не може бути порожньою або нульовою", + "a2":"Кількість не може бути порожньою або нульовою", + "a3":"Кількість не може бути менше", + "a4":"Загальна сума придбаних ринкових замовлень не може бути порожньою або нульовою", + "a5":"Загальний обсяг придбаних ринкових замовлень не може бути менше", + "a6":"Кількість проданих ринкових замовлень не може бути порожньою або нульовою", + "a7":"Кількість проданих ринкових замовлень не може бути менше", + "a8":"Тригерна ціна замовлення на стоп-лосс не може бути порожньою або нульовою", + "a9":"Стоп-прибуток і стоп-ліміт обмеження замовлення не можуть бути порожніми або нульовими", + "b1":"Take Profit і Stop Loss - кількість лімітних замовлень не може бути порожньою або нульовою", + "b2":"Стоп-прибуток і стоп-лосс - тригерна ціна ринкового замовлення не може бути порожньою або нульовою", + "b3":"Стоп-прибуток і стоп-лосс - загальна сума, куплена за ринковою ціною, не може бути порожньою або нульовою", + "b5":"Стоп-прибуток і стоп-лосс - загальна сума покупок за ринковою ціною не може бути менше", + "b6":"Стоп-прибуток і стоп-лосс - продана кількість за ринковою ціною не може бути порожньою або нульовою", + "b7":"Стоп-прибуток і стоп-лосс - продана кількість за ринковою ціною не може бути менше", + "b8":"Сторінка від’єднана, оновіть або спробуйте пізніше!", + "c1": "купувати{amount}Частки{name}Знак доступний{rate}%нагорода", + "c2": "Дії підписування", + "c3":"Загальна проблема", + "c4":"Загальне обертання", + "c5":"Ціна випуску", + "c6":"Час виводу", + "c7":"Адреса білої книги", + "c8":"Офіційна адреса веб- сайта", + "c9":"brief introduction" + }, + "common": { + "a3":"Записи купу", + "option":"Обереження параметрів", + "exchange":"Операція валюти", + "markets":"цитування", + "blogs":"Блог", + "news":"Інформація про індустрію", + "helps":"Центр довідки", + "service":"служба", + "contactUs":"зв'язатися з нами", + "sign_in":"Підписатися", + "sign_up":"реєструвати", + "noRecord":"Без запису", + "getCode":"Отримати код перевірки", + "help1":"Управлення контрактів щодо іноземних обмін", + "help2":"Специфікація контракту", + "optional":"Необов' язково", + "price":"Ціна", + "upAndDown":"Вгору і вниз", + "heigh":"Найвища ціна", + "low":"мінімальна ціна", + "vol":"volume", + "pair":"Домовлятися за", + "buy":"купити", + "sell":"продати", + "buy-in":"купувати", + "sell-out":"продавати", + "open-orders":"Поточна делегація", + "condition-orders":"Умовне надання", + "history-orders":"Записи вилучення", + "limit":"фіксована ціна", + "market":"ринкова ціна", + "stop-limit":"Зупинити прибуток і зупинити втрату — обмеження ціни", + "stop-market":"Припинити втрату прибутку - ринкова ціна", + "limit-type":"Обмеження цін", + "market-type":"Рігова операція", + "startTime":"початковий час", + "to":"до", + "confirmBtn":"підтвердити", + "cancelBtn":"скасувати", + "cancel":"відкинути", + "endTime":"Час завершення", + "export":"експортувати", + "filter":"Фільтр", + "all":"unlimited", + "search":"отримання", + "reset":"Відновити", + "hideAll":"Сховати всі скасовані делегати", + "canceled":"Скасовано", + "waiting":"Щоб збігати", + "triggered":"Повернуто", + "processing":"Порівнювання", + "completed":"Завершено", + "available_phone":"Будь ласка, введіть правильний номер мобільного телефону", + "available_email":"Будь ласка, введіть правильну адресу електронної пошти", + "codeSent":"Надісланий код перевірки", + "captcha":"Помилка коду перевірки", + "created":"час", + "order-price":"Ціна комісії", + "order-amount":"Дозволена кількість", + "order-total":"Загальна кількість порядку", + "avg-price":"середня ціна", + "direction":"напрямок", + "order-type":"тип", + "executed-amount":"Він збіг", + "executed-total":"Об’ єм", + "outstanding":"Щоб збігати", + "status":"стан", + "details":"деталі", + "action":"operation", + "id":"Номер порядку", + "filled-price":"Ціна операції", + "filled-amount":"Кількість операцій", + "filled-total":"Сума операції", + "fee":"Завантаження служби", + "enterValid":"Будь ласка, введіть коректний номер мобільного телефону або електронну пошту", + "enterValidEmail":"Будь ласка, введіть правильну адресу електронної пошти", + "enterValidPhone":"Будь ласка, введіть коректний номер мобільного телефону", + "enterAccount":"Будь ласка, введіть рахунок", + "enterEmail":"Будь ласка, введіть правильну адресу електронної пошти", + "enterPhone":"Будь ласка, введіть номер мобільного телефону", + "enterPwd":"Будь ласка, введіть пароль", + "passwordRegular":"Пароль має складатися з 8 до 15 цифр і літер (він має містити цифри і літери, а також можна використовувати символи)", + "newPassword":"Будь ласка, введіть новий пароль", + "confirmNewPassword":"Будь ласка, введіть новий пароль для підтвердження", + "enterGoogleCode":"Будь ласка, введіть код перевірки Google", + "enterEmailCode":"Будь ласка, введіть код перевірки електронної пошти", + "enterSMSCode":"Будь ласка, введіть код перевірки SMS", + "enterVerCode":"Будь ласка, введіть код перевірки", + "exportFile":"Будь ласка, натисніть кнопку Гаразд, щоб експортувати файл", + "submit":"Передати", + "newzone":"Нова зона", + "college":"college", + "goTo":"перейти до", + "logOut":"Вийти", + "homepage":"домашня сторінка", + "application":"Програма валюти", + "purchase":"запитати на купу", + "accountInformation":"Інформація про рахунок", + "myWallet":"Моя торбинка", + "commissionOrder":"Порядок комісії", + "securitySetting":"параметри безпеки", + "wallet":"гаманець", + "allAssets":"Всі активи", + "contractaccount":"Рахунок контракту", + "transferFunds":"Перенесення фінансів", + "rechargeWithdraw":"Повторно завантажити і витягнути гроші", + "order":"порядок", + "spotConsignment":"Спочаткова комісія", + "optionOrders":"Порядок параметрів", + "perpetualContract":"Звичайний контракт", + "foreignContract":"Загальний контракт", + "notCertified":"Не сертифіковано", + "notData":"Немає даних", + "assets":"активи", + "myCommission":"Мій повернувший слуга", + "addressManagement":"Address management", + "auth":"Перевірка справжньої назви", + "invitationReward":"Запросити винагороди", + "visitHistory":"Доступ до записів", + "noviceTutorial":"Курс Новіса", + "tradingStrategy":"Стратегія торгівлі", + "industryResearch":"Промислові дослідження", + "blockchainDictionary":"Словник блокchain", + "mediaCoverage":"покриття медіа", + "selectFile":"Виберіть файл", + "upload":"вивантажити", + "delete":"вилучити", + "tooBig":"Розмір файла занадто великий і не може перевищити", + "errorType":"Помилка типу файла", + "resend":"Перезапустити", + "sms":"коротке повідомлення", + "email":"поштова скринька", + "sendSuccess":"Код перевірки успішно надіслано", + "retransmission":"перетрансмісія", + "start-trade":"Почати подорож цифрової валюти", + "login":"Підписатися", + "register":"реєструвати", + "trading":"Щоб торгувати", + "dark":"black", + "light":"білий", + "notMore":"Нічого більше", + "allRead":"Всі прочитані", + "newMessage":"Нові новини", + "footerTips1":"Ризичні інвестиції на ринок повинні бути обережними,", + "footerTips2":"Правне повідомлення: веб-сайт керується компанією {name}", + "footerTips3":"Підказка про ризик: цифрова торгівля активами може призвести до втрати капіталу, будь ласка, переконайтеся, що ви повністю розумієте ризики", + "footerTips4":"Обмежені області: не можуть надати послуги жителям окремих країн / регіонів, таких як Ізраїл та Ісламська Республіка Китай" + }, + "exchange": { + "search":"пошук", + "pair":"Домовлятися за", + "last-price":"Остання ціна", + "change":"Вгору і вниз", + "order-book":"Порядок", + "price":"Ціна", + "amount":"номер", + "total":"грубе значення", + "recent-trades":"Остання угода", + "time":"час", + "order-total":"Загальне значення Комісії", + "balance":"Доступний баланс", + "enter-price":"Будь ласка, введіть ціну", + "enter-amount":"Будь ласка, введіть кількість", + "enter-total":"Будь ласка, введіть загальну ціну", + "at-best-price":"Close at the best market price", + "trigger-price":"Будь ласка, введіть ціну", + "min":"хвилина", + "hour":"годину", + "day":"день", + "week":"тиждень", + "month":"місяць" + }, + "login": { + "resend":"Перезапустити", + "sms":"коротке повідомлення", + "sendOK":"Код перевірки успішно надіслано!", + "enterPhoneEmail":"Будь ласка, введіть номер мобільного телефону або електронної пошти", + "effectivePhoneEmail":"Будь ласка, введіть коректний мобільний телефон або електронну пошту", + "enterPasswrod":"Будь ласка, введіть пароль {num} бітів", + "passwordLength":"Довжина пароля — це {номер} бітів. Він містить альфаномерний пароль", + "safe":"Перевірка безпеки", + "googleVer":"Будь ласка, введіть код перевірки Google з цифрами {num} у вашу мобільну програму", + "phoneCode":"Будь ласка, введіть код перевірки цифр {номер} надісланий до вашого номера мобільного телефону", + "emailCode":"Будь ласка, введіть код перевірки бітів {num} надісланий до вашої електронної пошти", + "google-code":"Google captcha", + "email-code":"Код перевірки електронної пошти", + "sms-code":"Код перевірки мобільного телефону", + "new-password":"Новий пароль", + "confirm-password":"Confirm password", + "forgetPassword":"Забудь пароль", + "rememberMe":"Пам'ятайте мене", + "noAccountYet":"Поки немає рахунка", + "goRegister":"реєструвати", + "safety":"Перевірка безпеки", + "regAccount":"Номер запису рахунка", + "email":"поштова скринька", + "phone":"мобільний телефон", + "pleaseEmail":"Будь ласка, введіть адресу електронної пошти", + "invalidEmail":"Некоректна адреса електронної пошти", + "enterMobile":"Будь ласка, введіть номер мобільного телефону", + "invalidPhone":"Некоректний мобільний номер", + "enterLengthPassword":"Будь ласка, введіть пароль від {num1} до {num2} бітів довжини", + "hasNumEn":"Пароль потребує комбінації літер і чисел {номер}", + "iSee":"Я згоден.", + "terms":"Умови і умови", + "reg":"реєструвати", + "enterEmailCode":"Будь ласка, введіть код перевірки {номер} бітів, надісланий до вашої електронної пошти ({e- mail})", + "accountActivated":"Щоб активувати рахунок", + "backOld":"Назад до попереднього кроку", + "verCode":"Код перевірки", + "notEmail":"Якщо ви не отримуєте вашої електронної пошти, будь ласка, спробуйте виконати наступну дію перевірки", + "confirmEmail":"Please make sure that the email address you entered is correct", + "confing":"Будь ласка, перевірте вашу теку спаму електронної пошти", + "checkTrashCan":"Будь ласка, переконайтеся, що ваша електронна пошта з’ єднана з стабільним інтернетом", + "enterPhone1":"Будь ласка, введіть номер, який слід надіслати до вашого мобільного телефону", + "enterPhone2":"Бітовий запис {num}", + "smsNotReceived":"Якщо ви не отримуєте SMS, будь ласка, спробуйте виконати наступну дію перевірки", + "phoneCorrect":"Будь ласка, переконайтеся, що номер мобільного телефону і номер області, які ви ввели, правильні", + "securePhone":"Будь ласка, переконайтеся, що сигнал вашого мобільного телефону стабільний", + "hasAccount":"Вже існує рахунок", + "toLogin":"Перейти до входу", + "securityVerification":"Перевірка безпеки", + "disagree":"Ви ще не погодилися з умовами", + "registrationSuccess":"Успішно реєстровано, перехід на сторінку входу", + "referrer":"Повідомлення", + "optional":"Необов' язково", + "password":"пароль", + "login":"Підписатися", + "country":"Код області", + "enter-account":"Будь ласка, введіть номер рахунка", + "sign-in":"Підписатися", + "find-password":"Знайти пароль", + "submit":"Передати", + "confirmpassword":"Два паролі несумісні" + }, + "application": { + "form":"Project currency application form", + "sendUser":"Спонзор проекту", + "sendUserEn":"Англійська назва валюти", + "sendUserCn":"Китайська назва валюти", + "contactPosition":"Контакт та позиція", + "phone":"Номер контакту", + "tokenPrice":"ринкова ціна", + "email":"Електронна пошта контакту", + "address":"Місце реєстрування проекту", + "mechanism":"Організація інвестицій проекту", + "personal":"особистий", + "currencyCode":"Код валюти", + "symbol":"Символ", + "currencyIdentification":"Ідентифікація валюти", + "format":"Підтримувати формат {name} файл менший за {num}", + "fundraisingDate":"Дата збирання фінансів", + "officialWebsite":"Офіційна веб-сайт", + "whitePaperLinks":"Посилання на білу паперу", + "noLink":"Якщо посилання не існує, будь ласка, вивантажте долучення на кінці статті", + "total_issue":"Загальна валюта", + "currencyCirculation":"Грошовий обертання", + "currencyAllocationRatio":"Співвідношення розподілу валют", + "numberOfCurrencyHolders":"Кількість власників валюти", + "tradingPlatform":"Online trading platform", + "privatePlacement":"Приватне розташування", + "publicOfferingPrice":"Ціна громадської пропозиції", + "company":"Будь ласка, додайте одиницю валюти", + "coinType":"Грошовий блок network type", + "currencyIssueDate":"Дата випуску валюти", + "blockBrowser":"Переглядач блоків", + "officialAddress":"Офіційна адреса торбинки", + "contractAddress":"Адреса контракту", + "link":"посилання", + "budget":"Бюджет заряду валюти", + "unit":"Одиниця", + "ofTokens":"Кількість символів ринкової діяльності після завантаження", + "chineseCurrency":"Введення валюти китайською", + "enCurrency":"Введення валюти англійською", + "remarks":"зауваження", + "uploadWhitePaper":"Вивантажити білу книгу", + "pleaseUpload":"Будь ласка, вивантажити білий папер", + "recommendationCode":"Назва рекомендатора, організація і код рекомендації", + "ifSo":"Якщо так,", + "affirmsThat":"Потверджую, що всі вище вказані дані правдиві, повні і точні.Я буду відповідальний за надання неправильної інформації економічно і законно", + "iKnow":"Все в порядке!", + "reSubmit":"Re submit", + "pleaseConfirm":"Будь ласка, підтверджуйте, що вище вказана інформація правда", + "pleaseEnter":"Будь ласка, введіть", + "upLoadSuccess":"Вивантаження успішно" + }, + "wallet": { + "inside":"Перенесення внутрішніх фондів", + "from":"від", + "history":"Перегляд історії", + "balance":"баланс", + "transferQuantity":"Перенесене кількість", + "capitalAccount":"Капітальний рахунок", + "contract":"контракт", + "financial":"Фінансовий рахунок", + "leverage":"Рахунок вирівнювання", + "successful":"Успішний перенесення", + "confirm":"Потвердити перенесення", + "pleaseSelect":"Будь ласка, виберіть валюту", + "to":"до", + "assets":"активи", + "strokes":"Будь ласка, введіть кількість перенесення", + "addressManagement1":"Address management", + "addAddress":"Додати адресу", + "filter":"Фільтр", + "search":"пошук", + "selectActiveArea":"Будь ласка, виберіть активну область", + "areaOne":"Перша область", + "areaTwo":"Регіон 2", + "addressAssets":"Список адрес", + "addressNum":"Кількість адрес", + "fee1":"Завантаження служби", + "creationTime":"Час створення", + "detailAddress":"Докладна адреса", + "remarks1":"Remarks", + "operating":"operation", + "complete":"завершено", + "copy":"копіювати", + "editAddress":"Змінити адресу", + "deleteAddress":"Вилучити адресу", + "next":"попередня сторінка", + "pre":"наступна сторінка", + "add":"додати до", + "edit":"редагувати", + "address":"адреса", + "selectAssets":"Будь ласка, виберіть актив", + "drawAddress":"Адреса вилучення", + "addressRemarks":"Зауваження до адреси", + "remarksDelete":"Ви впевнені, що хочете вилучити цю адресу", + "optionSuccess":"Операція успішна", + "allAssets":"Значення всіх активів", + "showNum":"Показувати номери", + "contractAccount":"Рахунок контракту", + "marginAccount":"Рахунок вирівнювання", + "financialAccount":"Фінансовий рахунок", + "spotAccount":"Рахунок", + "hide":"сховати", + "balanceAssets":"Балансові активи", + "searchCurrency":"Пошук валюти", + "addressManagement":"Management of withdrawal address", + "totalAssets":"загальні активи", + "availableBalance":"Доступний баланс", + "fee":"Зальоджений баланс", + "valuation":"Оцінання", + "recharge":"Перезавантажити", + "withdrawal":"Зняти гроші", + "transaction":"операція", + "rechargeAddress":"Перезавантажити адресу", + "rechargeQuantity":"Перезавантажити кількість", + "enterQuantity":"Будь ласка, введіть кількість", + "rechargeInstructions":"Інструкції перезавантаження", + "automaticallyCredited":"Ця адреса є вашою останньою адресою перезавантаження. Якщо система отримує перезавантаження, вона буде автоматично записано", + "tran":"Перенесення потрібно підтвердити цілою мережею блоклайна. Після того, як ви отримаєте підтвердження мережі {num} ваша {name} буде автоматично введено на рахунок", + "only":"Будь ласка, надсилайте лише {name} до цієї адреси. Надіслання іншої цифрової валюти до цієї адреси призведе до постійної втрати", + "low":"мінімум", + "addressList":"Список адрес", + "enterDrawAddress":"Будь ласка, введіть адресу вилучення", + "invalidWallet":"Не коректна адреса торбинки, будь ласка, перевведіть", + "withdrawalsNumber":"Кількість вилучення", + "enterDrawNum":"Будь ласка, введіть кількість вилучення", + "withdrawalInstructions":"Зауваження про відступ", + "enterAddress":"Будь ласка, обережно перевірте і введіть правильну адресу торбинки", + "notSend":"Надіслання невідповідної цифрової валюти до адреси торбинки призведе до постійної втрати", + "deductionFee":"Завдання за керування буде віднято від суми витягнених грошей", + "submitSuccess":"Submitted successfully, under review", + "operationComplete":"Операція вилучення завершена, чекаючи на підтвердження", + "rechargeRecord":"Завантажити запис", + "withdrawalRecord":"Зберегти запис", + "assetsName":"Будь ласка, введіть назву активу", + "selectStatus":"Будь ласка, виберіть стан", + "startTime":"Дата початку", + "entTIme":"Дата кінця", + "date":"дата", + "hash":"Хаш", + "num":"номер", + "progress":"швидкість прогресу", + "status":"стан", + "error":"невдачі", + "success":"успіх", + "underReview":"Перегляд", + "handlingFee1":"Завантаження служби", + "processing":"Перегляд", + "transfer":"Перенесення фінансів", + "transferDescription":"Опис перенесення фонду", + "handlingFee":"Будь ласка, зауважте, що внутрішній передач фондів автоматичний і безкоштовний", + "onlyForeignExchange":"Лише {name} можна перенести на ваш рахунок контракту обміну", + "onlySustainable":"Лише {name} можна перенести на ваш постійний контрактний рахунок", + "inCase1":"Якщо ви бажаєте торгувати контрактами обмінної гроші, ви повинні передати {назву} на рахунок обмінної гроші як рахунок", + "inCase2":"Якщо ви бажаєте обмінювати постійний контракт, вам слід перенести {name} на постійний контрактний рахунок як меж", + "transferRecord":"Запис перенесення", + "allTransfer":"Всі записи перенесення активів", + "direction":"напрямок", + "all":"цілий", + "dateTime":"час", + "UserWallet":"Asset account", + "ContractAccount":"Рахунок контракту", + "LeverageAccount":"Рахунок вирівнювання", + "FinancialAccount":"Фінансовий рахунок", + "contractFlow":"Поток контракту", + "info":"деталі", + "money":"кількість грошей " + }, + "contact": { + "contact":"зв'язатися з нами", + "help":"Якщо вам потрібна допомога, будь ласка, зв'яжіться з нами", + "fullName":"повна назва", + "enterFullName":"Будь ласка, введіть повну назву", + "email":"поштова скринька", + "enterEmail":"Будь ласка, введіть адресу електронної пошти", + "consultingService":"Проект консультації", + "pleseSelect":"Будь ласка, виберіть", + "info":"інформація", + "enterInfo":"Будь ласка, введіть інформацію", + "contactInformation":"Інформація про контакт", + "routineConsultation":"Рутинні консультації", + "customerService":"служба клієнта", + "mediaCooperation":"Соработка медіа", + "submit":"Передати" + }, + "college": { + "college":"college", + "article":"Блог", + "tutorialDetails":"Tutorial details", + "howToBuyBitcoin":"Як купити біткоїн", + "recommendedCourse":"Рекомендований навчальник", + "buy":"Купити біткону за хвилину", + "register":"реєструвати", + "visit":"Відвідуйте веб- сайт {назва} і реєструйте ваш обліковий запис {назва}", + "realName":"Перевірка справжньої назви", + "upload":"Вивантажити коректні сертифікати для автентифікації особистої справжньої назви", + "quickBuy":"Один клацання купу і плату", + "inIndex":"Натисніть одну кнопку, щоб купити гроші на домашній сторінці / купити гроші, і чекайте, поки гроші буде звільнено після заплати", + "tradeNow":"Я збираюся зараз обмінювати", + "currencyTransaction":"Другий розуміння валютної операції", + "contractEntryTransaction":"Операція запису контракту", + "how":"Як обмінювати параметри", + "TradingStrategy":"Стратегія торгівлі", + "seeMore":"Докладніше", + "industryResearch":"Промислові дослідження", + "oneClick":"Одного клацання на інтелектну операцію", + "inAssets":"На сторінці заповнення активів / валют ви можете натиснути одну кнопку для заповнення валюти, а потім обмінювати", + "dictionary":"Словник блокchain", + "media":"покриття медіа" + }, + "home": { + "newEra":"Перша цифрова обміна фінансових похідних ресурсів у світі", + "startTrading":"Почати торгівлю", + "walkingLantern":"Ходяча лампа", + "marketCenter":"Ріг торгівлі", + "optional":"Необов' язково", + "latestPrice":"Ціна", + "upAndDown":"Вгору і вниз", + "heigh":"Найвища ціна", + "low":"мінімальна ціна", + "vol":"Гучність торгівлі", + "coinType":"Домовлятися за", + "more":"Докладніше > >", + "multiPlatform":"Звантаження декількох платформ", + "atTime":"whenever and wherever possible", + "multiTerminal":"Операція декількох терміналів платформ", + "cover":"обкладинка", + "multiTerminal1":"Декілька платформ", + "support":"Повна підтримка служби", + "down":"звантажити", + "news":"Тенденції ринку", + "detail":"Перегляд подробиць", + "quickly":"Почати швидко", + "major":"Ми надаємо професійні послуги інвесторам", + "safe":"Безпечні торгові послуги", + "login":"Підписатися", + "reg":"реєструвати", + "trading":"Щоб торгувати", + "add":"Додано успішно", + "cancel":"Скасувати успішно", + "features":"Основна перевага", + "partners":"Інвестиційні інституції та партнери", + "perpetual_title":"Західний контракт", + "perpetual_cont":"Оскільки перший світовий контракт обміну цінною валютою, розв'язаний стабільною валютою з найвищим впливом 100 разів, бКС контракт обміну цінною валютою є економічним вибором швидкого обміну цінною валютою", + "stablecoin_title":"Перший стабільний центр торгівлі валютами у світі", + "stablecoin_cont":"БКС створила сильне екологічне середовище стабільної валюти, повну рамку, складаючу з стабільних валютних операцій, платежів і передачів, і стала частиною глобального високоякісного стабільного валютного клубу!", + "security_title":"Незначна безпека", + "security_cont":"БКС приймає найрозвиненіший сховищ книг, щоб захистити кінцеву безпеку цифрової валюти. Платформа сховища книг надає до 150 мільйонів доларів страховки для крадіжки третьої сторони, взовнішньої колюзії і головної крадіжки насіння.Більше 98% цифрових валют, що зберігаються в БКС, зберігаються у багато підписаних холодних гаманцях, а найвищий стандартний процес контролю ринкового ризику приймається, щоб забезпечити капітальну безпеку всіх користувачів.", + "service_title":"24 / 7 багатомовна сервіса клієнтів у реальному часі", + "service_cont":"AMATAK's customer service 24 / 7 is on call at any time, and tries its best to provide help for users through real-time chat or email tosupport@AMATAK.comКонтактуйтеся з клієнтською службою.", + "analy_title":"Додаткові інструменти аналізу", + "analy_cont":"Продавці можуть використовувати різні інструменти діаграм та індикатори, засновані на стабільних даних, для допомоги торгівлі на сторінці торгівлі.", + "liquidity_title":"Видатна ліквідність", + "liquidity_cont":"24/7 пов'язано з високою ліквідністю торгової платформи БКС в будь-який час.", + "technology_title":"Саморозвинені технології", + "technology_cont":"БKC торгова платформа заснована на доказаних технологіях і створена найкращими експертами в індустрії, щоб оптимізувати функції платформи в найбільшій мірі.", + "download":"Звантажити мобільний термінал AMATAK", + "easy":"Відкрити торгівлю пальми будь-коли, будь-де", + "skan":"Сканувати код і звантажити зараз", + "core_advantages":"Моя основна сила - це дані" + }, + "option": { + "waitFor":"Чекаю доставки", + "history":"Історічне доставлення", + "orderNum":"порядковий номер", + "option":"параметр", + "buyTime":"Час купу", + "buyAmount":"Кількість купу", + "buyType":"Тип купу", + "yield":"Частота повернення", + "state":"стан", + "deliverytime":"час доставки", + "countDown":"Відлік", + "buyingUp":"Купи", + "buyDwon":"Купи вниз", + "buyEven":"Купити навіть", + "result":"Результат закриття", + "settlementQuantity":"Кількість розрахунків", + "up":"піднятися", + "down":"пад", + "flat":"плоский", + "buyOption":"Параметр купу", + "deliveryRecord":"Запис доставки", + "current":"поточний", + "next":"Наступна проблема", + "enterNum":"Будь ласка, введіть кількість", + "balance":"баланс", + "expectedRevenue":"Очікуваний дохід", + "seeMore":"Докладніше", + "beBearish":"бути медькою", + "time":"час", + "zf":"Вгору", + "bullish":"Bullish", + "lookAtPing":"Переглянути плоску", + "bearish":"Bearish", + "amount":"номер", + "coinType":"валюта", + "odds":"Можливості", + "buySuccess":"Успішний куп" + }, + "order": { + "noData":"Немає запису операцій", + "ifCancel":"Cancel the current order", + "cancelSuccess":"Успішно скасовано", + "marketPrice":"Рігова операція", + "fixedPrice":"Обмеження цін", + "sell":"продавати", + "buy":"купувати", + "exchangeRecord":"Записи операцій", + "see":"див.", + "opt":"operation", + "status":"стан", + "time":"час", + "tradingPair":"Домовлятися за", + "direction":"напрямок", + "type":"тип", + "averagePrice":"середня ціна", + "price":"Ціна", + "matched":"Він збіг", + "totalAmountEntrusted":"Загальна довірена сума", + "total":"загально", + "toMatch":"Невідповідний", + "operation":"operation", + "reset":"Відновити", + "search":"пошук", + "to":"до", + "startTime":"Дата початку", + "endTime":"Дата кінця", + "select":"Будь ласка, виберіть", + "entrustType":"Тип вилучення", + "spotConsignment":"Спочаткова комісія", + "surrentCommission":"Поточна делегація", + "commissionRecord":"Записи вилучення", + "optionTransaction":"Обереження параметрів", + "orderNum":"порядковий номер", + "timeSharing":"Спільний час", + "yield":"Частота повернення", + "buyNum":"Кількість купу", + "upAndDown":"Вгору і вниз", + "settlementQuantity":"Кількість розрахунків", + "transactionPrice":"Ціна операції", + "tradingVolume":"Гучність торгівлі", + "aTurnover":"обхід", + "serviceCharge":"Завантаження служби", + "cancel":"відкинути", + "buyTime":"Час купу", + "buyUp":"Купи", + "buyDown":"Купи вниз", + "buyLevel":"Купити навіть" + }, + "profile": { + "realName":"Перевірка справжньої назви", + "primaryCertification":"Перша сертифікація", + "advancedCertification":"Додаткова програма сертифікації надіслана", + "toExamine":"to examine", + "fullName":"повна назва", + "legal":"законний", + "pleaseEnterName":"Будь ласка, введіть ваше ім'я", + "dateOfBirth":"дата народження", + "selectDate":"Виберіть дату", + "documentType":"Тип документа", + "pelaseSelect":"Будь ласка, виберіть", + "certificateNumber":"Номер сертифіката", + "endterIDNumber":"Будь ласка, введіть номер ідентифікатора", + "addressInfo":"Інформація про адресу", + "residentialAddress":"Резидентна адреса", + "residentialAddress1":"Будь ласка, введіть вашу адресу життя", + "ciy":"місто", + "incity":"Будь ласка, входьте в ваше місто", + "postalCode":"Поштовий код", + "thePostcode":"Будь ласка, введіть код zip", + "additionalInformation":"Додаткова інформація", + "optional":"Необов' язково", + "contactInformation":"Інформація про контакт", + "phoneNumber":"номер телефону", + "enterPhoneNumber":"Будь ласка, введіть номер мобільного телефону", + "clickUpload1":"Коли ви натиснете на вивантаження файла і надсилаєте автентифікацію, ви прочитали і погодилися з нашими умовами служби і приватності", + "pelaseDownload":"Будь ласка, виберіть неочікувану копію з наступних документів", + "passport":"паспорт", + "drivingLicense":"ліцензія керування", + "iD":"ІД", + "upload":"Upload", + "explain":"пояснити", + "unexpired":"Незастарілі документи можуть бути зображеннями або скануваними копіями", + "pleaseConfirm":"Будь ласка, переконайтеся, що всі деталі на фотографії чисті і не вкриті", + "fileFormat":"формат файла", + "maximumFileSize":"Максимальний розмір файла", + "positive":"Перед сертифікатом", + "theOtherSide":"Зворотна сторона сертифіката", + "hold":"Зберігання сертифіката", + "dragHere":"Перетягніть сюди або", + "clickUpload":"Натисніть вивантаження", + "uploadPhoto":"Будь ласка, вивантажте передню фотографію вашої картки ідентифікації", + "reversePhoto":"Будь ласка, вивантажити фото на спину сертифіката", + "uploadIDCard":"Будь ласка, вивантажте вашу ручну фотографію ідентифікації", + "nextStep":"наступний крок", + "inSubmit":"Ваша програма перевірки було надіслано!Ми повідомимо вам, як тільки ми отримаємо результат", + "gotIt":"Зрозумів.", + "congratulations":"Вітаю.", + "back":"повернути", + "resetApply":"Повторити застосування", + "recertification":"Перезертифікація", + "userInfo":"Інформація про рахунок", + "verState":"Стан перевірки", + "max":"maximum", + "limitH":"Обмеження годинного вилучення", + "verLeave":"Рівень автентифікації", + "exceed":"перевищити", + "contactUs":"зв'язатися з нами", + "inviteFriends":"Запросити друзів", + "dividends":"Запросити друзів використовувати {name}, і отримати {num} майбутніх оплат друзів як бонус.", + "sendInvitation":"Надіслати запрошення", + "resetPassword":"перевстановити пароль", + "forLoginAccount":"Для облікового запису входу", + "clickReset":"Натисніть кнопку Відновити", + "registrationDecord":"Запис запису", + "recording":"Використовується для показу детального журналу в історії", + "recordingDEtail":"Докладний запис", + "invitationReward":"Запросити винагороди", + "inviteUse":"Запросити друзів використовувати", + "futureCommission":"Отримати {номер} майбутньої оплати друзів як бонус", + "joinThePlan":"Приєднатися до плану бонусу запрошення користувача {name}", + "checkMyDividend":"Перевірте мої дивіденди", + "step1":"Перший крок", + "shareLink":"Ділити посилання", + "step2":"Крок другий", + "shareFriend":"Запросити друзів", + "step3":"Третій крок", + "instantDividend":"Уживайте в дивідендах", + "invitationInformation":"Invitation information", + "invitationLink":"Посилання запрошення", + "invitationCode":"Код запрошення", + "registeredUser":"Реєстровані користувачі", + "accountNumber":"номер рахунка", + "registrationTime":"Час реєстрування", + "activityTerms":"Терміни активності", + "handlingFeeDividend":"Дивіденд комісії", + "equalInvitee":"Це як бути запрошеним", + "fee":"Заплата за керування операціями", + "afterThat":"Після запрошення до торгівлі", + "follow":"Пересунути на рахунок запрошеного за кілька хвилин", + "limit":"Ця діяльність слід за наступними часами початку і кінця і доступна лише для коректних рахунків після часу початку і перед часом кінця діяльності", + "activityStartTime":"Час початку дії", + "Y":"рік", + "M":"місяць", + "D":"день", + "endTime":"Час завершення дії", + "proceed":"Продовжується", + "atAnyTime":"Ми зберігаємо право змінити, призупинити або завершити програму запрошень користувача {name} у будь- який час без попереднього повідомлення", + "reservedRights":"Зберегти право не платити дивіденди за дублікатні рахунки або фальшиві рахунки", + "canDecide":"Ви можете прийняти або відмовити конкретних користувачів, які введені або запрошені на платформу {name} {link}", + "bill":"Доступ до записів", + "date":"дата", + "address":"місце", + "equipment":"обладнання", + "preliminary":"Перший сертифікат успішний", + "clickToVerify":"Click to verify " + }, + "setting": { + "smsVer":"Перевірка SMS", + "enterCode":"Будь ласка, введіть код перевірки", + "emailVer":"Перевірка електронної пошти", + "enterEmailVer":"Будь ласка, введіть код перевірки електронної пошти", + "ver":"перевірка", + "enterNameCode":"Будь ласка, введіть код перевірки {name}", + "openSuccess":"Відкрити успішно", + "closeSuccess":"Успішно закрито", + "email":"поштова скринька", + "enterEmail":"Будь ласка, введіть електронну пошту", + "emailVerCode":"Код перевірки електронної пошти", + "enterSmsCode":"Будь ласка, введіть код перевірки SMS", + "bind":"зв’ язок", + "unbind":"Розділення", + "bindSuccess":"Спроба прив’ язання успішна", + "unbindSuccess":"Вилучення успішно", + "scanQrCode":"Будь ласка, скануйте код QR", + "howToOpen":"Вивчити, як увімкнути {name} секундарну перевірку", + "read":"Натисніть тут, щоб прочитати інформацію про встановлення", + "verKey":"Перевірити ключ", + "safeSetting":"параметри безпеки", + "loginPassword":"Пароль входу", + "resLoginPassword":"Reset login password", + "transactionPassword":"Код операції", + "usedFor":"Використовувалося для надсилання контрактів та замовлень", + "notOpen":"Не відкрито", + "modifyPassword":"Змінити пароль", + "setPassword":"Встановити пароль", + "verCode":"Код перевірки", + "forLogin":"Використовується для входу до системи, вилучення валюти і зміни параметрів безпеки", + "alLast":"Увімкнути принаймні один режим автентифікації", + "close":"close", + "open":"відкрити", + "phone":"номер телефону", + "area":"Будь ласка, введіть код області", + "enterPhone":"Будь ласка, введіть номер мобільного телефону", + "newPassword":"Новий пароль", + "passwordIs":"Пароль операції — це цифри {номер}", + "enterNewPassword":"Будь ласка, введіть новий пароль", + "confirmPassword":"Confirm password", + "pleaseConfirmPassword":"Будь ласка, підтвердите пароль", + "operationSuccess":"Операція успішна", + "combination":"Паролі потребують комбінації літер і чисел", + "changeSuccess":"Успішно змінено" + }, + "purchase": { + "sendPrice":"Ціна випуску", + "subscriptionCurrency":"Монета підпису", + "expected":"Очікувався час онлайн", + "startTime":"Час початку підпису", + "applyForPurchase":"Час закриття", + "enterNum":"Будь ласка, введіть кількість", + "all":"Всі", + "subscribeNow":"Застосувати негайно", + "subscriptionCycle":"Цикл підпису", + "projectWarmUp":"Загрівання проекту", + "startSubscription":"Почати підпис", + "endOfSubscription":"Close subscription", + "announceResults":"Опублікувати результати", + "projectCetails":"Подробиці проекту", + "useOrNot":"Використовувати або не використовувати", + "subscribe":"запитати на купу", + "prompt":"Підказки", + "subscribeSuccess":"Успішний куп" + }, + "contract": { + "a0":"Рахунок контракту", + "a1":"Перенесення фінансів", + "a2":"Властивості рахунка", + "a3":"доступний", + "a4":"Марж позиції", + "a5":"Зальодження комісії", + "a6":"Нереалізований прибуток та втрата", + "a7":"Швидкість ризику", + "a8":"Обчислена сильна парітність", + "a9":"контракт", + "b0":"lever", + "b1":"час", + "b2":"Тип операції", + "b3":"Закрито", + "b4":"Загальна довірена сума", + "b5":"Середня ціна операції", + "b6":"Ціна комісії", + "b7":"зв’ язок", + "b8":"Завантаження служби", + "b9":"стан", + "c0":"operation", + "c1":"скасувати порядок", + "c2":"відкинути", + "c3":"Cancel the current order", + "c4":"скасувати", + "c5":"визначити", + "c6":"відмовлено", + "c7":"Нерозв' язано", + "c8":"Часткова операція", + "c9":"Все закрито", + "d0":"Buy kaiduo", + "d1":"Купити квартиру", + "d2":"Продавати короткий", + "d3":"Продавання пінгду", + "d4":"Успішно скасовано", + "d5":"відкриває гранар, щоб допомогти", + "d6":"закрити позицію", + "d7":"Ціна", + "d8":"Ціна", + "d9":"ринкова ціна", + "e0":"фіксована ціна", + "e1":"номер", + "e2":"Чангchina. kgm", + "e3":"Потрібна межа", + "e4":"Множна позиція", + "e5":"Коротка позиція", + "e6":"Bullish", + "e7":"Відкривається", + "e8":"Bearish", + "e9":"Зберегти", + "f0":"Ціна", + "f1":"Кайдуаuzbekistan. kgm", + "f2":"Відкритий повітря", + "f3":"Чи це засновано на", + "f4":"Двійний вплив", + "f5":"Успішна комісія", + "f6":"Успішне закриття", + "f7":"Хендикеп", + "f8":"Операція у реальному часі", + "f9":"цілий", + "g0":"купити", + "g1":"продати", + "g2":"Камуляція", + "g3":"Остання ціна", + "g4":"деталі", + "g5":"History", + "g6":"Час операції", + "g7":"Позиція", + "g8":"Еквалізована кількість", + "g9":"Середня ціна відкриття", + "h0":"Частота повернення", + "h1":"Закриття ринку", + "h2":"Чи все навіть за ринкову ціну", + "h3":"Всі плоскі", + "h4":"успіх", + "h5":"Домовлятися за", + "h6":"Вгору і вниз", + "h7":"Найвища ціна", + "h8":"мінімальна ціна", + "h9":"volume", + "i0":"Розташування утримано", + "i1":"Поточна делегація", + "i2":"Історічна комісія", + "i3":"напрямок", + "i4":"багато", + "i5":"порожній", + "i6":"Показати лише поточний", + "i7":"Зупинити прибуток", + "i8":"Зупинити втрату", + "i9":"Зупинити прибуток і зупинити втрату", + "j0":"Прибуток і втрата", + "j1":"Остання ціна операції", + "j2":"Середня ціна відкриття", + "j3":"Припинити отримати ціну", + "j4":"Припинити ціну причини втрати", + "j5":"Рігова ціна на", + "j6":"Після завершення операції буде оцінено прибуток та втрату", + "j7":"Stop loss Commission will be triggered when the transaction is completed, and profit and loss are expected after the transaction", + "j8":"Відкрити вічний контракт", + "j9":"Успішне відкриття", + "k0":"Встановити успішно", + "k1":"Розділення прибутку та втрати", + "k2":"Один клацання плоским", + "k3":"Один клацання навпаки", + "k4":"Все плоске?", + "k5":"Одна клавіша зворотньо", + "k6":"Все однакове, успіх", + "k7":"Обернути успіх", + "k8":"Будь ласка, входьте спочатку, щоб застосувати", + "k9":"Будь ласка, введіть код підпису " + }, + "otc": { + "a0":"Будь ласка, виберіть тип операції", + "a1":"купувати", + "a2":"продавати", + "a3":"Монета операцій", + "a4":"Будь ласка, виберіть валюту", + "a5":"номер", + "a6":"Будь ласка, введіть кількість", + "a7":"Ціна", + "a8":"Будь ласка, введіть ціну", + "a9":"Мінімум однієї операції", + "b0":"Найвища окрема операція", + "b1":"Alipay", + "b2":"WeChat", + "b3":"банкартка", + "b4":"зауваження", + "b5":"Будь ласка, введіть ваші коментарі", + "b6":"Успішно опубліковано", + "b7":"купувати", + "b8":"продати", + "b9":"відмовлено", + "c0":"In trade", + "c1":"Завершено", + "c2":"Номер реклами", + "c3":"стан", + "c4":"Загальна ціна", + "c5":"Ціна одиниці", + "c6":"надлишок", + "c7":"Час випуску", + "c8":"метод плати", + "c9":"operation", + "d0":"З поліці", + "d1":"Чи вилучено поточну рекламу", + "d2":"нагадування", + "d3":"Успішно скасовано", + "d4":"Подробиці порядку", + "d5":"порядковий номер", + "d6":"плата", + "d7":"повна назва", + "d8":"номер рахунка", + "d9":"Банк депозиту", + "e0":"Відкриття гілки рахунка", + "e1":"Залишений час", + "e2":"гілка", + "e3":"секунда", + "e4":"Заплатний візер", + "e5":"Вивантажити код QR збірки", + "e6":"Будь ласка, вивантажити візер платів", + "e7":"Очікування вивантаження купувачів", + "e8":"скасування порядку", + "e9":"підтвердити сплату", + "f0":"Not received", + "f1":"Підтверджувати отримання", + "f2":"Cancel the current order", + "f3":"визначити", + "f4":"скасувати", + "f5":"Порядок скасований", + "f6":"Потверджувати поточну сплату", + "f7":"Операція успішна", + "f8":"Після підтвердження збірки активи буде автоматично продано і перенесено", + "f9":"Після підтвердження того, що заплати не було отримано, наказ автоматично введе режим звернення", + "g0":"Реклама", + "g1":"користувач", + "g2":"загально", + "g3":"Обмеження", + "g4":"Метод плати", + "g5":"загально", + "g6":"успіх перевірки", + "g7":"Порядок продажів", + "g8":"Порядок купу", + "g9":"Рекламний порядок купу", + "h0":"Рекламний наказ продажу", + "h1":"цілий", + "h2":"Закрито", + "h3":"Платити", + "h4":"Щоб підтвердити", + "h5":"Під скаргу", + "h6":"Кількість операцій", + "h7":"Партнер торгівлі", + "h8":"час", + "h9":"деталі", + "i0":"Будь ласка, введіть номер рахунка", + "i1":"Будь ласка, введіть ваше ім'я", + "i2":"Код QR збірки", + "i3":"збереження", + "i4":"Bank name", + "i5":"Будь ласка, введіть назву банку", + "i6":"Будь ласка, введіть гілку відкриття рахунка", + "i7":"Номер банкової картки", + "i8":"Будь ласка, введіть номер банкарти", + "i9":"Успішно редаговано", + "j0":"Додано успішно", + "j1":"Рахунок законної валюти", + "j2":"активи", + "j3":"Доступний баланс", + "j4":"Зальоджений баланс", + "j5":"Операція законної валюти", + "j6":"Моя реклама", + "j7":"Моє замовлення", + "j8":"реклама ", + "j9":"Покупка в один клік", + "k0":"Продаж в один клік", + "k1":"закупівельна ціна", + "k2":"Кількість покупки", + "k3":"Сума продажу", + "k4":"Кількість проданих", + "k5":"Введіть суму покупки", + "k6":"Введіть кількість покупки", + "k7":"Введіть суму продажу", + "k8":"Введіть продану кількість", + "k9":"Купуйте за кількістю", + "l0":"Опис легальної валютної операції", + "l1":"Мінімальний обсяг транзакції", + "l2":"підтвердити покупку", + "l3":"Підтвердити продаж", + "l4":"Недостатній баланс", + "l5":"час замовлення", + "l6":"Виберіть спосіб оплати", + "l7":"Одержувач платежу", + "l8":"Аномальна колекція", + "l9":"Введіть пароль транзакції", + "m0":"Платні", + "m1":"іспит зданий", + "m2":"Помилка аудиту", + "m3":"Кінець замовлення", + "m4":"скасувати замовлення" + } +} diff --git a/src/icon/china.jpg b/src/icon/china.jpg new file mode 100644 index 0000000..3c007ba Binary files /dev/null and b/src/icon/china.jpg differ diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..0759027 --- /dev/null +++ b/src/index.html @@ -0,0 +1,129 @@ + + + + + + + + + BXRCO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..76a5e49 --- /dev/null +++ b/src/main.js @@ -0,0 +1,58 @@ +import Vue from 'vue' +import App from './App' +import router from './router' +import VueClipboard from 'vue-clipboard2' + +import store from './vuex/store' +import i18n from './i18n' + +// 导入公共组件 +import './components'; + +// 所有utils方法既可以在全局使用utils导入 也可以作为过滤器使用 +Object.keys(utils).forEach(key => { + Vue.filter(key, function(value, ...args) { + if (utils[key] instanceof Function) { + // 将value作为第一个参数值,剩余参数分别传入方法中 + return utils[key](value, ...args); + } + }); +}); + + +// 复制 +VueClipboard.config.autoSetContainer = true; +Vue.use(VueClipboard) + +// 导入element-ui完整版 +import ElementUI from 'element-ui'; +import en from 'element-ui/lib/locale/lang/en' +import 'element-ui/lib/theme-chalk/index.css'; +Vue.use(ElementUI, { + size: 'medium', + zIndex: 3000, + locale: localStorage.lang == 'cn' ? undefined : en +}); + + +// 引入全局常量 +import consts from './utils/consts' +Vue.use(consts); + +// 在scss文件中引入了bootstrap.css 此处无需再次引入 +// import 'bootstrap/dist/css/bootstrap.min.css' +// import 'bootstrap/dist/js/bootstrap.min.js' + +Vue.config.productionTip = false + +/* eslint-disable no-new */ +new Vue({ + el: "#app", + router, + i18n, + store, + components: { + App + }, + template: '' +}); diff --git a/src/router/college.js b/src/router/college.js new file mode 100644 index 0000000..4de2cdb --- /dev/null +++ b/src/router/college.js @@ -0,0 +1,22 @@ + +import Index from '@/views/college'; +import Detail from '@/views/college/detail'; +import List from '@/views/college/list'; + +export default [ + { + name: "college", + path: "/college", // 博客首页 + component: Index + }, + { + name: "college-list", + path: "/college/list/:cid", // 博客列表页 + component: List + }, + { + name: "college-detail", + path: "/college/detail/:cid?/:aid?", // 博客详情页 + component: Detail + } +] \ No newline at end of file diff --git a/src/router/course.js b/src/router/course.js new file mode 100644 index 0000000..238d788 --- /dev/null +++ b/src/router/course.js @@ -0,0 +1,22 @@ + +import course from '@/views/course'; +import detail from '@/views/course/detail'; +import list from '@/views/course/list'; + +export default [ + { + name: "course", + path: "/course", // 博客首页 + component: course + }, + { + name: "course-list", + path: "/course/list/:id", // 博客列表页 + component: list + }, + { + name: "course-detail", + path: "/course/detail", // 博客详情页 + component: detail + } +] \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..f6f1094 --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,175 @@ +import Vue from 'vue' +import VueRouter from 'vue-router' + +import Home from '@/views/home' +import A from '@/views/a' +import Market from '@/views/market' +import Exchange from '@/views/exchange' + +import College from './college' +import Activity from '@/views/activity' +import News from '@/views/news' +import Setting from '@/views/setting' + +// 导入路由集合 +import Wallet from './wallet' +import Profile from './profile' + +import Order from './order' + +import ContactUs from '@/views/contactUs' + +import SignIn from '@/views/signIn' +import SignUp from '@/views/signUp' +import Agent from '@/views/signUp/agent' +// 期权 +import Option from '@/views/option' +// 上币申请 +import Application from '@/views/application' + +// 开始申购 +import Purchase from '@/views/purchase' + +// 服务条款 +import Service from '@/views/server'; +import ForgotPwd from '@/views/forgotPwd'; + +// 合约 +import Contract from '@/views/contract' +// 关于我们 +import Aboutus from '@/views/college/about_us' +// OTC +import Otc from "./otc"; +// 公告 +import Notice from '@/views/notice' +import NoticeDetail from '@/views/notice/detail' + +Vue.use(VueRouter); + +// 将多文件路由合并到一起 +const routes = [{ + path: '/', + redirect: '/home' + }, + { + name: 'home', + path: '/home', + component: Home + }, { + name: 'A', + path: '/a', + component: A + }, { + name: "exchange", + path: "/exchange/:symbol?", + component: Exchange + }, { + name: "market", + path: "/market/:id?", + component: Market, + }, { + name: "activity", + path: "/activity", + component: Activity + }, { + name: "news", + path: "/news", + component: News + }, { + name: "contactUs", + path: "/contact-us", + component: ContactUs + }, { + name: "setting", + path: "/setting", + component: Setting, + }, + ...Wallet, ...Profile, ...Order, ...College,...Otc, + { + name: "signIn", + path: "/sign-in", + component: SignIn + }, + { + name: "signUp", + path: "/sign-up", + component: SignUp + }, { + name: "agent", + path: "/Agent", + component: Agent + }, { + name: "forgotPwd", + path: "/forget-pwd", + component: ForgotPwd + }, + { + name: "option", + path: "/option", + component: Option + }, + { + name: "contract", + path: "/contract", + component: Contract + }, + { + name: "otc", + path: "/otc", + component: Otc + }, + { + name: "application", + path: "/application", + component: Application + }, + { + name: "purchase", + path: "/purchase", + component: Purchase + }, { + name: "server", + path: "/service/:cid?", + component: Service + }, + { + name: "notice", + path: "/notice", + component: Notice + }, + { + name: "noticeDetail", + path: "/notice/:id", + component: NoticeDetail, + props:true + }, + { + name: "about_us", + path: "/about_us/:aid", + component: Aboutus, + props:true + } +] + +const router = new VueRouter({ + routes +}); + +// 添加路由导航守卫 非登录状态禁止进入wallet + +router.beforeEach((to, from, next) => { + const auth = localStorage.getItem("auth"); + const pages = [`/wallet`, `/setting`, `/order`, `/profile`]; + + let res = pages.some(item => to.path.startsWith(item)); + if (res && !auth) { + + next({ + path: '/sign-in' + }) + + + } else next(); +}) + +export default router; \ No newline at end of file diff --git a/src/router/order.js b/src/router/order.js new file mode 100644 index 0000000..def19bc --- /dev/null +++ b/src/router/order.js @@ -0,0 +1,28 @@ + +import ExchangeOrder from '@/views/order/exchange-order'; +import OptionOrder from '@/views/order/option-order'; +import SwapOrder from '@/views/order/swap-order'; +import ForexOrder from '@/views/order/forex-order'; + +export default [ + { + name: "exchange-order", + path: "/order/exchange", // 现货委托 + component: ExchangeOrder + }, + { + name: "option-order", + path: "/order/option", // 期权订单 + component: OptionOrder + }, { + name: "swap-order", + path: "/order/contract/swap", // 永续合约 + component: SwapOrder + }, + { + name: "forex-order", + path: "/order/contract/forex", // 外汇合约 + component: ForexOrder + }, + +] \ No newline at end of file diff --git a/src/router/otc.js b/src/router/otc.js new file mode 100644 index 0000000..4495ec2 --- /dev/null +++ b/src/router/otc.js @@ -0,0 +1,34 @@ +import Index from "@/views/otc/index"; +import detail from "@/views/otc/detail"; +import order from "@/views/otc/order"; +import ad from "@/views/otc/ad"; +import pays from "@/views/otc/pays"; +export default [{ + path: '/otc', + redirect: '/otc/index' + }, { + name: "otc", + path: "/otc/index", + component: Index + }, + { + name: "otcDetail", + path: "/otc/detail", + component: detail + }, + { + name: "otcOrder", + path: "/otc/order", + component: order + }, + { + name: "otcAd", + path: "/otc/ad", + component: ad + }, + { + name: "otcPays", + path: "/otc/pays", + component: pays + } +] \ No newline at end of file diff --git a/src/router/profile.js b/src/router/profile.js new file mode 100644 index 0000000..7598e46 --- /dev/null +++ b/src/router/profile.js @@ -0,0 +1,34 @@ + +import Profile from '@/views/profile'; +import ResetPwd from '@/views/profile/reset-pwd'; +import Certification from '@/views/profile/certification'; +import Invite from '@/views/profile/invite'; +import LoginHistory from '@/views/profile/login-history'; + +export default [ + { + name: "profile", + path: "/profile/index", // 默认账号页面 + component: Profile + }, + { + name: "resetPwd", + path: "/profile/reset-pwd", // 重置密码 + component: ResetPwd + }, { + name: "certification", + path: "/profile/certification", // 实名认证 + component: Certification + }, + { + name: "invite", + path: "/profile/invite", // 邀请好友 + component: Invite + }, + { + name: "loginHistory", + path: "/profile/login-history", // 登录历史 + component: LoginHistory + }, + +] \ No newline at end of file diff --git a/src/router/wallet.js b/src/router/wallet.js new file mode 100644 index 0000000..bddbe56 --- /dev/null +++ b/src/router/wallet.js @@ -0,0 +1,57 @@ + +import ExchangeAssets from '@/views/wallet/exchange-assets'; +import OptionAssets from '@/views/wallet/option-assets'; +import ContractAssets from '@/views/wallet/contract-assets'; +import Transfer from '@/views/wallet/transfer'; +import Reward from '@/views/wallet/reward'; +import Funding from '@/views/wallet/funding'; +import Address from '@/views/wallet/address'; +import Otc from '@/views/wallet/otc-assets'; +import Userfeedback from '@/views/wallet/Userfeedback'; + +export default [ + { + name: "exchange-assets", + path: "/wallet/assets/exchange", // 钱包资产页面 + component: ExchangeAssets + }, + { + name: "option-assets", + path: "/wallet/assets/option", // 钱包资产页面 + component: OptionAssets + }, + { + name: "contract-assets", + path: "/wallet/assets/contract", // 钱包资产页面 + component: ContractAssets + }, + { + name: "transfer", + path: "/wallet/transfer", // 资金划转 + component: Transfer + },{ + name: "reward", + path: "/wallet/reward", // 返佣页面 + component: Reward + }, + { + name: "funding", + path: "/wallet/funding", // 重值提币记录 + component: Funding + }, + { + name : "address", + path : "/wallet/address", // 地址管理 + component : Address + }, + { + name : "otcAssets", + path : "/wallet/otc", // 地址管理 + component : Otc + }, + { + name : "Userfeedback", + path : "/wallet/Userfeedback", // 用户反馈 + component : Userfeedback + }, +] \ No newline at end of file diff --git a/src/store/getters.js b/src/store/getters.js new file mode 100644 index 0000000..63bd56e --- /dev/null +++ b/src/store/getters.js @@ -0,0 +1,15 @@ +const getters = { + sidebar: state => state.app.sidebar, + enable: state => state.user.enable, + memberId: state => state.user.memberId, + accessToken: state => state.user.accessToken, + email: state => state.user.email, + name: state => state.user.name, + showName: state => state.user.showName, + permissions: state => state.user.permissions, + menus: state => state.user.menus, + language: state => state.app.language + // , + // addRouters: state => state.permission.addRouters +} +export default getters diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 0000000..c001129 --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,17 @@ +import Vue from 'vue' +import Vuex from 'vuex' +import app from './modules/app' +import user from './modules/user' +import getters from './getters' + +Vue.use(Vuex) + +const store = new Vuex.Store({ + modules: { + app, + user, + }, + getters +}) + +export default store diff --git a/src/store/modules/app.js b/src/store/modules/app.js new file mode 100644 index 0000000..04f0c04 --- /dev/null +++ b/src/store/modules/app.js @@ -0,0 +1,38 @@ +import Cookies from 'js-cookie' + +const app = { + state: { + sidebar: { + opened: true + // opened: !+Cookies.get('sidebarStatus') + }, + // language: Cookies.get('language') || 'en' + language: 'en' + + }, + mutations: { + TOGGLE_SIDEBAR: state => { + if (state.sidebar.opened) { + Cookies.set('sidebarStatus', 1) + } else { + Cookies.set('sidebarStatus', 0) + } + state.sidebar.opened = !state.sidebar.opened + }, + SET_LANGUAGE: (state, language) => { + // console.Info(Cookies.get('language')) + state.language = language + Cookies.set('language', language) + } + }, + actions: { + toggleSideBar({ commit }) { + commit('TOGGLE_SIDEBAR') + }, + setLanguage({ commit }, language) { + commit('SET_LANGUAGE', language) + } + } +} + +export default app diff --git a/src/store/modules/user.js b/src/store/modules/user.js new file mode 100644 index 0000000..80c7148 --- /dev/null +++ b/src/store/modules/user.js @@ -0,0 +1,233 @@ +import { login, logout, getInfo } from '@/api/login' +import { Message } from 'element-ui' + +const user = { + state: { + enable: sessionStorage.getItem('login') || 0, + name: sessionStorage.oaxLoginName || '', + showName: sessionStorage.oaxShowName || '', + email: sessionStorage.oaxLoginEmail || '', + phone: sessionStorage.oaxLoginPhone || '', + memberId: sessionStorage.oaxLoginMemberId || '', + accessToken: sessionStorage.oaxLoginAccessToken || '', + checkStatus: sessionStorage.oaxLoginCheckStatus || '', + level: sessionStorage.oaxLoginLevel || '', + registerType: sessionStorage.oaxLoginRegisterTypee || '', + source: sessionStorage.oaxLoginSource || '', + menus: [], + permissions: [], + linkPageName: '', + linkTime: sessionStorage.linkTime + }, + + mutations: { + SET_ENABLE: (state, enable) => { + state.enable = enable + }, + SET_NAME: (state, name) => { + state.name = name + }, + SET_SHOWNAME: (state, showName) => { + state.showName = showName + }, + SET_EMAIL: (state, email) => { + state.email = email + }, + SET_PHONE: (state, phone) => { + state.phone = phone + }, + SET_MEMBERID: (state, memberId) => { + state.memberId = memberId + }, + SET_ACCESSTOKEN: (state, accessToken) => { + state.accessToken = accessToken + }, + SET_MENUS: (state, menus) => { + state.menus = menus + }, + SET_PERMISSIONS: (state, permissions) => { + state.permissions = permissions + }, + SET_LINKTIME: (state, linkTime) => { + state.linkTime = linkTime + }, + SET_CHECKSTATUS: (state, checkStatus) => { + state.checkStatus = checkStatus + }, + SET_LEVEL: (state, level) => { + state.level = level + }, + SET_REGISTERTYPE: (state, registerType) => { + state.registerType = registerType + }, + SET_SOURCE: (state, source) => { + state.source = source + } + + }, + + actions: { + // 登录 + Login({ commit }, userInfo) { + var _this = this + // const username = userInfo.username.trim() + return new Promise((resolve, reject) => { + login(userInfo) + .then(response => { + if (response.code === '10020') { + Message({ + message: response.msg, + type: 'error', + duration: 5 * 1000 + }) + // _this.$message.error(response.msg) + sessionStorage.oaxRegisterMail = userInfo.username + _this.$router.push({ path: '/account_activation' }) + return false + } + _this.loginLoad = false + if (response.success === true) { + sessionStorage.oaxLoginMemberId = response.data.memberId + sessionStorage.oaxLoginAccessToken = response.data.accessToken + sessionStorage.oaxLoginName = response.data.name + sessionStorage.oaxShowName = response.data.showName + sessionStorage.oaxLoginEmail = response.data.email + sessionStorage.oaxLoginPhone = response.data.phone + sessionStorage.oaxLoginCheckStatus = response.data.checkStatus + sessionStorage.oaxLoginLevel = response.data.level + sessionStorage.oaxLoginRegisterTypee = response.data.registerType + sessionStorage.oaxLoginSource = response.data.source + const data = response.data + // commit('SET_ENABLE', data.enable) + // sessionStorage.setItem('login', data.enable) + commit('SET_NAME', data.name) + commit('SET_SHOWNAME', data.showName) + commit('SET_EMAIL', data.email) + commit('SET_PHONE', data.phone) + commit('SET_MEMBERID', data.memberId) + commit('SET_ACCESSTOKEN', data.accessToken) + commit('SET_CHECKSTATUS', data.checkStatus) + commit('SET_LEVEL', data.level) + commit('SET_REGISTERTYPE', data.registerType) + commit('SET_SOURCE', data.source) + newFunction(data) + resolve() + } else { + Message({ + message: response.msg, + type: 'error', + duration: 5 * 1000 + }) + // _this.$message.error(response.msg) + } + }) + .catch(error => { + _this.loginLoad = false + Message({ + message: '登录失败', + type: 'error', + duration: 5 * 1000 + }) + // _this.$message.error('登录失败') + // console.log(error) + reject(error) + }) + }) + }, + + // 获取用户信息 + GetInfo({ commit }) { + return new Promise((resolve, reject) => { + getInfo() + .then(response => { + const data = response.data + commit('SET_PERMISSIONS', data) + commit('SET_MENUS', data) + resolve(response) + }) + .catch(error => { + reject(error) + }) + }) + }, + // 获取用户信息 + SetTime({ commit }, time) { + return new Promise((resolve, reject) => { + commit('SET_LINKTIME', time) + }) + }, + // 登出 + LogOut({ commit, state }) { + // var _this = this + return new Promise((resolve, reject) => { + logout(state.enable) + .then(() => { + sessionStorage.removeItem('oaxLoginMemberId') + sessionStorage.removeItem('oaxLoginAccessToken') + sessionStorage.removeItem('oaxLoginName') + sessionStorage.removeItem('oaxShowName') + sessionStorage.removeItem('oaxLoginEmail') + sessionStorage.removeItem('oaxLoginPhone') + sessionStorage.removeItem('oaxLoginCheckStatus') + sessionStorage.removeItem('oaxLoginLevel') + sessionStorage.removeItem('oaxLoginRegisterTypee') + sessionStorage.removeItem('oaxLoginSource') + // commit('SET_ENABLE', 0) + commit('SET_MEMBERID', '') + commit('SET_SHOWNAME', '') + commit('SET_EMAIL', '') + commit('SET_PHONE', '') + commit('SET_CHECKSTATUS', '') + commit('SET_LEVEL', '') + commit('SET_REGISTERTYPE', '') + commit('SET_SOURCE', '') + commit('SET_ACCESSTOKEN', '') + commit('SET_PERMISSIONS', []) + sessionStorage.removeItem('login') + commit('SET_MENUS', []) + resolve() + }) + .catch(error => { + reject(error) + }) + }) + }, + + // 前端 登出 + FedLogOut({ commit }) { + // var _this = this + return new Promise(resolve => { + sessionStorage.removeItem('oaxLoginMemberId') + sessionStorage.removeItem('oaxLoginAccessToken') + sessionStorage.removeItem('oaxLoginName') + sessionStorage.removeItem('oaxShowName') + sessionStorage.removeItem('oaxLoginEmail') + sessionStorage.removeItem('oaxLoginPhone') + sessionStorage.removeItem('oaxLoginCheckStatus') + sessionStorage.removeItem('oaxLoginLevel') + sessionStorage.removeItem('oaxLoginRegisterTypee') + sessionStorage.removeItem('oaxLoginSource') + // commit('SET_ENABLE', 0) + commit('SET_MEMBERID', '') + commit('SET_SHOWNAME', '') + commit('SET_EMAIL', '') + commit('SET_PHONE', '') + commit('SET_CHECKSTATUS', '') + commit('SET_LEVEL', '') + commit('SET_REGISTERTYPE', '') + commit('SET_SOURCE', '') + commit('SET_ACCESSTOKEN', '') + commit('SET_PERMISSIONS', []) + sessionStorage.removeItem('login') + commit('SET_MENUS', []) + resolve() + }) + } + } +} + +export default user +function newFunction(data) { + // console.log(data.name) +} + diff --git a/src/utils/class/array.js b/src/utils/class/array.js new file mode 100644 index 0000000..3e9334e --- /dev/null +++ b/src/utils/class/array.js @@ -0,0 +1,46 @@ +/** + * 数组模块方法的扩展 + * + * @author lautin + * @created 2019-11-22 15:32:05 + */ + +/** + * 计算数组差值,非变异方法 + * @param {array} a + * @param {array} b + */ +function differ(a, b) { + // 拷贝原数组,避免变异 + const _a = a.slice(); + for (let i = 0; i < b.length; i++) { + for (let j = 0; j < _a.length; j++) { + if (_a[j] === b[i]) { + _a.splice(j, 1) + j = j - 1 + } + } + } + return _a; +} + + +// 利用set集合的特性实现数组去重 +function unique(arr) { + return [...new Set(arr)] +} + + +Array.prototype.differ = function (arr) { + return differ(this, arr); +} + +Array.prototype.unique = function () { + return unique(this); +} + +// 他们都是在webpack初始时加载 默认使用node模块系统,不加default +export default { + differ, + unique, +} diff --git a/src/utils/class/date.js b/src/utils/class/date.js new file mode 100644 index 0000000..691681b --- /dev/null +++ b/src/utils/class/date.js @@ -0,0 +1,138 @@ +/** + * 日期时间处理的工具库 + * + * @author lautin + * @created 2019-11-19 11:36:02 + */ +function getTimeZoneOffset(time) { + const date = new Date(time); + // 获取时区偏移值,返回分钟数 + let offset = date.getTimezoneOffset(); + return time + offset * 60 * 1000; +} + +/** + * 将时间戳转化成时间对象的方法 + * @param {mixed} time 传入一个时间戳或者时间对象 + */ +function time2Date(time, isOffset = false) { + + let date; + + if (time.constructor == Date) { // 传入一个时间对象 + date = time; + + } else { // 传入一个时间戳 + // 检测时间戳的长度,确保为ms + if (time.toString().length <= 10) { + time = Number(time) * 1000; + } + let timeN; + // 是否对时差进行转化 + if (isOffset) { + timeN = getTimeZoneOffset(time); + /** + * time + new Date(time).getTimezoneOffset() * 60 * 1000 + */ + }else{ + // 这也是对时差进行转换,但是不想在每个处理时间格式的组件中修改isOffset为true + timeN = time-(-28800000)+(new Date(new Date().getTime()).getTimezoneOffset()* 60 * 1000); + /** + * 北京时间时间戳和同一时间时间戳相差“-28800000”ms,本地时间和同一时间相差 + * time-28800000+(new Date(new Date().getTime()).getTimezoneOffset()* 60 * 1000) + */ + } + + // 转化成日期时间对象 + date = new Date(timeN); + } + return date; +} + + +/** + * 将指定日期格式化输出, + * @param string|object time 输入日期,为一个Date.now()或者Date.UTC返回的时间戳 + * @param string format 输出的格式 + * @param boolean isOffset 是否考虑时区 + */ +function parseTime(time, isOffset = false, cformat = null) { + + // 设置默认格式 + // let format = cformat || '{y}-{m}-{d} {h}:{i}:{s}'; + let format = cformat || '{m}/{d}/{y} {h}:{i}:{s}'; + + const date = time2Date(time, isOffset); + + // 将日期时间值存入对象中 + const dataObj = { + y: date.getFullYear(), + m: date.getMonth() + 1, // 显示月份值需要+1 + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + a: date.getDay() + }; + + // 星期值需要转化为中文 + dataObj.a = '星期' + ['日', '一', '二', '三', '四', '五', '六'][dataObj.a]; + + // 匹配{}中的y|m|d...部分,分别替换不同的值 + const result = format.replace(/{(y|m|d|h|i|s|a)+}/g, (segment, key) => { + // 由索引提取值 + let value = dataObj[key]; + // 给值添加前导0 + if (segment.length > 0 && value < 10) value = '0' + value; + return value || 0; + }); + return result; +} + + + +/** + * 发布日期的特定显示方式, + * @param {string|number} time 显示日期的时间戳 + * @param {string} option 可选参数显示日期 + */ +function pubTime(time, isOffset = false, format = null) { + + const date = time2Date(time, isOffset); + + const current = isOffset ? getTimeZoneOffset(Date.now()) : Date.now(); + + // 计算时间的差值,返回s为单位的值 + let diff = (current - date.valueOf()) / 1000; + + // 2天以内显示距今时间 + if (diff < 30) { // 30s- + return '刚刚'; + + } else if (diff < 3600) { // 1h- + return Math.ceil(diff / 60) + '分钟前'; + + } else if (diff < 3600 * 24) { // 1d- + return Math.ceil(diff / 3600) + '小时前'; + + } else if (diff < 3600 * 24 * 2) { // 2d- + return '1天前'; + + } else { // 超过2天显示发布日期 + if (!format) format = '{y}年{m}月{d}日 {h}:{i}'; + return parseTime(time, isOffset, format); + } +} + +// 将方法写入构造函数 便于全局使用 +Object.assign(Date, { + time2Date, + parseTime, + pubTime, +}); + +export default{ + time2Date, + parseTime, + pubTime +} diff --git a/src/utils/class/math.js b/src/utils/class/math.js new file mode 100644 index 0000000..90203c6 --- /dev/null +++ b/src/utils/class/math.js @@ -0,0 +1,258 @@ +/** + * 数学模块,主要针对浮点型数据,在运算时的精度问题: + * 1| 两个小数相加 0.1 + 0.2 = 0.30000000000000004 + * 2| 两个小数相乘 2.12 * 3.14 = 6.6568000000000005; + * 3| ... + * 4| ... + * 5| 数值长度大于13位时 显示科学计数法 + * @author lautin + * @created 2019-11-19 17:15:04 + */ + +/** + * 检测小数点精度 + * @param {number} num 传入的数值 + */ +function countDecimals(num) { + let precision; + try { + precision = num.toString().split(".")[1].length; + } catch (e) { + precision = 0; + } + return precision; +} + +/** + * js在以下情景会自动将数值转换为科学计数法: + * 小数点前的数字个数大于等于22位; + * 小数点前边是0,小数点后十分位(包含十分位)之后连续0的个数>=6时 + * @param {number} 科学计数法显示的数值 1.2e-8 + * @return {number} 返回实际的数值 1.00000002 + */ +function scientific2No(val) { //-7.50375e-8 + + // 正则匹配科学计数法的数字 + if (/\d+\.?\d*e[\+\-]*\d+/i.test(val)) { + + let zero = '0', + parts = String(val).toLowerCase().split('e'), // ['-7.50375', '-8'] + e = parts.pop(), // 存储指数 -8 + l = Math.abs(e), // 0的个数 8 + sign = e / l, // 判断正负 - + // 将系数按照小数点拆分 + coeff_array = parts[0].split('.'); // [-7, 50375] 去除中间的. + // 如果恰好为8位 那么第二个数默认为undefined 需要重置为'' + if (!coeff_array[1]) coeff_array[1] = ''; + if (sign === -1) { // 小数 + // debugger; + // 正数或者负数 + if (coeff_array[0] < 0) { + val = '-' + zero + '.' + zero.repeat(l - 1) + coeff_array[0].slice(1) + coeff_array[1]; + } else { + val = zero + '.' + zero.repeat(l - 1) + coeff_array.join(''); //拼接字符串,如果是小数,拼接0和小数点 + } + + } else { + + let dec = coeff_array[1]; + + // 如果是整数,将整数除第一位之外的非零数字计入位数,相应的减少0的个数 + if (dec) l = l - dec.length; + + // 拼接字符串,如果是整数,不需要拼接小数点 + val = coeff_array.join('') + new Array(l + 1).join(zero); + + } + } + + + try { + return val.toString(); + } catch (e) { + return ''; + } +} + +/** + * 截取小数点后n位 + * @param {number} val 截取的数值 + * @param {number} scale 保留的小数点位数 + */ +function omitTo(val, scale) { + + // 转化科学计数法 + val = scientific2No(val); + + let ret; + // 检测浮点数 + if (val.toString().indexOf(".") > -1) { + // 提取实体集和精度值 + let [entity, precisionVal] = val.toString().split("."); + + if (precisionVal.length > scale) { + // trunc() 方法会将数字的小数部分去掉,只保留整数部分。 + let tmp = scientific2No(Math.trunc(val * Math.pow(10, scale))); + // 处理零值 + if (tmp == 0) ret = scientific2No('0.' + '0'.repeat(scale)); + else { + // ret = tmp / ; + ret = division(tmp, Math.pow(10, scale)); + try { // 小数 + + let [a, b] = ret.toString().split("."); + a = scientific2No(a), + b = scientific2No(b); + + if (b.length < scale) { + ret = a + '.' + b.padEnd(scale, '0'); + } + } catch (e) { // 整数 + ret = ret + '.' + '0'.padEnd(scale, '0'); + } + } + + } else if (precisionVal.length == scale) { // 精度 + + ret = val; + + } else { + // 补全小数点 + ret = entity + '.' + precisionVal.padEnd(scale, '0'); + } + + // 检测整型值 + } else ret = val + '.' + '0'.repeat(scale); + + // 去除末尾可能产生的多余的. + if (ret.toString().endsWith('.')) ret = ret.slice(0, -1); + + return ret; +} + +/** + * 计算两个数的和 + * @param {number} num1 + * @param {number} num2 + */ +function add(num1, num2, scale = null) { + + num1 = scientific2No(num1); + num2 = scientific2No(num2); + + let amplification, // 放大率 + precision1 = countDecimals(num1), // 精度1 + precision2 = countDecimals(num2); // 精度2 + amplification = Math.pow(10, Math.max(precision1, precision2)); + + // 先放大再相加,然后除以放大率 + let val = (num1 * amplification + num2 * amplification) / amplification; + + // 转化科学计数法 + let result = scientific2No(val); + + // 控制显示长度 + if (scale) result = omitTo(result, scale); + + return result; +}; + + +/** + * 计算两个数的差值 + * @param {number} num1 + * @param {number} num2 + */ +function subtr(num1, num2, scale = null) { + num1 = scientific2No(num1); + num2 = scientific2No(num2); + + let amplification, // 放大率 + precision1 = countDecimals(num1), // 精度1 + precision2 = countDecimals(num2); // 精度2 + + let precision = Math.max(precision1, precision2) + amplification = Math.pow(10, precision); + + // 动态控制精度长度 + let val = ((num1 * amplification - num2 * amplification) / amplification).toFixed(precision); + + // 转化科学计数法 + let result = scientific2No(val); + + // 控制显示长度 + if (scale) result = omitTo(result, scale); + + return result; +} + +/** + * 计算两个数的乘积 + * @param {number} num1 + * @param {number} num2 + */ +function multiple(num1, num2, scale = null) { + num1 = scientific2No(num1); + num2 = scientific2No(num2); + + let precision = 0; + precision += countDecimals(num1); + precision += countDecimals(num2); + + let val = Number(num1.toString().replace(".", "")) * Number(num2.toString().replace(".", "")) / Math.pow(10, precision); + + + let result = scientific2No(val); + + if (scale) result = omitTo(result, scale); + + return result; +} + + +/** + * 两个数相除 + * @param {number} num1 + * @param {number} num2 + * @param {optional} d + */ +function division(num1, num2, scale = null) { + num1 = scientific2No(num1); + num2 = scientific2No(num2); + + let precision1 = countDecimals(num1), + precision2 = countDecimals(num2), + m = precision1 > precision2 ? precision1 : precision2; + + // 两个整数相除 无需计算精度 + if (m <= 1 ) m = 1; + + let val = multiple(num1, m) / multiple(num2, m); + + let result = scientific2No(val); + + if (scale) result = omitTo(result, scale); + + return result; +} + + +Object.assign(Math, { + countDecimals, + add, + subtr, + multiple, + division, + scientific2No, + omitTo +}) + +export default { + countDecimals, + add, + subtr, + multiple, + division, + scientific2No, + omitTo +} \ No newline at end of file diff --git a/src/utils/class/object.js b/src/utils/class/object.js new file mode 100644 index 0000000..81c9805 --- /dev/null +++ b/src/utils/class/object.js @@ -0,0 +1,38 @@ + +function clone(target, source, isDeep = true) { + // 浅拷贝使用内置方法 + if (!isDeep) { + return Object.assign(target, source); + } + + // 递归遍历拷贝成员 + for (let item in source) { + if (source[item] instanceof Object) { + // 检测对象还是数组 + target[item] = + Object.prototype.toString.call(source[item]) === '[object Array]' ? [] : {}; + clone(target[item], source[item], isDeep); + } else { + target[item] = source[item]; + } + } + + return target; +} + +function cloneWithSelf(target, source, isDeep = true) { + // 先拷贝target自身 + const o = Object.clone({}, target, isDeep); + return Object.clone(o, source, isDeep) +} + +// 给原型对象扩展方法 +Object.assign(Object, { + clone, + cloneWithSelf +}) + +export default { + clone, + cloneWithSelf +} diff --git a/src/utils/class/string.js b/src/utils/class/string.js new file mode 100644 index 0000000..9e0172c --- /dev/null +++ b/src/utils/class/string.js @@ -0,0 +1,59 @@ +/** + * 字符串方法的扩展 + * + * @author lautin + * @created 2019-11-22 15:24:20 + */ + +/** + * 生成一组随机值的方法,用于上传文件名等场景 + * @param {number} len + */ +function random(count = null) { + let len = count || 32, + $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678', + ret = '', + time = new Date().getTime().toString(); + + if (len / 2 > time.length) { + // 控制总长度不超出 + len = len - time.length + } else { + len = len / 2 + } + for (let i = 0; i < len; i++) { + ret += $chars.charAt(Math.floor(Math.random() * $chars.length)) + if (time[i]) { + ret += time[time.length - i - 1] + } + } + return ret; +} +/** + * 截取字符串之前之后 + * @param {string} str + * @param {string} targe + * @param {number} index + */ +function getCaptionLength(str, targe, index) { + if (!index) { + return str.substring(0, str.indexOf(targe)) + } else { + return str.substring(str.lastIndexOf(targe) + 1) + } + +} + +// 绑定为静态方法 +Object.assign(String, { + random, + getCaptionLength +}); + +// fontcolor设置别名 +String.prototype.color = Object.prototype.fontcolor; + +export default { + random, + getCaptionLength +} diff --git a/src/utils/consts.js b/src/utils/consts.js new file mode 100644 index 0000000..bf03f63 --- /dev/null +++ b/src/utils/consts.js @@ -0,0 +1,36 @@ +export default { + + install(Vue, options) { + let isProduct = process.env.NODE_ENV == 'production' ? true : false; + Vue.prototype.Globals = { + Status: { + // 充提记录 + Funding: { + PENDING: 0, // 审核中 + SUCCESS: 1, // 成功 + FAIL: 2, // 失败 + }, + Transfer : { + SUCCESS : 1, + FAIL : 2, + } + }, + mobileUrl:'https://app.bxrco.com', + Server: { + Path: { + // API: isProduct ? `http://qkladmin2.ruanmeng.top/api/` : `/api/`, + BASE:isProduct?`https://bbxr.bxrcos.com`:`https://bbxr.bxrcos.com`, + API: isProduct ? `https://bbxr.bxrcos.com/api/` : `/api/`, + // WS: isProduct ? `ws://qkladmin2.ruanmeng.top:2346` : `ws://qkladmin2.ruanmeng.top:2346`, + // WS1: isProduct ? `ws://qkladmin2.ruanmeng.top:2348` : `ws://qkladmin2.ruanmeng.top:2348`, + // WS: isProduct ? `wss://guanli.coin.amatak.net/ws1` : `wss://guanli.coin.amatak.net/ws1`, + WS: isProduct ? `wss://bbxr.bxrcos.com/ws1` : `wss://bbxr.bxrcos.com/ws1`, + // WS1: isProduct ? `wss://guanli.coin.amatak.net/ws2` : `wss://guanli.coin.amatak.net/ws2`, + WS1: isProduct ? `wss://bbxr.bxrcos.com/ws2` : `wss://bbxr.bxrcos.com/ws2`, + } + } + }; + + } + +} diff --git a/src/utils/funcs/debounce.js b/src/utils/funcs/debounce.js new file mode 100644 index 0000000..f726bf0 --- /dev/null +++ b/src/utils/funcs/debounce.js @@ -0,0 +1,58 @@ +/** + * 函数防抖模块封装 + * @author lautin + * @created 2019-11-20 18:44:32 + */ + + +/** + * 防抖函数,在一个时段内反复触发时 更新定时器为最后一次延迟执行 + * 该操作欠缺的地方在于 延迟执行,响应比较慢 最好是先执行 + * @param {function} func 事件回调函数 + * @param {number} wait 延迟等待时间,建议100-300ms左右 + */ +function debounceA(func, wait) { + // 初始化定时器为空 + let timer = null; + // 返回一个防抖的闭包函数,使用闭包来持久存储定时器 + return function () { + const context = this, // this为事件源DOM + args = arguments; // arguments包含event + // 如果已有定时器 则取消上次的任务 + if (timer) clearTimeout(timer); + // 更新定时器,本次(最后)任务n毫秒后触发 + timer = setTimeout(() => { + // 还原事件回调函数触发时的环境 + func.apply(context, args); + }, wait); + } +} + +/** + * 防抖函数,在一个时段内反复触发时 更新定时器为最后一次延迟执行 + * 该方法 先执行 后延迟 响应灵敏更高 + * @param {function} func 事件回调函数 + * @param {number} wait 延迟等待时间,建议100-300ms左右 + */ +function debounceB(func, wait) { + let timer = null; + return function () { + const context = this, + args = arguments; + + // 首先取消中间的定时器,重新开始计时 + if (timer) clearTimeout(timer); + + //先加载本次任务, + if (!timer) func.apply(context, args); + + // 再进行定时器控制 + timer = setTimeout(() => { + timer = null; + }, wait); + } +} + +export default function debounce(func, wait, immediate = false) { + return immediate ? debounceB(func, wait) : debounceA(func, wait); +} \ No newline at end of file diff --git a/src/utils/funcs/throttle.js b/src/utils/funcs/throttle.js new file mode 100644 index 0000000..2e7010b --- /dev/null +++ b/src/utils/funcs/throttle.js @@ -0,0 +1,62 @@ +/** + * 函数节流模块封装 + * + * @author lautin + * @created 2019-11-20 18:46:01 + */ + + +/** + * 节流方法,在指定时间内只执行一次,使用时间戳控制时间 + * @param {function} func 事件回调函数 + * @param {number} wait 限定输出的时间,建议100-300ms + */ +function throttleA(func, wait) { + // 上次执行时间 + let previous = 0; + return function () { + // 本次执行时间 + let now = Date.now(), + context = this, + args = arguments; + // 定时器以外执行 + if (now - previous > wait) { + func.apply(context, args); + // 更新上次时间 + previous = now; + } + } +} + +/** + * 节流方法,在指定时间内只执行一次,使用定时器控制时间 + * @param {function} func 事件回调函数 + * @param {number} wait 限定输出的时间,建议100-300ms + */ +function throttleB(func, wait) { + // 记录上个定时器 + let timer; + + return function () { + const context = this, + args = arguments; + // 如果没有定时器则执行 + if (!timer) { + func.apply(context, args); + // 更新定时器 + timer = setTimeout(() => { + timer = null; + }, wait); + } + } +} + +/** + * 兼容执行 + * @param {function} func 事件处理函数 + * @param {number} wait 节流时间 + * @param {mixed} flag 标识符 选择类型 + */ +export default function throttle(func, wait, flag = null) { + return flag ? throttleB(func, wait) : throttleA(func, wait); +} diff --git a/src/utils/index.js b/src/utils/index.js new file mode 100644 index 0000000..601a2e9 --- /dev/null +++ b/src/utils/index.js @@ -0,0 +1,40 @@ +// 系统类的方法扩展 +import math from './class/math'; + +import date from './class/date'; + +import array from './class/array'; + +import clone from './class/object'; + +import random from './class/string'; + +// 载入防抖和节流的方法 +import debounce from './funcs/debounce'; +import throttle from './funcs/throttle'; + +// 表单和正则验证的方法 +import rules from './rules'; +import validate from './vendor/validate'; + +// 文件上传处理方法 +import upload from './vendor/upload'; + +// 通用的一些方法 +import common from './vendor/common'; + +// webpack 全局加载的模块 以`export`而非`export default`导出, +// 她类似于module.exports或者exports的规则 +export default { + ...math, // omit, ,,, + ...date, + ...array, + ...clone, + ...random, + debounce, + throttle, + rules, + validate, + upload, + ...common +} \ No newline at end of file diff --git a/src/utils/rules.js b/src/utils/rules.js new file mode 100644 index 0000000..db1a0be --- /dev/null +++ b/src/utils/rules.js @@ -0,0 +1,51 @@ +/** + * 常用正则库,用于快速匹配 + * + * @author lautin + * @created 2019-11-21 02:02:39 + */ + +// url地址 + +const isUrl = /^(https?:\/\/)?([0-9a-zA-Z\.]+)\.([a-z\.]{2,6})([\/\w\.-]*)?$/ + +// 小写字母 +const isLower = /^[a-z]+$/ + +// 大写字母 +const isUpper = /^[A-Z]+$/ + + +// 大小写字母 +const isAlpha = /^[A-Za-z]+$/ + +// 邮箱 +const isEmail = /^(?:[\w\-\.]+)@(?:[\w\.\-]+).(?:[a-z\.]{2,6})$/ + +// 手机号 +const isPhone = /^\d{9,17}$/ + +// 32位的加密token +const isToken = /^[a-z0-9]{32}$/ + +// 固话 - 国内的格式 +const isTel = /^0\d{2,3}\-?\d{7,8}$/ + +// html标签 +const isTag = /<\/?\w+[\w\s='"]\/?>/g + +// 一段html +const isHtml = /<([^\s]+)[\w\s='"]*>[\d\D]*?<\/\1>/g + +export default { + isAlpha, + isEmail, + isHtml, + isLower, + isPhone, + isToken, + isTag, + isTel, + isUpper, + isUrl +} diff --git a/src/utils/vendor/common.js b/src/utils/vendor/common.js new file mode 100644 index 0000000..41c94b5 --- /dev/null +++ b/src/utils/vendor/common.js @@ -0,0 +1,141 @@ +import Clipboard from "clipboard"; +import { + Message +} from 'element-ui' +// commons在DOM操作完毕后插入 + +// 获取可视窗宽高 +function getViewPortWH() { + return { + clientW: document.documentElement.clientWidth || document.body.clientWidth, + clientH: document.documentElement.clientHeight || document.body.clientHeight + } +} + +function isMobile() { + const regex_match = /(nokia|iphone|android|motorola|^mot-|softbank|foma|docomo|kddi|up.browser|up.link|htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte-|longcos|pantech|gionee|^sie-|portalmmm|jigs browser|hiptop|^benq|haier|^lct|operas*mobi|opera*mini|320x320|240x320|176x220)/i; + const u = navigator.userAgent; + + if (null == u) { + return true; + } + + let result = regex_match.exec(u); + + return null == result ? false : true; + +} + +/** + * css属性的动画设置 + * @param {object} settings 动画效果配置参数 + */ +function cssAnimate(settings) { + // 使用解构赋值 提取参数值到变量中 + let { + ele, + transform, + duration, + whendone = null + } = settings + + if (ele.timer) return // 如果已有定时器 则点击无效 + + let frames = 0, + numFrames = duration / 100 + + const beginAt = {}, + increment = {} + + /* + * 1| 计算初始样式和动画增量 + */ + const cssProps = getComputedStyle(ele) + for (let item in transform) { + beginAt[item] = parseInt(cssProps[item]) + increment[item] = (transform[item] - beginAt[item]) / numFrames + } + + /* + * 2| 设置定时任务执行动画 + */ + ele.timer = setInterval(function () { + frames++; + // 判断临界条件 + if (frames > numFrames) { + // 取消定时器 + clearInterval(ele.timer) + delete ele.timer; + if (whendone instanceof Function) whendone.call(ele); + return false; + } + + for (let item in transform) { + ele.style[item] = (beginAt[item] + increment[item] * frames) + 'px'; + } + }, 100); +} + +function timeTD(resolve, reject, seconds = null) { + let total = seconds || 60; + resolve(total); + let timer = setInterval(function () { + if (--total < 1) { + clearInterval(timer); + reject(); + } else { + resolve(total); + } + + }, 1000); + +} + +function curryTimeTD(resolve, seconds = null) { + return function (reject) { + let total = seconds || 60; + resolve(total); + let timer = setInterval(function () { + if (--total < 1) { + clearInterval(timer); + reject(); + } else { + resolve(total); + } + + }, 1000); + return timer; + } +} + + + +// 复制文本 +function copy(txt) { + return new Promise((resolve, reject) => { + let dom = document.createElement('button') + dom.setAttribute('data-clipboard-text', txt) + dom.setAttribute('id', txt) + let clipboard = new Clipboard(dom) + clipboard.on('success', function (e) { + Message.success('复制成功') + resolve(e) + }) + clipboard.on('error', function (e) { + Message.error('复制失败') + reject(e) + }); + dom.click() + dom = null + }) + +} + +export default { + getViewPortWH, + cssAnimate, + timeTD, + curryTimeTD, + isMobile, + copy +} diff --git a/src/utils/vendor/upload.js b/src/utils/vendor/upload.js new file mode 100644 index 0000000..eed17e5 --- /dev/null +++ b/src/utils/vendor/upload.js @@ -0,0 +1,129 @@ + +/** + * 上传文件处理,验证文件类型和大小 验证通过返回数据 + * { + * errCode : 0为通过,1为类型错误,2为大小超出, + * url : base64位的文件数据 + * } + * @author lautin + * @created 2019-11-22 17:20:32 + */ + +// 将buffer转化成utf-8格式 +function iconvToUtf8(bufferArr, encoding) { + let x = new Uint8Array(bufferArr); + let ret = new TextDecoder(encoding).decode(x); + return ret; +} + +class Upload { + + constructor(conf) { + // 获取文件DOM对象 + if (!conf.ele.nodeType) conf.ele = document.querySelector(conf.ele); + + // 将配置信息写入实例对象中 + Object.assign(this, { + file: conf.ele.files[0], // 文件对象 + name: conf.ele.files[0].name, // 文件名称 + + error: '', // 错误代号 + data: '', // 存储数据 + + // 类型检测 + isIMG: null, + isTXT: null, + }, conf); + + } + + checkType() { + // 验证文件类型,allowType需要设置['images/jpg', 'image/png'...] + if (this.allowType) { + if (!this.allowType.includes(this.file.type)) { + this.error = `${this.file.type}类型文件不合法`; + this.errno = 101; + } + } + this.isIMG = this.file.type.startsWith("image"); + this.isTXT = this.file.type.startsWith("text"); + } + + checkSize() { + // 验证文件类型,allowSize传入的值以M为单位 + if (this.allowSize) { + const maxByte = this.allowSize * 1024 * 1024; + if (this.file.size > maxByte) { + this.error = `文件大小不能超出${this.allowSize}M`; + this.errno = 102; + } + } + } + + readFile() { + + return new Promise((resolve, reject) => { + + const fr = new FileReader; + + fr.onloadend = function () { + + // 如果为文本 返回文件内容 + let data; + + switch (true) { + case this.isIMG : + data = fr.result; + break; + case this.isTXT : + data = iconvToUtf8(fr.result, "gbk"); + break; + default : + data = null; + break; + } + + resolve(data); + + }.bind(this); + + + fr.onabort = function () { + // 上传意外被中断 + reject(new Error(103)); + } + + fr.onerror = function () { + // 上传过程发生错误 + reject(new Error(104)); + } + + // 如果是图片的话 则返回base64 URL格式数据 否则返回ArrayBuffer + this.isIMG ? fr.readAsDataURL(this.file) : fr.readAsArrayBuffer(this.file); + + }); + + } + + static async start(settings) { + // 创建实例 + const ins = new Upload(settings); + // 验证类型 + ins.checkType(); + // 验证大小 + ins.checkSize(); + + // console.log(ins.errno); + // 验证不通过 则直接触发reject + // console.log() + if (ins.error) throw new Error(ins.errno); + + else { + // 读取文件的操作 发生错误会进入catch 成功则返回data数据 + ins.data = await ins.readFile(); + return ins; + } + } +} + +export default Upload.start; diff --git a/src/utils/vendor/validate.js b/src/utils/vendor/validate.js new file mode 100644 index 0000000..8ad2943 --- /dev/null +++ b/src/utils/vendor/validate.js @@ -0,0 +1,221 @@ +/** + * H5表单验证 适用所有,当同时存在多个逻辑时 有先后顺序 + * 注意:凡是设置了正则表达式验证的 需在后面指出具体规则以告知用户 + * @author lautin + * @created 2019-11-22 14:14:20 + */ + +class Validate { + + // 初始化验证元素 + constructor(root) { + // 提取表单中的输入控件 + if (!root.nodeType) root = document.querySelector(root); + + // 将nodeList以及标识符 写入全局对象中 + Object.assign(this, { + flag: true, + }, { + fields: this.extractInputs(root), + }); + + this.password; + } + + /** + * 遍历节点 提取输入控件 + * @param {dom}} node + * @param {nodeList} result 返回DOM集合对象 + */ + extractInputs(node, result = null) { + let fields = result || []; + const types = ["text", "password", "file", "number", "range", "search", "email", "url"]; + + for (let x = node.firstChild; x != null; x = x.nextSibling) { + // 如果是元素节点 则检测节点名称并递归 + if (x.nodeType == node.ELEMENT_NODE) { + switch (x.nodeName.toLowerCase()) { + case "input": + if (types.includes(x.type)) { + if (getComputedStyle(x, false).display != "none") { + fields.push(x); //放入该节点 + } + + } + break; + case "select": + case "textarea": + fields.push(x); //放入该节点 + break; + } + // 继续递归 + this.extractInputs(x, fields); + } + } + return fields; + } + + /** + * text验证maxLength和minLength + * @param {object} state + * @param {dom} item + */ + textTask(state, item) { + let result = ''; + switch (true) { + case state.tooLong: + result = `${item.name} 不能超过${item.maxLength}位`; + break; + + case state.tooShort: + result = `${item.name} 不能少于${item.minLength}位`; + break; + + case state.patternMismatch: + result = item.dataset.message || item.placeholder || `输入不符合要求`; + break; + } + return result; + } + + /** + * password验证pattern + * @param {object} state + */ + pwdTask(state, item) { + let result = ''; + if (state.patternMismatch) { + result = item.dataset.message || `输入不符合规则要求` + } + return result; + } + + isEqual(confirm) { + let result = ''; + if (confirm != this.password) { + result = "两次密码输入不一致"; + } + return result; + } + + /** + * number和range类型 先验证min和max,再验证step + * @param {object} state + * @param {dom} item + */ + numberTask(state, item) { + // console.log(item) + let result = ''; + switch (true) { + case state.rangeOverflow: + result = `不能超出${item.max}的上限`; + break; + + case state.rangeUnderflow: + result = `不能低于${item.min}的下限`; + break; + + case state.stepMismatch: + result = item.dataset.message || `${item.value} 不是合法值,需要以${item.step}递增`; + break; + } + return result; + } + + /** + * email和url类型 先验证type 再验证pattern + * @param {object} state + * @param {dom} item + */ + emailAndUrl(state, item) { + let result = ''; + switch (true) { + case state.typeMismatch: // 适合number、email、url + result = item.dataset.message || item.placeholder || `${item.name} 格式不正确`; + break; + + case state.patternMismatch: + result = item.dataset.message || item.placeholder || `输入不符合规则要求`; + break; + } + return result; + } + + /** + * 执行验证的方法 + */ + validate() { + [...this.fields].reverse().forEach((item) => { + // 验证通过 则跳过本次循环 + if (item.checkValidity()) return; + // 返回validityState对象 + let state = item.validity, + message = ''; + + // 首先检测值是否为空 + if (state.valueMissing) { + message = item.dataset.has || item.placeholder || `${item.name} 不能为空`; + } else { + // 根据类型执行不同验证 + switch (item.type) { + case "text": + case "search": + message = this.textTask(state, item); + break; + case "password": + message = this.pwdTask(state, item); + // 确认密码框添加额外的验证 + if (item.dataset.type == "repassword" || item.dataset.type=="confirm") { + message = this.isEqual(item.value); + } else { // 存储密码值 用于和确认密码匹配 + this.password = item.value; + } + break; + case "number": + case "range": + message = this.numberTask(state, item); + break; + case "email": + case "url": + message = this.emailAndUrl(state, item); + break; + } + } + + // 未知的类型验证 + if (state.badInput) { + message = `输入了的值无效`; + } + + //设置验证提示信息 + item.setCustomValidity(message); + + if (message) { + + // 手动报告验证的结果 触发元素的focus事件 等待用户输入 + item.reportValidity(); + // 如果用户有输入 则清除提示信息,最好监听change 避免破坏原有的v-model + item.addEventListener("change", function () { + + this.blur(); + }) + + this.flag = false; + } + + }); + + return this.flag; + } + + /** + * 调用执行的静态方法 + * @param {dom} root + */ + static start(root) { + const obj = new Validate(root); + return obj.validate(); + } +} + +export default Validate.start; \ No newline at end of file diff --git a/src/views/a.vue b/src/views/a.vue new file mode 100644 index 0000000..39d57bd --- /dev/null +++ b/src/views/a.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/src/views/activity/index.vue b/src/views/activity/index.vue new file mode 100644 index 0000000..b0ece39 --- /dev/null +++ b/src/views/activity/index.vue @@ -0,0 +1,25 @@ + + + + + diff --git a/src/views/application/index.vue b/src/views/application/index.vue new file mode 100644 index 0000000..7b082e4 --- /dev/null +++ b/src/views/application/index.vue @@ -0,0 +1,334 @@ + + + + + diff --git a/src/views/college/about_us.vue b/src/views/college/about_us.vue new file mode 100644 index 0000000..47ea2ab --- /dev/null +++ b/src/views/college/about_us.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/src/views/college/detail.vue b/src/views/college/detail.vue new file mode 100644 index 0000000..63f92ad --- /dev/null +++ b/src/views/college/detail.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/src/views/college/index.vue b/src/views/college/index.vue new file mode 100644 index 0000000..56834ab --- /dev/null +++ b/src/views/college/index.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/src/views/college/list.vue b/src/views/college/list.vue new file mode 100644 index 0000000..9c452f9 --- /dev/null +++ b/src/views/college/list.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/src/views/components/inner-transfer.vue b/src/views/components/inner-transfer.vue new file mode 100644 index 0000000..990f36f --- /dev/null +++ b/src/views/components/inner-transfer.vue @@ -0,0 +1,405 @@ + + + + diff --git a/src/views/contactUs/index.vue b/src/views/contactUs/index.vue new file mode 100644 index 0000000..cb79a6a --- /dev/null +++ b/src/views/contactUs/index.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/src/views/contract/account copy.vue b/src/views/contract/account copy.vue new file mode 100644 index 0000000..ec57d88 --- /dev/null +++ b/src/views/contract/account copy.vue @@ -0,0 +1,67 @@ + + \ No newline at end of file diff --git a/src/views/contract/account.vue b/src/views/contract/account.vue new file mode 100644 index 0000000..4a60cd4 --- /dev/null +++ b/src/views/contract/account.vue @@ -0,0 +1,74 @@ + + diff --git a/src/views/contract/current-commission.vue b/src/views/contract/current-commission.vue new file mode 100644 index 0000000..04579ca --- /dev/null +++ b/src/views/contract/current-commission.vue @@ -0,0 +1,175 @@ + + \ No newline at end of file diff --git a/src/views/contract/exchange-store.vue b/src/views/contract/exchange-store.vue new file mode 100644 index 0000000..211491d --- /dev/null +++ b/src/views/contract/exchange-store.vue @@ -0,0 +1,494 @@ + + + diff --git a/src/views/contract/handicap copy.vue b/src/views/contract/handicap copy.vue new file mode 100644 index 0000000..5590c39 --- /dev/null +++ b/src/views/contract/handicap copy.vue @@ -0,0 +1,272 @@ + + diff --git a/src/views/contract/handicap.vue b/src/views/contract/handicap.vue new file mode 100644 index 0000000..2317466 --- /dev/null +++ b/src/views/contract/handicap.vue @@ -0,0 +1,307 @@ + + diff --git a/src/views/contract/handicapRight.vue b/src/views/contract/handicapRight.vue new file mode 100644 index 0000000..ac5c56b --- /dev/null +++ b/src/views/contract/handicapRight.vue @@ -0,0 +1,198 @@ + + \ No newline at end of file diff --git a/src/views/contract/history-commission.vue b/src/views/contract/history-commission.vue new file mode 100644 index 0000000..18b9571 --- /dev/null +++ b/src/views/contract/history-commission.vue @@ -0,0 +1,207 @@ + + + \ No newline at end of file diff --git a/src/views/contract/history.vue b/src/views/contract/history.vue new file mode 100644 index 0000000..71eb15f --- /dev/null +++ b/src/views/contract/history.vue @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/src/views/contract/hold-position.vue b/src/views/contract/hold-position.vue new file mode 100644 index 0000000..3e48b25 --- /dev/null +++ b/src/views/contract/hold-position.vue @@ -0,0 +1,634 @@ + + + diff --git a/src/views/contract/index copy.vue b/src/views/contract/index copy.vue new file mode 100644 index 0000000..e114f48 --- /dev/null +++ b/src/views/contract/index copy.vue @@ -0,0 +1,333 @@ + + + \ No newline at end of file diff --git a/src/views/contract/index.vue b/src/views/contract/index.vue new file mode 100644 index 0000000..0926172 --- /dev/null +++ b/src/views/contract/index.vue @@ -0,0 +1,412 @@ + + + diff --git a/src/views/contract/page-bottom copy.vue b/src/views/contract/page-bottom copy.vue new file mode 100644 index 0000000..8eee1b1 --- /dev/null +++ b/src/views/contract/page-bottom copy.vue @@ -0,0 +1,102 @@ + + \ No newline at end of file diff --git a/src/views/contract/page-bottom.vue b/src/views/contract/page-bottom.vue new file mode 100644 index 0000000..ec73039 --- /dev/null +++ b/src/views/contract/page-bottom.vue @@ -0,0 +1,108 @@ + + + diff --git a/src/views/contract/transaction-record.vue b/src/views/contract/transaction-record.vue new file mode 100644 index 0000000..45a56c2 --- /dev/null +++ b/src/views/contract/transaction-record.vue @@ -0,0 +1,76 @@ + + \ No newline at end of file diff --git a/src/views/contract/transfer-record.vue b/src/views/contract/transfer-record.vue new file mode 100644 index 0000000..9f9cf32 --- /dev/null +++ b/src/views/contract/transfer-record.vue @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/src/views/course/detail.vue b/src/views/course/detail.vue new file mode 100644 index 0000000..7f4c26a --- /dev/null +++ b/src/views/course/detail.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/src/views/course/index.vue b/src/views/course/index.vue new file mode 100644 index 0000000..523ce30 --- /dev/null +++ b/src/views/course/index.vue @@ -0,0 +1,154 @@ + + + + + \ No newline at end of file diff --git a/src/views/course/list.vue b/src/views/course/list.vue new file mode 100644 index 0000000..6be4dde --- /dev/null +++ b/src/views/course/list.vue @@ -0,0 +1,48 @@ + + + + + \ No newline at end of file diff --git a/src/views/exchange/book-trades.vue b/src/views/exchange/book-trades.vue new file mode 100644 index 0000000..033fc7c --- /dev/null +++ b/src/views/exchange/book-trades.vue @@ -0,0 +1,383 @@ + + + + + + diff --git a/src/views/exchange/chart-deal.vue b/src/views/exchange/chart-deal.vue new file mode 100644 index 0000000..473a2f6 --- /dev/null +++ b/src/views/exchange/chart-deal.vue @@ -0,0 +1,618 @@ + + + + + diff --git a/src/views/exchange/index.vue b/src/views/exchange/index.vue new file mode 100644 index 0000000..11d4d6f --- /dev/null +++ b/src/views/exchange/index.vue @@ -0,0 +1,522 @@ + + + + + \ No newline at end of file diff --git a/src/views/exchange/make-deal.vue b/src/views/exchange/make-deal.vue new file mode 100644 index 0000000..ac5e3ad --- /dev/null +++ b/src/views/exchange/make-deal.vue @@ -0,0 +1,764 @@ + + + + + diff --git a/src/views/exchange/market-news.vue b/src/views/exchange/market-news.vue new file mode 100644 index 0000000..b690f72 --- /dev/null +++ b/src/views/exchange/market-news.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/views/exchange/order-list.vue b/src/views/exchange/order-list.vue new file mode 100644 index 0000000..27f5e3a --- /dev/null +++ b/src/views/exchange/order-list.vue @@ -0,0 +1,302 @@ + + + + + \ No newline at end of file diff --git a/src/views/exchange/symbols.vue b/src/views/exchange/symbols.vue new file mode 100644 index 0000000..d17b711 --- /dev/null +++ b/src/views/exchange/symbols.vue @@ -0,0 +1,260 @@ + + + + + diff --git a/src/views/forgotPwd/index.vue b/src/views/forgotPwd/index.vue new file mode 100644 index 0000000..acd0548 --- /dev/null +++ b/src/views/forgotPwd/index.vue @@ -0,0 +1,153 @@ + + + + + diff --git a/src/views/home/index.vue b/src/views/home/index.vue new file mode 100644 index 0000000..793e6cf --- /dev/null +++ b/src/views/home/index.vue @@ -0,0 +1,2335 @@ + + + + + \ No newline at end of file diff --git a/src/views/market/index.vue b/src/views/market/index.vue new file mode 100644 index 0000000..34fbdc5 --- /dev/null +++ b/src/views/market/index.vue @@ -0,0 +1,268 @@ + + + + + diff --git a/src/views/market/price-line.vue b/src/views/market/price-line.vue new file mode 100644 index 0000000..34672f5 --- /dev/null +++ b/src/views/market/price-line.vue @@ -0,0 +1,117 @@ + + + + + diff --git a/src/views/news/index.vue b/src/views/news/index.vue new file mode 100644 index 0000000..b0ece39 --- /dev/null +++ b/src/views/news/index.vue @@ -0,0 +1,25 @@ + + + + + diff --git a/src/views/notice/detail.vue b/src/views/notice/detail.vue new file mode 100644 index 0000000..6e895fd --- /dev/null +++ b/src/views/notice/detail.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/src/views/notice/index.vue b/src/views/notice/index.vue new file mode 100644 index 0000000..d5d572f --- /dev/null +++ b/src/views/notice/index.vue @@ -0,0 +1,61 @@ + + + \ No newline at end of file diff --git a/src/views/option/VDatafeed.js b/src/views/option/VDatafeed.js new file mode 100644 index 0000000..9318d46 --- /dev/null +++ b/src/views/option/VDatafeed.js @@ -0,0 +1,112 @@ +let LastLength; +class VDatafeed { + constructor(vm) { + this.self = vm; + } + onReady(callback) { + var _this = this; + return new Promise(function (resolve, reject) { + var configuration = _this.defaultConfiguration(); + if (_this.self.getConfig) { + configuration = Object.assign( + _this.defaultConfiguration(), + _this.self.getConfig() + ); + } + resolve(configuration); + }).then(function (data) { + return callback(data); + }); + } + resolveSymbol(symbolName, onSymbolResolvedCallback, onResolveErrorCallback) { + var _this2 = this + return new Promise(function (resolve, reject) { + var symbolInfo = _this2.defaultSymbol(); + if (_this2.self.getSymbol) { + symbolInfo = Object.assign(_this2.defaultSymbol(), _this2.self.getSymbol()); + } + + resolve(symbolInfo); + }).then(function (data) { + return onSymbolResolvedCallback(data); + }).catch(function (err) { + return onResolveErrorCallback(err); + }); + + } + getBars(symbolInfo, resolution, rangeStartDate, rangeEndDate, onDataCallback, onErrorCallback) { + + var onLoadedCallback = function onLoadedCallback(data) { + if (data && data.length) { + onDataCallback(data, { noData: false }); + } else { + onDataCallback([], { noData: true }); + } + LastLength = data.length; + //或者可以这样写: + // data && data.length ? onDataCallback(data, { noData: true }) : onDataCallback([], { noData: true }); + }; + + this.self.getBars(symbolInfo, resolution, rangeStartDate, rangeEndDate, onLoadedCallback, onErrorCallback); + } + subscribeBars(symbolInfo, resolution, onRealtimeCallback, subscriberUID, onResetCacheNeededCallback) { + this.self.onRealtimeCallback = onRealtimeCallback + if (this.self.subscribeBars) { + this.self.subscribeBars(symbolInfo, resolution, onRealtimeCallback, subscriberUID, onResetCacheNeededCallback) + } + } + unsubscribeBars(subscriberUID) { + if (this.self.unsubscribeBars) { + this.self.unsubscribeBars(subscriberUID) + } + } + defaultConfiguration() { + return { + supports_search: false, + supports_group_request: false, + supported_resolutions: ["1","5", "15", "30", "60", "1D", "1W", "1M"], + supports_marks: true, + supports_timescale_marks: true, + supports_time: true + }; + } + defaultSymbol() { + return { + 'name': this.self.symbol.toLocaleUpperCase(), + // 'timezone': 'Asia/Shanghai', + timezone: "America/Toronto", + 'minmov': 1, + 'minmov2': 0, + 'fractional': false, + //设置周期 + 'session': '24x7', + 'has_intraday': true, + 'has_no_volume': false, + //设置是否支持周月线 + "has_daily": true, + + //设置是否支持周月线 + "has_weekly_and_monthly": true, + 'description': this.self.symbol.toLocaleUpperCase(), + //设置精度 100表示保留两位小数 1000三位 10000四位 + 'pricescale': 10000, + 'ticker': this.self.symbol.toLocaleUpperCase(), + intraday_multipliers: ["1","5", + "15", + "30", + "60", + "240",], + 'supported_resolutions': [ + "1", + "5", + "15", + "30", + "60", + "240", + "1D", + "1W", + "1M"] + }; + } +} +export default VDatafeed diff --git a/src/views/option/index.vue b/src/views/option/index.vue new file mode 100644 index 0000000..d0aca0f --- /dev/null +++ b/src/views/option/index.vue @@ -0,0 +1,295 @@ + + + + + diff --git a/src/views/option/kline-highchart.vue b/src/views/option/kline-highchart.vue new file mode 100644 index 0000000..2864917 --- /dev/null +++ b/src/views/option/kline-highchart.vue @@ -0,0 +1,127 @@ + + + + diff --git a/src/views/option/kline.vue b/src/views/option/kline.vue new file mode 100644 index 0000000..edc5aa5 --- /dev/null +++ b/src/views/option/kline.vue @@ -0,0 +1,509 @@ + + + diff --git a/src/views/option/option-bottom.vue b/src/views/option/option-bottom.vue new file mode 100644 index 0000000..ab284fe --- /dev/null +++ b/src/views/option/option-bottom.vue @@ -0,0 +1,227 @@ + + \ No newline at end of file diff --git a/src/views/option/option-operation.vue b/src/views/option/option-operation.vue new file mode 100644 index 0000000..3369736 --- /dev/null +++ b/src/views/option/option-operation.vue @@ -0,0 +1,473 @@ + + \ No newline at end of file diff --git a/src/views/order/exchange-order.vue b/src/views/order/exchange-order.vue new file mode 100644 index 0000000..85b830b --- /dev/null +++ b/src/views/order/exchange-order.vue @@ -0,0 +1,479 @@ + + + + + diff --git a/src/views/order/forex-order.vue b/src/views/order/forex-order.vue new file mode 100644 index 0000000..f39c5d2 --- /dev/null +++ b/src/views/order/forex-order.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/src/views/order/option-order.vue b/src/views/order/option-order.vue new file mode 100644 index 0000000..bed6e4c --- /dev/null +++ b/src/views/order/option-order.vue @@ -0,0 +1,110 @@ + + + + + \ No newline at end of file diff --git a/src/views/order/order-detail.vue b/src/views/order/order-detail.vue new file mode 100644 index 0000000..cbe0417 --- /dev/null +++ b/src/views/order/order-detail.vue @@ -0,0 +1,37 @@ + + \ No newline at end of file diff --git a/src/views/order/swap-order.vue b/src/views/order/swap-order.vue new file mode 100644 index 0000000..7394080 --- /dev/null +++ b/src/views/order/swap-order.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/src/views/otc/ad.vue b/src/views/otc/ad.vue new file mode 100644 index 0000000..e2cee9a --- /dev/null +++ b/src/views/otc/ad.vue @@ -0,0 +1,175 @@ + + + \ No newline at end of file diff --git a/src/views/otc/components/sendAd.vue b/src/views/otc/components/sendAd.vue new file mode 100644 index 0000000..37f6fe8 --- /dev/null +++ b/src/views/otc/components/sendAd.vue @@ -0,0 +1,177 @@ + + \ No newline at end of file diff --git a/src/views/otc/detail.vue b/src/views/otc/detail.vue new file mode 100644 index 0000000..d71bf78 --- /dev/null +++ b/src/views/otc/detail.vue @@ -0,0 +1,250 @@ + + + \ No newline at end of file diff --git a/src/views/otc/index.vue b/src/views/otc/index.vue new file mode 100644 index 0000000..435bb8c --- /dev/null +++ b/src/views/otc/index.vue @@ -0,0 +1,347 @@ + + + \ No newline at end of file diff --git a/src/views/otc/order.vue b/src/views/otc/order.vue new file mode 100644 index 0000000..55bbae3 --- /dev/null +++ b/src/views/otc/order.vue @@ -0,0 +1,182 @@ + + + \ No newline at end of file diff --git a/src/views/otc/pays.vue b/src/views/otc/pays.vue new file mode 100644 index 0000000..83623b4 --- /dev/null +++ b/src/views/otc/pays.vue @@ -0,0 +1,214 @@ + + \ No newline at end of file diff --git a/src/views/profile/certification.vue b/src/views/profile/certification.vue new file mode 100644 index 0000000..5a92660 --- /dev/null +++ b/src/views/profile/certification.vue @@ -0,0 +1,416 @@ + + + + + diff --git a/src/views/profile/index.vue b/src/views/profile/index.vue new file mode 100644 index 0000000..bfff75b --- /dev/null +++ b/src/views/profile/index.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/src/views/profile/invite.vue b/src/views/profile/invite.vue new file mode 100644 index 0000000..faffd26 --- /dev/null +++ b/src/views/profile/invite.vue @@ -0,0 +1,208 @@ + + + + + diff --git a/src/views/profile/login-history.vue b/src/views/profile/login-history.vue new file mode 100644 index 0000000..8a2c0c0 --- /dev/null +++ b/src/views/profile/login-history.vue @@ -0,0 +1,93 @@ + + + + + \ No newline at end of file diff --git a/src/views/profile/reset-pwd.vue b/src/views/profile/reset-pwd.vue new file mode 100644 index 0000000..60fb027 --- /dev/null +++ b/src/views/profile/reset-pwd.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/src/views/purchase/index.vue b/src/views/purchase/index.vue new file mode 100644 index 0000000..2b92224 --- /dev/null +++ b/src/views/purchase/index.vue @@ -0,0 +1,480 @@ + + + + + diff --git a/src/views/server/index.vue b/src/views/server/index.vue new file mode 100644 index 0000000..7cc7e60 --- /dev/null +++ b/src/views/server/index.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/src/views/setting/change-verification.vue b/src/views/setting/change-verification.vue new file mode 100644 index 0000000..82f3079 --- /dev/null +++ b/src/views/setting/change-verification.vue @@ -0,0 +1,93 @@ + + + + + \ No newline at end of file diff --git a/src/views/setting/email-verify.vue b/src/views/setting/email-verify.vue new file mode 100644 index 0000000..2f56875 --- /dev/null +++ b/src/views/setting/email-verify.vue @@ -0,0 +1,87 @@ + + + + + \ No newline at end of file diff --git a/src/views/setting/google-verify.vue b/src/views/setting/google-verify.vue new file mode 100644 index 0000000..201ce67 --- /dev/null +++ b/src/views/setting/google-verify.vue @@ -0,0 +1,157 @@ + + + + + \ No newline at end of file diff --git a/src/views/setting/index.vue b/src/views/setting/index.vue new file mode 100644 index 0000000..5359cd0 --- /dev/null +++ b/src/views/setting/index.vue @@ -0,0 +1,222 @@ + + + + + diff --git a/src/views/setting/login-pwd.vue b/src/views/setting/login-pwd.vue new file mode 100644 index 0000000..b24dcd3 --- /dev/null +++ b/src/views/setting/login-pwd.vue @@ -0,0 +1,105 @@ + + + + + \ No newline at end of file diff --git a/src/views/setting/sms-verify.vue b/src/views/setting/sms-verify.vue new file mode 100644 index 0000000..393b6c0 --- /dev/null +++ b/src/views/setting/sms-verify.vue @@ -0,0 +1,118 @@ + + + + + \ No newline at end of file diff --git a/src/views/setting/trans-pwd.vue b/src/views/setting/trans-pwd.vue new file mode 100644 index 0000000..b986b93 --- /dev/null +++ b/src/views/setting/trans-pwd.vue @@ -0,0 +1,103 @@ + + + + + \ No newline at end of file diff --git a/src/views/setting/withdrawals-pwd.vue b/src/views/setting/withdrawals-pwd.vue new file mode 100644 index 0000000..ddafb1b --- /dev/null +++ b/src/views/setting/withdrawals-pwd.vue @@ -0,0 +1,47 @@ + + + + + \ No newline at end of file diff --git a/src/views/signIn/index.vue b/src/views/signIn/index.vue new file mode 100644 index 0000000..4070942 --- /dev/null +++ b/src/views/signIn/index.vue @@ -0,0 +1,646 @@ + + + + + diff --git a/src/views/signUp/agent.vue b/src/views/signUp/agent.vue new file mode 100644 index 0000000..5ad87a2 --- /dev/null +++ b/src/views/signUp/agent.vue @@ -0,0 +1,693 @@ + + + + + diff --git a/src/views/signUp/index.vue b/src/views/signUp/index.vue new file mode 100644 index 0000000..0c2e5b8 --- /dev/null +++ b/src/views/signUp/index.vue @@ -0,0 +1,753 @@ + + + + + diff --git a/src/views/subscride/index.vue b/src/views/subscride/index.vue new file mode 100644 index 0000000..6536b4e --- /dev/null +++ b/src/views/subscride/index.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/src/views/wallet/Userfeedback.vue b/src/views/wallet/Userfeedback.vue new file mode 100644 index 0000000..320d587 --- /dev/null +++ b/src/views/wallet/Userfeedback.vue @@ -0,0 +1,135 @@ + + + + + \ No newline at end of file diff --git a/src/views/wallet/address.vue b/src/views/wallet/address.vue new file mode 100644 index 0000000..e18341e --- /dev/null +++ b/src/views/wallet/address.vue @@ -0,0 +1,411 @@ + + + + + diff --git a/src/views/wallet/contract-assets.vue b/src/views/wallet/contract-assets.vue new file mode 100644 index 0000000..39d8bec --- /dev/null +++ b/src/views/wallet/contract-assets.vue @@ -0,0 +1,102 @@ + + + + \ No newline at end of file diff --git a/src/views/wallet/exchange-assets.vue b/src/views/wallet/exchange-assets.vue new file mode 100644 index 0000000..8deba0e --- /dev/null +++ b/src/views/wallet/exchange-assets.vue @@ -0,0 +1,995 @@ + + + + + diff --git a/src/views/wallet/funding.vue b/src/views/wallet/funding.vue new file mode 100644 index 0000000..5816c8b --- /dev/null +++ b/src/views/wallet/funding.vue @@ -0,0 +1,281 @@ + + + + + diff --git a/src/views/wallet/getCode.vue b/src/views/wallet/getCode.vue new file mode 100644 index 0000000..8a898c0 --- /dev/null +++ b/src/views/wallet/getCode.vue @@ -0,0 +1,248 @@ + + + \ No newline at end of file diff --git a/src/views/wallet/option-assets.vue b/src/views/wallet/option-assets.vue new file mode 100644 index 0000000..0731515 --- /dev/null +++ b/src/views/wallet/option-assets.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/src/views/wallet/otc-assets.vue b/src/views/wallet/otc-assets.vue new file mode 100644 index 0000000..e9e69fd --- /dev/null +++ b/src/views/wallet/otc-assets.vue @@ -0,0 +1,84 @@ + + + + \ No newline at end of file diff --git a/src/views/wallet/reward.vue b/src/views/wallet/reward.vue new file mode 100644 index 0000000..9e22bb0 --- /dev/null +++ b/src/views/wallet/reward.vue @@ -0,0 +1,93 @@ + + + + + \ No newline at end of file diff --git a/src/views/wallet/transfer.vue b/src/views/wallet/transfer.vue new file mode 100644 index 0000000..9339773 --- /dev/null +++ b/src/views/wallet/transfer.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/src/vuex/store.js b/src/vuex/store.js new file mode 100644 index 0000000..2b3d315 --- /dev/null +++ b/src/vuex/store.js @@ -0,0 +1,38 @@ +import Vue from 'vue' +import Vuex from 'vuex' + +Vue.use(Vuex) + +const store = new Vuex.Store({ + state: { + theme: localStorage.theme || 'light', + // 获取应用配置 + appConfig: (() => { + if (localStorage.appConfig) { + return JSON.parse(localStorage.appConfig) + } else { + return {} + } + })() + }, + mutations: { + SET_THEME(state, data) { + state.theme = data + localStorage.setItem('theme', data) + }, + SET_APPCONFIG(state, data) { + state.appConfig = data + localStorage.setItem('appConfig', JSON.stringify(data)) + } + }, + actions: { + setTheme({ commit }, data) { + commit('SET_THEME', data) + }, + setAppConfig({ commit }, data) { + commit('SET_APPCONFIG', data) + } + }, +}) + +export default store diff --git a/static/.gitkeep b/static/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/static/Kline/charting_library/charting_library.min.d.ts b/static/Kline/charting_library/charting_library.min.d.ts new file mode 100644 index 0000000..b6fab5e --- /dev/null +++ b/static/Kline/charting_library/charting_library.min.d.ts @@ -0,0 +1,1230 @@ +/// + +export declare type LanguageCode = 'ar' | 'zh' | 'cs' | 'da_DK' | 'nl_NL' | 'en' | 'et_EE' | 'fr' | 'de' | 'el' | 'he_IL' | 'hu_HU' | 'id_ID' | 'it' | 'ja' | 'ko' | 'fa' | 'pl' | 'pt' | 'ro' | 'ru' | 'sk_SK' | 'es' | 'sv' | 'th' | 'tr' | 'vi'; +export interface ISubscription { + subscribe(obj: object | null, member: TFunc, singleshot?: boolean): void; + unsubscribe(obj: object | null, member: TFunc): void; + unsubscribeAll(obj: object | null): void; +} +export interface IDelegate extends ISubscription { + fire: TFunc; +} +export interface IDestroyable { + destroy(): void; +} +export interface FormatterParseResult { + res: boolean; +} +export interface ErrorFormatterParseResult extends FormatterParseResult { + error?: string; + res: false; +} +export interface SuccessFormatterParseResult extends FormatterParseResult { + res: true; + suggest?: string; +} +export interface IFormatter { + format(value: any): string; + parse?(value: string): ErrorFormatterParseResult | SuccessFormatterParseResult; +} +/** + * This is the generic type useful for declaring a nominal type, + * which does not structurally matches with the base type and + * the other types declared over the same base type + * + * Usage: + * @example + * type Index = Nominal; + * // let i: Index = 42; // this fails to compile + * let i: Index = 42 as Index; // OK + * @example + * type TagName = Nominal; + */ +export declare type Nominal = T & { + [Symbol.species]: Name; +}; +export declare type StudyInputValueType = string | number | boolean; +export declare type StudyOverrideValueType = string | number | boolean; +export interface StudyOverrides { + [key: string]: StudyOverrideValueType; +} +export interface WatchedValueSubscribeOptions { + once?: boolean; + callWithLast?: boolean; +} +export interface IWatchedValueReadonly { + value(): T; + subscribe(callback: (value: T) => void, options?: WatchedValueSubscribeOptions): void; + unsubscribe(callback?: ((value: T) => void) | null): void; + spawn(): IWatchedValueReadonlySpawn; +} +export interface IWatchedValueReadonlySpawn extends IWatchedValueReadonly, IDestroyable { +} +export declare type WatchedValueCallback = (value: T) => void; +export interface IWatchedValue extends IWatchedValueReadonly { + value(): T; + setValue(value: T, forceUpdate?: boolean): void; + subscribe(callback: WatchedValueCallback, options?: WatchedValueSubscribeOptions): void; + unsubscribe(callback?: WatchedValueCallback | null): void; + readonly(): IWatchedValueReadonly; + spawn(): IWatchedValueSpawn; +} +export interface IWatchedValueSpawn extends IWatchedValueReadonlySpawn, IWatchedValue { + spawn(): IWatchedValueSpawn; +} +export declare const enum ConnectionStatus { + Connected = 1, + Connecting = 2, + Disconnected = 3, + Error = 4, +} +export declare const enum OrderType { + Limit = 1, + Market = 2, + Stop = 3, + StopLimit = 4, +} +export declare const enum Side { + Buy = 1, + Sell = -1, +} +export declare const enum OrderStatus { + Canceled = 1, + Filled = 2, + Inactive = 3, + Placing = 4, + Rejected = 5, + Working = 6, +} +export declare const enum ParentType { + Order = 1, + Position = 2, + Trade = 3, +} +export declare const enum OrderTicketFocusControl { + StopLoss = 1, + StopPrice = 2, + TakeProfit = 3, +} +export declare const enum NotificationType { + Error = 0, + Success = 1, +} +export interface TableRow { + priceFormatter?: IFormatter; + [name: string]: any; +} +export interface TableFormatterInputs { + value: number | string | Side | OrderType | OrderStatus; + prevValue?: number | undefined; + row: TableRow; + $container: JQuery; + priceFormatter?: IFormatter; +} +export declare type TableElementFormatFunction = (inputs: TableFormatterInputs) => string | JQuery; +export interface TableElementFormatter { + name: string; + format: TableElementFormatFunction; +} +export declare type StandardFormatterName = 'date' | 'default' | 'fixed' | 'formatPrice' | 'formatPriceForexSup' | 'integerSeparated' | 'localDate' | 'percentage' | 'pips' | 'profit' | 'side' | 'status' | 'symbol' | 'type'; +export interface DOMLevel { + price: number; + volume: number; +} +export interface DOMData { + snapshot: boolean; + asks: DOMLevel[]; + bids: DOMLevel[]; +} +export interface QuantityMetainfo { + min: number; + max: number; + step: number; +} +export interface InstrumentInfo { + qty: QuantityMetainfo; + pipValue: number; + pipSize: number; + minTick: number; + description: string; + domVolumePrecision?: number; +} +export interface CustomFields { + [key: string]: any; +} +export interface PreOrder { + symbol: string; + brokerSymbol?: string; + type?: OrderType; + side?: Side; + qty: number; + status?: OrderStatus; + stopPrice?: number; + limitPrice?: number; + stopLoss?: number; + takeProfit?: number; + duration?: OrderDuration; +} +export interface PlacedOrder extends PreOrder, CustomFields { + id: string; + filledQty?: number; + avgPrice?: number; + updateTime?: number; + takeProfit?: number; + stopLoss?: number; + type: OrderType; + side: Side; + status: OrderStatus; +} +export interface OrderWithParent extends PlacedOrder { + parentId: string; + parentType: ParentType; +} +export declare type Order = OrderWithParent | PlacedOrder; +export interface Position { + id: string; + symbol: string; + brokerSymbol?: string; + qty: number; + side: Side; + avgPrice: number; + [key: string]: any; +} +export interface Trade extends CustomFields { + id: string; + date: number; + symbol: string; + brokerSymbol?: string; + qty: number; + side: Side; + price: number; +} +export interface Execution extends CustomFields { + symbol: string; + brokerSymbol?: string; + price: number; + qty: number; + side: Side; + time: number; +} +export interface AccountInfo { + id: string; + name: string; + currency?: string; +} +export interface AccountManagerColumn { + id?: string; + label: string; + className?: string; + formatter?: StandardFormatterName | 'orderSettings' | 'posSettings' | string; + property?: string; + sortProp?: string; + modificationProperty?: string; + notSortable?: boolean; + help?: string; + highlightDiff?: boolean; + fixedWidth?: boolean; + notHideable?: boolean; + hideByDefault?: boolean; +} +export interface SortingParameters { + columnId: string; + asc?: boolean; +} +export interface AccountManagerTable { + id: string; + title?: string; + columns: AccountManagerColumn[]; + initialSorting?: SortingParameters; + changeDelegate: IDelegate<(data: object) => void>; + getData(): Promise; +} +export interface AccountManagerPage { + id: string; + title: string; + tables: AccountManagerTable[]; +} +export interface AccountManagerInfo { + accountTitle: string; + accountsList?: AccountInfo[]; + account?: IWatchedValue; + summary: AccountManagerSummaryField[]; + customFormatters?: TableElementFormatter[]; + orderColumns: AccountManagerColumn[]; + historyColumns?: AccountManagerColumn[]; + positionColumns: AccountManagerColumn[]; + tradeColumns?: AccountManagerColumn[]; + pages: AccountManagerPage[]; + possibleOrderStatuses?: OrderStatus[]; + contextMenuActions?(contextMenuEvent: JQueryEventObject, activePageActions: ActionMetaInfo[]): Promise; +} +export interface TradingQuotes { + trade?: number; + size?: number; + bid?: number; + bid_size?: number; + ask?: number; + ask_size?: number; + spread?: number; +} +export interface ActionDescription { + text?: '-' | string; + separator?: boolean; + shortcut?: string; + tooltip?: string; + checked?: boolean; + checkable?: boolean; + enabled?: boolean; + externalLink?: boolean; +} +export interface MenuSeparator extends ActionDescription { + separator: boolean; +} +export interface ActionDescriptionWithCallback extends ActionDescription { + action: (a: ActionDescription) => void; +} +export declare type ActionMetaInfo = ActionDescriptionWithCallback | MenuSeparator; +export interface AccountManagerSummaryField { + text: string; + wValue: IWatchedValueReadonly; + formatter?: string; +} +export interface OrderDurationMetaInfo { + hasDatePicker?: boolean; + hasTimePicker?: boolean; + name: string; + value: string; +} +export interface OrderDuration { + type: string; + datetime?: number; +} +export interface BrokerConfigFlags { + showQuantityInsteadOfAmount?: boolean; + supportOrderBrackets?: boolean; + supportPositionBrackets?: boolean; + supportTradeBrackets?: boolean; + supportTrades?: boolean; + supportClosePosition?: boolean; + supportCloseTrade?: boolean; + supportEditAmount?: boolean; + supportLevel2Data?: boolean; + supportMultiposition?: boolean; + supportPLUpdate?: boolean; + supportReducePosition?: boolean; + supportReversePosition?: boolean; + supportStopLimitOrders?: boolean; + supportDemoLiveSwitcher?: boolean; + supportCustomPlaceOrderTradableCheck?: boolean; + supportMarketBrackets?: boolean; + supportSymbolSearch?: boolean; + supportModifyDuration?: boolean; + requiresFIFOCloseTrades?: boolean; + supportBottomWidget?: boolean; + /** + * @deprecated + */ + supportBrackets?: boolean; +} +export interface SingleBrokerMetaInfo { + configFlags: BrokerConfigFlags; + customNotificationFields?: string[]; + durations?: OrderDurationMetaInfo[]; +} +export interface Brackets { + stopLoss?: number; + takeProfit?: number; +} +export interface DefaultContextMenuActionsParams { +} +export interface DefaultDropdownActionsParams { + showFloatingToolbar?: boolean; + showDOM?: boolean; + tradingProperties?: boolean; + selectAnotherBroker?: boolean; + disconnect?: boolean; + showHowToUse?: boolean; +} +export interface ITradeContext { + symbol: string; + displaySymbol: string; + value: number | null; + formattedValue: string; + last: number; +} +export interface QuotesBase { + change: number; + change_percent: number; + last_price: number; + fractional: number; + minmov: number; + minmove2: number; + pricescale: number; + description: string; +} +export interface IBrokerConnectionAdapterFactory { + createDelegate(): IDelegate; + createWatchedValue(value?: T): IWatchedValue; +} +export interface IBrokerConnectionAdapterHost { + factory: IBrokerConnectionAdapterFactory; + connectionStatusUpdate(status: ConnectionStatus, message?: string): void; + defaultFormatter(symbol: string): Promise; + numericFormatter(decimalPlaces: number): Promise; + defaultContextMenuActions(context: ITradeContext, params?: DefaultContextMenuActionsParams): Promise; + defaultDropdownMenuActions(options?: Partial): ActionMetaInfo[]; + floatingTradingPanelVisibility(): IWatchedValue; + domVisibility(): IWatchedValue; + patchConfig(config: Partial): void; + setDurations(durations: OrderDurationMetaInfo[]): void; + orderUpdate(order: Order, isHistoryUpdate?: boolean): void; + orderPartialUpdate(id: string, orderChanges: Partial): void; + positionUpdate(position: Position, isHistoryUpdate?: boolean): void; + positionPartialUpdate(id: string, positionChanges: Partial): void; + tradeUpdate(trade: Trade, isHistoryUpdate?: boolean): void; + tradePartialUpdate(id: string, tradeChanges: Partial): void; + executionUpdate(execution: Execution, isHistoryUpdate?: boolean): void; + fullUpdate(): void; + realtimeUpdate(symbol: string, data: TradingQuotes): void; + plUpdate(positionId: string, pl: number): void; + tradePLUpdate(tradeId: string, pl: number): void; + equityUpdate(equity: number): void; + domeUpdate(symbol: string, equity: DOMData): void; + showOrderDialog(order: T, handler: (order: T) => Promise, focus?: OrderTicketFocusControl): Promise; + showCancelOrderDialog(orderId: string, handler: () => void): Promise; + showCancelMultipleOrdersDialog(symbol: string, side: Side | undefined, qty: number, handler: () => void): Promise; + showCancelBracketsDialog(orderId: string, handler: () => void): Promise; + showCancelMultipleBracketsDialog(orderId: string, handler: () => void): Promise; + showClosePositionDialog(positionId: string, handler: () => void): Promise; + showReversePositionDialog(position: Position, handler: () => void): Promise; + showPositionBracketsDialog(position: Position | Trade, brackets: Brackets, focus: OrderTicketFocusControl | null, handler: (brackets: Brackets) => void): Promise; + showNotification(title: string, text: string, notificationType?: NotificationType): void; + setButtonDropdownActions(descriptions: ActionMetaInfo[]): void; + activateBottomWidget(): Promise; + showTradingProperties(): void; + symbolSnapshot(symbol: string): Promise; +} +export interface IBrokerCommon { + chartContextMenuActions(context: ITradeContext, options?: DefaultContextMenuActionsParams): Promise; + isTradable(symbol: string): Promise; + connectionStatus(): ConnectionStatus; + placeOrder(order: PreOrder, silently?: boolean): Promise; + modifyOrder(order: Order, silently?: boolean, focus?: OrderTicketFocusControl): Promise; + orders(): Promise; + positions(): Promise; + trades?(): Promise; + executions(symbol: string): Promise; + symbolInfo(symbol: string): Promise; + accountInfo(): Promise; + editPositionBrackets?(positionId: string, focus?: OrderTicketFocusControl, brackets?: Brackets, silently?: boolean): Promise; + editTradeBrackets?(tradeId: string, focus?: OrderTicketFocusControl, brackets?: Brackets, silently?: boolean): Promise; + accountManagerInfo(): AccountManagerInfo; + formatter?(symbol: string): Promise; + spreadFormatter?(symbol: string): Promise; +} +export interface IBrokerWithoutRealtime extends IBrokerCommon { + subscribeDOME?(symbol: string): void; + unsubscribeDOME?(symbol: string): void; + cancelOrder(orderId: string, silently: boolean): Promise; + cancelOrders(symbol: string, side: Side | undefined, ordersIds: string[], silently: boolean): Promise; + reversePosition?(positionId: string, silently?: boolean): Promise; + closePosition(positionId: string, silently: boolean): Promise; + closeTrade?(tradeId: string, silently: boolean): Promise; + /** + * @deprecated Brokers should always send PL and equity updates + */ + subscribePL?(positionId: string): void; + subscribeEquity?(): void; + /** + * @deprecated + */ + unsubscribePL?(positionId: string): void; + unsubscribeEquity?(): void; +} +export interface IBrokerTerminal extends IBrokerWithoutRealtime { + subscribeRealtime(symbol: string): void; + unsubscribeRealtime(symbol: string): void; +} +export declare type ResolutionString = string; +export interface Exchange { + value: string; + name: string; + desc: string; +} +export interface DatafeedSymbolType { + name: string; + value: string; +} +export interface DatafeedConfiguration { + exchanges?: Exchange[]; + supported_resolutions?: ResolutionString[]; + supports_marks?: boolean; + supports_time?: boolean; + supports_timescale_marks?: boolean; + symbols_types?: DatafeedSymbolType[]; +} +export declare type OnReadyCallback = (configuration: DatafeedConfiguration) => void; +export interface IExternalDatafeed { + onReady(callback: OnReadyCallback): void; +} +export interface DatafeedQuoteValues { + ch?: number; + chp?: number; + short_name?: string; + exchange?: string; + description?: string; + lp?: number; + ask?: number; + bid?: number; + spread?: number; + open_price?: number; + high_price?: number; + low_price?: number; + prev_close_price?: number; + volume?: number; + original_name?: string; + [valueName: string]: string | number | undefined; +} +export interface QuoteOkData { + s: 'ok'; + n: string; + v: DatafeedQuoteValues; +} +export interface QuoteErrorData { + s: 'error'; + n: string; + v: object; +} +export declare type QuoteData = QuoteOkData | QuoteErrorData; +export declare type QuotesCallback = (data: QuoteData[]) => void; +export interface IDatafeedQuotesApi { + getQuotes(symbols: string[], onDataCallback: QuotesCallback, onErrorCallback: (msg: string) => void): void; + subscribeQuotes(symbols: string[], fastSymbols: string[], onRealtimeCallback: QuotesCallback, listenerGUID: string): void; + unsubscribeQuotes(listenerGUID: string): void; +} +export declare type CustomTimezones = 'America/New_York' | 'America/Los_Angeles' | 'America/Chicago' | 'America/Phoenix' | 'America/Toronto' | 'America/Vancouver' | 'America/Argentina/Buenos_Aires' | 'America/El_Salvador' | 'America/Sao_Paulo' | 'America/Bogota' | 'America/Caracas' | 'Europe/Moscow' | 'Europe/Athens' | 'Europe/Berlin' | 'Europe/London' | 'Europe/Madrid' | 'Europe/Paris' | 'Europe/Rome' | 'Europe/Warsaw' | 'Europe/Istanbul' | 'Europe/Zurich' | 'Australia/Sydney' | 'Australia/Brisbane' | 'Australia/Adelaide' | 'Australia/ACT' | 'Asia/Almaty' | 'Asia/Ashkhabad' | 'Asia/Tokyo' | 'Asia/Taipei' | 'Asia/Singapore' | 'Asia/Shanghai' | 'Asia/Seoul' | 'Asia/Tehran' | 'Asia/Dubai' | 'Asia/Kolkata' | 'Asia/Hong_Kong' | 'Asia/Bangkok' | 'Pacific/Auckland' | 'Pacific/Chatham' | 'Pacific/Fakaofo' | 'Pacific/Honolulu' | 'America/Mexico_City' | 'Africa/Johannesburg' | 'Asia/Kathmandu' | 'US/Mountain'; +export declare type Timezone = 'UTC' | CustomTimezones; +export interface LibrarySymbolInfo { + /** + * Symbol Name + */ + name: string; + full_name: string; + base_name?: [string]; + /** + * Unique symbol id + */ + ticker?: string; + description: string; + type: string; + /** + * @example "1700-0200" + */ + session: string; + /** + * Traded exchange + * @example "NYSE" + */ + exchange: string; + listed_exchange: string; + timezone: Timezone; + /** + * Code (Tick) + * @example 8/16/.../256 (1/8/100 1/16/100 ... 1/256/100) or 1/10/.../10000000 (1 0.1 ... 0.0000001) + */ + pricescale: number; + /** + * The number of units that make up one tick. + * @example For example, U.S. equities are quotes in decimals, and tick in decimals, and can go up +/- .01. So the tick increment is 1. But the e-mini S&P futures contract, though quoted in decimals, goes up in .25 increments, so the tick increment is 25. (see also Tick Size) + */ + minmov: number; + fractional?: boolean; + /** + * @example Quarters of 1/32: pricescale=128, minmovement=1, minmovement2=4 + */ + minmove2?: number; + /** + * false if DWM only + */ + has_intraday?: boolean; + /** + * An array of resolutions which should be enabled in resolutions picker for this symbol. + */ + supported_resolutions: ResolutionString[]; + /** + * @example (for ex.: "1,5,60") - only these resolutions will be requested, all others will be built using them if possible + */ + intraday_multipliers?: string[]; + has_seconds?: boolean; + /** + * It is an array containing seconds resolutions (in seconds without a postfix) the datafeed builds by itself. + */ + seconds_multipliers?: string[]; + has_daily?: boolean; + has_weekly_and_monthly?: boolean; + has_empty_bars?: boolean; + force_session_rebuild?: boolean; + has_no_volume?: boolean; + /** + * Integer showing typical volume value decimal places for this symbol + */ + volume_precision?: number; + data_status?: 'streaming' | 'endofday' | 'pulsed' | 'delayed_streaming'; + /** + * Boolean showing whether this symbol is expired futures contract or not. + */ + expired?: boolean; + /** + * Unix timestamp of expiration date. + */ + expiration_date?: number; + sector?: string; + industry?: string; + currency_code?: string; +} +export interface Bar { + time: number; + open: number; + high: number; + low: number; + close: number; + volume?: number; +} +export interface SearchSymbolResultItem { + symbol: string; + full_name: string; + description: string; + exchange: string; + ticker: string; + type: string; +} +export interface HistoryMetadata { + noData: boolean; + nextTime?: number | null; +} +export interface MarkCustomColor { + color: string; + background: string; +} +export declare type MarkConstColors = 'red' | 'green' | 'blue' | 'yellow'; +export interface Mark { + id: string | number; + time: number; + color: MarkConstColors | MarkCustomColor; + text: string; + label: string; + labelFontColor: string; + minSize: number; +} +export interface TimescaleMark { + id: string | number; + time: number; + color: MarkConstColors | string; + label: string; + tooltip: string[]; +} +export declare type ResolutionBackValues = 'D' | 'M'; +export interface HistoryDepth { + resolutionBack: ResolutionBackValues; + intervalBack: number; +} +export declare type SearchSymbolsCallback = (items: SearchSymbolResultItem[]) => void; +export declare type ResolveCallback = (symbolInfo: LibrarySymbolInfo) => void; +export declare type HistoryCallback = (bars: Bar[], meta: HistoryMetadata) => void; +export declare type SubscribeBarsCallback = (bar: Bar) => void; +export declare type GetMarksCallback = (marks: T[]) => void; +export declare type ServerTimeCallback = (serverTime: number) => void; +export declare type DomeCallback = (data: DOMData) => void; +export declare type ErrorCallback = (reason: string) => void; +export interface IDatafeedChartApi { + calculateHistoryDepth?(resolution: ResolutionString, resolutionBack: ResolutionBackValues, intervalBack: number): HistoryDepth | undefined; + getMarks?(symbolInfo: LibrarySymbolInfo, startDate: number, endDate: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; + getTimescaleMarks?(symbolInfo: LibrarySymbolInfo, startDate: number, endDate: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; + /** + * This function is called if configuration flag supports_time is set to true when chart needs to know the server time. + * The charting library expects callback to be called once. + * The time is provided without milliseconds. Example: 1445324591. It is used to display Countdown on the price scale. + */ + getServerTime?(callback: ServerTimeCallback): void; + searchSymbols(userInput: string, exchange: string, symbolType: string, onResult: SearchSymbolsCallback): void; + resolveSymbol(symbolName: string, onResolve: ResolveCallback, onError: ErrorCallback): void; + getBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, rangeStartDate: number, rangeEndDate: number, onResult: HistoryCallback, onError: ErrorCallback, isFirstCall: boolean): void; + subscribeBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, onTick: SubscribeBarsCallback, listenerGuid: string, onResetCacheNeededCallback: () => void): void; + unsubscribeBars(listenerGuid: string): void; + subscribeDepth?(symbolInfo: LibrarySymbolInfo, callback: DomeCallback): string; + unsubscribeDepth?(subscriberUID: string): void; +} +export interface ChartMetaInfo { + id: string; + name: string; + symbol: string; + resolution: ResolutionString; + timestamp: number; +} +export interface ChartData { + id: string; + name: string; + symbol: string; + resolution: ResolutionString; + content: string; +} +export interface StudyTemplateMetaInfo { + name: string; +} +export interface StudyTemplateData { + name: string; + content: string; +} +export interface IExternalSaveLoadAdapter { + getAllCharts(): Promise; + removeChart(chartId: string): Promise; + saveChart(chartData: ChartData): Promise; + getChartContent(chartId: string): Promise; + getAllStudyTemplates(): Promise; + removeStudyTemplate(studyTemplateInfo: StudyTemplateMetaInfo): Promise; + saveStudyTemplate(studyTemplateData: StudyTemplateData): Promise; + getStudyTemplateContent(studyTemplateInfo: StudyTemplateMetaInfo): Promise; +} +export interface RestBrokerMetaInfo { + url: string; + access_token: string; +} +export interface AccessListItem { + name: string; + grayed?: boolean; +} +export interface AccessList { + type: 'black' | 'white'; + tools: AccessListItem[]; +} +export interface NumericFormattingParams { + decimal_sign: string; +} +export declare type AvailableSaveloadVersions = '1.0' | '1.1'; +export interface Overrides { + [key: string]: string | number | boolean; +} +export interface WidgetBarParams { + details?: boolean; + watchlist?: boolean; + news?: boolean; + watchlist_settings?: { + default_symbols: string[]; + readonly?: boolean; + }; +} +export interface RssNewsFeedInfo { + url: string; + name: string; +} +export declare type RssNewsFeedItem = RssNewsFeedInfo | RssNewsFeedInfo[]; +export interface RssNewsFeedParams { + default: RssNewsFeedItem; + [symbolType: string]: RssNewsFeedItem; +} +export interface NewsProvider { + is_news_generic?: boolean; + get_news(symbol: string, callback: (items: NewsItem[]) => void): void; +} +export interface CustomFormatter { + format(date: Date): string; + formatLocal(date: Date): string; +} +export interface CustomFormatters { + timeFormatter: CustomFormatter; + dateFormatter: CustomFormatter; +} +export interface TimeFrameItem { + text: string; + resolution: ResolutionString; + description?: string; + title?: string; +} +export interface Favorites { + intervals: ResolutionString[]; + chartTypes: string[]; +} +export interface NewsItem { + fullDescription: string; + link?: string; + published: number; + shortDescription?: string; + source: string; + title: string; +} +export interface LoadingScreenOptions { + foregroundColor?: string; + backgroundColor?: string; +} +export interface InitialSettingsMap { + [key: string]: string; +} +export interface ISettingsAdapter { + initialSettings?: InitialSettingsMap; + setValue(key: string, value: string): void; + removeValue(key: string): void; +} +export declare type IBasicDataFeed = IDatafeedChartApi & IExternalDatafeed; +export interface ChartingLibraryWidgetOptions { + container_id: string; + datafeed: IBasicDataFeed | (IBasicDataFeed & IDatafeedQuotesApi); + interval: ResolutionString; + symbol: string; + auto_save_delay?: number; + autosize?: boolean; + debug?: boolean; + disabled_features?: string[]; + drawings_access?: AccessList; + enabled_features?: string[]; + fullscreen?: boolean; + height?: number; + library_path?: string; + locale: LanguageCode; + numeric_formatting?: NumericFormattingParams; + saved_data?: object; + studies_access?: AccessList; + study_count_limit?: number; + symbol_search_request_delay?: number; + timeframe?: string; + timezone?: 'exchange' | Timezone; + toolbar_bg?: string; + width?: number; + charts_storage_url?: string; + charts_storage_api_version?: AvailableSaveloadVersions; + client_id?: string; + user_id?: string; + load_last_chart?: boolean; + studies_overrides?: StudyOverrides; + customFormatters?: CustomFormatters; + overrides?: Overrides; + snapshot_url?: string; + indicators_file_name?: string; + preset?: 'mobile'; + time_frames?: TimeFrameItem[]; + custom_css_url?: string; + favorites?: Favorites; + save_load_adapter?: IExternalSaveLoadAdapter; + loading_screen?: LoadingScreenOptions; + settings_adapter?: ISettingsAdapter; +} +export interface TradingTerminalWidgetOptions extends ChartingLibraryWidgetOptions { + brokerConfig?: SingleBrokerMetaInfo; + restConfig?: RestBrokerMetaInfo; + widgetbar?: WidgetBarParams; + rss_news_feed?: RssNewsFeedParams; + news_provider?: NewsProvider; + brokerFactory?(host: IBrokerConnectionAdapterHost): IBrokerWithoutRealtime | IBrokerTerminal; +} +export declare type LayoutType = 's' | '2h' | '2-1' | '2v' | '3h' | '3v' | '3s' | '4' | '6' | '8'; +export declare type SupportedLineTools = 'text' | 'anchored_text' | 'note' | 'anchored_note' | 'double_curve' | 'arc' | 'icon' | 'arrow_up' | 'arrow_down' | 'arrow_left' | 'arrow_right' | 'price_label' | 'flag' | 'vertical_line' | 'horizontal_line' | 'horizontal_ray' | 'trend_line' | 'trend_angle' | 'arrow' | 'ray' | 'extended' | 'parallel_channel' | 'disjoint_angle' | 'flat_bottom' | 'pitchfork' | 'schiff_pitchfork_modified' | 'schiff_pitchfork' | 'balloon' | 'inside_pitchfork' | 'pitchfan' | 'gannbox' | 'gannbox_square' | 'gannbox_fan' | 'fib_retracement' | 'fib_trend_ext' | 'fib_speed_resist_fan' | 'fib_timezone' | 'fib_trend_time' | 'fib_circles' | 'fib_spiral' | 'fib_speed_resist_arcs' | 'fib_channel' | 'xabcd_pattern' | 'cypher_pattern' | 'abcd_pattern' | 'callout' | 'triangle_pattern' | '3divers_pattern' | 'head_and_shoulders' | 'fib_wedge' | 'elliott_impulse_wave' | 'elliott_triangle_wave' | 'elliott_triple_combo' | 'elliott_correction' | 'elliott_double_combo' | 'cyclic_lines' | 'time_cycles' | 'sine_line' | 'long_position' | 'short_position' | 'forecast' | 'date_range' | 'price_range' | 'date_and_price_range' | 'bars_pattern' | 'ghost_feed' | 'projection' | 'rectangle' | 'rotated_rectangle' | 'ellipse' | 'triangle' | 'polyline' | 'curve' | 'regression_trend' | 'cursor' | 'dot' | 'arrow_cursor' | 'eraser' | 'measure' | 'zoom' | 'brush'; +export interface IOrderLineAdapter { + remove(): void; + onModify(callback: () => void): this; + onModify(data: T, callback: (data: T) => void): this; + onMove(callback: () => void): this; + onMove(data: T, callback: (data: T) => void): this; + getPrice(): number; + setPrice(value: number): this; + getText(): string; + setText(value: string): this; + getTooltip(): string; + setTooltip(value: string): this; + getQuantity(): string; + setQuantity(value: string): this; + getEditable(): boolean; + setEditable(value: boolean): this; + getExtendLeft(): boolean; + setExtendLeft(value: boolean): this; + getLineLength(): number; + setLineLength(value: number): this; + getLineStyle(): number; + setLineStyle(value: number): this; + getLineWidth(): number; + setLineWidth(value: number): this; + getBodyFont(): string; + setBodyFont(value: string): this; + getQuantityFont(): string; + setQuantityFont(value: string): this; + getLineColor(): string; + setLineColor(value: string): this; + getBodyBorderColor(): string; + setBodyBorderColor(value: string): this; + getBodyBackgroundColor(): string; + setBodyBackgroundColor(value: string): this; + getBodyTextColor(): string; + setBodyTextColor(value: string): this; + getQuantityBorderColor(): string; + setQuantityBorderColor(value: string): this; + getQuantityBackgroundColor(): string; + setQuantityBackgroundColor(value: string): this; + getQuantityTextColor(): string; + setQuantityTextColor(value: string): this; + getCancelButtonBorderColor(): string; + setCancelButtonBorderColor(value: string): this; + getCancelButtonBackgroundColor(): string; + setCancelButtonBackgroundColor(value: string): this; + getCancelButtonIconColor(): string; + setCancelButtonIconColor(value: string): this; +} +export interface IPositionLineAdapter { + remove(): void; + onClose(callback: () => void): this; + onClose(data: T, callback: (data: T) => void): this; + onModify(callback: () => void): this; + onModify(data: T, callback: (data: T) => void): this; + onReverse(callback: () => void): this; + onReverse(data: T, callback: (data: T) => void): this; + getPrice(): number; + setPrice(value: number): this; + getText(): string; + setText(value: string): this; + getTooltip(): string; + setTooltip(value: string): this; + getQuantity(): string; + setQuantity(value: string): this; + getExtendLeft(): boolean; + setExtendLeft(value: boolean): this; + getLineLength(): number; + setLineLength(value: number): this; + getLineStyle(): number; + setLineStyle(value: number): this; + getLineWidth(): number; + setLineWidth(value: number): this; + getBodyFont(): string; + setBodyFont(value: string): this; + getQuantityFont(): string; + setQuantityFont(value: string): this; + getLineColor(): string; + setLineColor(value: string): this; + getBodyBorderColor(): string; + setBodyBorderColor(value: string): this; + getBodyBackgroundColor(): string; + setBodyBackgroundColor(value: string): this; + getBodyTextColor(): string; + setBodyTextColor(value: string): this; + getQuantityBorderColor(): string; + setQuantityBorderColor(value: string): this; + getQuantityBackgroundColor(): string; + setQuantityBackgroundColor(value: string): this; + getQuantityTextColor(): string; + setQuantityTextColor(value: string): this; + getReverseButtonBorderColor(): string; + setReverseButtonBorderColor(value: string): this; + getReverseButtonBackgroundColor(): string; + setReverseButtonBackgroundColor(value: string): this; + getReverseButtonIconColor(): string; + setReverseButtonIconColor(value: string): this; + getCloseButtonBorderColor(): string; + setCloseButtonBorderColor(value: string): this; + getCloseButtonBackgroundColor(): string; + setCloseButtonBackgroundColor(value: string): this; + getCloseButtonIconColor(): string; + setCloseButtonIconColor(value: string): this; +} +export declare type Direction = 'buy' | 'sell'; +export interface IExecutionLineAdapter { + remove(): void; + getPrice(): number; + setPrice(value: number): this; + getTime(): number; + setTime(value: number): this; + getDirection(): Direction; + setDirection(value: Direction): this; + getText(): string; + setText(value: string): this; + getTooltip(): string; + setTooltip(value: string): this; + getArrowHeight(): number; + setArrowHeight(value: number): this; + getArrowSpacing(): number; + setArrowSpacing(value: number): this; + getFont(): string; + setFont(value: string): this; + getTextColor(): string; + setTextColor(value: string): this; + getArrowColor(): string; + setArrowColor(value: string): this; +} +export declare type StudyInputId = Nominal; +export interface StudyInputInfo { + id: StudyInputId; + name: string; + type: string; + localizedName: string; +} +export interface StudyInputValueItem { + id: StudyInputId; + value: StudyInputValueType; +} +export interface IStudyApi { + isUserEditEnabled(): boolean; + setUserEditEnabled(enabled: boolean): void; + getInputsInfo(): StudyInputInfo[]; + getInputValues(): StudyInputValueItem[]; + setInputValues(values: StudyInputValueItem[]): void; + mergeUp(): void; + mergeDown(): void; + unmergeUp(): void; + unmergeDown(): void; + isVisible(): boolean; + setVisible(visible: boolean): void; + bringToFront(): void; + sendToBack(): void; + applyOverrides(overrides: TOverrides): void; +} +export interface TimePoint { + time: number; +} +export interface StickedPoint extends TimePoint { + channel: 'open' | 'high' | 'low' | 'close'; +} +export interface PricedPoint extends TimePoint { + price: number; +} +export declare type ShapePoint = StickedPoint | PricedPoint | TimePoint; +export interface ILineDataSourceApi { + isSelectionEnabled(): boolean; + setSelectionEnabled(enable: boolean): void; + isSavingEnabled(): boolean; + setSavingEnabled(enable: boolean): void; + isShowInObjectsTreeEnabled(): boolean; + setShowInObjectsTreeEnabled(enabled: boolean): void; + isUserEditEnabled(): boolean; + setUserEditEnabled(enabled: boolean): void; + bringToFront(): void; + sendToBack(): void; + getProperties(): object; + setProperties(newProperties: object): void; + getPoints(): PricedPoint[]; + setPoints(points: ShapePoint[]): void; +} +export interface CrossHairMovedEventParams { + time: number; + price: number; +} +export interface VisibleTimeRange { + from: number; + to: number; +} +export interface VisiblePriceRange { + from: number; + to: number; +} +export declare type ChartActionId = 'chartProperties' | 'compareOrAdd' | 'scalesProperties' | 'tmzProperties' | 'paneObjectTree' | 'insertIndicator' | 'symbolSearch' | 'changeInterval' | 'timeScaleReset' | 'chartReset' | 'seriesHide' | 'studyHide' | 'lineToggleLock' | 'lineHide' | 'showLeftAxis' | 'showRightAxis' | 'scaleSeriesOnly' | 'drawingToolbarAction' | 'magnetAction' | 'stayInDrawingModeAction' | 'lockDrawingsAction' | 'hideAllDrawingsAction' | 'hideAllMarks' | 'showCountdown' | 'showSeriesLastValue' | 'showSymbolLabelsAction' | 'showStudyLastValue' | 'showStudyPlotNamesAction' | 'undo' | 'redo' | 'takeScreenshot' | 'paneRemoveAllStudiesDrawingTools'; +export declare const enum SeriesStyle { + Bars = 0, + Candles = 1, + Line = 2, + Area = 3, + HeikenAshi = 8, + HollowCandles = 9, + Renko = 4, + Kagi = 5, + PointAndFigure = 6, + LineBreak = 7, +} +export declare type EntityId = Nominal; +export interface EntityInfo { + id: EntityId; + name: string; +} +export interface CreateStudyOptions { + checkLimit: boolean; +} +export interface CreateShapeOptions { + shape?: 'arrow_up' | 'arrow_down' | 'flag' | 'vertical_line' | 'horizontal_line'; + text?: string; + lock?: boolean; + disableSelection?: boolean; + disableSave?: boolean; + disableUndo?: boolean; + overrides?: TOverrides; + zOrder?: 'top' | 'bottom'; + showInObjectsTree?: boolean; +} +export interface CreateStudyTemplateOptions { + saveInterval?: boolean; +} +export interface SymbolExt { + symbol: string; + full_name: string; + exchange: string; + description: string; + type: string; +} +export interface CreateTradingPrimitiveOptions { + disableUndo?: boolean; +} +export interface IChartWidgetApi { + onDataLoaded(): ISubscription<() => void>; + onSymbolChanged(): ISubscription<() => void>; + onIntervalChanged(): ISubscription<(interval: ResolutionString, timeFrameParameters: { + timeframe?: string; + }) => void>; + dataReady(callback: () => void): boolean; + crossHairMoved(callback: (params: CrossHairMovedEventParams) => void): void; + setVisibleRange(range: VisibleTimeRange, callback: () => void): void; + setSymbol(symbol: string, callback: () => void): void; + setResolution(resolution: ResolutionString, callback: () => void): void; + resetData(): void; + executeActionById(actionId: ChartActionId): void; + getCheckableActionState(actionId: ChartActionId): boolean; + refreshMarks(): void; + clearMarks(): void; + setChartType(type: SeriesStyle): void; + getAllShapes(): EntityInfo[]; + getAllStudies(): EntityInfo[]; + /** + * @deprecated Use shape/study API instead ([getStudyById] / [getShapeById]) + */ + setEntityVisibility(entityId: EntityId, isVisible: boolean): void; + createStudy(name: string, forceOverlay: boolean, lock?: boolean, inputs?: TStudyInputs[], callback?: (entityId: EntityId) => void, overrides?: TOverrides, options?: CreateStudyOptions): EntityId | null; + getStudyById(entityId: EntityId): IStudyApi; + createShape(point: ShapePoint, options: CreateShapeOptions): EntityId | null; + createMultipointShape(points: ShapePoint[], options: CreateShapeOptions): EntityId | null; + getShapeById(entityId: EntityId): ILineDataSourceApi; + removeEntity(entityId: EntityId): void; + removeAllShapes(): void; + removeAllStudies(): void; + createStudyTemplate(options: CreateStudyTemplateOptions): object; + applyStudyTemplate(template: object): void; + createOrderLine(options: CreateTradingPrimitiveOptions): IOrderLineAdapter; + createPositionLine(options: CreateTradingPrimitiveOptions): IPositionLineAdapter; + createExecutionShape(options: CreateTradingPrimitiveOptions): IExecutionLineAdapter; + symbol(): string; + symbolExt(): SymbolExt; + resolution(): ResolutionString; + getVisibleRange(): VisibleTimeRange; + getVisiblePriceRange(): VisiblePriceRange; + priceFormatter(): IFormatter; + chartType(): SeriesStyle; + setTimezone(timezone: 'exchange' | Timezone): void; +} +export declare type EditObjectDialogObjectType = 'mainSeries' | 'drawing' | 'study' | 'other'; +export interface EditObjectDialogEventParams { + objectType: EditObjectDialogObjectType; + scriptTitle: string; +} +export interface MouseEventParams { + clientX: number; + clientY: number; + pageX: number; + pageY: number; + screenX: number; + screenY: number; +} +export interface StudyOrDrawingAddedToChartEventParams { + value: string; +} +export declare type EmptyCallback = () => void; +export interface SubscribeEventsMap { + toggle_sidebar: (isHidden: boolean) => void; + indicators_dialog: EmptyCallback; + toggle_header: (isHidden: boolean) => void; + edit_object_dialog: (params: EditObjectDialogEventParams) => void; + chart_load_requested: (savedData: object) => void; + chart_loaded: EmptyCallback; + mouse_down: (params: MouseEventParams) => void; + mouse_up: (params: MouseEventParams) => void; + drawing: (params: StudyOrDrawingAddedToChartEventParams) => void; + study: (params: StudyOrDrawingAddedToChartEventParams) => void; + undo: EmptyCallback; + redo: EmptyCallback; + reset_scales: EmptyCallback; + compare_add: EmptyCallback; + add_compare: EmptyCallback; + 'load_study template': EmptyCallback; + onTick: (tick: Bar) => void; + onAutoSaveNeeded: EmptyCallback; + onScreenshotReady: (url: string) => void; + onMarkClick: (markId: Mark['id']) => void; + onTimescaleMarkClick: (markId: TimescaleMark['id']) => void; + onSelectedLineToolChanged: EmptyCallback; + layout_about_to_be_changed: (newLayoutType: LayoutType) => void; + layout_changed: EmptyCallback; + activeChartChanged: (chartIndex: number) => void; +} +export interface SaveChartToServerOptions { + chartName?: string; + defaultChartName?: string; +} +export interface WatchListApi { + getList(): string[]; + setList(symbols: string[]): void; + onListChanged(): ISubscription; +} +export interface GrayedObject { + type: 'drawing' | 'study'; + name: string; +} +export interface ContextMenuItem { + position: 'top' | 'bottom'; + text: string; + click: EmptyCallback; +} +export interface DialogParams { + title: string; + body: string; + callback: CallbackType; +} +export interface SymbolIntervalResult { + symbol: string; + interval: ResolutionString; +} +export interface SaveLoadChartRecord { + id: string; + name: string; + image_url: string; + modified_iso: number; + short_symbol: string; + interval: ResolutionString; +} +export interface CreateButtonOptions { + align: 'right' | 'left'; +} +export interface IChartingLibraryWidget { + onChartReady(callback: EmptyCallback): void; + onGrayedObjectClicked(callback: (obj: GrayedObject) => void): void; + onShortcut(shortCut: string, callback: EmptyCallback): void; + subscribe(event: EventName, callback: SubscribeEventsMap[EventName]): void; + unsubscribe(event: EventName, callback: SubscribeEventsMap[EventName]): void; + chart(index?: number): IChartWidgetApi; + setLanguage(lang: LanguageCode): void; + setSymbol(symbol: string, interval: ResolutionString, callback: EmptyCallback): void; + remove(): void; + closePopupsAndDialogs(): void; + selectLineTool(linetool: SupportedLineTools): void; + selectedLineTool(): SupportedLineTools; + save(callback: (state: object) => void): void; + load(state: object): void; + getSavedCharts(callback: (chartRecords: SaveLoadChartRecord[]) => void): void; + loadChartFromServer(chartRecord: SaveLoadChartRecord): void; + saveChartToServer(onComplete?: EmptyCallback, onFail?: EmptyCallback, saveAsSnapshot?: false, options?: SaveChartToServerOptions): void; + removeChartFromServer(chartId: string, onCompleteCallback: EmptyCallback): void; + onContextMenu(callback: (unixTime: number, price: number) => ContextMenuItem[]): void; + createButton(options?: CreateButtonOptions): JQuery; + showNoticeDialog(params: DialogParams<() => void>): void; + showConfirmDialog(params: DialogParams<(confirmed: boolean) => void>): void; + showLoadChartDialog(): void; + showSaveAsChartDialog(): void; + symbolInterval(): SymbolIntervalResult; + mainSeriesPriceFormatter(): IFormatter; + getIntervals(): string[]; + getStudiesList(): string[]; + addCustomCSSFile(url: string): void; + applyOverrides(overrides: TOverrides): void; + applyStudiesOverrides(overrides: object): void; + watchList(): WatchListApi; + activeChart(): IChartWidgetApi; + chartsCount(): number; + layout(): LayoutType; + setLayout(layout: LayoutType): void; +} +export interface ChartingLibraryWidgetConstructor { + new (options: ChartingLibraryWidgetOptions | TradingTerminalWidgetOptions): IChartingLibraryWidget; +} +export declare function version(): string; +export declare function onready(callback: () => void): void; +export declare const widget: ChartingLibraryWidgetConstructor; + +export as namespace TradingView; diff --git a/static/Kline/charting_library/charting_library.min.js b/static/Kline/charting_library/charting_library.min.js new file mode 100644 index 0000000..39538b9 --- /dev/null +++ b/static/Kline/charting_library/charting_library.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.TradingView=t.TradingView||{})}(this,function(t){"use strict";function e(t,o){var i=n({},t);for(var s in o)"object"!=typeof t[s]||null===t[s]||Array.isArray(t[s])?void 0!==o[s]&&(i[s]=o[s]):i[s]=e(t[s],o[s]);return i}function o(){return"1.12 (internal id 630b704a @ 2018-06-06 02:16:11.305509)"}function i(t){window.addEventListener("DOMContentLoaded",t,!1)}var n=Object.assign||function(t){for(var e,o=arguments,i=1,n=arguments.length;i'},t}(),d=a;window.TradingView=window.TradingView||{},window.TradingView.version=o,t.version=o,t.onready=i,t.widget=d,Object.defineProperty(t,"__esModule",{value:!0})}); diff --git a/static/Kline/charting_library/datafeed-api.d.ts b/static/Kline/charting_library/datafeed-api.d.ts new file mode 100644 index 0000000..2915ecf --- /dev/null +++ b/static/Kline/charting_library/datafeed-api.d.ts @@ -0,0 +1,220 @@ +export declare type ResolutionString = string; +export interface Exchange { + value: string; + name: string; + desc: string; +} +export interface DatafeedSymbolType { + name: string; + value: string; +} +export interface DatafeedConfiguration { + exchanges?: Exchange[]; + supported_resolutions?: ResolutionString[]; + supports_marks?: boolean; + supports_time?: boolean; + supports_timescale_marks?: boolean; + symbols_types?: DatafeedSymbolType[]; +} +export declare type OnReadyCallback = (configuration: DatafeedConfiguration) => void; +export interface IExternalDatafeed { + onReady(callback: OnReadyCallback): void; +} +export interface DatafeedQuoteValues { + ch?: number; + chp?: number; + short_name?: string; + exchange?: string; + description?: string; + lp?: number; + ask?: number; + bid?: number; + spread?: number; + open_price?: number; + high_price?: number; + low_price?: number; + prev_close_price?: number; + volume?: number; + original_name?: string; + [valueName: string]: string | number | undefined; +} +export interface QuoteOkData { + s: 'ok'; + n: string; + v: DatafeedQuoteValues; +} +export interface QuoteErrorData { + s: 'error'; + n: string; + v: object; +} +export declare type QuoteData = QuoteOkData | QuoteErrorData; +export declare type QuotesCallback = (data: QuoteData[]) => void; +export interface IDatafeedQuotesApi { + getQuotes(symbols: string[], onDataCallback: QuotesCallback, onErrorCallback: (msg: string) => void): void; + subscribeQuotes(symbols: string[], fastSymbols: string[], onRealtimeCallback: QuotesCallback, listenerGUID: string): void; + unsubscribeQuotes(listenerGUID: string): void; +} +export declare type CustomTimezones = 'America/New_York' | 'America/Los_Angeles' | 'America/Chicago' | 'America/Phoenix' | 'America/Toronto' | 'America/Vancouver' | 'America/Argentina/Buenos_Aires' | 'America/El_Salvador' | 'America/Sao_Paulo' | 'America/Bogota' | 'America/Caracas' | 'Europe/Moscow' | 'Europe/Athens' | 'Europe/Berlin' | 'Europe/London' | 'Europe/Madrid' | 'Europe/Paris' | 'Europe/Rome' | 'Europe/Warsaw' | 'Europe/Istanbul' | 'Europe/Zurich' | 'Australia/Sydney' | 'Australia/Brisbane' | 'Australia/Adelaide' | 'Australia/ACT' | 'Asia/Almaty' | 'Asia/Ashkhabad' | 'Asia/Tokyo' | 'Asia/Taipei' | 'Asia/Singapore' | 'Asia/Shanghai' | 'Asia/Seoul' | 'Asia/Tehran' | 'Asia/Dubai' | 'Asia/Kolkata' | 'Asia/Hong_Kong' | 'Asia/Bangkok' | 'Pacific/Auckland' | 'Pacific/Chatham' | 'Pacific/Fakaofo' | 'Pacific/Honolulu' | 'America/Mexico_City' | 'Africa/Johannesburg' | 'Asia/Kathmandu' | 'US/Mountain'; +export declare type Timezone = 'UTC' | CustomTimezones; +export interface LibrarySymbolInfo { + /** + * Symbol Name + */ + name: string; + full_name: string; + base_name?: [string]; + /** + * Unique symbol id + */ + ticker?: string; + description: string; + type: string; + /** + * @example "1700-0200" + */ + session: string; + /** + * Traded exchange + * @example "NYSE" + */ + exchange: string; + listed_exchange: string; + timezone: Timezone; + /** + * Code (Tick) + * @example 8/16/.../256 (1/8/100 1/16/100 ... 1/256/100) or 1/10/.../10000000 (1 0.1 ... 0.0000001) + */ + pricescale: number; + /** + * The number of units that make up one tick. + * @example For example, U.S. equities are quotes in decimals, and tick in decimals, and can go up +/- .01. So the tick increment is 1. But the e-mini S&P futures contract, though quoted in decimals, goes up in .25 increments, so the tick increment is 25. (see also Tick Size) + */ + minmov: number; + fractional?: boolean; + /** + * @example Quarters of 1/32: pricescale=128, minmovement=1, minmovement2=4 + */ + minmove2?: number; + /** + * false if DWM only + */ + has_intraday?: boolean; + /** + * An array of resolutions which should be enabled in resolutions picker for this symbol. + */ + supported_resolutions: ResolutionString[]; + /** + * @example (for ex.: "1,5,60") - only these resolutions will be requested, all others will be built using them if possible + */ + intraday_multipliers?: string[]; + has_seconds?: boolean; + /** + * It is an array containing seconds resolutions (in seconds without a postfix) the datafeed builds by itself. + */ + seconds_multipliers?: string[]; + has_daily?: boolean; + has_weekly_and_monthly?: boolean; + has_empty_bars?: boolean; + force_session_rebuild?: boolean; + has_no_volume?: boolean; + /** + * Integer showing typical volume value decimal places for this symbol + */ + volume_precision?: number; + data_status?: 'streaming' | 'endofday' | 'pulsed' | 'delayed_streaming'; + /** + * Boolean showing whether this symbol is expired futures contract or not. + */ + expired?: boolean; + /** + * Unix timestamp of expiration date. + */ + expiration_date?: number; + sector?: string; + industry?: string; + currency_code?: string; +} +export interface DOMLevel { + price: number; + volume: number; +} +export interface DOMData { + snapshot: boolean; + asks: DOMLevel[]; + bids: DOMLevel[]; +} +export interface Bar { + time: number; + open: number; + high: number; + low: number; + close: number; + volume?: number; +} +export interface SearchSymbolResultItem { + symbol: string; + full_name: string; + description: string; + exchange: string; + ticker: string; + type: string; +} +export interface HistoryMetadata { + noData: boolean; + nextTime?: number | null; +} +export interface MarkCustomColor { + color: string; + background: string; +} +export declare type MarkConstColors = 'red' | 'green' | 'blue' | 'yellow'; +export interface Mark { + id: string | number; + time: number; + color: MarkConstColors | MarkCustomColor; + text: string; + label: string; + labelFontColor: string; + minSize: number; +} +export interface TimescaleMark { + id: string | number; + time: number; + color: MarkConstColors | string; + label: string; + tooltip: string[]; +} +export declare type ResolutionBackValues = 'D' | 'M'; +export interface HistoryDepth { + resolutionBack: ResolutionBackValues; + intervalBack: number; +} +export declare type SearchSymbolsCallback = (items: SearchSymbolResultItem[]) => void; +export declare type ResolveCallback = (symbolInfo: LibrarySymbolInfo) => void; +export declare type HistoryCallback = (bars: Bar[], meta: HistoryMetadata) => void; +export declare type SubscribeBarsCallback = (bar: Bar) => void; +export declare type GetMarksCallback = (marks: T[]) => void; +export declare type ServerTimeCallback = (serverTime: number) => void; +export declare type DomeCallback = (data: DOMData) => void; +export declare type ErrorCallback = (reason: string) => void; +export interface IDatafeedChartApi { + calculateHistoryDepth?(resolution: ResolutionString, resolutionBack: ResolutionBackValues, intervalBack: number): HistoryDepth | undefined; + getMarks?(symbolInfo: LibrarySymbolInfo, startDate: number, endDate: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; + getTimescaleMarks?(symbolInfo: LibrarySymbolInfo, startDate: number, endDate: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; + /** + * This function is called if configuration flag supports_time is set to true when chart needs to know the server time. + * The charting library expects callback to be called once. + * The time is provided without milliseconds. Example: 1445324591. It is used to display Countdown on the price scale. + */ + getServerTime?(callback: ServerTimeCallback): void; + searchSymbols(userInput: string, exchange: string, symbolType: string, onResult: SearchSymbolsCallback): void; + resolveSymbol(symbolName: string, onResolve: ResolveCallback, onError: ErrorCallback): void; + getBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, rangeStartDate: number, rangeEndDate: number, onResult: HistoryCallback, onError: ErrorCallback, isFirstCall: boolean): void; + subscribeBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, onTick: SubscribeBarsCallback, listenerGuid: string, onResetCacheNeededCallback: () => void): void; + unsubscribeBars(listenerGuid: string): void; + subscribeDepth?(symbolInfo: LibrarySymbolInfo, callback: DomeCallback): string; + unsubscribeDepth?(subscriberUID: string): void; +} + +export as namespace TradingView; diff --git a/static/Kline/charting_library/static/bundles/13.280894673316ad6ac6f2.js b/static/Kline/charting_library/static/bundles/13.280894673316ad6ac6f2.js new file mode 100644 index 0000000..7fd3a6a --- /dev/null +++ b/static/Kline/charting_library/static/bundles/13.280894673316ad6ac6f2.js @@ -0,0 +1,4 @@ +webpackJsonp([13],{334:function(t,e,n){var o,i,r;!function(a,c){i=[t,n(516),n(1092),n(687)],o=c,void 0!==(r="function"==typeof o?o.apply(e,i):o)&&(t.exports=r)}(0,function(t,e,n,o){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function c(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function u(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}var l=i(e),s=i(n),f=i(o),h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},d=function(){function t(t,e){var n,o;for(n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===h(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,f.default)(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new l.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return u("action",t)}},{key:"defaultTarget",value:function(t){var e=u("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return u("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach(function(t){n=n&&!!document.queryCommandSupported(t)}),n}}]),e}(s.default);t.exports=p})},516:function(t,e,n){var o,i,r;!function(a,c){i=[t,n(1091)],o=c, +void 0!==(r="function"==typeof o?o.apply(e,i):o)&&(t.exports=r)}(0,function(t,e){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=n(e),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a=function(){function t(t,e){var n,o;for(n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t,e=this,n="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return e.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[n?"right":"left"]="-9999px",t=window.pageYOffset||document.documentElement.scrollTop,this.fakeElem.style.top=t+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,i.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,i.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target", +set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":r(t))||1!==t.nodeType)throw Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),t}();t.exports=c})},613:function(t,e){function n(t,e){for(;t&&t.nodeType!==i;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}var o,i=9;"undefined"==typeof Element||Element.prototype.matches||(o=Element.prototype,o.matches=o.matchesSelector||o.mozMatchesSelector||o.msMatchesSelector||o.oMatchesSelector||o.webkitMatchesSelector),t.exports=n},614:function(t,e,n){function o(t,e,n,o,i){var a=r.apply(this,arguments);return t.addEventListener(n,a,i),{destroy:function(){t.removeEventListener(n,a,i)}}}function i(t,e,n,i,r){return"function"==typeof t.addEventListener?o.apply(null,arguments):"function"==typeof n?o.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return o(t,e,n,i,r)}))}function r(t,e,n,o){return function(n){n.delegateTarget=a(n.target,e),n.delegateTarget&&o.call(t,n)}}var a=n(613);t.exports=i},686:function(t,e){e.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},e.nodeList=function(t){var n=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===n||"[object HTMLCollection]"===n)&&"length"in t&&(0===t.length||e.node(t[0]))},e.string=function(t){return"string"==typeof t||t instanceof String},e.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},687:function(t,e,n){function o(t,e,n){if(!t&&!e&&!n)throw Error("Missing required arguments");if(!c.string(e))throw new TypeError("Second argument must be a String");if(!c.fn(n))throw new TypeError("Third argument must be a Function");if(c.node(t))return i(t,e,n);if(c.nodeList(t))return r(t,e,n);if(c.string(t))return a(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function i(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}function r(t,e,n){return Array.prototype.forEach.call(t,function(t){t.addEventListener(e,n)}),{destroy:function(){Array.prototype.forEach.call(t,function(t){t.removeEventListener(e,n)})}}}function a(t,e,n){return u(document.body,t,e,n)}var c=n(686),u=n(614);t.exports=o},1091:function(t,e){function n(t){var e,n,o,i;return"SELECT"===t.nodeName?(t.focus(),e=t.value):"INPUT"===t.nodeName||"TEXTAREA"===t.nodeName?(n=t.hasAttribute("readonly"),n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value):(t.hasAttribute("contenteditable")&&t.focus(),o=window.getSelection(), +i=document.createRange(),i.selectNodeContents(t),o.removeAllRanges(),o.addRange(i),e=""+o),e}t.exports=n},1092:function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){function o(){i.off(t,o),e.apply(n,arguments)}var i=this;return o._=e,this.on(t,o,n)},emit:function(t){var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,i=n.length;for(o;o");return this.bindControl(new l(p(e),this._linetool.properties().collectibleColors,!0,this.model(),"Change All Lines Color",0)),{label:$(""+$.t("Use one color")+""),editor:e}},n.prototype.addOneColorPropertyWidget=function(e){var t=this.createOneColorForAllLinesWidget(),o=$("");o.append($("")).append(t.label).append(t.editor),o.appendTo(e)},n=i(n),n.createTemplatesPropertyPage=i,e.exports=n},15:function(e,t,o){"use strict";function i(){return $('
').slider({max:4,min:1,step:1})}Object.defineProperty(t,"__esModule",{value:!0}),o(22),o(285),t.createLineWidthEditor=i},31:function(e,t,o){"use strict";function i(){return new n.Combobox([{html:'
',value:a.LINESTYLE_SOLID},{html:'
',value:a.LINESTYLE_DOTTED},{html:'
',value:a.LINESTYLE_DASHED}])}var n,a;Object.defineProperty(t,"__esModule",{value:!0}),n=o(738),a=o(115),t.createLineStyleEditor=i},65:function(e,t,o){"use strict";function i(e){var t=$('
').slider({max:100,min:0,step:1}),o=["-moz-linear-gradient(left, %COLOR 0%, transparent 100%)","-webkit-gradient(linear, left top, right top, color-stop(0%,%COLOR), color-stop(100%,transparent))","-webkit-linear-gradient(left, %COLOR 0%,transparent 100%)","-o-linear-gradient(left, %COLOR 0%,transparent 100%)","linear-gradient(to right, %COLOR 0%,transparent 100%)"];return t.updateColor=function(e){var i=t.find(".gradient");o.forEach(function(t){i.css("background-image",t.replace(/%COLOR/,e))})},e?(t.updateColor(e.val()||"black"),e.on("change",function(e){t.updateColor(e.target.value)})):t.updateColor("black"),t}Object.defineProperty(t,"__esModule",{value:!0}),o(22),o(285),t.createTransparencyEditor=i},81:function(e,t,o){"use strict";function i(e,t,o){a.call(this,e,t),this._linetool=o,this.prepareLayout()}var n=o(10),a=n.PropertyPage,r=n.GreateTransformer,l=n.LessTransformer,p=n.ToIntTransformer,s=n.SimpleStringBinder;o(142),inherit(i,a),i.BarIndexPastLimit=-5e4,i.BarIndexFutureLimit=15e3,i.prototype.bindBarIndex=function(e,t,o,n){var a=[p(e.value()),r(i.BarIndexPastLimit),l(i.BarIndexFutureLimit)];this.bindControl(new s(t,e,a,!1,o,n))}, +i.prototype.createPriceEditor=function(e){var t,o=this._linetool.ownerSource().formatter(),i=function(e){return o.format(e)},n=function(e){var t=o.parse(e);if(t.res)return t.price?t.price:t.value},a=$("");return a.TVTicker({step:o._minMove/o._priceScale||1,formatter:i,parser:n}),e&&(t=[function(t){var o=n(t);return void 0===o?e.value():o}],this.bindControl(new s(a,e,t,!1,this.model(),"Change "+this._linetool+" point price")).addFormatter(function(e){return o.format(e)})),a},i.prototype._createPointRow=function(e,t,o){var i,n,a,r,l,p=$(""),s=$("");return s.html($.t("Price")+o),s.appendTo(p),i=$(""),i.appendTo(p),n=this.createPriceEditor(t.price),n.appendTo(i),a=$(""),a.html($.t("Bar #")),a.appendTo(p),r=$(""),r.appendTo(p),l=$(""),l.appendTo(r),l.addClass("ticker"),this.bindBarIndex(t.bar,l,this.model(),"Change "+this._linetool+" point bar index"),p},i.prototype.prepareLayoutForTable=function(e){var t,o,i,n,a,r=this._linetool.points(),l=r.length;for(t=0;t1?" "+(t+1):"",a=this._createPointRow(o,i,n),a.appendTo(e))},i.prototype.prepareLayout=function(){this._table=$(document.createElement("table")),this._table.addClass("property-page"),this._table.attr("cellspacing","0"),this._table.attr("cellpadding","2"),this.prepareLayoutForTable(this._table),this.loadData()},i.prototype.widget=function(){return this._table},e.exports=i},121:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.Coordinates=100]="Coordinates",e[e.Display=100]="Display",e[e.Style=200]="Style",e[e.Inputs=300]="Inputs",e[e.Properties=250]="Properties"}(t.TabPriority||(t.TabPriority={})),function(e){e.background="Background",e.coordinates="Coordinates",e.drawings="Drawings",e.events="Events",e.eventsAndAlerts="Events & Alerts",e.inputs="Inputs",e.properties="Properties",e.scales="Scales",e.sourceCode="Source Code",e.style="Style",e.timezoneSessions="Timezone/Sessions",e.trading="Trading",e.visibility="Visibility"}(t.TabNames||(t.TabNames={})),function(e){e[e.Default=100]="Default",e[e.UserSave=200]="UserSave",e[e.Override=300]="Override"}(t.TabOpenFrom||(t.TabOpenFrom={}))},208:function(e,t,o){"use strict";function i(e,t,o){r.call(this,e,t),this._study=o,this.prepareLayout()}function n(e,t,o){r.call(this,e,t),this._study=o,this._property=e,this.prepareLayout()}var a=o(10),r=a.PropertyPage,l=a.GreateTransformer,p=a.LessTransformer,s=a.ToIntTransformer,d=a.ToFloatTransformer,h=a.SimpleComboBinder,c=a.BooleanBinder,b=a.DisabledBinder,u=a.ColorBinding,C=a.SliderBinder,y=a.SimpleStringBinder,g=o(47).addColorPicker,w=o(31).createLineStyleEditor,T=o(1122).createShapeLocationEditor,_=o(1123).createShapeStyleEditor,m=o(15).createLineWidthEditor,f=o(1124).createVisibilityEditor,L=o(1120).createHHistDirectionEditor,v=o(476).createPlotEditor,k=o(38).NumericFormatter,S=o(45),P=o(106).PlotType,x=o(13).getLogger("Chart.Study.PropertyPage");inherit(i,r),i.prototype.prepareLayout=function(){function e(e){ +return(new k).format(e)}var t,o,n,a,r,l,p,s,b,T,_,f,L,v,P,B,E,R,F,I,A,D,W,O,V,j,z,M,H,q,N,G,U,Y,K,Q;for(this._table=$(""),this._table.addClass("property-page"),this._table.attr("cellspacing","0"),this._table.attr("cellpadding","2"),t=this._study.metaInfo(),o={},n=0;n0)for(n=0;n'),T.appendTo(this._table),_=$("
"),_.appendTo(T),f=$(""),f.appendTo(_),L=$.t(b.name.value(),{context:"input"}),v=this.createLabeledCell(L,f).appendTo(T).addClass("propertypage-name-label"),P=$(""),P.appendTo(T),P.addClass("colorpicker-cell"),B=g(P),E=$(""),E.appendTo(T),R=m(),R.appendTo(E),F=$('').css({whiteSpace:"nowrap"}),F.appendTo(T),I=w(),I.render().appendTo(F),A=$(""),A.appendTo(F),D=[d(b.value.value())],W="Change band",O=new y(A,b.value,D,!1,this.model(),W),O.addFormatter(e),this.bindControl(O),this.bindControl(new c(f,b.visible,!0,this.model(),W)),this.bindControl(new u(B,b.color,!0,this.model(),W)),this.bindControl(new h(I,b.linestyle,parseInt,!0,this.model(),W)),this.bindControl(new C(R,b.linewidth,!0,this.model(),W)));if(this._study.properties().bandsBackground&&(b=this._study.properties().bandsBackground,V=$.t("Background"),W=$.t("Change band background"),T=this._prepareFilledAreaBackground(b.fillBackground,b.backgroundColor,b.transparency,V,W),T.appendTo(this._table)),this._study.properties().areaBackground&&(b=this._study.properties().areaBackground,V=$.t("Background"),W=$.t("Change area background"),T=this._prepareFilledAreaBackground(b.fillBackground,b.backgroundColor,b.transparency,V,W),T.appendTo(this._table)),void 0!==(j=t.filledAreas))for(n=0;n'),_=$(""),_.appendTo(T),f=$(""),f.appendTo(_), +this.bindControl(new c(f,b.visible,!0,this.model(),W+" visibility")),this.createLabeledCell(V,f).appendTo(T).addClass("propertypage-name-label"),T.appendTo(this._table),M=this._findPlotPalette(n,z),H=M.palette,q=M.paletteProps,this._prepareLayoutForPalette(0,z,H,q,W)):(T=this._prepareFilledAreaBackground(b.visible,b.color,b.transparency,V,W),T.appendTo(this._table)));for(N in t.graphics){G=t.graphics[N];for(U in G)b=this._property.graphics[N][U],i["_createRow_"+N].call(this,this._table,b)}Y=this._table.find(".visibility-switch.plot-visibility-switch"),1===Y.length&&(_=Y.parent(),_.css("display","none"),v=this._table.find(".propertypage-plot-with-palette"),1===v.length?v.css("display","none"):(v=this._table.find(".propertypage-name-label"),v.css("padding-left",0),v.find("label").attr("for",""))),K=this._prepareStudyPropertiesLayout(),this._table=this._table.add(K),S.isScriptStrategy(t)&&(Q=this._prepareOrdersSwitches(),this._table=this._table.add(Q)),this.loadData()},i.prototype._prepareOrdersSwitches=function(){var e,t,o,i,n,a,r,l=$(''),p="chart-orders-switch_"+Date.now().toString(36),s=$("").appendTo(l),d=$('').appendTo($("").appendTo(l),o=$('').appendTo($("").appendTo(l),a=$('').appendTo($("'),o.appendTo(this._table),i=$("'),o.appendTo(this._table), +i=$("');y.appendTo(this._table),o=$("'),a.appendTo(this._table),r=$("');L.appendTo(this._table),o=$("'), +L.appendTo(this._table),$("');L.appendTo(this._table),o=$("'),L.appendTo(this._table),$("'),s.appendTo(this._table),$("');b.appendTo(this._table),o=$(""),t.appendTo(o),$("").appendTo(t),$(""),t.appendTo(o),$("").appendTo(t),$("").appendTo(r),l=$("'),s=$("").appendTo(this._table),c=$("
").appendTo(s));return $('").appendTo($("").appendTo(s)),e="chart-orders-labels-switch_"+Date.now().toString(36),t=$("
").appendTo(t)),$('").appendTo($("").appendTo(t)),i="chart-orders-qty-switch_"+Date.now().toString(36),n=$("
").appendTo(n)),$('").appendTo($("").appendTo(n)),r=this._study.properties(),this.bindControl(new c(d,r.strategy.orders.visible,!0,this.model(),"Trades on chart visibility")),this.bindControl(new c(o,r.strategy.orders.showLabels,!0,this.model(),"Signal labels visibility")),this.bindControl(new b(o,r.strategy.orders.visible,!0,this.model(),"Signal labels visibility",!0)),this.bindControl(new c(a,r.strategy.orders.showQty,!0,this.model(),"Quantity visibility")),this.bindControl(new b(a,r.strategy.orders.visible,!0,this.model(),"Quantity visibility",!0)),l},i.prototype._prepareLayoutForPlot=function(e,t){var o,i,n,a,r,l,p,s,d,b,y,w,T=t.id,_=this._study.properties().styles[T],f=this._findPlotPalette(e,t),L=f.palette,k=f.paletteProps,S="Change "+T;L?(o=$('
"),i.appendTo(o),i.addClass("visibility-cell"),n=$(""),n.appendTo(i),this.bindControl(new c(n,_.visible,!0,this.model(),S)),a=$.t(_.title.value(),{context:"input"}),this.createLabeledCell(a,n).appendTo(o).addClass("propertypage-name-label propertypage-plot-with-palette"),this._prepareLayoutForPalette(e,t,L,k,S)):(o=$('
"),i.appendTo(o),i.addClass("visibility-cell"),n=$(""),n.appendTo(i),a=$.t(this._study.properties().styles[T].title.value(),{context:"input"}),this.createLabeledCell(a,n).appendTo(o).addClass("propertypage-name-label"),r=$(""),r.appendTo(o),r.addClass("colorpicker-cell"),l=g(r),p=$(""),p.appendTo(o),s=m(),s.appendTo(p),d=$(""),d.appendTo(o),b=v(),b.appendTo(d),y=$(""),y.appendTo(o),w=$(""),w.appendTo(y),this.createLabeledCell("Price Line",w).appendTo(o),this.bindControl(new c(n,_.visible,!0,this.model(),S)),this.bindControl(new u(l,_.color,!0,this.model(),S,_.transparency)),this.bindControl(new C(s,_.linewidth,!0,this.model(),S,this._study.metaInfo().isTVScript)),this.bindControl(new h(b,_.plottype,parseInt,!0,this.model(),S)),this.bindControl(new c(w,_.trackPrice,!0,this.model(),"Change Price Line")))},i.prototype._prepareLayoutForBarsPlot=function(e,t){var o,i,n,a,r,l,p=t.id,s=this._study.properties().ohlcPlots[p],d=this._findPlotPalette(e,t),h=d.palette,b=d.paletteProps,C="Change "+p,y=$('
"),o.appendTo(y),o.addClass("visibility-cell"),i=$(""),i.appendTo(o),this.bindControl(new c(i,s.visible,!0,this.model(),C)),n=s.title.value(),this.createLabeledCell(n,i).appendTo(y).addClass("propertypage-name-label"),h?(a=!0,this._prepareLayoutForPalette(e,t,h,b,C,a)):(r=$(""),r.appendTo(y),r.addClass("colorpicker-cell"),l=g(r),this.bindControl(new u(l,s.color,!0,this.model(),C)))},i.prototype._prepareLayoutForCandlesPlot=function(e,t){var o,i,n,a,r,l,p,s,d;this._prepareLayoutForBarsPlot(e,t),o=t.id,i=this._study.properties().ohlcPlots[o],n="Change "+o,a=$('
"),r.appendTo(a),r.addClass("visibility-cell"),l=$(""),l.appendTo(r),this.bindControl(new c(l,i.drawWick,!0,this.model(),n)),p="Wick",this.createLabeledCell(p,l).appendTo(a),s=$(""),s.appendTo(a),s.addClass("colorpicker-cell"),d=g(s),this.bindControl(new u(d,i.wickColor,!0,this.model(),n))},i.prototype._prepareLayoutForShapesPlot=function(e,t){var o,i,n,a,r,l,p,s,d,b=t.id,C=this._study.properties().styles[b],y=this._findPlotPalette(e,t),w=y.palette,m=y.paletteProps,f="Change "+b,L=$('
"),o.appendTo(L),o.addClass("visibility-cell"),i=$(""),i.appendTo(o),this.bindControl(new c(i,C.visible,!0,this.model(),f)),n=$.t(this._study.properties().styles[b].title.value(),{context:"input"}),this.createLabeledCell(n,i).appendTo(L).addClass("propertypage-name-label"),a=$(""),a.appendTo(L),r=_(),r.appendTo(a),this.bindControl(new h(r,C.plottype,null,!0,this.model(),f)),l=$(""),l.appendTo(L),p=T(),p.appendTo(l),this.bindControl(new h(p,C.location,null,!0,this.model(),f)),w?this._prepareLayoutForPalette(e,t,w,m,f):(L=$('
").appendTo(L),$("").appendTo(L),s=$(""),s.appendTo(L),s.addClass("colorpicker-cell"),d=g(s),this.bindControl(new u(d,C.color,!0,this.model(),f,C.transparency)))},i.prototype._prepareLayoutForCharsPlot=function(e,t){var o,i,n,a,r,l,p,s,d,b=t.id,C=this._study.properties().styles[b],w=this._findPlotPalette(e,t),_=w.palette,m=w.paletteProps,f="Change "+b,L=$('
"),o.appendTo(L),o.addClass("visibility-cell"),i=$(""),i.appendTo(o),this.bindControl(new c(i,C.visible,!0,this.model(),f)),n=$.t(this._study.properties().styles[b].title.value(),{context:"input"}),this.createLabeledCell(n,i).appendTo(L).addClass("propertypage-name-label"),a=$(""),a.appendTo(L),r=$(''),r.appendTo(a),r.keyup(function(){var e=$(this),t=e.val();t&&(e.val(t.split("")[t.length-1]),e.change())}),this.bindControl(new y(r,C.char,null,!1,this.model(),f)),l=$(""),l.appendTo(L),p=T(),p.appendTo(l),this.bindControl(new h(p,C.location,null,!0,this.model(),f)),_?this._prepareLayoutForPalette(e,t,_,m,f):(L=$('
").appendTo(L),$("").appendTo(L),s=$(""),s.appendTo(L),s.addClass("colorpicker-cell"),d=g(s),this.bindControl(new u(d,C.color,!0,this.model(),f,C.transparency)))},i.prototype._isStyleNeedsConnectPoints=function(e){return[P.Cross,P.Circles].indexOf(e)>=0},i.prototype._prepareLayoutForPalette=function(e,t,o,i,n,a){var r,l,p,s,d,b,y,w,T,_,f,L,k,S,P,x=e,B=t.id,E=null,R=B.startsWith("fill");E=a?this._study.properties().ohlcPlots[B]:R?this._study.properties().filledAreasStyle[B]:this._study.properties().styles[B],r=0;for(l in o.colors)p=i.colors[l],s=$('
").appendTo(s),d=$(""),d.appendTo(s),d.addClass("propertypage-name-label"),d.html($.t(p.name.value(),{context:"input"})),b=$(""),b.appendTo(s),b.addClass("colorpicker-cell"),y=g(b),this.bindControl(new u(y,p.color,!0,this.model(),n,E.transparency)),!R&&this._study.isLinePlot(x)&&(w=$(""),w.appendTo(s),T=m(),T.appendTo(w),this.bindControl(new C(T,p.width,!0,this.model(),n,this._study.metaInfo().isTVScript)),_=$(""),_.appendTo(s),0===r&&(f=v(),f.appendTo(_),this.bindControl(new h(f,E.plottype,parseInt,!0,this.model(),n)),L=$(""),k=$('').css({whiteSpace:"nowrap"}),S=$("").html($.t("Price Line")),P=$(""),P.append(L),k.append(P).append(S).appendTo(s),this.bindControl(new c(L,E.trackPrice,!0,this.model(),"Change Price Line")))),r++},i.prototype._prepareLayoutForArrowsPlot=function(e,t){var o,i,n,a,r,l,p,s=t.id,d=this._study.properties().styles[s],h="Change "+s,b=$('
"),o.appendTo(b),o.addClass("visibility-cell"),i=$(""),i.appendTo(o),n=$.t(this._study.properties().styles[s].title.value(),{context:"input"}), +this.createLabeledCell(n,i).appendTo(b).addClass("propertypage-name-label"),a=$(""),a.appendTo(b),a.addClass("colorpicker-cell"),r=g(a),l=$(""),l.appendTo(b),l.addClass("colorpicker-cell"),p=g(l),this.bindControl(new c(i,d.visible,!0,this.model(),h)),this.bindControl(new u(r,d.colorup,!0,this.model(),h,d.transparency)),this.bindControl(new u(p,d.colordown,!0,this.model(),h,d.transparency))},i.prototype._findPlotPalette=function(e,t){var o,i=e,n=t.id,a=null,r=null,l=this._study.metaInfo().plots;if(this._study.isBarColorerPlot(i)||this._study.isBgColorerPlot(i))a=this._study.metaInfo().palettes[t.palette],r=this._study.properties().palettes[t.palette];else for(o=0;o');return this._study.metaInfo().is_price_study||(e=this.createPrecisionEditor(),t=$("
"+$.t("Precision")+"").append(e).appendTo(t),this.bindControl(new h(e,this._study.properties().precision,null,!0,this.model(),"Change Precision"))),"Compare@tv-basicstudies"===this._study.metaInfo().id&&(e=this.createSeriesMinTickEditor(),t=$("
"+$.t("Override Min Tick")+"").append(e).appendTo(t),this.bindControl(new h(e,this._study.properties().minTick,null,!0,this.model(),"Change MinTick"))),this._putStudyDefaultStyles(o),o},i.prototype._putStudyDefaultStyles=function(e,t){var o,i,n,a,r,l,p=null,s=this._study;return(!s.properties().linkedToSeries||!s.properties().linkedToSeries.value())&&($.each(this._model.m_model.panes(),function(e,t){$.each(t.dataSources(),function(e,o){if(o===s)return p=t,!1})}),this._pane=p,this._pane&&(-1!==this._pane.leftPriceScale().dataSources().indexOf(this._study)?o="left":-1!==this._pane.rightPriceScale().dataSources().indexOf(this._study)?o="right":this._pane.isOverlay(this._study)&&(o="none")),o&&(i=this,n={left:$.t("Scale Left"),right:$.t("Scale Right")},i._pane.actionNoScaleIsEnabled(s)&&(n.none=$.t("Screen (No Scale)")),a=this.createKeyCombo(n).val(o).change(function(){switch(this.value){case"left":i._model.move(i._study,i._pane,i._pane.leftPriceScale());break;case"right":i._model.move(i._study,i._pane,i._pane.rightPriceScale());break;case"none":i._model.move(i._study,i._pane,null)}}),r=this.addRow(e),$(""+$.t("Scale")+"").appendTo(r).append(a),t&&t>2&&l.attr("colspan",t-1)),e)},i.prototype.widget=function(){return this._table},i.prototype._prepareFilledAreaBackground=function(e,t,o,i,n){var a,r,l,p=$('
");return s.appendTo(p),a=$(""),a.appendTo(s),this.createLabeledCell(i,a).appendTo(p).addClass("propertypage-name-label"), +r=$(""),r.appendTo(p),r.addClass("colorpicker-cell"),l=g(r),this.bindControl(new c(a,e,!0,this.model(),n+" visibility")),this.bindControl(new u(l,t,!0,this.model(),n+" color",o)),p},inherit(n,r),n.prototype.prepareLayout=function(){if(this._study.properties().linkedToSeries&&this._study.properties().linkedToSeries.value())return void(this._table=$());this._table=$()},n.prototype.widget=function(){return this._table},i._createRow_horizlines=function(e,t){var o=this.addRow(e),i=t.name.value(),n=$(""),a=this.createColorPicker(),r=m(),l=w();$("").append(n).appendTo(o),this.createLabeledCell(i,n).appendTo(o),$("").append(a).appendTo(o),$("").append(r).appendTo(o),$("").append(l.render()).appendTo(o),this.bindControl(new c(n,t.visible,!0,this.model(),"Change "+i+" visibility")),this.bindControl(new u(a,t.color,!0,this.model(),"Change "+i+" color")),this.bindControl(new h(l,t.style,parseInt,!0,this.model(),"Change "+i+" style")),this.bindControl(new C(r,t.width,!0,this.model(),"Change "+i+" width"))},i._createRow_vertlines=function(e,t){var o=this.addRow(e),i=t.name.value(),n=$(""),a=this.createColorPicker(),r=m(),l=w();$("").append(n).appendTo(o),this.createLabeledCell(i,n).appendTo(o),$("").append(a).appendTo(o),$("").append(r).appendTo(o),$("").append(l.render()).appendTo(o),this.bindControl(new c(n,t.visible,!0,this.model(),"Change "+i+" visibility")),this.bindControl(new u(a,t.color,!0,this.model(),"Change "+i+" color")),this.bindControl(new h(l,t.style,parseInt,!0,this.model(),"Change "+i+" style")),this.bindControl(new C(r,t.width,!0,this.model(),"Change "+i+" width"))},i._createRow_lines=function(e,t){var o=this.addRow(e),i=t.title.value(),n=$(""),a=this.createColorPicker(),r=m(),l=w();$("").append(n).appendTo(o),this.createLabeledCell(i,n).appendTo(o),$("").append(a).appendTo(o),$("").append(r).appendTo(o),$("").append(l.render()).appendTo(o),this.bindControl(new c(n,t.visible,!0,this.model(),"Change "+i+" visibility")),this.bindControl(new u(a,t.color,!0,this.model(),"Change "+i+" color")),this.bindControl(new h(l,t.style,parseInt,!0,this.model(),"Change "+i+" style")),this.bindControl(new C(r,t.width,!0,this.model(),"Change "+i+" width"))},i._createRow_hlines=function(e,t){var o,i,n,a=this.addRow(e),r=t.name.value(),l=$(""),p=this.createColorPicker(),s=m(),d=w(),b=$("");$("").append(l).appendTo(a),this.createLabeledCell(r,l).appendTo(a),$("").append(p).appendTo(a),$("").append(s).appendTo(a),$("").append(d.render()).appendTo(a),$("").appendTo(a),$("").append(b).appendTo(a),this.createLabeledCell("Show Price",b).appendTo(a),this.bindControl(new c(l,t.visible,!0,this.model(),"Change "+r+" visibility")),this.bindControl(new u(p,t.color,!0,this.model(),"Change "+r+" color")), +this.bindControl(new h(d,t.style,parseInt,!0,this.model(),"Change "+r+" style")),this.bindControl(new C(s,t.width,!0,this.model(),"Change "+r+" width")),this.bindControl(new c(b,t.showPrice,!0,this.model(),"Change "+r+" show price")),t.enableText.value()&&(a=this.addRow(e),$('').appendTo(a),o=$(""),$('').append(o).appendTo(a),this.createLabeledCell("Show Text",o).appendTo(a),this.bindControl(new c(o,t.showText,!0,this.model(),"Change "+r+" show text")),i=TradingView.createTextPosEditor(),$("").append(i.render()).appendTo(a),this.bindControl(new h(i,t.textPos,parseInt,!0,this.model(),"Change "+r+" text position")),n=this.createFontSizeEditor(),$('').append(n).appendTo(a),this.bindControl(new h(n,t.fontSize,parseInt,!0,this.model(),"Change "+r+" font size")))},i._createRow_hhists=function(e,t){var o,i,n,a,r,d,b=t.title.value(),C=[],g=[],w=this.addRow(e),T=f();$("").append(T).appendTo(w),this.createLabeledCell(b,T).appendTo(w),this.bindControl(new c(T,t.visible,!0,this.model(),"Change "+b+" Visibility")),w=this.addRow(e),o=$(""),o.attr("type","text"),o.addClass("ticker"),this.createLabeledCell($.t("Width (% of the Box)"),o).appendTo(w),$("").append(o).appendTo(w),i=[s(40)],i.push(l(0)),i.push(p(100)),this.bindControl(new y(o,t.percentWidth,i,!1,this.model(),"Change Percent Width")),w=this.addLabeledRow(e,"Placement"),n=L(),$("").append(n).appendTo(w),this.bindControl(new h(n,t.direction,null,!0,this.model(),"Change "+b+" Placement")),w=this.addRow(e),a=$(""),$("").append(a).appendTo(w),this.createLabeledCell($.t("Show Values"),a).appendTo(w),this.bindControl(new c(a,t.showValues,!0,this.model(),"Change "+b+" Show Values")),w=this.addRow(e),r=this.createColorPicker(),this.createLabeledCell($.t("Text Color"),r).appendTo(w),$("").append(r).appendTo(w),this.bindControl(new u(r,t.valuesColor,!0,this.model(),"Change "+b+" Text Color"));for(d in t.colors)isNumber(parseInt(d,10))&&(w=this.addRow(e),C[d]=t.titles[d].value(),g[d]=this.createColorPicker(),$("").append(C[d]).appendTo(w),$("").append(g[d]).appendTo(w),this.bindControl(new u(g[d],t.colors[d],!0,this.model(),"Change "+C[d]+" color")))},i._createRow_backgrounds=function(e,t){var o=this.addRow(e),i=$(""),n=t.name.value(),a=this.createColorPicker();$("").append(i).appendTo(o),this.createLabeledCell(n,i).appendTo(o),$("").append(a).appendTo(o),this.bindControl(new c(i,t.visible,!0,this.model(),"Change "+n+" visibility")),this.bindControl(new u(a,t.color,!0,this.model(),"Change "+n+" color",t.transparency))},i._createRow_polygons=function(e,t){var o=this.addRow(e),i=t.name.value(),n=this.createColorPicker();$("").append(i).appendTo(o),$("").append(n).appendTo(o),this.bindControl(new u(n,t.color,!0,this.model(),"Change "+i+" color"))},i._createRow_trendchannels=function(e,t){var o=this.addRow(e),i=t.name.value(),n=this.createColorPicker() +;$("").append(i).appendTo(o),$("").append(n).appendTo(o),this.bindControl(new u(n,t.color,!0,this.model(),"Change "+i+" color",t.transparency))},i._createRow_textmarks=function(e,t){var o=this.addLabeledRow(e),i=t.name.value(),n=this.createColorPicker(),a=this.createColorPicker(),r=this.createFontEditor(),l=this.createFontSizeEditor(),p=$(''),s=$('');$("").append(i).appendTo(o),"rectangle"!==t.shape.value()&&$("").append(n).appendTo(o),$("").append(a).appendTo(o),$("").append(r).appendTo(o),$("").append(l).appendTo(o),$("").append(p).appendTo(o),$("").append(s).appendTo(o),this.bindControl(new u(n,t.color,!0,this.model(),"Change "+i+" color",t.transparency)),this.bindControl(new u(a,t.fontColor,!0,this.model(),"Change "+i+" text color",t.transparency)),this.bindControl(new h(l,t.fontSize,parseInt,!0,this.model(),"Change "+i+" font size")),this.bindControl(new h(r,t.fontFamily,null,!0,this.model(),"Change "+i+" font")),this.bindControl(new c(p,t.fontBold,!0,this.model(),"Change Text Font Bold")),this.bindControl(new c(s,t.fontItalic,!0,this.model(),"Change Text Font Italic"))},i._createRow_shapemarks=function(e,t){var o=this.addRow(e),i=$(""),n=t.name.value(),a=this.createColorPicker(),r=$("");r.attr("type","text"),r.addClass("ticker"),$("").append(i).appendTo(o),this.createLabeledCell(n,i).appendTo(o),$("").append(a).appendTo(o),this.createLabeledCell("Size",r).appendTo(o),$("").append(r).appendTo(o),this.bindControl(new c(i,t.visible,!0,this.model(),"Change "+n+" visibility")),this.bindControl(new u(a,t.color,!0,this.model(),"Change "+n+" back color",t.transparency)),this.bindControl(new y(r,t.size,null,!1,this.model(),"Change size"))},t.StudyStylesPropertyPage=i,t.StudyDisplayPropertyPage=n},267:function(e,t,o){"use strict";function i(e,t,o){n.call(this,e,t,o),this.prepareLayout()}var n=o(14),a=o(10),r=a.FloatBinder,l=a.BooleanBinder,p=a.SliderBinder,s=a.ColorBinding,d=a.SimpleComboBinder,h=o(47).addColorPicker,c=o(31).createLineStyleEditor,b=o(15).createLineWidthEditor,u=o(65).createTransparencyEditor;inherit(i,n),i.prototype.addLevelEditor=function(e,t){var o,i,n,a,p,d=t||$("
");return c.appendTo(d),o=$(""),o.appendTo(c),t&&o.css("margin-left","15px"),i=$(""),i.appendTo(d),n=$(""),n.appendTo(i),n.css("width","70px"),this.bindControl(new r(n,e.coeff,!1,this.model(),"Change Pitchfork Line Coeff")),a=$(""),a.appendTo(d),p=h(a),this.bindControl(new l(o,e.visible,!0,this.model(),"Change Fib Retracement Line Visibility")),this.bindControl(new s(p,e.color,!0,this.model(),"Change Fib Retracement Line Color",0)),d},i.prototype.prepareLayout=function(){ +var e,t,o,i,n,a,r,C,y,g,w,T,_,m,f,L,v,k,S,P,x,B,E,R,F,I,A,D,W,O,V,j,z;for(this._div=$(document.createElement("div")).addClass("property-page"),e=this._linetool.properties().trendline,t=$("").appendTo(this._div).css("padding-bottom","3px"),e&&(o=$("").appendTo(t),i=$(""),$("").appendTo(t),$("").appendTo(T),$("
").append(i).appendTo(o),$("").append($.t("Trend Line")).appendTo(o),this.bindControl(new l(i,e.visible,!0,this.model(),"Change Fib Retracement Line Visibility")),n=$("").appendTo(o),a=h(n),this.bindControl(new s(a,e.color,!0,this.model(),"Change Fib Retracement Line Color",0)),r=$("").appendTo(o),C=b(),C.appendTo(r),this.bindControl(new p(C,e.linewidth,parseInt,this.model(),"Change Fib Retracement Line Width")),y=$("").appendTo(o),g=c(),g.render().appendTo(y),this.bindControl(new d(g,e.linestyle,parseInt,!0,this.model(),"Change Fib Retracement Line Style"))),w=this._linetool.properties().levelsStyle,T=$("
").appendTo(T),$(""+$.t("Levels Line")+"").appendTo(T),r=$("").appendTo(T),C=b(),C.appendTo(r),this.bindControl(new p(C,w.linewidth,parseInt,this.model(),"Change Fib Retracement Line Width")),y=$("").appendTo(T),g=c(),g.render().appendTo(y),this.bindControl(new d(g,w.linestyle,parseInt,!0,this.model(),"Change Fib Retracement Line Style")),this._table=$(document.createElement("table")).appendTo(this._div),this._table.attr("cellspacing","0"),this._table.attr("cellpadding","2"),_={},m=0;m<24;m++)f=m%8,T=_[f],L="level"+(m+1),_[f]=this.addLevelEditor(this._linetool.properties()[L],T);this.addOneColorPropertyWidget(this._table),v=$("").appendTo(this._div),k=$("").appendTo(v),this._linetool.properties().extendLines&&(S=$(""),P=$("").appendTo(v),F=$(""),P=$("
").append(P).appendTo(k)),this._linetool.properties().extendLeft&&(x=$(""),P=$("").append(P).appendTo(k)),this._linetool.properties().extendRight&&(B=$(""),P=$("").append(P).appendTo(k)),this._linetool.properties().reverse&&(E=$(""),P=$("").append(P).appendTo(k)),R=$("
").append(P).appendTo(R),I=$(""),P=$("").append(P).appendTo(R),A=$(""),P=$("").append(P).appendTo(R),D=$("").appendTo(this._div), +W=$(""),O=$(""),T=$(""),T.append("").append(W).append("").append(O),T.appendTo(D),V=$("
"+$.t("Labels")+" 
").appendTo(this._div),T=$("").appendTo(V),j=$(""),$("
").append(j).appendTo(T),this.createLabeledCell($.t("Background"),j).appendTo(T),z=u(),$("").append(z).appendTo(T),this.bindControl(new l(I,this._linetool.properties().showPrices,!0,this.model(),"Change Gann Fan Prices Visibility")),this.bindControl(new l(F,this._linetool.properties().showCoeffs,!0,this.model(),"Change Gann Fan Levels Visibility")),this.bindControl(new l(j,this._linetool.properties().fillBackground,!0,this.model(),"Change Fib Retracement Background Visibility")),this.bindControl(new p(z,this._linetool.properties().transparency,!0,this.model(),"Change Fib Retracement Background Transparency")),this._linetool.properties().extendLines&&this.bindControl(new l(S,this._linetool.properties().extendLines,!0,this.model(),"Change Fib Retracement Extend Lines")),this._linetool.properties().extendLeft&&this.bindControl(new l(x,this._linetool.properties().extendLeft,!0,this.model(),"Change Fib Retracement Extend Lines")),this._linetool.properties().extendRight&&this.bindControl(new l(B,this._linetool.properties().extendRight,!0,this.model(),"Change Fib Retracement Extend Lines")),this._linetool.properties().reverse&&this.bindControl(new l(E,this._linetool.properties().reverse,!0,this.model(),"Change Fib Retracement Reverse")),this.bindControl(new d(W,this._linetool.properties().horzLabelsAlign,null,!0,this.model(),"Change Fib Labels Horizontal Alignment")),this.bindControl(new d(O,this._linetool.properties().vertLabelsAlign,null,!0,this.model(),"Change Fib Labels Vertical Alignment")),this.bindControl(new l(A,this._linetool.properties().coeffsAsPercents,!0,this.model(),"Change Fib Retracement Coeffs As Percents")),this.loadData()},i.prototype.widget=function(){return this._div},e.exports=i},399:function(e,t,o){"use strict";function i(e,t,o){p.call(this,e,t),this._linetool=o,this.prepareLayout()}function n(e,t,o){a.call(this,e,t,o),this.prepareLayout()}var a=o(14),r=o(81),l=o(10),p=l.PropertyPage,s=l.SliderBinder,d=o(65).createTransparencyEditor,h=o(121);inherit(i,r),i.prototype.prepareLayout=function(){var e,t,o,i,n,a,l=$(''),p=$('
').data({"layout-tab":h.TabNames.inputs,"layout-tab-priority":h.TabPriority.Inputs});this._table=l.add(p),r.prototype.prepareLayoutForTable.call(this,l),e=$("").appendTo(p),$("").appendTo(p),$("
").append($.t("Avg HL in minticks")).appendTo(e),t=$("").appendTo(e), +o=$("").addClass("ticker").appendTo(t),e=$("
").append($.t("Variance")).appendTo(e),i=$("").appendTo(e),n=$("").addClass("ticker").appendTo(i),a=this._linetool.properties(),this.bindInteger(o,a.averageHL,$.t("Change Average HL value"),1,5e4),this.bindInteger(n,a.variance,$.t("Change Variance value"),1,100),this.loadData()},i.prototype.widget=function(){return this._table},inherit(n,a),n.prototype.prepareLayout=function(){var e,t,o,i,n,a,r,l,p,h,c;this._widget=$("
"),e=$("").appendTo(this._widget),t=this.createColorPicker(),o=this.createColorPicker(),i=this.createColorPicker(),n=this.createColorPicker(),a=this.createColorPicker(),r=$("").data("hides",$(n).add(a)),l=$("").data("hides",$(i)),p=this.addLabeledRow(e,$.t("Candles")),$("
").prependTo(p),$("").append(t).appendTo(p),$("").append(o).appendTo(p),p=this.addLabeledRow(e,$.t("Borders"),r),$("").append(r).prependTo(p),$("").append(n).appendTo(p),$("").append(a).appendTo(p),$("").appendTo(p),p=this.addLabeledRow(e,$.t("Wick"),l),$("").append(l).prependTo(p),$("").append(i).appendTo(p),$("").appendTo(p),e=$("").appendTo(this._widget),p=$("").appendTo(e),$("").appendTo(this._table),$('").appendTo(this._table),$('").appendTo(this._table),$("{{#columns}}{{/columns}}',tvDataTableCell:''}},,,,,,function(t,e,i){"use strict";function o(t){for(var i=0;i' +},,,,,,,,,,,,,,,,,,,,,,,,,,function(t,e,i){"use strict";function o(t){if(t)return function(e,i,o){function n(e,i){return i?t[e](a,i):t[e](a)}var r,s,a=$(this);return"get"===e?(r=i,"function"==typeof t[r]?n(r,o):t[r]):t[e]?a.each(function(){return n(e,s)}):a}}function n(t,e){function i(t,e,i){return void 0===i?t[e]():t[e](i)}if(t&&e)return t=""+t,function(o,n,a){var l,c,h;return"get"===o?l=n:(c=n,"object"===(void 0===o?"undefined":r(o))&&void 0===n?(c=o,o="init"):"string"!=typeof o&&(o="init")),"getInstance"===o?$(this).eq(0).data(t):"destroy"===o?(h=$(this).eq(0).data(t))?void("function"==typeof h.destroy?(i(h,"destroy",c),$(this).eq(0).removeData(t)):s.logError("[Block Plugin] "+t+" does not support destroy command")):void console.warn("[Block Plugin] Trying to execute destroy method of "+t+" but it has not been inited"):"get"===o?(h=$(this).eq(0).data(t),h?"function"==typeof h[l]?i(h,l,a):h[l]:void console.warn("[Block Plugin] Trying to get prop or execute method of "+t+" but it has not been inited")):$(this).each(function(){var n=$(this),r=n.data(t);void 0===r&&(r=void 0===c?e(n):e(n,c),n.data(t,r)),"init"!==o&&("function"==typeof r[o]?i(r,o,c):s.logError("[Block Plugin] "+t+" does not support command "+o))})}}var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s=i(13).getLogger("CommonUI.CreateTVBlockPlugin");t.exports.createTvBlockPlugin=o,t.exports.createTvBlockWithInstance=n},function(t,e,i){(function(o){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var r,s,a,l,c,h;Object.defineProperty(e,"__esModule",{value:!0}),r=function(){function t(t,e){var i,o;for(i=0;i{{#labelLeft}}{{labelLeft}}{{/labelLeft}}{{> inputWrapper }}{{#labelRight}}{{labelRight}}{{/labelRight}}{{/hasLabel}}{{^hasLabel}}{{> inputWrapper }}{{/hasLabel}}',inputWrapper:'<{{ tag }} class="{{ customClass }}{{#disabled}} i-disabled{{/disabled}}">{{^hasCheckbox}}{{> checkbox }}{{/hasCheckbox}}{{> box }}{{> ripple }}',checkbox:'',checkboxClass:"{{ customClass }}__input",box:''+i(235)+"",ripple:''}, +c="i-inited",h=function(){function t(e){var i,o=e.customClass,r=void 0===o?"tv-control-checkbox":o,s=e.$checkbox,l=e.tag,h=e.id,u=e.name,d=e.checked,p=e.disabled,_=e.labelLeft,f=e.labelRight,m=e.labelAddClass,g=e.boxAddClass;if(n(this,t),this.$el=null,void 0===l&&(l=_||f?"span":"label"),i=s instanceof $&&!!s.length){if(!s.is("input[type=checkbox]"))return void a.logError("`$checkbox` need to be input[type=checkbox]");if(s.hasClass(c))return;this._setInputId(s,h),this._setInputClass(s,r),this._setInputName(s,u),this._setInputChecked(s,d),this._setInputDisabled(s,p),d=!!s.prop("checked"),p=!!s.attr("disabled")}this.$el=this.render({$checkbox:s,hasCheckbox:i,customClass:r,tag:l,id:h,name:u,checked:d,disabled:p,labelLeft:_,labelRight:f,hasLabel:_||f,labelAddClass:m,boxAddClass:g}),this.$checkbox=i?s:this.$el.find("input[type=checkbox]")}return r(t,[{key:"_setInputId",value:function(t,e){void 0!==e&&t.attr("id",e)}},{key:"_setInputClass",value:function(t,e){var i=o.render(l.checkboxClass,{customClass:e});t.addClass(i)}},{key:"_setInputName",value:function(t,e){void 0!==e&&t.attr("name",e)}},{key:"_setInputChecked",value:function(t,e){void 0!==e&&t.prop("checked",!!e)}},{key:"_setInputDisabled",value:function(t,e){void 0!==e&&(e?t.setAttribute("disabled","disabled"):t.removeAttr("disabled"))}},{key:"render",value:function(t){var e,i=t.$checkbox,n=$(o.render(l.labelWrapper,t,l));return t.hasCheckbox&&(n.insertBefore(i),e=n.find("."+t.customClass).andSelf().filter("."+t.customClass).eq(0),e.prepend(i.detach()),i.addClass(c)),n}},{key:"checked",set:function(t){this._setInputChecked(this.$checkbox,!!t)},get:function(){return!!this.$checkbox.prop("checked")}}]),t}(),$.fn.tvControlCheckbox=(0,s.createTvBlockWithInstance)("tv-control-checkbox",function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new h(TradingView.mergeObj(e,{$checkbox:t}))}),e.default=h,t.exports=e.default}).call(e,i(54))},function(t,e,i){(function(o){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function r(){var t,e,i=h.width();for(d.width=i,d.height=h.height(),t=0;tt.height()},breakpoints:l.breakpoints,widgetbarBreakpoint:1064, +setFixedBodyState:function(t){var e,i,o;t&&1==++u?("hidden"!==$(document.body).css("overflow").toLowerCase()&&document.body.scrollHeight>document.body.offsetHeight&&($(".widgetbar-wrap").css("right",d.getScrollbarWidth()),c.css("padding-right",parseInt(c.css("padding-right").replace("px",""))+d.getScrollbarWidth()+"px").data("wasScroll",!0)),!TradingView.isMobile.any()&&d.isMobileSafari?c.addClass("i-no-scroll-safari"):c.css("top",-h.scrollTop()).addClass("i-no-scroll")):!t&&u>0&&0==--u&&(!TradingView.isMobile.any()&&d.isMobileSafari?c.removeClass("i-no-scroll-safari"):(e=-parseInt(c.css("top").replace("px","")),c.removeClass("i-no-scroll").css("top",""),h.scrollTop(e)),c.data("wasScroll")&&(i=c.get(0),$(".widgetbar-wrap").css("right",0),o=$(".widgetbar-wrap").width()||0,i.scrollHeight<=i.clientHeight&&(o-=d.getScrollbarWidth()),c.css("padding-right",(o<0?0:o)+"px").data("wasScroll",void 0)))}},p=Object.keys(d.breakpoints).sort(function(t,e){return d.breakpoints[t]-d.breakpoints[e]}),o.extend(d,a.default.prototype),r(),$(r),h.on("resize",r),e.default=d,t.exports=e.default}).call(e,i(192))},function(t,e,i){"use strict";var o=i(80);JSServer.studyLibrary=[{name:"Accumulation/Distribution",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#808000"}},precision:4,inputs:{}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Accumulation/Distribution",shortDescription:"Accum/Dist",is_price_study:!1,inputs:[],id:"Accumulation/Distribution@tv-basicstudies-1",scriptIdPart:"",name:"Accumulation/Distribution"},constructor:function(){this.f_0=function(t,e,i,n){return o.Std.or(o.Std.and(o.Std.eq(t,e),o.Std.eq(t,i)),o.Std.eq(e,i))?0:(2*t-i-e)/(e-i)*n},this.main=function(t,e){var i,n,r;return this._context=t,this._input=e,i=this.f_0(o.Std.close(this._context),o.Std.high(this._context),o.Std.low(this._context),o.Std.volume(this._context)),n=o.Std.cum(i,this._context),r=n,[r]}}},{name:"Accumulative Swing Index",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#3C78D8"}},precision:4,inputs:{in_0:10}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"ASI",histogramBase:0,joinPoints:!1}},description:"Accumulative Swing Index",shortDescription:"ASI",is_price_study:!1,inputs:[{id:"in_0",name:"Limit Move Value",defval:10,type:"float",min:.1,max:1e5}],id:"Accumulative Swing Index@tv-basicstudies-1",scriptIdPart:"",name:"Accumulative Swing Index"},constructor:function(){this.f_0=function(t,e){ +var i=e.new_var(o.Std.open(e)),n=e.new_var(o.Std.high(e)),r=e.new_var(o.Std.low(e)),s=e.new_var(o.Std.close(e)),a=o.Std.abs(n-s.get(1)),l=o.Std.abs(r-s.get(1)),c=o.Std.abs(n-r),h=o.Std.abs(s.get(1)-i.get(1)),u=o.Std.max(a,l),d=o.Std.iff(a>=o.Std.max(l,c),a-.5*l+.25*h,o.Std.iff(l>=o.Std.max(a,c),l-.5*a+.25*h,c+.25*h));return o.Std.iff(0===d,0,(s-s.get(1)+.5*(s-i)+.25*(s.get(1)-i.get(1)))/d*u/t*50)},this.f_1=function(t,e){var i=this.f_0(t,e);return o.Std.cum(i,e)},this.main=function(t,e){var i,o;return this._context=t,this._input=e,i=this._input(0),o=this.f_1(i,this._context),[o]}}},{name:"Advance/Decline",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"}},precision:4,inputs:{in_0:10}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Advance/Decline",shortDescription:"AD",is_price_study:!1,inputs:[{id:"in_0",name:"length",defval:10,type:"integer",min:1,max:2e3}],id:"Advance/Decline@tv-basicstudies-1",scriptIdPart:"",name:"Advance/Decline"},constructor:function(){this.f_0=function(t,e){return o.Std.gt(t,e)},this.f_1=function(t,e){return o.Std.lt(t,e)},this.f_2=function(t,e){return 0===e?t:t/e},this.main=function(t,e){var i,n,r,s,a,l,c,h,u;return this._context=t,this._input=e,i=this._input(0),n=this.f_0(o.Std.close(this._context),o.Std.open(this._context)),r=this._context.new_var(n),s=o.Std.sum(r,i,this._context),a=this.f_1(o.Std.close(this._context),o.Std.open(this._context)),l=this._context.new_var(a),c=o.Std.sum(l,i,this._context),h=this.f_2(s,c),u=h,[u]}}},{name:"Arnaud Legoux Moving Average",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#000080"}},precision:4,inputs:{in_0:9,in_1:.85,in_2:6}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Arnaud Legoux Moving Average",shortDescription:"ALMA",is_price_study:!0,inputs:[{id:"in_0",name:"Window Size",defval:9,type:"integer",min:0,max:5e3},{id:"in_1",name:"Offset",defval:.85,type:"float",min:-1e12,max:1e12},{id:"in_2",name:"Sigma",defval:6,type:"float",min:-1e12,max:1e12}],id:"Arnaud Legoux Moving Average@tv-basicstudies-1",scriptIdPart:"",name:"Arnaud Legoux Moving Average"},constructor:function(){this.main=function(t,e){var i,n,r,s,a,l;return this._context=t,this._input=e,i=o.Std.close(this._context),n=this._input(0),r=this._input(1),s=this._input(2),a=this._context.new_var(i),l=o.Std.alma(a,n,r,s),[l]}}},{name:"Aroon",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF6A00"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0094FF"}},precision:4,inputs:{in_0:14}},plots:[{ +id:"plot_0",type:"line"},{id:"plot_1",type:"line"}],styles:{plot_0:{title:"Upper",histogramBase:0,joinPoints:!1},plot_1:{title:"Lower",histogramBase:0,joinPoints:!1}},description:"Aroon",shortDescription:"Aroon",is_price_study:!1,inputs:[{id:"in_0",name:"length",defval:14,type:"integer",min:1,max:2e3}],id:"Aroon@tv-basicstudies-1",scriptIdPart:"",name:"Aroon"},constructor:function(){this.f_0=function(t,e){return 100*(t+e)/e},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_;return this._context=t,this._input=e,i=this._input(0),n=o.Std.high(this._context),r=i+1,s=this._context.new_var(n),a=o.Std.highestbars(s,r,this._context),l=this.f_0(a,i),c=o.Std.low(this._context),h=this._context.new_var(c),u=o.Std.lowestbars(h,r,this._context),d=this.f_0(u,i),p=l,_=d,[p,_]}}},{name:"Average Directional Index",metainfo:{_metainfoVersion:41,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"}},precision:4,inputs:{in_0:14,in_1:14}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"ADX",histogramBase:0,joinPoints:!1,isHidden:!1}},description:"Average Directional Index",shortDescription:"ADX",is_price_study:!1,inputs:[{id:"in_0",name:"ADX Smoothing",defval:14,type:"integer",min:-1e12,max:1e12},{id:"in_1",name:"DI Length",defval:14,type:"integer",min:-1e12,max:1e12}],id:"average_directional_Index@tv-basicstudies-1",scriptIdPart:"",name:"Average Directional Index"},constructor:function(){this.f_0=function(t){var e=this._context.new_var(o.Std.high(this._context)),i=o.Std.change(e),n=this._context.new_var(o.Std.low(this._context)),r=-o.Std.change(n),s=this._context.new_var(o.Std.tr(void 0,this._context)),a=o.Std.rma(s,t,this._context),l=this._context.new_var(o.Std.and(o.Std.gt(i,r),o.Std.gt(i,0))?i:0),c=o.Std.fixnan(100*o.Std.rma(l,t,this._context)/a,this._context),h=this._context.new_var(o.Std.and(o.Std.gt(r,i),o.Std.gt(r,0))?r:0);return[c,o.Std.fixnan(100*o.Std.rma(h,t,this._context)/a,this._context)]},this.f_1=function(t,e){var i=this.f_0(t),n=i[0],r=i[1],s=n+r,a=this._context.new_var(o.Std.abs(n-r)/(o.Std.eq(s,0)?1:s));return[100*o.Std.rma(a,e,this._context)]},this.main=function(t,e){return this._context=t,this._input=e,this.f_1(this._input(0),this._input(1))}}},{name:"Average True Range",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"}},precision:4,inputs:{in_0:14}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Average True Range",shortDescription:"ATR",is_price_study:!1,inputs:[{id:"in_0",name:"length",defval:14,type:"integer",min:1,max:2e3}],id:"Average True Range@tv-basicstudies-1",scriptIdPart:"",name:"Average True Range"},constructor:function(){this.main=function(t,e){var i,n,r,s;return this._context=t,this._input=e,i=this._input(0),n=o.Std.tr(this._context),r=this._context.new_var(n), +s=o.Std.rma(r,i,this._context),[s]}}},{name:"Awesome Oscillator",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:1,trackPrice:!1,transparency:35,visible:!0,color:"#000080"}},precision:4,palettes:{palette_0:{colors:{0:{color:"#FF0000",width:1,style:0},1:{color:"#008000",width:1,style:0}}}},inputs:{}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",palette:"palette_0",target:"plot_0",type:"colorer"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Awesome Oscillator",shortDescription:"AO",is_price_study:!1,palettes:{palette_0:{colors:{0:{name:"Color 0"},1:{name:"Color 1"}}}},inputs:[],id:"Awesome Oscillator@tv-basicstudies-1",scriptIdPart:"",name:"Awesome Oscillator"},constructor:function(){this.f_0=function(t,e){return t-e},this.f_1=function(t){return o.Std.le(t,0)?0:1},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d;return this._context=t,this._input=e,i=o.Std.hl2(this._context),n=this._context.new_var(i),r=o.Std.sma(n,5,this._context),s=this._context.new_var(i),a=o.Std.sma(s,34,this._context),l=this.f_0(r,a),c=l,h=this._context.new_var(l),u=o.Std.change(h),d=this.f_1(u),[c,d]}}},{name:"Balance of Power",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"}},precision:4,inputs:{}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Balance of Power",shortDescription:"Balance of Power",is_price_study:!1,inputs:[],id:"Balance of Power@tv-basicstudies-1",scriptIdPart:"",name:"Balance of Power"},constructor:function(){this.f_0=function(t,e,i,o){return(t-e)/(i-o)},this.main=function(t,e){return this._context=t,this._input=e,[this.f_0(o.Std.close(this._context),o.Std.open(this._context),o.Std.high(this._context),o.Std.low(this._context))]}}},{name:"Bollinger Bands",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"},plot_2:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"}},precision:4,filledAreasStyle:{fill_0:{color:"#000080",transparency:90,visible:!0}},inputs:{in_0:20,in_1:2}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"},{id:"plot_2",type:"line"}],styles:{plot_0:{title:"Median",histogramBase:0,joinPoints:!1},plot_1:{title:"Upper",histogramBase:0,joinPoints:!1},plot_2:{title:"Lower",histogramBase:0,joinPoints:!1}},description:"Bollinger Bands",shortDescription:"BB",is_price_study:!0,filledAreas:[{id:"fill_0",objAId:"plot_1",objBId:"plot_2",type:"plot_plot",title:"Plots Background"}],inputs:[{id:"in_0",name:"length",defval:20,type:"integer",min:1,max:1e4},{id:"in_1",name:"mult",defval:2,type:"float",min:.001, +max:50}],id:"Bollinger Bands@tv-basicstudies-1",scriptIdPart:"",name:"Bollinger Bands"},constructor:function(){this.f_0=function(t,e){return t*e},this.f_1=function(t,e){return t+e},this.f_2=function(t,e){return t-e},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_,f;return this._context=t,this._input=e,i=o.Std.close(this._context),n=this._input(0),r=this._input(1),s=this._context.new_var(i),a=o.Std.sma(s,n,this._context),l=this._context.new_var(i),c=o.Std.stdev(l,n,this._context),h=this.f_0(r,c),u=this.f_1(a,h),d=this.f_2(a,h),p=a,_=u,f=d,[p,_,f]}}},{name:"Bollinger Bands %B",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#008080"}},precision:4,bands:[{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:1},{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:0}],filledAreasStyle:{fill_0:{color:"#008080",transparency:90,visible:!0}},inputs:{in_0:20,in_1:2}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Bollinger Bands %B",shortDescription:"BB %B",is_price_study:!1,bands:[{id:"hline_0",name:"UpperLimit"},{id:"hline_1",name:"LowerLimit"}],filledAreas:[{id:"fill_0",objAId:"hline_0",objBId:"hline_1",type:"hline_hline",title:"Hlines Background"}],inputs:[{id:"in_0",name:"length",defval:20,type:"integer",min:1,max:1e4},{id:"in_1",name:"mult",defval:2,type:"float",min:.001,max:50}],id:"Bollinger Bands %B@tv-basicstudies-1",scriptIdPart:"",name:"Bollinger Bands %B"},constructor:function(){this.f_0=function(t,e){return t*e},this.f_1=function(t,e){return t+e},this.f_2=function(t,e){return t-e},this.f_3=function(t,e,i){return(t-e)/(i-e)},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_;return this._context=t,this._input=e,i=o.Std.close(this._context),n=this._input(0),r=this._input(1),s=this._context.new_var(i),a=o.Std.sma(s,n,this._context),l=this._context.new_var(i),c=o.Std.stdev(l,n,this._context),h=this.f_0(r,c),u=this.f_1(a,h),d=this.f_2(a,h),p=this.f_3(i,d,u),_=p,[_]}}},{name:"Bollinger Bands Width",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"}},precision:4,inputs:{in_0:20,in_1:2}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Bollinger Bands Width",shortDescription:"BBW",is_price_study:!1,inputs:[{id:"in_0",name:"length",defval:20,type:"integer",min:1,max:1e4},{id:"in_1",name:"mult",defval:2,type:"float",min:.001,max:50}],id:"Bollinger Bands Width@tv-basicstudies-1",scriptIdPart:"",name:"Bollinger Bands Width"},constructor:function(){this.f_0=function(t,e){return t*e},this.f_1=function(t,e){return t+e},this.f_2=function(t,e){return t-e},this.f_3=function(t,e,i){return(t-e)/i},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_;return this._context=t,this._input=e,i=o.Std.close(this._context), +n=this._input(0),r=this._input(1),s=this._context.new_var(i),a=o.Std.sma(s,n,this._context),l=this._context.new_var(i),c=o.Std.stdev(l,n,this._context),h=this.f_0(r,c),u=this.f_1(a,h),d=this.f_2(a,h),p=this.f_3(u,d,a),_=p,[_]}}},{name:"Chaikin Money Flow",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#008000"}},precision:4,bands:[{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:0}],inputs:{in_0:20}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Chaikin Money Flow",shortDescription:"CMF",is_price_study:!1,bands:[{id:"hline_0",name:"Zero"}],inputs:[{id:"in_0",name:"length",defval:20,type:"integer",min:1,max:2e3}],id:"Chaikin Money Flow@tv-basicstudies-1",scriptIdPart:"",name:"Chaikin Money Flow"},constructor:function(){this.f_0=function(t,e,i,n){return o.Std.or(o.Std.and(o.Std.eq(t,e),o.Std.eq(t,i)),o.Std.eq(e,i))?0:(2*t-i-e)/(e-i)*n},this.f_1=function(t,e){return t/e},this.main=function(t,e){var i,n,r,s,a,l,c,h,u;return this._context=t,this._input=e,i=this._input(0),n=this.f_0(o.Std.close(this._context),o.Std.high(this._context),o.Std.low(this._context),o.Std.volume(this._context)),r=this._context.new_var(n),s=o.Std.sum(r,i,this._context),a=o.Std.volume(this._context),l=this._context.new_var(a),c=o.Std.sum(l,i,this._context),h=this.f_1(s,c),u=h,[u]}}},{name:"Chaikin Oscillator",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"}},precision:4,bands:[{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:0}],inputs:{in_0:3,in_1:10}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Chaikin Oscillator",shortDescription:"Chaikin Osc",is_price_study:!1,bands:[{id:"hline_0",name:"Zero"}],inputs:[{id:"in_0",name:"short",defval:3,type:"integer",min:1,max:2e3},{id:"in_1",name:"long",defval:10,type:"integer",min:1,max:2e3}],id:"Chaikin Oscillator@tv-basicstudies-1",scriptIdPart:"",name:"Chaikin Oscillator"},constructor:function(){this.f_0=function(t,e){return t-e},this.main=function(t,e){var i,n,r,s,a,l,c,h,u;return this._context=t,this._input=e,i=this._input(0),n=this._input(1),r=o.Std.accdist(this._context),s=this._context.new_var(r),a=o.Std.ema(s,i,this._context),l=this._context.new_var(r),c=o.Std.ema(l,n,this._context),h=this.f_0(a,c),u=h,[u]}}},{name:"Chande Kroll Stop",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#008000"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"}},precision:4,inputs:{in_0:10,in_1:1,in_2:9}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"}],styles:{plot_0:{title:"Long", +histogramBase:0,joinPoints:!1},plot_1:{title:"Short",histogramBase:0,joinPoints:!1}},description:"Chande Kroll Stop",shortDescription:"Chande Kroll Stop",is_price_study:!0,inputs:[{id:"in_0",name:"p",defval:10,type:"integer",min:1,max:4999},{id:"in_1",name:"x",defval:1,type:"integer",min:1,max:1e12},{id:"in_2",name:"q",defval:9,type:"integer",min:1,max:1e12}],id:"Chande Kroll Stop@tv-basicstudies-1",scriptIdPart:"",name:"Chande Kroll Stop"},constructor:function(){this.f_0=function(t,e,i){return t-e*i},this.f_1=function(t,e,i){return t+e*i},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_,f,m,g,v,y;return this._context=t,this._input=e,i=this._input(0),n=this._input(1),r=this._input(2),s=o.Std.high(this._context),a=this._context.new_var(s),l=o.Std.highest(a,i,this._context),c=o.Std.atr(i,this._context),h=this.f_0(l,n,c),u=this._context.new_var(s),d=o.Std.lowest(u,i,this._context),p=this.f_1(d,n,c),_=this._context.new_var(h),f=o.Std.highest(_,r,this._context),m=this._context.new_var(p),g=o.Std.lowest(m,r,this._context),v=g,y=f,[v,y]}}},{name:"Chande Momentum Oscillator",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#008080"}},precision:4,inputs:{in_0:9}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Chande Momentum Oscillator",shortDescription:"ChandeMO",is_price_study:!1,inputs:[{id:"in_0",name:"length",defval:9,type:"integer",min:1,max:2e3}],id:"Chande Momentum Oscillator@tv-basicstudies-1",scriptIdPart:"",name:"Chande Momentum Oscillator"},constructor:function(){this.f_0=function(t){return o.Std.ge(t,0)?t:0},this.f_1=function(t){return o.Std.ge(t,0)?0:-t},this.f_2=function(t,e){return 100*t/e},this.f_3=function(t,e){return this.f_2(t-e,t+e)},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_;return this._context=t,this._input=e,i=this._input(0),n=o.Std.close(this._context),r=this._context.new_var(n),s=o.Std.change(r),a=this.f_0(s),l=this.f_1(s),c=this._context.new_var(a),h=o.Std.sum(c,i,this._context),u=this._context.new_var(l),d=o.Std.sum(u,i,this._context),p=this.f_3(h,d),_=p,[_]}}},{name:"Chop Zone",metainfo:{_metainfoVersion:41,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:5,trackPrice:!1,transparency:35,visible:!0,color:"#000080"}},precision:4,palettes:{palette_0:{colors:{0:{color:"#34dddd",width:1,style:0},1:{color:"#006400",width:1,style:0},2:{color:"#98fb98",width:1,style:0},3:{color:"#00FF00",width:1,style:0},4:{color:"#8B0000",width:1,style:0},5:{color:"#FF0000",width:1,style:0},6:{color:"#FF7F00",width:1,style:0},7:{color:"#ffc04c",width:1,style:0},8:{color:"#FFFF00",width:1,style:0}}}},inputs:{}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",palette:"palette_0",target:"plot_0",type:"colorer"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1,isHidden:!1}},description:"Chop Zone",shortDescription:"Chop Zone",is_price_study:!1, +palettes:{palette_0:{colors:{0:{name:"Color 0"},1:{name:"Color 1"},2:{name:"Color 2"},3:{name:"Color 3"},4:{name:"Color 4"},5:{name:"Color 5"},6:{name:"Color 6"},7:{name:"Color 7"},8:{name:"Color 8"}},valToIndex:{0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8}}},inputs:[],id:"chop_zone@tv-basicstudies-1",scriptIdPart:"",name:"Chop Zone"},constructor:function(){this.f_0=function(){var t=o.Std.close(this._context),e=o.Std.hlc3(this._context),i=this._context.new_var(o.Std.high(this._context)),n=o.Std.highest(i,30,this._context),r=o.Std.lowest(i,30,this._context),s=25/(n-r)*r,a=this._context.new_var(t),l=this._context.new_var(o.Std.ema(a,34,this._context)),c=(l.get(1)-l.get(0))/e*s,h=o.Std.sqrt(1+c*c),u=o.Std.round(180*o.Std.acos(1/h)/3.141592653589793),d=o.Std.iff(o.Std.gt(c,0),-u,u),p=o.Std.and(o.Std.gt(d,-2.14),o.Std.le(d,-.71))?7:8,_=o.Std.and(o.Std.gt(d,-3.57),o.Std.le(d,-2.14))?6:p,f=o.Std.and(o.Std.gt(d,-5),o.Std.le(d,-3.57))?5:_,m=o.Std.le(d,-5)?4:f,g=o.Std.and(o.Std.lt(d,2.14),o.Std.ge(d,.71))?3:m,v=o.Std.and(o.Std.lt(d,3.57),o.Std.ge(d,2.14))?2:g,y=o.Std.and(o.Std.lt(d,5),o.Std.ge(d,3.57))?1:v;return[1,o.Std.ge(d,5)?0:y]},this.main=function(t,e){return this._context=t,this._input=e,this.f_0()}}},{name:"Choppiness Index",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"}},precision:4,bands:[{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:61.8},{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:38.2}],filledAreasStyle:{fill_0:{color:"#008000",transparency:90,visible:!0}},inputs:{in_0:14}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Choppiness Index",shortDescription:"CHOP",is_price_study:!1,bands:[{id:"hline_0",name:"UpperLimit"},{id:"hline_1",name:"LowerLimit"}],filledAreas:[{id:"fill_0",objAId:"hline_0",objBId:"hline_1",type:"hline_hline",title:"Hlines Background"}],inputs:[{id:"in_0",name:"length",defval:14,type:"integer",min:1,max:2e3}],id:"Choppiness Index@tv-basicstudies-1",scriptIdPart:"",name:"Choppiness Index"},constructor:function(){this.f_0=function(t,e,i,n){return 100*o.Std.log10(t/(e-i))/n},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_,f;return this._context=t,this._input=e,i=this._input(0),n=o.Std.atr(1,this._context),r=this._context.new_var(n),s=o.Std.sum(r,i,this._context),a=o.Std.high(this._context),l=this._context.new_var(a),c=o.Std.highest(l,i,this._context),h=o.Std.low(this._context),u=this._context.new_var(h),d=o.Std.lowest(u,i,this._context),p=o.Std.log10(i),_=this.f_0(s,c,d,p),f=_,[f]}}},{name:"Commodity Channel Index",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#808000"}},precision:4,bands:[{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:100},{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:-100}], +filledAreasStyle:{fill_0:{color:"#808000",transparency:90,visible:!0}},inputs:{in_0:20}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Commodity Channel Index",shortDescription:"CCI",is_price_study:!1,bands:[{id:"hline_0",name:"UpperLimit"},{id:"hline_1",name:"LowerLimit"}],filledAreas:[{id:"fill_0",objAId:"hline_0",objBId:"hline_1",type:"hline_hline",title:"Hlines Background"}],inputs:[{id:"in_0",name:"length",defval:20,type:"integer",min:1,max:2e3}],id:"Commodity Channel Index@tv-basicstudies-1",scriptIdPart:"",name:"Commodity Channel Index"},constructor:function(){this.f_0=function(t,e,i){return(t-e)/(.015*i)},this.main=function(t,e){var i,n,r,s,a,l,c,h;return this._context=t,this._input=e,i=o.Std.hlc3(this._context),n=this._input(0),r=this._context.new_var(i),s=o.Std.sma(r,n,this._context),a=this._context.new_var(i),l=o.Std.dev(a,n,this._context),c=this.f_0(i,s,l),h=c,[h]}}},{name:"Connors RSI",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#800080"}},precision:4,bands:[{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:70},{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:30}],filledAreasStyle:{fill_0:{color:"#800080",transparency:90,visible:!0}},inputs:{in_0:3,in_1:2,in_2:100}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"CRSI",histogramBase:0,joinPoints:!1}},description:"Connors RSI",shortDescription:"CRSI",is_price_study:!1,bands:[{id:"hline_0",name:"UpperLimit"},{id:"hline_1",name:"LowerLimit"}],filledAreas:[{id:"fill_0",objAId:"hline_0",objBId:"hline_1",type:"hline_hline",title:"Hlines Background"}],inputs:[{id:"in_0",name:"RSI Length",defval:3,type:"integer",min:1},{id:"in_1",name:"UpDown Length",defval:2,type:"integer",min:1},{id:"in_2",name:"ROC Length",defval:100,type:"integer",min:1}],id:"Connors RSI@tv-basicstudies-1",scriptIdPart:"",name:"Connors RSI"},constructor:function(){this.f_1=function(t,e,i){var n=i.new_var(o.Std.max(o.Std.change(t),0));return o.Std.rma(n,e,i)},this.f_2=function(t,e,i){var n=i.new_var(-o.Std.min(o.Std.change(t),0));return o.Std.rma(n,e,i)},this.f_3=function(){var t=0;return function(e){var i=e.get(0),n=e.get(1);return t=i===n?0:i>n?o.Std.nz(t)<=0?1:o.Std.nz(t)+1:o.Std.nz(t)>=0?-1:o.Std.nz(t)-1,this._context.new_var(t)}}(),this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p;return this._context=t,this._input=e,i=o.Std.close(this._context),n=this._context.new_var(i),r=this._input(0),s=this._input(1),a=this._input(2),l=o.Std.rsi(this.f_1(n,r,this._context),this.f_2(n,r,this._context)),c=this.f_3(n),h=o.Std.rsi(this.f_1(c,s,this._context),this.f_2(c,s,this._context)),u=this._context.new_var(o.Std.roc(n,1)),d=o.Std.percentrank(u,a),p=o.Std.avg(l,h,d),[p]}}},{name:"Coppock Curve",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35, +visible:!0,color:"#000080"}},precision:4,inputs:{in_0:10,in_1:14,in_2:11}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Coppock Curve",shortDescription:"Coppock Curve",is_price_study:!1,inputs:[{id:"in_0",name:"WMA Length",defval:10,type:"integer",min:-1e12,max:5e3},{id:"in_1",name:"Long RoC Length",defval:14,type:"integer",min:1,max:4999},{id:"in_2",name:"Short RoC Length",defval:11,type:"integer",min:1,max:4999}],id:"Coppock Curve@tv-basicstudies-1",scriptIdPart:"",name:"Coppock Curve"},constructor:function(){this.f_0=function(t,e){return t+e},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_;return this._context=t,this._input=e,i=this._input(0),n=this._input(1),r=this._input(2),s=o.Std.close(this._context),a=this._context.new_var(s),l=o.Std.roc(a,n),c=this._context.new_var(s),h=o.Std.roc(c,r),u=this.f_0(l,h),d=this._context.new_var(u),p=o.Std.wma(d,i,this._context),_=p,[_]}}},{name:"Correlation Coeff",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:4,trackPrice:!1,transparency:40,visible:!0,color:"#800080"}},precision:4,inputs:{in_0:"AAPL",in_1:20}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Correlation Coefficient",shortDescription:"CC",is_price_study:!1,inputs:[{id:"in_0",name:"sym",defval:"AAPL",type:"symbol"},{id:"in_1",name:"length",defval:20,type:"integer",min:1,max:2e3}],id:"Correlation Coeff@tv-basicstudies-1",scriptIdPart:"",name:"Correlation Coeff"},constructor:function(){this.init=function(t,e){this._context=t,this._input=e,this._context.new_sym(this._input(0),o.Std.period(this._context),o.Std.period(this._context))},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d;return this._context=t,this._input=e,i=this._context.new_var(this._context.symbol.time),this._input(0),o.Std.period(this._context),n=o.Std.close(this._context),r=this._input(1),this._context.select_sym(1),s=this._context.new_var(this._context.symbol.time),a=o.Std.close(this._context),l=this._context.new_var(a),this._context.select_sym(0),c=l.adopt(s,i,0),h=this._context.new_var(n),u=this._context.new_var(c),d=o.Std.correlation(h,u,r,this._context),[d]}}},{name:"Detrended Price Oscillator",metainfo:{_metainfoVersion:42,isTVScript:!1,isTVScriptStub:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#808000"}},precision:4,bands:[{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:0}],inputs:{in_0:21,in_1:!1}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"DPO",histogramBase:0,joinPoints:!1,isHidden:!1}},description:"Detrended Price Oscillator",shortDescription:"DPO",is_price_study:!1,is_hidden_study:!1,id:"detrended_price_oscillator@tv-basicstudies-1",bands:[{id:"hline_0",name:"Zero",isHidden:!1}],inputs:[{id:"in_0",name:"Period",defval:21,type:"integer",min:1,max:1e12},{id:"in_1",name:"isCentered",defval:!1,type:"bool"}],scriptIdPart:"", +name:"Detrended Price Oscillator"},constructor:function(){this.f_0=function(){var t=this._input(0),e=this._input(1),i=Math.floor(t/2+1),n=this._context.new_var(o.Std.close(this._context)),r=this._context.new_var(o.Std.sma(n,t,this._context)),s=this._context.new_var(o.Std.close(this._context)),a=s.get(i)-r,l=o.Std.close(this._context)-r.get(i),c=e?a:l,h=-i;return[c,e?h:0]},this.main=function(t,e){this._context=t,this._input=e;var i=this.f_0();return[{value:i[0],offset:i[1]}]}}},{name:"Directional Movement Index",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF7F00"},plot_2:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"}},precision:4,inputs:{in_0:14,in_1:14}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"},{id:"plot_2",type:"line"}],styles:{plot_0:{title:"+DI",histogramBase:0,joinPoints:!1},plot_1:{title:"-DI",histogramBase:0,joinPoints:!1},plot_2:{title:"ADX",histogramBase:0,joinPoints:!1}},description:"Directional Movement",shortDescription:"DMI",is_price_study:!1,inputs:[{id:"in_0",name:"DI Length",defval:14,type:"integer",min:1,max:2e3},{id:"in_1",name:"ADX Smoothing",defval:14,type:"integer",min:1,max:50}],id:"Directional Movement Index@tv-basicstudies-1",scriptIdPart:"",name:"Directional Movement Index"},constructor:function(){this.f_0=function(t){return-t},this.f_1=function(t,e){return o.Std.and(o.Std.gt(t,e),o.Std.gt(t,0))?t:0},this.f_2=function(t,e){return 100*t/e},this.f_3=function(t,e){return t+e},this.f_4=function(t,e,i){return o.Std.abs(t-e)/(o.Std.eq(i,0)?1:i)},this.f_5=function(t){return 100*t},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_,f,m,g,v,y,b,S,w,T,x,C,P,L,I,k,A,M,E;return this._context=t,this._input=e,i=this._input(0),n=this._input(1),r=o.Std.high(this._context),s=this._context.new_var(r),a=o.Std.change(s),l=o.Std.low(this._context),c=this._context.new_var(l),h=o.Std.change(c),u=this.f_0(h),d=o.Std.tr(this._context),p=this._context.new_var(d),_=o.Std.rma(p,i,this._context),f=this.f_1(a,u),m=this._context.new_var(f),g=o.Std.rma(m,i,this._context),v=this.f_2(g,_),y=o.Std.fixnan(v,this._context),b=this.f_1(u,a),S=this._context.new_var(b),w=o.Std.rma(S,i,this._context),T=this.f_2(w,_),x=o.Std.fixnan(T,this._context),C=this.f_3(y,x),P=this.f_4(y,x,C),L=this._context.new_var(P),I=o.Std.rma(L,n,this._context),k=this.f_5(I),A=y,M=x,E=k,[A,M,E]}}},{name:"Donchian Channels",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"},plot_2:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF7F00"}},precision:4,filledAreasStyle:{ +fill_0:{color:"#0000FF",transparency:90,visible:!0}},inputs:{in_0:20}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"},{id:"plot_2",type:"line"}],styles:{plot_0:{title:"Lower",histogramBase:0,joinPoints:!1},plot_1:{title:"Upper",histogramBase:0,joinPoints:!1},plot_2:{title:"Basis",histogramBase:0,joinPoints:!1}},description:"Donchian Channels",shortDescription:"DC",is_price_study:!0,filledAreas:[{id:"fill_0",objAId:"plot_1",objBId:"plot_0",type:"plot_plot",title:"Plots Background"}],inputs:[{id:"in_0",name:"length",defval:20,type:"integer",min:1,max:2e3}],id:"Donchian Channels@tv-basicstudies-1",scriptIdPart:"",name:"Donchian Channels"},constructor:function(){this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p;return this._context=t,this._input=e,i=this._input(0),n=o.Std.low(this._context),r=this._context.new_var(n),s=o.Std.lowest(r,i,this._context),a=o.Std.high(this._context),l=this._context.new_var(a),c=o.Std.highest(l,i,this._context),h=o.Std.avg(c,s),u=s,d=c,p=h,[u,d,p]}}},{name:"Double Exponential Moving Average",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#008000"}},precision:4,inputs:{in_0:9}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Double EMA",shortDescription:"DEMA",is_price_study:!0,inputs:[{id:"in_0",name:"length",defval:9,type:"integer",min:1,max:1e4}],id:"Double Exponential Moving Average@tv-basicstudies-1",scriptIdPart:"",name:"Double Exponential Moving Average"},constructor:function(){this.f_0=function(t,e){return 2*t-e},this.main=function(t,e){var i,n,r,s,a,l,c,h;return this._context=t,this._input=e,i=this._input(0),n=o.Std.close(this._context),r=this._context.new_var(n),s=o.Std.ema(r,i,this._context),a=this._context.new_var(s),l=o.Std.ema(a,i,this._context),c=this.f_0(s,l),h=c,[h]}}},{name:"Ease of Movement",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#808000"}},precision:4,inputs:{in_0:1e4,in_1:14}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Ease Of Movement",shortDescription:"EOM",is_price_study:!1,inputs:[{id:"in_0",name:"Divisor",defval:1e4,type:"integer",min:1,max:1e9},{id:"in_1",name:"length",defval:14,type:"integer",min:1,max:2e3}],id:"Ease of Movement@tv-basicstudies-1",scriptIdPart:"",name:"Ease of Movement"},constructor:function(){this.f_0=function(t,e,i,o,n){return t*e*(i-o)/n},this.main=function(t,e){var i,n,r,s,a,l,c,h,u;return this._context=t,this._input=e,i=this._input(0),n=this._input(1),r=o.Std.hl2(this._context),s=this._context.new_var(r),a=o.Std.change(s),l=this.f_0(i,a,o.Std.high(this._context),o.Std.low(this._context),o.Std.volume(this._context)),c=this._context.new_var(l),h=o.Std.sma(c,n,this._context),u=h,[u]}}},{name:"Elders Force Index",metainfo:{ +_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#800000"}},precision:4,bands:[{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:0}],inputs:{in_0:13}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Elder's Force Index",shortDescription:"EFI",is_price_study:!1,bands:[{id:"hline_0",name:"Zero"}],inputs:[{id:"in_0",name:"length",defval:13,type:"integer",min:1,max:2e3}],id:"Elders Force Index@tv-basicstudies-1",scriptIdPart:"",name:"Elders Force Index"},constructor:function(){this.f_0=function(t,e){return t*e},this.main=function(t,e){var i,n,r,s,a,l,c,h;return this._context=t,this._input=e,i=this._input(0),n=o.Std.close(this._context),r=this._context.new_var(n),s=o.Std.change(r),a=this.f_0(s,o.Std.volume(this._context)),l=this._context.new_var(a),c=o.Std.ema(l,i,this._context),h=c,[h]}}},{name:"EMA Cross",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#008000"},plot_2:{linestyle:0,linewidth:4,plottype:3,trackPrice:!1,transparency:35,visible:!0,color:"#000080"}},precision:4,inputs:{in_0:9,in_1:26}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"},{id:"plot_2",type:"line"}],styles:{plot_0:{title:"Short",histogramBase:0,joinPoints:!1},plot_1:{title:"Long",histogramBase:0,joinPoints:!1},plot_2:{title:"Crosses",histogramBase:0,joinPoints:!1}},description:"EMA Cross",shortDescription:"EMA Cross",is_price_study:!0,inputs:[{id:"in_0",name:"Short",defval:9,type:"integer",min:1,max:2e3},{id:"in_1",name:"Long",defval:26,type:"integer",min:1,max:2e3}],id:"EMA Cross@tv-basicstudies-1",scriptIdPart:"",name:"EMA Cross"},constructor:function(){this.f_0=function(t,e){return t?e:o.Std.na()},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p;return this._context=t,this._input=e,i=this._input(0),n=this._input(1),r=o.Std.close(this._context),s=this._context.new_var(r),a=o.Std.ema(s,i,this._context),l=this._context.new_var(r),c=o.Std.ema(l,n,this._context),h=a,u=c,d=o.Std.cross(a,c,this._context),p=this.f_0(d,a),[h,u,p]}}},{name:"Envelope",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF7F00"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"},plot_2:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"}},precision:4,filledAreasStyle:{fill_0:{color:"#0000FF",transparency:90,visible:!0}},inputs:{in_0:20,in_1:10,in_2:!1}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"},{id:"plot_2",type:"line"}],styles:{plot_0:{title:"Median",histogramBase:0,joinPoints:!1}, +plot_1:{title:"Upper",histogramBase:0,joinPoints:!1},plot_2:{title:"Lower",histogramBase:0,joinPoints:!1}},description:"Envelope",shortDescription:"Env",is_price_study:!0,filledAreas:[{id:"fill_0",objAId:"plot_1",objBId:"plot_2",type:"plot_plot",title:"Plots Background"}],inputs:[{id:"in_0",name:"Length",defval:20,type:"integer",min:1,max:2e3},{id:"in_1",name:"percent",defval:10,type:"float",min:-1e12,max:1e12},{id:"in_2",name:"exponential",defval:!1,type:"bool"}],id:"Envelope@tv-basicstudies-1",scriptIdPart:"",name:"Envelope"},constructor:function(){this.f_0=function(t,e,i){return t?e:i},this.f_1=function(t,e){return t*(1+e)},this.f_2=function(t,e){return t*(1-e)},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_,f,m,g;return this._context=t,this._input=e,i=o.Std.close(this._context),n=this._input(0),r=this._input(1),s=this._input(2),a=this._context.new_var(i),l=o.Std.ema(a,n,this._context),c=this._context.new_var(i),h=o.Std.sma(c,n,this._context),u=this.f_0(s,l,h),d=r/100,p=this.f_1(u,d),_=this.f_2(u,d),f=u,m=p,g=_,[f,m,g]}}},{name:"Fisher Transform",metainfo:{_metainfoVersion:41,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF7F00"}},precision:4,bands:[{color:"#FF7F00",linestyle:2,linewidth:1,visible:!0,value:1.5},{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:.75},{color:"#FF7F00",linestyle:2,linewidth:1,visible:!0,value:0},{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:-.75},{color:"#FF7F00",linestyle:2,linewidth:1,visible:!0,value:-1.5}],inputs:{in_0:9}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"}],styles:{plot_0:{title:"Fisher",histogramBase:0,joinPoints:!1,isHidden:!1},plot_1:{title:"Trigger",histogramBase:0,joinPoints:!1,isHidden:!1}},description:"Fisher Transform",shortDescription:"Fisher",is_price_study:!1,bands:[{id:"hline_0",name:"Level",isHidden:!1},{id:"hline_1",name:"Level",isHidden:!1},{id:"hline_2",name:"Level",isHidden:!1},{id:"hline_3",name:"Level",isHidden:!1},{id:"hline_4",name:"Level",isHidden:!1}],inputs:[{id:"in_0",name:"Length",defval:9,type:"integer",min:1,max:1e12}],id:"fisher_transform@tv-basicstudies-1",scriptIdPart:"",name:"Fisher Transform"},constructor:function(){this.f_0=function(t){var e=o.Std.lt(t,-.99)?-.999:t;return[o.Std.gt(t,.99)?.999:e]},this.f_1=function(){var t,e,i,n=this._input(0),r=this._context.new_var(o.Std.hl2(this._context)),s=o.Std.highest(r,n,this._context),a=this._context.new_var(o.Std.hl2(this._context)),l=o.Std.lowest(a,n,this._context),c=this._context.new_var(),h=this.f_0(.66*((o.Std.hl2(this._context)-l)/o.Std.max(s-l,.001)-.5)+.67*o.Std.nz(c.get(1)));return c.set(h[0]),t=this._context.new_var(),t.set(.5*o.Std.log((1+c.get(0))/o.Std.max(1-c.get(0),.001))+.5*o.Std.nz(t.get(1))),e=t.get(1),i=t.get(0),[i,e]},this.main=function(t,e){return this._context=t,this._input=e,this.f_1()}}},{name:"Historical Volatility", +metainfo:{_metainfoVersion:41,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"}},precision:4,inputs:{in_0:10}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1,isHidden:!1}},description:"Historical Volatility",shortDescription:"HV",is_price_study:!1,inputs:[{id:"in_0",name:"length",defval:10,type:"integer",min:1,max:1e12}],id:"historical_volatility@tv-basicstudies-1",scriptIdPart:"",name:"Historical Volatility"},constructor:function(){this.f_0=function(){var t=this._input(0),e=o.Std.or(o.Std.isintraday(this._context),o.Std.and(o.Std.isdaily(this._context),o.Std.eq(o.Std.interval(this._context),1)))?1:7,i=this._context.new_var(o.Std.close(this._context)),n=this._context.new_var(o.Std.log(o.Std.close(this._context)/i.get(1)));return[100*o.Std.stdev(n,t,this._context)*o.Std.sqrt(365/e)]},this.main=function(t,e){return this._context=t,this._input=e,this.f_0()}}},{name:"Hull MA",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#000080"}},precision:4,inputs:{in_0:9}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Hull Moving Average",shortDescription:"HMA",is_price_study:!0,inputs:[{id:"in_0",name:"length",defval:9,type:"integer",min:1,max:1e4}],id:"Hull MA@tv-basicstudies-1",scriptIdPart:"",name:"Hull MA"},constructor:function(){this.f_0=function(t,e){return 2*t-e},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_,f;return this._context=t,this._input=e,i=o.Std.close(this._context),n=this._input(0),r=n/2,s=this._context.new_var(i),a=o.Std.wma(s,r,this._context),l=this._context.new_var(i),c=o.Std.wma(l,n,this._context),h=this.f_0(a,c),u=o.Std.sqrt(n),d=o.Std.round(u),p=this._context.new_var(h),_=o.Std.wma(p,d,this._context),f=_,[f]}}},{name:"Ichimoku Cloud",metainfo:{_metainfoVersion:42,isTVScript:!1,isTVScriptStub:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0496ff"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#991515"},plot_2:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#459915"},plot_3:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#008000"},plot_4:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"}},precision:4,palettes:{palette_0:{colors:{0:{color:"#008000",width:1,style:0},1:{color:"#FF0000",width:1,style:0}}}},filledAreasStyle:{fill_0:{color:"#000080",transparency:90,visible:!0}},inputs:{in_0:9,in_1:26,in_2:52,in_3:26}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"},{id:"plot_2",type:"line"},{id:"plot_3",type:"line"},{id:"plot_4",type:"line"},{id:"plot_5",palette:"palette_0",target:"fill_0",type:"colorer"}],styles:{ +plot_0:{title:"Conversion Line",histogramBase:0,joinPoints:!1,isHidden:!1},plot_1:{title:"Base Line",histogramBase:0,joinPoints:!1,isHidden:!1},plot_2:{title:"Lagging Span",histogramBase:0,joinPoints:!1,isHidden:!1},plot_3:{title:"Lead 1",histogramBase:0,joinPoints:!1,isHidden:!1},plot_4:{title:"Lead 2",histogramBase:0,joinPoints:!1,isHidden:!1}},description:"Ichimoku Cloud",shortDescription:"Ichimoku",is_price_study:!0,is_hidden_study:!1,id:"Ichimoku Cloud@tv-basicstudies-1",palettes:{palette_0:{colors:{0:{name:"Color 0"},1:{name:"Color 1"}},valToIndex:{0:0,1:1}}},filledAreas:[{id:"fill_0",objAId:"plot_3",objBId:"plot_4",type:"plot_plot",title:"Plots Background",isHidden:!1,palette:"palette_0"}],inputs:[{id:"in_0",name:"Conversion Line Periods",defval:9,type:"integer",min:1,max:1e12},{id:"in_1",name:"Base Line Periods",defval:26,type:"integer",min:1,max:1e12},{id:"in_2",name:"Lagging Span 2 Periods",defval:52,type:"integer",min:1,max:1e12},{id:"in_3",name:"Displacement",defval:26,type:"integer",min:1,max:1e12}],scriptIdPart:"",name:"Ichimoku Cloud"},constructor:function(){this.donchian=function(t){var e=this._context.new_var(o.Std.low(this._context)),i=this._context.new_var(o.Std.high(this._context));return o.Std.avg(o.Std.lowest(e,t,this._context),o.Std.highest(i,t,this._context))},this.f_1=function(){var t=this._input(0),e=this._input(1),i=this._input(2),n=this._input(3),r=this.donchian(t),s=this.donchian(e),a=o.Std.avg(r,s),l=this.donchian(i);return[r,s,o.Std.close(this._context),a,l,-n,n,n,o.Std.gt(a,l)?0:1]},this.main=function(t,e){this._context=t,this._input=e;var i=this.f_1();return[i[0],i[1],{value:i[2],offset:i[5]},{value:i[3],offset:i[6]},{value:i[4],offset:i[7]},i[8]]}}},{name:"Keltner Channels",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"},plot_2:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"}},precision:4,filledAreasStyle:{fill_0:{color:"#0000FF",transparency:90,visible:!0}},inputs:{in_0:!0,in_1:20,in_2:1}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"},{id:"plot_2",type:"line"}],styles:{plot_0:{title:"Upper",histogramBase:0,joinPoints:!1},plot_1:{title:"Middle",histogramBase:0,joinPoints:!1},plot_2:{title:"Lower",histogramBase:0,joinPoints:!1}},description:"Keltner Channels",shortDescription:"KC",is_price_study:!0,filledAreas:[{id:"fill_0",objAId:"plot_0",objBId:"plot_2",type:"plot_plot",title:"Plots Background"}],inputs:[{id:"in_0",name:"useTrueRange",defval:!0,type:"bool"},{id:"in_1",name:"length",defval:20,type:"integer",min:1,max:2e3},{id:"in_2",name:"mult",defval:1,type:"float",min:-1e12,max:1e12}],id:"Keltner Channels@tv-basicstudies-1",scriptIdPart:"",name:"Keltner Channels"},constructor:function(){this.f_0=function(t,e,i,o){return t?e:i-o},this.f_1=function(t,e,i){return t+e*i}, +this.f_2=function(t,e,i){return t-e*i},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_,f,m;return this._context=t,this._input=e,i=o.Std.close(this._context),n=this._input(0),r=this._input(1),s=this._input(2),a=this._context.new_var(i),l=o.Std.ema(a,r,this._context),c=this.f_0(n,o.Std.tr(this._context),o.Std.high(this._context),o.Std.low(this._context)),h=this._context.new_var(c),u=o.Std.ema(h,r,this._context),d=this.f_1(l,u,s),p=this.f_2(l,u,s),_=d,f=l,m=p,[_,f,m]}}},{name:"Klinger Oscillator",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#000080"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#008000"}},precision:4,inputs:{}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1},plot_1:{title:"Signal",histogramBase:0,joinPoints:!1}},description:"Klinger Oscillator",shortDescription:"Klinger Oscillator",is_price_study:!1,inputs:[],id:"Klinger Oscillator@tv-basicstudies-1",scriptIdPart:"",name:"Klinger Oscillator"},constructor:function(){this.f_0=function(t,e){return o.Std.ge(t,0)?e:-e},this.f_1=function(t,e){return t-e},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_,f;return this._context=t,this._input=e,i=o.Std.hlc3(this._context),n=this._context.new_var(i),r=o.Std.change(n),s=this.f_0(r,o.Std.volume(this._context)),a=this._context.new_var(s),l=o.Std.ema(a,34,this._context),c=this._context.new_var(s),h=o.Std.ema(c,55,this._context),u=this.f_1(l,h),d=this._context.new_var(u),p=o.Std.ema(d,13,this._context),_=u,f=p,[_,f]}}},{name:"Know Sure Thing",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#008000"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"}},precision:4,bands:[{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:0}],inputs:{in_0:10,in_1:15,in_2:20,in_3:30,in_4:10,in_5:10,in_6:10,in_7:15,in_8:9}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"}],styles:{plot_0:{title:"KST",histogramBase:0,joinPoints:!1},plot_1:{title:"Signal",histogramBase:0,joinPoints:!1}},description:"Know Sure Thing",shortDescription:"KST",is_price_study:!1,bands:[{id:"hline_0",name:"Zero"}],inputs:[{id:"in_0",name:"roclen1",defval:10,type:"integer",min:1,max:2e3},{id:"in_1",name:"roclen2",defval:15,type:"integer",min:1,max:2e3},{id:"in_2",name:"roclen3",defval:20,type:"integer",min:1,max:2e3},{id:"in_3",name:"roclen4",defval:30,type:"integer",min:1,max:2e3},{id:"in_4",name:"smalen1",defval:10,type:"integer",min:1,max:2e3},{id:"in_5",name:"smalen2",defval:10,type:"integer",min:1,max:2e3},{id:"in_6",name:"smalen3",defval:10,type:"integer",min:1,max:2e3},{id:"in_7",name:"smalen4",defval:15,type:"integer",min:1,max:2e3},{id:"in_8",name:"siglen",defval:9,type:"integer",min:1, +max:2e3}],id:"Know Sure Thing@tv-basicstudies-1",scriptIdPart:"",name:"Know Sure Thing"},constructor:function(){this.f_0=function(t,e,i,o){return t+2*e+3*i+4*o},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_,f,m,g,v,y,b,S,w,T,x,C,P,L,I,k,A,M,E,V,D,O,B,R,z,F,N,W;return this._context=t,this._input=e,i=this._input(0),n=this._input(1),r=this._input(2),s=this._input(3),a=this._input(4),l=this._input(5),c=this._input(6),h=this._input(7),u=this._input(8),d=o.Std.close(this._context),p=i,_=this._context.new_var(d),f=o.Std.roc(_,p),m=a,g=this._context.new_var(f),v=o.Std.sma(g,m,this._context),y=n,b=this._context.new_var(d),S=o.Std.roc(b,y),w=l,T=this._context.new_var(S),x=o.Std.sma(T,w,this._context),C=r,P=this._context.new_var(d),L=o.Std.roc(P,C),I=c,k=this._context.new_var(L),A=o.Std.sma(k,I,this._context),M=s,E=this._context.new_var(d),V=o.Std.roc(E,M),D=h,O=this._context.new_var(V),B=o.Std.sma(O,D,this._context),R=this.f_0(v,x,A,B),z=this._context.new_var(R),F=o.Std.sma(z,u,this._context),N=R,W=F,[N,W]}}},{name:"Least Squares Moving Average",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#000080"}},precision:4,inputs:{in_0:25,in_1:0}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Least Squares Moving Average",shortDescription:"LSMA",is_price_study:!0,inputs:[{id:"in_0",name:"Length",defval:25,type:"integer",min:1,max:1e12},{id:"in_1",name:"Offset",defval:0,type:"integer",min:-1e12,max:1e12}],id:"Least Squares Moving Average@tv-basicstudies-1",scriptIdPart:"",name:"Least Squares Moving Average"},constructor:function(){this.main=function(t,e){var i,n,r,s,a,l;return this._context=t,this._input=e,i=this._input(0),n=this._input(1),r=o.Std.close(this._context),s=this._context.new_var(r),a=o.Std.linreg(s,i,n),l=a,[l]}}},{name:"Linear Regression Curve",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#000080"}},precision:4,inputs:{in_0:9}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Linear Regression Curve",shortDescription:"LRC",is_price_study:!0,inputs:[{id:"in_0",name:"Length",defval:9,type:"integer",min:1,max:2e3}],id:"Linear Regression Curve@tv-basicstudies-1",scriptIdPart:"",name:"Linear Regression Curve"},constructor:function(){this.main=function(t,e){var i,n,r,s,a;return this._context=t,this._input=e,i=o.Std.close(this._context),n=this._input(0),r=this._context.new_var(i),s=o.Std.linreg(r,n,0),a=s,[a]}}},{name:"MA Cross",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#008000" +},plot_2:{linestyle:0,linewidth:4,plottype:3,trackPrice:!1,transparency:35,visible:!0,color:"#000080"}},precision:4,inputs:{in_0:9,in_1:26}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"},{id:"plot_2",type:"line"}],styles:{plot_0:{title:"Short",histogramBase:0,joinPoints:!1},plot_1:{title:"Long",histogramBase:0,joinPoints:!1},plot_2:{title:"Crosses",histogramBase:0,joinPoints:!1}},description:"MA Cross",shortDescription:"MA Cross",is_price_study:!0,inputs:[{id:"in_0",name:"Short",defval:9,type:"integer",min:1,max:2e3},{id:"in_1",name:"Long",defval:26,type:"integer",min:1,max:2e3}],id:"MA Cross@tv-basicstudies-1",scriptIdPart:"",name:"MA Cross"},constructor:function(){this.f_0=function(t,e){return t?e:o.Std.na()},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p;return this._context=t,this._input=e,i=this._input(0),n=this._input(1),r=o.Std.close(this._context),s=this._context.new_var(r),a=o.Std.sma(s,i,this._context),l=this._context.new_var(r),c=o.Std.sma(l,n,this._context),h=a,u=c,d=o.Std.cross(a,c,this._context),p=this.f_0(d,a),[h,u,p]}}},{name:"MA with EMA Cross",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#008000"},plot_2:{linestyle:0,linewidth:4,plottype:3,trackPrice:!1,transparency:35,visible:!0,color:"#000080"}},precision:4,inputs:{in_0:10,in_1:10}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"},{id:"plot_2",type:"line"}],styles:{plot_0:{title:"MA",histogramBase:0,joinPoints:!1},plot_1:{title:"EMA",histogramBase:0,joinPoints:!1},plot_2:{title:"Crosses",histogramBase:0,joinPoints:!1}},description:"MA with EMA Cross",shortDescription:"MA/EMA Cross",is_price_study:!0,inputs:[{id:"in_0",name:"Length MA",defval:10,type:"integer",min:1,max:2e3},{id:"in_1",name:"Length EMA",defval:10,type:"integer",min:1,max:2e3}],id:"MA with EMA Cross@tv-basicstudies-1",scriptIdPart:"",name:"MA with EMA Cross"},constructor:function(){this.f_0=function(t,e){return t?e:o.Std.na()},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p;return this._context=t,this._input=e,i=this._input(0),n=this._input(1),r=o.Std.close(this._context),s=this._context.new_var(r),a=o.Std.sma(s,i,this._context),l=this._context.new_var(r),c=o.Std.ema(l,n,this._context),h=a,u=c,d=o.Std.cross(a,c,this._context),p=this.f_0(d,a),[h,u,p]}}},{name:"Mass Index",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#000080"}},precision:4,inputs:{in_0:10}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Mass Index",shortDescription:"Mass Index",is_price_study:!1,inputs:[{id:"in_0",name:"length",defval:10,type:"integer",min:1,max:2e3}],id:"Mass Index@tv-basicstudies-1",scriptIdPart:"",name:"Mass Index"}, +constructor:function(){this.f_0=function(t,e){return t-e},this.f_1=function(t,e){return t/e},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d;return this._context=t,this._input=e,i=this._input(0),n=this.f_0(o.Std.high(this._context),o.Std.low(this._context)),r=this._context.new_var(n),s=o.Std.ema(r,9,this._context),a=this._context.new_var(s),l=o.Std.ema(a,9,this._context),c=this.f_1(s,l),h=this._context.new_var(c),u=o.Std.sum(h,i,this._context),d=u,[d]}}},{name:"McGinley Dynamic",metainfo:{_metainfoVersion:42,isTVScript:!1,isTVScriptStub:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#000080"}},precision:4,inputs:{in_0:14}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1,isHidden:!1}},description:"McGinley Dynamic",shortDescription:"McGinley Dynamic",is_price_study:!0,is_hidden_study:!1,id:"mcginley_dynamic@tv-basicstudies-1",inputs:[{id:"in_0",name:"length",defval:14,type:"integer",min:1,max:1e12}],scriptIdPart:"",name:"McGinley Dynamic"},constructor:function(){this.f_0=function(){var t,e=this._input(0),i=o.Std.close(this._context),n=this._context.new_var(i),r=o.Std.ema(n,e,this._context),s=this._context.new_var(),a=s.get(1)+(i-s.get(1))/(e*o.Std.pow(i/s.get(1),4));return s.set(o.Std.na(s.get(1))?r:a),t=s.get(0),[t]},this.main=function(t,e){return this._context=t,this._input=e,this.f_0()}}},{name:"Momentum",metainfo:{_metainfoVersion:30,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#808000"}},precision:4,inputs:{in_0:10,in_1:"close"}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Mom",histogramBase:0,joinPoints:!1,isHidden:!1}},description:"Momentum",shortDescription:"Mom",is_price_study:!1,inputs:[{id:"in_0",name:"Length",defval:10,type:"integer",min:1,max:2e3},{id:"in_1",name:"Source",defval:"close",type:"source",options:["open","high","low","close","hl2","hlc3","ohlc4"]}],id:"Momentum@tv-basicstudies-1",scriptIdPart:"",name:"Momentum"},constructor:function(){this.main=function(t,e){var i,n,r,s,a;return this._context=t,this._input=e,i=this._input(0),n=o.Std[this._input(1)](this._context),r=this._context.new_var(n),s=r.get(i),a=s?n-s:null,[a]}}},{name:"Money Flow",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#459915"}},precision:4,bands:[{color:"#c0c0c0",linestyle:2,linewidth:1,visible:!0,value:80},{color:"#c0c0c0",linestyle:2,linewidth:1,visible:!0,value:20}],filledAreasStyle:{fill_0:{color:"#9915ff",transparency:90,visible:!0}},inputs:{in_0:14}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Money Flow",shortDescription:"MFI",is_price_study:!1,bands:[{id:"hline_0",name:"UpperLimit"},{id:"hline_1",name:"LowerLimit"}],filledAreas:[{id:"fill_0",objAId:"hline_0",objBId:"hline_1", +type:"hline_hline",title:"Hlines Background"}],inputs:[{id:"in_0",name:"Length",defval:14,type:"integer",min:1,max:2e3}],id:"Money Flow@tv-basicstudies-1",scriptIdPart:"",name:"Money Flow"},constructor:function(){this.f_0=function(t,e,i){return t*(o.Std.le(e,0)?0:i)},this.f_1=function(t,e,i){return t*(o.Std.ge(e,0)?0:i)},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_;return this._context=t,this._input=e,i=this._input(0),n=o.Std.hlc3(this._context),r=this._context.new_var(n),s=o.Std.change(r),a=this.f_0(o.Std.volume(this._context),s,n),l=this._context.new_var(a),c=o.Std.sum(l,i,this._context),h=this.f_1(o.Std.volume(this._context),s,n),u=this._context.new_var(h),d=o.Std.sum(u,i,this._context),p=o.Std.rsi(c,d),_=p,[_]}}},{name:"Moving Average",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"}},precision:4,inputs:{in_0:9,in_1:"close",in_2:0}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Moving Average",shortDescription:"MA",is_price_study:!0,inputs:[{id:"in_0",name:"Length",defval:9,type:"integer",min:1,max:1e4},{id:"in_1",name:"Source",defval:"close",type:"source",options:["open","high","low","close","hl2","hlc3","ohlc4"]},{id:"in_2",name:"Offset",defval:0,type:"integer",min:-1e4,max:1e4}],id:"Moving Average@tv-basicstudies-1",scriptIdPart:"",name:"Moving Average"},constructor:function(){this.main=function(t,e){var i,n,r,s,a,l;return this._context=t,this._input=e,i=o.Std[this._input(1)](this._context),n=this._input(0),r=this._input(2),s=this._context.new_var(i),a=o.Std.sma(s,n,this._context),l=a,[{value:l,offset:r}]}}},{name:"Moving Average Channel",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#CC0000"}},precision:4,filledAreasStyle:{fill_0:{color:"#A2C4C9",transparency:90,visible:!0}},inputs:{in_0:20,in_1:20,in_2:0,in_3:0}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"}],styles:{plot_0:{title:"Upper",histogramBase:0,joinPoints:!1},plot_1:{title:"Lower",histogramBase:0,joinPoints:!1}},filledAreas:[{id:"fill_0",objAId:"plot_0",objBId:"plot_1",type:"plot_plot",title:"Plots Background"}],description:"Moving Average Channel",shortDescription:"MAC",is_price_study:!0,inputs:[{id:"in_0",name:"Upper Length",defval:20,type:"integer",min:1,max:1e4},{id:"in_1",name:"Lower Length",defval:20,type:"integer",min:1,max:1e4},{id:"in_2",name:"Upper Offset",defval:0,type:"integer",min:-1e4,max:1e4},{id:"in_3",name:"Lower Offset",defval:0,type:"integer",min:-1e4,max:1e4}],id:"Moving Average Channel@tv-basicstudies-1",scriptIdPart:"",name:"Moving Average Channel"},constructor:function(){this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d;return this._context=t,this._input=e, +i=o.Std.high(this._context),n=o.Std.low(this._context),r=this._input(0),s=this._input(1),a=this._input(2),l=this._input(3),c=this._context.new_var(i),h=this._context.new_var(n),u=o.Std.sma(c,r,this._context),d=o.Std.sma(h,s,this._context),[{value:u,offset:a},{value:d,offset:l}]}}},{name:"Moving Average Convergence/Divergence",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:1,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"},plot_2:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"}},precision:4,inputs:{in_0:12,in_1:26,in_3:"close",in_2:9}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"},{id:"plot_2",type:"line"}],styles:{plot_0:{title:"Histogram",histogramBase:0,joinPoints:!1},plot_1:{title:"MACD",histogramBase:0,joinPoints:!1},plot_2:{title:"Signal",histogramBase:0,joinPoints:!1}},description:"MACD",shortDescription:"MACD",is_price_study:!1,inputs:[{id:"in_0",name:"fastLength",defval:12,type:"integer",min:1,max:2e3},{id:"in_1",name:"slowLength",defval:26,type:"integer",min:1,max:2e3},{id:"in_3",name:"Source",defval:"close",type:"source",options:["open","high","low","close","hl2","hlc3","ohlc4"]},{id:"in_2",name:"signalLength",defval:9,type:"integer",min:1,max:50}],id:"Moving Average Convergence/Divergence@tv-basicstudies-1",scriptIdPart:"",name:"MACD"},constructor:function(){this.f_0=function(t,e){return t-e},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_,f,m,g;return this._context=t,this._input=e,i=o.Std[this._input(2)](this._context),n=this._input(0),r=this._input(1),s=this._input(3),a=this._context.new_var(i),l=o.Std.ema(a,n,this._context),c=this._context.new_var(i),h=o.Std.ema(c,r,this._context),u=this.f_0(l,h),d=this._context.new_var(u),p=o.Std.sma(d,s,this._context),_=this.f_0(u,p),f=_,m=u,g=p,[f,m,g]}}},{name:"Moving Average Exponential",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"}},precision:4,inputs:{in_0:9,in_1:"close",in_2:0}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Moving Average Exponential",shortDescription:"EMA",is_price_study:!0,inputs:[{id:"in_0",name:"Length",defval:9,type:"integer",min:1,max:1e4},{id:"in_1",name:"Source",defval:"close",type:"source",options:["open","high","low","close","hl2","hlc3","ohlc4"]},{id:"in_2",name:"Offset",defval:0,type:"integer",min:-1e4,max:1e4}],id:"Moving Average Exponential@tv-basicstudies-1",scriptIdPart:"",name:"Moving Average Exponential"},constructor:function(){this.main=function(t,e){var i,n,r,s,a,l;return this._context=t,this._input=e,i=o.Std[this._input(1)](this._context),n=this._input(0),r=this._input(2),s=this._context.new_var(i),a=o.Std.ema(s,n,this._context),l=a,[{value:l,offset:r}] +}}},{name:"Moving Average Weighted",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"}},precision:4,inputs:{in_0:9,in_1:"close",in_2:0}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Moving Average Weighted",shortDescription:"WMA",is_price_study:!0,inputs:[{id:"in_0",name:"Length",defval:9,type:"integer",min:1,max:2e3},{id:"in_1",name:"Source",defval:"close",type:"source",options:["open","high","low","close","hl2","hlc3","ohlc4"]},{id:"in_2",name:"Offset",defval:0,type:"integer",min:-1e4,max:1e4}],id:"Moving Average Weighted@tv-basicstudies-1",scriptIdPart:"",name:"Moving Average Weighted"},constructor:function(){this.main=function(t,e){var i,n,r,s,a,l;return this._context=t,this._input=e,i=o.Std[this._input(1)](this._context),n=this._input(0),r=this._input(2),s=this._context.new_var(i),a=o.Std.wma(s,n,this._context),l=a,[{value:l,offset:r}]}}},{name:"Net Volume",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"}},precision:4,inputs:{}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Net Volume",shortDescription:"Net Volume",is_price_study:!1,inputs:[],id:"Net Volume@tv-basicstudies-1",scriptIdPart:"",name:"Net Volume"},constructor:function(){this.f_0=function(t,e,i){return o.Std.gt(t,0)?e:o.Std.lt(i,0)?-e:0*e},this.main=function(t,e){var i,n,r,s,a;return this._context=t,this._input=e,i=o.Std.close(this._context),n=this._context.new_var(i),r=o.Std.change(n),s=this.f_0(r,o.Std.volume(this._context),r),a=s,[a]}}},{name:"On Balance Volume",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"}},precision:4,inputs:{}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"On Balance Volume",shortDescription:"OBV",is_price_study:!1,inputs:[],id:"On Balance Volume@tv-basicstudies-1",scriptIdPart:"",name:"On Balance Volume"},constructor:function(){this.f_0=function(t,e,i){return o.Std.gt(t,0)?e:o.Std.lt(i,0)?-e:0*e},this.main=function(t,e){var i,n,r,s,a,l;return this._context=t,this._input=e,i=o.Std.close(this._context),n=this._context.new_var(i),r=o.Std.change(n),s=this.f_0(r,o.Std.volume(this._context),r),a=o.Std.cum(s,this._context),l=a,[l]}}},{name:"Parabolic SAR",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:3,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"}},precision:4,inputs:{in_0:.02,in_1:.02,in_2:.2}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}}, +description:"Parabolic SAR",shortDescription:"SAR",is_price_study:!0,inputs:[{id:"in_0",name:"start",defval:.02,type:"float",min:-1e12,max:1e12},{id:"in_1",name:"increment",defval:.02,type:"float",min:-1e12,max:1e12},{id:"in_2",name:"maximum",defval:.2,type:"float",min:-1e12,max:1e12}],id:"Parabolic SAR@tv-basicstudies-1",scriptIdPart:"",name:"Parabolic SAR"},constructor:function(){this.main=function(t,e){var i,n,r,s,a;return this._context=t,this._input=e,i=this._input(0),n=this._input(1),r=this._input(2),s=o.Std.sar(i,n,r,this._context),a=s,[a]}}},{name:"Price Channel",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0080"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0080"},plot_2:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0496FF"}},precision:4,inputs:{in_0:20,in_1:0}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"},{id:"plot_2",type:"line"}],styles:{plot_0:{title:"Highprice Line",histogramBase:0,joinPoints:!1},plot_1:{title:"Lowprice Line",histogramBase:0,joinPoints:!1},plot_2:{title:"Centerprice Line",histogramBase:0,joinPoints:!1}},description:"Price Channel",shortDescription:"PC",is_price_study:!1,inputs:[{id:"in_0",name:"Length",defval:20,type:"integer",min:1,max:2e3},{id:"in_1",name:"Offset Length",defval:0,type:"integer",min:1,max:2e3}],id:"Price Channel@tv-basicstudies-1",scriptIdPart:"",name:"Price Channel"},constructor:function(){this.main=function(t,e){var i,n,r,s,a,l,c,h,u;return this._context=t,this._input=e,i=o.Std.high(this._context),n=this._context.new_var(i),r=o.Std.low(this._context),s=this._context.new_var(r),a=this._input(0),l=this._input(1),c=o.Std.highest(n,a,this._context),h=o.Std.lowest(s,a,this._context),u=o.Std.avg(c,h),[{value:c,offset:l},{value:h,offset:l},{value:u,offset:l}]}}},{name:"Price Oscillator",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"}},precision:4,inputs:{in_0:10,in_1:21}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Price Oscillator",shortDescription:"PPO",is_price_study:!1,inputs:[{id:"in_0",name:"shortlen",defval:10,type:"integer",min:1,max:2e3},{id:"in_1",name:"longlen",defval:21,type:"integer",min:1,max:2e3}],id:"Price Oscillator@tv-basicstudies-1",scriptIdPart:"",name:"Price Oscillator"},constructor:function(){this.f_0=function(t,e){return(t-e)/e*100},this.main=function(t,e){var i,n,r,s,a,l,c,h,u;return this._context=t,this._input=e,i=o.Std.close(this._context),n=this._input(0),r=this._input(1),s=this._context.new_var(i),a=o.Std.sma(s,n,this._context),l=this._context.new_var(i),c=o.Std.sma(l,r,this._context),h=this.f_0(a,c),u=h,[u]}}},{name:"Price Volume Trend",metainfo:{_metainfoVersion:42,isTVScript:!1, +isTVScriptStub:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"}},precision:4,inputs:{}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"PVT",histogramBase:0,joinPoints:!1,isHidden:!1}},description:"Price Volume Trend",shortDescription:"PVT",is_price_study:!1,is_hidden_study:!1,id:"price_volume_trend@tv-basicstudies-1",inputs:[],scriptIdPart:"",name:"Price Volume Trend"},constructor:function(){this.f_0=function(){var t=this._context.new_var(o.Std.close(this._context));return[o.Std.cum(o.Std.change(t)/t.get(1)*o.Std.volume(this._context),this._context)]},this.main=function(t,e){return this._context=t,this._input=e,[this.f_0()[0]]}}},{name:"Rate Of Change",metainfo:{_metainfoVersion:41,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"}},precision:4,bands:[{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:0}],inputs:{in_0:9}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"ROC",histogramBase:0,joinPoints:!1,isHidden:!1}},description:"Rate Of Change",shortDescription:"ROC",is_price_study:!1,bands:[{id:"hline_0",name:"Zero Line",isHidden:!1}],inputs:[{id:"in_0",name:"length",defval:9,type:"integer",min:1,max:1e12}],id:"rate_of_change@tv-basicstudies-1",scriptIdPart:"",name:"Rate Of Change"},constructor:function(){this.main=function(t,e){var i,n,r;return this._context=t,this._input=e,i=this._context.new_var(o.Std.close(this._context)),n=this._input(0),r=100*(i.get(0)-i.get(n))/i.get(n),[r]}}},{name:"Relative Strength Index",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#800080"}},precision:4,bands:[{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:70},{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:30}],filledAreasStyle:{fill_0:{color:"#800080",transparency:90,visible:!0}},inputs:{in_0:14}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Relative Strength Index",shortDescription:"RSI",is_price_study:!1,bands:[{id:"hline_0",name:"UpperLimit"},{id:"hline_1",name:"LowerLimit"}],filledAreas:[{id:"fill_0",objAId:"hline_0",objBId:"hline_1",type:"hline_hline",title:"Hlines Background"}],inputs:[{id:"in_0",name:"Length",defval:14,type:"integer",min:1,max:2e3}],id:"Relative Strength Index@tv-basicstudies-1",scriptIdPart:"",name:"Relative Strength Index"},constructor:function(){this.f_0=function(t){return o.Std.max(t,0)},this.f_1=function(t){return-o.Std.min(t,0)},this.f_2=function(t,e){return o.Std.eq(t,0)?100:o.Std.eq(e,0)?0:100-100/(1+e/t)},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_;return this._context=t,this._input=e,i=o.Std.close(this._context),n=this._input(0),r=this._context.new_var(i),s=o.Std.change(r),a=this.f_0(s),l=this._context.new_var(a),c=o.Std.rma(l,n,this._context), +h=this.f_1(s),u=this._context.new_var(h),d=o.Std.rma(u,n,this._context),p=this.f_2(d,c),_=p,[_]}}},{name:"Relative Vigor Index",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#008000"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"}},precision:4,inputs:{in_0:10}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"}],styles:{plot_0:{title:"RVGI",histogramBase:0,joinPoints:!1},plot_1:{title:"Signal",histogramBase:0,joinPoints:!1}},description:"Relative Vigor Index",shortDescription:"RVGI",is_price_study:!1,inputs:[{id:"in_0",name:"Length",defval:10,type:"integer",min:1,max:2e3}],id:"Relative Vigor Index@tv-basicstudies-1",scriptIdPart:"",name:"Relative Vigor Index"},constructor:function(){this.f_0=function(t,e){return t-e},this.f_1=function(t,e){return t/e},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_,f,m,g,v;return this._context=t,this._input=e,i=this._input(0),n=this.f_0(o.Std.close(this._context),o.Std.open(this._context)),r=this._context.new_var(n),s=o.Std.swma(r,this._context),a=this._context.new_var(s),l=o.Std.sum(a,i,this._context),c=this.f_0(o.Std.high(this._context),o.Std.low(this._context)),h=this._context.new_var(c),u=o.Std.swma(h,this._context),d=this._context.new_var(u),p=o.Std.sum(d,i,this._context),_=this.f_1(l,p),f=this._context.new_var(_),m=o.Std.swma(f,this._context),g=_,v=m,[g,v]}}},{name:"Relative Volatility Index",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#000080"}},precision:4,bands:[{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:80},{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:20}],filledAreasStyle:{fill_0:{color:"#808000",transparency:90,visible:!0}},inputs:{in_0:10}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Relative Volatility Index",shortDescription:"RVI",is_price_study:!1,bands:[{id:"hline_0",name:"UpperLimit"},{id:"hline_1",name:"LowerLimit"}],filledAreas:[{id:"fill_0",objAId:"hline_0",objBId:"hline_1",type:"hline_hline",title:"Hlines Background"}],inputs:[{id:"in_0",name:"length",defval:10,type:"integer",min:1,max:2e3}],id:"Relative Volatility Index@tv-basicstudies-1",scriptIdPart:"",name:"Relative Volatility Index"},constructor:function(){this.f_0=function(t,e){return o.Std.le(t,0)?0:e},this.f_1=function(t,e){return o.Std.gt(t,0)?0:e},this.f_2=function(t,e){return t/(t+e)*100},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_,f,m;return this._context=t,this._input=e,i=this._input(0),n=o.Std.close(this._context),r=this._context.new_var(n),s=o.Std.stdev(r,i,this._context),a=this._context.new_var(n),l=o.Std.change(a),c=this.f_0(l,s),h=this._context.new_var(c),u=o.Std.ema(h,14,this._context),d=this.f_1(l,s),p=this._context.new_var(d), +_=o.Std.ema(p,14,this._context),f=this.f_2(u,_),m=f,[m]}}},{name:"SMI Ergodic Indicator/Oscillator",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF7F00"},plot_2:{linestyle:0,linewidth:1,plottype:1,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"}},precision:4,inputs:{in_0:5,in_1:20,in_2:5}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"},{id:"plot_2",type:"line"}],styles:{plot_0:{title:"Indicator",histogramBase:0,joinPoints:!1},plot_1:{title:"Signal",histogramBase:0,joinPoints:!1},plot_2:{title:"Oscillator",histogramBase:0,joinPoints:!1}},description:"SMI Ergodic Indicator/Oscillator",shortDescription:"SMIIO",is_price_study:!1,inputs:[{id:"in_0",name:"shortlen",defval:5,type:"integer",min:1,max:2e3},{id:"in_1",name:"longlen",defval:20,type:"integer",min:1,max:2e3},{id:"in_2",name:"siglen",defval:5,type:"integer",min:1,max:2e3}],id:"SMI Ergodic Indicator/Oscillator@tv-basicstudies-1",scriptIdPart:"",name:"SMI Ergodic Indicator/Oscillator"},constructor:function(){this.f_0=function(t,e){return t-e},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_;return this._context=t,this._input=e,i=this._input(0),n=this._input(1),r=this._input(2),s=o.Std.close(this._context),a=this._context.new_var(s),l=o.Std.tsi(a,i,n,this._context),c=this._context.new_var(l),h=o.Std.ema(c,r,this._context),u=this.f_0(l,h),d=l,p=h,_=u,[d,p,_]}}},{name:"Smoothed Moving Average",metainfo:{_metainfoVersion:41,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"}},precision:4,inputs:{in_0:7,in_1:"close"}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1,isHidden:!1}},description:"Smoothed Moving Average",shortDescription:"SMMA",is_price_study:!0,inputs:[{id:"in_0",name:"Length",defval:7,type:"integer",min:1,max:1e12},{id:"in_1",name:"Source",defval:"close",type:"source",options:["open","high","low","close","hl2","hlc3","ohlc4"]}],id:"smoothed_moving_average@tv-basicstudies-1",scriptIdPart:"",name:"Smoothed Moving Average"},constructor:function(){this.f_0=function(){var t,e=this._input(0),i=o.Std[this._input(1)](this._context),n=this._context.new_var(i),r=o.Std.sma(n,e,this._context),s=this._context.new_var(),a=(s.get(1)*(e-1)+i)/e;return s.set(o.Std.na(s.get(1))?r:a),t=s.get(0),[t]},this.main=function(t,e){return this._context=t,this._input=e,this.f_0()}}},{name:"Stochastic",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"}},precision:4,bands:[{color:"#808080",linestyle:2,linewidth:1, +visible:!0,value:80},{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:20}],filledAreasStyle:{fill_0:{color:"#800080",transparency:75,visible:!0}},inputs:{in_0:14,in_1:1,in_2:3}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"}],styles:{plot_0:{title:"%K",histogramBase:0,joinPoints:!1},plot_1:{title:"%D",histogramBase:0,joinPoints:!1}},description:"Stochastic",shortDescription:"Stoch",is_price_study:!1,bands:[{id:"hline_0",name:"UpperLimit"},{id:"hline_1",name:"LowerLimit"}],filledAreas:[{id:"fill_0",objAId:"hline_0",objBId:"hline_1",type:"hline_hline",title:"Hlines Background"}],inputs:[{id:"in_0",name:"length",defval:14,type:"integer",min:1,max:1e4},{id:"in_1",name:"smoothK",defval:1,type:"integer",min:1,max:1e4},{id:"in_2",name:"smoothD",defval:3,type:"integer",min:1,max:1e4}],id:"Stochastic@tv-basicstudies-1",scriptIdPart:"",name:"Stochastic"},constructor:function(){this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_,f,m,g,v;return this._context=t,this._input=e,i=this._input(0),n=this._input(1),r=this._input(2),s=o.Std.close(this._context),a=o.Std.high(this._context),l=o.Std.low(this._context),c=this._context.new_var(s),h=this._context.new_var(a),u=this._context.new_var(l),d=o.Std.stoch(c,h,u,i,this._context),p=this._context.new_var(d),_=o.Std.sma(p,n,this._context),f=this._context.new_var(_),m=o.Std.sma(f,r,this._context),g=_,v=m,[g,v]}}},{name:"Stochastic RSI",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"}},precision:4,bands:[{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:80},{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:20}],filledAreasStyle:{fill_0:{color:"#800080",transparency:80,visible:!0}},inputs:{in_0:14,in_1:14,in_2:3,in_3:3}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"}],styles:{plot_0:{title:"%K",histogramBase:0,joinPoints:!1},plot_1:{title:"%D",histogramBase:0,joinPoints:!1}},description:"Stochastic RSI",shortDescription:"Stoch RSI",is_price_study:!1,bands:[{id:"hline_0",name:"UpperLimit"},{id:"hline_1",name:"LowerLimit"}],filledAreas:[{id:"fill_0",objAId:"hline_0",objBId:"hline_1",type:"hline_hline",title:"Hlines Background"}],inputs:[{id:"in_0",name:"lengthRSI",defval:14,type:"integer",min:1,max:1e4},{id:"in_1",name:"lengthStoch",defval:14,type:"integer",min:1,max:1e4},{id:"in_2",name:"smoothK",defval:3,type:"integer",min:1,max:1e4},{id:"in_3",name:"smoothD",defval:3,type:"integer",min:1,max:1e4}],id:"Stochastic RSI@tv-basicstudies-1",scriptIdPart:"",name:"Stochastic RSI"},constructor:function(){this.f_1=function(t,e,i){var n=i.new_var(o.Std.max(o.Std.change(t),0));return o.Std.rma(n,e,i)},this.f_2=function(t,e,i){var n=i.new_var(-o.Std.min(o.Std.change(t),0));return o.Std.rma(n,e,i)},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_,f,m,g,v,y;return this._context=t,this._input=e, +i=o.Std.close(this._context),n=this._input(0),r=this._input(1),s=this._input(2),a=this._input(3),l=this._context.new_var(i),c=o.Std.rsi(this.f_1(l,n,this._context),this.f_2(l,n,this._context)),h=this._context.new_var(c),u=this._context.new_var(c),d=this._context.new_var(c),p=o.Std.stoch(h,u,d,r,this._context),_=this._context.new_var(p),f=o.Std.sma(_,s,this._context),m=this._context.new_var(f),g=o.Std.sma(m,a,this._context),v=f,y=g,[v,y]}}},{name:"TRIX",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#800000"}},precision:4,bands:[{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:0}],inputs:{in_0:18}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"TRIX",histogramBase:0,joinPoints:!1}},description:"TRIX",shortDescription:"TRIX",is_price_study:!1,bands:[{id:"hline_0",name:"Zero"}],inputs:[{id:"in_0",name:"length",defval:18,type:"integer",min:1,max:2e3}],id:"TRIX@tv-basicstudies-1",scriptIdPart:"",name:"TRIX"},constructor:function(){this.f_0=function(t){return o.Std.log(t)},this.f_1=function(t){return 1e4*t},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_;return this._context=t,this._input=e,i=this._input(0),n=this.f_0(o.Std.close(this._context)),r=this._context.new_var(n),s=o.Std.ema(r,i,this._context),a=this._context.new_var(s),l=o.Std.ema(a,i,this._context),c=this._context.new_var(l),h=o.Std.ema(c,i,this._context),u=this._context.new_var(h),d=o.Std.change(u),p=this.f_1(d),_=p,[_]}}},{name:"Triple EMA",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#008000"}},precision:4,inputs:{in_0:9}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Triple EMA",shortDescription:"TEMA",is_price_study:!0,inputs:[{id:"in_0",name:"length",defval:9,type:"integer",min:1,max:1e4}],id:"Triple EMA@tv-basicstudies-1",scriptIdPart:"",name:"Triple EMA"},constructor:function(){this.f_0=function(t,e,i){return 3*(t-e)+i},this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d;return this._context=t,this._input=e,i=this._input(0),n=o.Std.close(this._context),r=this._context.new_var(n),s=o.Std.ema(r,i,this._context),a=this._context.new_var(s),l=o.Std.ema(a,i,this._context),c=this._context.new_var(l),h=o.Std.ema(c,i,this._context),u=this.f_0(s,l,h),d=u,[d]}}},{name:"True Strength Indicator",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#000080"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"}},precision:4,bands:[{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:0}],inputs:{in_0:25,in_1:13,in_2:13}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"}],styles:{plot_0:{title:"Plot", +histogramBase:0,joinPoints:!1},plot_1:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"True Strength Indicator",shortDescription:"True Strength Indicator",is_price_study:!1,bands:[{id:"hline_0",name:"Zero"}],inputs:[{id:"in_0",name:"long",defval:25,type:"integer",min:1,max:4999},{id:"in_1",name:"short",defval:13,type:"integer",min:1,max:4999},{id:"in_2",name:"siglen",defval:13,type:"integer",min:1,max:4999}],id:"True Strength Indicator@tv-basicstudies-1",scriptIdPart:"",name:"True Strength Indicator"},constructor:function(){this.main=function(t,e){var i,n,r,s,a,l,c,h;return this._context=t,this._input=e,i=this._input(0),n=this._input(1),r=this._input(2),s=o.Std.close(this._context),a=this._context.new_var(s),l=o.Std.tsi(a,n,i,this._context),c=l,h=this._context.new_var(c),[c,o.Std.ema(h,r,this._context)]}}},{name:"Ultimate Oscillator",metainfo:{_metainfoVersion:41,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"}},precision:4,inputs:{in_0:7,in_1:14,in_2:28}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"UO",histogramBase:0,joinPoints:!1,isHidden:!1}},description:"Ultimate Oscillator",shortDescription:"UO",is_price_study:!1,inputs:[{id:"in_0",name:"length7",defval:7,type:"integer",min:1,max:1e12},{id:"in_1",name:"length14",defval:14,type:"integer",min:1,max:1e12},{id:"in_2",name:"length28",defval:28,type:"integer",min:1,max:1e12}],id:"ultimate_oscillator@tv-basicstudies-1",scriptIdPart:"",name:"Ultimate Oscillator"},constructor:function(){this.f_0=function(t,e,i){var n=this._context.new_var(t),r=this._context.new_var(e);return[o.Std.sum(n,i,this._context)/o.Std.sum(r,i,this._context)]},this.f_1=function(){var t=this._input(0),e=this._input(1),i=this._input(2),n=this._context.new_var(o.Std.close(this._context)),r=o.Std.max(o.Std.high(this._context),n.get(1)),s=this._context.new_var(o.Std.close(this._context)),a=o.Std.min(o.Std.low(this._context),s.get(1)),l=o.Std.close(this._context)-a,c=r-a,h=this.f_0(l,c,t),u=this.f_0(l,c,e),d=this.f_0(l,c,i);return[100*(4*h[0]+2*u[0]+d[0])/7]},this.main=function(t,e){return this._context=t,this._input=e,this.f_1()}}},{name:"VWAP",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:0,transparency:0,visible:!0,color:"#3A6CA8"}},precision:4},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"VWAP",histogramBase:0,joinPoints:!1,isHidden:!1}},description:"VWAP",shortDescription:"VWAP",is_price_study:!0,inputs:[],id:"VWAP@tv-basicstudies-1",scriptIdPart:"",name:"VWAP"},constructor:function(){this.f_1=function(t){t.hist=null,t.add_hist()},this.init=function(t,e){this._isNewSession=o.Std.createNewSessionCheck(t)},this.main=function(t,e){var i,n,r,s;return this._context=t,this._input=e,i=t.new_var(),n=t.new_var(),this._context.symbol.time&&(r=this._context.symbol.time,this._isNewSession(r)&&(this.f_1(i),this.f_1(n))), +i.set(o.Std.nz(i.get(1))+o.Std.hlc3(this._context)*o.Std.volume(this._context)),n.set(o.Std.nz(n.get(1))+o.Std.volume(this._context)),s=i.get(0)/n.get(0),[s]}}},{name:"VWMA",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"}},precision:4,inputs:{in_0:20}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"VWMA",shortDescription:"VWMA",is_price_study:!0,inputs:[{id:"in_0",name:"len",defval:20,type:"integer",min:1,max:1e4}],id:"VWMA@tv-basicstudies-1",scriptIdPart:"",name:"VWMA"},constructor:function(){this.main=function(t,e){var i,n,r,s,a;return this._context=t,this._input=e,i=o.Std.close(this._context),n=this._input(0),r=this._context.new_var(i),s=o.Std.vwma(r,n,this._context),a=s,[a]}}},{name:"Volume Oscillator",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#000080"}},precision:4,bands:[{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:0}],inputs:{in_0:5,in_1:10}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Volume Oscillator",shortDescription:"Volume Osc",is_price_study:!1,bands:[{id:"hline_0",name:"Zero"}],inputs:[{id:"in_0",name:"shortlen",defval:5,type:"integer",min:1,max:4999},{id:"in_1",name:"longlen",defval:10,type:"integer",min:1,max:4999}],id:"Volume Oscillator@tv-basicstudies-1",scriptIdPart:"",name:"Volume Oscillator"},constructor:function(){this.f_0=function(t,e){return 100*(t-e)/e},this.main=function(t,e){var i,n,r,s,a,l,c,h,u;return this._context=t,this._input=e,i=this._input(0),n=this._input(1),r=o.Std.volume(this._context),s=this._context.new_var(r),a=o.Std.ema(s,i,this._context),l=this._context.new_var(r),c=o.Std.ema(l,n,this._context),h=this.f_0(a,c),u=h,[u]}}},{name:"Vortex Indicator",metainfo:{_metainfoVersion:42,isTVScript:!1,isTVScriptStub:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"}},precision:4,inputs:{in_0:14}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"}],styles:{plot_0:{title:"VI +",histogramBase:0,joinPoints:!1,isHidden:!1},plot_1:{title:"VI -",histogramBase:0,joinPoints:!1,isHidden:!1}},description:"Vortex Indicator",shortDescription:"VI",is_price_study:!1,is_hidden_study:!1,id:"vortex_indicator@tv-basicstudies-1",inputs:[{id:"in_0",name:"Period",defval:14,type:"integer",min:2,max:1e12}],scriptIdPart:"",name:"Vortex Indicator"},constructor:function(){this.f_0=function(){ +var t=this._input(0),e=this._context.new_var(o.Std.low(this._context)),i=this._context.new_var(o.Std.abs(o.Std.high(this._context)-e.get(1))),n=o.Std.sum(i,t,this._context),r=this._context.new_var(o.Std.high(this._context)),s=this._context.new_var(o.Std.abs(o.Std.low(this._context)-r.get(1))),a=o.Std.sum(s,t,this._context),l=this._context.new_var(o.Std.atr(1,this._context)),c=o.Std.sum(l,t,this._context);return[n/c,a/c]},this.main=function(t,e){return this._context=t,this._input=e,this.f_0()}}},{name:"Willams %R",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#000080"}},precision:4,bands:[{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:-20},{color:"#808080",linestyle:2,linewidth:1,visible:!0,value:-80}],filledAreasStyle:{fill_0:{color:"#000080",transparency:90,visible:!0}},inputs:{in_0:14}},plots:[{id:"plot_0",type:"line"}],styles:{plot_0:{title:"Plot",histogramBase:0,joinPoints:!1}},description:"Williams %R",shortDescription:"%R",is_price_study:!1,bands:[{id:"hline_0",name:"UpperLimit"},{id:"hline_1",name:"LowerLimit"}],filledAreas:[{id:"fill_0",objAId:"hline_0",objBId:"hline_1",type:"hline_hline",title:"Hlines Background"}],inputs:[{id:"in_0",name:"length",defval:14,type:"integer",min:1,max:2e3}],id:"Willams %R@tv-basicstudies-1",scriptIdPart:"",name:"Willams %R"},constructor:function(){this.f_0=function(t,e,i){return 100*(t-e)/(e-i)},this.main=function(t,e){var i,n,r,s,a,l,c,h,u;return this._context=t,this._input=e,i=this._input(0),n=o.Std.high(this._context),r=this._context.new_var(n),s=o.Std.highest(r,i,this._context),a=o.Std.low(this._context),l=this._context.new_var(a),c=o.Std.lowest(l,i,this._context),h=this.f_0(o.Std.close(this._context),s,c),u=h,[u]}}},{name:"Williams Alligator",metainfo:{_metainfoVersion:27,isTVScript:!1,isTVScriptStub:!1,is_hidden_study:!1,defaults:{styles:{plot_0:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#0000FF"},plot_1:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#FF0000"},plot_2:{linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:35,visible:!0,color:"#008000"}},precision:4,inputs:{in_0:21,in_1:13,in_2:8}},plots:[{id:"plot_0",type:"line"},{id:"plot_1",type:"line"},{id:"plot_2",type:"line"}],styles:{plot_0:{title:"Jaw",histogramBase:0,joinPoints:!1},plot_1:{title:"Teeth",histogramBase:0,joinPoints:!1},plot_2:{title:"Lips",histogramBase:0,joinPoints:!1}},description:"Williams Alligator",shortDescription:"Alligator",is_price_study:!0,inputs:[{id:"in_0",name:"jawLength",defval:21,type:"integer",min:1,max:2e3},{id:"in_1",name:"teethLength",defval:13,type:"integer",min:1,max:2e3},{id:"in_2",name:"lipsLength",defval:8,type:"integer",min:1,max:2e3}],id:"Williams Alligator@tv-basicstudies-1",scriptIdPart:"",name:"Williams Alligator"},constructor:function(){this.main=function(t,e){var i,n,r,s,a,l,c,h,u,d,p,_,f;return this._context=t,this._input=e, +i=this._input(0),n=this._input(1),r=this._input(2),s=o.Std.hl2(this._context),a=this._context.new_var(s),l=o.Std.ema(a,i,this._context),c=this._context.new_var(s),h=o.Std.ema(c,n,this._context),u=this._context.new_var(s),d=o.Std.ema(u,r,this._context),p=l,_=h,f=d,[{value:p,offset:8},{value:_,offset:5},{value:f,offset:3}]}}},{name:"Williams Fractals",metainfo:{_metainfoVersion:42,isTVScript:!1,isTVScriptStub:!1,defaults:{styles:{plot_0:{plottype:"shape_triangle_down",visible:!0,location:"BelowBar",transparency:0,color:"#800000"},plot_1:{plottype:"shape_triangle_up",visible:!0,location:"AboveBar",transparency:0,color:"#808000"}},precision:4,inputs:{in_0:2}},plots:[{id:"plot_0",type:"shapes"},{id:"plot_1",type:"shapes"}],styles:{plot_0:{title:"Shapes",isHidden:!1},plot_1:{title:"Shapes",isHidden:!1}},description:"Williams Fractal",shortDescription:"Fractals",is_price_study:!0,is_hidden_study:!1,id:"Williams Fractals@tv-basicstudies-1",inputs:[{id:"in_0",name:"Periods",defval:2,type:"integer",min:2,max:1e12}],scriptIdPart:"",name:"Williams Fractals",isCustomIndicator:!0},constructor:function(){this.f_0=function(){var t=this._input(0),e=this._context.new_var(o.Std.high(this._context)),i=o.Std.or(o.Std.and(o.Std.and(o.Std.lt(e.get(t+2),e.get(t)),o.Std.lt(e.get(t+1),e.get(t))),o.Std.and(o.Std.lt(e.get(t-1),e.get(t)),o.Std.lt(e.get(t-2),e.get(t)))),o.Std.or(o.Std.or(o.Std.and(o.Std.lt(e.get(t+3),e.get(t)),o.Std.and(o.Std.and(o.Std.lt(e.get(t+2),e.get(t)),o.Std.eq(e.get(t+1),e.get(t))),o.Std.and(o.Std.lt(e.get(t-1),e.get(t)),o.Std.lt(e.get(t-2),e.get(t))))),o.Std.and(o.Std.and(o.Std.lt(e.get(t+4),e.get(t)),o.Std.lt(e.get(t+3),e.get(t))),o.Std.and(o.Std.and(o.Std.eq(e.get(t+2),e.get(t)),o.Std.le(e.get(t+1),e.get(t))),o.Std.and(o.Std.lt(e.get(t-1),e.get(t)),o.Std.lt(e.get(t-2),e.get(t)))))),o.Std.or(o.Std.and(o.Std.and(o.Std.lt(e.get(t+5),e.get(t)),o.Std.and(o.Std.lt(e.get(t+4),e.get(t)),o.Std.eq(e.get(t+3),e.get(t)))),o.Std.and(o.Std.and(o.Std.eq(e.get(t+2),e.get(t)),o.Std.le(e.get(t+1),e.get(t))),o.Std.and(o.Std.lt(e.get(t-1),e.get(t)),o.Std.lt(e.get(t-2),e.get(t))))),o.Std.and(o.Std.and(o.Std.and(o.Std.lt(e.get(t+6),e.get(t)),o.Std.lt(e.get(t+5),e.get(t))),o.Std.and(o.Std.eq(e.get(t+4),e.get(t)),o.Std.le(e.get(t+3),e.get(t)))),o.Std.and(o.Std.and(o.Std.eq(e.get(t+2),e.get(t)),o.Std.le(e.get(t+1),e.get(t))),o.Std.and(o.Std.lt(e.get(t-1),e.get(t)),o.Std.lt(e.get(t-2),e.get(t)))))))),n=this._context.new_var(o.Std.low(this._context)) +;return[o.Std.or(o.Std.and(o.Std.and(o.Std.gt(n.get(t+2),n.get(t)),o.Std.gt(n.get(t+1),n.get(t))),o.Std.and(o.Std.gt(n.get(t-1),n.get(t)),o.Std.gt(n.get(t-2),n.get(t)))),o.Std.or(o.Std.or(o.Std.and(o.Std.gt(n.get(t+3),n.get(t)),o.Std.and(o.Std.and(o.Std.gt(n.get(t+2),n.get(t)),o.Std.eq(n.get(t+1),n.get(t))),o.Std.and(o.Std.gt(n.get(t-1),n.get(t)),o.Std.gt(n.get(t-2),n.get(t))))),o.Std.and(o.Std.and(o.Std.gt(n.get(t+4),n.get(t)),o.Std.gt(n.get(t+3),n.get(t))),o.Std.and(o.Std.and(o.Std.eq(n.get(t+2),n.get(t)),o.Std.ge(n.get(t+1),n.get(t))),o.Std.and(o.Std.gt(n.get(t-1),n.get(t)),o.Std.gt(n.get(t-2),n.get(t)))))),o.Std.or(o.Std.and(o.Std.and(o.Std.gt(n.get(t+5),n.get(t)),o.Std.and(o.Std.gt(n.get(t+4),n.get(t)),o.Std.eq(n.get(t+3),n.get(t)))),o.Std.and(o.Std.and(o.Std.eq(n.get(t+2),n.get(t)),o.Std.ge(n.get(t+1),n.get(t))),o.Std.and(o.Std.gt(n.get(t-1),n.get(t)),o.Std.gt(n.get(t-2),n.get(t))))),o.Std.and(o.Std.and(o.Std.and(o.Std.gt(n.get(t+6),n.get(t)),o.Std.gt(n.get(t+5),n.get(t))),o.Std.and(o.Std.eq(n.get(t+4),n.get(t)),o.Std.ge(n.get(t+3),n.get(t)))),o.Std.and(o.Std.and(o.Std.eq(n.get(t+2),n.get(t)),o.Std.ge(n.get(t+1),n.get(t))),o.Std.and(o.Std.gt(n.get(t-1),n.get(t)),o.Std.gt(n.get(t-2),n.get(t)))))))),i]},this.main=function(t,e){this._context=t,this._input=e;var i=this.f_0();return[{value:i[0],offset:-2},{value:i[1],offset:-2}]}}}]},function(t,e,i){"use strict";function o(t){this._options=t||{},this._setInput(),this._caption=$('').html(" "),this._helpTooltipTrigger=$('').text("?").attr("title",$.t("Type the interval number for munute charts (i.e. 5 if it is going to be a five minute chart). Or number plus letter for H (Hourly), D (Daily), W (Weekly), M (Monthly) intervals (i.e. D or 2H)")),this._dialogTitle=$.t("Change Interval")}var n=i(97),r=i(104);o.prototype._setInput=function(){this._input=$(''),this._input.on("keypress",this._handleInput.bind(this)).on("input",function(){this._validate(),this._updateCaption()}.bind(this)).on("blur",function(){setTimeout(this._submit.bind(this),0)}.bind(this))},o.prototype._validate=function(){var t=this._input.val();this._parsed=r.parseIntervalValue(t),this._valid=!this._parsed.error,this._supported=!this._parsed.error&&r.intervalIsSupported(t),!this._supported||this._parsed.unit&&"H"!==this._parsed.unit||this._parsed.qty*("H"===this._parsed.unit?60:1)>1440&&(this._supported=!1)},o.prototype._updateCaption=function(){var t,e,i;this._valid&&this._supported?(e=this._parsed.qty||1,i=this._parsed.unit?{H:"hour",D:"day",W:"week",M:"month",S:"second"}[this._parsed.unit]:"minute",t=e+" "+$.t(i,{count:e}),this._input.add(this._caption).removeClass("error")):(t=this._parsed.error?" ":$.t("Not applicable"),this._input.add(this._caption).addClass("error")),this._caption.html(t)},o.prototype._handleInput=function(t){if(13===t.which)return void this._submit() +;t.ctrlKey||t.metaKey||!t.charCode||!t.which||t.which<=32||r.isIntervalChar(String.fromCharCode(t.charCode))||t.preventDefault()},o.prototype._submit=function(){var t,e;TVDialogs.isOpen(this._dialogTitle)&&(this._valid&&this._supported&&(t=r.sanitizeIntervalValue(this._input.val()),e=n.interval.value(),t&&e!==t&&"function"==typeof this._options.callback&&this._options.callback(t)),TVDialogs.destroy(this._dialogTitle))},o.prototype._setInitialValue=function(t){var e,i;t=t||this._options.initialValue,e="",i=!1,t&&","!==t?e=r.sanitizeIntervalValue(t)||"":(t=n.interval.value(),e=t,i=!0),this._input.val(e),i&&this._input.select()},o.prototype.isValid=function(){return!!this._valid},o.prototype.show=function(t){var e=TVDialogs.createDialog(this._dialogTitle,{hideCloseCross:!0,addClass:"change-interval-dialog"}),i=e.find("._tv-dialog-content");return e.css("min-width",0),i.css("min-width",0).mousedown(function(t){this._input.is(t.target)||t.preventDefault()}.bind(this)).append(this._input.add(this._caption).add(this._helpTooltipTrigger)),TVDialogs.applyHandlers(e),TVDialogs.positionDialog(e),this._setInitialValue(t),this._validate(),this._updateCaption(),e},t.exports=o},function(t,e){"use strict";var i=function(){function t(t){switch(t){case"c67":case"m67":case"c45":return"copy";case"c86":case"m86":case"s45":return"paste";case"c88":case"m88":case"s46":return"cut"}}function e(t){var e=[];return t.shiftKey&&e.push("s"),t.ctrlKey&&e.push("c"),t.metaKey&&e.push("m"),t.altKey&&e.push("a"),e.push(t.keyCode),e.join("")}function i(t){var e=$.Event(u+":"+t);return $(window).trigger(e,{AppClipboard:_}),e}function o(o){var n,r,s;if((document.activeElement===document.body||document.activeElement===document.documentElement)&&(n=e(o),r=t(n))){if("keydown"===o.type)d[n]=!0;else if(d[n])return;if(document.getSelection){if(!document.getSelection().isCollapsed)return}else if(document.selection&&"None"!==document.selection.type)return;o.isDefaultPrevented()||(s=i(r),s.isDefaultPrevented()&&o.preventDefault())}}function n(t){t=t.originalEvent||t,t.key===h&&i("change")}function r(){p||($(document).on("keypress keydown",o),$(window).on("storage",n),p=!0)}function s(){$(document).off("keypress keydown",o),$(window).off("storage",n),$(window).off(u+":copy"),$(window).off(u+":paste"),$(window).off(u+":cut"),$(window).off(u+":change"),p=!1}function a(){try{return JSON.parse(TVLocalStorage.getItem(h))}catch(t){return null}}function l(t){if(null==t)return c();var e=JSON.stringify(t);e!==TVLocalStorage.getItem(h)&&(TVLocalStorage.setItem(h,e),i("change"))}function c(){TVLocalStorage.getItem(h)&&(TVLocalStorage.removeItem(h),i("change"))}var h="application-clipboard",u="appclip",d={},p=!1,_={init:r,set:l,get:a,clear:c,destroy:s};return _}();t.exports=i},,function(t,e,i){(function(e){"use strict";function o(t,i,o){var n={saveAsText:$.t("Save As..."),applyDefaultText:$.t("Apply Defaults")};this._toolName=t,this._applyTemplate=i,this._options=$.extend(n,o||{}),this._list=[],e.enabled("charting_library_base")||(this.templatesDeferred=this.loadData())} +var n=i(103).bindPopupMenu,r=i(204),s=r.SaveRenameDialog,a=r.InputField,l=i(123).createConfirmDialog,c=i(13).getLogger("Chart.LineToolTemplatesList");o._cache={},o.prototype.getData=function(){return this._list},o.prototype.loadData=function(){var t=this;return this._toolName in o._cache?(this._list=o._cache[this._toolName],$.Deferred().resolve()):$.get("/drawing-templates/"+this._toolName+"/",function(e){t._list=e,o._cache[t._toolName]=e}).error(function(){c.logWarn("Failed to load drawing template: "+t._toolName)})},o.prototype.templatesLoaded=function(){return this.templatesDeferred},o.prototype.invalidateToolCache=function(){delete o._cache[this._toolName]},o.prototype.createButton=function(t){var e,i=this;return t=$.extend({},t,i._options),e=$("").addClass(t.buttonClass?t.buttonClass:"_tv-button").html(t.buttonInner?t.buttonInner:$.t("Template")+''),n(e,null,{event:"button-popup",zIndex:t.popupZIndex,activeClass:t.popupActiveClass,direction:t.popupDirection}),e.bind("click",function(e){var o,n,r;e.stopPropagation(),$(this).is("active")||(o=[],"function"==typeof t.getDataForSaveAs&&(n=function(e){var o=JSON.stringify(t.getDataForSaveAs());i.saveTemplate(e,o)},o.push({title:t.saveAsText,action:i.showSaveDialog.bind(i,n),addClass:"special"})),"function"==typeof t.defaultsCallback&&o.push({title:t.applyDefaultText,action:t.defaultsCallback,addClass:"special"}),r=[],$.each(i._list,function(e,o){r.push({title:o,action:function(){i.loadTemplate.call(i,o,t.loadTemplateCallback)},deleteAction:function(){runOrSignIn(function(){var t=$.t("Do you really want to delete Drawing Template '{0}' ?").format(o),e=l({type:"modal",content:t});e.on("action:yes",function(t){i.removeTemplate.call(i,o),t.close()}),e.open()},{source:"Delete line tool template"})}})}),r.length&&(r.sort(function(t,e){return t=t.title.toUpperCase(),e=e.title.toUpperCase(),t===e?0:t>e?1:-1}),o.push({separator:!0}),o=o.concat(r)),$(this).trigger("button-popup",[o]))}),e},o.prototype.loadTemplate=function(t,e){var i=this;return $.get("/drawing-template/"+this._toolName+"/?templateName="+encodeURIComponent(t),function(t){i._applyTemplate(JSON.parse(t.content)),e&&e()}).error(function(t){c.logWarn(t.responseText)})},o.prototype.removeTemplate=function(t){if(t){var e=this;$.post("/remove-drawing-template/",{name:t,tool:e._toolName}).error(function(t){c.logWarn(t.responseText)}),e.invalidateToolCache(),e._list=$.grep(e._list,function(e){return e!==t})}},o.prototype.saveTemplate=function(t,e){var i,o,n,r,s=this;t&&e&&(t=TradingView.clean(t),i=-1!==$.inArray(t,s._list),o=function(){var o={name:t,tool:s._toolName,content:e},n=function(){i||s._list.push(t)};$.post("/save-drawing-template/",o,n).error(function(t){c.logWarn(t.responseText)}),s.invalidateToolCache()},i?(n=$.t("Drawing Template '{0}' already exists. Do you really want to replace it?").format(t),r=l({type:"modal",content:n}),r.on("action:yes",function(t){o(),t.close()}),r.open()):o())},o.prototype.deleteAction=function(t){var e=t,i=this;runOrSignIn(function(){ +var t=$.t(" Do you really want to delete Drawing Template '{0}' ?").format(e),o=l({type:"modal",content:t});o.on("action:yes",function(t){i.removeTemplate.call(i,e),t.close()}),o.open()},{source:"Delete line tool template"})},o.prototype.showSaveDialog=function(t){var e="text",i=new s({fields:[new a({name:e,label:$.t("Template name")+":",maxLength:64,error:$.t("Please enter template name")})],title:$.t("Save Drawing Template As")});runOrSignIn(function(){i.show().then(function(i){t(i[e])})},{source:"Save line tool template",sourceMeta:"Chart"})},t.exports=o}).call(e,i(7))},function(t,e,i){(function(e){"use strict";function o(t,e,i){this.pane=t,this._isLeft=o.isLeft(e),this._properties=t.chart().properties().scalesProperties,this._disableContextMenu=!!i,this.jqCell=$(document.createElement("td")),this.jqCell.addClass("chart-markup-table"),this.jqCell.addClass("price-axis"),this.jqCell.width(25),this._dv=$("
"),this._dv.css("width","100%"),this._dv.css("height","100%"),this._dv.css("position","relative"),this._dv.css("overflow","hidden"),this._dv.appendTo(this.jqCell),this.canvas=m(this._dv,new g(16,16)),$(this.canvas).css("position","absolute"),$(this.canvas).css("z-order","2"),$(this.canvas).css("left",0),$(this.canvas).css("top",0),this.ctx=this.canvas.getContext("2d"),this.top_canvas=m(this._dv,new g(16,16)),$(this.top_canvas).css("position","absolute"),$(this.top_canvas).css("z-order","1"),$(this.top_canvas).css("left",0),$(this.top_canvas).css("top",0),this.top_ctx=this.top_canvas.getContext("2d"),this._textWidthCache=new r,this.restoreDefaultCursor(),this.update(),v(this.jqCell,this,!0),this.dialog=this.pane.chart().dialog,this.contextMenu=null,this.actions={},this._isVisible=!0,this.priceScale().onMarksChanged.subscribe(this,this.onMarksChanged)}var n,r,s,a,l,c,h,u,d,p,_,f,m,g,v,y,b,S,w;i(628),n=i(3).LineDataSource,r=i(218),s=i(73),a=s.Action,l=s.ActionSeparator,c=i(131),h=i(755),u=i(37),d=i(171),p=d.resizeCanvas,_=d.hardResizeCanvas,f=d.clearRect,m=d.addCanvasTo,g=d.Size,v=i(144).setMouseEventHandler,y=i(48).trackEvent,b=i(231).makeFont,S=i(270).ActionBinder,w=i(13).getLogger("Chart.PriceAxisWidget"),o.prototype._BORDER_SIZE=1,o.prototype._OFFSET_SIZE=1,o.prototype._TICK_LENGTH=3,o.LHS=1,o.RHS=2,o.isLeft=function(t){return t===o.LHS||t!==o.RHS&&(w.logDebug("PriceAxisWidget.isLeft: wrong side"),!1)},o.prototype.backgroundColor=function(){return this.pane.chart().properties().paneProperties.background.value()},o.prototype.lineColor=function(){return this._properties.lineColor.value()},o.prototype.textColor=function(){return this._properties.textColor.value()},o.prototype.fontSize=function(){return this._properties.fontSize.value()},o.prototype.baseFont=function(){return b(this.fontSize(),"Arial","")},o.prototype.rendererOptions=function(){var t,e,i;return this._rendererOptions||(this._rendererOptions={isLeft:this._isLeft,width:0,height:0,borderSize:this._BORDER_SIZE,offsetSize:this._OFFSET_SIZE,tickLength:this._TICK_LENGTH,fontSize:NaN,font:"",widthCache:new r,_tickmarksCache:new h(11,"Arial","","#000"), +color:""}),t=this._rendererOptions,e=!1,t.color!==this.textColor()&&(t.color=this.textColor(),e=!0),t.fontSize!==this.fontSize()&&(i=this.fontSize(),t.fontSize=i,t.font=this.baseFont(),t.paddingTop=Math.floor(i/4.5),t.paddingBottom=Math.ceil(i/4.5),t.paddingInner=Math.max(Math.ceil(i/3-t.tickLength/2),0),t.paddingOuter=Math.ceil(i/3),t.baselineOffset=Math.round(i/10),t.widthCache.reset(),e=!0),e&&t._tickmarksCache.reset(t.fontSize,"Arial","",t.color),this.size&&(t.width=this.size.w,t.height=this.size.h),this._rendererOptions},o.prototype.mouseDownEvent=function(t){var i,o;!this.priceScale().isEmpty()&&e.enabled("chart_zoom")&&(i=this.pane.chart().model(),o=this.pane.state(),this._mousedown=!0,this.setCursor("ns-resize"),i.startScalePrice(o,this.priceScale(),t.localY))},o.prototype.pressedMouseMoveEvent=function(t){var e=this.pane.chart().model(),i=this.pane.state(),o=this.priceScale();e.scalePriceTo(i,o,t.localY)},o.prototype.mouseDownOutsideEvent=function(t){var e=this.pane.chart().model(),i=this.pane.state(),o=this.priceScale();this._mousedown&&(this._mousedown=!1,e.endScalePrice(i,o),this.restoreDefaultCursor())},o.prototype.mouseUpEvent=function(t){var e=this.pane.chart().model(),i=this.pane.state(),o=this.priceScale();this._mousedown=!1,e.endScalePrice(i,o),this.restoreDefaultCursor()},o.prototype._initActions=function(t){var e,i,n,r;this.pane.state()&&(e=this,this.actions.reset=new a({text:$.t("Reset Scale"),shortcut:"Alt+R",statName:"ResetScale"}),this.actions.reset.callbacks().subscribe(this,o.prototype.reset),i=function(t){this._undoModel.setLockScaleProperty(this._property,t.checked,e.priceScale().mainSource(),this._undoText)},delete this.actions.setLockScale,this.priceScale().mainSource()instanceof TradingView.Series&&(this.actions.setLockScale=new a({text:$.t("Lock Scale"),checkable:!0,checked:this.priceScale().mainSource().properties().lockScale.value(),statName:"ToggleLockScale"}),this._lockScaleBinding=new S(this.actions.setLockScale,this.priceScale().mainSource().properties().lockScale,this.pane.chart().model(),"Lock Scale",i),this._lockScaleBinding.setValue(this.priceScale().mainSource().properties().lockScale.value())),n=function(){this._undoModel.setAutoScaleProperty(this._property,this.value(),e.priceScale(),this._undoText)},this.actions.setAutoScale=new a({text:$.t("Auto Scale"),checkable:!0,checked:!0,statName:"ToggleAutoScale"}),this._autoScaleBinding=new S(this.actions.setAutoScale,this.priceScale().properties().autoScale,this.pane.chart().model(),"Undo AutoScale",n),this._autoScaleBinding.setValue(this._autoScaleBinding.property().value()),this.actions.setPercentage=new a({text:$.t("Percentage",{context:"scale_menu"}),checkable:!0,checked:!1,statName:"TogglePercantage"}),r=function(){this._undoModel.setPercentProperty(this._property,this.value(),e.priceScale(),this._undoText)},this.actions.setPercentage.binding=new S(this.actions.setPercentage,this.priceScale().properties().percentage,this.pane.chart().model(),"Undo Percentage",r),this.actions.setLog=new a({text:$.t("Log Scale",{ +context:"scale_menu"}),checkable:!0,checked:!1,statName:"ToggleLogScale"}),this.actions.setLog.binding=new S(this.actions.setLog,this.priceScale().properties().log,this.pane.chart().model(),"Undo Log Scale"),this.actions.alignLabels=new a({text:$.t("No Overlapping Labels",{context:"scale_menu"}),checkable:!0,checked:!1,statName:"TogglePreciseLabels"}),this.actions.alignLabels.binding=new S(this.actions.alignLabels,this.priceScale().properties().alignLabels,this.pane.chart().model(),"No Overlapping Labels"),this._updateScalesActions())},o.prototype._updateScalesActions=function(){var t=this.priceScale(),e=t.mainSource()instanceof TradingView.Series,i=t.mainSource().properties();this.actions.setPercentage.setEnabled(!(t.isLog()||e&&i.lockScale.value()||e&&i.style.value()===TradingView.Series.STYLE_PNF)),this.actions.setLog.setEnabled(!(t.isPercent()||e&&i.lockScale.value()||e&&i.style.value()===TradingView.Series.STYLE_PNF)),this.actions.setAutoScale.setChecked(t._properties.autoScale.value()),this.actions.setAutoScale.setEnabled(!t.properties().autoScaleDisabled.value())},o.prototype.mouseClickEvent=function(t){},o.prototype.mouseDoubleClickEvent=function(t){this.reset(),y("GUI","Double click price scale")},o.prototype.contextMenuEvent=function(t,i){!this._disableContextMenu&&e.enabled("scales_context_menu")&&this._createContextMenu().show(t)},o.prototype._createContextMenu=function(){return c.createMenu(this.getContextMenuActions(),{statName:"PriceScaleContextMenu"})},o.prototype.getContextMenuActions=function(){var t,i;return this._initActions(),t=this.pane.chart().actions(),i=[],i.push(this.actions.reset,new l,t.showLeftAxis,t.showRightAxis,new l,this.actions.setAutoScale),this.actions.setLockScale&&i.push(this.actions.setLockScale),i.push(t.scaleSeriesOnly,new l,this.actions.setPercentage,this.actions.setLog,new l),e.enabled("fundamental_widget")||i.push(t.showSymbolLabelsAction,t.showSeriesLastValue,t.showSeriesPrevCloseValue),i.push(t.showStudyPlotNamesAction,t.showStudyLastValue),e.enabled("countdown")&&i.push(t.showCountdown),i.push(this.actions.alignLabels),!TradingView.onWidget()&&e.enabled("show_chart_property_page")&&e.enabled("chart_property_page_scales")&&t.scalesProperties&&i.push(new l,t.scalesProperties),i},o.prototype.backLabels=function(t){var e,i,o,n,r,s=[],a=this.priceScale().orderedSources().slice(),l=this.pane,c=l.chart().model(),h=l.state(),u=[],d=c.sourceBeingMoved()||c.lineBeingEdited()||c.lineBeingCreated();if(d&&u.push(d),c.selectedSource()&&u.push(c.selectedSource()),c.hoveredSource()&&u.push(c.hoveredSource()),this.priceScale()===h.defaultPriceScale())for(e=this.pane.state().dataSources(),i=0;i0&&(t=Math.max(e.widthCache.measureText(i,o[0].label),e.widthCache.measureText(i,o[o.length-1].label))),n=this.backLabels(!0),r=n.length;r--;)(s=e.widthCache.measureText(i,n[r].text()))>t&&(t=s);return Math.ceil(e.offsetSize+e.borderSize+e.tickLength+e.paddingInner+e.paddingOuter+t)},o.prototype.setSize=function(t){this.size&&this.size.equals(t)||(this.size=t,p(this.canvas,t),p(this.top_canvas,t),this.jqCell.css({width:t.w,"min-width":t.w,height:t.h}))},o.prototype.update=function(){},o.prototype._hightlightBackground=function(t,e,i){var o,n,r,s,a,l,c=e[0].price,h=e[0].price;for(o=1;o0&&(f=n[0].floatCoordinate())}for(a=m.filter(function(t){return t.floatCoordinate()<=f}),l=m.filter(function(t){return t.floatCoordinate()>f}), +a.sort(function(t,e){return e.floatCoordinate()-t.floatCoordinate()}),a.length&&l.length&&l.push(a[0]),l.sort(function(t,e){return t.floatCoordinate()-e.floatCoordinate()}),c=m.length,e=0;e_-d&&s.setFixedCoordinate(_-d);for(r=1;r");o.appendTo(t),o.css("padding-left","0px"),o.css("padding-right","0px"),i=$(""),i.attr("type","text"),i.addClass("ticker"),i.css("width","40px"),i.attr("id",e),i.appendTo(o)},r=function(t,e,i){var o,n=$("
]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*",""],legend:[1,"
","
"],thead:[1,"
").append($.t("Transparency")).appendTo(p),h=d(),$("").append(h).appendTo(p),c=this._linetool.properties(),this.bindColor(t,c.candleStyle.upColor,"Change Candle Up Color"),this.bindColor(o,c.candleStyle.downColor,"Change Candle Down Color"),this.bindBoolean(l,c.candleStyle.drawWick,"Change Candle Wick Visibility"),this.bindColor(i,c.candleStyle.wickColor,"Change Candle Wick Color"),this.bindBoolean(r,c.candleStyle.drawBorder,"Change Candle Border Visibility"),this.bindColor(n,c.candleStyle.borderUpColor,"Change Candle Up Border Color"),this.bindColor(a,c.candleStyle.borderDownColor,"Change Candle Down Border Color"),this.bindControl(new s(h,c.transparency,!0,this.model(),"Change Guest Feed Transparency"))},n.prototype.widget=function(){return this._widget},t.LineToolGhostFeedInputsPropertyPage=i,t.LineToolGhostFeedStylesPropertyPage=n},400:function(e,t,o){"use strict";function i(e,t,o){a.call(this,e,t,o),this.prepareLayout()}function n(e,t,o){r.call(this,e,t,o)}var a=o(14),r=o(81),l=o(10),p=l.BooleanBinder,s=l.SimpleComboBinder,d=l.SimpleStringBinder,h=l.ColorBinding,c=l.SliderBinder,b=o(31).createLineStyleEditor,u=o(15).createLineWidthEditor;inherit(i,a),i.prototype.prepareLayout=function(){var e,t,o,i,n,a,r,l,C,y,g,w,T,_;this._res=$("
"),this._table=$('
').appendTo(this._res),e=u(),t=b(),o=this.createColorPicker(),i=this.addLabeledRow(this._table,"Line"),$("
").append(o).appendTo(i),$("").append(e).appendTo(i),$('').append(t.render().css("display","block")).appendTo(i),n=$(""), +i=$("
').append($("
').append($("").append(r).appendTo(i),$("").append(C).appendTo(i),$("").append(l).appendTo(i),$("").append(y).appendTo(i),$("").append(g).appendTo(i),i=$("
").append($.t("Text Alignment:")).appendTo(i),w=$(""),T=$("").data("selectbox-css",{display:"block"}),$("").append(w).appendTo(i),$("").append(T).appendTo(i),_=$("',textNotesWidgetItem:'
{{title}}
{{#symbol}}
'+i(1191)+'{{symbol}}
{{/symbol}}
{{description}}
',tvDataTable:'{{#columns}}{{/columns}}{{#bodies}}{{#strokes}}{{#cells}}{{/cells}}{{/strokes}}{{/bodies}}
{{{label}}}
{{#contain}}{{{contain}}}{{/contain}}
', +tvDataTableRow:'
{{#contain}}{{{contain}}}{{/contain}}
{{#contain}}{{{contain}}}{{/contain}}");n.css("padding-left",i),n.css("padding-right",i),n.appendTo(t),o=$("
"),o.appendTo(n),o.append(e),o.css("font-size","150%")},s=$(""),s.appendTo(t),a=$(""),a.appendTo(s),c=["start_hours","start_minutes","end_hours","end_minutes"],n.call(this,a,c[0]),r.call(this,a,":",0),n.call(this,a,c[1]),r.call(this,a,"-",4),n.call(this,a,c[2]),r.call(this,a,":",0),n.call(this,a,c[3]),h=!1,this.bindControl(new l(a,c,e,h,this.model(),o))},o.prototype.prepareLayoutImpl=function(e,i){function o(t){return(new v).format(t)}function n(t){return function(e){var i,o,n,r=this,s=null;if(0===e.indexOf("#")){if(i=e.slice(1,e.indexOf("$")),null===(o=tt._model.model().getStudyById(i)))return void b.logError("Can not get Study by id "+i);if(o.isStarted()||o.start(null,!0),!(n=o.sourceId()))return void b.logError("Can not get source id for "+o.metaInfo().id);s=e.replace(/^[^\$]+/,n)}!~e.indexOf("$")&&!~e.indexOf("#")||tt._study.isStarted()||tt._study.start(null,!0), +tt._study.testInputValue(t,e)?r.setValueToProperty(s||r.value()):r.setValue(tt._property.inputs[t.id].value())}}function l(t){return function(e){var i,o,n,r;if(t.hasOwnProperty(e)||0===e.indexOf("#")||!~e.indexOf("$"))return e;for(i=e.slice(0,e.indexOf("$")),o=tt._model.model().allStudies(),n=0;n"),C.appendTo(i),P=$("]","i"),be=/checked\s*(?:[^=]|=\s*.checked.)/i,_e=/\/(java|ecma)script/i,we=/^\s*",""],legend:[1,"
","
"],thead:[1,"
"),P.appendTo(C),P.addClass("propertypage-name-label"),P.text($.t(T,{context:"input"})),L=$(""),L.appendTo(C),I=null,k=null,A=null,"resolution"===S.type)I=$('");else if("symbol"===S.type)I=$(''),g.bindToInput(I,{onPopupOpen:function(t){this._$symbolSearchPopup=t,this._symbolSearchZindex&&t.css("z-index",this._symbolSearchZindex)}.bind(this),onPopupClose:function(){this._$symbolSearchPopup=null}.bind(this)});else if("session"===S.type)this._addSessionEditor(L,this._property.inputs[w],S,x);else if("source"===S.type){for(M={},E=["open","high","low","close","hl2","hlc3","ohlc4"],V=0;V").attr("value",Z).text(M[Z]).appendTo(I);L.addClass("js-value-cell")}else if(S.options)for(I=$(""), +"bool"===S.type?I.attr("type","checkbox"):I.attr("type","text");I&&(I.appendTo(L),I.is(":checkbox")||I.css("width","100px")),S.options?this.bindControl(new _(I,this._property.inputs[w],null,!0,this.model(),x,k,A)):"bar_time"===S.type?(X=10,this.bindControl(new a(I,this._property.inputs[w],!0,this.model(),x,this.model().mainSeries(),X)),I.addClass("ticker")):"integer"===S.type?(J=[d(S.defval)],(0===S.min||S.min)&&J.push(h(S.min)),(0===S.max||S.max)&&J.push(u(S.max)),this.bindControl(new m(I,this._property.inputs[w],J,!1,this.model(),x)),I.addClass("ticker"),isFinite(S.step)&&S.step>0&&I.attr("data-step",S.step)):"float"===S.type?(J=[p(S.defval)],(0===S.min||S.min)&&J.push(h(S.min)),(0===S.max||S.max)&&J.push(u(S.max)),Q=new m(I,this._property.inputs[w],J,!1,this.model(),x),Q.addFormatter(o),this.bindControl(Q),I.addClass("ticker"),isFinite(S.step)&&S.step>0&&I.attr("data-step",S.step)):"text"===S.type?this.bindControl(new m(I,this._property.inputs[w],null,!1,this.model(),x)):"bool"===S.type?this.bindControl(new f(I,this._property.inputs[w],!0,this.model(),x)):"resolution"===S.type?this.bindControl(new _(I,this._property.inputs[w],r,!0,this.model(),"Change Interval")):"symbol"===S.type&&this.bindControl(new s(I,this._property.inputs[w],!0,this.model(),"Change Symbol"))}this._property.offset&&(T=this._property.offset.title?this._property.offset.title.value():$.t("Offset"),I=this.addOffsetEditorRow(i,T),J=[d(this._property.offset.val)],J.push(h(this._property.offset.min)),J.push(u(this._property.offset.max)),this.bindControl(new m(I,this._property.offset.val,J,!1,this.model(),"Undo "+T))),this._property.offsets&&$.each(e.plots,function(t,e){var o,n,r,s;this._property.offsets[e.id]&&(o=this._property.offsets[e.id],void 0!==o.isHidden&&o.isHidden.value()||(n=o.title.value(),r=this.addOffsetEditorRow(i,n),s=[d(o.val)],s.push(h(o.min)),s.push(u(o.max)),this.bindControl(new m(r,o.val,s,!1,this.model(),"Undo "+n))))}.bind(this))},o.prototype.prepareLayout=function(){this._table=$(""),this._table.addClass("property-page"),this._table.attr("cellspacing","0"),this._table.attr("cellpadding","2");var t=this._study.metaInfo();this.prepareLayoutImpl(t,this._table),this.loadData()},o.prototype.symbolSearchPopup=function(){return this._$symbolSearchPopup},o.prototype.widget=function(){return this._table},e.StudyInputsPropertyPage=o}).call(e,i(7))},function(t,e,i){"use strict";function o(){this.backColorers=[]}function n(t){o.call(this),this._series=t}function r(t,e){o.call(this),this._study=t,this._plotIndex=e}var s=i(42).PlotRowSearchMode;o.prototype.barStyle=function(t,e,i){var o,n={};for(o=this.backColorers.length-1;o>=0;o--)this.backColorers[o].applyBarStyle(t,e,n,i);return this.applyBarStyle(t,e,n,i),n},o.prototype.pushBackBarColorer=function(t){this.backColorers.push(t)},o.prototype.applyBarStyle=function(t,e,i){throw Error("This function is supposed to be reimplemented in a subclass")},inherit(n,o),n.prototype.applyBarStyle=function(t,e,i,o){var n,r,s,a,l,c,h,u,d,p,_,f,m,g,v;switch(i||(i={}),i.barColor=null, +i.barBorderColor=null,i.barWickColor=null,i.isBarHollow=null,i.isBarUp=null,i.upColor=null,i.downColor=null,i.isTwoColorBar=null,n=this._series.properties(),n.style.value()){case TradingView.Series.STYLE_LINE:i.barColor=n.lineStyle.color.value();break;case TradingView.Series.STYLE_AREA:i.barColor=n.areaStyle.linecolor.value();break;case TradingView.Series.STYLE_BARS:r=n.barStyle.upColor.value(),s=n.barStyle.downColor.value(),a=r,l=s,c=this.findBar(t,!1,o),n.barStyle.barColorsOnPrevClose.value()?(h=this.findPrevBar(t,!1,o),i.barColor=h[TradingView.CLOSE_PLOT]<=c[TradingView.CLOSE_PLOT]?r:s,i.barBorderColor=h[TradingView.CLOSE_PLOT]<=c[TradingView.CLOSE_PLOT]?a:l):(i.barColor=c[TradingView.OPEN_PLOT]<=c[TradingView.CLOSE_PLOT]?r:s,i.barBorderColor=c[TradingView.OPEN_PLOT]<=c[TradingView.CLOSE_PLOT]?a:l);break;case TradingView.Series.STYLE_CANDLES:r=n.candleStyle.upColor.value(),s=n.candleStyle.downColor.value(),a=n.candleStyle.borderUpColor?n.candleStyle.borderUpColor.value():n.candleStyle.borderColor.value(),l=n.candleStyle.borderDownColor?n.candleStyle.borderDownColor.value():n.candleStyle.borderColor.value(),u=n.candleStyle.wickUpColor?n.candleStyle.wickUpColor.value():n.candleStyle.wickColor.value(),d=n.candleStyle.wickDownColor?n.candleStyle.wickDownColor.value():n.candleStyle.wickColor.value(),c=this.findBar(t,!1,o),n.candleStyle.barColorsOnPrevClose.value()?(h=this.findPrevBar(t,!1,o),p=h[TradingView.CLOSE_PLOT]<=c[TradingView.CLOSE_PLOT]):p=c[TradingView.OPEN_PLOT]<=c[TradingView.CLOSE_PLOT],i.barColor=p?r:s,i.barBorderColor=p?a:l,i.barWickColor=p?u:d;break;case TradingView.Series.STYLE_HOLLOW_CANDLES:r=n.hollowCandleStyle.upColor.value(),s=n.hollowCandleStyle.downColor.value(),a=n.hollowCandleStyle.borderUpColor?n.hollowCandleStyle.borderUpColor.value():n.hollowCandleStyle.borderColor.value(),l=n.hollowCandleStyle.borderDownColor?n.hollowCandleStyle.borderDownColor.value():n.hollowCandleStyle.borderColor.value(),u=n.hollowCandleStyle.wickUpColor?n.hollowCandleStyle.wickUpColor.value():n.hollowCandleStyle.wickColor.value(),d=n.hollowCandleStyle.wickDownColor?n.hollowCandleStyle.wickDownColor.value():n.hollowCandleStyle.wickColor.value(),c=this.findBar(t,!1,o),h=this.findPrevBar(t,!1,o),h[TradingView.CLOSE_PLOT]<=c[TradingView.CLOSE_PLOT]?(i.barColor=r,i.barBorderColor=a,i.barWickColor=u):(i.barColor=s,i.barBorderColor=l,i.barWickColor=d),c[TradingView.OPEN_PLOT]<=c[TradingView.CLOSE_PLOT]?i.isBarHollow=!0:i.isBarHollow=!1;break;case TradingView.Series.STYLE_HEIKEN_ASHI:r=n.haStyle.upColor.value(),s=n.haStyle.downColor.value(),a=n.haStyle.borderUpColor.value(),l=n.haStyle.borderDownColor.value(),u=n.haStyle.wickUpColor.value(),d=n.haStyle.wickDownColor.value(),c=this.findBar(t,e,o),n.haStyle.barColorsOnPrevClose.value()?(h=this.findPrevBar(t,e,o),p=h[TradingView.CLOSE_PLOT]<=c[TradingView.CLOSE_PLOT]):p=c[TradingView.OPEN_PLOT]<=c[TradingView.CLOSE_PLOT],i.barColor=p?r:s,i.barBorderColor=p?a:l,i.barWickColor=p?u:d;break;case TradingView.Series.STYLE_RENKO:c=this.findBar(t,e,o), +p=c[TradingView.OPEN_PLOT]<=c[TradingView.CLOSE_PLOT],r=e?n.renkoStyle.upColorProjection.value():n.renkoStyle.upColor.value(),s=e?n.renkoStyle.downColorProjection.value():n.renkoStyle.downColor.value(),a=e?n.renkoStyle.borderUpColorProjection.value():n.renkoStyle.borderUpColor.value(),l=e?n.renkoStyle.borderDownColorProjection.value():n.renkoStyle.borderDownColor.value(),u=n.renkoStyle.wickUpColor.value(),d=n.renkoStyle.wickDownColor.value(),i.barColor=p?r:s,i.barBorderColor=p?a:l,i.barWickColor=p?u:d,i.isBarUp=p;break;case TradingView.Series.STYLE_PB:c=this.findBar(t,e,o),p=c[TradingView.OPEN_PLOT]<=c[TradingView.CLOSE_PLOT],r=e?n.pbStyle.upColorProjection.value():n.pbStyle.upColor.value(),s=e?n.pbStyle.downColorProjection.value():n.pbStyle.downColor.value(),a=e?n.pbStyle.borderUpColorProjection.value():n.pbStyle.borderUpColor.value(),l=e?n.pbStyle.borderDownColorProjection.value():n.pbStyle.borderDownColor.value(),i.barColor=p?r:s,i.barBorderColor=p?a:l,i.isBarUp=p;break;case TradingView.Series.STYLE_KAGI:i.upColor=e?n.kagiStyle.upColorProjection.value():n.kagiStyle.upColor.value(),i.downColor=e?n.kagiStyle.downColorProjection.value():n.kagiStyle.downColor.value(),_=null,c=this.findBar(t,e,o),c[TradingView.LOW_PLOT]0,r=e?n.pnfStyle.upColorProjection.value():n.pnfStyle.upColor.value(),s=e?n.pnfStyle.downColorProjection.value():n.pnfStyle.downColor.value(),i.isBarUp=p,i.barColor=p?r:s;break;case TradingView.Series.STYLE_BASELINE:c=this.findBar(t,e,o),f=n.baselineStyle,m=this._series.priceScale(),g=Math.round(m.height()*(Math.abs(100-f.baseLevelPercentage.value())/100)),v=m.coordinateToPrice(g),c[TradingView.CLOSE_PLOT]>v?i.barColor=n.baselineStyle.topLineColor.value():i.barColor=n.baselineStyle.bottomLineColor.value()}return i},n.prototype.getSeriesBars=function(t){return t?this._series.nsBars():this._series.bars()},n.prototype._findBarFieldValue=function(t,e,i){var o=this.getSeriesBars(i).valueAt(t);if(null!==o)return o[e]},n.prototype.findBar=function(t,e,i){return i?i.value:this.getSeriesBars(e).valueAt(t)||[]},n.prototype.findPrevBar=function(t,e,i){var o,n;return i&&i.previousValue?i.previousValue:(o=this._series.bars(),n=o._search(t,s.Exact),null!==n&&n>0?this._series.bars()._valueAt(n-1):[])},inherit(r,o),r.prototype.applyBarStyle=function(t,e,i){var o,n,r,s,a,l,c,h,u,d,p,_,f;return i||(i={}),e?i:(o=this._study.properties(),o.visible.value()?(n=this._study.metaInfo(),(r=this._study.data())&&0!==r.size()?(s=n.plots[this._plotIndex],this._study.getMinFirstBarIndexForPlot(s.id)>t?i:(a=o.styles[s.id], +a.visible&&!a.visible.value()?i:(l=this._study.offset(s.id),null===(c=r.valueAt(t-l))?i:null==(h=c[this._plotIndex+1])?i:(h=Math.round(h),u=n.plots[this._plotIndex].palette,d=o.palettes,p=d[u],_=n.palettes[u].valToIndex?n.palettes[u].valToIndex[h]:h,f=p.colors[_].color.value(),i.barColor=f,i.upColor=f.color,i.downColor=f.color,i)))):i):i)},e.SeriesBarColorer=n,e.StudyBarColorer=r},function(t,e,i){"use strict";function o(t,e,i){this.source=t,this.pane=e,this._rendererFactory=i}function n(t,e){this._barWidth=t.barWidth,this._plates=t.plates,this._tooltip=t.tooltip,this._model=e}function r(){this._layout=[],this._currentId=void 0,this.tooltipHovered=!1}var s=i(1).Point,a=i(49).pointInCircle,l=i(4);o.prototype.update=function(){},o.prototype.renderer=function(){return this._rendererFactory(this.source)},n.prototype.draw=function(t){t.save();for(var e=0;e6&&(t.textAlign="center", +t.textBaseline="middle",t.font="bold "+e.labelFontSize+"px Arial",t.fillStyle=e.labelFontColor,t.fillText(e.label,e.x,e.y))},n.prototype.hitTest=function(t){var e,i;for(i=this._plates.length-1;i>=0;--i)if(e=this._hitTestDot(this._plates[i],t))return e;return null},n.prototype._hitTestDot=function(t,e){var i=this._dotTransform(t),o=new s(i.x,i.y);return a(e,o,Math.max(i.radius,8))?new l(l.REGULAR,t):null},r.prototype._createLayout=function(){throw Error("Child class must override this member")},r.prototype._updatePlate=function(t){throw Error("Child class must override this member")},r.prototype._getContainer=function(t){return this._container&&this._context===t||(this._context=t,this._container=$(t.canvas).parent()),this._container},r.prototype._plateArrowSize=14,r.prototype.showPlate=function(t,e){var i,o,n,r,s,a,l,c;this._currentId===t.id&&this._layout&&0!==this._layout.length&&null!=this._layout[0].parentNode||(this._currentId=t.id,this._createLayout(),this._getContainer(e).append(this._layout),i=this,this._layout.hover(function(){i.tooltipHovered=!0,$(this).stop(!0).fadeTo(0,1)},function(){i.tooltipHovered=!1})),o=Math.round(t.barWidth/2),o>15&&(o=15),o<10&&(o=10),this._updatePlate(t),n=e.canvas.getBoundingClientRect(),r=t.x-this._layout.outerWidth()=0?new c(e,i,a):new c(e,i)},t.exports=o},function(t,e,i){(function(t){"use strict";function o(e,n){var r,s,c,d,p,_,f,m,g,v,y=n||new h("linetoolriskreward");a.call(this,e,y),this._properties.addExclusion&&(this._properties.addExclusion("stopLevel"), +this._properties.addExclusion("profitLevel")),n.stopLevel||n.profitLevel||(r=e.timeScale().visibleBars(),s=r.firstBar(),c=r.lastBar(),d=e.mainSeries().priceRange(s,c),p=e.mainSeries().priceScale(),p.isLog()&&(_=p.logicalToPrice(d.minValue()),f=p.logicalToPrice(d.maxValue()),d=new t(_,f)),p.isPercent()&&(m=e.mainSeries().firstValue(),_=p.priceRange().convertFromPercent(d.minValue(),m),f=p.priceRange().convertFromPercent(d.maxValue(),m),d=new t(_,f)),d&&!d.isEmpty()&&(g=Math.round(.2*d.length()*e.mainSeries().base()),y.merge({stopLevel:g,profitLevel:g}))),v=this,y.stopLevel.listeners().subscribe(this,this.recalculate),y.stopLevel.listeners().subscribe(null,function(){v.properties().stopPrice._listeners.fire(v.properties().stopPrice)}),y.profitLevel.listeners().subscribe(this,this.recalculate),y.profitLevel.listeners().subscribe(null,function(){v.properties().targetPrice._listeners.fire(v.properties().targetPrice)}),y.addChild("entryPrice",new o.PriceProperty(this,0)),y.addChild("stopPrice",new o.StopPriceProperty(this)),y.addChild("targetPrice",new o.TargetPriceProperty(this)),y.addProperty("riskSize",250),y.addProperty("qty",0),y.addProperty("amountTarget",y.accountSize.value()),y.addProperty("amountStop",y.accountSize.value()),this._riskInPercentsFormatter=new u(2),this._riskInMoneyFormatter=new u,y.risk.subscribe(this,this._recalculateRiskSize),y.accountSize.subscribe(this,this._recalculateRiskSize),y.riskDisplayMode.subscribe(this,this._recalculateRisk),y.riskDisplayMode.subscribe(this,this._recalculateRiskSize),y.entryPrice.subscribe(this,this._recalculateRiskSize),y.stopPrice.subscribe(this,this._recalculateRiskSize),y.profitLevel.subscribe(this,this._recalculateRiskSize),y.stopLevel.subscribe(this,this._recalculateRiskSize),y.qty.subscribe(this,this._recalculateRiskSize),"percents"===y.riskDisplayMode.value()&&y.risk.value()>100&&y.riskDisplayMode.setValueSilently("money"),this.version=o.version,this._entryPriceAxisView=new l(this,{colorProperty:y.linecolor,priceProperty:y.entryPrice}),this._stopPriceAxisView=new l(this,{colorProperty:y.stopBackground,priceProperty:y.stopPrice}),this._profitPriceAxisView=new l(this,{colorProperty:y.profitBackground,priceProperty:y.targetPrice}),i.e(1,function(t){var e=i(922).RiskRewardPaneView;this._setPaneViews([new e(this,this._model)])}.bind(this))}function n(t,e){var i,n;this._constructor="LineToolRiskRewardShort",i=e||new h("linetoolriskrewardshort"),o.call(this,t,i),n=this.properties(),n.entryPrice.subscribe(this,this._recalculateQty),n.stopPrice.subscribe(this,this._recalculateQty),n.riskSize.subscribe(this,this._recalculateQty),n.entryPrice.subscribe(this,this._recalculateAmount),n.profitLevel.subscribe(this,this._recalculateAmount),n.stopLevel.subscribe(this,this._recalculateAmount),n.accountSize.subscribe(this,this._recalculateAmount),n.riskSize.subscribe(this,this._recalculateAmount),n.qty.subscribe(this,this._recalculateAmount)}function r(t,e){var i,n;this._constructor="LineToolRiskRewardLong",i=e||new h("linetoolriskrewardlong"),o.call(this,t,i),n=this.properties(), +n.entryPrice.subscribe(this,this._recalculateQty),n.stopPrice.subscribe(this,this._recalculateQty),n.riskSize.subscribe(this,this._recalculateQty),n.entryPrice.subscribe(this,this._recalculateAmount),n.profitLevel.subscribe(this,this._recalculateAmount),n.stopLevel.subscribe(this,this._recalculateAmount),n.accountSize.subscribe(this,this._recalculateAmount),n.riskSize.subscribe(this,this._recalculateAmount),n.qty.subscribe(this,this._recalculateAmount)}var s=i(21).ensureNotNull,a=i(3).LineDataSource,l=i(1137).LineToolRiskRewardPriceAxisView,c=i(44),h=i(11).DefaultProperty,u=i(38).NumericFormatter,d=i(9).propertyPages,p=i(488).RiskRewardPointIndex;inherit(o,a),o.prototype.riskFormatter=function(t){return"percents"===t?this._riskInPercentsFormatter:this._riskInMoneyFormatter},o.prototype.getRiskStep=function(t){return"percents"===t?.01:1},o.prototype._roundValue=function(t){return parseFloat(t.toFixed(2))},o.prototype._recalculateRisk=function(){var t=this.properties(),e=t.riskDisplayMode.value(),i=t.riskSize.value(),o=t.accountSize.value(),n=t.risk.value();n="percents"===e?this._roundValue(i/o*100):this._roundValue(o/100*n),this._riskInChange=!0,t.risk.setValue(this.riskFormatter(e).format(n)),this._riskInChange=!1},o.prototype._recalculateRiskSize=function(){var t,e,i,o;this._riskInChange||(t=this.properties(),e=t.risk.value(),i=t.riskDisplayMode.value(),o=t.accountSize.value(),"percents"===i?t.riskSize.setValue(e/100*o):e>o?(t.risk.setValue(o),t.riskSize.setValue(o)):t.riskSize.setValue(e))},o.version=2,o.prototype.i18nCache={title:$.t("Risk/Reward")},o.prototype.lastBarData=function(){var t,e,i,o,n,r=this._model.mainSeries().bars().firstIndex(),a=this._model.mainSeries().bars().lastIndex();return null===r||null===a||isNaN(r)||isNaN(a)?null:(t=this.points(),4===t.length?(e=t[p.ActualClose],e.index=1&&(o=[],o.push(this._points[0]),n=this._points[0],n={price:n.price,index:n.index+50},o.push(n),this._points[1]&&o.push(this._points[1]),this._points[2]&&o.push(this._points[2]),this._points=o,this._timePoint.length>=1&&(r=[],n=this._timePoint[0],r.push(n),s={price:n.price,time_t:n.time_t,offset:n.offset+50},r.push(s),this._timePoint[1]&&o.push(this._points[1]),this._timePoint[2]&&o.push(this._points[2]),this._timePoint=r))},o.prototype.checkAlert=function(){this.recalculate()},o.prototype.priceAxisViews=function(t,e){return this._isActualSymbol?e!==this.priceScale()||this._model.paneForSource(this)!==t?null:[this._entryPriceAxisView,this._stopPriceAxisView,this._profitPriceAxisView]:null},o.prototype.updateAllViews=function(){this._isActualSymbol&&this._properties.visible.value()&&(c.hideAllDrawings().value()&&this.userEditEnabled()||(a.prototype.updateAllViews.call(this),this._entryPriceAxisView.update(),this._stopPriceAxisView.update(), +this._profitPriceAxisView.update()))},o.prototype.setPoint=function(t,e){var i,o=this.priceScale();switch(o.isPercent()&&(i=this.ownerSource().firstValue(),e.price=o.priceRange().convertFromPercent(e.price,i)),t){case 0:e.price=this._roundPrice(e.price),o.isPercent()&&(e.price=o.priceRange().convertToPercent(e.price,i)),a.prototype.setPoint.call(this,t,e),this.recalculate();break;case 1:this.properties().stopPrice.setValue(this.preparseStopPrice(e.price));break;case 2:this.properties().targetPrice.setValue(this.preparseProfitPrice(e.price));break;case 3:e.price=this._roundPrice(e.price),o.isPercent()&&(e.price=o.priceRange().convertToPercent(e.price,i)),a.prototype.setPoint.call(this,1,e),this.recalculate()}},o.PriceProperty=function(t,e){a.PointPriceProperty.call(this,t,e)},inherit(o.PriceProperty,a.PointPriceProperty),o.PriceProperty.prototype.setValue=function(t){var e=this._lineSource.points()[this._pointIndex];e.price=parseFloat(t),this._lineSource.setPoint(this._pointIndex,e),this._lineSource.recalculate(),this._lineSource._model.updateSource(this._lineSource),this._listeners.fire(this),this._lineSource.endChanging(),this._lineSource._syncMultichartState()},o.StopPriceProperty=function(t){o.PriceProperty.call(this,t,1)},inherit(o.StopPriceProperty,o.PriceProperty),o.StopPriceProperty.prototype.value=function(){var t=this._lineSource.stopPrice(),e=this._lineSource.ownerSource().formatter(),i=e.parse(e.format(t));return i.price?i.price:i.value},o.StopPriceProperty.prototype.setValue=function(t){var e=Math.round(Math.abs(t-this._lineSource.entryPrice())*this._lineSource._model.mainSeries().base());this._lineSource.properties().stopLevel.setValue(e),this._lineSource.properties().stopLevel.listeners().fire(this._lineSource.properties().stopLevel)},o.TargetPriceProperty=function(t){o.PriceProperty.call(this,t,2)},inherit(o.TargetPriceProperty,o.PriceProperty),o.TargetPriceProperty.prototype.value=function(){var t=this._lineSource.profitPrice(),e=this._lineSource.ownerSource().formatter(),i=e.parse(e.format(t));return i.price?i.price:i.value},o.TargetPriceProperty.prototype.setValue=function(t){var e=Math.round(Math.abs(t-this._lineSource.entryPrice())*this._lineSource._model.mainSeries().base());this._lineSource.properties().profitLevel.setValue(e),this._lineSource.properties().profitLevel.listeners().fire(this._lineSource.properties().profitLevel)},o.prototype.pointsCount=function(){return 1},o.prototype.title=function(){return this.i18nCache.title},o.prototype.addPoint=function(t){var e,i;return t.price=this._roundPrice(t.price),a.prototype.addPoint.call(this,t,null,!0),e={price:t.price,index:t.index+50},a.prototype._addPointIntenal.call(this,e,null,!0),i=this.calculateActualEntry(t,e),i&&(a.prototype._addPointIntenal.call(this,i,null,!0),(e=this.findClosePoint(i,e))&&a.prototype._addPointIntenal.call(this,e,null,!0)),this._lastPoint=null,this.normalizePoints(),this.createServerPoints(),!0},o.prototype._roundPrice=function(t){var e=this._model.mainSeries().base();return Math.round(t*e)/e}, +o.prototype.recalculate=function(){var t,e,i,o,n;this.properties().interval.value()===this._model.mainSeries().interval()&&0!==this.points().length&&(t=this.properties().targetPrice.value(),e=this.properties().stopPrice.value(),i=[this._points[0],this._points[1]],o=this.calculateActualEntry(this.points()[0],this.points()[1]),o&&(i.push(o),(n=this.findClosePoint(o,this.points()[1]))&&i.push(n)),this._points=i,t!==this.properties().targetPrice.value()&&this.properties().targetPrice._listeners.fire(this.properties().targetPrice),e!==this.properties().stopPrice.value()&&this.properties().stopPrice._listeners.fire(this.properties().stopPrice))},o.prototype.start=function(){a.prototype.start.call(this),this.recalculate()},o.prototype.startMoving=function(t){t.price=this._roundPrice(t.price),a.prototype.startMoving.call(this,t)},o.prototype.move=function(t){t.price=this._roundPrice(t.price),a.prototype.move.call(this,t),this.recalculate(),this._entryPriceAxisView.update()},o.prototype.correctPoints=function(t){return a.prototype.correctPoints.call(this,[t[0],t[1]])},o.prototype.entryPrice=function(){return this.points()[0].price},o.prototype.findClosePoint=function(t,e){var i,o,n,r=this._model.mainSeries().bars(),a=s(r.firstIndex()),l=Math.max(t.index,a),c=s(r.lastIndex());for(i=l;i<=Math.min(c,e.index);i++)if(o=s(r.valueAt(i)),null!=(n=this.checkStopPrice(o)))return{index:i,price:n};return null},o.prototype.calculateActualEntry=function(t,e){var i,o,n=this._model.mainSeries().bars(),r=s(n.firstIndex()),a=Math.max(t.index,r),l=t.price,c=s(n.lastIndex());for(i=a;i<=Math.min(c,e.index);i++)if(o=s(n.valueAt(i)),o[TradingView.HIGH_PLOT]>=l&&o[TradingView.LOW_PLOT]<=l)return{index:i,price:l};return null},o.prototype.axisPoints=function(){var t,e,i;if(!this._points[p.ActualEntry])return[];if(t=this._points[p.ActualEntry],e=null,4===this._points.length)e=this._points[p.ActualClose];else{if(!(i=this.lastBarData()))return[];e={index:i.index,price:i.closePrice}}return[t,e]},o.prototype.getInputsPropertyPage=function(){return d.LineToolRiskRewardInputsPropertyPage},o.prototype.getStylesPropertyPage=function(){return d.LineToolRiskRewardStylesPropertyPage},inherit(n,o),n.prototype.i18nCache={title:$.t("Risk/Reward short")},n.prototype._recalculateQty=function(){var t,e,i,o,n;0!==this.points().length&&(t=this.properties(),e=t.entryPrice.value(),i=t.stopPrice.value(),o=t.riskSize.value(),n=Math.floor(o/Math.abs(i-e)),t.qty.setValue(n))},n.prototype._recalculateAmount=function(){var t,e,i,o,n,r,s,a;0!==this.points().length&&(t=this.properties(),e=t.accountSize.value(),i=t.entryPrice.value(),o=t.qty.value(),n=t.stopPrice.value(),r=t.targetPrice.value(),s=this._roundValue(e+(i-r)*o),a=this._roundValue(e-(n-i)*o),t.amountTarget.setValue(s),t.amountStop.setValue(a))},n.prototype.title=function(){return this.i18nCache.title},n.prototype.stopPrice=function(){return this.entryPrice()+this.properties().stopLevel.value()/this._model.mainSeries().base()},n.prototype.profitPrice=function(){ +return this.entryPrice()-this.properties().profitLevel.value()/this._model.mainSeries().base()},n.prototype.calculatePL=function(t){return this.entryPrice()-t},n.prototype.preparseStopPrice=function(t){t=this._roundPrice(t);var e=this.entryPrice()+1/this._model.mainSeries().base();return Math.max(t,e)},n.prototype.preparseProfitPrice=function(t){t=this._roundPrice(t);var e=this.entryPrice()-1/this._model.mainSeries().base();return Math.min(t,e)},n.prototype.checkStopPrice=function(t){var e=this.stopPrice(),i=this.profitPrice();return t[TradingView.HIGH_PLOT]>=e?this.stopPrice():t[TradingView.LOW_PLOT]<=i?this.profitPrice():null},r.prototype.i18nCache={title:$.t("Risk/Reward long")},inherit(r,o),r.prototype._recalculateQty=function(){var t,e,i,o,n;0!==this.points().length&&(t=this.properties(),e=t.entryPrice.value(),i=t.stopPrice.value(),o=t.riskSize.value(),n=Math.floor(o/Math.abs(e-i)),t.qty.setValue(n))},r.prototype._recalculateAmount=function(){var t,e,i,o,n,r,s,a;0!==this.points().length&&(t=this.properties(),e=t.accountSize.value(),i=t.entryPrice.value(),o=t.qty.value(),n=t.stopPrice.value(),r=t.targetPrice.value(),s=this._roundValue(e+(r-i)*o),a=this._roundValue(e-(i-n)*o),t.amountTarget.setValue(s),t.amountStop.setValue(a))},r.prototype.stopPrice=function(){return this.entryPrice()-this.properties().stopLevel.value()/this._model.mainSeries().base()},r.prototype.profitPrice=function(){return this.entryPrice()+this.properties().profitLevel.value()/this._model.mainSeries().base()},r.prototype.calculatePL=function(t){return t-this.entryPrice()},r.prototype.preparseStopPrice=function(t){t=this._roundPrice(t);var e=this.entryPrice()-1/this._model.mainSeries().base();return Math.min(t,e)},r.prototype.preparseProfitPrice=function(t){t=this._roundPrice(t);var e=this.entryPrice()+1/this._model.mainSeries().base();return Math.max(t,e)},r.prototype.checkStopPrice=function(t){var e=this.stopPrice(),i=this.profitPrice();return t[TradingView.LOW_PLOT]<=e?this.stopPrice():t[TradingView.HIGH_PLOT]>=i?this.profitPrice():null},r.prototype.title=function(){return this.i18nCache.title},e.LineToolRiskReward=o,e.LineToolRiskRewardLong=r,e.LineToolRiskRewardShort=n}).call(e,i(147))},function(t,e,i){"use strict";function o(t,e){this.customization={forcePriceAxisLabel:!0,disableSelection:!0,disableErasing:!0},n.call(this,t,e)}var n=i(3).LineDataSource;inherit(o,n),o.POINTS_COUNT=1,o.prototype.pointsCount=function(){return o.POINTS_COUNT},o.prototype.hasContextMenu=function(){return!1},o.prototype.state=function(){return null},o.prototype.startMoving=function(){n.prototype.startMoving.apply(this,arguments),this._cursorMoved=!1},o.prototype.endMoving=function(){n.prototype.endMoving.apply(this,arguments),this._cursorMoved=!1},o.prototype.correctPoints=function(t){var e,i,o,n,r;for(this._currentMovingPoint&&this._startMovingPoint?this._currentMovingPoint.price-this._startMovingPoint.price&&(this._cursorMoved=!0):this._cursorMoved=!1,e=this.priceScale(),i=e.mainSource().base(),o=1/i,n=0;n0;)u=f[h],t.moveTo(u.time,u.low),t.lineTo(u.time,u.high);t.stroke() +}for(t.lineWidth=1,d="",p=!1,t.beginPath(),h=f.length;h-- >0;)u=f[h],c=u.time,d!==u.color&&(p&&(t.stroke(),t.beginPath(),p=!1),t.strokeStyle=u.color,d=u.color),t.moveTo(u.time,u.open),t.lineTo(u.time,u.close),p=!0;p&&t.stroke()}else{if(f=f.slice().sort(function(t,e){return t.color>e.color?-1:t.colora[a.length-1].time+l)return null;for(e=null,i=0;i0?1/0:i<0?-1/0:t.zorder(),[t,i,e]}).sort(function(t,e){return t[1]-e[1]||t[2]-e[2]}).map(function(t){return t[0]})},n.prototype._updateMargins=function(){var t,e,i=.01*this._properties.topMargin.value(),o=.01*this._properties.bottomMargin.value();for(this.m_leftPriceScale.setTopMargin(i),this.m_leftPriceScale.setBottomMargin(o),this.m_rightPriceScale.setTopMargin(i),this.m_rightPriceScale.setBottomMargin(o),t=0;to)&&(o=i));return null===o&&(o=this.getZOrderMinMax().minZOrder-1),this.m_dataSources.forEach(function(t){t.zorder()>o&&t.setZorder(t.zorder()+1)}),o+1},n.prototype.beginInsertManyLineDataSources=function(){this._isInInsertManyDataSourcesState=!0,this._lastLineDataSourceZOrder=null},n.prototype.endInsertManyLineDataSources=function(){this._isInInsertManyDataSourcesState=!1,this._lastLineDataSourceZOrder=null},n.prototype.addDataSource=function(t,e,i){var o;t instanceof s&&!i?(o=null!==this._lastLineDataSourceZOrder?this._lastLineDataSourceZOrder:this._newZOrderForLineTool(),this._isInInsertManyDataSourcesState&&(this._lastLineDataSourceZOrder=o)):o=this.getZOrderMinMax().minZOrder-1,this.insertDataSource(t,e,o)},n.prototype.insertDataSource=function(t,i,o){var r,s,l;this.m_dataSources.push(t),r=!1,t===this._model.mainSeries()?(this.m_mainDataSource=t,r=!0):null===this.m_mainDataSource&&(this.m_mainDataSource=t,r=!0),t._isOverlay=!1,null!==i||this.canHaveMoreNoScaleSources()||(i=this.rightPriceScale()),null===i&&(s=this.m_rightPriceScale.topMargin(),l=this.m_rightPriceScale.bottomMargin(),t.metaInfo&&"Volume@tv-basicstudies"===t.metaInfo().id&&(s=.75,l=0),i=new c(new e(this._properties.overlayPropreties.state()),this._model.properties().scalesProperties),i.setHeight(this.m_height),i.setTopMargin(s),i.setBottomMargin(l),t._isOverlay=!0),i.addDataSource(t,this._isInInsertManyDataSourcesState),t.setPriceScale(i),t.onTagsChanged&&t.onTagsChanged().subscribe(this,n.prototype.onSourceTagsChanged),t.setZorder(o),r&&this._processMainSourceChange(),this._tagsChanged.fire(),TradingView.isInherited(t.constructor,a)&&this.recalculatePriceScale(i),this.invalidateSourcesCache()},n.prototype.removeDataSource=function(t,e){var i,o=this.m_dataSources.indexOf(t);if(-1===o)return void l.logDebug("removeDataSource: invalid data source");t._isOverlay=!1,this.m_dataSources.splice(o,1),t!==this.m_mainDataSource||e||(this.m_mainDataSource=null),i=null,-1!==this.m_leftPriceScale.dataSources().indexOf(t)?(this.m_leftPriceScale.removeDataSource(t),i=this.m_leftPriceScale):-1!==this.m_rightPriceScale.dataSources().indexOf(t)&&(this.m_rightPriceScale.removeDataSource(t),i=this.m_rightPriceScale),t.onTagsChanged&&t.onTagsChanged().unsubscribe(this,n.prototype.onSourceTagsChanged),TradingView.isInherited(t.constructor,a)&&this._processMainSourceChange(),this._tagsChanged.fire(),i&&TradingView.isInherited(t.constructor,a)&&this.recalculatePriceScale(i),this.invalidateSourcesCache()},n.prototype.startScalePrice=function(t,e){t.startScale(e)},n.prototype.scalePriceTo=function(t,e){t.scaleTo(e),this.updateAllViews()}, +n.prototype.endScalePrice=function(t){t.endScale()},n.prototype.startScrollPrice=function(t,e){t.startScroll(e)},n.prototype.scrollPriceTo=function(t,e){t.scrollTo(e),this.updateAllViews()},n.prototype.endScrollPrice=function(t){t.endScroll()},n.prototype.setPriceAutoScale=function(t,e){if(t.setAutoScale(e),this.timeScale().isEmpty())return void t.setPriceRange(null);this.recalculatePriceScale(t)},n.prototype.restorePriceScaleState=function(t,e){t.restoreState(e),this.updateAllViews()},n.prototype.updateAllViews=function(){for(var t=0;te&&(e=o.zorder());return{minZOrder:t,maxZOrder:e}},n.prototype.isZOrderAvailable=function(t){var e,i;for(e=0;e0&&e<0?(n=a[l-1].zorder(),r=t.zorder(),a[l-1].setZorder(r),t.setZorder(n)):l0&&(s=a[l+1].zorder(),r=t.zorder(),a[l+1].setZorder(r),t.setZorder(s)),this.invalidateSourcesCache()},n.prototype.onSourceTagsChanged=function(){this._tagsChanged.fire()},n.prototype.onTagsChanged=function(){return this._tagsChanged},n.prototype.dumpPriceScale=function(t){var e,i,o,n=t.dataSources(),r=[] +;for(e=0;e=0;t--)TradingView.isInherited(this.m_dataSources[t].constructor,TradingView.Series)&&this.m_dataSources.splice(t,1)},n.prototype.nonOverlayPricesSourcesCount=function(){return this.m_dataSources.filter(function(t){return(!t.properties().linkedToSeries||!t.properties().linkedToSeries.value())&&(TradingView.isInherited(t.constructor,a)&&t.showInObjectTree()&&!t.isNoScale())}).length},n.prototype.canHaveMoreNoScaleSources=function(){return this.nonOverlayPricesSourcesCount()>1},n.prototype.actionNoScaleIsEnabled=function(t){return!(!this.isOverlay(t)&&TradingView.isInherited(t.constructor,a))||this.canHaveMoreNoScaleSources()},n.prototype.executionsPositionController=function(){return this._executionsPositionController||(this._executionsPositionController=new r(this,this._model.timeScale())),this._executionsPositionController},n.prototype.isLast=function(){var t=this._model.panes();return t[t.length-1]===this},n.prototype.setMaximized=function(t){this._maximized=t},n.prototype.isMaximized=function(){return this._maximized},n.prototype.isMainPane=function(){var t=this._model.mainSeries(),e=!1;return this.m_dataSources.forEach(function(i){e||(e=i===t)}),this._isMainPane=e,e},n.prototype.properties=function(){return this._properties},t.exports=n}).call(e,i(52),i(20))},function(t,e,i){(function(e,o){"use strict";function n(t,e){if(this.m_base=t,this.m_integralDividers=e,this.m_fractionalDividers=[],l.isBaseDecimal(this.m_base))this.m_fractionalDividers=[2,2.5,2];else for(var i=this.m_base;1!==i;){if(i%2==0)this.m_fractionalDividers.push(2),i/=2;else{if(i%5!=0)throw new RangeError("unexpected base");this.m_fractionalDividers.push(2),this.m_fractionalDividers.push(2.5),i/=5}if(this.m_fractionalDividers.length>100)throw Error("something wrong with base")}}function r(t,e,i){this.m_marks=[],this.m_base=e,this.m_priceScale=t,this._formatter=i,i&&(this._cache=new c(function(t){return i.format(t)})),this._currentFormatBase=0}function s(t){for(var e=1;t*e!==Math.round(t*e);)e*=10;return e}function a(t,i){function n(){var t,e,i=s.m_dataSources;for(t=0;tn+r&&l.greaterOrEqual(s,n,r)&&l.greaterOrEqual(s,i*o,r)&&l.greaterOrEqual(s,1,r);++a,o=this.m_integralDividers[a%this.m_integralDividers.length])s/=o;if(s<=n+r&&(s=n),s=Math.max(1,s),this.m_fractionalDividers.length>0&&l.equal(s,1,r))for(a=0,o=this.m_fractionalDividers[0];s>n+r&&l.greaterOrEqual(s,i*o,r);++a,o=this.m_fractionalDividers[a%this.m_fractionalDividers.length])s/=o;return s},r.prototype.TICK_DENSITY=2.5,r.prototype.base=function(){return this.m_base},r.prototype.setBase=function(t){if(t<0)throw new RangeError("base < 0");this.m_base=t},r.prototype.fontHeight=function(){return this.m_priceScale.fontSize()},r.prototype.tickSpan=function(t,e){var i,o,r,s,a,c,h;if(t=e?1:-1,n=Math.max(i,e),r=Math.min(i,e),i=n,e=r,i!==e)for(a=this.tickSpan(i,e),l=i%a,l+=l<0?a:0,this.m_marks=[],this._formatter||(h=s(a),this._cache&&this._currentFormatBase===h||(u=new _(h),this._cache=new c(function(t){return u.format(t)}))),d=null,p=i-l;p>e;p-=a)f=this.m_priceScale.priceToCoordinate(p),null!==d&&Math.abs(f-d)30)throw new RangeError("invalid margin");this.m_topMargin=t,this._internalHeightCache=void 0,this._marksCache=null},a.prototype.bottomMargin=function(){return Math.max(this.m_bottomMargin,this._studyBottomMargin)},a.prototype.setBottomMargin=function(t){if(!isNumber(t))throw new TypeError("invalid margin");if(t<0||t>30)throw new RangeError("invalid margin");this.m_bottomMargin=t,this._internalHeightCache=void 0,this._marksCache=null},a.prototype.internalHeight=function(){if(this._internalHeightCache)return this._internalHeightCache;var t=this.height()*(1-this.topMargin()-this.bottomMargin());return this._internalHeightCache=t,t},a.prototype.priceRange=function(){return this.makeSureItIsValid(),this.m_priceRange},a.prototype.setPriceRange=function(t){if(!(t instanceof o))throw new TypeError("incorrect price range");var e=this.m_priceRange;null!==e&&e.equals(t)||(this.m_priceRange=t,this._marksCache=null,this._priceRangeChanged.fire(e,t))},a.prototype.priceRangeChanged=function(){return this._priceRangeChanged},a.prototype.isEmpty=function(){return this.makeSureItIsValid(),0===this.m_height||!this.m_priceRange||this.m_priceRange.isEmpty()},a.prototype.invertedCoordinate=function(t){return this.height()-1-t},a._logicalOffset=4,a._coordOffset=1e-4,a.prototype.log10=function(t){ +return Math.log(t)/Math.log(10)},a.prototype._toLog=function(t){var e,i=Math.abs(t);return i<1e-6?0:(e=this.log10(i+a._coordOffset)+a._logicalOffset,t<0?-e:e)},a.prototype.priceToLogical=function(t){return this.isLog()&&t?this._toLog(t):t},a.prototype._fromLog=function(t){var e,i=Math.abs(t);return i<1e-6?0:(e=Math.pow(10,i-a._logicalOffset)-a._coordOffset,t<0?-e:e)},a.prototype.logicalToPrice=function(t){return this.isLog()?this._fromLog(t):t},a.prototype.priceToCoordinate=function(t,e){var i,o;return this.makeSureItIsValid(),this.isEmpty()?0:(t=this.priceToLogical(t),i=this.bottomMargin()*this.height()+(this.internalHeight()-1)*(t-this.priceRange().minValue())/(this.priceRange().maxValue()-this.priceRange().minValue()),o=this.invertedCoordinate(i),e?o:Math.round(o))},a.prototype.pricesToCoordinates=function(t){this.pricesToCoordinatesEx(t,function(t){return t.y},function(t,e){t.y=e})},a.prototype.pricesToCoordinatesEx=function(t,e,i){var o,n,r,s,a,l,c,h,u;if(this.makeSureItIsValid(),o=this.bottomMargin()*this.height(),n=this.priceRange().minValue(),r=this.priceRange().maxValue(),s=this.internalHeight()-1,a=s/(r-n),this.isLog())for(l=0;l50?this.m_priceRange=t:(e.setBarSpacing(r),e._correctOffset()),this.mainSource().model().mainSeries().requestMoreData()}},a.prototype.endScale=function(){this.isPercentage()||null!==this.m_scaleStartPoint&&(this.m_scaleStartPoint=null,this.m_priceRangeSnapshot=null)},a.prototype.startScroll=function(t){this.isAutoScale()||null===this.m_scrollStartPoint&&null===this.m_priceRangeSnapshot&&(this.isEmpty()||(this.m_scrollStartPoint=t,this.m_priceRangeSnapshot=this.priceRange().clone()))},a.prototype.scrollTo=function(t){var e,i,o,n,r;this._marksCache=null,this.isAutoScale()||null!==this.m_scrollStartPoint&&(e=this.priceRange().length()/(this.height()-1),i=t-this.m_scrollStartPoint,o=i*e,n=this.m_priceRange,r=this.m_priceRangeSnapshot.clone(),r.shift(o),this.m_priceRange=r,this._priceRangeChanged.fire(n,r))},a.prototype.endScroll=function(){this.isAutoScale()||null!==this.m_scrollStartPoint&&(this.m_scrollStartPoint=null,this.m_priceRangeSnapshot=null)},a.prototype.state=function(){var t={};return t.m_priceRange=this.priceRange()?this.priceRange().serialize():null,t.m_isAutoScale=this.isAutoScale(),t.m_isPercentage=this._properties.percentage.value(),t.m_isLog=this._properties.log.value(),t.m_height=this.m_height,t.m_topMargin=this.m_topMargin,t.m_bottomMargin=this.m_bottomMargin,t},a.prototype.restoreState=function(t){var e,i,n=t.m_priceRange;if(void 0===n)throw new TypeError("invalid state");if(void 0===t.m_isAutoScale)throw new TypeError("invalid state");void 0!==t.m_isPercentage&&this._properties.percentage.setValue(t.m_isPercentage),void 0!==t.m_isLog&&this._properties.log.setValue(t.m_isLog),e=this.m_priceRange,i=n?new o(n):null,(null!==e&&(null===i||!i.equals(e))||null===e&&null!==i)&&(this.m_priceRange=i,this._priceRangeChanged.fire(e,i)),void 0!==t.m_height&&(this.m_height=Math.max(0,t.m_height)),this.setAutoScale(t.m_isAutoScale),void 0!==t.m_topMargin&&(this.m_topMargin=t.m_topMargin),void 0!==t.m_bottomMargin&&(this.m_bottomMargin=t.m_bottomMargin),this._mainSource=void 0,this._scaleSeriesOnly=!1},a.prototype.mainSource=function(){var t,e +;if(void 0!==this._mainSource)return this._mainSource;for(t=void 0,e=0;e.01||Math.abs(i-this._studyTopMargin)>.01)&&(this._studyBottomMargin=n,this._studyTopMargin=i,this._marksCache=null,this._internalHeightCache=null),t?(t.minValue()===t.maxValue()&&(t=new o(t.minValue()-.5,t.maxValue()+.5)),this.setPriceRange(t)):this.m_priceRange||this.setPriceRange(new o(-.5,.5)),this._invalidatedForRange.isValid=!0}},a.prototype.sourcesToUpdateViews=function(){var t,e;if(!this._sourcesToUpdateViews)for(this._sourcesToUpdateViews=[],t=0;t1;return 0===this._graphics.indexes.length&&!t},o.prototype.graphics=function(){return this._graphics},o.prototype.setGraphics=function(t){this._graphics=t,this._postProcessGraphicsData()},o.prototype.process=function(t){if(""!==t.d)return t.d.indexes_replace?void this.replaceIndexes(t):void(t.d.graphicsCmds&&(this.processEraseCmds(t.d.graphicsCmds.erase),this.processCreateCmds(t.d.graphicsCmds.create,t.indexes)))},o.prototype.replaceIndexes=function(t){""!==t.d&&(n(!!t.d.indexes_replace),this._graphics.indexes=t.indexes)},o.prototype.processEraseCmds=function(t){var e,i,r,s,a;if(t)for(n(!!this._graphics,"_graphics object doesn't exist in the study!"),n(!!this._graphics.indexes,"_graphics.indexes array doesn't exist in the study!"),e=0;e=0&&s.data.splice(a,1)}},o._findGraphicsObjIndexById=function(t,e){for(var i=0;i=c.priceHigh||d.priceLow>=c.priceLow)&&(d.priceHigh<=h.priceHigh||d.priceLow<=h.priceLow)&&(d.va=!0);n.shortDataObj||(n.shortDataObj={}),n.shortDataObj[s]=a.slice()}}},o._sortHHistItemsByPrice=function(t){t.sort(function(t,e){return t.priceLow-e.priceLow})},o._splitHHistItemsBySession=function(t,e){var i,o,n,s={};for(i=0;ia&&(l-=Math.abs(a-(c+r)),c=Math.floor(l-s)+.5),h=c,u=h+r,d=u,p=Math.round(this._data.coordinate+1),_=p,f=.5,m=f+e.borderSize+e.tickLength+e.paddingTop+e.fontSize+e.paddingBottom,g=m,v=f,y=v,b=y+e.borderSize+e.tickLength,S=m-e.baselineOffset-e.paddingBottom,t.fillStyle=this._data.background,t.lineWidth=1,t.beginPath(),t.strokeStyle=this._data.color,t.moveTo(c,f),t.lineTo(h,m),t.lineTo(u,g),t.lineTo(d,v),t.fill(),t.beginPath(),t.moveTo(p,y),t.lineTo(_,b),t.stroke(),t.textAlign="left",t.fillStyle=this._data.color,t.fillText(this._data.text,c+n,S)))},t.exports=i},function(t,e){!function(t,e){var i=5;t.widget("ui.slider",t.ui.mouse,{widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var e=this,o=this.options;if(this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all"),o.disabled&&this.element.addClass("ui-slider-disabled ui-disabled"),this.range=t([]), +o.range&&(!0===o.range?(this.range=t("
"),o.values||(o.values=[this._valueMin(),this._valueMin()]),o.values.length&&2!==o.values.length&&(o.values=[o.values[0],o.values[0]])):this.range=t("
"),this.range.appendTo(this.element).addClass("ui-slider-range"),"min"!==o.range&&"max"!==o.range||this.range.addClass("ui-slider-range-"+o.range),this.range.addClass("ui-widget-header")),0===t(".ui-slider-handle",this.element).length&&t("").appendTo(this.element).addClass("ui-slider-handle"),o.values&&o.values.length)for(;t(".ui-slider-handle",this.element).length").appendTo(this.element).addClass("ui-slider-handle");this.handles=t(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all"),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(t){t.preventDefault()}).hover(function(){o.disabled||t(this).addClass("ui-state-hover")},function(){t(this).removeClass("ui-state-hover")}).focus(function(){o.disabled?t(this).blur():(t(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),t(this).addClass("ui-state-focus"))}).blur(function(){t(this).removeClass("ui-state-focus")}),this.handles.each(function(e){t(this).data("index.ui-slider-handle",e)}),this.handles.keydown(function(o){var n,r,s,a=!0,l=t(this).data("index.ui-slider-handle");if(!e.options.disabled){switch(o.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(a=!1,!e._keySliding&&(e._keySliding=!0,t(this).addClass("ui-state-active"),!1===e._start(o,l)))return}switch(s=e.options.step,n=r=e.options.values&&e.options.values.length?e.values(l):e.value(),o.keyCode){case t.ui.keyCode.HOME:r=e._valueMin();break;case t.ui.keyCode.END:r=e._valueMax();break;case t.ui.keyCode.PAGE_UP:r=e._trimAlignValue(n+(e._valueMax()-e._valueMin())/i);break;case t.ui.keyCode.PAGE_DOWN:r=e._trimAlignValue(n-(e._valueMax()-e._valueMin())/i);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(n===e._valueMax())return;r=e._trimAlignValue(n+s);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(n===e._valueMin())return;r=e._trimAlignValue(n-s)}return e._slide(o,l,r),a}}).keyup(function(i){var o=t(this).data("index.ui-slider-handle");e._keySliding&&(e._keySliding=!1,e._stop(i,o),e._change(i,o),t(this).removeClass("ui-state-active"))}),this._refreshValue(),this._animateOff=!1},destroy:function(){return this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"),this._mouseDestroy(),this},_mouseCapture:function(e){var i,o,n,r,s,a,l,c,h=this.options;return!h.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},o=this._normValueFromMouse(i), +n=this._valueMax()-this._valueMin()+1,s=this,this.handles.each(function(e){var i=Math.abs(o-s.values(e));n>i&&(n=i,r=t(this),a=e)}),!0===h.range&&this.values(1)===h.min&&(a+=1,r=t(this.handles[a])),!1!==this._start(e,a)&&(this._mouseSliding=!0,s._handleIndex=a,r.addClass("ui-state-active").focus(),l=r.offset(),c=!t(e.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=c?{left:0,top:0}:{left:e.pageX-l.left-r.width()/2,top:e.pageY-l.top-r.height()/2-(parseInt(r.css("borderTopWidth"),10)||0)-(parseInt(r.css("borderBottomWidth"),10)||0)+(parseInt(r.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,o),this._animateOff=!0,!0))},_mouseStart:function(t){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,o,n,r;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),o=i/e,o>1&&(o=1),o<0&&(o=0),"vertical"===this.orientation&&(o=1-o),n=this._valueMax()-this._valueMin(),r=this._valueMin()+o*n,this._trimAlignValue(r)},_start:function(t,e){var i={handle:this.handles[e],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger("start",t,i)},_slide:function(t,e,i){var o,n,r;this.options.values&&this.options.values.length?(o=this.values(e?0:1),2===this.options.values.length&&!0===this.options.range&&(0===e&&i>o||1===e&&i1&&(this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e)),!arguments.length)return this._values() +;if(!t.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(e):this.value();for(o=this.options.values,n=arguments[0],r=0;r=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e;return alignValue=t-i,2*Math.abs(i)>=e&&(alignValue+=i>0?e:-e),parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var e,i,o,n,r,s=this.options.range,a=this.options,l=this,c=!this._animateOff&&a.animate,h={};this.options.values&&this.options.values.length?this.handles.each(function(o,n){e=(l.values(o)-l._valueMin())/(l._valueMax()-l._valueMin())*100,h["horizontal"===l.orientation?"left":"bottom"]=e+"%",t(this).stop(1,1)[c?"animate":"css"](h,a.animate),!0===l.options.range&&("horizontal"===l.orientation?(0===o&&l.range.stop(1,1)[c?"animate":"css"]({left:e+"%"},a.animate),1===o&&l.range[c?"animate":"css"]({width:e-i+"%"},{queue:!1,duration:a.animate})):(0===o&&l.range.stop(1,1)[c?"animate":"css"]({bottom:e+"%"},a.animate),1===o&&l.range[c?"animate":"css"]({height:e-i+"%"},{queue:!1,duration:a.animate}))),i=e}):(o=this.value(),n=this._valueMin(),r=this._valueMax(),e=r!==n?(o-n)/(r-n)*100:0,h["horizontal"===l.orientation?"left":"bottom"]=e+"%",this.handle.stop(1,1)[c?"animate":"css"](h,a.animate),"min"===s&&"horizontal"===this.orientation&&this.range.stop(1,1)[c?"animate":"css"]({width:e+"%"},a.animate),"max"===s&&"horizontal"===this.orientation&&this.range[c?"animate":"css"]({width:100-e+"%"},{queue:!1,duration:a.animate}),"min"===s&&"vertical"===this.orientation&&this.range.stop(1,1)[c?"animate":"css"]({height:e+"%"},a.animate),"max"===s&&"vertical"===this.orientation&&this.range[c?"animate":"css"]({ +height:100-e+"%"},{queue:!1,duration:a.animate}))}}),t.extend(t.ui.slider,{version:"@VERSION"})}(jQuery)},function(t,e,i){"use strict";function o(){}var n=i(57).Interval,r=i(97);o.isAvailable=function(t){var e,i=r.supportedResolutions.value(),o=!1;return o=void 0===i||-1!==i.indexOf(t),e=r.intraday.value(),e?o:n.isDWM(t)&&o},t.exports=o},function(t,e){"use strict";var i,o=function(){try{this.isAvailable=!0,this.localStorage=window.localStorage,this.localStorage.setItem("tvlocalstorage.available","true")}catch(t){delete this.isAvailable,delete this.localStorage}this._updateLength()};o.prototype.length=0,o.prototype.isAvailable=!1,o.prototype.localStorage={"tvlocalstorage.available":"false"},o.prototype._updateLength=function(){var t,e;if(this.isAvailable)this.length=this.localStorage.length;else{t=0;for(e in this.localStorage)this.localStorage.hasOwnProperty(e)&&t++;this.length=t}},o.prototype.key=function(t){return this.isAvailable?this.localStorage.key(t):Object.keys(this.localStorage)[t]},o.prototype.getItem=function(t){return this.isAvailable?this.localStorage.getItem(t):this.localStorage[t]},o.prototype.setItem=function(t,e){this.isAvailable?this.localStorage.setItem(t,e):this.localStorage[t]=e,this._updateLength()},o.prototype.removeItem=function(t){this.isAvailable?this.localStorage.removeItem(t):delete this.localStorage[t],this._updateLength()},o.prototype.clear=function(){this.isAvailable?this.localStorage.clear():this.localStorage={},this._updateLength()},i=function(t){this.storage=t},i.prototype.getItem=function(t){return Promise.resolve(this.storage.getItem(t))},i.prototype.setItem=function(t,e){return Promise.resolve(this.storage.setItem(t,e))},window.TVLocalStorage=new o,window.TVLocalStorageAsync=new i(window.TVLocalStorage),t.exports={TVLocalStorage:window.TVLocalStorage,TVLocalStorageAsync:window.TVLocalStorageAsync}},,,,,,,,,,,,,,,,,,function(t,e,i){var o,n;!function(r,s){"object"==typeof t&&t.exports?t.exports=s():(o=s,void 0!==(n="function"==typeof o?o.call(e,i,e,t):o)&&(t.exports=n))}(0,function(){"use strict";function t(t,e){var i,o=document.createElement(t||"div");for(i in e)o[i]=e[i];return o}function e(t){for(var e=1,i=arguments.length;e',i)}h.addRule(".spin-vml","behavior:url(#default#VML)"),a.prototype.lines=function(t,o){function r(){return n(i("group",{coordsize:h+" "+h,coordorigin:-c+" "+-c}),{width:h,height:h})}function a(t,a,l){e(d,e(n(r(),{rotation:360/o.lines*t+"deg",left:~~a}),e(n(i("roundrect",{arcsize:o.corners}),{width:c,height:o.scale*o.width,left:o.scale*o.radius,top:-o.scale*o.width>>1,filter:l}),i("fill",{color:s(o.color,t),opacity:o.opacity}),i("stroke",{opacity:0}))))}var l,c=o.scale*(o.length+o.width),h=2*o.scale*c,u=-(o.width+o.length)*o.scale*2+"px",d=n(r(),{position:"absolute",top:u,left:u});if(o.shadow)for(l=1;l<=o.lines;l++)a(l,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(l=1;l<=o.lines;l++)a(l);return e(t,d)},a.prototype.opacity=function(t,e,i,o){var n=t.firstChild;o=o.shadow&&o.lines||0,n&&e+o>1)+"px"})}for(var l,h=0,u=(r.lines-1)*(1-r.direction)/2;h=i;e--)this._unsubscribeOwner(this._ownersStack[e],!0);this._ownersStack.length=i,i>0?this._subscribeOwner(this._ownersStack[i-1]):(this._alive.setValue(!1),this._owner.deleteValue())},t}(),e.ResizerDetacherState=r},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});!function(t){t[t.Bars=0]="Bars",t[t.Line=1]="Line",t[t.OpenClose=2]="OpenClose",t[t.LineOpen=3]="LineOpen",t[t.LineHigh=4]="LineHigh",t[t.LineLow=5]="LineLow",t[t.LineHL2=6]="LineHL2"}(e.LineToolBarsPatternMode||(e.LineToolBarsPatternMode={}))},function(t,e,i){"use strict";var o,n,r,s;Object.defineProperty(e,"__esModule",{value:!0}),o=i(5),n=i(95),r=i(34),s=function(t){function e(e,i){var o=t.call(this)||this;return o._activeBackground="#0F6DBF",o._background="#5592C9",o._active=!1,o._source=e,o._data=i,o}return o.__extends(e,t),e.prototype.setActive=function(t){this._active=t},e.prototype.setBackground=function(t){this._background=t},e.prototype._updateRendererData=function(t){var e,i,o,n,s,a,l,c;if(t.visible=!1,e=this._source.model(),e.timeScale()&&!e.timeScale().isEmpty()&&null!==(i=this._source.priceScale())&&!i.isEmpty()&&(e.selectedSource()===this._source||this._source.isForcedDrawPriceAxisLabel())&&null!==e.timeScale().visibleBars()&&(o=this._source.axisPoints(),n=this._data.pointIndex,!(o.length<=n)&&(s=o[n],isFinite(s.price)))){if(i.isPercent()){if(!(a=this._source.ownerSource()))return;if(l=a.firstValue(),!r.isNumber(l))return;s.price=i.priceRange().convertToPercent(s.price,l)}c=this._active?this._activeBackground:this._background,this._data.backgroundProperty&&(c=this._data.backgroundProperty.value()),t.background=c,t.borderColor="#2E84A6",t.color=this.generateTextColor(c),t.coordinate=i.priceToCoordinate(s.price),t.text=i.formatter().format(s.price),t.visible=!0}},e}(n.PriceAxisView),e.LineToolPriceAxisView=s},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});!function(t){t.offset=8,t.font="Arial",t.fontSize=12,t.lineSpacing=10,t.bgColor="rgba(255,255,255,.8)",t.borderColor="#e3e3e3",t.padding=8}(e.LabelSettings||(e.LabelSettings={}))},,function(t,e,i){"use strict";var o,n,r,s;Object.defineProperty(e,"__esModule",{value:!0}),o=i(21),n=i(42),function(t){t[t.FromLeft=-1]="FromLeft",t[t.FromRight=1]="FromRight"}(r=e.TimePointIndexSearchMode||(e.TimePointIndexSearchMode={})), +s=function(){function t(t){this.m_bars=new n.PlotList(t),this.m_nsBars=new n.PlotList(t)}return t.prototype.bars=function(){return this.m_bars},t.prototype.nsBars=function(){return this.m_nsBars},t.prototype.size=function(){return this.m_bars.size()+this.m_nsBars.size()},t.prototype.each=function(t){this.m_bars.each(t),this.m_nsBars.each(t)},t.prototype.clear=function(){this.m_bars.clear(),this.m_nsBars.clear(),this.lastProjectionPrice=void 0},t.prototype.isEmpty=function(){return this.m_bars.isEmpty()&&this.m_nsBars.isEmpty()},t.prototype.first=function(){return this.m_bars.isEmpty()?this.m_nsBars.first():this.m_bars.first()},t.prototype.last=function(){return this.m_nsBars.isEmpty()?this.m_bars.last():this.m_nsBars.last()},t.prototype.search=function(t,e){return this.nsBars().isEmpty()?this.bars().search(t,e):this.bars().isEmpty()?this.nsBars().search(t,e):o.ensureNotNull(this.nsBars().firstIndex())<=t?this.nsBars().search(t,e):this.bars().search(t,e)},t.prototype.valueAt=function(t){var e=this.search(t);return null!==e?e.value:null},t.prototype.plotValueToTimePointIndex=function(t,e,i){var o,n,s,a;if(i===r.FromRight)return o=function(i,o){var n=o[e];return void 0!==n&&null!==n&&t>=n},null!==(n=this.m_bars.findLast(o))?n.index:(s=this.m_nsBars.findLast(o),null!==s?s.index:this.m_bars.firstIndex());if(i===r.FromLeft)return a=function(i,o){var n=o[e];return void 0!==n&&null!==n&&t<=n},null!==(n=this.m_bars.findFirst(a))?n.index:(s=this.m_nsBars.findFirst(a),null!==s?s.index:this.m_bars.lastIndex());throw Error("plotValueToTimePointIndex: unsupported search mode")},t}(),e.SeriesData=s},function(t,e,i){"use strict";function o(t){var e=t.split(":");return{name:e[0],type:2===e.length?e[1]:null}}function n(t,e,i,n){var r,s,a,l,c,p,_,f,m,g,v,y,b,S,w,T=i.split(".");if(0!==T.length&&0!==T[0].length){if(r=o(T[0]),s=r.name,a=r.type,l=null!==a,c=!l||"plot"===a,p=!l||"band"===a,_=!l||"area"===a,f=!l||"input"===a,m=c?d.getPlotIdByTitle(t,s):null,g=p?d.getBandIndexByName(t,s):null,v=_?d.getFilledAreaIdByTitle(t,s):null,y=f?d.getInputByName(t,s):null,b=e.hasOwnProperty(s),(null!==m?1:0)+(null!==g?1:0)+(null!==v?1:0)+(null!==y?1:0)+(b?1:0)>1)return void h.logWarn("Study '"+t.description+"' has ambiguous identifier '"+s+"'");if(S=T[1],null!==m){if(1===T.length)return void h.logWarn("Path of sub-property of '"+s+"' plot for study '"+t.description+"' must be not empty");w=T.slice(1),u.applyPlotProperty(t,e,m,w,n)}else if(null!==y)u.applyInputValue(e,y,n);else if(null!==g){if(void 0===S)return void h.logWarn("Property name of '"+s+"' band for study '"+t.description+"' must be set");u.applyBandProperty(e,g,S,n)}else if(null!==v){if(void 0===S)return void h.logWarn("Property name of '"+s+"' area for study '"+t.description+"' must be set");u.applyFilledAreaProperty(e,v,S,n)}else b?u.setRootProperty(e,T,n):h.logWarn("Study '"+t.description+"' has no plot or input '"+s+"'")}}function r(t,e){var i,o,r=t.properties(),s=r.state();for(i in e)e.hasOwnProperty(i)&&n(t.metaInfo(),s,i,e[i]);r.merge(s),o=r.precision, +void 0!==o?o.listeners().fire(o):r.listeners().fire(r)}function s(t,e,i){var o,r,s,a,l;for(o in t)t.hasOwnProperty(o)&&-1!==(r=o.indexOf("."))&&(s=o.substr(0,r),a=d.getMetaInfoByDescription(e,s),null!==a?(l=i(a.id),null!==l?n(a,l,o.substr(r+1),t[o]):h.logWarn("Cannot apply overrides for study "+s)):h.logWarn("There is no such study "+s))}var a,l,c,h,u,d;Object.defineProperty(e,"__esModule",{value:!0}),a=i(106),l=i(21),c=i(13),h=c.getLogger("Chart.Model.StudyPropertiesOverrider"),function(t){function e(t){return"colorer"===t.type}function i(t,i,o){var n,r,s,a;if(void 0===t.plots)return null;for(n=0,r=t.plots;n0?void h.logWarn("Study plot does not have color #"+o):((0===o||isNaN(o))&&(l.ensureDefined(t.styles[i]).color=n+"",o=0),void(null!==e&&(l.ensureDefined(e.colors[o]).color=n+"")))}function n(t,e,n,r,s){var a,l,c,u,p;if(void 0===e.styles)return void h.logWarn("Study does not have styles");if("color"===(a=r[0]))return l=i(t,e,n),c=r.length>1?parseInt(r[1]):NaN,void o(e,l,n,c,s);if(void 0===(u=e.styles[n])||!u.hasOwnProperty(a))return void h.logWarn("Study plot does not have property '"+a+"'");if("plottype"===a){if(void 0===(p=d[s+""]))return void h.logWarn("Unsupported plot type for plot: "+s);s=p}u[a]=s}function r(t,e,i,o){var n,r;if(void 0===t.bands)return void h.logWarn("Study does not have bands");if(void 0===(n=t.bands[e])||!n.hasOwnProperty(i))return void h.logWarn("Study band does not have property '"+i+"'");if("plottype"===i){if(void 0===(r=d[o+""]))return void h.logWarn("Unsupported plot type for band: "+o);o=r}n[i]=o}function s(t,e,i,o){if(void 0===t.filledAreasStyle)return void h.logWarn("Study does not have areas");var n=t.filledAreasStyle[e];if(void 0===n||!n.hasOwnProperty(i))return void h.logWarn("Study area does not have property '"+i+"'");n[i]=o}function c(t,e,i){if(void 0===t.inputs||!t.inputs.hasOwnProperty(e))return void h.logWarn("Study does not have input '"+e+"'");t.inputs[e]=i}function u(t,e,i){var o,n,r,s,a;if(0!==e.length){for(o=t,n=0,r=e.slice(0,-1);n'},function(t,e){ +t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,e){},function(t,e){},,,,function(t,e,i){var o;!function(n,r,s,a){"use strict";function l(t,e,i){return setTimeout(p(t,i),e)}function c(t,e,i){return!!Array.isArray(t)&&(h(t,i[e],i),!0)}function h(t,e,i){var o;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==a)for(o=0;o\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",r=n.console&&(n.console.warn||n.console.log);return r&&r.call(n.console,o,i),t.apply(this,arguments)}}function d(t,e,i){var o,n=e.prototype;o=t.prototype=Object.create(n),o.constructor=t,o._super=n,i&&ft(o,i)}function p(t,e){return function(){return t.apply(e,arguments)}}function _(t,e){return typeof t==Te?t.apply(e?e[0]||a:a,e):t}function f(t,e){return t===a?e:t}function m(t,e,i){h(b(e),function(e){t.addEventListener(e,i,!1)})}function g(t,e,i){h(b(e),function(e){t.removeEventListener(e,i,!1)})}function v(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function y(t,e){return t.indexOf(e)>-1}function b(t){return t.trim().split(/\s+/g)}function S(t,e,i){ +if(t.indexOf&&!i)return t.indexOf(e);for(var o=0;oi[e]}):n.sort()),n}function x(t,e){for(var i,o,n=e[0].toUpperCase()+e.slice(1),r=0;r1&&!l.firstMultiple?l.firstMultiple=V(e):1===h&&(l.firstMultiple=!1),i=l.firstInput,o=l.firstMultiple,n=o?o.center:i.center,r=e.center=D(c),e.timeStamp=Pe(),e.deltaTime=e.timeStamp-i.timeStamp,e.angle=z(n,r),e.distance=R(n,r),M(l,e),e.offsetDirection=B(e.deltaX,e.deltaY),s=O(e.deltaTime,e.deltaX,e.deltaY),e.overallVelocityX=s.x,e.overallVelocityY=s.y,e.overallVelocity=Ce(s.x)>Ce(s.y)?s.x:s.y,e.scale=o?N(o.pointers,c):1,e.rotation=o?F(o.pointers,c):0,e.maxPointers=l.prevInput?e.pointers.length>l.prevInput.maxPointers?e.pointers.length:l.prevInput.maxPointers:e.pointers.length,E(l,e),a=t.element,v(e.srcEvent.target,a)&&(a=e.srcEvent.target),e.target=a}function M(t,e){var i=e.center,o=t.offsetDelta||{},n=t.prevDelta||{},r=t.prevInput||{};e.eventType!==It&&r.eventType!==At||(n=t.prevDelta={x:r.deltaX||0,y:r.deltaY||0},o=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=n.x+(i.x-o.x),e.deltaY=n.y+(i.y-o.y)}function E(t,e){var i,o,n,r,s,l,c,h=t.lastInterval||e,u=e.timeStamp-h.timeStamp;e.eventType!=Mt&&(u>Lt||h.velocity===a)?(s=e.deltaX-h.deltaX,l=e.deltaY-h.deltaY,c=O(u,s,l),o=c.x,n=c.y,i=Ce(c.x)>Ce(c.y)?c.x:c.y,r=B(s,l),t.lastInterval=e):(i=h.velocity,o=h.velocityX,n=h.velocityY,r=h.direction),e.velocity=i,e.velocityX=o,e.velocityY=n,e.direction=r}function V(t){for(var e=[],i=0;i=Ce(e)?t<0?Vt:Dt:e<0?Ot:Bt}function R(t,e,i){i||(i=Nt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return Math.sqrt(o*o+n*n)}function z(t,e,i){i||(i=Nt) +;var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return 180*Math.atan2(n,o)/Math.PI}function F(t,e){return z(e[1],e[0],Wt)+z(t[1],t[0],Wt)}function N(t,e){return R(e[0],e[1],Wt)/R(t[0],t[1],Wt)}function W(){this.evEl=Ht,this.evWin=Ut,this.pressed=!1,L.apply(this,arguments)}function $(){this.evEl=Gt,this.evWin=Yt,L.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function H(){this.evTarget=Zt,this.evWin=Xt,this.started=!1,L.apply(this,arguments)}function U(t,e){var i=w(t.touches),o=w(t.changedTouches);return e&(At|Mt)&&(i=T(i.concat(o),"identifier",!0)),[i,o]}function j(){this.evTarget=Qt,this.targetIds={},L.apply(this,arguments)}function q(t,e){var i,o,n,r,s,l=w(t.touches),c=this.targetIds;if(e&(It|kt)&&1===l.length)return c[l[0].identifier]=!0,[l,l];if(n=w(t.changedTouches),r=[],s=this.target,o=l.filter(function(t){return v(t.target,s)}),e===It)for(i=0;i-1&&i.splice(t,1)},setTimeout(o,te))}function Z(t){var e,i,o,n,r=t.srcEvent.clientX,s=t.srcEvent.clientY;for(e=0;e-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){i.manager.emit(e,t)}var i=this,o=this.state;o<_e&&e(i.options.event+et(o)),e(i.options.event),t.additionalEvent&&e(t.additionalEvent),o>=_e&&e(i.options.event+et(o))},tryEmit:function(t){if(this.canEmit())return this.emit(t) +;this.state=ge},canEmit:function(){for(var t=0;te.threshold&&n&e.direction},attrTest:function(t){return nt.prototype.attrTest.call(this,t)&&(this.state&de||!(this.state&de)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=it(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),d(st,nt,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[ae]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&de)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),d(at,tt,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[re]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distancee.time;if(this._input=t,!o||!i||t.eventType&(At|Mt)&&!n)this.reset();else if(t.eventType&It)this.reset(),this._timer=l(function(){this.state=fe,this.tryEmit()},e.time,this);else if(t.eventType&At)return fe;return ge},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===fe&&(t&&t.eventType&At?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=Pe(),this.manager.emit(this.options.event,this._input)))}}),d(lt,nt,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[ae]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&de)}}),d(ct,nt,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Rt|zt,pointers:1},getTouchAction:function(){return rt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Rt|zt)?e=t.overallVelocity:i&Rt?e=t.overallVelocityX:i&zt&&(e=t.overallVelocityY), +this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&Ce(e)>this.options.velocity&&t.eventType&At},emit:function(t){var e=it(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),d(ht,tt,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[se]},process:function(t){var e,i,o=this.options,n=t.pointers.length===o.pointers,r=t.distance0&&void 0!==arguments[0]?arguments[0]:"keydown";i(this,t),this._event=e}return o(t,[{key:"regHandlers",value:function(t){this._handlers=t}},{key:"watchOn",value:function(t){this._listener=this._regListener(),this._watchingEl=t,t.addEventListener(this._event,this._listener)}},{key:"stopWatching",value:function(){this._watchingEl.removeEventListener(this._event,this._listener)}},{key:"_regListener",value:function(){var t=this;return function(e){var i=e.which,o=t._getHandler(i);e.stopPropagation(),o(e)}}},{key:"_getHandler",value:function(t){var e=this._handlers[t],i=function(){},o=function(t){t.preventDefault(),e(t)};return e?o:i}}]),t}()},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i={SELECT:"select"};e.events=i},function(t,e,i){"use strict";function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var n,r,s,a,l;Object.defineProperty(e,"__esModule",{value:!0}),e.AddCompareDialog=void 0,n=function(){function t(t,e){var i,o;for(i=0;i2&&void 0!==arguments[2]?arguments[2]:{};for(y=$.extend({},{title:$.t("Confirm Inputs"),callback:function(t){}},y),i=null,o=(0,s.createDialog)({title:y.title,contentWrapTemplate:'
',width:u,closeOnClickAtOtherDialogs:!0,destroyOnClose:!0,actionsWrapTemplate:'
',isClickOutFn:function(t){var e=i.symbolSearchPopup();if(e)return e[0]!==t.target&&!e[0].contains(t.target)&&void 0},actions:[{name:"apply",type:"primary",text:$.t("Apply"),key:13}]}),d=o,n=(0,l.merge)({},e.defaults.inputs),r=0;ru&&o.$el.css("max-width",v),f.find("input,select").first().focus()}function r(){return d}var s,a,l,c,h,u,d;Object.defineProperty(e,"__esModule",{value:!0}),e.show=n,e.instance=r,s=i(96),a=i(271),l=i(34),c=i(52),h=o(c),i(142),u=450,d=null},function(t,e,i){"use strict";function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){var i=new Date(t+e),o=Math.round(Math.abs(e)/6e4),n="UTC";return 0!==o&&(n+=e>0?"+":"-",n+=Math.floor(o/60),o%60&&(n+=":"+o%60)),i.getUTCFullYear()+"-"+("0"+(i.getUTCMonth()+1)).slice(-2)+"-"+("0"+i.getUTCDate()).slice(-2)+" "+("0"+i.getUTCHours()).slice(-2)+":"+("0"+i.getUTCMinutes()).slice(-2)+" ("+n+")"}function r(t){return"string"==typeof t&&0!==t.trim().length}function s(t){var e,i,o,n,s;if(!t||0===t.length)return!0;for(e=0;e2&&void 0!==arguments[2]&&arguments[2];return t.hasOwnProperty("text")?t.hasOwnProperty("color")&&i?e.append($("",{style:"color: "+t.color}).text(t.text)):e.text(t.text):e.text(t)}function l(t,e){if(Array.isArray(t)&&2===t.length)$("
").append(a(t[0],$("
")),a(t[1],$("
"),!0)).appendTo(e);else if(t.hasOwnProperty("br")&&t.br)$("
").appendTo(e);else{var i=$("
").append(a(t,$("
"))).appendTo(e);t.hasOwnProperty("listItem")&&i.addClass("list-item")}}function c(t,e){$("").attr("href",t.href).text(t.text).addClass(t.class).appendTo(e)}function h(t,e){var i,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";if("string"==typeof t)$("

").text(t).appendTo(e);else if(t.hasOwnProperty("lines"))for(i=0;i").text(t.lines[i].line).appendTo(e):l(t.lines[i].line,e):t.lines[i].hasOwnProperty("link")&&c(t.lines[i].link,e);else t.hasOwnProperty("title")&&$("

").text(t.title).appendTo(e),t.hasOwnProperty("actual")&&$("
").append($("
").text($.t("Actual")+": "),$("
").text(t.actual||"—")).appendTo(e),t.hasOwnProperty("forecast")&&$("
").append($("
").text($.t("Forecast")+": "),$("
").text(t.forecast||"—")).appendTo(e),t.hasOwnProperty("previous")&&$("
").append($("
").text($.t("Previous")+": "),$("
").text(t.previous||"—")).appendTo(e),t.hasOwnProperty("timestamp")&&$("
").append($("
").text($.t("Date")+": "),$("
").text(n(t.timestamp,o)||"—")).appendTo(e)}var u;Object.defineProperty(e,"__esModule",{value:!0}),e.Tooltip=void 0,u=function(){function t(t,e){var i,o;for(i=0;i0&&void 0!==arguments[0]?arguments[0]:{},i=e.direction,n=void 0===i?"top":i,r=e.clickable,s=void 0!==r&&r,a=e.wide,l=void 0!==a&&a;o(this,t),this._direction=n,this._tooltipShown=!1,this._tooltipX=void 0,this._tooltipY=void 0,this._tooltipItems=null,this._width=l?250:200,this._$tooltip=$("
").addClass("tv-chart-events-source__tooltip").css({position:"absolute",width:this._width+"px"}),this._$tooltipContent=$("
").addClass("tv-chart-events-source__tooltip__content").appendTo(this._$tooltip),s&&this._$tooltip.addClass("tv-chart-events-source__tooltip--clickable")}return u(t,[{key:"show",value:function(){var t,e,i,o,n,r,a,l,c,u,d,p,_,f,m,g,v,y,b,S=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},w=S.items,T=void 0===w?[]:w,x=S.x,C=void 0===x?0:x,P=S.y,L=void 0===P?0:P,I=S.wrapElement,k=void 0===I?null:I,A=S.timeOffset,M=void 0===A?"":A,E=S.leftBorderColor,V=void 0===E?null:E;if(k&&!s(T)){if(t=$(k).width(),e=$(k).height(),i=!1,o=!1,this._tooltipShown||(this._$tooltip.appendTo(k),this._tooltipShown=!0,i=!0,o=!0),C===this._tooltipX&&L===this._tooltipY||(i=!0),i&&(n=Math.max(Math.min(C-this._width/2,t-this._width-10),0),this._$tooltip.css({left:Math.round(n),bottom:Math.round(e-L+10)})),this._tooltipItems||(o=!0),!o)for(r=T.length;r--;)if(this._tooltipItems[r]!==T[r]){o=!0;break}if(o){if(a=void 0,T.length<=1)a=T;else{for(l={},c=T.length;c--;)u=T[c].importance,null==u&&(u=-1),l[u]||(l[u]=[]),l[u].push(T[c]);if(d=Object.keys(l).sort(function(t,e){return t-e}),d.length<=1)a=l[d[0]];else for(a=[],p=d.length;p--;)for(_=l[d[p]],f=_.length;f--;)a.push(_[f])}for(this._$tooltipContent.empty(),m=a.length;m--;)g=a[m],v="",g.hasOwnProperty("importance")?("string"==typeof g.importance&&("earnings"===g.importance?v="--importance-earnings":"splits"===g.importance?v="--importance-splits":"dividends"===g.importance?v="--importance-dividends":"list"===g.importance&&(v="--importance-list")),0===g.importance?v="--importance-normal":g.importance>0&&(v="--importance-high")):V||(v="--importance-none"),y="tv-chart-events-source__tooltip__item",v&&(y+=" "+y+v),b=$("
").attr("class",y),V&&b.css("border-left-color",V),h(g,b,M),b.appendTo(this._$tooltipContent);this._tooltipItems=T}"bottom"===this._direction&&this._$tooltip.css({bottom:Math.round(e-L-this._$tooltipContent.height()+10)})}}},{key:"hide",value:function(){this._tooltipShown&&(this._$tooltip.detach(),this._tooltipShown=!1)}},{key:"isOpened",value:function(){return this._tooltipShown}}]),t}()},function(t,e,i){"use strict";function o(t){var e,i;if(t&&t.__esModule)return t;if(e={},null!=t)for(i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var r,s,a,l,c,h,u,d;Object.defineProperty(e,"__esModule",{value:!0}),e.DropdownView=void 0,r=function(){function t(t,e){ +var i,o;for(i=0;i1&&void 0!==arguments[1]?arguments[1]:{};n(this,t),this.$el=e,this.$wrap=o.$wrap||e.find(".tv-dropdown-behavior__button"),this.$body=o.$body||e.find(".tv-dropdown-behavior__body"),this.notCloseWithCtrl=!!o.notCloseWithCtrl&&o.notCloseWithCtrl,this.closeWithEsc=void 0===o.closeWithEsc||o.closeWithEsc,this.animationDisabled=!0===o.noAnimation,this.closeWithEsc&&this.$el.attr("tabIndex",0),this.animationDisabled||this.$body.addClass("tv-dropdown-behavior__body--animated"),(e.data("scroll")||o.scroll)&&(this.$scroll=this.$body.find(".tv-dropdown-behavior__scroll"),this.$inScroll=this.$scroll.find(".tv-dropdown-behavior__inscroll"),this.scroll=new c.SidebarCustomScroll(this.$scroll,this.$inScroll,{showTopShadow:!1,showBottomShadow:!1}),this.$scrollBar=this.scroll.getScrollBar(),this.$scrollBar&&this.$scrollBar.on("mousedown.tv-dropdown-view-scroll",function(){i.offClickOutside(),$(document).on("mouseup.tv-dropdown-view-scroll",function(){i.onClickOutside(),$(document).off("mouseup.tv-dropdown-view-scroll")})})),(e.data("adaptBody")||o.adaptBody)&&(this._adaptBody=!0),this._fitScreen=e.data("fitScreen")||o.fitScreen,this.$wrap.add(e.find(".js-dropdown-toggle")).on("click",function(t){$(t.currentTarget).hasClass("js-prevent-dropdown")||i.toggle()})}return r(t,[{key:"toggle",value:function(){this.opened?this.close(!0):this.open()}},{key:"open",value:function(){var t=this;this.animating||this.opened||this.disabled||(this.$el.trigger("beforeOpenMenu"),this.$body.removeClass("i-hidden"),this.$wrap.addClass("i-dropped"),this.$el.addClass("i-opened"),"horz"===this._fitScreen&&this.fitHorizontally(),this._adaptBody&&this.adaptBody(),this.updateDelays(),this.onClickOutside(),this._doOpenAnimation().then(function(){t.$body.addClass("i-opened"),t.$el.trigger("updateScroll"),t.$el.trigger("afterOpenMenu"),t.opened=!0}),this.closeWithEsc&&this.$el.on("keypress keyup",function(e){e.keyCode===u.ESC&&t.close(!0)}))}},{key:"onClickOutside",value:function(){var t=this;setTimeout(function(){t.$body.on("clickoutside",function(){t.close(!0)})},0)}},{key:"offClickOutside",value:function(){this.$body.off("clickoutside")}},{key:"close",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.animating||!this.opened||this.disabled||!e&&this.notCloseWithCtrl&&(window.event.ctrlKey||window.event.metaKey)||(this.offClickOutside(),this.$wrap.removeClass("i-dropped"),this.$el.trigger("beforeCloseMenu"),this._doCloseAnimation().then(function(){t.$body.removeClass("i-opened").addClass("i-hidden"),t.$el.removeClass("i-opened").trigger("afterCloseMenu"),t.opened=!1}),this.closeWithEsc&&this.$el.off("keypress keyup"))}},{key:"isOpened",value:function(){return this.opened}},{ +key:"updateScroll",value:function(){this.scroll&&(this.scroll.updateScrollBar(),this.scroll.scrollToStart())}},{key:"updateDelays",value:function(){var t,e,i,o,n;this.animationDisabled||(t=this.$scroll||this.$body,e=t.offset().top,i=t.outerHeight(),o=this.$body.find(".tv-dropdown-behavior__item").filter(function(t,o){var n=$(o),r=n.offset().top;return r+n.outerHeight()>=e&&r1&&void 0!==arguments[1]?arguments[1]:{};return new d(t,e)})},function(t,e,i){"use strict";function o(t){return"number"!=typeof t&&(t=TradingView.STUDY_COUNT_LIMIT),(0,n.createNoticeDialog)({title:$.t("Warning"), +content:$.t("Studies limit exceeded: {0} studies per layout.
\nPlease, remove some studies.").format(t)})}Object.defineProperty(e,"__esModule",{value:!0}),e.createTooManyStudiesNotice=o;var n=i(203)},function(t,e,i){(function(t){"use strict";function o(e){var i,o,c,h,u,d,p,_,f,m,g;if(e=$.extend({},l,e),i=$(t.render(s,{tabs:e.tabs,customControls:e.customControls,customControlsAddClass:e.customControlsContainerAddClass},{additionalHeaderContent:e.additionalHeaderContent})),o=$(a),c=o,e.contentAddClass&&o.addClass(e.contentAddClass),!1!==e.withScroll&&(o=$('
').append(c.addClass("tv-dialog__scroll-wrap-inner"))),h=$('
').append(i).append(o),e.customControls&&i.find(".js-custom-controls").append(e.customControls),!0!==e.doNotCreatePages)for(u=0;u').append(e.tabs[u].page));return d=e.tabStateSaveKey,p=e.activeTab,_=e.tabsScrollBoxAddClass,f=e.tabAddClass,delete e.tabs,delete e.activeTab,delete e.customControls,delete e.tabStateSaveKey,delete e.customControlsContainerAddClass,delete e.tabsScrollBoxAddClass,delete e.tabAddClass,e.closeButtonAddClass="tv-tabbed-dialog__close",e.contentWrapTemplate=h,m=(0,r.createDialog)(e),g=new n.Tabs(i.find(".tv-tabs").get(0),c.get(0),{addLeftArrowsClass:"tv-tabbed-dialog__tabs-arrow-left",addRightArrowsClass:"tv-tabbed-dialog__tabs-arrow-right",addScrollBoxClass:_,tabClass:f,saveTab:d,activeTab:p}),m.on("afterOpen",function(){g.setActivePage(g.index(),!0,!0)}),{dialog:m,tabs:g}}var n,r,s,a,l;Object.defineProperty(e,"__esModule",{value:!0}),e.createTabbedDialog=o,n=i(1163),r=i(96),i(653),s='
{{#tabs}}
{{name}}
{{/tabs}}
{{#customControls}}
{{/customControls}}
{{>additionalHeaderContent}}',a='
',l={tabs:[]}}).call(e,i(54))},function(t,e){"use strict";function i(t,e){var i;return function(){clearTimeout(i),i=setTimeout(t.bind.apply(t,[this].concat(Array.prototype.slice.call(arguments))),e)}}Object.defineProperty(e,"__esModule",{value:!0}),e.default=i,t.exports=e.default},,,,,,,,,,,,,,function(t,e,i){"use strict";function o(t,e){this.handler=t,this.customId=e}function n(){}var r=i(34).declareClassAsPureInterface;TradingView.WEB_SOCKET_WAS_CONNECTED=!1,n.REBIND_STUDY_STANDALONE_TO_CHILD=1,n.REBIND_STUDY_CHILD_TO_STANDALONE=2,n.prototype.defaultWatchlistSymbols=function(){},n.prototype.availableTimeFrames=function(t,e){},n.prototype.defaultResolutions=function(){},n.prototype.supportedSymbolsTypes=function(){},n.prototype.supportedExchangesList=function(){}, +n.prototype.futuresRegex=function(){},n.prototype.quoteCreateSession=function(t){},n.prototype.quoteDeleteSession=function(t){},n.prototype.quoteSetFields=function(t,e){},n.prototype.quoteAddSymbols=function(t,e){},n.prototype.quoteRemoveSymbols=function(t,e){},n.prototype.quoteFastSymbols=function(t,e){},n.prototype.depthCreateSession=function(t,e,i){},n.prototype.depthDeleteSession=function(t){},n.prototype.depthSetSymbol=function(t,e){},n.prototype.depthClearSymbol=function(t){},n.prototype.depthSetScale=function(t,e){},n.prototype.chartCreateSession=function(t,e){},n.prototype.chartDeleteSession=function(t){},n.prototype.createSession=function(t,e){},n.prototype.removeSession=function(t){},n.prototype.connected=function(){},n.prototype.connect=function(){},n.prototype.disconnect=function(){},n.prototype.switchTimezone=function(t,e){},n.prototype.resolveSymbol=function(t,e,i,o,n){},n.prototype.createSeries=function(t,e,i,o,n,r,s){},n.prototype.removeSeries=function(t,e,i){},n.prototype.modifySeries=function(t,e,i,o,n,r){},n.prototype.requestMoreData=function(t,e,i,o){},n.prototype.requestMetadata=function(t,e,i){},n.prototype.isCanCreateStudy=function(t,e){},n.prototype.createStudy=function(t,e,i,o,n,r,s){},n.prototype.rebindStudy=function(t,e,i,o,n,r,s,a){},n.prototype.removeStudy=function(t,e,i){},n.prototype.modifyStudy=function(t,e,i,o,n){},n.prototype.createPointset=function(t,e,i,o,n,r,s){},n.prototype.modifyPointset=function(t,e,i,o,n){},n.prototype.removePointset=function(t,e,i){},n.prototype.requestMoreTickmarks=function(t,e,i,o){},n.prototype.requestFirstBarTime=function(t,e,i,o){},n.prototype._invokeHandler=function(t,e){},n.prototype._sendRequest=function(t,e){},n.prototype._onMessage=function(t){},n.prototype._convertTimescaleResponse=function(t){},n.prototype._dispathNotification=function(t){},n.prototype._invokeNotificationHandler=function(t,e,i){},n.prototype._notifySessions=function(t){},n.prototype.unpack=function(t){},n.prototype.searchSymbols=function(t,e,i,o,n,r,s,a,l){},n.prototype.serverTimeOffset=function(){},n.prototype.getMarks=function(t,e,i,o,n){},n.prototype.getTimescaleMarks=function(t,e,i,o,n){},r(n,"ChartApiInterface"),t.exports.HandlerInfo=o,t.exports.ChartApiInterface=n},function(t,e,i){"use strict";var o=i(43),n=i(34).parseJSONorNot,r=i(13).getLogger("Chart.SaveloadAdapter.Library"),s=function(){var t,e,i,s,a={},l=null;return a.setCustomAdapter=function(t){l=t,r.logNormal("Use custom save-load adapter")},a.initialize=function(o,n,r,a){t=o,e=n,i=r,s=a},a.updateUser=function(t){e=t},a.getCharts=function(o,a){function c(t){t=t.map(function(t){return{id:t.id,name:t.name,image_url:t.id,modified_iso:t.timestamp,short_symbol:t.symbol,interval:t.resolution}}),o(t)}return l?void l.getAllCharts().then(c).catch(a):$.ajax({url:"{0}/{1}/charts?client={2}&user={3}".format(i,encodeURIComponent(s),encodeURIComponent(t),encodeURIComponent(e)),type:"GET",crossDomain:!0}).done(function(t){var e=n(t);if("ok"!==e.status)return r.logWarn("Charts list request failed: "+e.message),void a();c(e.data) +}).fail(a)},a.removeChart=function(o,a){if(l)return void l.removeChart(o).then(a);$.ajax({url:"{0}/{1}/charts?client={2}&user={3}&chart={4}".format(i,encodeURIComponent(s),encodeURIComponent(t),encodeURIComponent(e),encodeURIComponent(o)),type:"DELETE",crossDomain:!0}).done(function(t){var e=n(t);"ok"!==e.status&&r.logWarn("Chart delete request failed: "+e.message),a()})},a.saveChart=function(o,a,c,h,u,d,p){var _,f=u.id.value(),m={name:o,content:JSON.stringify(h),symbol:a,resolution:c};if(l)return m.id=f,void l.saveChart(m).then(d).catch(p);_="{0}/{1}/charts?client={2}&user={3}".format(i,encodeURIComponent(s),encodeURIComponent(t),encodeURIComponent(e)),void 0!==f&&(_+="&chart="+encodeURIComponent(f)),$.ajax({url:_,data:m,type:"POST",crossDomain:!0}).done(function(t){var e=n(t);if("ok"!==e.status)return r.logWarn("Chart save request failed: "+e.message),void p();d(e.id)}).fail(function(){p()})},a.getChartContent=function(o,a,c){function h(t){var e=JSON.parse(t);return e.uid=o.id,e}if(l)return void l.getChartContent(o.id).then(function(t){var e=h(t);a(e)}).catch(c);$.ajax({url:"{0}/{1}/charts?client={2}&user={3}&chart={4}".format(i,encodeURIComponent(s),encodeURIComponent(t),encodeURIComponent(e),encodeURIComponent(o.id)),type:"GET",crossDomain:!0}).done(function(t){var e,i=n(t);if("ok"!==i.status)return void r.logWarn("Chart load request failed: "+i.message);e=h(i.data.content),a(e)}).fail(function(){c&&c()})},a.loadChart=function(t){a.getChartContent(t,function(t){o.emit("chart_load_requested",t)},function(){r.logWarn("Error loading chart")})},a.removeStudyTemplate=function(o,a){if(l)return void l.removeStudyTemplate({name:o}).then(a);$.ajax({url:"{0}/{1}/study_templates?client={2}&user={3}&template={4}".format(i,encodeURIComponent(s),encodeURIComponent(t),encodeURIComponent(e),encodeURIComponent(o)),type:"DELETE",crossDomain:!0}).done(function(t){var e=n(t);"ok"!==e.status&&r.logWarn("Chart delete request failed: "+e.message),a()})},a.getStudyTemplateContent=function(o,r){if(l)return void l.getStudyTemplateContent({name:o}).then(function(t){r({content:t})});$.ajax({url:"{0}/{1}/study_templates?client={2}&user={3}&template={4}".format(i,encodeURIComponent(s),encodeURIComponent(t),encodeURIComponent(e),encodeURIComponent(o)),type:"GET",crossDomain:!0}).done(function(t){r(n(t).data)})},a.saveStudyTemplate=function(o,a){var c={name:o.name,content:o.content};if(l)return void l.saveStudyTemplate(c).then(a.bind(null,{error:""})).catch(function(t){a({error:null!=t?""+t:"error"})});$.ajax({url:"{0}/{1}/study_templates?client={2}&user={3}".format(i,encodeURIComponent(s),encodeURIComponent(t),encodeURIComponent(e)),type:"POST",crossDomain:!0,data:c}).done(function(t){var e=n(t);"ok"!==e.status&&r.logWarn("Template save request failed: "+e.message),a({error:"ok"===e.status?"":e.status})})},a._templatesCache=null,a.getStudyTemplatesList=function(o){function c(t){t=t.map(function(t){return{is_default:!1,name:t.name}}),a._templatesCache=t,o(t)}return a._templatesCache?void o(a._templatesCache):(a._templatesCache=[], +l?void l.getAllStudyTemplates().then(c):void $.ajax({url:"{0}/{1}/study_templates?client={2}&user={3}".format(i,encodeURIComponent(s),encodeURIComponent(t),encodeURIComponent(e)),type:"GET",crossDomain:!0}).done(function(t){if(null!==a._templatesCache){var e=n(t);if("ok"!==e.status)return void r.logWarn("Templates list request failed: "+e.message);c(e.data)}}))},a.invalidateStudyTemplatesList=function(){a._templatesCache=null},a}();t.exports=s},function(t,e,i){(function(e){"use strict";var o=i(82),n=i(57).Interval,r=i(20),s=i(7),a=function(t,e){this._server=t,this._session=e,this._timezone=null,this._timezoneId="",this._isDWM=!1,this._resolution=null,this.seriesCompleted=new r,this._lastBarTimes={}};a.prototype.lastBarTime=function(t){return this._lastBarTimes[t]},a.prototype._userTimezone=function(){return this._timezone},a.prototype.setTimezone=function(t){this._timezone="exchange"===t?"exchange":e.get_timezone(t),this._timezoneId=t},a.prototype.timezone=function(){return this._timezoneId},a.prototype.setResolution=function(t){this._isDWM=n.isDWM(t),this._resolution=t},a.prototype.onRequestMetadata=function(t,e){this._server.receiveLocalResponse({method:"studies_metadata",params:[this._session,t,e]})},a.prototype.onSymbolResolved=function(t,e){this._server.receiveLocalResponse({method:"symbol_resolved",params:[this._session,t,e]})},a.prototype.onSymbolError=function(t,e){this._server.receiveLocalResponse({method:"symbol_error",params:[this._session,t,e]})},a.prototype.onStudyError=function(t,e){this._server.receiveLocalResponse({method:"study_error",params:[this._session,t,e]})},a.prototype.onSeriesLoading=function(t,e){this._server.receiveLocalResponse({method:"series_loading",params:[this._session,t,e]})},a.prototype.onSeriesCompleted=function(t,e,i){this._server.receiveLocalResponse({method:"series_completed",params:[this._session,t,i,e]}),this.seriesCompleted.fire(t)},a.prototype.onSeriesError=function(t,e){this._server.receiveLocalResponse({method:"series_error",params:[this._session,t,e]})},a.prototype.onSeriesClearData=function(t,e){var i={};i[t]={series:[],turnaround:e},this._server.receiveLocalResponse({method:"timescale_update",params:[this._session,i,{index:0,zoffset:0,changes:[],marks:[],index_diff:[]}]})},a.prototype.onStudyCompleted=function(t,e){this._server.receiveLocalResponse({method:"study_completed",params:[this._session,t,e]})},a.prototype.onStudyLoading=function(t,e){this._server.receiveLocalResponse({method:"study_loading",params:[this._session,t,e]})},a.prototype._calcMarksTime=function(t,i,n,r,a){var l,c,h,u,d,p=e.get_timezone(i),_=this;if(this._isDWM&&!s.enabled("disable_resolution_rebuild"))for(d=new o.Session,d.init(p,n),u=0;u=0;--a)if(Math.floor(r/l[a].divisor)!==Math.floor(s/l[a].divisor))return l[a].span},TradingView.ChartapiMessagerInstances=[],t.exports=a}).call(e,i(67))},function(t,e,i){"use strict";function o(t,e){this._chartApi=t,this.generateSessionId(),this._sessionDisabled=!1,this._disableStatistics=!!e}var n=i(64);i(13).getLogger("ChartSession");o.prototype.destroy=function(){this._sessionDisabled||this.stopSession()},o.prototype.generateSessionId=function(){this._sessionid="cs_"+n.randomHash()},o.prototype.serverTimeOffset=function(){return this._chartApi.serverTimeOffset()},o.prototype.connected=function(){return this._chartApi.connected()&&!this._sessionDisabled},o.prototype.disconnected=function(){var t=this;this.restartSession(),Object.keys(this).forEach(function(e){/^(s|st|symbol_)\d+$/.test(e)&&delete t[e]})},o.prototype.initSession=function(){return this._chartApi.createSession(this._sessionid,this)},o.prototype.stopSession=function(){return this._chartApi.chartDeleteSession(this._sessionid),this._chartApi.removeSession(this._sessionid)},o.prototype.restartSession=function(){this.stopSession(),this.generateSessionId(),this.initSession()},o.prototype.setHandler=function(t){this._globalHandler=t},o.prototype.sessionId=function(){return this._sessionid},o.prototype.connect=function(t){return this._globalHandler=t,this.initSession(),this._chartApi.connect()},o.prototype.disconnect=function(){return this._chartApi.disconnect()},o.prototype.switchTimezone=function(t){return this._chartApi.switchTimezone(this._sessionid,t)},o.prototype.resolveSymbol=function(t,e,i){return this._chartApi.resolveSymbol(this._sessionid,t,e,i)},o.prototype.createSeries=function(t,e,i,o,n,r){return this._chartApi.createSeries(this._sessionid,t,e,i,o,n,r)},o.prototype.removeSeries=function(t,e){return this._chartApi.removeSeries(this._sessionid,t,e)},o.prototype.modifySeries=function(t,e,i,o,n){return this._chartApi.modifySeries(this._sessionid,t,e,i,o,n)},o.prototype.requestMoreData=function(t,e,i){return this._chartApi.requestMoreData(this._sessionid,t,e,i)},o.prototype.requestMetadata=function(t,e){this._chartApi.requestMetadata(this._sessionid,t,e)},o.prototype.isCanCreateStudy=function(t,e){return this._chartApi.isCanCreateStudy(t,e)},o.prototype.createStudy=function(t,e,i,o,n,r,s){return this._chartApi.createStudy(this._sessionid,t,e,i,o,n,r,s)},o.prototype.rebindStudy=function(t,e,i,o,n,r,s){return this._chartApi.rebindStudy(this._sessionid,t,e,i,o,n,r,s)},o.prototype.removeStudy=function(t,e,i){return this._chartApi.removeStudy(this._sessionid,t,e,i)},o.prototype.modifyStudy=function(t,e,i,o){return this._chartApi.modifyStudy(this._sessionid,t,e,i,o)},o.prototype.createPointset=function(t,e,i,o,n,r){return this._chartApi.createPointset(this._sessionid,t,e,i,o,n,r)},o.prototype.modifyPointset=function(t,e,i,o){return this._chartApi.modifyPointset(this._sessionid,t,e,i,o)},o.prototype.removePointset=function(t,e){ +return this._chartApi.removePointset(this._sessionid,t,e)},o.prototype.requestMoreTickmarks=function(t,e,i){return this._chartApi.requestMoreTickmarks(this._sessionid,t,e,i)},o.prototype.requestFirstBarTime=function(t,e,i){return this._chartApi.requestFirstBarTime(this._sessionid,t,e,i)},o.prototype.setVisibleTimeRange=function(t,e,i,o){return this._chartApi.setVisibleTimeRange(t,this._sessionid,e,i,o)},o.prototype.onMessage=function(t){switch(t.method){case"connected":this._chartApi.chartCreateSession(this._sessionid,this._disableStatistics);break;case"disconnected":this.disconnected()}this._globalHandler&&this._globalHandler(t)},o.prototype.disable=function(){this._sessionDisabled=!0},o.prototype.chartApi=function(){return this._chartApi},t.exports=o},,function(t,e,i){(function(e){"use strict";var o=i(226).futuresRoots,n=function(){function t(t,e){var i=function(){};return i.prototype=e.prototype,t.prototype=new i,t}function i(t){return t.replace(/[\^\$\(\)\[\]\{\}\*\+\?\|\\]/g,"\\$&")}function n(){}function r(t){this.value=t}function s(){}function a(){}function l(){}function c(){}function h(){}function u(){}function d(){}function p(){}function _(t){this.value=t}function f(t){this.value=t}function m(t){this.value=t}function g(){_.apply(this,arguments)}function v(){f.apply(this,arguments)}function y(t,e){var i,o,n,s,a,l,c,h,u=[];t:for(;i=W.exec(t);){for(o=$.length;o--;)if(i[o+1]){$[o].ctor&&(n=new $[o].ctor(i[o+1]),n._offset=i.index,u.push(n));continue t}s=new m(i[0]),s._offset=i.index,u.push(s)}if(e&&e.recover)for(o=u.length;o--;)l=u[o],l instanceof f||l instanceof _?(void 0!==a&&(c=new _(""),h=u.splice(o,a-o+1,c),c.value=h.map(function(t){return t.value}).join("")),a=o):l instanceof r||(a=void 0);return u}function b(t){var i,o,n,c,h,u,d,p,g,v;if(e.enabled("charting_library_base"))return{currentState:"var"};for(i="init",o="var",n="operator",c=i,h={warnings:[],errors:[],isEmpty:!0},u=[],d=0;dr.precedence&&(i[i.length-1].minPrecedence=r.precedence):r instanceof s?i.push(o={minPrecedence:1/0,openBraceIndex:n}):r instanceof a&&(o=i.pop(),c=t[o.openBraceIndex-1],(h=t[n+1])instanceof l&&!(h.precedence<=o.minPrecedence)||!(!(c instanceof l)||c.precedenceo.minPrecedence&&(i[i.length-1].minPrecedence=o.minPrecedence)));for(n=e.length;n--;)t.splice(e[n],1);return t}function T(t){for(var e=0;e=1;--e)if(i=this._ticker.slice(0,e),t(i)){this._root=i,this._contract=this._ticker.slice(e);break}},_.prototype.exchange=function(t){if(this.hasOwnProperty("_ticker")||this.parse(),!(arguments.length>0))return this._exchange;null===t||void 0===t?delete this._exchange:this._exchange=t+""},_.prototype.ticker=function(t){if(this.hasOwnProperty("_ticker")||this.parse(),!(arguments.length>0))return this._ticker;null===t||void 0===t?delete this._ticker:this._ticker=t+"",delete this._root,delete this._contract},_.prototype.root=function(t){if(this.hasOwnProperty("_root")||this.parseAsFutures(),!(arguments.length>0))return this._root;null===t||void 0===t?delete this._root:(this._root=t+"",this._root&&(this._ticker=this._root+(this._contract||"")))},_.prototype.contract=function(t){if(this.hasOwnProperty("_contract")||this.parseAsFutures(),!(arguments.length>0))return this._root;null===t||void 0===t?delete this._contract:(this._contract=t+"",this._root&&(this._ticker=this._root+this._contract))},t(f,n),f.prototype.toString=function(){return this.hasOwnProperty("_normalizedValue")?this._normalizedValue:this.value},f.prototype.parse=function(){this._normalizedValue=this.value.replace(/^0+|\.0*$/g,"").replace(/(\.\d*?)0+$/,"$1").replace(/^(\.|$)/,"0$1")},m.prototype.toString=function(){return this.value},t(g,_),g.prototype.isIncomplete=!0,g.prototype.incompleteSuggest=function(){if("'"!==this.value)return"'"},t(v,f),v.prototype.isIncomplete=!0,W=RegExp($.map(function(t){return"("+("string"==typeof t.pattern?i(t.pattern):t.pattern.source)+")"}).concat(".").join("|"),"g"),{tokenize:y,validate:b,factorOutBraces:w,normalizeTokens:T,flip:x,hasBatsSymbols:A,hasEodSymbols:M,hasChxeurSymbols:E,hasChxjpySymbols:V,hasFreeDelaySymbols:D,getExchange:I,isExchange:O,SymbolToken:_,IncompleteSymbolToken:g,NumberToken:f,BinaryOperatorToken:l,OpenBraceToken:s,CloseBraceToken:a,ticker:P,shortName:B,normalize:R}}();t.exports=n}).call(e,i(7))},function(t,e){ +"use strict";t.exports={INSERT_AT_END:0,INSERT_AT_START:1,INSERT_AT_POS:2,WRAPPER_TAG:"div",WRAPPER_ATTRIBUTES:{class:"context-menu-wrapper"},MENU_TAG:"table",ITEM_ROW_TAG:"tr",ICON_CELL_TAG:"td",TEXT_CELL_TAG:"td",RIGHT_CELL_TAG:"td",SUBMENU_CELL_TAG:"td"}},function(t,e,i){"use strict";function o(t){var e,i=[],n=t.m_items;for(e=0;e"),this.jqMenu=t,t.attr("cellspacing","0"),t.attr("cellpadding","0"),t.addClass("context-menu"),t.addClass("submenu");for(e in this.m_items)i=this.m_items[e],n.renderItem(t,i)}else{t=u.create(r.MENU_TAG,o),this.jqMenu=t;for(e in this.m_items)i=this.m_items[e],n.renderItem(t,i)}return this.jqMenu},n.prototype.getAttributes=function(){var t={},e=["context-menu"];return this.options.attributes&&this.options.attributes.class&&e.push(this.options.attributes.class),t.cellspacing=0,t.cellpadding=0,t.class=e.join(),t},n.prototype.deploy=function(t,e){var i=this.wrapper();return this.jqMenu=i.append(this.render()),e?($(e).data("submenu",this.jqMenu),$(document.body).append(this.jqMenu),this.jqMenu.data("parent-menu",e),this.jqMenu.data("parent-item",t.currentTarget)):$(document.body).append(this.jqMenu),h.unbindContextMenu(this.jqMenu),this._setCoords(t),this.jqMenu},n.prototype.show=function(t,e){this.deploy(t,e).show()},n.prototype.hide=function(){this.isShown()&&this.destroy()},n.prototype.destroy=function(){$.each(this.m_items,function(t,e){e._menu&&e._menu.destroy()}),this.jqMenu&&(this.jqMenu.remove(),this.jqMenu=null),this.m_wrapper.empty()},n.prototype._setCoords=function(t){var e,i,o,n,r,s=5,a=this.jqMenu,l=$(this.jqMenu.data("parent-item")),c={width:$(window).width(),height:Math.min($(window).height(),$("body").height())},h={top:$(document).scrollTop(),left:$(document).scrollLeft()};for(this.jqMenu.css({maxWidth:c.width-2*s,maxHeight:c.height-2*s}),e={width:a.outerWidth(),height:a.outerHeight()},l.size()?(o=l.offset(),i={top:o.top-1,left:o.left+l.outerWidth()}):i={top:t.pageY,left:t.pageX},this.jqMenu.offset(i),n={},n.top=Math.min(i.top,c.height+h.top-e.height-s),i.left+e.width+s>c.width||this.options.reverse?n.left=i.left+h.left-e.width:n.left=i.left, +r=t.target;r&&r!==document;r=r.parentNode)if("fixed"===$(r).css("position")){this.jqMenu.css("position","fixed");break}this.jqMenu.offset(n)},n.prototype._wrapper=function(){var t=this,e=r.WRAPPER_ATTRIBUTES;return this._parentMenuItem?this.m_wrapper=u.create(r.WRAPPER_TAG,e):(this.m_wrapper=h.createPopup(e,void 0,{mouseDownOutsideEvent:function(e){var i=$();$.each(o(t),function(){i=i.add(this.m_wrapper)}),$(e.target).parents().andSelf().is(i)||t.hide()}}),this.m_wrapper.addClass("topmenu")),this.m_wrapper},n.prototype.wrapper=function(t){return this.m_wrapper||this._wrapper()},t.exports=n},,function(t,e,i){"use strict";var o=i(71);t.exports[o.STYLE_AREA]=i(1190),t.exports[o.STYLE_BARS]=i(1192),t.exports[o.STYLE_CANDLES]=i(1199),t.exports[o.STYLE_HEIKEN_ASHI]=i(1210),t.exports[o.STYLE_HOLLOW_CANDLES]=i(1212),t.exports[o.STYLE_LINE]=i(1230),t.exports[o.STYLE_BASELINE]=i(1200)},function(t,e,i){(function(e,o){"use strict";function n(t){var n=i(754);this._options=$.extend({interval:1},t||{}),this._e=$("
").addClass("intervals-container favored-list-container"),this._quick=$("
").addClass("quick").appendTo(this._e),this._quicked={},this._main=$('').text(this.shortLabel(this._options.interval)).attr("title",this.fullLabel(this._options.interval)).appendTo(this._quick),this._main.data("interval",this._options.interval),e.enabled("header_interval_dialog_button")&&this._setIntervalDialogButton(),this._mainSub=$("").addClass("submenu").attr("title",$.t("Time Interval")).append($('
')).appendTo(this._e),t&&"string"==typeof t.submenuBtnAddClass&&this._mainSub.addClass(t.submenuBtnAddClass),this._quick.on("click",this._selectInterval.bind(this)),this._mainSub.on("click",this._selectMenu.bind(this)),this._menu=new n(this,this._mainSub,this._options),this.onResize=new o,s.intraday.subscribe(this._fullUpdate.bind(this)),s.supportedResolutions.subscribe(this._fullUpdate.bind(this)),t.interval&&s.interval.setValue(t.interval),s.interval.subscribe(this.activateInterval.bind(this),{callWithLast:!0}),l.on("intervalwidget-change",this._onChangeInAnotherTab.bind(this)),this._fullUpdate()}var r=i(57).Interval,s=i(97),a=i(178).translatedIntervalString,l=i(181).TVXWindowEvents;n.prototype.forceUpdate=function(){this._fullUpdate(!0)},n.prototype._fullUpdate=function(t){this._setupIntervals(t),this._setupQuicks(t),this.reactivateInterval(),this._resize()},n.prototype._onChangeInAnotherTab=function(){this._fullUpdate(!0)},n.prototype.isDefaultInterval=function(t){return t in ChartApiInstance.defaultResolutions()},n.getIntervals=function(){return TradingView.clone(ChartApiInstance.defaultResolutions())},n.prototype._setupIntervals=function(){this._intervals=n.getIntervals()},n.sortIntervals=function(t){Array.isArray(t)||(t=Object.keys(t));var e=function(t){var e=new r(t);return e.kind()!==r.MINUTES?{S:1/60,D:1440,W:10080,M:43200}[e.letter()]*e.multiplier():e.multiplier()};return t.sort(function(t,i){return e(t)-e(i)})},n.prototype.getSortedIntervals=function(){ +return n.sortIntervals(this._intervals)},n.prototype.setUpStarredItemsList=function(t){var e,i={};for(e=0;e=60&&!(t%60)}var n,s;if(t=t,n="m",e=e,s=new r(t),!s.isValid())throw new TypeError("Wrong interval value: "+t);return s.kind()!==r.MINUTES&&(n=s.letter()),t=s.multiplier(),s.kind()===r.MINUTES&&o(t)&&(t=~~(t/60),n="h"),e=e?t:null,""+(t=i&&1===t&&s.isDWM()?"":t)+this.postfix(n,e)},n.prototype.shortLabel=function(t){return a(this.readable(t,!1))},n.prototype.fullLabel=function(t){return this.readable(t,!0)},n.prototype._addQuicked=function(t){var e,o,r,s,a,l,c,h;for(t=n.sortIntervals(t),e=this._quicks(),o=$(),r=!1,e.size()>t.length&&(e.slice(t.length).remove(),r=!0),s=i(286),a=0;a'),o=o.add(c),h=!0),h&&(c.data("interval",l).attr("title",this.fullLabel(l)).text(this.shortLabel(l)),r=!0),c.toggleClass("selected",l===this.getInterval()).toggleClass("disabled",!s.isAvailable(l));this._main.before(o),r&&this._resize()},n.prototype._resize=function(){this.onResize.fire()},n.prototype.addQuick=function(t){this._quicked[t]=!0,this._addQuicked(this._quicked),this.saveSettings(),this.reactivateInterval()},n.prototype._quickWithInterval=function(t){var e=null;return this._quicks().each(function(i,o){if(o=$(o),t===o.data("interval"))return e=o,!1}),e},n.prototype.inQuick=function(t){return null!=this._quickWithInterval(t)},n.prototype.removeQuick=function(t){this._quickWithInterval(t)&&(this._quickWithInterval(t).remove(),this._resize(),delete this._quicked[t],this.saveSettings(),this.reactivateInterval())}, +n.prototype.toggleQuick=function(t){var e=this.inQuick(t);return e?this.removeQuick(t):this.addQuick(t),!e},n.prototype.hasQuicks=function(){return!!this._quicks().length},n.prototype.deactivate=function(t){this._quick.find("span").removeClass("selected")},n.prototype.activateInterval=function(t){this.deactivate(),this.inQuick(t)?this._quickWithInterval(t).addClass("selected"):(this.hasQuicks()&&this._main.addClass("selected"),this._main.data("interval")!==t&&(this._main.text(this.shortLabel(t)),this._main.attr("title",this.fullLabel(t)),this._main.data("interval",t),this._resize()))},n.prototype.reactivateInterval=function(){this.activateInterval(this.getInterval())},n.prototype.getInterval=function(){return s.interval.value()},n.prototype.setInterval=function(t){s.interval.setValue(""+t)},n.prototype._selectInterval=function(t){var e=$(t.target),i=e.data("interval");this.hasQuicks()||this.getInterval()!==i?e.hasClass("disabled")||this.setInterval(i):this._selectMenu()},n.prototype._selectMenu=function(t){this._mainSub.hasClass("active")?this._menu.close():this._menu.open(this.getSortedIntervals())},n.prototype._setIntervalDialogButton=function(){var t=i(265);this._intervalDialogButton=$("").addClass("submenu interval-dialog-button apply-common-tooltip").attr("title",$.t("Open Interval Dialog")).append($("")).appendTo(this._e).click(function(){var e=new t({callback:function(t){s.interval.setValue(t)}}).show(),i=$(this);i.addClass("active"),e.on("destroy",function(){i.removeClass("active")})})},n.prototype.addInterval=function(t){},n.prototype.removeInterval=function(t){},n.prototype.saveIntervals=function(){},n.prototype.saveQuicked=function(){TVSettings.setJSON("IntervalWidget.quicks",this._quicked)},n.prototype.saveSettings=function(){this.saveQuicked(),this.saveIntervals(),l.emit("intervalwidget-change")},t.exports=n}).call(e,i(7),i(20))},,,,,,,,function(t,e,i){function o(t,e,i,o,r,s){if(!t)return void n.logDebug("Missing control");this._control=t,this._property=e,this._applyOnFly=i,this._undoModel=o,this._undoText=r,e&&(this._formatters=[],this._changed=!1,this.setValue(e.value()),e.listeners().subscribe(this,this.propertyChanged))}var n=i(13).getLogger("Chart.PropertyPage.Binding");o.prototype.addFormatter=function(t){this._formatters.push(t),this.setValue(this._property.value())},o.prototype._formatValue=function(t){return this._formatters.reduce(function(t,e){return e(t)},t)},o.prototype._attachToControl=function(t,e){var i=this;e?t.on("keyup change input",function(t){var e=i.value();i.setValueToProperty(e),i.setValue(e)}):(t.keypress(function(t){if(this._changed=!0,13===t.which){var e=i.value();i.setValueToProperty(e),i.setValue(e)}}),t.focusout(function(t){var e=i.value();i.changed()&&(i.setValueToProperty(e),i.setValue(e))}),t.change(function(t){var e=i.value();$(t.target).is(".ticker")?(void 0!==i._changeTimerId&&clearTimeout(i._changeTimerId),i._changeTimerId=setTimeout(function(){i.setValueToProperty(e)},250)):i.setValueToProperty(e),i.setValue(e)}))},o.prototype.control=function(){ +return this._control},o.prototype.changed=function(){return this._changed},o.prototype.setValueToProperty=function(t){this._undoModel.setProperty(this._property,t,this._undoText),this._changed=!1},o.prototype.property=function(){return this._property},o.prototype.propertyChanged=function(t){this.setValue(t.value())},o.prototype.destroy=function(){this._property&&this._property.listeners().unsubscribe(this,this.propertyChanged)},e.Binding=o},,function(t,e){"use strict";function i(t,e,i,o,n){var r,s,a,l,c;for(this._canvasesMap={},this._lines=t.split(/[^\S\r\n]*(?:\r\n|\r|\n)/),this._font=this._fontStyle(e,i,o,n),this._fontSize=n,r=$(""),s=r.get(0).getContext("2d"),s.font=this._font,a=0,l=0;l").attr("width",this.textImageWidth).attr("height",this.textImageHeight),i=e.get(0).getContext("2d"),i.textBaseline="top",i.font=this._font,i.textAlign="center",i.fillStyle=t,o=Math.round(this.textImageWidth/2),n=0,r=0;r1?s(t[n],e.slice(1),i):(t[n]&&t[n].setValue?t[n].setValue(i):t[n]=i,!0))}function a(t){i||g.logWarn("Path `"+t+"` does not exist.")}var l,c,h,u;if(o)for(l in o)c=l.split("."),h=r(c[0]),u=void 0!==n&&n===c[0],0!==c.length&&u&&(c=c.slice(1),h=r(c[0])),0!==c.length&&t.hasOwnProperty(h)?s(t,c,o[l])||a(l):u&&a(l)}function n(t,e,i,n){window.__defaultsOverrides&&o(t,e,i,window.__defaultsOverrides,n)}function r(){var t=/^linetool.+/;Object.keys(TradingView.defaultProperties).forEach(function(e){t.test(e)&&n(TradingView.defaultProperties[e],null,!1,e)})}function s(t,e){return e?l(t,e):a(t)}function a(t){var e,i=v(t);return window._UNIT_TESTS||(e=TradingView.clone(TVSettings.getJSON(t,null)))&&TradingView.merge(i,e),i}function l(t,e){var i,o,n=v(t);return window._UNIT_TESTS||(i=TradingView.clone(TVSettings.getJSON(t,null)),t.startsWith("study_")&&i&&d.isVersionHead(i.version)&&(o=e.updateStudyState(i,i),i=o),TradingView.merge(n,i)),n} +var c=i(71),h=i(486).LineToolPitchforkStyle,u=i(311).LineToolBarsPatternMode,d=i(119),p=i(45),_=i(106).PlotType,f=i(318),m=i(18).LineEnd,g=i(13).getLogger("Chart.Defaults"),v=function(t){var e,i,o,s,a,l,d,p,g={a:function(t,e){return{color:t,visible:e}},b:function(t,e,i){return{coeff:t,color:e,visible:i}},c:function(t,e,i,o,n){return{coeff:t,color:e,visible:i,linestyle:void 0===o?CanvasEx.LINESTYLE_SOLID:o,linewidth:void 0===n?1:n}},d:function(t,e,i){return{color:t,width:i,visible:e}},e:function(t,e,i,o,n){return{color:t,visible:e,width:i,x:o,y:n}},f:function(t,e,i,o,n,r){return{coeff1:t,coeff2:e,color:i,visible:o,linestyle:void 0===n?CanvasEx.LINESTYLE_SOLID:n,linewidth:void 0===r?1:r}}};if(void 0===TradingView.defaultProperties){switch(window.locale){case"ar_AE":e="Asia/Dubai";break;case"au":e="Australia/Sydney";break;case"br":e="America/Sao_Paulo";break;case"ca":e="America/Toronto";break;case"de_DE":case"it":e="Europe/Berlin";break;case"es":e="Europe/Madrid";break;case"fa_IR":e="Asia/Tehran";break;case"fr":case"sv_SE":e="Europe/Paris";break;case"he_IL":case"tr":e="Europe/Athens";break;case"hu_HU":case"pl":e="Europe/Warsaw";break;case"id":case"th_TH":case"vi_VN":e="Asia/Bangkok";break;case"in":e="Asia/Kolkata";break;case"ja":case"kr":e="Asia/Tokyo";break;case"ms_MY":e="Asia/Singapore";break;case"ru":e="Europe/Moscow";break;case"uk":e="Europe/London";break;case"zh_CN":case"zh_TW":e="Asia/Shanghai";break;default:e="Etc/UTC"}TradingView.defaultProperties={chartproperties:{timezone:e,timeScale:{barSpacing:f.DEFAULT_BAR_SPACING,rightOffset:f.DEFAULT_RIGHT_OFFSET},dataWindowProperties:{background:"rgba( 255, 254, 206, 0.2)",border:"rgba( 96, 96, 144, 1)",font:"Verdana",fontBold:!1,fontItalic:!1,fontSize:10,transparency:80,visible:!0},paneProperties:{background:"#ffffff",gridProperties:{color:"#e1ecf2",style:CanvasEx.LINESTYLE_SOLID},vertGridProperties:{color:"#e1ecf2",style:CanvasEx.LINESTYLE_SOLID},horzGridProperties:{color:"#e1ecf2",style:CanvasEx.LINESTYLE_SOLID},crossHairProperties:{color:"rgba( 152, 152, 152, 1)",style:CanvasEx.LINESTYLE_DASHED,transparency:0,width:1},topMargin:5,bottomMargin:5,leftAxisProperties:{autoScale:!0,autoScaleDisabled:!1,percentage:!1,percentageDisabled:!1,log:!1,logDisabled:!1,alignLabels:!0},rightAxisProperties:{autoScale:!0,autoScaleDisabled:!1,percentage:!1,percentageDisabled:!1,log:!1,logDisabled:!1,alignLabels:!0},overlayPropreties:{autoScale:!0,autoScaleDisabled:!1,percentage:!1,percentageDisabled:!1,log:!1,logDisabled:!1,alignLabels:!0},legendProperties:{showStudyArguments:!0,showStudyTitles:!0,showStudyValues:!0,showSeriesTitle:!0,showSeriesOHLC:!0,showLegend:!0}},scalesProperties:{showLeftScale:!1,showRightScale:!0,backgroundColor:"#ffffff",lineColor:"#555",textColor:"#555",fontSize:11,scaleSeriesOnly:!1,showSeriesLastValue:!0,showSeriesPrevCloseValue:!1,showStudyLastValue:!1,showSymbolLabels:!1,showStudyPlotLabels:!1},mainSeriesProperties:{style:c.STYLE_CANDLES,esdShowDividends:!0,esdShowSplits:!0,esdShowEarnings:!0,esdShowBreaks:!1,esdBreaksStyle:{color:"rgba( 226, 116, 91, 1)", +style:CanvasEx.LINESTYLE_DASHED,width:1},esdFlagSize:2,showCountdown:!0,showInDataWindow:!0,visible:!0,silentIntervalChange:!1,showPriceLine:!0,priceLineWidth:1,priceLineColor:"",showPrevClosePriceLine:!1,prevClosePriceLineWidth:1,prevClosePriceLineColor:"rgba( 85, 85, 85, 1)",lockScale:!1,minTick:"default",extendedHours:!1,sessVis:!1,statusViewStyle:{fontSize:17,showExchange:!0,showInterval:!0,showSymbolAsDescription:!1},candleStyle:{upColor:"#53b987",downColor:"#eb4d5c",drawWick:!0,drawBorder:!0,borderColor:"#378658",borderUpColor:"#53b987",borderDownColor:"#eb4d5c",wickColor:"#737375",wickUpColor:"#a9cdd3",wickDownColor:"#f5a6ae",barColorsOnPrevClose:!1},hollowCandleStyle:{upColor:"rgba( 83, 185, 135, 1)",downColor:"rgba( 255, 77, 92, 1)",drawWick:!0,drawBorder:!0,borderColor:"rgba( 55, 134, 88, 1)",borderUpColor:"rgba( 83, 185, 135, 1)",borderDownColor:"rgba( 255, 77, 92, 1)",wickColor:"rgba( 115, 115, 117, 1)",wickUpColor:"rgba( 169, 220, 195, 1)",wickDownColor:"rgba( 245, 166, 174, 1)"},haStyle:{upColor:"rgba( 83, 185, 135, 1)",downColor:"rgba( 255, 77, 92, 1)",drawWick:!0,drawBorder:!0,borderColor:"rgba( 55, 134, 88, 1)",borderUpColor:"rgba( 83, 185, 135, 1)",borderDownColor:"rgba( 255, 77, 92, 1)",wickColor:"rgba( 115, 115, 117, 1)",wickUpColor:"rgba( 83, 185, 135, 1)",wickDownColor:"rgba( 255, 77, 92, 1)",showRealLastPrice:!1,barColorsOnPrevClose:!1,inputs:{},inputInfo:{}},barStyle:{upColor:"rgba( 83, 185, 135, 1)",downColor:"rgba( 255, 77, 92, 1)",barColorsOnPrevClose:!1,dontDrawOpen:!1},lineStyle:{color:"rgba( 60, 120, 216, 1)",linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,priceSource:"close",styleType:c.STYLE_LINE_TYPE_SIMPLE},areaStyle:{color1:"rgba( 96, 96, 144, 0.5)",color2:"rgba( 1, 246, 245, 0.5)",linecolor:"rgba( 0, 148, 255, 1)",linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,priceSource:"close",transparency:50},priceAxisProperties:{autoScale:!0,autoScaleDisabled:!1,percentage:!1,percentageDisabled:!1,log:!1,logDisabled:!1},renkoStyle:{upColor:"rgba( 83, 185, 135, 1)",downColor:"rgba( 255, 77, 92, 1)",borderUpColor:"rgba( 83, 185, 135, 1)",borderDownColor:"rgba( 255, 77, 92, 1)",upColorProjection:"rgba( 169, 220, 195, 1)",downColorProjection:"rgba( 245, 166, 174, 1)",borderUpColorProjection:"rgba( 169, 220, 195, 1)",borderDownColorProjection:"rgba( 245, 166, 174, 1)",wickUpColor:"rgba( 83, 185, 135, 1)",wickDownColor:"rgba( 255, 77, 92, 1)",inputs:{source:"close",boxSize:3,style:"ATR",atrLength:14,wicks:!0},inputInfo:{source:{name:"Source"},boxSize:{name:"Box size"},style:{name:"Style"},atrLength:{name:"ATR Length"},wicks:{name:"Wicks"}}},pbStyle:{upColor:"rgba( 83, 185, 135, 1)",downColor:"rgba( 255, 77, 92, 1)",borderUpColor:"rgba( 83, 185, 135, 1)",borderDownColor:"rgba( 255, 77, 92, 1)",upColorProjection:"rgba( 169, 220, 195, 1)",downColorProjection:"rgba( 245, 166, 174, 1)",borderUpColorProjection:"rgba( 169, 220, 195, 1)",borderDownColorProjection:"rgba( 245, 166, 174, 1)",inputs:{source:"close",lb:3},inputInfo:{source:{name:"Source"},lb:{name:"Number of line"}}},kagiStyle:{ +upColor:"rgba( 83, 185, 135, 1)",downColor:"rgba( 255, 77, 92, 1)",upColorProjection:"rgba( 169, 220, 195, 1)",downColorProjection:"rgba( 245, 166, 174, 1)",inputs:{source:"close",style:"ATR",atrLength:14,reversalAmount:1},inputInfo:{source:{name:"Source"},style:{name:"Style"},atrLength:{name:"ATR Length"},reversalAmount:{name:"Reversal amount"}}},pnfStyle:{upColor:"rgba( 83, 185, 135, 1)",downColor:"rgba( 255, 77, 92, 1)",upColorProjection:"rgba( 169, 220, 195, 1)",downColorProjection:"rgba( 245, 166, 174, 1)",inputs:{sources:"Close",reversalAmount:3,boxSize:1,style:"ATR",atrLength:14},inputInfo:{sources:{name:"Source"},boxSize:{name:"Box size"},reversalAmount:{name:"Reversal amount"},style:{name:"Style"},atrLength:{name:"ATR Length"}}},baselineStyle:{baselineColor:"rgba( 117, 134, 150, 1)",topFillColor1:"rgba( 83, 185, 135, 0.1)",topFillColor2:"rgba( 83, 185, 135, 0.1)",bottomFillColor1:"rgba( 235, 77, 92, 0.1)",bottomFillColor2:"rgba( 235, 77, 92, 0.1)",topLineColor:"rgba( 83, 185, 135, 1)",bottomLineColor:"rgba( 235, 77, 92, 1)",topLineWidth:1,bottomLineWidth:1,priceSource:"close",transparency:50,baseLevelPercentage:50}},symbolWatermarkProperties:{color:"rgba( 85, 85, 85, 0)",transparency:100},chartEventsSourceProperties:{visible:!0,futureOnly:!0,breaks:{color:"rgba(85, 85, 85, 1)",visible:!1,style:CanvasEx.LINESTYLE_DASHED,width:1}},tradingProperties:{showPositions:!0,showOrders:!0,showExecutions:!0,extendLeft:!0,lineLength:5,lineWidth:1,lineStyle:CanvasEx.LINESTYLE_DASHED},alertsProperties:{labels:{visible:!0,color:"rgba( 215, 84, 66, 1)",highlightColor:"rgba( 255, 255, 51, 1)",hoverColor:"rgba( 245, 227, 135, 1)",line:{visible:!0,style:CanvasEx.LINESTYLE_DASHED,width:1}},fakeLabels:{visible:!0,color:"rgba( 119, 119, 119, 1)",line:{visible:!0,style:CanvasEx.LINESTYLE_DASHED,width:1}},drawingIcon:{color:"rgba( 170, 170, 170, 1)"}},editorFontsList:["Verdana","Courier New","Times New Roman","Arial"],volumePaneSize:"large"},drawings:{magnet:!1,stayInDrawingMode:!1,drawOnAllCharts:!0,crossHairColor:"rgba( 183, 183, 183, 1)",crossHairStyle:CanvasEx.LINESTYLE_DASHED,crossHairWidth:1},linetoolorder:{singleChartOnly:!0,extendLeft:"inherit",lineLength:"inherit",lineColor:"rgba( 255, 0, 0, 1)",lineTransparency:0,lineStyle:"inherit",lineWidth:"inherit",bodyBorderColor:"rgba( 255, 0, 0, 0)",bodyBorderTransparency:0,bodyBackgroundColor:"rgba( 255, 255, 255, 0.75)",bodyBackgroundTransparency:25,bodyTextColor:"rgba( 255, 0, 0, 0)",bodyTextTransparency:0,bodyFontFamily:"Verdana",bodyFontSize:7,bodyFontBold:!0,bodyFontItalic:!1,quantityBorderColor:"rgba( 255, 0, 0, 0)",quantityBorderTransparency:0,quantityBackgroundColor:"rgba( 255, 0, 0, 0.75)",quantityBackgroundTransparency:25,quantityTextColor:"rgba( 255, 255, 255, 1)",quantityTextTransparency:0,quantityFontFamily:"Verdana",quantityFontSize:7,quantityFontBold:!0,quantityFontItalic:!1,cancelButtonBorderColor:"rgba( 255, 0, 0, 1)",cancelButtonBorderTransparency:0,cancelButtonBackgroundColor:"rgba( 255, 255, 255, 0.75)",cancelButtonBackgroundTransparency:25, +cancelButtonIconColor:"rgba( 255, 0, 0, 1)",cancelButtonIconTransparency:0,tooltip:""},linetoolposition:{singleChartOnly:!0,extendLeft:"inherit",lineLength:"inherit",lineColor:"rgba( 0, 113, 224, 1)",lineTransparency:0,lineStyle:"inherit",lineWidth:"inherit",bodyBorderColor:"rgba( 0, 113, 224, 1)",bodyBorderTransparency:0,bodyBackgroundColor:"rgba( 255, 255, 255, 0.75)",bodyBackgroundTransparency:25,bodyTextColor:"rgba( 0, 113, 224, 1)",bodyTextTransparency:0,bodyFontFamily:"Verdana",bodyFontSize:7,bodyFontBold:!0,bodyFontItalic:!1,quantityBorderColor:"rgba( 0, 113, 224, 1)",quantityBorderTransparency:0,quantityBackgroundColor:"rgba( 0, 113, 224, 0.75)",quantityBackgroundTransparency:25,quantityTextColor:"rgba( 255, 255, 255, 1)",quantityTextTransparency:0,quantityFontFamily:"Verdana",quantityFontSize:7,quantityFontBold:!0,quantityFontItalic:!1,reverseButtonBorderColor:"rgba( 0, 113, 224, 1)",reverseButtonBorderTransparency:0,reverseButtonBackgroundColor:"rgba( 255, 255, 255, 0.75)",reverseButtonBackgroundTransparency:25,reverseButtonIconColor:"rgba( 0, 113, 224, 1)",reverseButtonIconTransparency:0,closeButtonBorderColor:"rgba( 0, 113, 224, 1)",closeButtonBorderTransparency:0,closeButtonBackgroundColor:"rgba( 255, 255, 255, 0.75)",closeButtonBackgroundTransparency:25,closeButtonIconColor:"rgba( 0, 113, 224, 1)",closeButtonIconTransparency:0,tooltip:""},linetoolexecution:{singleChartOnly:!0,direction:"buy",arrowHeight:8,arrowSpacing:1,arrowColor:"rgba( 0, 0, 255, 1)",arrowTransparency:0,text:"",textColor:"rgba( 0, 0, 0, 1)",textTransparency:0,fontFamily:"Verdana",fontSize:8,fontBold:!1,fontItalic:!1,tooltip:""},linetoolicon:{singleChartOnly:!0,clonable:!0,color:"rgba( 61, 133, 198, 1)",size:40,icon:61536,angle:.5*Math.PI,scale:1},linetoolbezierquadro:{clonable:!0,linecolor:"rgba( 21, 153, 128, 1)",linewidth:1,fillBackground:!1,backgroundColor:"rgba( 21, 56, 153, 0.5)",transparency:50,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Normal},linetoolbeziercubic:{clonable:!0,linecolor:"rgba( 21, 153, 128, 1)",linewidth:1,fillBackground:!1,backgroundColor:"rgba( 21, 56, 153, 0.5)",transparency:50,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Normal},linetooltrendline:{clonable:!0,linecolor:"rgba( 21, 153, 128, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Normal,font:"Verdana",textcolor:"rgba( 21, 119, 96, 1)",fontsize:12,bold:!1,italic:!1,snapTo45Degrees:!0,alwaysShowStats:!1,showMiddlePoint:!1,showPriceRange:!1,showBarsRange:!1,showDateTimeRange:!1,showDistance:!1,showAngle:!1},linetooltimecycles:{clonable:!0,linecolor:"rgba(21, 153, 128, 1)",linewidth:1,fillBackground:!0,backgroundColor:"rgba(106, 168, 79, 0.5)",transparency:50,linestyle:CanvasEx.LINESTYLE_SOLID},linetoolsineline:{clonable:!0,linecolor:"rgba( 21, 153, 128, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},linetooltrendangle:{singleChartOnly:!0,clonable:!0,linecolor:"rgba( 21, 153, 128, 1)",linewidth:1, +linestyle:CanvasEx.LINESTYLE_SOLID,snapTo45Degrees:!0,font:"Verdana",textcolor:"rgba( 21, 119, 96, 1)",fontsize:12,bold:!0,italic:!1,alwaysShowStats:!1,showMiddlePoint:!1,showPriceRange:!1,showBarsRange:!1,extendRight:!1,extendLeft:!1},linetooldisjointangle:{clonable:!0,linecolor:"rgba( 18, 159, 92, 1)",linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,fillBackground:!0,backgroundColor:"rgba( 106, 168, 79, 0.5)",transparency:50,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Normal,font:"Verdana",textcolor:"rgba( 18, 159, 92, 1)",fontsize:12,bold:!1,italic:!1,showPrices:!1,showPriceRange:!1,showDateTimeRange:!1,showBarsRange:!1},linetoolflatbottom:{clonable:!0,linecolor:"rgba( 73, 133, 231, 1)",linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,fillBackground:!0,backgroundColor:"rgba( 21, 56, 153, 0.5)",transparency:50,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Normal,font:"Verdana",textcolor:"rgba( 73, 133, 231, 1)",fontsize:12,bold:!1,italic:!1,showPrices:!1,showPriceRange:!1,showDateTimeRange:!1,showBarsRange:!1},linetoolfibspiral:{clonable:!0,linecolor:"rgba( 21, 153, 128, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},linetooldaterange:{clonable:!0,linecolor:"rgba( 88, 88, 88, 1)",linewidth:1,font:"Verdana",textcolor:"rgba( 255, 255, 255, 1)",fontsize:12,fillLabelBackground:!0,labelBackgroundColor:"rgba( 91, 133, 191, 0.9)",labelBackgroundTransparency:30,fillBackground:!0,backgroundColor:"rgba( 186, 218, 255, 0.4)",backgroundTransparency:60,drawBorder:!1,borderColor:"rgba( 102, 123, 139, 1)",extendTop:!1,extendBottom:!1},linetoolpricerange:{clonable:!0,linecolor:"rgba( 88, 88, 88, 1)",linewidth:1,font:"Verdana",textcolor:"rgba( 255, 255, 255, 1)",fontsize:12,fillLabelBackground:!0,labelBackgroundColor:"rgba( 91, 133, 191, 0.9)",labelBackgroundTransparency:30,fillBackground:!0,backgroundColor:"rgba( 186, 218, 255, 0.4)",backgroundTransparency:60,drawBorder:!1,borderColor:"rgba( 102, 123, 139, 1)",extendLeft:!1,extendRight:!1},linetooldateandpricerange:{clonable:!0,linecolor:"rgba( 88, 88, 88, 1)",linewidth:1,font:"Verdana",textcolor:"rgba( 255, 255, 255, 1)",fontsize:12,fillLabelBackground:!0,labelBackgroundColor:"rgba( 91, 133, 191, 0.9)",labelBackgroundTransparency:30,fillBackground:!0,backgroundColor:"rgba( 186, 218, 255, 0.4)",backgroundTransparency:60,drawBorder:!1,borderColor:"rgba( 102, 123, 139, 1)"},linetoolriskrewardshort:{isShort:!0,clonable:!0,linecolor:"rgba( 88, 88, 88, 1)",linewidth:1,font:"Verdana",textcolor:"rgba(255, 255, 255, 1)",fontsize:12,fillLabelBackground:!0,labelBackgroundColor:"rgba( 88, 88, 88, 1)",labelBackgroundTransparency:0,fillBackground:!0,stopBackground:"rgba( 255, 0, 0, 0.2)",profitBackground:"rgba( 0, 160, 0, 0.2)",stopBackgroundTransparency:80,profitBackgroundTransparency:80,drawBorder:!1,borderColor:"rgba( 102, 123, 139, 1)",compact:!1,riskDisplayMode:"percents",accountSize:1e3,risk:25},linetoolriskrewardlong:{isShort:!1,clonable:!0,linecolor:"rgba( 88, 88, 88, 1)",linewidth:1,font:"Verdana",textcolor:"rgba(255, 255, 255, 1)",fontsize:12, +fillLabelBackground:!0,labelBackgroundColor:"rgba( 88, 88, 88, 1)",labelBackgroundTransparency:0,fillBackground:!0,stopBackground:"rgba( 255, 0, 0, 0.2)",profitBackground:"rgba( 0, 160, 0, 0.2)",stopBackgroundTransparency:80,profitBackgroundTransparency:80,drawBorder:!1,borderColor:"rgba( 102, 123, 139, 1)",compact:!1,riskDisplayMode:"percents",accountSize:1e3,risk:25},linetoolarrow:{clonable:!0,linecolor:"rgba( 111, 136, 198, 1)",linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Arrow,font:"Verdana",textcolor:"rgba( 21, 119, 96, 1)",fontsize:12,bold:!1,italic:!1,alwaysShowStats:!1,showMiddlePoint:!1,showPriceRange:!1,showBarsRange:!1,showDateTimeRange:!1,showDistance:!1,showAngle:!1},linetoolray:{clonable:!0,linecolor:"rgba( 21, 153, 128, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!0,leftEnd:m.Normal,rightEnd:m.Normal,font:"Verdana",textcolor:"rgba( 21, 119, 96, 1)",fontsize:12,bold:!1,italic:!1,alwaysShowStats:!1,showMiddlePoint:!1,showPriceRange:!1,showBarsRange:!1,showDateTimeRange:!1,showDistance:!1,showAngle:!1},linetoolextended:{clonable:!0,linecolor:"rgba( 21, 153, 128, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!0,extendRight:!0,leftEnd:m.Normal,rightEnd:m.Normal,font:"Verdana",textcolor:"rgba( 21, 119, 96, 1)",fontsize:12,bold:!1,italic:!1,alwaysShowStats:!1,showMiddlePoint:!1,showPriceRange:!1,showBarsRange:!1,showDateTimeRange:!1,showDistance:!1,showAngle:!1},linetoolhorzline:{clonable:!0,linecolor:"rgba( 128, 204, 219, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,showPrice:!0,showLabel:!1,text:"",font:"Verdana",textcolor:"rgba( 21, 119, 96, 1)",fontsize:12,bold:!1,italic:!1,horzLabelsAlign:"center",vertLabelsAlign:"top"},linetoolhorzray:{clonable:!0,linecolor:"rgba( 128, 204, 219, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,showPrice:!0,showLabel:!1,text:"",font:"Verdana",textcolor:"rgba( 21, 119, 96, 1)",fontsize:12,bold:!1,italic:!1,horzLabelsAlign:"center",vertLabelsAlign:"top"},linetoolvertline:{clonable:!0,linecolor:"rgba( 128, 204, 219, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,showTime:!0},linetoolcirclelines:{clonable:!0,trendline:{visible:!0,color:"rgba( 128, 128, 128, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},linecolor:"rgba( 128, 204, 219, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},linetoolfibtimezone:{horzLabelsAlign:"right",vertLabelsAlign:"bottom",clonable:!0,baselinecolor:"rgba( 128, 128, 128, 1)",linecolor:"rgba( 0, 85, 219, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,showLabels:!0,font:"Verdana",fillBackground:!1,transparency:80,trendline:{visible:!0,color:"rgba( 128, 128, 128, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},level1:g.c(0,"rgba( 128, 128, 128, 1)",!0),level2:g.c(1,"rgba( 0, 85, 219, 1)",!0),level3:g.c(2,"rgba( 0, 85, 219, 1)",!0),level4:g.c(3,"rgba( 0, 85, 219, 1)",!0),level5:g.c(5,"rgba( 0, 85, 219, 1)",!0),level6:g.c(8,"rgba( 0, 85, 219, 1)",!0),level7:g.c(13,"rgba( 0, 85, 219, 1)",!0), +level8:g.c(21,"rgba( 0, 85, 219, 1)",!0),level9:g.c(34,"rgba( 0, 85, 219, 1)",!0),level10:g.c(55,"rgba( 0, 85, 219, 1)",!0),level11:g.c(89,"rgba( 0, 85, 219, 1)",!0),__collectibleLines:["trendline","level1","level2","level3","level4","level5","level6","level7","level8","level9","level10","level11"]},linetooltext:{clonable:!0,color:"rgba( 102, 123, 139, 1)",text:$.t("Text"),font:"Verdana",fontsize:20,fillBackground:!1,backgroundColor:"rgba( 91, 133, 191, 0.9)",backgroundTransparency:70,drawBorder:!1,borderColor:"rgba( 102, 123, 139, 1)",bold:!1,italic:!1,locked:!1,fixedSize:!0,wordWrap:!1,wordWrapWidth:400},linetooltextabsolute:{singleChartOnly:!0,clonable:!0,color:"rgba( 102, 123, 139, 1)",text:$.t("Text"),font:"Verdana",fontsize:20,fillBackground:!1,backgroundColor:"rgba( 155, 190, 213, 0.3)",backgroundTransparency:70,drawBorder:!1,borderColor:"rgba( 102, 123, 139, 1)",bold:!1,italic:!1,locked:!0,wordWrap:!1,wordWrapWidth:400},linetoolballoon:{clonable:!0,color:"rgba( 102, 123, 139, 1)",backgroundColor:"rgba( 255, 254, 206, 0.7)",borderColor:"rgba( 140, 140, 140, 1)",fontWeight:"bold",fontsize:12,font:"Arial",transparency:30,text:$.t("Comment")},linetoolbrush:{clonable:!0,linecolor:"rgba( 53, 53, 53, 1)",linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,smooth:5,fillBackground:!1,backgroundColor:"rgba( 21, 56, 153, 0.5)",transparency:50,leftEnd:m.Normal,rightEnd:m.Normal},linetoolpolyline:{clonable:!0,linecolor:"rgba( 53, 53, 53, 1)",linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,fillBackground:!0,backgroundColor:"rgba( 21, 56, 153, 0.5)",transparency:50,filled:!1},linetoolarrowmark:{clonable:!0,color:"rgba( 120, 120, 120, 1)",text:"",fontsize:20,font:"Verdana"},linetoolarrowmarkleft:{clonable:!0,color:"rgba( 120, 120, 120, 1)",text:"",fontsize:20,font:"Verdana"},linetoolarrowmarkup:{clonable:!0,color:"rgba( 120, 120, 120, 1)",text:"",fontsize:20,font:"Verdana"},linetoolarrowmarkright:{clonable:!0,color:"rgba( 120, 120, 120, 1)",text:"",fontsize:20,font:"Verdana"},linetoolarrowmarkdown:{clonable:!0,color:"rgba( 120, 120, 120, 1)",text:"",fontsize:20,font:"Verdana"},linetoolflagmark:{clonable:!0,color:"rgba( 255, 0, 0, 1)"},linetoolnote:{clonable:!0,markerColor:"rgba( 46, 102, 255, 1)",textColor:"rgba( 0, 0, 0, 1)",backgroundColor:"rgba( 255, 255, 255, 1)",backgroundTransparency:0,text:$.t("Text"),font:"Arial",fontSize:12,bold:!1,italic:!1,locked:!1,fixedSize:!0},linetoolnoteabsolute:{singleChartOnly:!0,clonable:!0,markerColor:"rgba( 46, 102, 255, 1)",textColor:"rgba( 0, 0, 0, 1)",backgroundColor:"rgba( 255, 255, 255, 1)",backgroundTransparency:0,text:$.t("Text"),font:"Arial",fontSize:12,bold:!1,italic:!1,locked:!0,fixedSize:!0},linetoolthumbup:{clonable:!0,color:"rgba( 0, 128, 0, 1)"},linetoolthumbdown:{clonable:!0,color:"rgba( 255, 0, 0, 1)"},linetoolpricelabel:{clonable:!0,color:"rgba( 102, 123, 139, 1)",backgroundColor:"rgba( 255, 255, 255, 0.7)",borderColor:"rgba( 140, 140, 140, 1)",fontWeight:"bold",fontsize:11,font:"Arial",transparency:30},linetoolrectangle:{clonable:!0,color:"rgba( 21, 56, 153, 1)", +fillBackground:!0,backgroundColor:"rgba( 21, 56, 153, 0.5)",linewidth:1,snapTo45Degrees:!0,transparency:50},linetoolrotatedrectangle:{clonable:!0,color:"rgba( 152, 0, 255, 1)",fillBackground:!0,backgroundColor:"rgba( 142, 124, 195, 0.5)",transparency:50,linewidth:1,snapTo45Degrees:!0},linetoolellipse:{clonable:!0,color:"rgba( 153, 153, 21, 1)",fillBackground:!0,backgroundColor:"rgba( 153, 153, 21, 0.5)",transparency:50,linewidth:1},linetoolarc:{clonable:!0,color:"rgba( 153, 153, 21, 1)",fillBackground:!0,backgroundColor:"rgba( 153, 153, 21, 0.5)",transparency:50,linewidth:1},linetoolprediction:{singleChartOnly:!0,linecolor:"rgba( 28, 115, 219, 1)",linewidth:2,sourceBackColor:"rgba( 241, 241, 241, 1)",sourceTextColor:"rgba( 110, 110, 110, 1)",sourceStrokeColor:"rgba( 110, 110, 110, 1)",targetStrokeColor:"rgba( 47, 168, 255, 1)",targetBackColor:"rgba( 11, 111, 222, 1)",targetTextColor:"rgba( 255, 255, 255, 1)",successBackground:"rgba( 54, 160, 42, 0.9)",successTextColor:"rgba( 255, 255, 255, 1)",failureBackground:"rgba( 231, 69, 69, 0.5)",failureTextColor:"rgba( 255, 255, 255, 1)",intermediateBackColor:"rgba( 234, 210, 137, 1)",intermediateTextColor:"rgba( 109, 77, 34, 1)",transparency:10,centersColor:"rgba( 32, 32, 32, 1)"},linetooltriangle:{clonable:!0,color:"rgba( 153, 21, 21, 1)",fillBackground:!0,backgroundColor:"rgba( 153, 21, 21, 0.5)",transparency:50,linewidth:1},linetoolcallout:{clonable:!0,color:"rgba( 255, 255, 255, 1)",backgroundColor:"rgba( 153, 21, 21, 0.5)",transparency:50,linewidth:2,fontsize:12,font:"Verdana",text:$.t("Text"),bordercolor:"rgba( 153, 21, 21, 1)",bold:!1,italic:!1,wordWrap:!1,wordWrapWidth:400},linetoolparallelchannel:{clonable:!0,linecolor:"rgba( 119, 52, 153, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!1,fillBackground:!0,backgroundColor:"rgba( 180, 167, 214, 0.5)",transparency:50,showMidline:!1,midlinecolor:"rgba( 119, 52, 153, 1)",midlinewidth:1,midlinestyle:CanvasEx.LINESTYLE_DASHED},linetoolelliottimpulse:{degree:7,clonable:!0,showWave:!0,color:"rgba( 61, 133, 198, 1)",linewidth:1},linetoolelliotttriangle:{degree:7,clonable:!0,showWave:!0,color:"rgba( 255, 152, 0, 1)",linewidth:1},linetoolelliotttriplecombo:{degree:7,clonable:!0,showWave:!0,color:"rgba( 106, 168, 79, 1)",linewidth:1},linetoolelliottcorrection:{degree:7,clonable:!0,showWave:!0,color:"rgba( 61, 133, 198, 1)",linewidth:1},linetoolelliottdoublecombo:{degree:7,clonable:!0,showWave:!0,color:"rgba( 106, 168, 79, 1)",linewidth:1},linetoolbarspattern:{singleChartOnly:!0,color:"rgba( 80, 145, 204, 1)",clonable:!0,mode:u.Bars,mirrored:!1,flipped:!1},linetoolghostfeed:{singleChartOnly:!0,clonable:!0,averageHL:20,variance:50,candleStyle:{upColor:"#6ba583",downColor:"#d75442",drawWick:!0,drawBorder:!0,borderColor:"#378658",borderUpColor:"#225437",borderDownColor:"#5b1a13",wickColor:"#737375"},transparency:50},study:{inputs:{},styles:{},palettes:{},bands:{},area:{},graphics:{},showInDataWindow:!0,visible:!0,showStudyArguments:!0,precision:"default"},linetoolpitchfork:{clonable:!0, +fillBackground:!0,transparency:80,style:h.Original,median:{visible:!0,color:"rgba( 165, 0, 0, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},level0:g.c(.25,"rgba( 160, 107, 0, 1)",!1),level1:g.c(.382,"rgba( 105, 158, 0, 1)",!1),level2:g.c(.5,"rgba( 0, 155, 0, 1)",!0),level3:g.c(.618,"rgba( 0, 153, 101, 1)",!1),level4:g.c(.75,"rgba( 0, 101, 153, 1)",!1),level5:g.c(1,"rgba( 0, 0, 153, 1)",!0),level6:g.c(1.5,"rgba( 102, 0, 153, 1)",!1),level7:g.c(1.75,"rgba( 153, 0, 102, 1)",!1),level8:g.c(2,"rgba( 165, 0, 0, 1)",!1),__collectibleLines:["median","level0","level1","level2","level3","level4","level5","level6","level7","level8"]},linetoolpitchfan:{clonable:!0,fillBackground:!0,transparency:80,median:{visible:!0,color:"rgba( 165, 0, 0, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},level0:g.c(.25,"rgba( 160, 107, 0, 1)",!1),level1:g.c(.382,"rgba( 105, 158, 0, 1)",!1),level2:g.c(.5,"rgba( 0, 155, 0, 1)",!0),level3:g.c(.618,"rgba( 0, 153, 101, 1)",!1),level4:g.c(.75,"rgba( 0, 101, 153, 1)",!1),level5:g.c(1,"rgba( 0, 0, 153, 1)",!0),level6:g.c(1.5,"rgba( 102, 0, 153, 1)",!1),level7:g.c(1.75,"rgba( 153, 0, 102, 1)",!1),level8:g.c(2,"rgba( 165, 0, 0, 1)",!1),__collectibleLines:["median","level0","level1","level2","level3","level4","level5","level6","level7","level8"]},linetoolgannfan:{clonable:!0,showLabels:!0,font:"Verdana",fillBackground:!0,transparency:80,level1:g.f(1,8,"rgba( 160, 107, 0, 1)",!0),level2:g.f(1,4,"rgba( 105, 158, 0, 1)",!0),level3:g.f(1,3,"rgba( 0, 155, 0, 1)",!0),level4:g.f(1,2,"rgba( 0, 153, 101, 1)",!0),level5:g.f(1,1,"rgba( 128, 128, 128, 1)",!0),level6:g.f(2,1,"rgba( 0, 101, 153, 1)",!0),level7:g.f(3,1,"rgba( 0, 0, 153, 1)",!0),level8:g.f(4,1,"rgba( 102, 0, 153, 1)",!0),level9:g.f(8,1,"rgba( 165, 0, 0, 1)",!0),__collectibleLines:["level1","level2","level3","level4","level5","level6","level7","level8","level9","level10","level11"]},linetoolganncomplex:{clonable:!0,fillBackground:!1,arcsBackground:{fillBackground:!0,transparency:80},reverse:!1,levels:[g.d("rgba( 128, 128, 128, 1)",!0,1),g.d("rgba( 160, 107, 0, 1)",!0,1),g.d("rgba( 105, 158, 0, 1)",!0,1),g.d("rgba( 0, 155, 0, 1)",!0,1),g.d("rgba( 0, 153, 101, 1)",!0,1),g.d("rgba( 128, 128, 128, 1)",!0,1)],fanlines:[g.e("rgba( 165, 0, 255, 1)",!1,1,8,1),g.e("rgba( 165, 0, 0, 1)",!1,1,5,1),g.e("rgba( 128, 128, 128, 1)",!1,1,4,1),g.e("rgba( 160, 107, 0, 1)",!1,1,3,1),g.e("rgba( 105, 158, 0, 1)",!0,1,2,1),g.e("rgba( 0, 155, 0, 1)",!0,1,1,1),g.e("rgba( 0, 153, 101, 1)",!0,1,1,2),g.e("rgba( 0, 153, 101, 1)",!1,1,1,3),g.e("rgba( 0, 0, 153, 1)",!1,1,1,4),g.e("rgba( 102, 0, 153, 1)",!1,1,1,5),g.e("rgba( 165, 0, 255, 1)",!1,1,1,8)],arcs:[g.e("rgba( 160, 107, 0, 1)",!0,1,1,0),g.e("rgba( 160, 107, 0, 1)",!0,1,1,1),g.e("rgba( 160, 107, 0, 1)",!0,1,1.5,0),g.e("rgba( 105, 158, 0, 1)",!0,1,2,0),g.e("rgba( 105, 158, 0, 1)",!0,1,2,1),g.e("rgba( 0, 155, 0, 1)",!0,1,3,0),g.e("rgba( 0, 155, 0, 1)",!0,1,3,1),g.e("rgba( 0, 153, 101, 1)",!0,1,4,0),g.e("rgba( 0, 153, 101, 1)",!0,1,4,1),g.e("rgba( 0, 0, 153, 1)",!0,1,5,0),g.e("rgba( 0, 0, 153, 1)",!0,1,5,1)], +__collectibleLines:["trendline","levels.0","levels.1","levels.2","levels.3","levels.4","levels.5","fanlines.0","fanlines.1","fanlines.2","fanlines.3","fanlines.4","fanlines.5","fanlines.6","fanlines.7","fanlines.8","fanlines.9","fanlines.10","arcs.0","arcs.1","arcs.2","arcs.3","arcs.4","arcs.5","arcs.6","arcs.7","arcs.8","arcs.9","arcs.10"]},linetoolgannsquare:{clonable:!0,color:"rgba( 21, 56, 153, 0.8)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,font:"Verdana",showTopLabels:!0,showBottomLabels:!0,showLeftLabels:!0,showRightLabels:!0,fillHorzBackground:!0,horzTransparency:80,fillVertBackground:!0,vertTransparency:80,reverse:!1,fans:g.a("rgba( 128, 128, 128, 1)",!1),hlevel1:g.b(0,"rgba( 128, 128, 128, 1)",!0),hlevel2:g.b(.25,"rgba( 160, 107, 0, 1)",!0),hlevel3:g.b(.382,"rgba( 105, 158, 0, 1)",!0),hlevel4:g.b(.5,"rgba( 0, 155, 0, 1)",!0),hlevel5:g.b(.618,"rgba( 0, 153, 101, 1)",!0),hlevel6:g.b(.75,"rgba( 0, 101, 153, 1)",!0),hlevel7:g.b(1,"rgba( 128, 128, 128, 1)",!0),vlevel1:g.b(0,"rgba( 128, 128, 128, 1)",!0),vlevel2:g.b(.25,"rgba( 160, 107, 0, 1)",!0),vlevel3:g.b(.382,"rgba( 105, 158, 0, 1)",!0),vlevel4:g.b(.5,"rgba( 0, 155, 0, 1)",!0),vlevel5:g.b(.618,"rgba( 0, 153, 101, 1)",!0),vlevel6:g.b(.75,"rgba( 0, 101, 153, 1)",!0),vlevel7:g.b(1,"rgba( 128, 128, 128, 1)",!0),__collectibleLines:["fans","hlevel1","hlevel2","hlevel3","hlevel4","hlevel5","hlevel6","hlevel7","vlevel1","vlevel2","vlevel3","vlevel4","vlevel5","vlevel6","vlevel7"]},linetoolfibspeedresistancefan:{clonable:!0,fillBackground:!0,transparency:80,grid:{color:"rgba( 128, 128, 128, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,visible:!0},linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,font:"Verdana",showTopLabels:!0,showBottomLabels:!0,showLeftLabels:!0,showRightLabels:!0,snapTo45Degrees:!0,hlevel1:g.b(0,"rgba( 128, 128, 128, 1)",!0),hlevel2:g.b(.25,"rgba( 160, 107, 0, 1)",!0),hlevel3:g.b(.382,"rgba( 105, 158, 0, 1)",!0),hlevel4:g.b(.5,"rgba( 0, 155, 0, 1)",!0),hlevel5:g.b(.618,"rgba( 0, 153, 101, 1)",!0),hlevel6:g.b(.75,"rgba( 0, 101, 153, 1)",!0),hlevel7:g.b(1,"rgba( 128, 128, 128, 1)",!0),vlevel1:g.b(0,"rgba( 128, 128, 128, 1)",!0),vlevel2:g.b(.25,"rgba( 160, 107, 0, 1)",!0),vlevel3:g.b(.382,"rgba( 105, 158, 0, 1)",!0),vlevel4:g.b(.5,"rgba( 0, 155, 0, 1)",!0),vlevel5:g.b(.618,"rgba( 0, 153, 101, 1)",!0),vlevel6:g.b(.75,"rgba( 0, 101, 153, 1)",!0),vlevel7:g.b(1,"rgba( 128, 128, 128, 1)",!0),__collectibleLines:["trendline","hlevel1","hlevel2","hlevel3","hlevel4","hlevel5","hlevel6","hlevel7","vlevel1","vlevel2","vlevel3","vlevel4","vlevel5","vlevel6","vlevel7"]},linetoolfibretracement:{clonable:!0,showCoeffs:!0,showPrices:!0,font:"Verdana",fillBackground:!0,transparency:80,extendLines:!1,horzLabelsAlign:"left",vertLabelsAlign:"middle",reverse:!1,coeffsAsPercents:!1,trendline:{visible:!0,color:"rgba( 128, 128, 128, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},levelsStyle:{linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},level1:g.b(0,"rgba( 128, 128, 128, 1)",!0),level2:g.b(.236,"rgba( 204, 40, 40, 1)",!0), +level3:g.b(.382,"rgba( 149, 204, 40, 1)",!0),level4:g.b(.5,"rgba( 40, 204, 40, 1)",!0),level5:g.b(.618,"rgba( 40, 204, 149, 1)",!0),level6:g.b(.786,"rgba( 40, 149, 204, 1)",!0),level7:g.b(1,"rgba( 128, 128, 128, 1)",!0),level8:g.b(1.618,"rgba( 40, 40, 204, 1)",!0),level9:g.b(2.618,"rgba( 204, 40, 40, 1)",!0),level10:g.b(3.618,"rgba( 149, 40, 204, 1)",!0),level11:g.b(4.236,"rgba( 204, 40, 149, 1)",!0),level12:g.b(1.272,"rgba( 149, 204, 40, 1)",!1),level13:g.b(1.414,"rgba( 204, 40, 40, 1)",!1),level16:g.b(2,"rgba( 40, 204, 149, 1)",!1),level14:g.b(2.272,"rgba( 149, 204, 40, 1)",!1),level15:g.b(2.414,"rgba( 40, 204, 40, 1)",!1),level17:g.b(3,"rgba( 40, 149, 204, 1)",!1),level18:g.b(3.272,"rgba( 128, 128, 128, 1)",!1),level19:g.b(3.414,"rgba( 40, 40, 204, 1)",!1),level20:g.b(4,"rgba( 204, 40, 40, 1)",!1),level21:g.b(4.272,"rgba( 149, 40, 204, 1)",!1),level22:g.b(4.414,"rgba( 204, 40, 149, 1)",!1),level23:g.b(4.618,"rgba( 149, 204, 40, 1)",!1),level24:g.b(4.764,"rgba( 40, 204, 149, 1)",!1),__collectibleLines:["trendline","level1","level2","level3","level4","level5","level6","level7","level8","level9","level10","level11","level12","level13","level14","level15","level16","level17","level18","level19","level20","level21","level22","level23","level24"]},linetoolfibchannel:{clonable:!0,showCoeffs:!0,showPrices:!0,font:"Verdana",fillBackground:!0,transparency:80,extendLeft:!1,extendRight:!1,horzLabelsAlign:"left",vertLabelsAlign:"middle",coeffsAsPercents:!1,levelsStyle:{linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},level1:g.b(0,"rgba( 128, 128, 128, 1)",!0),level2:g.b(.236,"rgba( 204, 40, 40, 1)",!0),level3:g.b(.382,"rgba( 149, 204, 40, 1)",!0),level4:g.b(.5,"rgba( 40, 204, 40, 1)",!0),level5:g.b(.618,"rgba( 40, 204, 149, 1)",!0),level6:g.b(.786,"rgba( 40, 149, 204, 1)",!0),level7:g.b(1,"rgba( 128, 128, 128, 1)",!0),level8:g.b(1.618,"rgba( 40, 40, 204, 1)",!0),level9:g.b(2.618,"rgba( 204, 40, 40, 1)",!0),level10:g.b(3.618,"rgba( 149, 40, 204, 1)",!0),level11:g.b(4.236,"rgba( 204, 40, 149, 1)",!0),level12:g.b(1.272,"rgba( 149, 204, 40, 1)",!1),level13:g.b(1.414,"rgba( 204, 40, 40, 1)",!1),level16:g.b(2,"rgba( 40, 204, 149, 1)",!1),level14:g.b(2.272,"rgba( 149, 204, 40, 1)",!1),level15:g.b(2.414,"rgba( 40, 204, 40, 1)",!1),level17:g.b(3,"rgba( 40, 149, 204, 1)",!1),level18:g.b(3.272,"rgba( 128, 128, 128, 1)",!1),level19:g.b(3.414,"rgba( 40, 40, 204, 1)",!1),level20:g.b(4,"rgba( 204, 40, 40, 1)",!1),level21:g.b(4.272,"rgba( 149, 40, 204, 1)",!1),level22:g.b(4.414,"rgba( 204, 40, 149, 1)",!1),level23:g.b(4.618,"rgba( 149, 204, 40, 1)",!1),level24:g.b(4.764,"rgba( 40, 204, 149, 1)",!1),__collectibleLines:["level1","level2","level3","level4","level5","level6","level7","level8","level9","level10","level11","level12","level13","level14","level15","level16","level17","level18","level19","level20","level21","level22","level23","level24"]},linetoolprojection:{clonable:!0,showCoeffs:!0,font:"Verdana",fillBackground:!0,transparency:80,color1:"rgba( 0, 128, 0, 0.2)",color2:"rgba( 255, 0, 0, 0.2)",linewidth:1,trendline:{visible:!0, +color:"rgba( 128, 128, 128, 1)",linestyle:CanvasEx.LINESTYLE_SOLID},level1:g.c(1,"rgba( 128, 128, 128, 1)",!0)},linetool5pointspattern:{clonable:!0,color:"rgba( 204, 40, 149, 1)",textcolor:"rgba( 255, 255, 255, 1)",fillBackground:!0,backgroundColor:"rgba( 204, 40, 149, 0.5)",font:"Verdana",fontsize:12,bold:!1,italic:!1,transparency:50,linewidth:1},linetoolcypherpattern:{clonable:!0,color:"#CC2895",textcolor:"#FFFFFF",fillBackground:!0,backgroundColor:"#CC2895",font:"Verdana",fontsize:12,bold:!1,italic:!1,transparency:50,linewidth:1},linetooltrianglepattern:{clonable:!0,color:"rgba( 149, 40, 255, 1)",textcolor:"rgba( 255, 255, 255, 1)",fillBackground:!0,backgroundColor:"rgba( 149, 40, 204, 0.5)",font:"Verdana",fontsize:12,bold:!1,italic:!1,transparency:50,linewidth:1},linetoolabcd:{clonable:!0,color:"rgba( 0, 155, 0, 1)",textcolor:"rgba( 255, 255, 255, 1)",font:"Verdana",fontsize:12,bold:!1,italic:!1,linewidth:2},linetoolthreedrivers:{clonable:!0,color:"rgba( 149, 40, 255, 1)",textcolor:"rgba( 255, 255, 255, 1)",fillBackground:!0,backgroundColor:"rgba( 149, 40, 204, 0.5)",font:"Verdana",fontsize:12,bold:!1,italic:!1,transparency:50,linewidth:2},linetoolheadandshoulders:{clonable:!0,color:"rgba( 69, 104, 47, 1)",textcolor:"rgba( 255, 255, 255, 1)",fillBackground:!0,backgroundColor:"rgba( 69, 168, 47, 0.5)",font:"Verdana",fontsize:12,bold:!1,italic:!1,transparency:50,linewidth:2},linetoolfibwedge:{singleChartOnly:!0,clonable:!0,showCoeffs:!0,font:"Verdana",fillBackground:!0,transparency:80,trendline:{visible:!0,color:"rgba( 128, 128, 128, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},level1:g.c(.236,"rgba( 204, 40, 40, 1)",!0),level2:g.c(.382,"rgba( 149, 204, 40, 1)",!0),level3:g.c(.5,"rgba( 40, 204, 40, 1)",!0),level4:g.c(.618,"rgba( 40, 204, 149, 1)",!0),level5:g.c(.786,"rgba( 40, 149, 204, 1)",!0),level6:g.c(1,"rgba( 128, 128, 128, 1)",!0),level7:g.c(1.618,"rgba( 40, 40, 204, 1)",!1),level8:g.c(2.618,"rgba( 204, 40, 40, 1)",!1),level9:g.c(3.618,"rgba( 149, 40, 204, 1)",!1),level10:g.c(4.236,"rgba( 204, 40, 149, 1)",!1),level11:g.c(4.618,"rgba( 204, 40, 149, 1)",!1),__collectibleLines:["trendline","level1","level2","level3","level4","level5","level6","level7","level8","level9","level10","level11"]},linetoolfibcircles:{clonable:!0,showCoeffs:!0,font:"Verdana",fillBackground:!0,transparency:80,snapTo45Degrees:!0,coeffsAsPercents:!1,trendline:{visible:!0,color:"rgba( 128, 128, 128, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},level1:g.c(.236,"rgba( 204, 40, 40, 1)",!0),level2:g.c(.382,"rgba( 149, 204, 40, 1)",!0),level3:g.c(.5,"rgba( 40, 204, 40, 1)",!0),level4:g.c(.618,"rgba( 40, 204, 149, 1)",!0),level5:g.c(.786,"rgba( 40, 149, 204, 1)",!0),level6:g.c(1,"rgba( 128, 128, 128, 1)",!0),level7:g.c(1.618,"rgba( 40, 40, 204, 1)",!0),level8:g.c(2.618,"rgba( 204, 40, 40, 1)",!0),level9:g.c(3.618,"rgba( 149, 40, 204, 1)",!0),level10:g.c(4.236,"rgba( 204, 40, 149, 1)",!0),level11:g.c(4.618,"rgba( 204, 40, 149, 1)",!0), +__collectibleLines:["trendline","level1","level2","level3","level4","level5","level6","level7","level8","level9","level10","level11"]},linetoolfibspeedresistancearcs:{clonable:!0,showCoeffs:!0,font:"Verdana",fillBackground:!0,transparency:80,fullCircles:!1,trendline:{visible:!0,color:"rgba( 128, 128, 128, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},level1:g.c(.236,"rgba( 204, 40, 40, 1)",!0),level2:g.c(.382,"rgba( 149, 204, 40, 1)",!0),level3:g.c(.5,"rgba( 40, 204, 40, 1)",!0),level4:g.c(.618,"rgba( 40, 204, 149, 1)",!0),level5:g.c(.786,"rgba( 40, 149, 204, 1)",!0),level6:g.c(1,"rgba( 128, 128, 128, 1)",!0),level7:g.c(1.618,"rgba( 40, 40, 204, 1)",!0),level8:g.c(2.618,"rgba( 204, 40, 40, 1)",!0),level9:g.c(3.618,"rgba( 149, 40, 204, 1)",!0),level10:g.c(4.236,"rgba( 204, 40, 149, 1)",!0),level11:g.c(4.618,"rgba( 204, 40, 149, 1)",!0),__collectibleLines:["trendline","level1","level2","level3","level4","level5","level6","level7","level8","level9","level10","level11"]},linetooltrendbasedfibextension:{clonable:!0,showCoeffs:!0,showPrices:!0,font:"Verdana",fillBackground:!0,transparency:80,extendLines:!1,horzLabelsAlign:"left",vertLabelsAlign:"middle",reverse:!1,coeffsAsPercents:!1,trendline:{visible:!0,color:"rgba( 128, 128, 128, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},levelsStyle:{linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},level1:g.b(0,"rgba( 128, 128, 128, 1)",!0),level2:g.b(.236,"rgba( 204, 40, 40, 1)",!0),level3:g.b(.382,"rgba( 149, 204, 40, 1)",!0),level4:g.b(.5,"rgba( 40, 204, 40, 1)",!0),level5:g.b(.618,"rgba( 40, 204, 149, 1)",!0),level6:g.b(.786,"rgba( 40, 149, 204, 1)",!0),level7:g.b(1,"rgba( 128, 128, 128, 1)",!0),level8:g.b(1.618,"rgba( 40, 40, 204, 1)",!0),level9:g.b(2.618,"rgba( 204, 40, 40, 1)",!0),level10:g.b(3.618,"rgba( 149, 40, 204, 1)",!0),level11:g.b(4.236,"rgba( 204, 40, 149, 1)",!0),level12:g.b(1.272,"rgba( 149, 204, 40, 1)",!1),level13:g.b(1.414,"rgba( 204, 40, 40, 1)",!1),level16:g.b(2,"rgba( 40, 204, 149, 1)",!1),level14:g.b(2.272,"rgba( 149, 204, 40, 1)",!1),level15:g.b(2.414,"rgba( 40, 204, 40, 1)",!1),level17:g.b(3,"rgba( 40, 149, 204, 1)",!1),level18:g.b(3.272,"rgba( 128, 128, 128, 1)",!1),level19:g.b(3.414,"rgba( 40, 40, 204, 1)",!1),level20:g.b(4,"rgba( 204, 40, 40, 1)",!1),level21:g.b(4.272,"rgba( 149, 40, 204, 1)",!1),level22:g.b(4.414,"rgba( 204, 40, 149, 1)",!1),level23:g.b(4.618,"rgba( 149, 204, 40, 1)",!1),level24:g.b(4.764,"rgba( 40, 204, 149, 1)",!1),__collectibleLines:["trendline","level1","level2","level3","level4","level5","level6","level7","level8","level9","level10","level11","level12","level13","level14","level15","level16","level17","level18","level19","level20","level21","level22","level23","level24"]},linetooltrendbasedfibtime:{clonable:!0,showCoeffs:!0,font:"Verdana",fillBackground:!0,transparency:80,horzLabelsAlign:"right",vertLabelsAlign:"bottom",trendline:{visible:!0,color:"rgba( 128, 128, 128, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},level1:g.c(0,"rgba( 128, 128, 128, 1)",!0),level2:g.c(.382,"rgba( 204, 40, 40, 1)",!0), +level3:g.c(.5,"rgba( 149, 204, 40, 1)",!1),level4:g.c(.618,"rgba( 40, 204, 40, 1)",!0),level5:g.c(1,"rgba( 40, 204, 149, 1)",!0),level6:g.c(1.382,"rgba( 40, 149, 204, 1)",!0),level7:g.c(1.618,"rgba( 128, 128, 128, 1)",!0),level8:g.c(2,"rgba( 40, 40, 204, 1)",!0),level9:g.c(2.382,"rgba( 204, 40, 40, 1)",!0),level10:g.c(2.618,"rgba( 149, 40, 204, 1)",!0),level11:g.c(3,"rgba( 204, 40, 149, 1)",!0),__collectibleLines:["trendline","level1","level2","level3","level4","level5","level6","level7","level8","level9","level10","level11"]},linetoolschiffpitchfork:{clonable:!0,fillBackground:!0,transparency:80,style:h.Schiff,median:{visible:!0,color:"rgba( 165, 0, 0, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},level0:g.c(.25,"rgba( 160, 107, 0, 1)",!1),level1:g.c(.382,"rgba( 105, 158, 0, 1)",!1),level2:g.c(.5,"rgba( 0, 155, 0, 1)",!0),level3:g.c(.618,"rgba( 0, 153, 101, 1)",!1),level4:g.c(.75,"rgba( 0, 101, 153, 1)",!1),level5:g.c(1,"rgba( 0, 0, 153, 1)",!0),level6:g.c(1.5,"rgba( 102, 0, 153, 1)",!1),level7:g.c(1.75,"rgba( 153, 0, 102, 1)",!1),level8:g.c(2,"rgba( 165, 0, 0, 1)",!1),__collectibleLines:["median","level0","level1","level2","level3","level4","level5","level6","level7","level8"]},linetoolschiffpitchfork2:{clonable:!0,fillBackground:!0,transparency:80,style:h.Schiff2,median:{visible:!0,color:"rgba( 165, 0, 0, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},level0:g.c(.25,"rgba( 160, 107, 0, 1)",!1),level1:g.c(.382,"rgba( 105, 158, 0, 1)",!1),level2:g.c(.5,"rgba( 0, 155, 0, 1)",!0),level3:g.c(.618,"rgba( 0, 153, 101, 1)",!1),level4:g.c(.75,"rgba( 0, 101, 153, 1)",!1),level5:g.c(1,"rgba( 0, 0, 153, 1)",!0),level6:g.c(1.5,"rgba( 102, 0, 153, 1)",!1),level7:g.c(1.75,"rgba( 153, 0, 102, 1)",!1),level8:g.c(2,"rgba( 165, 0, 0, 1)",!1),__collectibleLines:["median","level0","level1","level2","level3","level4","level5","level6","level7","level8"]},linetoolinsidepitchfork:{clonable:!0,fillBackground:!0,transparency:80,style:h.Inside,median:{visible:!0,color:"rgba( 165, 0, 0, 1)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},level0:g.c(.25,"rgba( 160, 107, 0, 1)",!1),level1:g.c(.382,"rgba( 105, 158, 0, 1)",!1),level2:g.c(.5,"rgba( 0, 155, 0, 1)",!0),level3:g.c(.618,"rgba( 0, 153, 101, 1)",!1),level4:g.c(.75,"rgba( 0, 101, 153, 1)",!1),level5:g.c(1,"rgba( 0, 0, 153, 1)",!0),level6:g.c(1.5,"rgba( 102, 0, 153, 1)",!1),level7:g.c(1.75,"rgba( 153, 0, 102, 1)",!1),level8:g.c(2,"rgba( 165, 0, 0, 1)",!1),__collectibleLines:["median","level0","level1","level2","level3","level4","level5","level6","level7","level8"]},linetool:{frozen:!1,visible:!0},linetoolvisibilities:{intervalsVisibilities:{seconds:!0,secondsFrom:1,secondsTo:59,minutes:!0,minutesFrom:1,minutesTo:59,hours:!0,hoursFrom:1,hoursTo:24,days:!0,daysFrom:1,daysTo:366,weeks:!0,months:!0}}},n(TradingView.defaultProperties.chartproperties),r()}for(void 0===TradingView.defaultProperties["study_MA@tv-basicstudies"]&&(TradingView.defaultProperties["study_MA@tv-basicstudies"]={description:"Moving Average",shortDescription:"MA",inputs:{length:9,source:"close"},styles:{ +MovAvg:{visible:!0,color:"rgba( 4, 150, 255, 1)",linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,plottype:_.Line,histogramBase:0,title:"MA"}}}),void 0===TradingView.defaultProperties["study_ErrorOnUpdate@tv-basicstudies"]&&(TradingView.defaultProperties["study_ErrorOnUpdate@tv-basicstudies"]={description:"Error On Update",styles:{ErrorOnUpdate:{visible:!0,color:"rgba( 255, 0, 0, 1)",linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,plottype:_.Line,histogramBase:0}}}),void 0===TradingView.defaultProperties["study_ErrorOnCreate@tv-basicstudies"]&&(TradingView.defaultProperties["study_ErrorOnCreate@tv-basicstudies"]={description:"Error On Create",styles:{ErrorOnUpdate:{visible:!0,color:"rgba( 0, 255, 0, 1)",linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,plottype:_.Line,histogramBase:0}}}),void 0===TradingView.defaultProperties["study_ErrorOnNewBar@tv-basicstudies"]&&(TradingView.defaultProperties["study_ErrorOnNewBar@tv-basicstudies"]={description:"Error On New Bar",styles:{ErrorOnUpdate:{visible:!0,color:"rgba( 0, 0, 255, 1)",linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,plottype:_.Line,histogramBase:0}}}),void 0===TradingView.defaultProperties["study_PivotPointsHighLow@tv-basicstudies"]&&(TradingView.defaultProperties["study_PivotPointsHighLow@tv-basicstudies"]={font:"Arial",fontsize:10,borderColor:"rgba( 83, 143, 31, 1)",backColor:"rgba( 240, 255, 204, 1)",textColor:"rgba( 0, 0, 0, 1)"}),void 0===TradingView.defaultProperties["study_PivotPointsStandard@tv-basicstudies"]&&(i="rgba( 212, 121, 40, 1)",o=!0,s=1,TradingView.defaultProperties["study_PivotPointsStandard@tv-basicstudies"]={_hardCodedDefaultsVersion:1,font:"Arial",fontsize:11,levelsStyle:{showLabels:!0,visibility:{P:o,"S1/R1":o,"S2/R2":o,"S3/R3":o,"S4/R4":o,"S5/R5":o},colors:{P:i,"S1/R1":i,"S2/R2":i,"S3/R3":i,"S4/R4":i,"S5/R5":i},widths:{P:s,"S1/R1":s,"S2/R2":s,"S3/R3":s,"S4/R4":s,"S5/R5":s}}}),void 0===TradingView.defaultProperties["study_ZigZag@tv-basicstudies"]&&(TradingView.defaultProperties["study_ZigZag@tv-basicstudies"]={color:"rgba( 86, 135, 29, 1)",linewidth:2}),void 0===TradingView.defaultProperties["study_ElliottWave@tv-basicstudies"]&&(TradingView.defaultProperties["study_ElliottWave@tv-basicstudies"]={inputs:{},level0:g.a("rgba( 255, 0, 0, 1)",!1),level1:g.a("rgba( 0, 128, 0, 1)",!1),level2:g.a("rgba( 0, 0, 255, 1)",!1),level3:g.a("rgba( 255, 0, 255, 1)",!1),level4:g.a("rgba( 0, 128, 255, 1)",!0),level5:g.a("rgba( 255, 0, 0, 1)",!0),level6:g.a("rgba( 0, 128, 0, 1)",!0),level7:g.a("rgba( 0, 0, 255, 1)",!0),level8:g.a("rgba( 255, 0, 255, 1)",!0)}),void 0===TradingView.defaultProperties["study_LinearRegression@tv-basicstudies"]&&(TradingView.defaultProperties["study_LinearRegression@tv-basicstudies"]={styles:{upLine:{visible:!0,color:"rgba( 0, 0, 255, 0.3)",linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1},downLine:{visible:!0,color:"rgba( 0, 0, 255, 0.3)",linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1},baseLine:{visible:!0,color:"rgba( 255, 0, 0, 0.3)",linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1},extendLines:!0,showPearsons:!0, +backgroundColor:"rgba( 153, 21, 21, 0.3)",transparency:70}}),void 0===TradingView.defaultProperties["study_RegressionTrend@tv-basicstudies"]&&(TradingView.defaultProperties["study_RegressionTrend@tv-basicstudies"]={linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,styles:{upLine:{visible:!0,color:"rgba( 0, 0, 255, 0.3)",linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1},downLine:{visible:!0,color:"rgba( 0, 0, 255, 0.3)",linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1},baseLine:{visible:!0,color:"rgba( 255, 0, 0, 0.3)",linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1},extendLines:!1,showPearsons:!0,transparency:70}}),void 0===TradingView.defaultProperties["study_Compare@tv-basicstudies"]&&(TradingView.defaultProperties["study_Compare@tv-basicstudies"]={minTick:"default"}),void 0===TradingView.defaultProperties["study_Overlay@tv-basicstudies"]&&(a="study_Overlay@tv-basicstudies",TradingView.defaultProperties[a]={style:c.STYLE_BARS,showPriceLine:!1,minTick:"default",candleStyle:{upColor:"rgba( 107, 165, 131, 1)",downColor:"rgba( 215, 84, 66, 1)",drawWick:!0,drawBorder:!0,borderColor:"rgba( 55, 134, 88, 1)",borderUpColor:"rgba( 34, 84, 55, 1)",borderDownColor:"rgba( 91, 26, 19, 1)",wickColor:"rgba( 115, 115, 117, 1)",wickUpColor:"rgba( 115, 115, 117, 1)",wickDownColor:"rgba( 115, 115, 117, 1)",barColorsOnPrevClose:!1},hollowCandleStyle:{upColor:"rgba( 107, 165, 131, 1)",downColor:"rgba( 215, 84, 66, 1)",drawWick:!0,drawBorder:!0,borderColor:"rgba( 55, 134, 88, 1)",borderUpColor:"rgba( 34, 84, 55, 1)",borderDownColor:"rgba( 91, 26, 19, 1)",wickColor:"rgba( 115, 115, 117, 1)",wickUpColor:"rgba( 115, 115, 117, 1)",wickDownColor:"rgba( 115, 115, 117, 1)",barColorsOnPrevClose:!1},barStyle:{upColor:"rgba( 107, 165, 131, 1)",downColor:"rgba( 215, 84, 66, 1)",barColorsOnPrevClose:!1,dontDrawOpen:!1},lineStyle:{color:"rgba( 3, 3, 247, 1)",linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,priceSource:"close",styleType:c.STYLE_LINE_TYPE_SIMPLE},areaStyle:{color1:"rgba( 96, 96, 144, 0.5)",color2:"rgba( 1, 246, 245, 0.5)",linecolor:"rgba( 0, 148, 255, 1)",linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,priceSource:"close",transparency:50},baselineStyle:{baselineColor:"rgba( 117, 134, 150, 1)",topFillColor1:"rgba( 83, 185, 135, 0.1)",topFillColor2:"rgba( 83, 185, 135, 0.1)",bottomFillColor1:"rgba( 235, 77, 92, 0.1)",bottomFillColor2:"rgba( 235, 77, 92, 0.1)",topLineColor:"rgba( 83, 185, 135, 1)",bottomLineColor:"rgba( 235, 77, 92, 1)",topLineWidth:1,bottomLineWidth:1,priceSource:"close",transparency:50,baseLevelPercentage:50},styles:{open:{visible:!0,color:"rgba( 255, 0, 0, 1)",linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,plottype:_.Line,histogramBase:0},high:{visible:!0,color:"rgba( 255, 0, 0, 1)",linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,plottype:_.Line,histogramBase:0},low:{visible:!0,color:"rgba( 255, 0, 0, 1)",linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,plottype:_.Line,histogramBase:0},close:{visible:!0,color:"rgba( 255, 0, 0, 1)",linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,plottype:_.Line,histogramBase:0}}}),l=t.split("."), +d=TradingView.defaultProperties,p=0;ph.lastBar()||i=0;--d)if((p=u[d])instanceof r&&p._adapter._index===i&&p._adapter.getDirection()===m){if(p===t._line)break;_=p._adapter._height(),f=g?f+_:f-_}return{x:e.indexToCoordinate(i),y:f}},n.prototype._height=function(){var t,e=this.getArrowHeight(),i=this.getArrowSpacing();return this.getText()&&a.fontHeight(this.getFont()),t=10,e+i+0+t},n.prototype.getIndex=function(){return this._line._model.timeScale().baseIndex()-this._line.points()[0].index},n.prototype.setIndex=function(t){var e,i=this._line._model.timeScale(),o=i.baseIndex(),n=o-Math.abs(t);return this._line.startMoving(this._line.points()[0]),e=TradingView.merge({},this._line.points()[0]),e.index=n,this._line.move(e),this._line.endMoving(),this},n.prototype.getTime=function(){return this._unixtime},n.prototype.setTime=function(t){var e=this._line._model.mainSeries();return this._unixtime=ChartApiInstance.alignTimePoint?ChartApiInstance.alignTimePoint(t,e.interval(),e.symbolInfo()):t,this._line.restorePoints([{offset:0,price:this.getPrice(),time_t:this._unixtime}],[]), +this._line.createServerPoints(),this},n.prototype.getPrice=function(){return this._line.points().length>0?this._line.points()[0].price:this._line._timePoint.length>0?this._line._timePoint[0].price:void 0},n.prototype.setPrice=function(t){return this._line.points().length>0&&(this._line.points()[0].price=t),this._line._timePoint.length>0&&(this._line._timePoint[0].price=t),this},n.prototype.getText=function(){return this._line.properties().text.value()},n.prototype.setText=function(t){return this._line.properties().text.setValue(t||""),this._line.updateAllViewsAndRedraw(),this},n.prototype.getArrowHeight=function(){return this._line.properties().arrowHeight.value()},n.prototype.setArrowHeight=function(t){return this._line.properties().arrowHeight.setValue(t||5),this},n.prototype.getArrowSpacing=function(){return this._line.properties().arrowSpacing.value()},n.prototype.setArrowSpacing=function(t){return this._line.properties().arrowSpacing.setValue(t||1),this},n.prototype.getDirection=function(){return this._line.properties().direction.value()},n.prototype.setDirection=function(t){return this._line.properties().direction.setValue(t||"buy"),this},n.prototype.getArrowColor=function(){return a.getColorFromProperties(this._line.properties().arrowColor,this._line.properties().arrowTransparency)},n.prototype.setArrowColor=function(t){return a.setColorToProperties(t,this._line.properties().arrowColor,this._line.properties().arrowTransparency),this},n.prototype.getTextColor=function(){return a.getColorFromProperties(this._line.properties().textColor,this._line.properties().textTransparency)},n.prototype.setTextColor=function(t){return a.setColorToProperties(t,this._line.properties().textColor,this._line.properties().textTransparency),this},n.prototype.getFont=function(){return a.getFontFromProperties(this._line.properties().fontFamily,this._line.properties().fontSize,this._line.properties().fontBold,this._line.properties().fontItalic)},n.prototype.setFont=function(t){return a.setFontToProperties(t,this._line.properties().fontFamily,this._line.properties().fontSize,this._line.properties().fontBold,this._line.properties().fontItalic),this},n.prototype.setTooltip=function(t){return null==t?t="":t+="",this._line.properties().tooltip.setValue(t),this},n.prototype.getTooltip=function(){return this._line.properties().tooltip.value()},n.prototype.remove=function(){this._line._model.removeSource(this._line),delete this._line},inherit(r,s),r.POINTS_COUNT=1,r.skipMagnetting=!0,r.prototype.pointsCount=function(){return r.POINTS_COUNT},r.prototype.title=function(){return"Execution"},r.prototype.hasContextMenu=function(){return!1},r.prototype.state=function(){return null},r.prototype.updateAllViews=function(){return this._isVisible()?s.prototype.updateAllViews.call(this):null},r.prototype.priceAxisViews=function(t,e){return this._isVisible()?s.prototype.priceAxisViews.call(this,t,e):null},r.prototype._isVisible=function(){return this._model.properties().tradingProperties.showExecutions.value()},r.prototype.paneViews=function(e){ +return TradingView.printing&&!t.enabled("snapshot_trading_drawings")?null:this._model.properties().tradingProperties.showExecutions.value()?s.prototype.paneViews.call(this,e):null},r.prototype.userEditEnabled=function(){return!1},r.prototype.showInObjectTree=function(){return!1},r.prototype.getInputsPropertyPage=function(){return null},e.ExecutionsPositionController=o,e.LineToolExecution=r}).call(e,i(7))},,function(t,e,i){"use strict";function o(){a.call(this)}function n(t,e){this._constructor="LineToolFibSpeedResistanceArcs";var n=e||this.createPropertiesObject("linetoolfibwedge");r.call(this,t,n),t._fibWedgeLabelsCache||(t._fibWedgeLabelsCache=new o),i.e(1,function(t){var e=i(414).FibWedgePaneView;this._setPaneViews([new e(this,this._model)])}.bind(this))}var r=i(3).LineDataSource,s=i(40),a=i(116),l=i(9).propertyPages;inherit(o,a),o.prototype.levelsCount=function(){return n.LevelsCount},inherit(n,r),n.LevelsCount=11,n.prototype.getCache=function(){return this._model._fibWedgeLabelsCache||(this._model._fibWedgeLabelsCache=new o),this._model._fibWedgeLabelsCache},n.prototype.pointsCount=function(){return 3},n.prototype.title=function(){return"Fib Wedge"},n.prototype.setPoint=function(t,e){var i,o,n,s,a,l,c;r.prototype.setPoint.call(this,t,e),this._recursiveGuard||(this._recursiveGuard=!0,2===t?(i=this.pointToScreenPoint(this._points[0])[0],o=this.pointToScreenPoint(this._points[1])[0],n=this.pointToScreenPoint(this._points[2])[0],s=n.subtract(i).length(),a=o.subtract(i).normalized(),o=i.add(a.scaled(s)),l=this.screenPointToPoint(o),this._properties.points[1].price.setValue(l.price),this._properties.points[1].bar.setValue(l.index)):(i=this.pointToScreenPoint(this._points[0])[0],o=this.pointToScreenPoint(this._points[1])[0],n=this.pointToScreenPoint(this._points[2])[0],c=o.subtract(i).length(),a=n.subtract(i).normalized(),n=i.add(a.scaled(c)),l=this.screenPointToPoint(n),this._properties.points[2].price.setValue(l.price),this._properties.points[2].bar.setValue(l.index)),this._recursiveGuard=!1)},n.prototype.addPoint=function(t){var e,i,o,n,s,a,l,c;return 2===this._points.length&&(e=this.pointToScreenPoint(this._points[0])[0],i=this.pointToScreenPoint(this._points[1])[0],this.priceScale().isPercent()&&(o=this.ownerSource().firstValue(),t.price=this.priceScale().priceRange().convertFromPercent(t.price,o)),n=this.pointToScreenPoint(t)[0],s=i.subtract(e).length(),a=n.subtract(e).normalized(),n=e.add(a.scaled(s)),l=this.priceScale().coordinateToPrice(n.y),c=Math.round(this._model.timeScale().coordinateToIndex(n.x)),t={index:c,price:l}),r.prototype.addPoint.call(this,t)},n.prototype.processErase=function(t,e){var i="level"+e,o=this.properties()[i].visible;t.setProperty(o,!1,"Erase level line")},n.prototype.createPropertiesObject=function(t,e,i){return new s(t,e,i,{range:[1,11]})},n.prototype.getInputsPropertyPage=function(){return null},n.prototype.getStylesPropertyPage=function(){return l.LineToolFibWedgeStylesPropertyPage},e.LineToolFibWedge=n},,function(t,e,i){"use strict";function o(t,e){this._constructor="LineToolNote" +;var n=e||new s("linetoolnote");r.call(this,t,n),this.version=o.version,i.e(1,function(t){var e=i(899).NotePaneView;this._setPaneViews([new e(this,this._model)])}.bind(this))}function n(t,e){var i=e||new s("linetoolnoteabsolute");i.locked.value()||i.locked.setValue(!0),o.call(this,t,i)}var r=i(3).LineDataSource,s=i(11).DefaultProperty,a=i(9).propertyPages;inherit(o,r),o.TOOLTIP_WIDTH=300,o.TOOLTIP_PADDING=10,o.TOOLTIP_LINESPACING=5,o.version=1,o.prototype.pointsCount=function(){return 1},o.prototype.title=function(){return $.t("Note")},o.prototype.restoreTemplate=function(t){delete t.locked,delete t.text,r.prototype.restoreTemplate.call(this,t)},o.prototype.getTooltipWidth=function(){return o.TOOLTIP_WIDTH},o.prototype.getTooltipPadding=function(){return o.TOOLTIP_PADDING},o.prototype.getTooltipLineSpacing=function(){return o.TOOLTIP_LINESPACING},inherit(n,o),n.prototype.title=function(){return $.t("Anchored Note")},o.prototype.state=function(t){var e=r.prototype.state.call(this,t);return t&&(e.state.fixedSize=!1),e},o.prototype.getStylesPropertyPage=function(){return a.LineToolNotePropertyPage},e.LineToolNote=o,e.LineToolNoteAbsolute=n},,function(t,e,i){"use strict";function o(t,e){this._constructor="LineToolText";var o=e||new a("linetooltext");r.call(this,t,o),this._timeScale=t.timeScale(),this._barSpacing=t.timeScale().barSpacing(),i.e(1,function(t){var e=i(418).TextPaneView;this._setPaneViews([new e(this,this._model)])}.bind(this))}function n(t,e){var i=e||new a("linetooltextabsolute");i.locked.value()||i.locked.setValue(!0),o.call(this,t,i)}var r=i(3).LineDataSource,s=i(62).DataSource,a=i(11).DefaultProperty,l=i(9).propertyPages;inherit(o,r),o.MIN_WIDTH=100,o.prototype.setPoint=function(t,e){var i,n,r=this.properties();if(0===t&&r.wordWrapWidth&&r.wordWrapWidth.value()){if(i=r.locked&&r.locked.value()?this.fixedPoints()[0].x:this._timeScale.indexToCoordinate(this.points()[0].index),n=this._timeScale.indexToCoordinate(e.index)-i-~~(r.fontsize.value()/6),!isFinite(n))return;r.wordWrapWidth.setValue(Math.max(o.MIN_WIDTH,n))}},o.prototype.pointsCount=function(){return 1},o.prototype.title=function(){return $.t("Text")},o.prototype.setPriceScale=function(t){s.prototype.setPriceScale.call(this,t),t&&t.priceRange()&&(this._priceDencity=t.height()/t.priceRange().length(),this._isPriceDencityLog=t.isLog())},o.prototype.restoreSize=function(){this._barSpacing=this._model.timeScale().barSpacing(),this._priceDencity=this.priceScale().height()/this.priceScale().priceRange().length(),this.updateAllViews(),this._model.updateSource(this)},o.prototype.restoreTemplate=function(t){delete t.locked,delete t.text,r.prototype.restoreTemplate.call(this,t)},inherit(n,o),n.prototype.title=function(){return $.t("Anchored Text")},o.prototype.state=function(t){var e=r.prototype.state.call(this,t);return t&&(e.state.fixedSize=!1),e},o.prototype.getInputsPropertyPage=function(){return null},o.prototype.getStylesPropertyPage=function(){return l.LineToolTextStylesPropertyPage},e.LineToolText=o,e.LineToolTextAbsolute=n},function(t,e,i){ +"use strict";function o(t){t.forceLineColor=!1,r.call(this,t),this.color1=t.color1,this.color2=t.color2,this.bottom=t.bottom,this.isSeries=!!t.isSeries,this._simpleMode=t.simpleMode}var n=i(69).coordinateIsValid,r=i(212).PaneRendererLine;inherit(o,r),o.prototype.draw=function(t){var e,i,o,s,a,l,c,h,u,d,p,_;if(0!==this.items.length){for(t.lineCap="square",t.strokeStyle=this.lineColor,t.lineWidth=this.lineWidth,t.lineStyle=this.lineStyle,t.lineWidth=1,e=0;e=0&&!n(this.items[i].y);)i--;if(!(e>=i)){for(t.translate(.5,.5),o={},s=this.items,a=e;a<=i;a++)l=s[a],c=l.style?l.style.color:this.lineColor,aa[a.length-1].time+l)return null;for(e=null,i=0;i0?1:-1;for(e=0,i=this.items.length;e0?"middle":"bottom")},o.prototype.hitTest=function(t){var e,i,o,a=this._vertOffset,l=r(this.height);for(e=0;ei)&&(t=this.m_series.bars().range(e,i),n=this.m_series.priceScale(), +r=n.properties().percentage.value(),s=this.m_series.barColorer(),a={},t.each(function(t,e){var i,n;void 0!==e[TradingView.OPEN_PLOT]&&void 0!==e[TradingView.HIGH_PLOT]&&void 0!==e[TradingView.LOW_PLOT]&&void 0!==e[TradingView.CLOSE_PLOT]&&(void 0===o&&(o=e[TradingView.CLOSE_PLOT]),i={},i.time=Math.round(t),r?(i.open=100*(e[TradingView.OPEN_PLOT]-o)/o,i.high=100*(e[TradingView.HIGH_PLOT]-o)/o,i.low=100*(e[TradingView.LOW_PLOT]-o)/o,i.close=100*(e[TradingView.CLOSE_PLOT]-o)/o):(i.open=e[TradingView.OPEN_PLOT],i.high=e[TradingView.HIGH_PLOT],i.low=e[TradingView.LOW_PLOT],i.close=e[TradingView.CLOSE_PLOT]),a.value=e,n=e[TradingView.STYLE_PLOT]?e[TradingView.STYLE_PLOT]:s.barStyle(t,!1,a),e[TradingView.STYLE_PLOT]=n,a.previousValue=e,i.color=n.barColor,i.borderColor=n.barBorderColor,i.wickColor=n.barWickColor,i.hollow=n.isBarHollow,g.m_bars.push(i))},this),n.barPricesToCoordinates(this.m_bars),this.m_model.timeScale().barIndexesToCoordinates(this.m_bars),this.m_series===this.m_model.selectedSource()))for(l=T(e,i),this._selectionData={points:[]},this._selectionData.hittestResult=f.REGULAR,c=0;ct&&r.logNormal("Study inputs migration is done, studyId: "+this._studyId+", inputs: "+JSON.stringify(o)),o},o.prototype._findMigration=function(t){var e,i,o=-1,n=this._maxFromVers;for(e=0;e=0||e.indexOf(t)>=0},o._applyInputChangedMinMaxRule=function(t,e){ +if("adjustValIfNeeded"!==e.action)throw Error("Unknown action "+e.action+" for rule with type "+e.type);var i=t[e.inputId];return ie.maxVal&&(t[e.inputId]=e.maxVal),r.logNormal("Input "+e.inputId+"="+i+" adjusted to value "+t[e.inputId]),t},o._applyInputChangedOptionsRule=function(t,e){if(!(["text"].indexOf(e.inputType)>=0&&"resetToDefValIfNeeded"===e.action))throw Error("Unexpected rule.inputType="+e.inputType+" in rule.action="+e.action);var i=t[e.inputId];return e.options.indexOf(i)<0&&(t[e.inputId]=e.defVal,r.logNormal("Input "+e.inputId+"="+i+" reset to default value "+e.defVal)),t},t.exports=o},function(t,e,i){"use strict";function o(t,e,i){this._study=t,this._series=e,this._model=i,this._invalidated=!0,this._orderArrow={vMargin:o.DEFAULT_ORDER_ARROW_VMARGIN,width:o.DEFAULT_ORDER_ARROW_WIDTH,height:o.DEFAULT_ORDER_ARROW_HEIGHT},this._exitLineWidth=o.DEFAULT_ORDER_ARROW_EXIT_LINE_WIDTH,this._priceArrow={width:o.DEFAULT_PRICE_ARROW_WIDTH,height:o.DEFAULT_PRICE_ARROW_HEIGHT},this._text={vMargin:o.DEFAULT_TEXT_VMARGIN,font:o.DEFAULT_FONT,fontSize:o.DEFAULT_FONT_SIZE},this._checkHideTextIfBarSpacingLT=o.DEFAULT_CHECK_HIDE_TEXT_IF_BARSPACING_LT,this._textIsVisible=!0,this._colors={entryBuy:o.DEFAULT_ENTRY_BUY_COLOR,entrySell:o.DEFAULT_ENTRY_SELL_COLOR,exit:o.DEFAULT_EXIT_COLOR},this._items={entryBuy:[],entrySell:[],exit:[]},this._textWidths={},this._study.properties().strategy.orders.subscribe(this,this.update)}var n=i(1).Point,r=i(963).PaneRendererStudyStrategyOrders,s=i(8).CompositeRenderer,a=i(42).PlotRowSearchMode;o.DEFAULT_ORDER_ARROW_VMARGIN=7,o.DEFAULT_ORDER_ARROW_WIDTH=9,o.DEFAULT_ORDER_ARROW_HEIGHT=11,o.DEFAULT_ORDER_ARROW_EXIT_LINE_WIDTH=2,o.DEFAULT_PRICE_ARROW_WIDTH=5,o.DEFAULT_PRICE_ARROW_HEIGHT=9,o.DEFAULT_TEXT_VMARGIN=2,o.DEFAULT_FONT="Arial",o.DEFAULT_FONT_SIZE=10,o.DEFAULT_CHECK_HIDE_TEXT_IF_BARSPACING_LT=10,o.DEFAULT_ENTRY_BUY_COLOR="#008fff",o.DEFAULT_ENTRY_SELL_COLOR="#f00",o.DEFAULT_EXIT_COLOR="#cc47ed",o.prototype._updateImpl=function(){var t,e,i,o,r,s,l,c,h,u,d,p,_,f,m,g,v,y,b,S,w,T,x,C,P,L;if(this.clearItems(),(t=this._study.ordersData())&&t.length&&(e=this._model.timeScale(),i=this._series.priceScale(),!(!e||!i||e&&e.isEmpty()||i&&i.isEmpty())&&null!==(o=e.visibleBars()))){for(r=this._study.barsIndexes(),s=this._series.nearestIndex(o.firstBar(),a.NearestRight),l=this._series.nearestIndex(o.lastBar(),a.NearestLeft),c=s,h=[],u=[];c<=l;c++)for(d=-1;-1!==(d=r.indexOf(c,d+1));)(p=t[d])&&(h.push(p),u.push(c));for(_=this._study.properties(),f=_.strategy.orders.showLabels.value(),m=_.strategy.orders.showQty.value(),g=f||m,g&&e.barSpacing()e.width()&&(g=!1),v=g&&this._text.fontSize+this._text.vMargin||0,y=v&&v*(f+m),b=0,S={upper:[],lower:[]};b1?e.slice(0,e.length-1):1),{resolution:o,interval:n}}var r,s=i(82),a=i(67),l=i(57).Interval,c=!1,h=null,u=0,d=function(t,e){this._session=new s.Session,this._session.init(t.timezone,t.session),this._symbolInfo=t,this._resolution=e,this._extrapolatedData=[],this._modelId=u++,this._valid=!!t.timezone&&!!t.session,c&&console.log('Created model "{0}", interval "{1}", session "{2}", tz "{3}"'.format(this._modelId,this._resolution,t.session,t.timezone))};d.prototype.uniqueId=function(){return this._modelId},d.prototype.isValid=function(){return this._valid},d.prototype._barBuilder=function(){if(!this._builderCache){var t=n(this._resolution);this._builderCache=s.newBarBuilder(t.resolution,t.interval,this._session,this._session)}return this._builderCache},d.prototype.distance=function(t,e){var i,n,r,a,l;return isNumber(t)&&isNumber(e)&&this.isValid()?(i=this._extrapolatedData.length>0?this._extrapolatedData[0]:null,n=i&&this._extrapolatedData[this._extrapolatedData.length-1],1e3*t!==i&&(this._extrapolatedData=[1e3*t],i=null,n=null),(null===i||1e3*e>n)&&(r=500,a=s.extrapolateBarsFrontToTime(this._barBuilder(),n||1e3*t,1e3*e,r),this._extrapolatedData=this._extrapolatedData.concat(a)),(n=this._extrapolatedData[this._extrapolatedData.length-1])<1e3*e?{success:!1}:(l=this._extrapolatedData.indexOf(1e3*e),-1!==l?(c&&console.log('Model "{0}" "{1}", distance between "{2}" and "{3}" is "{4}"'.format(this._modelId,this._resolution,o(t),o(e),l)),{success:!0,result:l}):{success:!1})):{success:!1}},d.prototype.projectTime=function(t,e){var i,n,r,a +;return isNumber(t)&&isNumber(e)&&this.isValid()?(i=this._extrapolatedData.length>0?this._extrapolatedData[0]:null,n=i&&this._extrapolatedData[this._extrapolatedData.length-1],1e3*t!==i&&(this._extrapolatedData=[1e3*t],i=null,n=null),(null===i||e>=this._extrapolatedData.length)&&(r=s.extrapolateBarsFrontByCount(this._barBuilder(),n||1e3*t,e-this._extrapolatedData.length+1),this._extrapolatedData=this._extrapolatedData.concat(r)),e model "{3}" "{4}" targetTime "{5}"'.format(this._source.uniqueId(),this._source._resolution,o(t),this._target.uniqueId(),this._target._resolution,o(e))),e):t},t.exports.SyncPoint=r,t.exports.SyncModel=d},function(t,e,i){(function(t){TradingView.cleanButAmpersand=function(t,e){var i=e?["&"]:["&"];return TradingView.clean(t,e,i)},TradingView.strip_tags=function(t){return t&&t.replace?t.replace(/(<([^>]+)>)/gi,""):t},TradingView.encodeSpread=function(t){return encodeURIComponent(t)},TradingView.clean=function(t,e,i){var o,n,r,s=[["&","&"],["<","<"],[">",">"],['"',"""],["'","'"],["'","'"]],a=t;if(!t||!t.replace)return a;for(o=0;o5&&("width"in t&&(n[3]=Math.min(t.width,Math.max(1,n[3]))),"height"in t&&(n[4]=Math.min(t.height,Math.max(1,n[4])))),i.apply(this,n)},o(n,function(i,o){var n=t[o];t[o]=function(){var t,o;if("all"===i)for(o=[],t=arguments.length;0]+)>)/gi,"")}var n,r;Object.defineProperty(e,"__esModule",{value:!0}),n=/[<"'&>]/g,r=function(t){return"&#"+t.charCodeAt(0)+";"},e.htmlEscape=i,e.removeTags=o},function(t,e,i){"use strict";var o,n,r,s;Object.defineProperty(e,"__esModule",{value:!0}),o=i(13),n=i(64),r=o.getLogger("GUI.Blocks.AbstractIndicator"),i(177),s=function(){function t(){this._classSuffix="",this._quoteSessionPrefix="abstract-indicator",this._shortMode=!1,this._showTooltip=!0,this._subscribed=!1}return t.prototype.getValue=function(){return this._value},t.prototype.getTooltipText=function(){return this.getLabel()},t.prototype.getLabel=function(){return this._labelMap[this.getValue()]||""},t.prototype.getElement=function(){return this._el},t.prototype.update=function(t,e){this._updateValue(t,e),this._render()},t.prototype.setTooltipEnabled=function(t){void 0===t&&(t=!1),this._showTooltip!==t&&(this._showTooltip=t,this._renderTooltip())},t.prototype.enableShortMode=function(){!0!==this._shortMode&&(this._shortMode=!0,this._render())},t.prototype.disableShortMode=function(){!1!==this._shortMode&&(this._shortMode=!1,this._render())},t.prototype.isShortModeEnabled=function(){return this._shortMode},t.prototype.start=function(){!this._subscribed&&t._quoteSession&&this._symbolName&&(t._quoteSession.subscribe(this._getQuoteSessionId(),this._symbolName,this.update.bind(this)),this._subscribed=!0)},t.prototype.stop=function(){this._subscribed&&t._quoteSession&&this._symbolName&&(t._quoteSession.unsubscribe(this._getQuoteSessionId(),this._symbolName),this._subscribed=!1)},t.assignQuoteSession=function(e){t._quoteSession=e},t.prototype._init=function(e){this._el=e.el?e.el:document.createElement("span"),this._el.innerHTML="",this._classMap=e.classMap,this._labelMap=e.labelMap,this._showTooltip=e.showTooltip,this._classSuffix=e.classSuffix,this._symbolName=e.symbol,this._quoteSessionGUID=n.guid(),!0===e.short&&this.enableShortMode(),e.data&&this._updateValue(e.data),e.quoteSession&&t.assignQuoteSession(e.quoteSession)},t.prototype._clearClasses=function(){var t=this;Object.values(this._classMap).map(function(e){t._el.classList.remove(""+e),t._el.classList.remove(""+e+t._classSuffix)})},t.prototype._render=function(){this._renderClasses(),this._renderTooltip(),this._renderLabel()},t.prototype._renderLabel=function(){this._el.textContent=this.getLabel()},t.prototype._updateValue=function(t,e){var i=this._getValueFromData(t);(e||i!==this.getValue())&&(this._value=i)},t.prototype._renderClasses=function(){this._clearClasses(),this._el.classList.add(this._componentClass),this._el.classList.add(""+this._componentClass+this._classSuffix);var t=this._classMap[this.getValue()];void 0!==t?(this._el.classList.add(""+t+this._classSuffix),this._el.classList.add(t)):void 0!==this.getValue()&&r.logWarn("no className for status "+this.getValue())},t.prototype._renderTooltip=function(){this._el.classList.add("apply-common-tooltip"), +this._el.setAttribute("title",this._showTooltip?this.getTooltipText():""),$(this._el).trigger("common-tooltip-update")},t.prototype._getQuoteSessionId=function(){return this._quoteSessionPrefix+"."+this._quoteSessionGUID},t}(),e.AbstractIndicator=s,window.AbstractIndicator=s},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i={SELECT:"select",SELECT_CUSTOM:"selectCustom",AFTER_CLOSE_MENU:"afterCloseMenu",BEFORE_OPEN_MENU:"beforeOpenMenu"};e.events=i},function(t,e,i){"use strict";var o,n;Object.defineProperty(e,"__esModule",{value:!0}),o=i(21),n=function(){function t(t,e){this._major=t,this._minor=e}return t.prototype.major=function(){return this._major},t.prototype.minor=function(){return this._minor},t.prototype.isZero=function(){return 0===this._major&&0===this._minor},t.prototype.toString=function(){return this._major+"."+this._minor},t.prototype.compareTo=function(t){return this._majort._major?1:this._minort._minor?1:0},t.prototype.isLess=function(t){return this.compareTo(t)<0},t.prototype.isLessOrEqual=function(t){return this.compareTo(t)<=0},t.prototype.isEqual=function(t){return 0===this.compareTo(t)},t.prototype.isGreater=function(t){return this.compareTo(t)>0},t.prototype.isGreaterOrEqual=function(t){return this.compareTo(t)>=0},t.parse=function(e){var i,n,r;if(e instanceof t)return new t(e.major(),e.minor());if("number"==typeof e)return o.assert(Math.floor(e)===e,"Version should not be a float number"),new t(e,0);if("string"==typeof e){if(i=e.split("."),1===i.length)return n=parseInt(i[0],10),o.assert(!isNaN(n),"Bad version string: "+e),new t(n,0);if(2===i.length)return n=parseInt(i[0],10),o.assert(!isNaN(n),"Bad version string: "+e),r=parseInt(i[1],10),o.assert(!isNaN(r),"Bad version string: "+e),new t(n,r);throw Error("Bad version string (one dot expected): "+e)}throw Error("Bad version: "+e)},t.ZERO=new t(0,0),t}(),e.Version=n},function(t,e,i){"use strict";function o(t){var e=t.action,i=t.isActive,o=t.isBgFull,a=t.isHidden,l=t.isTransparent,c=t.toolName;return n.createElement(s.ToolButton,{icon:r.lineToolsInfo[c].icon,isActive:i,isBgFull:o,isHidden:a,isTransparent:l,onClick:e,title:r.lineToolsInfo[c].localizedName})}var n,r,s;Object.defineProperty(e,"__esModule",{value:!0}),n=i(2),r=i(93),s=i(227),e.ToolButtonAction=o},function(t,e,i){"use strict";var o,n,r,s,a;Object.defineProperty(e,"__esModule",{value:!0}),o=i(63),n=i(7),r=i(51),s=!n.enabled("hide_left_toolbar_by_default"),a=o.getBool("ChartDrawingToolbarWidget.visible",s),e.isDrawingToolbarVisible=new r(a)},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.supportedLineTools={cursor:{name:"cursor",onlySelectable:!0},dot:{name:"dot",onlySelectable:!0},arrow_cursor:{name:"arrow",onlySelectable:!0},eraser:{name:"eraser",onlySelectable:!0},measure:{name:"measure",onlySelectable:!0},zoom:{name:"zoom",onlySelectable:!0},brush:{name:"LineToolBrush",onlySelectable:!0},text:{name:"LineToolText",supportsText:!0},anchored_text:{ +name:"LineToolTextAbsolute",supportsText:!0},note:{name:"LineToolNote",supportsText:!0},anchored_note:{name:"LineToolNoteAbsolute",supportsText:!0},callout:{name:"LineToolCallout",supportsText:!0},balloon:{name:"LineToolBalloon",supportsText:!0},arrow_up:{name:"LineToolArrowMarkUp",supportsText:!0},arrow_down:{name:"LineToolArrowMarkDown",supportsText:!0},arrow_left:{name:"LineToolArrowMarkLeft",supportsText:!0},arrow_right:{name:"LineToolArrowMarkRight",supportsText:!0},price_label:{name:"LineToolPriceLabel"},flag:{name:"LineToolFlagMark"},vertical_line:{name:"LineToolVertLine"},horizontal_line:{name:"LineToolHorzLine"},horizontal_ray:{name:"LineToolHorzRay"},trend_line:{name:"LineToolTrendLine"},trend_angle:{name:"LineToolTrendAngle"},arrow:{name:"LineToolArrow"},ray:{name:"LineToolRay"},extended:{name:"LineToolExtended"},parallel_channel:{name:"LineToolParallelChannel"},disjoint_angle:{name:"LineToolDisjointAngle"},flat_bottom:{name:"LineToolFlatBottom"},pitchfork:{name:"LineToolPitchfork"},schiff_pitchfork_modified:{name:"LineToolSchiffPitchfork"},schiff_pitchfork:{name:"LineToolSchiffPitchfork2"},inside_pitchfork:{name:"LineToolInsidePitchfork"},pitchfan:{name:"LineToolPitchfan"},gannbox:{name:"LineToolGannSquare"},gannbox_square:{name:"LineToolGannComplex"},gannbox_fan:{name:"LineToolGannFan"},fib_retracement:{name:"LineToolFibRetracement"},fib_trend_ext:{name:"LineToolTrendBasedFibExtension"},fib_speed_resist_fan:{name:"LineToolFibSpeedResistanceFan"},fib_timezone:{name:"LineToolFibTimeZone"},fib_trend_time:{name:"LineToolTrendBasedFibTime"},fib_circles:{name:"LineToolFibCircles"},fib_spiral:{name:"LineToolFibSpiral"},fib_speed_resist_arcs:{name:"LineToolFibSpeedResistanceArcs"},fib_wedge:{name:"LineToolFibWedge"},fib_channel:{name:"LineToolFibChannel"},xabcd_pattern:{name:"LineTool5PointsPattern"},cypher_pattern:{name:"LineToolCypherPattern"},abcd_pattern:{name:"LineToolABCD"},triangle_pattern:{name:"LineToolTrianglePattern"},"3divers_pattern":{name:"LineToolThreeDrivers"},head_and_shoulders:{name:"LineToolHeadAndShoulders"},elliott_impulse_wave:{name:"LineToolElliottImpulse"},elliott_triangle_wave:{name:"LineToolElliottTriangle"},elliott_triple_combo:{name:"LineToolElliottTripleCombo"},elliott_correction:{name:"LineToolElliottCorrection"},elliott_double_combo:{name:"LineToolElliottDoubleCombo"},cyclic_lines:{name:"LineToolCircleLines"},time_cycles:{name:"LineToolTimeCycles"},sine_line:{name:"LineToolSineLine"},long_position:{name:"LineToolRiskRewardLong"},short_position:{name:"LineToolRiskRewardShort"},forecast:{name:"LineToolPrediction"},date_range:{name:"LineToolDateRange"},price_range:{name:"LineToolPriceRange"},date_and_price_range:{name:"LineToolDateAndPriceRange"},bars_pattern:{name:"LineToolBarsPattern"},ghost_feed:{name:"LineToolGhostFeed"},projection:{name:"LineToolProjection"},rectangle:{name:"LineToolRectangle"},rotated_rectangle:{name:"LineToolRotatedRectangle"},ellipse:{name:"LineToolEllipse"},triangle:{name:"LineToolTriangle"},polyline:{name:"LineToolPolyline"},curve:{ +name:"LineToolBezierQuadro"},double_curve:{name:"LineToolBezierCubic"},arc:{name:"LineToolArc"},icon:{name:"LineToolIcon"}}},function(t,e,i){"use strict";var o,n,r,s,a,l,c,h;Object.defineProperty(e,"__esModule",{value:!0}),i(22),i(23),o=i(63),n=i(181),r=i(103),s=i(430),a=i(20),l=i(330),c=i(109),h=function(){function t(t,e,i){return void 0===i&&(i={}),this._container=$('
'),this._quickContainer=$('
').appendTo(this._container),this._onChange=new a,this._onSelect=new a,this._onResize=new a,this._onOpen=new a,this._active=null,this._data=[],this._list=[],this._quicks=[],this._options=i=i,this._name=t,i.addClass&&this._container.addClass(i.addClass),this._submenu=$(''+(this._options.submenuHtml||"")+'
').appendTo(this._container),i.tooltip&&(this._submenu.attr("title",i.tooltip),i.addTooltipClass&&this._submenu.addClass(i.addTooltipClass)),this._load(e),r.bindPopupMenu(this._container,null,{addClass:"narrow favored-list "+(i.popupAddClass||""),direction:"down",event:"popup-menu",popupSpacing:i.popupSpacing,reverse:!0,svg:null==i.svg||i.svg}),this._submenu.on("click",this.openMenu.bind(this)),n.TVXWindowEvents.on(t+"-change",this._onChangeInAnotherTab.bind(this)),this}return t.prototype.element=function(){return this._container},t.prototype.onChange=function(){return this._onChange},t.prototype.onSelect=function(){return this._onSelect},t.prototype.onResize=function(){return this._onResize},t.prototype.onOpen=function(){return this._onOpen},t.prototype.setValue=function(t){var e=this._getItemByValue(t);this._setActive(e)},t.prototype.value=function(){return this._active?this._active.data.value:void 0},t.prototype.removeById=function(t){var e=this,i=this._data.filter(function(e){return!e.separator&&e.id!==t});this._list.forEach(function(i){i.data.id===t&&e._toggleFavorite(i,!1)}),this.reload(i)},t.prototype.reload=function(t){this._quickContainer.empty(),this._load(t)},t.prototype.openMenu=function(){this._submenu.parent().hasClass("active")||this._onOpen.fire(),this._submenu.trigger("popup-menu",[this._data])},t.prototype._onChangeInAnotherTab=function(){this.reload(this._data)},t.prototype._load=function(t){var e=this;this._options.showJustDefaultQuicks?this._quicks=this._options.defaultFavorites||[]:this._options.notShowQuicks?this._quicks=[]:this._quicks=o.getJSON(this._name+".quicks",this._options.defaultFavorites||[]),this._list=[],t.filter(function(t){return!t.separator}).forEach(function(t,i){var o,n={data:t,drop:function(){n.data.drop&&n.data.drop()},favorite_button:null,index:i,isFavorite:function(){return e._quicks.indexOf(t.id)>-1},markFavorite:function(){n.toQuickButton&&n.toQuickButton.attr("title",$.t("Remove from favorites")).addClass("quicked")},svg:t.svg&&$(t.svg).clone(),toQuickButton:e._options.notShowQuicks?null:$('').append($(l).attr({height:16,width:16})),toggleFavorite:function(t,i){var o=void 0!==t?t:!n.isFavorite();o?n.markFavorite():n.unmarkFavorite(), +e._toggleFavorite(n,o,i)},unmarkFavorite:function(){n.toQuickButton&&n.toQuickButton.attr("title",$.t("Add to favorites")).removeClass("quicked")}};n.data.toQuickButtonStyle&&n.toQuickButton&&n.toQuickButton.css(n.data.toQuickButtonStyle),e._list.push(n),t.action=e._change.bind(e,n),t.active=e._options.notShowActive?function(){return!1}:function(){return!(!e._active||n!==e._active)},t.buttons=[],e._options.notShowQuicks||t.buttons.push({el:n.toQuickButton,handler:function(t){n.toggleFavorite(),t.preventDefault(),t.stopPropagation()}}),n.data.drop&&(o=$("").addClass("delete").attr("title",$.t("Delete")).html(c),e._options.notShowQuicks&&o.css("right","7px"),t.buttons.push({el:o,handler:function(t){n.drop(),t.stopPropagation()}})),n.toggleFavorite(n.isFavorite(),!0)}),this._data=t,this._options.notShowActive||this._addActive(this._list[0]),this._onResize.fire()},t.prototype._toggleFavorite=function(t,e,i){if(!this._options.notShowQuicks||this._options.showJustDefaultQuicks){if(e){t.favorite_button=this._createButton(t);var o=this._lastFavoriteButton(t);o?t.favorite_button.insertAfter(o.favorite_button):t.favorite_button.prependTo(this._quickContainer)}else i||this._removeButton(t);i||(e?-1===this._quicks.indexOf(t.data.id)&&this._quicks.push(t.data.id):this._quicks.indexOf(t.data.id)>-1&&this._quicks.splice(this._quicks.indexOf(t.data.id),1),this._saveFavorite(),this._markActive(),this._onResize.fire())}},t.prototype._lastFavoriteButton=function(t){for(var e=t.index-1;e>=0;e--)if(this._list[e]&&this._list[e].favorite_button)return this._list[e];return null},t.prototype._saveFavorite=function(){this._options.notShowQuicks||(o.setJSON(this._name+".quicks",this._quicks),n.TVXWindowEvents.emit(this._name+"-change"))},t.prototype._createButton=function(t){var e=this,i=t.data.favoriteButton,o=$("").data("item",t);return i.addClass&&o.addClass(i.addClass),i.title&&o.prop("title",s.clean(i.title+"",!0)),t.svg&&$(t.svg).clone().appendTo(o),o.on("click",function(i){e._change(t),0===e._quicks.length&&e.openMenu(),i.preventDefault()}),o},t.prototype._removeButton=function(t){t.favorite_button&&(t.favorite_button.remove(),t.favorite_button=null)},t.prototype._markActive=function(t){var e,i,o=this;this._options.notShowActive||(e=null,this._active&&(t=this._active,t.isFavorite()?(i=this._quickContainer.find(".just_active"),this._btnToggleActiveView(i,!1)):(e=this._addActive(t),0!==this._quicks.length&&this._btnToggleActiveView(e,!0))),this._list.forEach(function(e){t!==e||0===o._quicks.length?o._btnToggleActiveView(e.favorite_button,!1):e.favorite_button&&o._btnToggleActiveView(t.favorite_button,!0)}),e&&e.hasClass("selected")?this._container.addClass("not-favored-active"):this._container.removeClass("not-favored-active"))},t.prototype._btnToggleActiveView=function(t,e){t&&(e?t.addClass("selected"):t.removeClass("selected"))},t.prototype._addActive=function(t){return this._quickContainer.find(".just_active").remove(),this._createButton(t).appendTo(this._quickContainer).addClass("just_active")}, +t.prototype._setActive=function(t){return this._active!==t&&(this._active=t,this._markActive(),!0)},t.prototype._change=function(t){this._onSelect.fire(t.data.id),this._setActive(t)&&this._onChange.fire(t.data.id)},t.prototype._getItemByValue=function(t){var e,i,o;for(e=0,i=this._list;e'+(Modernizr.touch?'
':"")+'
'+h+'
',i(634),d=function(){function t(e){this._widget=document.createElement("div"),this._isVertical=!1,this._hiddingTimeoutId=null,this._visibility=new l(!1),this._windowResizeListener=this._onWindowResize.bind(this),this._reorderedDelegate=new a,t._toolbars.push(this),this._options=e,this._widget=o(u).get(0),this._content=this._widget.getElementsByClassName("js-content").item(0),this._setZIndex(t._startZIndex+t._toolbars.length-1),this._options.addClass&&(this._widget.className+=" "+this._options.addClass),this._options.layout&&"auto"!==this._options.layout&&(this._isVertical="vertical"===this._options.layout,this._updateLayoutType())}return t.prototype.destroy=function(){this.hide(!0),t._toolbars.splice(t._toolbars.indexOf(this),1),document.body.contains(this._widget)&&document.body.removeChild(this._widget),this._widget.innerHTML=""},t.prototype.isVisible=function(){return this._visibility.value()},t.prototype.visibility=function(){return this._visibility.readonly()},t.prototype.isVertical=function(){return this._isVertical},t.prototype.show=function(){var t=this;this.isVisible()||(document.body.contains(this._widget)||(this._init(),document.body.appendChild(this._widget)),this._setHiddingTimeout(null),window.addEventListener("resize",this._windowResizeListener),this.raise(),this._visibility.setValue(!0),this._widget.classList.contains("i-hidden")?(this._widget.classList.remove("i-hidden"),setTimeout(function(){t.isVisible()&&t._widget.classList.remove("i-closed")})):this._widget.classList.remove("i-closed"),this._onWindowResize())},t.prototype.hide=function(t){var e,i,o=this;void 0===t&&(t=!1),this.isVisible()&&(e=this._widget.classList.contains("i-closed"),this._widget.classList.add("i-closed"),this._visibility.setValue(!1),t||e?(this._setHiddingTimeout(null),this._widget.classList.add("i-hidden")):(i=setTimeout(function(){o._setHiddingTimeout(null),o._widget.classList.add("i-hidden")},this.hideDuration()),this._setHiddingTimeout(i)),window.removeEventListener("resize",this._windowResizeListener))},t.prototype.raise=function(){t._toolbars.length+t._startZIndex!==this._zIndex()&&(t._toolbars.splice(t._toolbars.indexOf(this),1), +t._toolbars.push(this),t._updateAllZIndexes())},t.prototype.hideDuration=function(){return.75*r.dur},t.prototype.addWidget=function(t,e){var i,o,n;if(void 0===e&&(e={}),i=this.widgetsCount(),void 0===e.index&&(e.index=i),e.index<0||e.index>i)throw Error("Index must be in [0, "+i+"]");o=document.createElement("div"),o.className="tv-floating-toolbar__widget js-widget",o.appendChild(t),n=e.index===i?null:this._content.childNodes.item(e.index),this._content.insertBefore(o,n),this._onWindowResize()},t.prototype.removeWidget=function(t){var e=this._findWrapperForWidget(t);e&&(this._content.removeChild(e),this._onWindowResize())},t.prototype.widgetsCount=function(){return this._content.childNodes.length},t.prototype.showWidget=function(t){var e=this._findWrapperForWidget(t);e&&e.classList.remove("i-hidden")},t.prototype.hideWidget=function(t){var e=this._findWrapperForWidget(t);e&&e.classList.add("i-hidden")},t.prototype.removeWidgets=function(){for(;this._content.firstChild;)this._content.removeChild(this._content.firstChild);this._onWindowResize()},t.prototype.onWidgetsReordered=function(){return this._reorderedDelegate},t.prototype.onContextMenu=function(t){var e,i=this;Modernizr.touch?(e=new n(this._widget),e.get("press").set({time:500}),e.on("press",function(e){i._preventWidgetTouchEndEvent(),t(e.srcEvent)})):this._widget.addEventListener("contextmenu",t)},t.prototype._determineCurrentLayoutVertical=function(t){var e=this._isVertical?t.height:t.width;return window.innerWidthwindow.innerWidth&&(t.left=Math.max(0,window.innerWidth-e.width)),t.top+e.height>window.innerHeight&&(t.top=Math.max(0,window.innerHeight-e.height)),t.left=Math.max(0,t.left),t.top=Math.max(0,t.top)}, +t.prototype._setZIndex=function(t){this._widget.style.zIndex=t+""},t.prototype._zIndex=function(){return+this._widget.style.zIndex},t.prototype._loadPosition=function(){var t=s.getJSON(this._options.positionSettingsKey,this._options.defaultPosition);this._widget.style.left=Math.round(t.left)+"px",this._widget.style.top=Math.round(t.top)+"px",this._onWindowResize()},t.prototype._savePosition=function(){var t=this._widget.getBoundingClientRect();s.setJSON(this._options.positionSettingsKey,{left:t.left,top:t.top})},t.prototype._init=function(){this._loadPosition(),c.lazyJqueryUI(o(this._widget)).draggable({containment:"window",drag:this._onDragEvent.bind(this),handle:".js-drag",stop:this._savePosition.bind(this)}),this._options.allowSortable&&this._initSortable(),this._widget.addEventListener(Modernizr.touch?"touchstart":"mousedown",this.raise.bind(this))},t.prototype._onDragEvent=function(t,e){this._correctPosition(e.position)},t.prototype._initSortable=function(){var t=this,e=-1;c.lazyJqueryUI(o(this._content)).sortable({start:function(t,i){e=i.item.index()},stop:function(i,o){var n=o.item.index();e!==n&&t._reorderedDelegate.fire(e,n)},tolerance:"point"})},t.prototype._getCorrectedWidgetRect=function(){var t,e,i,o,n=this._widget.getBoundingClientRect();return this._widget.classList.contains("i-closed")?(t=.925,e=1/t-1,i=n.width*e,o=n.height*e,{bottom:n.bottom+o/2,height:n.height+o,left:n.left-i/2,right:n.right+i/2,top:n.top-o/2,width:n.width+i}):n},t._updateAllZIndexes=function(){t._toolbars.forEach(function(e,i){e._setZIndex(t._startZIndex+i)})},t._startZIndex=20,t._toolbars=[],t}(),e.FloatingToolbar=d},,function(t,e,i){"use strict";var o,n,r,s,a;Object.defineProperty(e,"__esModule",{value:!0}),i(22),i(23),o=i(51),n=i(310),r=i(1126),s=i(1129),a=function(){function t(t){this._window=t,this._fullscreenApi=new r.FullscreenApi(t.document),this._initFullscreen()}return t.prototype.allocate=function(){var t,e,i,r=this;return this.free(),t=this._window.document,e=$("
",t).addClass("js-rootresizer__contents").css({position:"relative",width:"100%",height:"100%"}).prependTo(t.body),this._visibilityApi=new s.VisibilityApi(this._window.document),i={alive:new o(!0),body:new o(e),width:new o,height:new o,availWidth:new o,availHeight:new o,visible:this._visibilityApi.isVisible,fullscreen:this._fullscreenApi.isFullscreen,remove:function(){i.alive.setValue(!1)},attach:function(){i.alive.setValue(!1),r._window.close()},requestFullscreen:function(){r._requestFullscreen()},exitFullscreen:function(){r._exitFullscreen()}},i.alive.subscribe(function(t){t||i!==r._area||r.free()}),this._area=i,this._resizeHandler=function(){var t=i.body.value()[0],e=t.clientWidth,o=t.clientHeight;i.availHeight.setValue(o),i.availWidth.setValue(e),i.height.setValue(o),i.width.setValue(e)},this._resizeHandler(),$(this._window).on("resize",this._resizeHandler),new n.ResizerDetacherState(i).bridge()},t.prototype.free=function(){if(this._resizeHandler&&($(this._window).off("resize",this._resizeHandler),this._resizeHandler=void 0), +this._visibilityApi&&(this._visibilityApi.destroy(),this._visibilityApi=void 0),this._area){var t=this._area;this._area=void 0,t.alive.setValue(!1),t.body.value().remove()}},t.prototype._requestFullscreen=function(){this._fullscreenApi.enter()},t.prototype._exitFullscreen=function(){this._fullscreenApi.exit()},t.prototype._initFullscreen=function(){var t=this,e=this._window.document;this._fullscreenApi.isFullscreen.subscribe(function(i){i?(t._$exitFullscreenButton=$("
",e).addClass("tv-exit-fullscreen-button").text($.t("Exit Full Screen (ESC)")).on("click",function(e){e.preventDefault(),t._exitFullscreen()}).appendTo(e.body),t._onExitFullscreenEsc=function(e){27===e.keyCode&&(e.preventDefault(),t._exitFullscreen())},$(e).on("keyup",t._onExitFullscreenEsc)):(t._$exitFullscreenButton&&(t._$exitFullscreenButton.remove(),t._$exitFullscreenButton=void 0),t._onExitFullscreenEsc&&($(e).off("keyup",t._onExitFullscreenEsc),t._onExitFullscreenEsc=void 0)),t._resizeHandler&&t._resizeHandler()})},t}(),e.Root=a},function(t,e,i){"use strict";function o(t,e,i){e.toggleClass("i-hidden",""===t.val()),i.fire(t.val())}function n(t){var e,i,n,s=$(l);return t.addClass&&s.addClass(t.addClass),t.withoutControls&&s.addClass("tv-search-row--without-controls"),e=s.find(".js-input-control"),i=s.find(".js-reset-button"),t.placeholder&&e.attr("placeholder",t.placeholder),i[0].addEventListener("click",function(){e.val("").trigger("input").focus()}),n=new r,e.on("input propertychange",o.bind(null,e,i,n)),o(e,i,n),{$control:s,$input:e,inputChangedDelegate:n}}var r,s,a,l;Object.defineProperty(e,"__esModule",{value:!0}),r=i(20),s=i(331),a=i(1342),i(645),l='
'+s+''+a+"
",e.createSearchControl=n},function(t,e,i){"use strict";var o,n;Object.defineProperty(e,"__esModule",{value:!0}),o=i(21),n=function(){function t(t,e){o.assert(t<=e,"The last bar in the bars range should be greater than or equal to the first bar"),this._firstBar=t,this._lastBar=e}return t.prototype.firstBar=function(){return this._firstBar},t.prototype.lastBar=function(){return this._lastBar},t.prototype.count=function(){return this._lastBar-this._firstBar+1},t.prototype.contains=function(t){return this._firstBar<=t&&t<=this._lastBar},t}(),e.BarsRange=n},function(t,e,i){"use strict";function o(t,e){return t.compareTo(e)}function n(t){return Array.from(t).reduce(function(t,e){var i=+e;return-1===t.indexOf(i)&&t.push(i),t},[])}function r(t,e,i){var o=6e4,n=new Date(e.valueOf()+t*o);return t+(i.offset_loc(e)/o-i.offset_loc(n)/o)}var s,a,l,c,h,u,d,p;Object.defineProperty(e,"__esModule",{value:!0}),s=i(67),a=i(143),l=i(13),c=l.getLogger("Chart.Model.ExchangeSession"),h=[s.MONDAY,s.TUESDAY,s.WEDNESDAY,s.THURSDAY,s.FRIDAY],u=[s.SUNDAY,s.MONDAY,s.TUESDAY,s.WEDNESDAY,s.THURSDAY,s.FRIDAY,s.SATURDAY],d=function(){function t(t,e,i){ +this._dayOfWeek=t,this._start=e,this._length=i}return t.prototype.start=function(){return this._start},t.prototype.alignedStart=function(){return this._start<0?this._start+s.minutesPerDay:this._start},t.prototype.isOvernight=function(){return this._start<0},t.prototype.dayOfWeek=function(){return this._dayOfWeek},t.prototype.length=function(){return this._length},t.prototype.weight=function(){return this._dayOfWeek*s.minutesPerDay+this._start},t.prototype.compareTo=function(t){var e=this.weight(),i=e+this._length,o=t.weight();return e<=o&&oo?1:-1},t}(),e.SessionEntry=d,p=function(){function t(t){void 0===t&&(t="0000-0000");var e=this;this._entries=[],this._firstDayOfWeek=s.MONDAY,this._weekEndsCount=null,"24x7"===t.toLowerCase()?u.forEach(function(t){e.addSessionEntry(t,0,0)}):this._parseSpec(t),this._entries.sort(o)}return t.prototype.entries=function(){return this._entries},t.prototype.firstDayOfWeek=function(){return this._firstDayOfWeek},t.prototype.addSessionEntry=function(t,e,i){i<=e&&0!==e&&(e-=s.minutesPerDay);var o=i===e?s.minutesPerDay:i-e;this._entries.push(new d(t,e,o))},t.prototype.isWeekEnd=function(t){var e=a.lowerbound(this._entries,new d(t,0,0),function(t,e){return t.dayOfWeek()this._entries.length-1||this._entries[e].dayOfWeek()!==t},t.prototype.weekEndsCount=function(){if(null===this._weekEndsCount){var t={};this._entries.forEach(function(e){t[e.dayOfWeek()]=1}),this._weekEndsCount=7-Object.keys(t).reduce(function(e,i){return e+(t[+i]||0)},0)}return this._weekEndsCount},t.prototype.hasWeekEnds=function(){return this.weekEndsCount()>0},t.prototype.indexOfSessionEntry=function(t,e){var i=a.lowerbound(this._entries,new d(t,e,0),function(t,e){return t.compareTo(e)<0});return i>this._entries.length-1?0:i},t.prototype.findSessionEntry=function(t,e){return this._entries[this.indexOfSessionEntry(t,e)]},t.prototype.correctTradingDay=function(t,e){var i=s.get_day_of_week(t),o=60*s.get_hours(t)+s.get_minutes(t),n=this.findSessionEntry(i,o),r=n.dayOfWeek(),a=(r-i+7)%7;return 0!==a?s.add_days_considering_dst(e,t,a):t},t.prototype.alignToSessionStart=function(t,e){var i=s.get_day_of_week(t),o=s.get_minutes_from_midnight(t),n=this.findSessionEntry(i,o),a=n.alignedStart(),l=n.dayOfWeek(),c=n.isOvernight(),h=(l-i+7)%7-(c?1:0);return 0!==h&&s.add_date(t,h),s.set_hms(t,a/60|0,a%60,0,0),r(n.length(),t,e)},t.prototype._parseSpec=function(t){var e=this,i={},o=!1;t=this._parseFirstDayOfWeek(t),t.split("|").forEach(function(t){var e,r,s=t.split(":");if(1!==s.length&&2!==s.length)return void c.logError("Bad session section: "+t);if(e=1===s.length){if(o)return void c.logError("Duplicated default section: "+t);o=!0}r=e?h:n(s[1]),r.forEach(function(t){e&&i[t]||(i[t]=s[0])})}),u.forEach(function(o){var n=i[o];void 0!==n&&n.split(",").forEach(function(i){var n,r,a=i.split("-");2!==a.length&&(c.logError("Bad sessions spec: "+t),a=["0000","0000"]),n=a[0],r=a[1],e.addSessionEntry(o,s.get_minutes_from_hhmm(n),s.get_minutes_from_hhmm(r))})})},t.prototype._parseFirstDayOfWeek=function(t){ +var e,i,o,n=t.split(";");return n.length>2?(c.logError("Only one `first day` specification expected @ session "+t),t):1===n.length?t:(e=n[0].indexOf("-")>=0,i=e?NaN:parseInt(n[0]),o=1,isNaN(i)&&(o=0,i=parseInt(n[1])),is.SATURDAY?(c.logError("Unexpected day index @ session: "+t+"; day index "+i),t):(this._firstDayOfWeek=i,n[o]))},t}(),e.ExchangeSession=p},,function(t,e,i){"use strict";var o,n,r,s;Object.defineProperty(e,"__esModule",{value:!0}),o=i(38),n=i(34),r=i(333),e.PLACE_HOLDER="---",s=function(){function t(t){this._numericFormatter=new o.NumericFormatter,this._fractionalValues=void 0!==t&&t>0,this._precision=t}return t.prototype.format=function(t){if(!n.isNumber(t))return e.PLACE_HOLDER;var i="";return t<0&&(i="-",t=-t),t>=1e100?"N/A":(!this._fractionalValues||t>=995?t=Math.round(t):this._fractionalValues&&(t=+t.toFixed(this._precision)),t<995?i+this._formatNumber(t):t<999995?i+this._formatNumber(t/1e3)+"K":t<999999995?(t=1e3*Math.round(t/1e3),i+this._formatNumber(t/1e6)+"M"):(t=1e6*Math.round(t/1e6),i+this._formatNumber(t/1e9)+"B"))},t.prototype.parse=function(t){var e,i,o;return"---"===t?{error:"not a number",res:!1,value:NaN}:(e={K:1e3,M:1e6,B:1e9},i=t.slice(-1),e.hasOwnProperty(i)?(o=this._numericFormatter.parse(t.slice(0,-1)),n.isNumber(o)?{res:!0,value:o*e[i]}:{error:"not a number",res:!1,value:NaN}):(o=this._numericFormatter.parse(t),n.isNumber(o)?{res:!0,value:o}:{error:"not a number",res:!1,value:NaN}))},t.prototype._formatNumber=function(t){return this._fractionalValues&&(t=r.fixComputationError(t)),this._numericFormatter.format(t).replace(/(\.[1-9]*)0+$/,function(t,e){return e})},t}(),e.VolumeFormatter=s},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});!function(t){t[t.RoundRadius=8]="RoundRadius",t[t.TextMargins=2]="TextMargins",t[t.MinWidth=100]="MinWidth"}(e.CalloutConsts||(e.CalloutConsts={}))},function(t,e,i){"use strict";var o,n,r,s;Object.defineProperty(e,"__esModule",{value:!0}),o=i(5),n=i(95),r=i(34),s=function(t){function e(e){var i=t.call(this)||this;return i._source=e,i}return o.__extends(e,t),e.prototype._updateRendererData=function(t){var e,i,o,n,s,a;if(t.visible=!1,e=this._source.points(),i=this._source.priceScale(),0!==e.length&&null!==i&&!i.isEmpty()&&(o=e[0],isFinite(o.price))){if(i.isPercent()){if(!(n=this._source.ownerSource()))return;if(s=n.firstValue(),!r.isNumber(s))return;o.price=i.priceRange().convertToPercent(o.price,s)}a=this._source.properties().linecolor.value(),t.background=a,t.color=this.generateTextColor(a),t.coordinate=i.priceToCoordinate(o.price),t.text=i.formatter().format(o.price),t.visible=!0}},e}(n.PriceAxisView),e.LineToolHorzLinePriceAxisView=s},function(t,e){"use strict";function i(){var t,e,i=[];for(i=i.concat([61536,61537,61538,61539]),i=i.concat([61725,61726]),i=i.concat([61575,61576,61796,61797]),i=i.concat([61779,61780,61781,61782,61783,61784,61785,61786]),t=i.slice(0),e=61440;e<=61846;e++)-1===i.indexOf(e)&&(e%16==15&&61487!==e||e>=61620&&e<=61630||61718!==e&&61719!==e&&61472!==e&&61619!==e&&t.push(e));return t} +Object.defineProperty(e,"__esModule",{value:!0}),e.availableIcons=i()},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});!function(t){t[t.Original=0]="Original",t[t.Schiff=1]="Schiff",t[t.Inside=2]="Inside",t[t.Schiff2=3]="Schiff2"}(e.LineToolPitchforkStyle||(e.LineToolPitchforkStyle={}))},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t[t.Waiting=0]="Waiting",t[t.Success=1]="Success",t[t.Failure=2]="Failure"}(e.AlertStatus||(e.AlertStatus={})),function(t){t[t.Up=1]="Up",t[t.Down=2]="Down"}(e.Direction||(e.Direction={}))},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});!function(t){t[t.Entry=0]="Entry",t[t.Close=1]="Close",t[t.ActualEntry=2]="ActualEntry",t[t.ActualClose=3]="ActualClose"}(e.RiskRewardPointIndex||(e.RiskRewardPointIndex={}))},function(t,e,i){"use strict";var o,n,r;Object.defineProperty(e,"__esModule",{value:!0}),o=i(20),n=i(63),function(t){function e(e){return t.favorites.indexOf(e)}function i(){t.favorites=[],n.getJSON("chart.favoriteDrawings",[]).forEach(function(e){t.favorites.push(e.tool||e)}),t.favoritesSynced.fire()}function r(){n.setJSON("chart.favoriteDrawings",t.favorites)}t.favorites=[],t.favoritesSynced=new o,t.favoriteIndex=e,t.saveFavorites=r,i(),n.onSync.subscribe(null,i)}(r||(r={})),function(t){function e(){return r.favorites.slice()}function i(){return r.favorites.length}function n(t){return t<0||t>=i()?"":r.favorites[t]}function s(e){return!l(e)&&(r.favorites.push(e),r.saveFavorites(),t.favoriteAdded.fire(e),!0)}function a(e){var i=r.favoriteIndex(e);return-1!==i&&(r.favorites.splice(i,1),r.saveFavorites(),t.favoriteRemoved.fire(e),!0)}function l(t){return-1!==r.favoriteIndex(t)}function c(e,o){if(o<0||o>=i())return!1;var n=r.favoriteIndex(e);return-1!==n&&o!==n&&(r.favorites.splice(n,1),r.favorites.splice(o,0,e),r.saveFavorites(),t.favoriteMoved.fire(e,n,o),!0)}t.favoriteAdded=new o,t.favoriteRemoved=new o,t.favoriteMoved=new o,t.favoritesSynced=r.favoritesSynced,t.favorites=e,t.favoritesCount=i,t.favorite=n,t.addFavorite=s,t.removeFavorite=a,t.isFavorite=l,t.moveFavorite=c}(e.LinetoolsFavoritesStore||(e.LinetoolsFavoritesStore={}))},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});!function(t){t[t.Default=0]="Default",t[t.Pointer=1]="Pointer",t[t.Eraser=2]="Eraser",t[t.Dot=3]="Dot",t[t.Grabbing=4]="Grabbing",t[t.ZoomIn=5]="ZoomIn",t[t.VerticalResize=6]="VerticalResize"}(e.PaneCursorType||(e.PaneCursorType={}))},,,,,function(t,e,i){"use strict";var o,n,r,s,a,l,c,h,u,d;Object.defineProperty(e,"__esModule",{value:!0}),o=i(5),n=i(21),r=i(57),s=i(95),a=i(7),l=i(71),c=a.enabled("countdown"),h=a.enabled("price_scale_always_last_bar_value"),u=[l.STYLE_BARS,l.STYLE_CANDLES,l.STYLE_LINE,l.STYLE_AREA,l.STYLE_HOLLOW_CANDLES,l.STYLE_HEIKEN_ASHI],d=function(t){function e(e,i){var o=t.call(this)||this;return o._source=e,o._data=i,o}return o.__extends(e,t),e.prototype._getSource=function(){return this._source},e.prototype._getData=function(){return this._data}, +e.prototype._isCountdownEnabled=function(){return c},e.prototype._countdownText=function(){var t,e,i,o,s,a,l,c,h,u,d;return this._source.isDWM()?"":(t=1e3*n.ensure(n.ensureNotNull(this._source.data().bars().last()).value[0]),e=1e3*this._source.serverTimeOffset(),i=r.Interval.parse(this._source.interval()),o=i.multiplier()||0,s=i.kind()===r.Interval.SECONDS?o:60*o,a=t.valueOf()+1e3*s,l=(new Date).valueOf()+e,(c=Math.round((a-l)/1e3))<=0?"":(c=Math.min(c,s),h=null,c>=3600&&(h=this._addLeadingZero(Math.floor(c/3600))),c%=3600,u=this._addLeadingZero(Math.floor(c/60)),c%=60,d=this._addLeadingZero(Math.floor(c)),null!==h?h+":"+u+":"+d:u+":"+d))},e.prototype._updateRendererData=function(t){var e,i,o,n,r;t.visible=!1,this._data.model.properties().scalesProperties.showSeriesLastValue.value()&&(e=this._source.lastValueData(TradingView.CLOSE_PLOT,h),e.noData||(i=this._source.properties(),i.style.value()===l.STYLE_HEIKEN_ASHI&&i.haStyle.showRealLastPrice.value()&&(o=this._source.lastValueData(TradingView.CLOSE_PLOT,!1),n=this._source.lastValueData(TradingView.CLOSE_PLOT,!0),!o.noData&&!n.noData&&o.index===n.index)||(r="",c&&i.showCountdown.value()&&-1!==u.indexOf(i.style.value())&&(r=this._countdownText()),t.secondLine=r,t.background=this._source.priceLineColor(e.color),t.color=this.generateTextColor(t.background),t.coordinate=e.coordinate,t.floatCoordinate=e.floatCoordinate,t.text=e.text,t.visible=!0)))},e.prototype._addLeadingZero=function(t){return("0"+t).slice(-2)},e}(s.PriceAxisView),e.SeriesPriceAxisView=d},function(t,e,i){"use strict";var o,n,r;Object.defineProperty(e,"__esModule",{value:!0}),o=i(5),n=i(95),r=function(t){function e(e,i){var o=t.call(this)||this;return o._source=e,o._data=i,o}return o.__extends(e,t),e.prototype._updateRendererData=function(t){t.visible=!1;var e=this._source.lastValueData(this._data.plotIndex,!1);e.noData||(t.background=e.color,t.color=this.generateTextColor(e.color),t.coordinate=e.coordinate,t.floatCoordinate=e.floatCoordinate,t.text=e.text,t.visible=!0)},e}(n.PriceAxisView),e.StudyPriceAxisView=r},function(t,e,i){"use strict";var o,n,r;Object.defineProperty(e,"__esModule",{value:!0}),o=i(5),n=i(176),r=function(t){function e(e){var i=t.call(this,e,!1)||this;return i._subcommands=[],i}return o.__extends(e,t),e.prototype.addCommand=function(t){this._subcommands.push(t)},e.prototype.isEmpty=function(){return 0===this._subcommands.length},e.prototype.redo=function(){for(var t=0;t=0;t--)this._subcommands[t].undo()},e}(n.UndoCommand),e.UndoMacroCommand=r},function(t,e,i){"use strict";var o,n,r,s,a;Object.defineProperty(e,"__esModule",{value:!0}),o=i(176),n=i(20),r=i(13),s=r.getLogger("Common.UndoStack"),a=function(){function t(t){void 0===t&&(t=!0),this._commands=[],this._onChange=new n,this._logCommands=t}return t.prototype.onChange=function(){return this._onChange},t.prototype.isEmpty=function(){return 0===this._commands.length},t.prototype.clear=function(){ +this._commands.length=0,this._onChange.fire()},t.prototype.push=function(t){if(!(t instanceof o.UndoCommand))throw new TypeError("argument must be an instance of UndoCommand");this._commands.push(t),this._onChange.fire()},t.prototype.pop=function(){if(this.isEmpty())return void s.logDebug("pop: undo stack is empty");var t=this._commands.pop();return this._onChange.fire(),t},t.prototype.head=function(){if(!this.isEmpty())return this._commands[this._commands.length-1]},t}(),e.UndoStack=a},function(t,e,i){"use strict";function o(t){var e,i=n.get_timezone(t).offset_utc(Date.now()),o="",r=i/1e3/60/60;return r%1&&(o=":"+r%1*60),e="",e=r>0?"+"+(r-r%1)+o:0===r?"":r-r%1+o+"",{offset:i,string:"UTC"+e}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(67);e.parseTzOffset=o},,function(t,e,i){"use strict";function o(t){i.e(6,function(e){i(500).showGoToDateDialog(t)})}Object.defineProperty(e,"__esModule",{value:!0}),e.showGoToDateDialog=o},,function(t,e){"use strict";function i(t){window.t=t}function o(t){n.$||(n.$={}),n.$.t=t}var n,r;Object.defineProperty(e,"__esModule",{value:!0}),n=window,e.addTranslationFunctionToWindow=i,e.addTranslationFunctionToJQuery=o,r=function(t,e){return t},e.translationFunction=r},,,,,function(t,e,i){"use strict";function o(t){return s.createElement(t.href?"a":"div",t)}function n(t){t.stopPropagation()}var r,s,a,l,c;Object.defineProperty(e,"__esModule",{value:!0}),r=i(5),s=i(2),a=i(26),l=i(670),c=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._handleClick=function(t){var i=e.props,o=i.onClick,n=i.onClickArg;o&&o(n,t)},e}return r.__extends(e,t),e.prototype.render=function(){var t,e,i=this.props,r=i.className,c=i.forceShowHint,h=i.hint,u=i.icon,d=i.isActive,p=i.isDisabled,_=i.label,f=i.link,m=i.target,g=i.showToolboxOnHover,v=i.toolbox;return s.createElement(o,{className:a(l.item,r,(t={},t[l.isActive]=d,t[l.isDisabled]=p,t)),href:f,target:m,onClick:this._handleClick},void 0!==u&&s.createElement("div",{className:l.icon,dangerouslySetInnerHTML:{__html:u}}),s.createElement("div",{className:l.labelRow},s.createElement("div",{className:l.label},_)),(void 0!==h||c)&&s.createElement("div",{className:l.hint},h),void 0!==v&&s.createElement("div",{onClick:n,className:a(l.toolbox,(e={},e[l.showOnHover]=g,e))},v))},e}(s.PureComponent),e.PopupMenuItem=c,e.PopupMenuItemString=c},function(t,e){t.exports=''},function(t,e){ +t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},,,,,,,function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},,function(t,e){},function(t,e){},,function(t,e){},function(t,e){},,,,,,,function(t,e){t.exports={button:"button-12d2ecdm-",bg:"bg-YlLYd-yv-",isBgFull:"isBgFull-2vDsFeGF-",icon:"icon-1Aj0C0n9-",isActive:"isActive-2rPH92mZ-",isGrayed:"isGrayed-4ouw9IZE-",isTransparent:"isTransparent-ID_v_oQg-",isHidden:"isHidden-3LxpKIBm-"}},function(t,e){t.exports={dropdown:"dropdown-6u_w9lBX-",buttonWrap:"buttonWrap-2P8YcFxI-",control:"control-1XS2TnJK-",arrow:"arrow-3rkHC7mg-",arrowIcon:"arrowIcon-2CFVxds0-",isOpened:"isOpened-2NpkzMyL-",isGrayed:"isGrayed-a6uxviTP-"}},function(t,e){t.exports={drawingToolbar:"drawingToolbar-2CoOuCv8-",inner:"inner-miy9NvGa-",isHidden:"isHidden-3clwVygO-",toggleButton:"toggleButton-2o6YKJ1g-",willOpen:"willOpen-FfEto9H9-",separator:"separator-3cgsM4c1-"}},function(t,e){t.exports={wrap:"wrap-3sqRkrxT-",buttonIcon:"buttonIcon-1rzHc9wf-",item:"item-2ygtO0S7-",button:"button-22dNa3Bv-"}},function(t,e){t.exports={item:"item-3ZOl0mtP-",enter:"enter-vkTnkcy0-",enterActive:"enterActive-3sOs6kre-",leave:"leave-DQ7Ov9CG-"}},function(t,e){t.exports={star:"star-2V_oMHOc-",checked:"checked-PT15Z8t2-"}},function(t,e){t.exports={item:"item-3ShHncG0-",isDisabled:"isDisabled-1ebe7hp6-",icon:"icon-3c5_Jcn9-",isActive:"isActive-1oDByUn5-",labelRow:"labelRow-3KFKeuXJ-",hint:"hint-1ACoXAOB-",toolbox:"toolbox-3Hm-uzE_-",showOnHover:"showOnHover-2HcrcYeD-"}},function(t,e){t.exports={separator:"separator-1d19DzZR-"}},function(t,e){t.exports={menu:"menu-13SRjx2L-",menuBox:"menuBox-FiPlQBwv-",menuWrap:"menuWrap-39mEHt1u-",toBottom:"toBottom-DlXGJH_L-",toLeft:"toLeft-4_ywK6bp-",toLeftBottom:"toLeftBottom-1ke8rpT6-", +toLeftTop:"toLeftTop-1phbGMP0-",toRight:"toRight-3LEkQ7Sl-",toRightBottom:"toRightBottom-1kaIZaQe-",toRightTop:"toRightTop-2Ovyfnu2-",toTop:"toTop-1i0VHHiC-",isMeasuring:"isMeasuring-2TOwQm-c-",isHidden:"isHidden-36HyvS5l-"}},function(t,e){t.exports={wrap:"wrap-2ezGj3Gf-",scrollWrap:"scrollWrap-2Regigv6-",noScrollBar:"noScrollBar-a2JtQ0sE-",content:"content-3WPwLkTv-",icon:"icon-1eZA_1s6-",scrollBot:"scrollBot-1mx_BeXt-",scrollTop:"scrollTop-2G6k9HF0-",isVisible:"isVisible-3nZyQUEX-",iconWrap:"iconWrap-1rQdYwAv-"}},,,,,,,,,,,,,,,function(t,e,i){"use strict";var o,n;Object.defineProperty(e,"__esModule",{value:!0}),o=i(158),Object.keys(o).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return o[t]}})}),n=i(365),Object.defineProperty(e,"KeyboardListener",{enumerable:!0,get:function(){return n.KeyboardListener}})},function(t,e,i){(function(t){"use strict";function o(t){var e,i;if(t&&t.__esModule)return t;if(e={},null!=t)for(i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}function n(t){return t&&t.__esModule?t:{default:t}}function r(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a,l,c,h,u,d,p,_,f,m;Object.defineProperty(e,"__esModule",{value:!0}),e.ArraySource=e.Autocomplete=void 0,a=function(){function t(t,e){var i,o;for(i=0;i{{#userpic}}{{/userpic}}{{{html}}}',d="prev",p="next",_=function(t,e){var i=Math.min(t.length,e.length),o=void 0 +;for(o=0;o0?""+(0,c.htmlEscape)(t.slice(0,o))+""+(0,c.htmlEscape)(t.slice(o)):(0,c.htmlEscape)(t)},e.Menu=function(){function e(t){var i=t.el,o=t.items,r=t.itemClass,s=t.textField,a=void 0===s?"text":s,l=t.userpicField,c=void 0===l?"userpic":l,h=t.userpicClass;n(this,e),this._el=i,this._items=o,this._itemClass=r,this._textField=a,this._userpicField=c,this._userpicClass=h,this._hightlighted="",this._init()}return r(e,[{key:"_init",value:function(){this._el.setAttribute("tabindex","1"),this.stream=new a.default,this.updateItems(this._items),this._el.addEventListener("mousedown",function(t){t.preventDefault()}),this._el.addEventListener("click",this._onClick.bind(this))}},{key:"updateItems",value:function(t){this._items=t,t&&this._renderItems(t),this._menuItems=this._el.querySelectorAll(h),this._selectedItem=this._el.querySelector(h+".i-active"),this._setFocusOnItem(this._selectedItem)}},{key:"next",value:function(){this._moveFocusTo(p)}},{key:"prev",value:function(){this._moveFocusTo(d)}},{key:"reset",value:function(){return this._selectedItem?void this._setFocusOnItem(this._selectedItem):this._focusedItem?void this._blur():void 0}},{key:"select",value:function(){this._selectedItem=this._focusedItem,this.stream.emitEvent(l.events.SELECT,[this.value])}},{key:"highlight",value:function(t){null==t?t="":t+="",this._hightlighted!==t&&(this._hightlighted=t,this.updateItems(this._items))}},{key:"_moveFocusTo",value:function(t){var e=this._getFocusedItemIdx(),i=this._menuItems.length-1,o=void 0;switch(t){case p:o=this._findActiveItem(t,++e)||this._findActiveItem(t,0);break;case d:o=this._findActiveItem(t,--e)||this._findActiveItem(t,i)}this._setFocusOnItem(o)}},{key:"_getFocusedItemIdx",value:function(){var t=this;return Array.prototype.findIndex.call(this._menuItems,function(e){return Object.is(e,t._focusedItem)})}},{key:"_findActiveItem",value:function(t,e){for(var i=this._menuItems[e];i&&i.classList.contains("i-disabled");)switch(t){case"next":i=this._menuItems[e++];break;case"prev":i=this._menuItems[e--]}return i}},{key:"_setFocusOnItem",value:function(t){t&&!t.classList.contains("i-disabled")?(this._blur(),this._focusedItem=t,this._focus()):this._focusedItem=null}},{key:"_focus",value:function(){this._focusedItem&&this._focusedItem.classList.add("i-active")}},{key:"_blur",value:function(){this._focusedItem&&this._focusedItem.classList.remove("i-active")}},{key:"_onClick",value:function(t){var e=!t.target.classList.contains("i-disabled");t.target.tagName===h.toUpperCase()&&e&&(this._setFocusOnItem(t.target),this.select())}},{key:"_renderItems",value:function(e){var i=this,o={items:e,itemClass:this._itemClass,userpicClass:this._userpicClass,activeClass:function(){var t=i._hightlighted,e=this[i._textField];if(t&&e&&t.toLowerCase()===e.toLowerCase())return"i-active"},text:function(){return this[i._textField]},html:function(){return _(this[i._textField],i._hightlighted)},userpic:function(){return this[i._userpicField]},item:function(){ +return JSON.stringify(this)}},n="{{#items}}"+u+"{{/items}}";this._el.innerHTML=t.render(n,o)}},{key:"value",get:function(){var t=void 0;try{t=JSON.parse(this._selectedItem.dataset.item)}catch(e){t={}}return t}}]),e}()}).call(e,i(54))},function(t,e,i){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var r,s,a,l,c;Object.defineProperty(e,"__esModule",{value:!0}),e.AddSymbolTab=void 0,r=function(){function t(t,e){var i,o;for(i=0;i\n\t\t\n\t\t
\n\t
',e.AddSymbolTab=function(){function t(e,i){n(this,t),this._chartWidgetCollection=e,this._dialog=i,this._$popup=null,this.init()}return r(t,[{key:"init",value:function(){var t=this;this.$tab=$(c),this._$input=this.$tab.find(".js-add-symbol-tab-input"),this._checkbox=new l.AddSymbolCheckbox({labelRight:$.t("Overlay the main chart"),labelAddClass:"tv-add-symbol-tab__checkbox-label",boxAddClass:"tv-add-symbol-tab__checkbox-box"}),this.$tab.find(".js-add-symbol-tab-checkbox").append(this._checkbox.$el),a.default.bindToInput(this._$input,{callback:function(e){var i=t._chartWidgetCollection.activeChartWidget.value();i&&i.addSymbol(e,t._checkbox.checked)},onPopupOpen:function(e){e.css("z-index",t._dialog.getZIndex()),t._$popup=e},onPopupClose:function(){t._$popup=null},keepFocus:!0,clearAfterAccept:!0})}},{key:"focus",value:function(){Modernizr.touch||this._$input.focus()}},{key:"isClickOnTab",value:function(t){return!!this._$popup&&!(this._$popup[0]!==t.target&&!this._$popup[0].contains(t.target))}}]),t}()},function(t,e,i){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function n(t){var e,i;if(t&&t.__esModule)return t;if(e={},null!=t)for(i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function a(t,e,i){var o,n=2*j,r=document.createElement("canvas");return r.width=e*n,r.height=i*n,r.style.width=e+"px",r.style.height=i+"px",o=r.getContext("2d"),o.setTransform(n,0,0,n,0,0),o.drawImage(t,0,0,e,i),r}function l(t,e){return function(){i.e(10,function(){Y=i(695),t.call(e)})}}function c(t){return!C||t>P}var h,u,d,p,_,f,m,g,v,y,b,S,w,T,x,C,P,L,I,k,A,M,E,V,D,O,B,R,z,F,N,W,H,U,j,q,G,Y,K,Z;Object.defineProperty(e,"__esModule",{value:!0}),e.Branding=void 0,h=function(){function t(t,e){var i,o;for(i=0;i-1,W=function(){var t,e=window.navigator.userAgent,i=e.indexOf("MSIE ");return i>0?parseInt(e.substring(i+5,e.indexOf(".",i)),10):e.indexOf("Trident/")>0&&(t=e.indexOf("rv:"),parseInt(e.substring(t+3,e.indexOf(".",t)),10))}(),H=window.urlParams||{},U=window.initData||{},j=window.hidpiCanvasRatio||1,q=!0,G=null,Y=null,K=function(){function t(e){var i=e.layout,o=void 0===i?I:i,n=e.symbol,s=void 0===n?"":n,a=e.model,c=e.onReadyCallback;r(this,t),this._model=a,this._logo=null,this._logoReady=!1,this._showLogo=!1,this._logoWidth=28,this._logoHeight=19,this.show=!0,this.width=100,this.height=20,this._layout=o,this._symbol=s,this._strokeColor=b.color.black255,this._fillСolor=b.color.brand,this._colorOldBlue=b.color.brandDown,this._colorOldGray=b.color.black30,this._strokeOpacity=.6,this._strokeWidth=2,this._fontSize=14,this._font='px "Trebuchet MS", Tahoma, Arial, sans-serif',this._txt="TradingView",this._onReadyCallback=c,this._upscaleRatio=2,this._strokeCanv=null,this._fillCanv=null,W&&(this._init=l(this._init,this)),this._init()}return h(t,[{key:"_init",value:function(){this._checkLayout(),this.show&&(this._updateStrokeColor(),this._model.properties().paneProperties.background.subscribe(this,this._updateStrokeColor),this._model.onChartThemeLoaded().subscribe(this,this._updateStrokeColor))}},{key:"_updateStrokeColor",value:function(){var t=(0,S.getLuminance)(this._model.properties().paneProperties.background.value());this._strokeCanv=null,this._fillCanv=null,t>F?(this._strokeColor=b.color.black255,this._strokeWidth=2.5,this._loadLogo(T)):(this._strokeColor=b.color.black0,this._strokeWidth=3,this._loadLogo(w))}},{key:"_loadLogo",value:function(t){var e=this;this._showLogo&&(this._logo=new Image,this._logo.src=W?Y.fallbackImages[t]:"data:image/svg+xml;charset=utf-8,"+encodeURIComponent(x[t]),this._logo.addEventListener("load",function(){N&&(e._logo=a(e._logo,e._logoWidth,e._logoHeight)),e._logoReady=!0,"function"==typeof e._onReadyCallback&&e._onReadyCallback()}))}},{key:"_checkLayout",value:function(){switch(this._layout){case k:case A:case M:case V:case D:case R:case B:this.show=!0;break;case I:case E:case O:case z:this.show=!1}switch(this._layout){case k:this._txt=$.t("{0} chart by TradingView").format(this._symbol);break;case V: +this._txt=$.t("{0} financials by TradingView").format(this._symbol);break;case A:this._txt=$.t("More features on tradingview.com");break;case M:case D:this._txt=$.t("powered by ");break;case B:this._showLogo=!0,this._txt=$.t("charts by TradingView");break;case R:this._txt=$.t("powered by TradingView")}}},{key:"_drawTextStroke",value:function(t){var e,i;this._strokeCanv||(this._strokeCanv=document.createElement("canvas"),e=this._strokeCanv.getContext("2d"),i=Math.round(this._strokeWidth*this._upscaleRatio),e.font=this._fontSize*this._upscaleRatio+this._font,this._textWidth=e.measureText(this._txt).width,this._strokeCanv.width=(this._textWidth+2*i)*j,e.textBaseline="top",e.textAlign="start",e.font=this._fontSize*this._upscaleRatio+this._font,e.strokeStyle=this._strokeColor,e.lineWidth=this._strokeWidth*this._upscaleRatio*j,e.lineJoin="round",e.strokeText(this._txt,i,i),N&&(e.lineWidth=this._strokeWidth*this._upscaleRatio*j/2,e.strokeText(this._txt,i+1.5,i),e.strokeText(this._txt,i-1.5,i))),t.save(),t.globalAlpha=this._strokeOpacity,t.scale(1/j,1/j),t.drawImage(this._strokeCanv,0,0,this._strokeCanv.width,this._strokeCanv.height,0,0,this._strokeCanv.width/this._upscaleRatio,this._strokeCanv.height/this._upscaleRatio),t.restore()}},{key:"_drawTextFill",value:function(t){var e,i;this._fillCanv||(this._fillCanv=document.createElement("canvas"),e=this._fillCanv.getContext("2d"),i=Math.round(this._strokeWidth*this._upscaleRatio),this._fillCanv.width=(this._textWidth+2*i)*j,e.textBaseline="top",e.textAlign="start",e.font=this._fontSize*this._upscaleRatio+this._font,e.fillStyle=this._fillСolor,e.fillText(this._txt,i,i)),t.save(),t.scale(1/j,1/j),t.drawImage(this._fillCanv,0,0,this._fillCanv.width,this._fillCanv.height,0,0,this._fillCanv.width/this._upscaleRatio,this._fillCanv.height/this._upscaleRatio),t.restore()}},{key:"draw",value:function(t,e){var i,o;this._layout===M||this._layout===D?(i='12px "Trebuchet MS", Tahoma, Arial, sans-serif',t.font=i,o=t.measureText(this._txt).width,this.width=o+t.measureText("TradingView").width,t.save(),t.globalAlpha=.7,t.fillStyle=this._colorOldGray,t.fillText(this._txt,0,12),t.fillStyle=this._colorOldBlue,t.fillText("TradingView",o,12),t.restore()):this._showLogo&&this._logoReady?(t.drawImage(this._logo,-2,N?-2:-.5,this._logoWidth,this._logoHeight),t.save(),t.translate(this._logoWidth,0),c(e)&&(this._drawTextStroke(t),this._drawTextFill(t)),t.restore(),null!==this._strokeCanv?this.width=this._logoWidth+this._strokeCanv.width/this._upscaleRatio/j:this.width=this._logoWidth):(t.save(),t.translate(0,N?4:0),c(e)&&(this._drawTextStroke(t),this._drawTextFill(t)),t.restore(),null!==this._strokeCanv&&(this.width=this._strokeCanv.width/this._upscaleRatio/j))}}]),t}(),Z=function(){function t(e){var i=e.layout,o=void 0===i?I:i,n=e.src,s=e.onReadyCallback;r(this,t),this._img=new Image,this._ready=!1,this.show=!1,this.width=0,this.height=0,this._layout=o,this._src=n,this._onReadyCallback=s,W&&(this._init=l(this._init,this)),this._init()}return h(t,[{key:"_init",value:function(){var t,e,i=this +;this._checkLayout(),this.show&&(t=this._src.match(/(\w+)\.svg/),W&&t&&2===t.length?(e=t[1],this._img.src=Y.fallbackImages[e],this._img.addEventListener("load",function(){var t=Y.logoSizes;e in t?(i.width=t[e].width,i.height=t[e].height):(i.width=135,i.height=25),i._ready=!0,"function"==typeof i._onReadyCallback&&i._onReadyCallback()})):(this._img.src=this._src,this._img.addEventListener("load",function(){i.width=Math.round(i._img.width),i.height=Math.round(i._img.height),N&&(i._img=a(i._img,i.width,i.height)),i._ready=!0,"function"==typeof i._onReadyCallback&&i._onReadyCallback()})))}},{key:"_checkLayout",value:function(){switch(this._layout){case M:case E:case D:case O:case R:case z:this.show=!0;break;case I:case k:case A:case V:case B:this.show=!1}}},{key:"draw",value:function(t){this._ready&&t.drawImage(this._img,0,0,this.width,this.height)}}]),t}(),e.Branding=function(){function t(e){var i,o,n=this;r(this,t),this._model=e,this._mainSeries=this._model.mainSeries(),this._canvasWidth=0,this._paneHeight=0,this._left=13,this._bottom=12,this._layout=I,this._needToShow=!0,this._customLogoSrc="",this._customLogoLink="",this._checkLayout(),this._layout!==M&&this._layout!==D||(this._left=8,this._bottom=5),i=function(){q=!!n._needToShow&&(n._layout!==I||window.innerWidth>=768)},o=(0,y.default)(i,200),i(),window.addEventListener("resize",o),this._model.isSnapshot()?this._init():this._mainSeries.onSymbolResolved().subscribe(this,this._init)}return h(t,[{key:"_init",value:function(){var t=this,e=this._mainSeries.symbolInfo()||{};this._poweredBy=new K({layout:this._layout,symbol:e.name,model:this._model,onReadyCallback:function(){return t._model.fullUpdate()}}),this._customLogo=new Z({layout:this._layout,src:this._customLogoSrc,onReadyCallback:function(){return t._model.fullUpdate()}})}},{key:"_checkLayout",value:function(){var t,e,i;f.enabled("widget")?(t=U.logo||{},e=f.enabled("fundamental_widget"),this._needToShow=!(U.whitelabel||H.whitelabel||t.whitelabel),t.image?(this._customLogoSrc=L+t.image,t.no_powered_by?this._layout=e?O:E:this._layout=e?D:M):H.referral_id||H.no_referral_id?this._layout=A:this._layout=e?V:k):f.enabled("charting_library")||f.enabled("amp_terminal")||f.enabled("cqg_terminal")||f.enabled("trading_terminal")?(i=JSON.parse(H.logo)||{},i.image?(this._customLogoSrc=i.image,this._customLogoLink=i.link,this._needToShow=f.enabled("widget_logo"),f.enabled("link_to_tradingview")?this._layout=R:this._layout=z):(this._layout=B,this._needToShow=f.enabled("widget_logo"))):this._layout=I}},{key:"updateAllViews",value:function(){}},{key:"priceScale",value:function(){}},{key:"priceAxisViews",value:function(){}},{key:"onClickOutside",value:function(){}},{key:"hasContextMenu",value:function(){return!1}},{key:"hitTest",value:function(t){var e=this;return!q||f.enabled("logo_without_link")?null:this._poweredBy&&this._layout!==I&&this._layout!==E&&this._layout!==O&&(0, +p.pointInRectangle)(t,new d.Point(this._left,this._paneHeight-Math.max(this._poweredBy.height,void 0!==this._customLogo?this._customLogo.height:0)-this._bottom),new d.Point(this._left+Math.max(this._poweredBy.width,void 0!==this._customLogo?this._customLogo.width:0),this._paneHeight-this._bottom))?new g.default(g.default.CUSTOM,{mouseUpHandler:function(){window.open(e.tvUrl(),"_blank").opener=null}}):null}},{key:"tvUrl",value:function(){var t,e="https://www.tradingview.com/";if(this._customLogoLink)return this._customLogoLink;if(this._layout===B||this._layout===R){switch(t=void 0,!0){case f.enabled("charting_library"):t="library";break;case f.enabled("trading_terminal"):case f.enabled("amp_terminal"):case f.enabled("cqg_terminal"):t="trading-terminal"}return e+="/"===e[e.length-1]?"?":"&",e+="utm_source="+window.location.origin+"&utm_medium=library"+(t?"&utm_campaign="+t:"")}return e}},{key:"draw",value:function(t){if(q){var e=0;this._poweredBy&&this._poweredBy.show&&(e=this._poweredBy.height,t.save(),t.translate(this._left,this._paneHeight-this._bottom-this._poweredBy.height),this._poweredBy.draw(t,this._canvasWidth),t.restore()),this._customLogo&&this._customLogo.show&&(t.save(),t.translate(this._left,this._paneHeight-this._bottom-e-this._customLogo.height),this._customLogo.draw(t),t.restore())}}},{key:"renderer",value:function(t,e){return this._paneHeight=G.height(),this._canvasWidth=e,{draw:this.draw.bind(this)}}},{key:"paneViews",value:function(t){var e=f.enabled("move_logo_to_main_pane");return e&&t.isMainPane()||!e&&t.isLast()||t.isMaximized()?(G=t,[{renderer:this.renderer.bind(this)}]):[]}}]),t}()},function(t,e,i){(function(t,o){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var s,a,l,c,h,u,d;Object.defineProperty(e,"__esModule",{value:!0}),e.CompareTab=void 0,s=function(){function t(t,e){var i,o;for(i=0;i\n\t\t\n\t
',u='
',d='\n\t
\n\t\t\n\t
',e.CompareTab=function(){function e(t,i){r(this,e),this._chartWidgetCollection=t, +this._dialog=i,this._$popup=null,this._predefines={},this._symbolAlias={},this.init()}return s(e,[{key:"addCompareSymbol",value:function(t,e,i){var o,n,r,s,a,l,h=this._chartWidgetCollection.activeChartWidget.value();if(h&&(o=h.model())){for(n=o.mainSeries().interval(),r=o.studiesMetaData(),s=void 0,a=0;a'+this.$btn.html()+''),this.loading=this.$btn.hasClass("i-loading")}return r(t,[{key:"_start",value:function(){var t=this;this.starting=!0,this.$btn.addClass("i-start-load"),this.$btn.trigger("tv-button-loader:start"),setTimeout(function(){t.loading=!0,t.starting=!1,t._startPromise=!1,t.$btn.addClass("i-loading"),t.$btn.removeClass("i-start-load"),t._stopPromise&&t._stop()},2*l.dur)}},{key:"start",value:function(){this.starting||(this.stopping?this._startPromise=!0:this._start())}},{key:"_stop",value:function(){var t=this;this.stopping=!0,this.$btn.addClass("i-stop-load"),this.$btn.trigger("tv-button-loader:stop"),setTimeout(function(){t.loading=!1,t.stopping=!1,t._stopPromise=!1,t.$btn.removeClass("i-loading i-start-load i-stop-load"),t._startPromise&&t._start()},l.dur)}},{key:"stop",value:function(){this.stopping||(this.starting?this._stopPromise=!0:this._stop())}},{key:"toggle",value:function(){this.loading?this.stop():this.start()}},{key:"contentHtml",value:function(t){return t?(this.$btn.find(".tv-button__text").html(t),t):this.$btn.find(".tv-button__text").html()}},{key:"contentNojQuery",value:function(){return this.$btn.get(0)}},{key:"disable",value:function(){this.stop(),this.$btn.addClass("i-disabled")}},{key:"enable",value:function(){this.$btn.removeClass("i-disabled")}}]),t}()},function(t,e,i){"use strict";function o(t,e,i,o){var s=(0,n.createConfirmDialog)({type:"modal",content:$.t("Do you really want to delete Chart Layout '{0}' ?").format(t),addClass:"delete-chart-dialog"}),a=function(){var t=o;o=null,t&&t()};s.on("action:yes",function(){o=null,r.removeChart(e,i),s.close()}),s.on("action:no",a),s.on("afterClose",a),s.open()}var n,r;Object.defineProperty(e,"__esModule",{value:!0}),e.deleteChart=o,n=i(123),r=i(161)},function(t,e,i){"use strict";function o(t){var e=0;!0===t&&(ChartApiInstance.disconnect(),e=500),setTimeout(ChartApiInstance.connect.bind(ChartApiInstance),e)}function n(t,e,i,n){l||(l=(0,s.createDialog)({width:n||600,closeOnOutsideClick:!1,destroyOnClose:!0,type:"modal",contentWrapTemplate:'
',actionsWrapTemplate:'
',title:t,content:e,actions:[{name:"reconnect",type:"primary",text:$.t("Reconnect")},{name:"report",type:"primary", +text:$.t("Report a data issue")}]}).on("action:reconnect",function(t){t.close(),o(i)}).on("action:report",function(t){t.close(),runOrSignIn(function(){},{source:"Report data issue from disconnect dialog"})}).on("destroy",function(){l=null}).open())}function r(){(0,a.trackEvent)("System","Critical Error"),n($.t("Oops, something went wrong"),$.t("Please report the issue or click Reconnect."),!0,500)}var s,a,l;Object.defineProperty(e,"__esModule",{value:!0}),e.showCriticalErrorMessage=r,s=i(96),a=i(48),l=null},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.CustomEvent=function(t){var e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=i.bubbles,n=void 0!==o&&o,r=i.cancelable,s=void 0!==r&&r,a=i.detail,l=void 0===a?null:a;try{return new window.CustomEvent(t,{bubbles:n,cancelable:s,detail:l})}catch(i){return e=document.createEvent("CustomEvent"),e.initCustomEvent(t,n,s,l),e}}},function(t,e,i){(function(t,o){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function r(t){var e,i;if(t&&t.__esModule)return t;if(e={},null!=t)for(i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function c(){y.forEach(function(t){return t.close()})}var h,u,d,p,_,f,m,g,v,y,b,S,w,T,x,C,P;Object.defineProperty(e,"__esModule",{value:!0}),e.TVDialogAbstract=void 0,h=Object.assign||function(t){var e,i,o;for(e=1;e',errorTemplate:'
{{{ error }}}
',titleTemplate:'
{{{ title }}}
',contentWrapTemplate:'
', +actionsWrapTemplate:'
',closeButtonTemplate:'
'+i(109)+"
",helpButtonTemplate:'',helpActionsMod:"tv-dialog__section--actions_with-help"},x={default:"tv-button tv-button--default",primary:"tv-button tv-button--primary",success:"tv-button tv-button--success",danger:"tv-button tv-button--danger",warning:"tv-button tv-button--warning",link:"tv-button tv-button--link",checkbox:"tv-control-checkbox tv-control-checkbox--in-actions","default-ghost":"tv-button tv-button--default_ghost","primary-ghost":"tv-button tv-button--primary_ghost","success-ghost":"tv-button tv-button--success_ghost","danger-ghost":"tv-button tv-button--danger_ghost","warning-ghost":"tv-button tv-button--warning_ghost"},C={_default:'
{{ text }}
',"submit-success":''},$(function(){T.$wrap=$(document.all&&!document.querySelector?"html":"body")}),P=function(e){function i(){var e,o,n,r,l,c=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};for(s(this,i),e=a(this,(i.__proto__||Object.getPrototypeOf(i)).call(this)),e._id=v++,e.loadingActions=[],e.disabledActions=[],e.firstFocusControl=null,e.options=h({},T,c),e.$el=$(t.render(e.options.template,{title:e.options.title,closeButton:e.options.closeButton})),e.$el.addClass("js-dialog"),e.el=e.$el[0],e.options.addClass&&e.$el.addClass(e.options.addClass),e.options.width&&e.$el.css({width:"100%","max-width":e.options.width}),e.options.title&&(e.$title=$(t.render(e.options.titleTemplate,{title:e.options.title})).appendTo(e.$el)),e.$content=$(e.options.contentWrapTemplate).appendTo(e.$el),e.$contentIn=e.$content;e.$contentIn.length;)e.$contentIn=e.$contentIn.children();if(e.$contentIn=e.$contentIn.end(),e.options.content&&e.renderContent(e.options.content),(e.options.actions||e.options.help)&&(e.$content.hasClass("tv-dialog__section")&&e.$content.addClass("tv-dialog__section--no-padding_bottom"),e.$actions=$(e.options.actionsWrapTemplate).appendTo(e.$el)),e.options.actions)for(e.actions={},e.$el.on("click",".js-dialog__action-click",function(t){e.actionDispatcher($(t.currentTarget).data("name"))}),o=function(i){var o,n,r,s,a,l,c=e.options.actions[i];c.type||(c.type="default"),c.class||(c.class=x[c.type]?x[c.type]:x.default),"checkbox"===c.type?(o=new f.default({labelRight:c.text,name:c.name,checked:c.checked}),e.actions[c.name]=o.$el.appendTo(e.$actions),e.actions[c.name].on("change",function(t){setTimeout(function(){return TVSettings.setValue("publish.showIntroText",!o.checked)},0)})):e.actions[c.name]=$(t.render(c.template?c.template:C[c.type]||C._default,c,c)).appendTo(e.$actions),c.method&&"function"==typeof e[c.method]&&e.on("action:"+c.name,e[c.method].bind(e)), +c.addClass&&e.actions[c.name].addClass(c.addClass),c.key&&(n=void 0,"string"==typeof c.key&&c.key.split("+").length>1?(r=[],s=c.key.split("+"),n=function(t){r=[]},a=function(t){var i=""+t.keyCode;-1!==s.indexOf(i)&&r.indexOf(i)&&r.push(i),e._focused&&r.length===s.length&&(r=[],e.actionDispatcher(c.name))},e.on("afterOpen",function(){w.on("keydown",a),w.on("keyup",n)}),e.on("beforeClose",function(){w.off("keydown",a),w.off("keyup",n)})):(l=$.isArray(c.key)?c.key:[c.key],n=function(t){e._focused&&-1!==l.indexOf(t.keyCode)&&e.actionDispatcher(c.name)},e.on("afterOpen",function(){return w.on("keyup",n)}),e.on("beforeClose",function(){return w.off("keyup",n)})))},n=e.options.actions.length-1;n>=0;n--)o(n);return e.options.help&&$(t.render(e.options.helpButtonTemplate,e.options.help)).prependTo(e.$actions.addClass(e.options.helpActionsMod)),e.options.closeButton&&(r=$(e.options.closeButtonTemplate),r.addClass(e.options.closeButtonAddClass||""),l=e.$el,1===e.$el.find(".js-close-button-place").length&&(l=e.$el.find(".js-close-button-place")),r.appendTo(l)),e.setZIndex(S+y.length),c.errorMod&&(e.errorMod=c.errorMod),e.on("afterOpen",function(){e.options.focusFirstControl&&!Modernizr.touch&&(e.firstFocusControl||e.$el.find('input:not([type="hidden"]), textarea').first()).focus()}),e.$el.on("click",".js-dialog__close",e.close.bind(e)),e.$el.on("mousedown touchstart",e.focus.bind(e)),y.push(e),e}return l(i,e),u(i,[{key:"renderContent",value:function(t){return this.$contentIn.html("function"==typeof t?t(this):t),this}},{key:"setZIndex",value:function(t){return this.zIndex=t,this.trigger("change:zIndex",[this]),this}},{key:"toTop",value:function(){for(var t=y.length-1;t>=0;t--)y[t].zIndex>this.zIndex&&y[t].setZIndex(y[t].zIndex-1);return this.setZIndex(S+y.length),this}},{key:"isEventOut",value:function(t){var e,i,o;return this.options.isClickOutFn&&void 0!==(e=this.options.isClickOutFn(t))?e:(i=!0,o=$(t.target),o.get(0)!==this.$el.get(0)&&($(">*",this.$el).each(function(){o.get(0)===$(this).get(0)&&(i=!1),0===o.closest("HTML",$(this).get(0)).length&&(i=!1)}),i))}},{key:"focus",value:function(){var t=this;b&&b!==this&&b.unfocus(),this._setFocused(),this._focused=!0,this.$el.addClass(this.options.focusClass),this.trigger("focus",[this]),setTimeout(function(){w.on("mousedown.tv-dialog-unfocus-"+t._id,function(e){t.isEventOut(e)&&(t.unfocus(),w.off("mousedown.tv-dialog-unfocus-"+t._id))})},20)}},{key:"_setFocused",value:function(){b!==this&&(b=this)}},{key:"_setUnfocused",value:function(){b===this&&(b=void 0)}},{key:"unfocus",value:function(){b===this&&(this._setUnfocused(),this._focused=!1,this.$el.removeClass(this.options.focusClass).find(":focus").blur(),this.trigger("unfocus",[this]))}},{key:"isFocused",value:function(){return this._focused}},{key:"setTitle",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.$title.toggleClass("tv-dialog__section--one-line apply-overflow-tooltip",e),this.$title.html(t),this}},{key:"setTitleText",value:function(t){this.$title.find(".js-title-text").text(t)} +},{key:"actionDispatcher",value:function(t){this.disabledActions.includes(t)||this.loadingActions.includes(t)||this.trigger("action:"+t,[this])}},{key:"toggleAction",value:function(t,e){return!e&&this.disabledActions.includes(t)?this.disabledActions.push(t):e&&this.disabledActions.includes(t)&&(this.disabledActions=o.without(this.disabledActions,t)),this.actions[t].toggleClass("i-disabled",!e),this}},{key:"actionLoader",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"init";return this.actions[t].tvButtonLoader(i),"init"===i&&(this.actions[t].off("tv-button-loader:start.dialog-action").on("tv-button-loader:start.dialog-action",function(){e.loadingActions.push(t)}),this.actions[t].off("tv-button-loader:stop.dialog-action").on("tv-button-loader:stop.dialog-action",function(){e.loadingActions=o.without(e.loadingActions,t)})),this}},{key:"error",value:function(e){var i=$(t.render(this.options.errorTemplate,{error:e,errorMod:this.errorMod})).appendTo(this.$el),o=function(){i.addClass("i-slided"),setTimeout(function(){return i.remove()},.75*p.dur)};return setTimeout(function(){return i.removeClass("i-slided")},20),w.one("touchstart mousedown keydown",o),this.trigger("error",[this,i]),this}},{key:"destroy",value:function(){y=o.without(y,this);for(var t=0;t
',containerTemplate:'
',ajaxErrorTemplate:'
'+$.t("Error")+"
"},e.TVModal=function(e){function i(){var t,e,o,n,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r(this,i),t=s(this,(i.__proto__||Object.getPrototypeOf(i)).call(this,c({},w,a))),t.$overlay=$(t.options.overlayTemplate),t.$modalWrap=$(t.options.containerTemplate),t.$body=t.$modalWrap.find(".tv-dialog__modal-body").append(t.$el),t.options.closeOnOutsideClick&&t.$overlay.add(t.$modalWrap).click(function(e){t.isEventOut(e)&&t.close()}),t.on("change:zIndex",function(){t.$overlay.css("z-index",t.zIndex),t.$modalWrap.css("z-index",t.zIndex)}),t.on("destroy",function(){var e=function(){t.$overlay.remove(),t.$modalWrap.remove()};t.opened?(t.close(),setTimeout(e,t.options.closingDuration)):e()}),t.on("beforeOpen",function(){S.push(t)}),t.options.ajax.url&&(e=t.options.ajax.beforeSend||$.noop,o=t.options.ajax.success||!1,n=t.options.ajax.error||$.noop,$.extend(t.options.ajax,{beforeSend:function(){t.trigger("beforeLoading",[t]),t.startSpinner(),e(t)},success:function(e){t.trigger("afterLoading",[t]),t.renderContent(o?o(t,e):e).showContent(),t.trigger("afterLoadingShow",[t])},error:function(){t.renderContent(t.options.ajaxErrorTemplate),n(t),t.trigger("errorLoading",[t])}})),t.on("error",function(e,i){t.$modalWrap[0].getBoundingClientRect().height0&&S[S.length-1].focus(),e.options.destroyOnClose&&e.destroy()},this.options.closingDuration),this}},{key:"showContent",value:function(){var t=this;return this.$modalWrap.removeClass("i-hidden"),setTimeout(function(){ +t.$modalWrap.removeClass("i-closed")},20),setTimeout(function(){t.trigger("afterOpen",[t]),t.spinner&&t.stopSpinner()},.75*d.dur+20),this}},{key:"hideContent",value:function(){if(this.$el)return this.$modalWrap.addClass("i-closed"),this.unfocus(),this}},{key:"startSpinner",value:function(){return this.spinner=(0,m.unifiedSpinner)("xlarge",{color:d.color.black255,zIndex:!1}),this.spinner.spin(this.$overlay[0]),this}},{key:"stopSpinner",value:function(){if(this.spinner)return this.spinner.stop(),delete this.spinner,this}}]),i}(f.TVDialogAbstract)}).call(e,i(192))},function(t,e,i){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function n(t){var e,i;if(t&&t.__esModule)return t;if(e={},null!=t)for(i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var l,c,h,u,d,p,_,f,m,g,v,y,b;Object.defineProperty(e,"__esModule",{value:!0}),e.TVPopup=void 0,l=Object.assign||function(t){var e,i,o;for(e=1;e',scrollWrapInner:'
',withScroll:!0},b="js-dialog__scroll-wrap",e.TVPopup=function(t){function e(){var t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r(this,e),t=s(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,l({},y,i))),t.$scrollWrap=t.$content.hasClass(b)?t.$content:t.$content.find("."+b),t.$scrollWrap.length?t.$scrollWrapInner=t.$scrollWrap.children().first():(t.$scrollWrap=t.$content.wrap($(t.options.scrollWrap)).parent(),t.$scrollWrapInner=t.$content.wrap($(t.options.scrollWrapInner)).parent()),t.$actions&&t.$scrollWrap.addClass("i-with-actions"),t.options.withScroll&&(t.scroll=new f.SidebarCustomScroll(t.$scrollWrap,t.$scrollWrapInner),t.scroll.scrolled.subscribe(null,function(){return t.trigger("scroll")})),t.$scrollWrap.css("overflow",""),t.$el.addClass("tv-dialog--popup i-closed i-hidden"),t.options.width&&t.$el.css({width:"calc(100% - 20px)","max-width":t.options.width}),t.$el.on("mousedown touchstart",t.toTop.bind(t)), +t.options.closeOnOutsideClick&&(t.on("beforeOpen",function(){setTimeout(function(){t.opened&&$(document).on("click.tv-popup-"+t.id,function(e){var i=$(e.target).closest(".js-dialog");(t.options.closeOnClickAtOtherDialogs||0===i.length)&&t.isEventOut(e)&&t.close()})},0)}),t.on("beforeClose",function(){return $(document).off("click.tv-popup-"+t.id)})),t.on("change:zIndex",function(){t.$el.css("z-index",t.zIndex)}),t.on("destroy",function(){var e=function(){t.$el.remove()};t.opened?(t.close(),setTimeout(e,u.dur/2)):e()}),t}return a(e,t),c(e,[{key:"open",value:function(){var t=this;return this.opened?this:(this.opened=!0,this.trigger("beforeOpen",[this]),this.$el.appendTo(this.options.$wrap).removeClass("i-hidden").css(function(){var e,i,o,n,r;return t.calcHeight(),e=v.height(),i=v.width(),o=t.$el.height(),n=t.$el.width(),r=t.options.position,r||(r={top:e/2-o/2,left:i/2-n/2}),r.top>e-o&&(r.top=e-o),r.left>i-n&&(r.left=i-n),r}()),this.focus(),this.toTop(),this._doOpenAnimation().then(function(){t.opened&&(t.$el.removeClass("i-closed"),t.options.draggable&&((0,m.lazyJqueryUI)(t.$el).draggable({handle:".js-dialog__drag",cancel:"input, textarea, button, select, option, .js-dialog__no-drag, .js-dialog__close",containment:"window",cursor:"-webkit-grabbing"}),t.$el.find(".js-dialog__drag").addClass("tv-dialog__grab")),t.trigger("afterOpen",[t]))}),v.on("resize.tv-popup-"+this.id,function(){t.calcHeight(),t.fixPos()}),this)}},{key:"close",value:function(){var t=this;if(this.opened)return this.trigger("beforeClose",[this]),this.$el.addClass("i-closed"),this.opened=!1,this._doCloseAnimation().then(function(){t.opened||((0,m.lazyJqueryUI)(t.$el).draggable("destroy"),t.$el.addClass("i-hidden").detach(),g.css("cursor","auto"),t.trigger("afterClose",[t]),t.options.destroyOnClose&&t.destroy())}),v.off("resize.tv-popup-"+this.id),this}},{key:"hide",value:function(){this.$el.addClass("i-hidden")}},{key:"show",value:function(){this.$el.removeClass("i-hidden")}},{key:"fixPos",value:function(){var t=this.$el[0].getBoundingClientRect(),e={};t.bottom>p.default.height-10&&(e.top=p.default.height-10-t.height,e.top<10&&(e.top=10)),t.right>p.default.width-10&&(e.left=p.default.width-10-t.width,e.left<10&&(e.left=10)),(e.top||e.left)&&this.$el.css(e)}},{key:"calcHeight",value:function(){var t,e,i=this.$el[0].getBoundingClientRect(),o=this.$scrollWrapInner[0].getBoundingClientRect(),n=this.$scrollWrap[0].getBoundingClientRect(),r=this.options.height&&this.options.heightr)&&(r-=i.height-n.height,r<60&&(r=60),this.$scrollWrap.css({height:r})),this.options.withScroll&&this.scroll.resize(),e=r\n\t\t\t\t'+i+'\n\t\t\t\t\n\t\t\t'),this._autocomplete=new r.Autocomplete({el:this._$field.find("tv-autocomplete").get(0),source:new r.ArraySource(c),textField:this._textField,maxLength:s}),this._preventDialogEvents()}return n(t,[{key:"appendTo",value:function(t){t.append(this._$field)}},{key:"focus",value:function(){this._autocomplete.input.focus()}},{key:"select",value:function(){this._autocomplete.input.focus(),this._autocomplete.input.select()}},{key:"_preventDialogEvents",value:function(){var t=this,e=function(t){return t.stopPropagation()};this._autocomplete.stream.addListener(r.events.BEFORE_OPEN_MENU,function(){t._$field.on("keypress keyup",e)}),this._autocomplete.stream.addListener(r.events.AFTER_CLOSE_MENU,function(){t._$field.off("keypress keyup",e)})}},{key:"value",get:function(){return this._autocomplete.value[this._valueField]}},{key:"name",get:function(){return this._name}},{key:"valid",get:function(){return!!this._autocomplete.input.value}},{key:"error",get:function(){return this._error}}]),t}()},function(t,e,i){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var r,s,a;Object.defineProperty(e,"__esModule",{value:!0}),e.CheckboxField=void 0,r=function(){function t(t,e){var i,o;for(i=0;i")}return r(t,[{ +key:"appendTo",value:function(t){t.append(this._checkboxView.$el)}},{key:"focus",value:function(){}},{key:"select",value:function(){}},{key:"value",set:function(t){this._checkboxView.checked=t},get:function(){return this._checkboxView.checked}},{key:"name",get:function(){return this._name}},{key:"valid",get:function(){return!0}},{key:"error",get:function(){return this._error}}]),t}()},function(t,e,i){"use strict";function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var s,a;Object.defineProperty(e,"__esModule",{value:!0}),e.InputFieldRegExp=void 0,s=function(){function t(t,e){var i,o;for(i=0;i\n\t\t\t\t'+o+'\n\t\t\t\t\n\t\t\t'),this._$input=this._$field.find("input"),this._error=a}return o(t,[{key:"appendTo",value:function(t){t.append(this._$field)}},{key:"focus",value:function(){return this._$input.focus()}},{key:"select",value:function(){return this.focus().select()}},{key:"value",set:function(t){this._$input.val(t)},get:function(){return this._$input.val()}},{key:"name",get:function(){return this._name}},{key:"valid",get:function(){return!!this._$input.val().trim()}},{key:"error",set:function(t){this._error=t},get:function(){return this._error}}]),t}()},function(t,e,i){"use strict";function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var n,r +;Object.defineProperty(e,"__esModule",{value:!0}),e.SaveRenameDialog=void 0,n=function(){function t(t,e){var i,o;for(i=0;i0&&void 0!==arguments[0]?arguments[0]:{},i=e.fields,n=e.title,r=void 0===n?"":n,s=e.destroyOnClose,a=void 0===s||s,l=e.modal,c=void 0!==l&&l;o(this,t),this._$form=$("
"),this._fields=i,this._appendFieldsToForm(),this._title=r,this._destroyOnClose=a,this._modal=c}return n(t,[{key:"setField",value:function(t,e){this._fields.find(function(e){return e.name===t}).value=e}},{key:"show",value:function(){var t=this,e=this._createDialog(),i=new Promise(function(i){e.on("action:submit",function(e){return t._onSubmit(e,i)})});return e.open(),this._fields[0].select(),i}},{key:"_appendFieldsToForm",value:function(){var t=this;this._fields.forEach(function(e){e.appendTo(t._$form)})}},{key:"_createDialog",value:function(){return(0,r.createDialog)({type:this._modal?"modal":"popup",title:this._title,content:this._$form,actionsWrapTemplate:'
',width:470,destroyOnClose:this._destroyOnClose,actions:[{name:"submit",type:"primary",text:$.t("Save"),key:13,addClass:"js-submit-button"},{name:"cancel",type:"default",text:$.t("Cancel"),method:"close",addClass:"js-cancel-button"}]})}},{key:"_onSubmit",value:function(t,e){var i=this._validate();i?(t.error(i.error),i.focus()):(e(this._collectValues(),t),t.close())}},{key:"_validate",value:function(){return this._fields.find(function(t){return!t.valid})}},{key:"_collectValues",value:function(){return this._fields.reduce(function(t,e){return t[e.name]=e.value,t},{})}}]),t}()},,function(t,e){"use strict";function i(t,e){var i=function i(o){var n=i.cache,r=""+(e?e.apply(this,arguments):o);return n.hasOwnProperty(r)||(n[r]=t.apply(this,arguments)),n[r]};return i.cache={},i}Object.defineProperty(e,"__esModule",{value:!0}),e.default=i,t.exports=e.default},function(t,e){"use strict";function i(t,e,i){var o,n,r,s,a=null,l=0;return i=i||{},s=function(){l=!1===i.leading?0:Date.now(),a=null,r=t.apply(o,n),a||(o=n=null)},function(){var c,h=Date.now();return l||!1!==i.leading||(l=h),c=e-(h-l),o=this,n=arguments,c<=0||c>e?(a&&(clearTimeout(a),a=null),l=h,r=t.apply(o,n),a||(o=n=null)):a||!1===i.trailing||(a=setTimeout(s,c)),r}}Object.defineProperty(e,"__esModule",{value:!0}),e.default=i,t.exports=e.default},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return t.reduce(function(t,e,i){return~t.indexOf(e)||t.push(e),t},[])},t.exports=e.default},,,,,,,,,,,,function(t,e){t.exports={14851:{},custom_items_in_context_menu:{},websocket_connection:{},countdown:{},symbol_search_parser_mixin:{},show_pro_features:{},daily_timeframe_suffix:{},symbollist_context_menu:{}, +pay_attention_to_ticker_not_symbol:{},graying_disabled_tools_enabled:{},update_study_formatter_on_symbol_resolve:{},constraint_dialogs_movement:{},same_data_requery:{},phone_verification:{},show_trading_notifications_history:{},show_interval_dialog_on_key_press:{},header_interval_dialog_button:{subsets:["show_interval_dialog_on_key_press"]},header_fullscreen_button:{},header_symbol_search:{},symbol_search_hot_key:{},header_resolutions:{subsets:["header_interval_dialog_button"]},header_chart_type:{},header_settings:{},header_indicators:{},header_compare:{},header_undo_redo:{},header_screenshot:{},header_saveload:{},header_saveload_to_the_right:{},study_on_study:{},header_widget:{subsets:["header_widget_dom_node","header_symbol_search","header_resolutions","header_chart_type","header_settings","header_indicators","header_compare","header_undo_redo","header_fullscreen_button","compare_symbol"]},compare_symbol:{subsets:["header_compare"]},property_pages:{subsets:["show_chart_property_page","chart_property_page"]},show_chart_property_page:{},chart_property_page:{subsets:["chart_property_page_style","chart_property_page_scales","chart_property_page_background","chart_property_page_timezone_sessions","chart_property_page_events_alerts","chart_property_page_trading","chart_property_page_template_button"]},disable_userlink_popup:{},left_toolbar:{},keep_left_toolbar_visible_on_small_screens:{},hide_left_toolbar_by_default:{},control_bar:{},widget_logo:{},timeframes_toolbar:{},edit_buttons_in_legend:{subsets:["show_hide_button_in_legend","format_button_in_legend","study_buttons_in_legend","delete_button_in_legend"]},hide_legend_by_default:{},show_hide_button_in_legend:{},format_button_in_legend:{},study_buttons_in_legend:{},delete_button_in_legend:{},pane_context_menu:{},scales_context_menu:{},legend_context_menu:{},context_menus:{subsets:["pane_context_menu","scales_context_menu","legend_context_menu","objects_tree_context_menu"]},items_favoriting:{},save_chart_properties_to_local_storage:{},use_localstorage_for_settings:{subsets:["items_favoriting","save_chart_properties_to_local_storage"]},plain_studymarket:{},trading_watch_positions:{},disable_resolution_rebuild:{},border_around_the_chart:{},charting_library_debug_mode:{},cl_feed_return_all_data:{},log_data_request_time:{},saveload_requires_authentication:{},saveload_storage_customization:{},new_chart_creation_available:{},volume_force_overlay:{},create_volume_indicator_by_default:{},create_volume_indicator_by_default_once:{},saved_charts_count_restriction:{},lean_chart_load:{},stop_study_on_restart:{},star_some_intervals_by_default:{},predefined_items_only_may_be_starred:{},move_logo_to_main_pane:{},show_logo_on_all_charts:{},link_to_tradingview:{},logo_without_link:{},right_bar_stays_on_scroll:{},chart_content_overrides_by_defaults:{},show_dialog_on_snapshot_ready:{},snapshot_trading_drawings:{},allow_supported_resolutions_set_only:{},study_market_minimized:{},widgetbar_tabs:{},collapsible_header:{},show_extension_popup:{},study_templates:{}, +side_toolbar_in_fullscreen_mode:{},remove_library_container_border:{},whotrades_auth_only:{},support_multicharts:{},display_market_status:{},display_data_mode:{},show_chart_warn_message:{},datasource_copypaste:{},line_tool_templates:{},expand_symbolsearch_items:{},symbol_search_three_columns_exchanges:{},symbol_search_flags:{},symbol_search_limited_exchanges:{},footer_share_buttons:{},footer_bugreport_button:{},footer_publish_idea_button:{},footer_screenshot:{},footer_showdom_button:{},text_notes:{},symbol_info:{},no_bars_status:{},clear_bars_on_series_error:{},hide_loading_screen_on_series_error:{},seconds_resolution:{},dont_show_boolean_study_arguments:{},hide_last_na_study_output:{},price_scale_always_last_bar_value:{},study_dialog_search_control:{},uppercase_instrument_names:{},cqg_trading_confirm_risks:{},trading_notifications:{},chart_crosshair_menu:{},japanese_chart_styles:{},linetoolpropertieswidget_template_button:{},use_overrides_for_overlay:{},timezone_menu:{},main_series_scale_menu:{},show_login_dialog:{},remove_img_from_rss:{},bars_marks:{},chart_scroll:{},chart_zoom:{},source_selection_markers:{},high_density_bars:{},open_account_manager:{},onchart_messages:{},custom_resolutions_box:{},referral_program_for_widget_owners:{},referral_program_policy_aggressive:{subsets:["referral_program_policy_passive","referral_program_policy_normal"]},referral_program_policy_normal:{subsets:["referral_program_policy_passive","header_fake_features_buttons","custom_resolutions_box"]},tv_production:{ +subsets:["show_pro_features","countdown","symbol_search_parser_mixin","symbollist_context_menu","websocket_connection","header_fullscreen_button","header_widget","dont_show_boolean_study_arguments","left_toolbar","control_bar","timeframes_toolbar","symbol_search_hot_key","context_menus","edit_buttons_in_legend","uppercase_instrument_names","use_localstorage_for_settings","saveload_requires_authentication","volume_force_overlay","new_chart_creation_available","saved_charts_count_restriction","create_volume_indicator_by_default","create_volume_indicator_by_default_once","charts_auto_save","right_bar_stays_on_scroll","save_old_chart_before_save_as","chart_content_overrides_by_defaults","alerts","show_dialog_on_snapshot_ready","show_extension_popup","header_saveload","header_saveload_to_the_right","header_layouttoggle","datasource_copypaste","show_saved_watchlists","watchlists_from_to_file","add_to_watchlist","property_pages","support_multicharts","display_market_status","display_data_mode","show_chart_warn_message","support_manage_drawings","widgetbar_tabs","study_templates","collapsible_header","line_tool_templates","caption_buttons_text_if_possible","footer_share_buttons","footer_screenshot","footer_publish_idea_button","text_notes","trading_watch_positions","symbol_info","linetoolpropertieswidget_template_button","cqg_trading_confirm_risks","trading_notifications","symbol_search_three_columns_exchanges","symbol_search_flags","symbol_search_limited_exchanges","phone_verification","chart_events","onchart_messages","custom_resolutions_box","compare_symbol","timezone_menu","main_series_scale_menu","chart_crosshair_menu","study_on_study","japanese_chart_styles","show_login_dialog","dome_widget","bars_marks","chart_scroll","chart_zoom","screener_alerts","show_trading_notifications_history","source_selection_markers","go_to_date"]},browser_extension:{subsets:["disable_userlink_popup","show_pro_features","show_saved_watchlists","display_market_status","display_data_mode","show_chart_warn_message","widgetbar_tabs","show_login_dialog"]},widget:{ +subsets:["show_pro_features","countdown","symbol_search_parser_mixin","symbollist_context_menu","websocket_connection","uppercase_instrument_names","left_toolbar","control_bar","timeframes_toolbar","symbol_search_hot_key","context_menus","edit_buttons_in_legend","use_localstorage_for_settings","saveload_requires_authentication","volume_force_overlay","create_volume_indicator_by_default","create_volume_indicator_by_default_once","right_bar_stays_on_scroll","show_dialog_on_snapshot_ready","dont_show_boolean_study_arguments","header_widget_dom_node","header_symbol_search","header_resolutions","header_chart_type","header_compare","header_indicators","star_some_intervals_by_default","display_market_status","display_data_mode","show_chart_warn_message","symbol_info","linetoolpropertieswidget_template_button","symbol_search_three_columns_exchanges","symbol_search_flags","symbol_search_limited_exchanges","widgetbar_tabs","compare_symbol","timezone_menu","main_series_scale_menu","show_login_dialog","plain_studymarket","japanese_chart_styles","bars_marks","chart_scroll","chart_zoom","source_selection_markers","property_pages"]},bovespa_widget:{subsets:["widget","header_settings","chart_property_page_timezone_sessions","linetoolpropertieswidget_template_button"]},charting_library_base:{subsets:["14851","allow_supported_resolutions_set_only","border_around_the_chart","collapsible_header","constraint_dialogs_movement","context_menus","control_bar","create_volume_indicator_by_default","custom_items_in_context_menu","datasource_copypaste","daily_timeframe_suffix","uppercase_instrument_names","display_market_status","edit_buttons_in_legend","graying_disabled_tools_enabled","header_widget","header_saveload","header_saveload_to_the_right","dont_show_boolean_study_arguments","lean_chart_load","left_toolbar","trading_watch_positions","link_to_tradingview","pay_attention_to_ticker_not_symbol","plain_studymarket","predefined_items_only_may_be_starred","refresh_saved_charts_list_on_dialog_show","right_bar_stays_on_scroll","saveload_storage_customization","show_dialog_on_snapshot_ready","stop_study_on_restart","study_market_minimized","timeframes_toolbar","symbol_search_hot_key","update_study_formatter_on_symbol_resolve","update_timeframes_set_on_symbol_resolve","use_localstorage_for_settings","volume_force_overlay","widget_logo","countdown","use_overrides_for_overlay","trading_notifications","compare_symbol","symbol_info","timezone_menu","main_series_scale_menu","study_dialog_search_control","chart_crosshair_menu","create_volume_indicator_by_default_once","bars_marks","chart_scroll","chart_zoom","source_selection_markers","property_pages","go_to_date","adaptive_logo"]},charting_library:{subsets:["charting_library_base","header_screenshot"]},static_charts_service:{subsets:["charting_library","disable_resolution_rebuild","log_data_request_time","same_data_requery"]},trading_terminal:{ +subsets:["charting_library_base","footer_showdom_button","support_multicharts","header_layouttoggle","japanese_chart_styles","chart_property_page_trading","footer_screenshot","add_to_watchlist","open_account_manager","show_dom_first_time"]},cqg_terminal:{subsets:["charting_library_base","chart_property_page_trading","expand_symbolsearch_items","caption_buttons_text_if_possible","clear_bars_on_series_error","no_bars_status","hide_loading_screen_on_series_error","support_multicharts","header_layouttoggle","same_data_requery","footer_bugreport_button","footer_showdom_button","dome_widget","show_dom_first_time","japanese_chart_styles","remove_img_from_rss","footer_screenshot","add_to_watchlist"]},amp_terminal:{subsets:["cqg_terminal"]}}},,,function(t,e,i){"use strict";var o=i(315).TimePointIndexSearchMode,n=i(76).UndoHistory,r=i(82),s=i(80),a=i(734),l=i(390),c=i(388),h=c.ChartApiInterface,u=c.HandlerInfo,d=i(34).requireFullInterfaceImplementation,p=i(13).getLogger("Chart.ChartApiLocal"),_=i(71);TradingView.STUDY_COUNT_LIMIT=120,JSServer.ChartApi=function(t){this._notificationHandlers={},this._sessions={},this.studyCounter=0,this._connected=!1,this._enabled=!1,this._studyEngine=new a(t),this._callbacks={},this._symbolIdCache={},this._seriesIdCache={},this._recentSeriesId={},this._enableLogging=!1,this._enabledMoreBarsRequest=!0,this._serverTimeOffset=0,this._autosaveTimeoutSeconds=5;var e=this;this._studyEngine.on("configuration_received",function(){e._fireEvent("configuration_received")}),this._studyEngine.on("realtime_tick",function(t){var i={time:t.value[0]/1e3,open:t.value[1],high:t.value[2],low:t.value[3],close:t.value[4],volume:t.value[5]};e._fireEvent("realtime_tick",i,!0)}),this._autosavePaused=void 0,this._setupAutoSave()},JSServer.ChartApi.prototype._makeSymbolKey=function(t,e){if(!t||!e)throw Error("incorrect identifiers");return t+"_"+e},JSServer.ChartApi.prototype._makeSeriesKey=function(t,e){if(!t||!e)throw Error("incorrect identifiers");return t+"_"+e},JSServer.ChartApi.prototype.destroy=function(){this._studyEngine.destroy(),this._studyEngine=null},JSServer.ChartApi.prototype.purgeCache=function(t){this._symbolIdCache={},this._studyEngine.purgeCache(),this._studyEngine.purgeRangeExtensionData(),this._studyEngine.purgeDataCache()},JSServer.ChartApi.prototype.setAdditionalBarsRequestEnabled=function(t){this._enabledMoreBarsRequest=t},JSServer.ChartApi.prototype.setTimeFramesList=function(t){var e,i,o,n,r,a,l,c;for(this._timeframes=[],e=/(\d+)(\w+)/,i=0;ia);++i);return l-i},JSServer.ChartApi.prototype._applyRange=function(t,e,i,o,n){var r,s,a,l=chartWidget.model().mainSeries().bars().size();0!==l&&(r=this._exactBarsCountOfTimeFrame(n,this._symbolIdCache[this._makeSymbolKey(t,e)].info),s=Math.max(0,l-1-r),a=Math.max(s,l-1),TradingView.ChartapiMessagerInstances[t].onSeriesTimeframeUpdate(i,o,s,a))},JSServer.ChartApi.prototype.modifySeries=function(t,e,i,o,n,r,a){var l,c;i=i||"",l=this._seriesIdCache[t+"_"+e]?this._seriesIdCache[t+"_"+e].resolution:void 0,TradingView.ChartapiMessagerInstances[t].setResolution(s.Symbol.parsePeriod(n).pureResolution),c=this,this._notificationHandlers[t][e]=new u(function(a){var h,u;"series_completed"===a.method&&(h=s.Symbol.parsePeriod(l),u=s.Symbol.parsePeriod(n),u.range&&h.range!==u.range&&c._applyRange(t,o,e,i,u.range)),r(a)},e),this._recentSeriesId[t]=e,this._studyEngine.updateSeriesTurnaround(t,e,i),a&&(this._seriesIdCache[this._makeSeriesKey(t,a)]=null),this._seriesIdCache[this._makeSymbolKey(t,e)]={symbolId:o,resolution:n,turnaround:i},this._doWhenSeriesSymbolIdIsReady(t,e,function(e){c._studyEngine.purgeRangeExtensionData(t),c._studyEngine.recreateSources(e.name,n,t,!0)})},JSServer.ChartApi.prototype.requestMoreData=function(t,e,i,o){if(this._enabledMoreBarsRequest){var n=this;setTimeout(function(){n._notificationHandlers[t][e]=new u(o,e),n._studyEngine.extendSeriesRange(e,t,i)})}},JSServer.ChartApi.prototype.setStudiesAccessController=function(t){this.studiesAccessController=t},JSServer.ChartApi.prototype.setWatchlistSettings=function(t){this._watchlistSettings=t}, +JSServer.ChartApi.prototype.allStudiesMetadata=function(){return this._studyEngine.studiesMetadata()},JSServer.ChartApi.prototype.requestMetadata=function(t,e,i){this._notificationHandlers[t][e]=new u(i,e);var o=this.studiesAccessController.getEnabledTools();TradingView.ChartapiMessagerInstances[t].onRequestMetadata(e,o)},JSServer.ChartApi.prototype.isCanCreateStudy=function(){return this.studyCountere?1:t=e||!i._shouldExtrapolateMore()?null:s.extrapolateBarsFrontByCount(i.newBarBuilder(t),o,e)})},a.prototype._ensureExtrapolatedToTime=function(t,e){var i=this;return this._extrapolateData(t,function(o){var n,r;return o>=e||!i._shouldExtrapolateMore()?null:(n=2e3,r=s.extrapolateBarsFrontToTime(i.newBarBuilder(t),o,e,n),r[r.length-1]t?this._extrapolatedBarsCache=[]:this._lastRealBarTime!==e&&this._extrapolatedBarsCache.shift(t-this._lastRealBarIndex)),this._lastRealBarIndex=t,this._lastRealBarTime=e;for(var i=0;i=0&&!e()&&setTimeout(function(){try{var e=t();window.ga&&0!==e&&Math.random()>.98&&window.ga("send","event","s",e)}catch(t){}},3e4)}},function(t,e,i){(function(e){"use strict";var o=i(82),n={},r=function(t,i,r){function s(){var t={};t.symbolname=_,t.status="ok",t.values={},t.values.current_session=d,n[_]=d,TradingView.ChartapiMessagerInstances[f].onQuotesData([f].concat([t]))}function a(t,i,n){var r=e.get_timezone(i);c=(new o.Session).init(r,t),h=n,m=setTimeout(l,6e4),l(),s()}function l(){var t,e;if(c){if(h)return void(d="out_of_session");t=o.isTradingNow(new Date,c),e=t?"market":"out_of_session",e!==d&&(d=e,s())}}var c,h,u={},d=n[r]||"out_of_session",p=!1,_=r,f=i,m=null;return t.resolveSymbol(r,function(t){p||a(t.session,t.timezone,t.expired)},function(){}),u.stop=function(){p=!0,m&&clearTimeout(m)},u.marketStatus=function(){return d},u};t.exports=r}).call(e,i(67))},function(t,e,i){(function(e){"use strict";var o=i(1100).HeikenAshi,n=i(57).Interval,r=function(){function t(t){this.host=t,this.cache={}}function r(t){var e=t.indexOf(",");return-1===e?t:t.slice(0,e)}function s(t,e,i,o,n){return n+t+e+i+(a(o)?"_":"")}function a(t){return t.has_empty_bars||t.force_session_rebuild}function l(t){if(0!==t.indexOf("="))return{symbol:t};var e;try{e=JSON.parse(t.slice(1))}catch(e){return{symbol:t}}return e.type&&(0===e.type.indexOf("BarSetHeikenAshi@tv-basicstudies-")?e.builder=new o:console.error("unknown builder type: "+e.type)),"string"!=typeof e.symbol&&(e.session=e.symbol.session||e.session,e.symbol=e.symbol.symbol),e}function c(e){t.instance=new t(e),p.setupFeed(t.instance)} +var h,u,d,p=i(80),_=i(82),f=p.Symbol,m=p.StudyEngine,g=p.BarBuilder,v=p.BarSet;return t.prototype.getCache=function(t){return this.cache[t]},t.prototype.putCache=function(t,e){this.cache[t]=e},t.prototype.subscribe=function(t,e,i,o,n,r,a,l){var c=s(t,e,i,r,a),h=this.getCache(c);return h||(h=this.createItem(t,e,i,r,l,a),this.putCache(c,h)),h.listeners.addListener(o,n),{key:c,listener:o}},t.prototype.unsubscribe=function(t){var e=this.getCache(t.key);e&&e.listeners.removeListener(t.listener)},t.prototype.removeUnused=function(){var t,e,i,o,n,r=[];for(t in this.cache)this.cache[t]&&(e=this.cache[t],0===e.listeners.listenersCount()&&r.push(t));if(0!==r.length){for(i=0;i=0;r--)if(s=+n[r],o%s==0)return s+(a.isSeconds?"S":"");return""}return o+(a.isSeconds?"S":"")},t.prototype.createItem=function(t,e,i,o,s,c){var p,_,f,m,v,y,b=new d,S=l(t);return S.builder?new u(b,S.symbol,e,i,S.builder,o,s,c):(p=r(e),_=this.rebuildFrom(p,r(i),o),f=a(o),!n.isEqual(p,_)||f?(m=o.has_empty_bars,v=$.extend({},o),f&&(v.has_empty_bars=!1,v.force_session_rebuild=!1),new u(b,S.symbol,e,_,new g(e,m),v,s,c)):(y=S.session&&"extended"!==S.session,new h(b,S.symbol,e,i,y,this.host,o,s)))},h=function(t,e,i,o,n,s,a,l){this.listeners=t,this.host=s;var c=this;this.host.resolve(e,function(t){n&&t.regular_session&&(t.session=t.regular_session);var s=c.calculateFromTo(t,o||i,e,l);c.subs=c.host.subscribe(t,r(i),s,function(t){c.listeners.fire(t)},function(t){c.listeners.onError(t)})},function(t){c.listeners.onError(t)})},h.prototype._createDWMAligner=function(t,i){var o=e.get_timezone(i.timezone),n=new _.Session;return n.init(o,i.session),f.newBarBuilder(t,n,n)},h.prototype.stop=function(){this.subs&&this.host.unsubscribe(this.subs)},h.prototype.calculateFromTo=function(t,i,o,n){var r,s,a,l,c,h,u,d,p=f.parsePeriod(i),m=(new Date).valueOf(),g=t.expired?e.cal_to_utc(e.get_timezone(t.timezone),new Date(1e3*t.expiration_date))||m:m;return""===p.resolution?(s=p.interval,a="D"):"S"===p.resolution?(s=10*p.interval,a=""):(l="D"===p.resolution?1:"W"===p.resolution?5:30,s=12*l*p.interval,a="M"),p.range?(s=p.range.interval,a=p.range.resolution):this.host.calculateHistoryDepth&&(c=this.host.calculateHistoryDepth(i,a,s))&&(s=c.intervalBack||s,a=void 0===c.resolutionBack?a:c.resolutionBack),h=t.sessionString||t.session,r=_.alignPeriodsBack(h,a,s,1,g), +n&&n.getRangeExtensionTime&&(u=n.getRangeExtensionTime())&&(r=Math.min(1e3*u,r)),n&&n.getRangeExtensionCount&&(d=n.getRangeExtensionCount())>0&&(r=_.alignPeriodsBack(h,p.resolution,p.interval,d,r)),{from:r,to:g+6e4}},u=function(t,e,i,o,n,r,s,a){if(this.listeners=t,this.isRecalculated=!1,""===o)return console.error("unsupported resolution for rebuild: "+i),void this.listeners.onError("unsupported resolution for rebuild: "+i);this.symbolInfo=r;var l=this;this.engine=new m({tickerid:e,period:o,periodBase:i,body:n,sessionId:a,symbolInfo:r,rangeExtension:s,recalc:function(t,e){l._recalc(e)},out:function(t,e){l._out(t,e)},nonseriesOut:function(t,e){l._nonseriesOut(t,e)},setNoMoreData:function(){l.barset&&(l.barset.endOfData=!0)},onErrorCallback:function(t){l.listeners.onError(t)}})},u.prototype.stop=function(){this.engine?this.engine.stop():console.error("Internal library error 0x1")},u.prototype._recalc=function(t){this.isRecalculated&&console.error("recalc called twice!"),this.barset||(this.barset=new v(this.symbolInfo)),t&&(this.barset.nextTime=t.nextTime,this.barset.endOfData=t.endOfData),this.listeners.fire(this.barset),this.isRecalculated=!0},u.prototype._nonseriesOut=function(t,e){var i=Object.assign({},e);i.nonseries=!0,i.data=e.bars,delete i.bars,i.barsetSize=this.barset?this.barset.count():0,i.lastBar=this.barset?this.barset.bar(this.barset.count()-1):null,this.listeners.fire(i,!0)},u.prototype._out=function(t,e){var i,o,n,r,s,a,l,c=e[0];if(!isNaN(c)){if(i={time:c,open:e[1],high:e[2],low:e[3],close:e[4],volume:e[5],updatetime:e[6]},o=e[7],this.barset||(this.barset=new v(t.info)),(n=e[8])instanceof Array)for(r=0;re?1:t.value[0]=0&&e4*(7-i.spec.weekEndsCount()))p=u/7,d=p*(7-i.spec.weekEndsCount());else{for(_=0,f={},g=c;g.valueOf()<=h.valueOf();g=m.add_days_considering_dst(i.timezone,g,1))v=m.get_day_of_week(g),void 0===f[v]&&(f[v]=i.spec.isWeekEnd(v)),f[v]&&_++;d=u-_}if(e.kind()===n.DAYS)a=Math.ceil(d/e.multiplier());else{if(y=e.kind()===n.HOURS?60*e.multiplier()*60:e.kind()===n.SECONDS?e.multiplier():60*e.multiplier(),u<1&&(b=i.spec.findSessionEntry(m.get_day_of_week(c),m.get_minutes_from_midnight(c)),S=i.spec.findSessionEntry(m.get_day_of_week(h),m.get_minutes_from_midnight(h)),b===S))return Math.ceil((r-o)/y);v=i.spec.entries()[0].dayOfWeek(),w=60*i.spec.entries().reduce(function(t,e){return t+(e.dayOfWeek()===v?e.length():0)},0),a=Math.ceil(d*w/y)}}return a}function d(t,e,i,s,a){var l,c,h=new n(e),d=m.get_timezone(t.timezone),p=new o.Session;return p.init(d,t.session),l=r(t,e),i=l.alignTimeIfPossible(1e3*i)/1e3,s=l.alignTimeIfPossible(1e3*s)/1e3,i>=s?0:(c=u(t,h,p,i,s),c>=1e3?c:a.findDistanceInBars(i,s,t))}var p={},_="undefined"!=typeof window?window:e,f=i(80),m=_.PineJsCalendar?_.PineJsCalendar:i(67);return{createPointset:s,removePointset:a,broadcastPointsetsUpdates:c,tests:{approxBarsInterval:u,indexOfTime:h}}}();t.exports=r}).call(e,function(){return this}())},function(t,e,i){(function(e,o){"use strict";function n(t,i){var o=e.get_timezone(i.timezone),n=new f.Session;return n.init(o,i.session),u.Symbol.newBarBuilder(t,n,n)}function r(t,e){null!=t.graphicsCmds&&null!=t.graphicsCmds.create&&null!=t.graphicsCmds.create.vertlines&&t.graphicsCmds.create.vertlines.forEach(function(t){t.data.forEach(e)})}function s(t,e){var i,o,n,r,s=t.length,a=e.length,l=0;for(i=0;i=a){n=s-i,console.warn("Times array contains times which is more than last series bar time. Excess count "+n);break}r=e[l],o!==r.value[0]&&console.warn("Times array contains time which does not presented in series data "+o),t[i]=r.index}}function a(t,e){var i,o;null!==e&&0!==e.length&&(i={},r(t.data,function(t){i[t.time]=!0}),o=Object.keys(i).map(Number).sort(function(t,e){return t-e}),o.forEach(function(t,e){i[t]=e}),r(t.data,function(t){t.index=i[t.time]}),s(o,e),t.indexes=o)}var l,c,h=i(730),u=i(80),d=i(731),p=i(727),_=i(733),f=i(82),m=i(57).Interval,g=i(43);i(264),i(390),l=i(1098).DatafeedRequestsCachedProcessor,c=function(t){function e(t,e){return!o.enabled("disable_resolution_rebuild")&&m.isDWM(t)?n(t,e):null}function i(t,e,i){return function(o){var r,s;o&&o.count()&&(r=n(e,t),s=1e3*c.getCurrentUTCTime(),r.moveTo(s),r.indexOfBar(s)>=0&&o.setLastBarClosed(!1)),i(o)}}function r(t,e,o,n,r){return c._cachedDatafeed.subscribe(t,e,o,i(t,e,n),r)}function s(t){return c._cachedDatafeed.unsubscribe(t)}function a(t,e,i){c.resolveSymbol(t,e,i)}var c=this;this._studiesCache={},this._sessionsLastDataCache={},this._metainfoCache=[],this._barsCoefficientsCache={},this._extrapolationManager=p,this._externalDatafeed=t, +this._datafeedConfiguration=null,this._marketStatusWatchers={},this._resolveRequests={},this._callbacks={},this._serverTimeOffset=0,c._logMessage("Datafeed settings received: {0}".format(JSON.stringify(window.configurationData))),c._datafeedConfiguration=c._adoptConfigurationData(window.configurationData),c._fireEvent("configuration_received"),c._externalDatafeed.getServerTime&&c._externalDatafeed.getServerTime(function(t){c._serverTimeOffset=t-(new Date).valueOf()/1e3}),this._pointsetsManager=_,this._rangeExtensionData={},this._quotesInfo=[],this._depthInfo=[],this._fullNameSymbolInfoMap={},this._endOfData={},this._computeStudyCounter=0,this._createDWMAligner=e,this._cachedDatafeed=new l(t,e),this._extendedRange=function(t){return c._rangeExtensionData[t]&&c._rangeExtensionData[t].summary},this._extendedTime=function(t){return c._rangeExtensionData[t]&&c._rangeExtensionData[t].time},d.setupFeed({resolve:a,subscribe:r,unsubscribe:s,calculateHistoryDepth:this._externalDatafeed.calculateHistoryDepth?this._externalDatafeed.calculateHistoryDepth.bind(this._externalDatafeed):void 0})},c.prototype._barsCoefficients=function(t,e){if(0!==t.indexOf("="))return{};var i=t+e;return this._barsCoefficientsCache[i]||(this._barsCoefficientsCache[i]={}),this._barsCoefficientsCache[i]},c.prototype.destroy=function(){this._cachedDatafeed.destroy(),this._externalDatafeed=null},c.prototype.purgeCache=function(){this._endOfData={},this._resolveRequests={}},c.prototype.purgeDataCache=function(){this._cachedDatafeed.purgeCache()},c.prototype._logMessage=function(t){o.enabled("charting_library_debug_mode")&&console.log(t)},c.prototype._extendRange=function(t,e){this._rangeExtensionData[t]||(this._rangeExtensionData[t]={}),void 0===this._rangeExtensionData[t].summary&&(this._rangeExtensionData[t].summary=0),this._rangeExtensionData[t].summary+=e},c.prototype.on=function(t,e){return this._callbacks.hasOwnProperty(t)||(this._callbacks[t]=[]),this._callbacks[t].push(e),this},c.prototype._fireEvent=function(t,e,i){var o,n;if(this._callbacks.hasOwnProperty(t)){for(o=this._callbacks[t],n=0;n_[r].value[0],s?_.push({index:_.length,value:[l].concat(c)}):_[r].value=[l].concat(c),d||a([_[_.length-1]],s,_.length,f,i)}var d=!0,p=this._computeStudyCounter++,_=[],f={},m=0,g=!1,v=this,y=function(a){var p;if(u.Symbol.parsePeriod(o).isIntraday&&!a.has_intraday)return void l("Unsupported resolution");if(p=new u.StudyEngine({tickerid:i,symbolInfo:a,period:o,body:e,sessionId:t,onErrorCallback:l,rangeExtension:{getRangeExtensionCount:v._extendedRange.bind(this,t),getRangeExtensionTime:v._extendedTime.bind(this,t)},input:function(t){return r[t]},out:function(t,e){h(t,e,a)},nonseriesOut:function(t,e){c(e,a)},setNoMoreData:function(){g=!0},recalc:function(t,e){d=!1,_.endOfData=g,s(_,m>0?f:void 0,a,e)}}),!v._studiesCache[t]||!v._studiesCache[t][n])throw Error("This should never happen");v._studiesCache[t][n].engine=p},b=function(t){l(t)},S=function(){return v._studiesCache[t]&&v._studiesCache[t][n]&&v._studiesCache[t][n].activeResolve===p};v._studiesCache[t][n].activeResolve=p,this.resolveSymbol(i,function(){S()&&y.apply(v,arguments)},function(){S()&&b.apply(v,arguments)})},c.prototype._createStudy=function(t,e,i,o,n,r,s){function l(t){var e,i,r;if(Array.isArray(t))return t;for(e=[],i=h._studiesCache[o][n].metainfo.inputs, +r=0;r0?1e3*d[0].value[0]:void 0,u.nextTime&&(!p||u.nextTime

=0&&h&&t.lastBar){for(u=[],d=0;d<=c;d++)u.push(s+.001*d);p=t.lastBar.slice(0),p[0]=p[0]/1e3,TradingView.ChartapiMessagerInstances[i].onTimescaleUpdate(n,r,[{index:h-1,value:p}],o,h-1,u),_=h+c,f=1e3*Math.trunc(u[c]),a(o,_,f),l.rebuildExtrapolatedData(i,o.full_name,e,o,f)}l._updateProjectionData(i,n,r,t)})},c.prototype.onMoreTickmarksRequested=function(t,e,i,o,n){this._extrapolationManager.storage(t,i.full_name,o).onTickmarksNeeded(i,n)},c.prototype.removePointset=function(t){this._pointsetsManager.removePointset(t)},c.prototype.rebuildExtrapolatedData=function(t,e,i,o,n){this._extrapolationManager.storage(t,o.full_name,i).rebuild(n,o)},c.prototype.createPointset=function(t,e,i,o,n,r){var s=this._extrapolationManager.storage(t,o.full_name,n);this._pointsetsManager.createPointset(e,i,n,r,s,o)},c.prototype.studiesMetadata=function(){return 0===this._metainfoCache.length&&(this._metainfoCache=JSServer.studyLibrary.map(function(t){return t.metainfo})),this._metainfoCache},c.prototype.searchSymbols=function(t,e,i,o){function n(t){r._logMessage("Symbol search response: {0}".format(JSON.stringify(t))),o(t)}this._logMessage("Symbol search requested: search string `{0}`, exchange: `{1}`, type `{2}`".format(t,e,i));var r=this;this._externalDatafeed.searchSymbols(t,e,i,n)},c.prototype.validateSymbolInfo=function(t){function e(t){console.warn("SymbolInfo validation: "+t)}var i,o;if((void 0===t.minmov||t.minmov<=0)&&e("minmov must be positive"),(void 0===t.pricescale||t.pricescale<=0)&&e("pricescale must be positive"),void 0!==t.name&&0!==t.name.length||e("name must be non-empty string"),void 0!==t.session&&0!==t.session.length||e("session must be non-empty string"),void 0!==t.timezone&&0!==t.timezone.length||e("timezone must be non-empty string"),void 0!==t.intraday_multipliers)if(i=t.intraday_multipliers,Array.isArray(i))for(o=0;o

'},TradingView.AlertLabel=function(){},TradingView.getDataVendorString=function(){},window.Telemetry={sendReport:function(){}},TradingView.study_VbPVisible=function(){},TradingView.study_VbPSessions=function(){},TradingView.study_ESD$TV_DIVIDENDS=function(){},TradingView.study_ESD$TV_SPLITS=function(){},TradingView.study_ESD$TV_EARNINGS=function(){},TradingView.MockupRequestedCache=function(t){t&&t([])},TradingView.MockupRequestedCache.invalidate=function(){},TradingView.StudyStrategy=function(){},TradingView.LinetoolTemplatesList=function(){},window.PublishedScript={suggest:function(){var t=$.Deferred();return t.resolve(null),t}}},function(t,e,i){(function(t){"use strict";function e(t){this._chartApi=t,this._sessionid="qs_"+o(),this._sessionstarted=!1}var o=i(64).randomHash;e.prototype.destroy=function(){this._sessionstarted&&(this._chartApi.quoteDeleteSession(this._sessionid),this._sessionid=null,this._sessionstarted=!1)},e.prototype.connected=function(){return this._chartApi.connected()},e.prototype.connect=function(t){this._globalHandler=t,this._chartApi.createSession(this._sessionid,this),this._chartApi.connect()},e.prototype.disconnect=function(){this._chartApi.disconnect()},e.prototype.quoteAddSymbols=function(t,e){t=[].concat(t),e&&e.forcePermission&&(t=t.concat({flags:["force_permission"]})),this._chartApi.quoteAddSymbols(this._sessionid,t)},e.prototype.quoteRemoveSymbols=function(t){this._chartApi.quoteRemoveSymbols(this._sessionid,t)},e.prototype.quoteFastSymbols=function(t){this._chartApi.quoteFastSymbols(this._sessionid,t)},e.prototype.quoteSetFields=function(t){this._chartApi.quoteSetFields(this._sessionid,t)},e.prototype.onMessage=function(t){switch(t.method){case"connected":this._sessionstarted||(this._chartApi.quoteCreateSession(this._sessionid),this._sessionstarted=!0);break;case"disconnected":this._sessionstarted=!1}this._globalHandler(t)},e.prototype.quoteHibernateAll=function(t){this._chartApi.quoteHibernateAll(this._sessionid)},TradingView.QuoteSession=e,void 0!==t&&t&&t.exports&&(t.exports=e)}).call(e,i(78)(t))},function(t,e,i){(function(t,e){"use strict";function o(e,i){this.options=$.extend({throttleTimeout:125},i),this._connected=!1,this._symbol_data={},this._subscriptions={},this._delayed_subscriptions=[],this.fieldsSent=new $.Deferred,this.onConnect=new t, +this.onDisconnect=new t,this._quoteApi=new n(ChartApiInstance),this._type=e||"full",this.fieldsSent=new $.Deferred,this._delayUpdateFastSymbols=s(this._updateFastSymbols,250),this._throttledSymbolData={},this._formatterValuesCache={},this._waitingForFormatters={},this._snapshotValuesCache={},this._waitingForSnapshot={},this.connect()}var n,r=i(41).PriceFormatter,s=i(374),a=i(710),l=i(711),c=i(64);n=i(736),o.prototype.destroy=function(){this._quoteApi.destroy(),this._quoteApi=null,this._connected=!1,this.onDisconnect.fire()},o.prototype.typeFields={},o.prototype.typeFields.simple=["ch","chp","current_session","description","local_description","language","exchange","fractional","is_tradable","lp","minmov","minmove2","original_name","pricescale","pro_name","short_name","type","update_mode","volume"],o.prototype.typeFields.simpleDetailed=[].concat(o.prototype.typeFields.simple,["ask","bid","fundamentals","high_price","is_tradable","low_price","open_price","prev_close_price","rch","rchp","rtc","status","basic_eps_net_income","beta_1_year","earnings_per_share_basic_ttm","industry","market_cap_basic","price_earnings_ttm","sector","volume"]),o.prototype.typeFields.full=[],o.prototype.connect=function(t){this._quoteApi.connect(this.quoteHandler.bind(this))},o.prototype.quoteHandler=function(t){var e=t.method,i=t.params;switch(e){case"connected":this._connected||(this._connected=!0,this.onConnected());break;case"quote_list_fields":break;case"quote_symbol_data":this._connected&&this.onSymbolData(i[0]);break;case"disconnected":this._connected&&(this._connected=!1,this.onDisconnect.fire())}},o.prototype.onConnected=function(){this.setFields();var t=Object.keys(this._symbol_data);t.length&&this._quoteApi.quoteAddSymbols(t,{forcePermission:!0}),this._delayed_subscriptions.forEach(function(t){this.subscribe.apply(this,t)},this),this._delayed_subscriptions=[],this.onConnect.fire()},o.prototype.setFields=function(){var t=o.prototype.typeFields[this._type];t&&t.length&&this._quoteApi.quoteSetFields(t),this.fieldsSent.resolve()},o.prototype.onSymbolData=function(t){var e=t.symbolname,i=this._throttledSymbolData[e];i||(i=this._throttledSymbolData[e]={fnDispatch:a(this.dipatchSymbolData.bind(this),this.options.throttleTimeout)}),i.cache?$.extend(!0,i.cache,t):i.cache=t,i.fnDispatch(e)},o.prototype._parseUpdateMode=function(t){var e=t.update_mode;e&&(e=e.match(/(delayed_streaming){1}(?:_([\d]+))?/))&&e[1]&&(e[2]&&(t.update_mode_seconds=+e[2]),t.update_mode=e[1])},o.prototype.dipatchSymbolData=function(t){var e,i,o=this._symbol_data[t],n=this._throttledSymbolData[t].cache;if(delete this._throttledSymbolData[t].cache,this._symbol_data[t]){$.extend(!0,o,n),o.values&&this._parseUpdateMode(o.values);for(e in this._subscriptions)i=this._subscriptions[e],i[t]&&i[t].forEach(function(t){t(o,n)})}},o.prototype.subscribe=function(t,e,i){var o,n;if(!this._connected)return void this._delayed_subscriptions.push(arguments);this._subscriptions[t]=this._subscriptions[t]||{},o=this._subscriptions[t],e=[].concat(e),n=[],e.forEach(function(t){ +this._symbol_data[t]?o&&o[t]||this._symbol_data[t].subscribers_count++:(this._symbol_data[t]={subscribers_count:1},n.push(t)),o[t]=o[t]||[],o[t].push(i),o[t].fast=!0,this._symbol_data[t]&&this._symbol_data[t].values&&i(this._symbol_data[t],this._symbol_data[t])},this),n.length&&(this._quoteApi.quoteAddSymbols(n,{forcePermission:!0}),this._delayUpdateFastSymbols())},o.prototype.unsubscribe=function(t,e,i){var o,n=this._subscriptions[t];n&&(n[e]&&i?(o=n[e].indexOf(i),~o&&n[e].splice(o,1),n[e].length||delete n[e]):delete n[e]),n&&0===Object.keys(n).length&&delete this._subscriptions[t],this._symbol_data.hasOwnProperty(e)&&(n&&!n[e]&&this._symbol_data[e].subscribers_count--,this._symbol_data[e].subscribers_count||(delete this._symbol_data[e],this._quoteApi.quoteRemoveSymbols([e]),this._delayUpdateFastSymbols()))},o.prototype.setFastSymbols=function(t,e){var i,o;if(this._subscriptions[t]){i=this._subscriptions[t];for(o in i)i[o].fast=-1!==e.indexOf(o)}this._delayUpdateFastSymbols()},o.prototype._updateFastSymbols=function(){if(this._connected){var t=this._fastSymbols();0===t.length?this._quoteApi.quoteHibernateAll():this._quoteApi.quoteFastSymbols(t)}},o.prototype._delayUpdateFastSymbols=o.prototype._updateFastSymbols,o.prototype._fastSymbols=function(){var t,e,i,o=[];for(t in this._subscriptions){e=this._subscriptions[t];for(i in e)e[i].fast&&o.push(i)}return o=l(o)},o.prototype.formatter=function(t){function e(t){return new r(t.pricescale,t.minmov,t.fractional,t.minmove2)}function i(t){return t&&null!=t.pricescale&&null!=t.minmov}var o,n=this;return this._waitingForFormatters[t]?this._waitingForFormatters[t]:(o=new Promise(function(o,r){if(n._formatterValuesCache[t])o(e(n._formatterValuesCache[t]));else{var s=c.guid();n.subscribe(s,[t],function(a){a.error&&(n._waitingForFormatters[t]=null,r(a.error)),i(a.values)&&(n._waitingForFormatters[t]=null,n._formatterValuesCache[t]=a.values,o(e(a.values)),n.unsubscribe(s,t))})}}),this._waitingForFormatters[t]=o,o)},o.prototype.snapshot=function(t){var e,i=this;return this._waitingForSnapshot[t]?this._waitingForSnapshot[t]:(e=new Promise(function(e,o){if(i._snapshotValuesCache[t])e(i._snapshotValuesCache[t]);else{var n=c.guid();i.subscribe(n,[t],function(r){r.error&&(i._waitingForSnapshot[t]=null,o(r.error));var s=r.values;s&&s.minmov&&s.pricescale&&s.description&&(i._waitingForSnapshot[t]=null,i._snapshotValuesCache[t]=s,e(s),i.unsubscribe(n,t))})}}),this._waitingForSnapshot[t]=e,e)},TradingView.QuoteSessionMultiplexer=o,void 0!==e&&e&&e.exports&&(e.exports=o)}).call(e,i(20),i(78)(t))},,function(t,e){"use strict";function i(t,e){this.array=[];for(var i in t)t[i].key=i,this.array.push(t[i]);this.rearrange(e)}i.prototype.rearrange=function(t){if("function"!=typeof t)throw Error("sort param is not a function");return this.array.sort(t)},i.byValue=function(t){return function(t,e){return t-e}},i.byField=function(t){return function(e,i){return e[t]>i[t]?1:e[t]").addClass("button iconed properties apply-common-tooltip").append($(i(1235)).attr({width:17,height:17})).appendTo(r),n.on(t,function(t){t.pageX=n.offset().left,t.pageY=n.offset().top+n.height()+15,TVSettings.getValue("properties_dialog.active_tab.chart")||TVSettings.setValue("properties_dialog.active_tab.chart",$.t("Style")),o.activeChartWidget.value().showChartProperties({_lastEvent:t}).then(function(t){null!==t&&(n.addClass("active"),t.on("destroy",function(){n.removeClass("active")}))})}),n.attr("title",$.t("Chart Properties"))),r},o.prototype._createCompareGroup=function(t,e,o){var r=this.createGroup("compare",{single:!0}),s=$('').append($(i(1202))).append($(''+$.t("Compare")+"")).appendTo(r);return this._compareButton=s,this._compareButton.on(o,function(t){var i,o;t.preventDefault(),i=new n(e),o=i.show(),s.addClass("active"),o.on("destroy",function(){s.removeClass("active")})}),this._compareButton.attr("title",$.t("Compare or Add Symbol")),r},o.prototype._createIndicatorsGroup=function(t,o){var n,a=this.createGroup("indicators",{single:!0,showInNarrowView:!0}) +;return this._indicatorsButton=$('').append($(i(1213))).append($(''+$.t("Indicators")+"")).appendTo(a),n="\n"+$.t("Slash",{context:"hotkey"}),e.enabled("charting_library_base")||e.enabled("widget")?this._indicatorsButton.attr("title",$.t("Indicators")+n):this._indicatorsButton.attr("title",$.t("Indicators, Fundamentals, Economy and Add-ons")+n),this._indicatorsButton.on(t,function(t){t.preventDefault(),window.studyMarket.isVisible()?window.studyMarket.hide():(window.studyMarket.show(),r.emit("indicators_dialog"))}),s.registerListener("IndicatorsHotkey",function(t){if(47===t.which&&$(t.target).is("body")&&!window.studyMarket.isVisible())return window.studyMarket.show(),window.studyMarket.selectSearchPage(),t.preventDefault(),t.stopPropagation(),!0}),window.studyMarket.visibilityChanged.subscribe(this,function(t){this._indicatorsButton.toggleClass("active",t)}),!TradingView.onWidget()&&e.enabled("study_templates")&&studyTemplates.appendMenuButtonTo(a),a},o.prototype.createGroup=function(t,e){e=e||{};var i=$("
").addClass("group");return e.right&&i.addClass("right"),e.single&&i.addClass("space-single"),t&&i.addClass("header-group-"+t),i},o.prototype.bindToModel=function(){var t=this._chartWidget.model();this._model=t},o.prototype.backButton=function(){return this._backButton},o.prototype.saveLoadWidget=function(){return this._saveLoad||a.logWarn("No save-load widget created in footer")},o.prototype.styleIconPosition=function(t){return"-%1px 0".replace("%1",19*~~t)},o.styleIconPosition=o.prototype.styleIconPosition,t.exports=o}).call(e,i(7))},function(t,e,i){(function(e){"use strict";function o(t){function o(){if(!t.favoriteChartTypes)return[];var e={Bars:p.STYLE_BARS,Candles:p.STYLE_CANDLES,Line:p.STYLE_LINE,Area:p.STYLE_AREA,"Heiken Ashi":p.STYLE_HEIKEN_ASHI,"Hollow Candles":p.STYLE_HOLLOW_CANDLES,Baseline:p.STYLE_BASELINE};return t.favoriteChartTypes.map(function(t){return e[t]})}var a,f,m,g,v,y,b,S,w,T,x,C,P,L,I,k,A,M,E,V,D;t=t||{},a=this._chartWidgetCollection=t.chartWidgetCollection,f=this._chartWidget=a.activeChartWidget.value(),m=this._onWidget=f.onWidget(),g=this,v=Modernizr.touch?"touchstart":"click",this._onResizeRequested=!1,this._resizerBridge=t.resizerBridge,this._$root=$(t.resizerBridge.body.value()),this._$root.addClass("header-chart-panel").html('
'),this._$sizer=this._$root.find(".header-chart-panel-sizer"),this._$content=this._$root.find(".header-chart-panel-content"),this._$left=this._$root.find(".left"),this._$right=this._$root.find(".right"),this._itemsVisibility=t.itemsVisibility,a.readOnly()||(e.enabled("header_symbol_search")&&(y=this.createGroup("symbol-search").appendTo(this._$left),b=$('
').appendTo(y),S=$('
').appendTo(b),w=null, +!e.enabled("charting_library_base")&&u.canShowSpreadActions()&&(T=$('
').appendTo(S),w=$('
').appendTo(T).on("mousedown",function(t){t.preventDefault()})),x=$('
').appendTo(S),C=$('').appendTo(x),u.bindToInput(C,{syncWithChartWidget:!0,spreadActions:w}),function(){var t=!1;C.on("focus",function(){t=!0,S.addClass("expanded")}),C.on("blur",function(){t=!1,setTimeout(function(){t||S.removeClass("expanded")},40)})}()),e.enabled("header_resolutions")&&(y=this.createGroup("intervals",{single:!0,showInNarrowView:!0}).appendTo(this._$left),P={onWidget:m,submenuBtnAddClass:"apply-common-tooltip"},t.interval_options&&$.extend(P,t.interval_options),e.enabled("items_favoriting")||$.extend(P,{notShowQuicks:!0,popupSpacing:1}),TradingView.isOnFeaturePage&&$.extend(P,{notShowQuicks:!0}),this._interval=new l(P),loginStateChange.subscribe(this,function(){window.is_authenticated&&this._interval.forceUpdate()}),e.enabled("charting_library_base")&&ChartApiInstance.on("configuration_received",function(){g._interval.forceUpdate()}),this._interval.element().addClass("no-first").appendTo(y),this._interval.onResize.subscribe(this,this._onInternalResize),t.favoriteIntervals&&this._interval.setUpStarredItemsList(t.favoriteIntervals)),e.enabled("header_chart_type")&&(L=[{id:p.STYLE_BARS,title:$.t("Bars")},{id:p.STYLE_CANDLES,title:$.t("Candles")},{id:p.STYLE_HOLLOW_CANDLES,title:$.t("Hollow Candles")},{id:p.STYLE_HEIKEN_ASHI,title:$.t("Heikin Ashi")},{id:p.STYLE_LINE,title:$.t("Line")},{id:p.STYLE_AREA,title:$.t("Area")},{id:p.STYLE_BASELINE,title:$.t("Baseline")}],I=o()||[1,4,5,6],TradingView.isOnFeaturePage&&!e.enabled("charting_library_base")&&(I=[]),m?I=[1,3]:e.enabled("collapsible_header")&&this._createMinimizeButton(t.headerChartPanel),this._style_list=new d("StyleWidget",L.map(function(t){return{id:t.id,title:t.title,svg:$(_[t.id]).attr({width:26,height:26}),favoriteButton:{title:t.title,addClass:"apply-common-tooltip"}}}),{defaultFavorites:I,addClass:"chart-style-widget",popupAddClass:"chart-style-popup",notShowQuicks:!e.enabled("items_favoriting"),showJustDefaultQuicks:I&&I.length&&e.enabled("predefined_items_only_may_be_starred"),tooltip:$.t("Bar's Style"),addTooltipClass:"apply-common-tooltip"}),a.activeChartStyle.subscribe(function(t){g._style_list.setValue(t)},{callWithLast:!0}),k=!1,g._style_list.onChange().subscribe(this,function(t){k||a.trySetChartStyleToActiveWidget(t)||(k=!0,g._style_list.setValue(a.activeChartStyle.value()),k=!1)}),g._style_list.onResize().subscribe(this,this._onInternalResize)),window.studyMarket=new c(a,window.user,{onWidget:m,fundamentalsOnly:t.fundamentalsOnly}),this._createLayout(t,g,v),this._resizerBridge.width.subscribe(this._onInternalResize.bind(this))),!this._chartWidget.readOnly()&&e.enabled("header_undo_redo")&&(this._undoRedo=new n(this._$left,this._chartWidget)),e.enabled("header_screenshot")&&(A="Alt+S", +M=this.createGroup("screenshot",{single:!0}).appendTo(this._$right),E=$('').append($(i(1238)).attr({class:"icon"})).addClass("apply-common-tooltip").attr("title",$.t("Take instant snapshot of your chart. No more Paint or other editors to save screenshots – simply click the button and copy the link of the picture.")+"\n"+A).appendTo(M),M.click(function(t){if(!e.enabled("show_dialog_on_snapshot_ready")){if(E.hasClass("process"))return;E.addClass("process"),h.subscribe("onScreenshotReady",function(t){E.removeClass("process")},null,!0)}f.actions().takeScreenshot.callbacks().fire(),t.preventDefault()})),e.enabled("header_saveload")&&(V=e.enabled("header_saveload_to_the_right")?this._$right:this._$left,y=this.createGroup("save-load",{single:!0,showInNarrowView:!0}).appendTo(V),D=$("
").addClass("save-load-buttons").appendTo(y),this._saveLoad=new s(D,a,{popupDirection:"down",popupReverse:!0}),this._saveLoad.onTitleSizeChanged.subscribe(this,this._onInternalResize),TradingView.isOnFeaturePage&&this._saveLoad.hideTitle()),e.enabled("header_widget_dom_node")||$(".header-chart-panel").css("display","none"),f.withModel(this,r.prototype.bindToModel),this._resizerBridge.availWidth.subscribe(this._onAvailSizeChange.bind(this)),this._resizerBridge.availHeight.subscribe(this._onAvailSizeChange.bind(this)),this._onAvailSizeChange(),this._onInternalResize()}var n=i(819),r=i(744),s=i(1130).SaveLoadWidget,a=i(753),l=i(398),c=i(812),h=i(43),u=i(104),d=i(474).FavoredList,p=i(85),_=i(397);inherit(o,r),o.prototype.saveLoadWidget=function(){return this._saveLoad},o.prototype._onAvailSizeChange=function(){var t=this._resizerBridge.availWidth.value()<=520||this._resizerBridge.availHeight.value()<=250;!!this._compactMode!==t&&(this._compactMode=t,this._$root.toggleClass("header-chart-panel--compact",t),this._onInternalResize())},o.prototype.addButton=function(t,e){(e?this._$left:this._$right).append(t),this._onInternalResize()},o.prototype._createUndoRedoGroup=function(){return this._undoRedo=new n(this._$left,this._chartWidget),this._undoRedo.undoElement().addClass("apply-common-tooltip"),this._undoRedo.redoElement().addClass("apply-common-tooltip"),this.createGroup("undo-redo",{single:!0}).append(this._undoRedo.element())},o.prototype._createFullscreenGroup=function(){this._fullscreen=new a(this._chartWidgetCollection);var t=this.createGroup("fullscreen",{single:!0});return this._fullscreen.element().addClass("apply-common-tooltip").appendTo(t),t},o.prototype._createLayout=function(t,i,o){var n=[];e.enabled("header_chart_type")&&n.push(this._createBarsGroup(i)),e.enabled("header_settings")&&e.enabled("show_chart_property_page")&&n.push(this._createPropertiesGroup(o,t.chartWidgetCollection)),e.enabled("header_indicators")&&n.push(this._createIndicatorsGroup(o)),e.enabled("header_compare")&&n.push(this._createCompareGroup(i,t.chartWidgetCollection,o)),e.enabled("header_undo_redo")&&!this._chartWidget.readOnly()&&n.push(this._createUndoRedoGroup()), +e.enabled("header_fullscreen_button")&&n.push(this._createFullscreenGroup()),n.forEach(function(t){t.appendTo(this._$left)},this)},o.prototype._onInternalResize=function(){if(this.hidden)return void this._resizerBridge.negotiateHeight(0);this._onResizeRequested||(this._onResizeRequested=!0,this._resizerBridge.visible.when(function(){var t,i;this._onResizeRequested=!1,e.enabled("caption_buttons_text_if_possible")&&(t=this._$left,i=t.children(".group"),t.addClass("captions"),i.size()>1&&i.last().offset().top>i.first().offset().top+5&&t.removeClass("captions")),this._$content.find("svg").pixelSnap(),this._resizerBridge.negotiateHeight({min:0,max:this._$content.height()})}.bind(this)))},o.prototype._setupCaptionButtons=function(){window.studyTemplates&&studyTemplates.onFavoriteListResize.subscribe(this,this._onInternalResize)},o.prototype._createMinimizeButton=function(){var t=this,e=$("",this._$root).addClass("tv-close-panel top").appendTo(this._$root).on("click",function(i){i.isDefaultPrevented()||(t.hidden=!t.hidden,e.toggleClass("top",!t.hidden),e.toggleClass("bottom",t.hidden),i.preventDefault(),h.emit("toggle_header",!t.hidden),t._onInternalResize())})},t.exports=o}).call(e,i(7))},,function(t,e,i){(function(e){"use strict";function o(t){var i,o,n,r,s,a,l,c,h,u,d,p,m,g,v,y,b,S,T=this;this._guid=q(),this._startSpinner(t.body.value()),P.init(),i=this,P.tool.subscribe(function(t){var e,o,n,r;i._model&&(e=t,i._model.model().setCurrentTool(e),TradingView.isMobile.any()&&(o=i._paneWidgets[0],w.isLineTool(e)&&"LineToolBrush"!==e&&!i.selectBarMode().value()?(n=.5*i._model.model().timeScale().width(),r=.5*o._state.defaultPriceScale().height(),i._model.model().setAndSaveCurrentPosition(n,r,o._state),o._updateTooltip(n,r)):o._hideTooltip()),i._model&&TradingView.isMobile.any()&&i._model.model().crossHairSource().updateAllViews())}),o=function(t,e,i){var o,n=e.mainSeries().syncModel(),r=t.mainSeries().syncModel(),s=i;return n&&r&&(o=t._createSyncPoint(n,r),s=o.sourceTimeToTargetTime(i)),t.timeScale().points().roughIndex(s,r&&r.distance.bind(r))},P.createdLineTool.subscribe(null,function(t){var e,i,n;T._model&&(e=T._model.model(),t.model!==e&&(i=e.paneForSource(T._model.model().mainSeries()),n={index:o(e,t.model,t.point.timeStamp),price:t.point.price},T._model.createLineTool(i,n,t.linetool,t.properties,t.linkKey)))}),P.continuedLineTool.subscribe(null,function(t){var e,i,n;T._model&&(e=T._model.model(),t.model!==e&&(i={index:o(e,t.model,t.point.timeStamp),price:t.point.price},(n=T._model.lineBeingCreated())&&T._model.model().coninueCreatingLine(i,t.envState,!!t.finalState)&&t.finalState&&n.restoreExternalPoints(t.finalState)))}),P.cancelledLineTool.subscribe(null,function(t){if(T._model){var e=T._model.model();t.model!==e&&T._model.model().cancelCreatingLine()}}),P.startedMovingLineTool.subscribe(null,function(t){var e,i,n;T._model&&(e=T._model.model(),t.model!==e&&(i=e.dataSources().filter(function(e){return e.linkKey===t.linkKey})[0])&&(n={index:o(e,t.model,t.point.timeStamp),price:t.point.price}, +T._model.model().startMovingSource(i,n)))}),P.movedLineTool.subscribe(null,function(t){var e,i;T._model&&(e=T._model.model(),t.model!==e&&e.sourceBeingMoved()&&e.sourceBeingMoved().linkKey===t.linkKey&&(i={index:o(e,t.model,t.point.timeStamp),price:t.point.price},T._model.model().moveSource(i)))}),P.finishedMovingLineTool.subscribe(null,function(t){var e,i;T._model&&(e=T._model.model(),t.model!==e&&(i=e.sourceBeingMoved())&&(T._model.model().endMovingSource(!!t.finalState),t.finalState&&i.restoreExternalPoints(t.finalState)))}),P.startedChangingLineTool.subscribe(null,function(t){var e,i,n;T._model&&(e=T._model.model(),t.model!==e&&(i=e.dataSources().filter(function(e){return e.linkKey===t.linkKey})[0])&&(n={index:o(e,t.model,t.point.timeStamp),price:t.point.price},T._model.model().startChangingLinetool(i,n,t.pointIndex,t.envState)))}),P.changedLineTool.subscribe(null,function(t){var e,i;T._model&&(e=T._model.model(),t.model!==e&&e.lineBeingEdited()&&e.lineBeingEdited().linkKey===t.linkKey&&(i={index:o(e,t.model,t.point.timeStamp),price:t.point.price},T._model.model().changeLinePoint(i,t.envState)))}),P.finishedChangingLineTool.subscribe(null,function(t){var e,i;T._model&&(e=T._model.model(),t.model!==e&&(i=e.dataSources().filter(function(e){return e.linkKey===t.linkKey})[0],e.lineBeingEdited()&&T._model.model().endChangingLinetool(!!t.finalState),i&&t.finalState&&i.restoreExternalPoints(t.finalState)))}),P.removedLineTool.subscribe(null,function(t){var e,i;T._model&&(e=T._model.model(),t.model!==e&&(i=e.dataSources().filter(function(e){return e.linkKey===t.linkKey})[0])&&T._model.model().removeSource(i))}),P.finishedLineTool.subscribe(null,function(t){var e;T._model&&(e=T._model.model(),t.model!==e&&e.dataSources().filter(function(e){return e.linkKey===t.linkKey})[0]&&T._model.model().finishLineTool())}),P.changedLineStyle.subscribe(null,function(t){var e,i;T._model&&(e=T._model.model(),t.model!==e&&(i=e.dataSources().filter(function(e){return e.linkKey===t.linkKey})[0])&&(i.properties().merge(t.state),i.propertiesChanged()))}),P.restoredLineToolState.subscribe(null,function(t){var e,i,o;T._model&&(e=T._model.model(),t.model!==e&&(i=e.dataSources().filter(function(e){return e.linkKey===t.linkKey})[0])&&(o=$.extend({},t.state),o.indexes=o.points.map(function(t){return{index:t.index,price:t.price}}),e.restoreLineToolState(i,o)))}),P.restoredLineTool.subscribe(null,function(t){if(T._model){var e=T._model.model();t.model!==e&&e.restoreSource(t.state.restorePane,t.state.paneIndex,t.state.paneState,t.state.sourceState,t.state.priceScaleName)}}),P.copiedLineTool.subscribe(null,function(t){var e,i,n,r,s,a;if(T._model&&(e=T._model.model(),t.model!==e)){if(i=e.paneForSource(e.mainSeries()),n=t.points.map(function(i){return{index:o(e,t.model,i.timeStamp),price:i.price}}),r=n[0],s=e.createLineTool(i,r,t.linetool,null,t.linkKey),e.lineBeingCreated())for(a=1;a0?this.model().zoomIn(a,l):o<0&&this.model().zoomOut(a,l),i&&this.model().scrollChart(-80*i),!1}.bind(this)),this._initBarsMarksSources(),this.setAutoScaleOnSymbolChange(),this._activateSymbolSearchHotkeys(),this.model().timeScale().onScroll().subscribe(this,function(){this._onScroll.fire()}),this._inited=!0}.bind(this),e=this._makeDefaultModel(),void 0===e?t():e.then(t)},o.prototype._activateSymbolSearchHotkeys=function(){this.readOnly()||this._hideSymbolSearch||O.activateKeyPressHandler()},o.prototype._checkObsoleteTimezone=function(){var t=this._properties.timezone.value();F(t)||this._properties.timezone.setValue(n(t))},o.prototype._initBarsMarksSources=function(){var t=this;this.withModel(this,function(){this.model().barsMarksSources().forEach(function(e){e.onNeedRepaint.subscribe(t,t.paint)})})},o.prototype.initESDTimelineWidget=function(){new ESDTimelineWidget(this)},o.prototype.applyAutoScaleOnNewSymbol=function(){(!this.model().mainSeries()instanceof _||!this.model().mainSeries().properties().lockScale.value())&&this.model().mainSeries().priceScale().setAutoScale(!0)},o.prototype.setAutoScaleOnSymbolChange=function(){this.withModel(this,function(){this.model().mainSeries().properties().symbol.listeners().subscribe(this,function(){this.applyAutoScaleOnNewSymbol()})})},o.prototype.initColors=function(){this._properties.paneProperties.background.listeners().subscribe(this,o.prototype.setBackgroundColor),this._properties.paneProperties.vertGridProperties.color.listeners().subscribe(this,o.prototype.redrawPanes),this._properties.paneProperties.horzGridProperties.color.listeners().subscribe(this,o.prototype.redrawPanes),this._properties.scalesProperties.lineColor.listeners().subscribe(this,o.prototype.setScaleLineColor),this._properties.scalesProperties.textColor.listeners().subscribe(this,o.prototype.setScaleTextColor)},o.prototype.paneWidgets=function(){return this._paneWidgets},o.prototype.paneByCanvas=function(t){for(var e=0;e',actions:[{name:"open-manage-drawings",type:"primary",text:window.t("Open Manage Drawings"),method:"close"},{name:"not-now",type:"default",text:window.t("Not Now"),method:"close"}]}),r.on("action:open-manage-drawings",function(){i.e(3,function(t){new(0,i(405).ObjectTreeDialog)({chartWidget:this,activeTab:1},this._model).show()}.bind(this))}.bind(this)),o._linetoolWarningDialogShown=!0,r.on("afterClose",function(){o._linetoolWarningDialogShown=!1}),r.open()}},o.prototype.redrawPanes=function(t){ +for(var e=0;e'),this.$shield=$('
').appendTo(this.$element),this.$element.appendTo(e),this._showed=!1,this._cw.withModel(this,this._connectToModel)},o.LoadingScreen.prototype._connectToModel=function(){this._cw.model().mainSeries().onDataLoaded().subscribe(this,function(t){switch(t.method){case"symbol_error":t.params[1]!==_.PERMISSION_DENIED&&this.hide();break;case"series_error":f.enabled("hide_loading_screen_on_series_error")&&this.hide();break;case"series_completed":this.hide()}})},o.LoadingScreen.prototype.show=function(){return this._cw._inLoadingState=!0,this._showed||(this._showed=!0,this._show()),$.Deferred().resolve()},o.LoadingScreen.prototype._show=function(){var t=this._cw.properties().paneProperties.background.value();this.$shield.css("background",t),this.$element.addClass("fade")},o.LoadingScreen.prototype.hide=function(){delete this._cw._inLoadingState,this._showed&&this._hide()},o.LoadingScreen.prototype._hide=function(){this._showed=!1,this.$element.removeClass("fade")},o.LoadingScreen.prototype.$canvas=null,o.LoadingScreen.prototype.context=null,o.prototype._makeMasterTable=function(){this._jqMainTable=$(document.createElement("table")),this._jqMainTable.appendTo(this._jqMainDiv),this._jqMainTable.addClass("chart-markup-table"),this._jqMainTable.attr("cellpading","0"),this._jqMainTable.attr("cellspacing","0")},o.prototype.unsetActivePaneWidget=function(){this.activePaneWidget=!1},o.prototype.setActivePaneWidget=function(t){this.activePaneWidget=t},o.prototype.isMaximizedPane=function(){return!!this._maximizedPaneWidget},o.prototype.toggleMaximizePane=function(t){if(!(this._paneWidgets.length<2)){this._maximizedPaneWidget?(this._maximizedPaneWidget.state().setMaximized(!1),this._maximizedPaneWidget=null,this._paneSeparators.forEach(function(t){t.show()})):(this._maximizedPaneWidget=t, +this._maximizedPaneWidget.state().setMaximized(!0),this._paneSeparators.forEach(function(t){t.hide()}));for(var e=this._paneWidgets.length;e--;)this._paneWidgets[e].updateControls();this._adjustSize(),this.updateIndicatorImagePosition()}},o.prototype._makePaneWidgetsAndSeparators=function(){var t,e,i,o,n=this._model.panes(),r=n.length,s=this._paneWidgets.length;for(t=r;t0&&(i=new l(this,t-1,t),this._paneSeparators.push(i),this._timeAxisWidget?i.jqRow.insertBefore(this._timeAxisWidget.jqRow):i.jqRow.appendTo(this._jqMainTable)),this._timeAxisWidget?e.jqRow.insertBefore(this._timeAxisWidget.jqRow):e.jqRow.appendTo(this._jqMainTable);for(t=0;t'),o.css({float:"none","box-sizing":"border-box",width:"100%"}),n=null,r=N({title:i||window.t("Add Symbol"),width:400,actions:[{name:"apply",text:window.t("Apply"),type:"primary"}],content:o,isClickOutFn:function(t){if(n&&(t.target===n[0]||n[0].contains(t.target)))return!1}}),s=function(i){var o={inputs:{symbol:i}};this.model().insertStudy(t,o,!1,e),r.close()},a=O.bindToInput(o,{callback:s.bind(this),onPopupOpen:function(t){t.css("z-index",r.zIndex),n=t},onPopupClose:function(){n=null}}),r.on("action:apply",function(){a.acceptTypeIn()}),r.open()):this.hasConfirmInputs(t)?(i=defaults("study_"+t.id).description,K.show(this,t,{title:i,callback:function(i){this.model().insertStudy(t,i,!1,e)}.bind(this)})):b.isPointsBasedStudy(t.id)?(l=b.lineToolNameForPointsBasedStudy(t.id),P.tool.setValue(l)):(c="Volume@tv-basicstudies"===t.id,this.insertStudy(t.id,!0,c,null,null,e))},o.prototype.hasConfirmInputs=function(t){var e,i,o=t.inputs;if(void 0===o)return!1;for(e=0;e0;)for(e=this._content.panes[t].sources,i=e.length;i-- >0;)if("MainSeries"===e[i].type)return e[i].state},o.prototype.updateSeriesControlUI=function(){ +this._seriesControlWidget&&this._seriesControlWidget.updateUI()},o.prototype.tickSeriesControlClock=function(){this._seriesControlWidget&&this._seriesControlWidget.tickClock()},o.prototype.resizeSeriesControlUI=function(){this._seriesControlWidget&&this._seriesControlWidget.resizeUI()},o.prototype.updateUndoRedo=function(){c.undoStack().isEmpty()?this.actions().undo.setEnabled(!1):this.actions().undo.setEnabled(!0),c.redoStack().isEmpty()?this.actions().redo.setEnabled(!1):this.actions().redo.setEnabled(!0)},o.prototype.createSessionBreaksActions=function(t){var e,i=this,o=function(){e=new x({text:window.t("Session Breaks"),checkable:!0,statName:"ToggleSessionBreaks"}),e.binder=new g(e,i.model().mainSeries().sessionsStudy().properties().graphics.vertlines.sessBreaks.visible,i.model(),"Session Breaks"),i._actions.sessionBreaks=e};i.model().mainSeries().sessionsStudy()?o():i.model().mainSeries().onSessionsStudyCreated().subscribe(i,function(){o()})},o.prototype.updateActionForIntradayOnly=function(t){!t||!t instanceof x||t.setEnabled(!!this.model().mainSeries().isIntradayInterval())},o.prototype.withModel=function(t,e){this.model()?e.call(t):this.modelCreated().subscribe(t,e,!0)},o.prototype.containsVolume=function(){return this.model().dataSources().some(function(t){return t instanceof b&&"Volume"===t.metaInfo().shortId})},o.prototype.containsStudyByPredicate=function(t){return!!this._model&&this._model.dataSources().some(function(e){if(!(e instanceof b))return!1;var i=e.metaInfo();return t(i)})},o.prototype.containsStudy=function(t){return this.containsStudyByPredicate(function(e){return e.id===t||e.fullId===t})},o.prototype.containsSessions=function(){return this.model().dataSources().some(function(t){return t instanceof b&&"Sessions"===t.metaInfo().shortId})},o.prototype.isSmall=function(){return this._width.value()<550||this._height.value()<300},o.prototype.onWidget=function(){return this._onWidget};o.prototype.onCmeWidget=function(){return"cme"===this.widgetCustomer()},o.prototype.widgetCustomer=function(){return this._widgetCustomer},o.prototype.resize=function(){this._resizeHandler&&this._jqMainDiv&&this._resizeHandler()},o.prototype.chartSession=function(){return this._chartSession},o.prototype.maxLhsPriceAxisWidth=0,o.prototype.maxRhsPriceAxisWidth=0,o.prototype.GUIResetScales=function(){j("GUI","Reset Scales"),this.model()&&(this._containsData&&this.model().chartModel().restoreAxisState(this._content),this.model().resetScales())},o.prototype.onLineCancelled=function(){P.resetToCursor()},o.prototype.createIndicatorImage=function(){var t=this;this.indicatorImage=this._jqParent.find(".chart-status-picture"),0===this.indicatorImage.length?this.indicatorImage=$('').appendTo(this._jqParent):this.indicatorImage.html(""),f.enabled("display_market_status")&&(this.indicatorText=$(''),this.indicatorText.appendTo(this.indicatorImage), +this.indicatorDot&&this.indicatorDot.stop(),this.indicatorDot=new X({el:this.indicatorText.find(".js-market-status")[0],classSuffix:"--for-chart"}),this.indicatorDot.start(),f.enabled("display_data_mode")&&($('').appendTo(this.indicatorText),this.dataModeIndicator&&this.dataModeIndicator.stop(),this.dataModeIndicator=new J({el:this.indicatorText.find(".js-data-mode")[0],classSuffix:"--for-chart"}),this.dataModeIndicator.start())),t.withModel(null,function(){var e=t._model.mainSeries();e.onStatusChanged().subscribe(null,t.updateIndicatorImage.bind(t)),e.marketStatus.subscribe(t.updateIndicatorImage.bind(t)),t.updateIndicatorImage(),t.checkCompactMode(),t._model.onRearrangePanes().subscribe(null,function(){t.resetIndicatorSize(),t.resizeIndicator()})}),t.rhsPriceAxisWidthChanged.subscribe(t,t.updateIndicatorImagePosition),t.updateIndicatorImagePosition()},o.prototype.updateIndicatorImage=function(){var t,e,i,o=this,n=this._model;n&&(t=n.mainSeries(),e=t.status(),i=t.quoteData?t.quoteData.update_mode_seconds:null,o._updateDataAndMarketStatus(t.marketStatus.value(),e,i))},o.prototype.checkCompactMode=function(){this._jqMainDiv&&this._jqMainDiv.toggleClass("i-compact",this._jqMainDiv.width()<=400),this.indicatorImage&&(this._indicatorWidth=this.indicatorImage.outerWidth())},o.prototype._updateDataAndMarketStatus=function(t,e){var i,o;if(void 0!==this.indicatorText){switch(e){case _.STATUS_LOADING:case _.STATUS_RESOLVING:i="loading",this.indicatorDot.setStatus("loading");break;case _.STATUS_INVALID_SYMBOL:i="invalid",this.indicatorDot.reset();break;case _.STATUS_NO_BARS:i="forbidden";break;case _.STATUS_DELAYED:i="delayed";break;case _.STATUS_DELAYED_STREAMING:i="delayed_streaming";break;case _.STATUS_EOD:case _.STATUS_PULSE:i="endofday";break;case _.STATUS_OFFLINE:i="connecting";break;case _.STATUS_SNAPSHOT:i="snapshot";break;case _.STATUS_READY:i="realtime";break;case _.STATUS_REPLAY:i="replay";break;default:i=e,Q.logWarn("unhandled data mode "+i)}f.enabled("display_data_mode")&&this.dataModeIndicator.setMode(i),o=["loading","invalid","replay"],!o.includes(i)&&t?this.indicatorDot.setStatus(t,!0):"invalid"===i?this.indicatorDot.setStatus("invalid",!0):"replay"===i&&this.indicatorDot.setStatus("replay"),this.resizeIndicator()}},o.prototype.resetIndicatorSize=function(){if(this._paneWidgets[0]&&this._paneWidgets[0].legendWidget)for(var t=0;t650?(this.indicatorDot.setTooltipEnabled(!1),this.indicatorDot.disableShortMode()):i>550?(this.indicatorDot.setTooltipEnabled(!1),this.indicatorDot.disableShortMode()):(this.indicatorDot.setTooltipEnabled(!1),this.indicatorDot.enableShortMode())),f.enabled("display_data_mode")&&this.dataModeIndicator&&(i>650?(this.dataModeIndicator.setTooltipEnabled(!1),this.dataModeIndicator.disableShortMode()):i>550?(this.dataModeIndicator.setTooltipEnabled(!0),this.dataModeIndicator.enableShortMode()):(this.dataModeIndicator.setTooltipEnabled(!1),this.dataModeIndicator.enableShortMode()))},o.prototype.updateIndicatorImagePosition=function(){var t=this.indicatorImage;this.indicatorImage&&t.css("marginRight",this.maxRhsPriceAxisWidth)},o.prototype._startSpinner=function(t){if(!this._spinner){var e=$(t).get(0);e&&(this._spinner=U("",{zIndex:"auto"}).spin(e))}},o.prototype.isJustClonedChart=function(){return!!(this._options||{}).justCloned},o.prototype.getLastPaneLeftBottom=function(){var t=this._paneWidgets[this._paneWidgets.length-1].jqPane,e=t.offset();return{left:e.left,bottom:$(document.body).height()-e.top-t.height()}},o.prototype.setDataWindowWidget=function(t){this._dataWindowWidget=t},o.prototype.removeDataWindowWidget=function(){this._dataWindowWidget=null},f.enabled("datasource_copypaste")&&(o.prototype.onAppClipboardPaste=function(t,e){Q.logDebug("[[paste]]"),this._model&&this._model.pasteSourceFromClip(t,e)},o.prototype.onAppClipboardCopy=function(t){if(t||(t=this._model.selectedSource()),t instanceof b&&t.isChildStudy())return void Q.logDebug("Can not copy child study");Q.logDebug("[[copy]]"),this._model&&this._model.copySourceToClip(t)},o.prototype.onAppClipboardCut=function(t){Q.logDebug("[[cut]]"),this._model&&this._model.cutSourceToClip(t||this._model.selectedSource())}),o.prototype.applyOverrides=function(t){applyPropertiesOverrides(this.properties(),null,!1,t),this._model&&(applyPropertiesOverrides(this._model.model().properties(),null,!1,t),applyPropertiesOverrides(this._model.mainSeries().properties(),null,!1,t,"mainSeriesProperties"))},o.prototype.applyStudiesOverrides=function(t){H.setDefaultsOverrides(t),this._applyStudiesOverrides()},o.prototype.setActive=function(t){var e,i=this.actions();for(e in i)i.hasOwnProperty(e)&&this.actions()[e].setActive(t);this._isActive=t,this._paneWidgets.forEach(function(t){t.update()})},o.prototype.isActive=function(){return this._isActive},o.prototype.trackTime=function(){return this._chartWidgetCollection.lock.trackTime},o.prototype.id=function(){return this._guid},o.prototype.createBranding=function(){this._modelCreated.subscribe(this,function(){this._model.model().createBrandingSource()},!0)},o.prototype.selectBarMode=function(){return this._model.model().selectBarMode()}, +o.prototype.toggleSelectBarMode=function(){this._model.model().toggleSelectBarMode()},o.prototype.onBarSelected=function(){return this._model.model().onBarSelected()},o.prototype.trySetChartStyle=function(t){var e=this.model();return!!e&&(e.mainSeries().properties().style.value()===t||!!f.enabled("charting_library_base")&&(this._setChartStyle(t),!0))},o.prototype._setChartStyle=function(t){var e=this.model(),i=e.mainSeries().properties().style;e.setChartStyleProperty(i,t,"Change Series Style")},t.exports.ChartWidget=o}).call(e,i(20))},function(t,e,i){(function(e){"use strict";function o(t){var e,i,o=Object.keys(m),n=o.length;for(e=0;el&&(o=c.syncModel().distance(l,t),o.success&&(a.index=a.index+o.result)), +e?a.price=e:(n=["open","high","low","close"],r=i?n.indexOf(i)+1:1,r<=0&&(r=1),a.price=u.valueAt(s)[r]),a}var o,n,r,s,a,l=this._chartWidget.model().model(),c=l.mainSeries(),h=l.timeScale().points(),u=c.data();if(l.timeScale().isEmpty())return null;for(o=t.map(function(t){return t.time}),n=_.isDWM(c.interval())&&!e.enabled("disable_resolution_rebuild")?this._alignPoints(o):o,r=[],s=0;s1),y(o)):Mt[o]&&(Mt[o].hiddenInLayout.setValue(!0),Mt[o].body.value().detach());return C(),h.emit("layout_changed"),!0}function C(){var t,e=Math.min(Ot.count,Mt.length)-1;if(e<0)return void kt.deleteValue();t=Dt,t<0&&(t=0),t>e&&(t=e),kt.setValue(Mt[t].chartWidget)}function P(){var t,e;for(t=Mt.length;t--;)e=t===Dt,Mt[t].body.value().toggleClass("active",e).toggleClass("inactive",!e)}function L(){return Mt.filter(function(t){return!t.hiddenInLayout.value()}).sort(function(t,e){return t.metrics.top-e.metrics.top||t.metrics.left-e.metrics.left})}function I(){var t,e,i,o=Ct.layout.value();"s"!==o&&(t=n[o].count,pt.value()||(Et=L()),e=Vt+1,i=Et[e],!i||e>t?(i=Et[0],Vt=0):Vt=e,kt.setValue(i.chartWidget),pt.value()&&x(o,!0))}function k(t){var e=kt.value();return!!e&&e.trySetChartStyle(t)}function A(t){var e,i,o,n;wt!==t&&(wt&&(wt.modelCreated().unsubscribe(null,M),(e=wt.model())&&(i=e.mainSeries().properties(),i.style.unsubscribe(null,E),o=e.model(),o.onSelectedSourceChanged().unsubscribe(null,V),wt=null)),t&&(n=t.model(),n?M(n):t.modelCreated().subscribe(null,M),wt=t))}function M(t){var e,i=t.mainSeries().properties();i.style.subscribe(null,E),E(i.style),e=t.model(),e.onSelectedSourceChanged().subscribe(null,V),V(t.selectedSource())}function E(t){bt.setValue(t.value())}function V(t){St.setValue(t)}function D(t){var e,i,o,n;if(t!==Ft.value()){if(a.beginUndoMacro("Symbol Lock"),t)for(e=kt.value(),i=e.getSymbol(),o=0;o=0||_t.containsData||At?t:"s"} +function rt(t){if(Rt=[],t){t.charts||(t={layout:"s",charts:[t]}),Bt=nt(t.layout||"s");for(var e=0;e0)st();else{var t=function(){st(),e.model().mainSeries().onBarReceived().unsubscribe(null,t),e.model().mainSeries().onCompleted().unsubscribe(null,t)};e.model().mainSeries().onBarReceived().subscribe(null,t),e.model().mainSeries().onCompleted().subscribe(null,t)}})}}),s()&&(xt=l.tool.setValue,l.tool.setValue=function(){Ct.selectedSource.value()&&Ct.activeChartWidget.value().model().lineBeingCreated()&&Ct.activeChartWidget.value().model().cancelCreatingLine(),xt.apply(l.tool,arguments)}),at().then(lt).then(function(){window.saver&&window.is_authenticated&&t.widgetOptions.justCloned&&window.saver.saveChartSilently()}).catch(g.logError.bind(g))}var n=i(308).layouts,r=i(747),s=i(102).supportTouch,a=i(76).UndoHistory,l=i(44),c=i(266),h=i(43),u=i(1159),d=i(7),p=i(1147).SetChartLayoutCommand,_=i(51),f=i(310).ResizerDetacherState,m=i(1101).delegateToPromise,g=i(13).getLogger("Chart.ChartWidgetCollection");t.exports=o}).call(e,i(20))},,function(t,e,i){"use strict";function o(t){return null==t._parentMenu?null:n(t._parentMenu)}function n(t){return null==t._parentMenuItem?t:o(t._parentMenuItem)}function r(t,e){this.action=t,this._parentMenu=e}function s(t,e){this.action=t,this._parentMenu=e}var a=i(394),l=i(206);r.prototype._createIconTag=function(){var t=this._iconTagAttributes();return this.jqIcon=l.create(a.ICON_CELL_TAG,t),this.jqIcon.addClass("context-menu"),this.jqIcon},r.prototype._createDeleteButton=function(){var t,e,i;if(!this.action.deleteButton)return null;t=this,e=this.action.deleteButton.action,i=l.create("span",{class:"context-menu-delete-button"}),e&&i.click(function(){return e.call(t),!1}),this.jqSubmenu.addClass("delete-spacer"),this.jqSubmenu.append(i)},r.prototype._createTextTag=function(){var t=this._textTagAttributes();return this.jqText=l.create(a.TEXT_CELL_TAG,t),this.jqIcon.addClass("context-menu"),this.jqText},r.prototype._createRightTag=function(){var t=this._rightTagAttributes();return this.jqRight=l.create(a.RIGHT_CELL_TAG,t),this.jqIcon.addClass("context-menu"),this.jqRight},r.prototype._createSubmenuTag=function(){var t=this._submenuTagAttributes();return this.jqSubmenu=l.create(a.SUBMENU_CELL_TAG,t),this.jqIcon.addClass("context-menu"),this.jqSubmenu},r.prototype._iconTagAttributes=function(){var t={},e=[];return this.action&&(this.action.icon?(e.push("icon"),e.push(this.action.icon.replace(/\./,"_"))):this.action.checkable?(e.push("icon"),this.action.checked?(e.push("checked-icon"),t.html=i(235)):e.push("unchecked-icon")):e.push("spacer")),t.class=e.join(" "),t},r.prototype._textTagAttributes=function(){return{class:"text",html:this.action?this.action.text:""}},r.prototype.highlight=function(t){ +t?(this.jqRow.addClass("context-menu-hover"),this.jqIcon.addClass("context-menu-hover")):(this.jqRow.removeClass("context-menu-hover"),this.jqIcon.removeClass("context-menu-hover")),this.action&&this.action.hasSubActions()&&(t?this.jqSubmenu.addClass("expanded"):this.jqSubmenu.removeClass("expanded"))},r.prototype._rightTagAttributes=function(){var t={},e=["right"];return this.action&&this.action.shortcut&&(e.push("shortcut"),t.class=e.join(" "),t.html=this.action.shortcut),t},r.prototype._submenuTagAttributes=function(){var t={};return this.action&&this.action.hasSubActions()?t.class="submenu-arrow":t.class="context-menu spacer",t},r.prototype.render=function(){this._createRow(),this.jqRow.append(this._createIconTag()),this.jqRow.append(this._createTextTag()),this.jqRow.append(this._createRightTag()),this.jqRow.append(this._createSubmenuTag()),this._createDeleteButton(),this.appendCallback();var t=this;return this.jqRow.mouseenter(function(e){t.showSubmenu(e),t.highlight(!0),t._parentMenu&&t._parentMenu._parentMenuItem&&t._parentMenu._parentMenuItem.highlight(!0)}),this.jqRow.mouseleave(function(){t.highlight(!1)}),this.jqRow},r.prototype._createRow=function(){var t,e,i=this._rowTagAttributes();this.jqRow=l.create(a.ITEM_ROW_TAG,i),this.jqRow.addClass("context-menu"),t=this,this.action&&!this.action.hasSubActions()&&(e=function(t){t.destroy(),t._parentMenuItem&&e(t._parentMenuItem._parentMenu)},this.jqRow.click(function(i){e(t._parentMenu)}))},r.prototype.showSubmenu=function(t){var e,o;this._parentMenu.closeOtherSubmenus(this),this.action&&!this.action.hasSubActions()||(this._menu||(e=i(131),o={},this._menu=e.createMenu(this.action.subActions,o,this)),t.pageX=this._parentMenu.jqMenu.width()-2,t.pageY=this.jqSubmenu.offset().top-this._parentMenu.jqMenu.offset().top-1,this._menu.show(t,this._parentMenu.jqMenu))},r.prototype._rowTagAttributes=function(){var t=[];return this.action&&(!1===this.action.enabled&&t.push("disabled"),!1===this.action.visible&&t.push("hidden"),this.action.font&&t.push("font_"+this.action.font),this.action.hasSubActions()&&t.push("has_submenu"),this.action.htmlclass&&t.push(this.action.htmlclass)),{class:t.join(" ")}},r.prototype.appendCallback=function(){var t=this;this.jqRow.click(function(e){t.action.enabled&&t.action.executeCallback(e)})},r.prototype.getTopLevelMenu=function(){return o(this)},s.prototype.render=function(t){this._createRow();var e=this;return this.action.deferred.then(function(o){var n,r,s,a=i(395);for(n in o)r=o[n],s=e._parentMenu.addItem(r),a.renderItem(t,s)}).always(function(){e.jqRow.hide()}),this.jqRow},s.prototype._createIconTag=function(){var t=this._iconTagAttributes();return this.jqIcon=l.create(a.ICON_CELL_TAG,t),this.jqIcon.addClass("context-menu"),this.jqIcon},s.prototype._createRow=function(){var t=this._rowTagAttributes();this.jqRow=l.create(a.ITEM_ROW_TAG,t),this.jqRow.append(this._createIconTag()),this.jqRow.addClass("context-menu")},s.prototype._rowTagAttributes=function(){var t=[];return this.action&&t.push("spinner"),{class:t.join(" ")}}, +s.prototype.highlight=function(t){},s.prototype._iconTagAttributes=function(){var t={},e=[];return e.push("spacer"),t.class=e.join(" "),t.colspan="10",t},e.Item=r,e.ItemPlaceholder=s},function(t,e,i){"use strict";function o(t,e,i){this._chart=t,this._parent=e,this.zoom_active=!1,this._real=i,this._state="stop",this._controlBarVisible=!1,this._boundMouseHandler=null,this.init(),i&&this.initToRealChart(),this.initHandlers()}var n=i(37),r=i(309);o.prototype.init=function(){this._widget=$('
'),this._controlBar=$('
').append($(i(332)).attr("class","move-left-button-control-bar")).append($(i(1343)).attr("class","zoom-out-right-button-control-bar")).append($(i(1346)).attr("class","turn-button-control-bar")).append($(i(1345)).attr("class","zoom-in-button-control-bar")).append($(i(513)).attr("class","move-right-button-control-bar")).appendTo(this._widget),this._buttons={zoomIn:this._widget.find(".zoom-in-button-control-bar"),zoomOut:this._widget.find(".zoom-out-right-button-control-bar"),moveLeft:this._widget.find(".move-left-button-control-bar"),moveRight:this._widget.find(".move-right-button-control-bar"),turn:this._widget.find(".turn-button-control-bar")},this._initVisibility(),this._widget.appendTo(this._parent)},o.prototype.destroy=function(){this._visibilityTypeProperty&&(this._visibilityTypeProperty.unsubscribe(this,this._onVisibilityTypeChange),this._visibilityTypeProperty=null),this._boundMouseHandler&&(this._parent[0].removeEventListener("mousemove",this._boundMouseHandler,!1),this._parent[0].removeEventListener("mouseleave",this._boundMouseHandler,!1),this._boundMouseHandler=null),this._chart=null},o.prototype._initVisibility=function(){this._visibilityTypeProperty=r.actualBehavior(),this._visibilityTypeProperty.subscribe(this,this._onVisibilityTypeChange),this._onVisibilityTypeChange()},o.prototype._onVisibilityTypeChange=function(){var t=this._visibilityTypeProperty.value();"alwaysOn"===t||"alwaysOff"===t?(this._controlBarVisible="alwaysOn"===t,this._boundMouseHandler&&(this._parent[0].removeEventListener("mousemove",this._boundMouseHandler,!1),this._parent[0].removeEventListener("mouseleave",this._boundMouseHandler,!1),this._boundMouseHandler=null)):(this._controlBarVisible=!1,this._boundMouseHandler||(this._boundMouseHandler=this._visibilityMouseHandler.bind(this),this._parent[0].addEventListener("mousemove",this._boundMouseHandler,!1),this._parent[0].addEventListener("mouseleave",this._boundMouseHandler,!1))),this._updateControlBarVisibility()},o.prototype._visibilityMouseHandler=function(t){var e,i,o,n;t.buttons||(e=this._chart.model())&&e.lineBeingCreated()||(i=!1,o=100,"mousemove"===t.type&&(n=this._widget[0].getBoundingClientRect(),i=t.clientX>=n.left-o&&t.clientX<=n.right+o&&t.clientY>=n.top-o&&t.clientY<=n.bottom+o),this._controlBarVisible!==i&&(this._controlBarVisible=i,this._rafId||(this._rafId=this._controlBar[0].ownerDocument.defaultView.requestAnimationFrame(this._updateControlBarVisibility.bind(this)))))}, +o.prototype._updateControlBarVisibility=function(){this._rafId=void 0,this._controlBar[0].classList.toggle("control-bar--hidden",!this._controlBarVisible)},o.prototype.initToRealChart=function(){var t,e=this;this._back=$(i(1237)).attr({class:"back-to-present js-hidden"}).appendTo(this._parent),this._backButtonVisible=!1,this._back.on("click",function(){e._chart.model().timeScale().scrollToRealtime(!0),e._chart.model().model()._invalidateHandler(new n(n.FULL_UPDATE))}),t=function(){var t=e._chart.maxRhsPriceAxisWidth+4;t&&e._back.css("marginRight",t)},this._chart.rhsPriceAxisWidthChanged.subscribe(this,t),t(),this._chart.withModel(this,function(){this._chart.model().model().setInterval(function(){e.check()},1e3)})},o.prototype.check=function(){var t=this._chart.model(),e=!!t&&t.timeScale().rightOffset()<0;e!==this._backButtonVisible&&(this._backButtonVisible=e,this._backButtonVisible?this._back.attr("class","back-to-present"):this._back.attr("class","back-to-present js-hidden"))},o.prototype._move=function(t){var e,i;"stop"===this._state&&this._chart.model().beginUndoMacro(1===t?"Move Left":"Move Right"),this._state="moving",this._moveType="animated",this._deferredFinishTimeout&&(clearTimeout(this._deferredFinishTimeout),this._deferredFinishTimeout=0),this._finishingTimeout&&(clearTimeout(this._finishingTimeout),this._finishingTimeout=0),this._startTime=+new Date,this._movingTimeout||(e=this._startTime,i=10,this._movingTimeout=setTimeout(function o(){this._moveStep.call(this,e,0,50*t,1e3),this._movingTimeout=setTimeout(o.bind(this),i)}.bind(this),i))},o.prototype._moveStep=function(t,e,i,o){var n,r,s;if(!this._chart.model().timeScale().isEmpty())return n=+new Date,r=1-(Math.max(0,t+o-n)/o||0),r<1&&(s=jQuery.easing.easeOutCubic(null,o*r,0,1,o),this.currentDistance=(i-e)*s+e),this._chart.model().scrollChart(this.currentDistance),r},o.prototype._finishMove=function(t){var e,i;clearTimeout(this._movingTimeout),this._movingTimeout=0,this._deferredFinishTimeout=0,e=this.currentDistance,i=+new Date,this._finishingTimeout=setTimeout(function t(){this._moveStep.call(this,i,e,0,700)<1?this._finishingTimeout=setTimeout(t.bind(this),10):(this._state="stop",this._moveType="",this._movingTimeout=0,this.currentDistance=0,this._chart.model().endUndoMacro())}.bind(this),10)},o.prototype._stopMove=function(t){"moving"===this._state&&(this._state="wait_finishing",(new Date).getTime()-this._startTime<200?this._deferredFinishTimeout=setTimeout(this._finishMove.bind(this),200-((new Date).getTime()-this._startTime)):this._finishMove())},o.prototype._moveByBar=function(t){var e,i,o,n,r=this._chart.model().timeScale();r.isEmpty()||("stop"===this._state&&this._chart.model().beginUndoMacro(1===t?"Move Left":"Move Right"),e=r.indexToCoordinate(r.visibleBars().lastBar())+r.barSpacing()/2,Math.abs(r.width()-e)>r.barSpacing()/6&&this._chart.model().scrollChart(r.width()-e),this._state="moving",this._moveType="by_bar",this._startTime=+new Date,this._movingTimeout||(i=400,o=150,n=0,this._movingTimeout=setTimeout(function e(){this._moveByBarStep(t), +n++,o>100&&(o-=n/5*20),this._movingTimeout=setTimeout(e.bind(this),o)}.bind(this),i),this._moveByBarStep(t)))},o.prototype._moveByBarStep=function(t){this._chart.model().timeScale().isEmpty()||this._chart.model().scrollChartByBar(t)},o.prototype._stopMoveByBar=function(t){"moving"===this._state&&(clearTimeout(this._movingTimeout),this._movingTimeout=0,this._state="stop",this._moveType="",this._movingTimeout=0,this.currentDistance=0,this._chart.model().endUndoMacro())},o.prototype.initHandlers=function(){var t,e=this._chart,i=Modernizr.touch?"touchstart":"mousedown",o=Modernizr.touch?"touchend":"mouseup mouseout";this._buttons.moveLeft.on(i,this._moveByBar.bind(this,1)),this._buttons.moveLeft.on(o,this._stopMoveByBar.bind(this,1)),this._buttons.moveRight.on(i,this._moveByBar.bind(this,-1)),this._buttons.moveRight.on(o,this._stopMoveByBar.bind(this,-1)),this._buttons.moveLeft.on("click",function(t){t.preventDefault()}),this._buttons.moveRight.on("click",function(t){t.preventDefault()}),this._buttons.turn.on("click",function(t){t.preventDefault(),e.GUIResetScales()}),this._buttons.zoomOut.on("click",function(t){t.preventDefault(),e.model()&&e.model().zoomOut()}),this._buttons.zoomIn.on("click",function(t){t.preventDefault(),e.model()&&e.model().zoomIn()}),t={},$("body").on("keydown",function(e){if(!$(e.target).closest("input, textarea").length&&!(e.metaKey||e.which in t))switch(t[e.which]=!0,e.which){case 37:e.ctrlKey||e.altKey?this._move(1):this._moveByBar(1),e.preventDefault();break;case 39:e.ctrlKey||e.altKey?this._move(-1):this._moveByBar(-1),e.preventDefault()}}.bind(this)).on("keyup",function(e){if(!$(e.target).closest("input, textarea").length)switch(delete t[e.which],e.which){case 37:case 39:"by_bar"===this._moveType?this._stopMoveByBar():this._stopMove()}}.bind(this))},t.exports=o},function(t,e,i){"use strict";function o(t){this._e=$("").addClass("button fullscreen iconed apply-common-tooltip").attr("title",$.t("Fullscreen mode")).append($(i(1208)).attr({width:18,height:18})),this._e.click(function(){t.startFullscreen()})}o.prototype.element=function(){return this._e},t.exports=o},function(t,e,i){"use strict";function o(t,e,i){this._options=i||{},this._w=t,this._opener=e,this._addMetric=1,this._addOpened=!1}var n=i(57).Interval,r=i(286),s=i(103).bindPopupMenu,a=i(7);i(142),o.prototype._interval=function(t){var e=$(t.target);e.hasClass("disabled")||(this._w.setInterval(e.data("interval")),this.close())},o.prototype._quickTitle=function(t){return t?$.t("Remove from favorites"):$.t("Add to favorites")},o.prototype._onQuick=function(t){var e=$(t.target).closest(".item"),i=this._w.toggleQuick(e.data("interval"));return e.find(".to-quick").toggleClass("quicked",i).attr("title",this._quickTitle(i)),!1},o.prototype._onDelete=function(t){var e=$(t.target).closest(".item");return this._w.removeInterval(e.data("interval")),this._reopen(),!1},o.prototype._showControlButtons=function(){return!0},o.prototype._append=function(t,e){ +var o=$("").addClass("item").toggleClass("active",e===this._w.getInterval()).toggleClass("disabled",!r.isAvailable(e)).text(this._w.fullLabel(e)).data("interval",e);this._showControlButtons()&&(this._w.isDefaultInterval(e)||o.prepend($("").addClass("delete").attr("title",$.t("Remove custom interval")).html(i(109)).click(this._onDelete.bind(this))),this._w._options.notShowQuicks||o.prepend($("").addClass("to-quick").toggleClass("quicked",this._w.inQuick(e)).append($(i(330)).attr({width:16,height:16})).attr("title",this._quickTitle(this._w.inQuick(e))).click(this._onQuick.bind(this)))),o.click(this._interval.bind(this)),t.append(o)},o.prototype._appendAdd=function(t){function e(){var t,e=parseInt(r.val());e<1&&r.val(1),t={1:1440,60:24,D:364,W:52,M:12}[this._addMetric],e>t&&r.val(t)}var i,o=$("").addClass("item-add"),n=$('').appendTo(o),r=$('').addClass("tv-text-input inset minutes").val(1).appendTo(n).TVTicker(),a=$("").addClass("_tv-button mins").append($("")).append($('
')).appendTo(n),l=$("").addClass("_tv-button add apply-overflow-tooltip").text($.t("Add")).appendTo(n),c={1:$.t("Minutes",{context:"interval"}),60:$.t("Hours",{context:"interval"}),D:$.t("Days",{context:"interval"}),W:$.t("Weeks",{context:"interval"}),M:$.t("Months",{context:"interval"})};a.find("span").text(c[this._addMetric||1]),r.change(e.bind(this)),i=this,s(a,null,{direction:"up",event:"button-popup",addClass:"thin small-font metrics",popupSpacing:~~this._w._options.popupSpacing,onRemove:function(){i._addOpened=!1}}),a.click(function(){i._addOpened=!0,a.trigger("button-popup",[$.map(c,function(t,o){return{title:t.toUpperCase(),active:o===i._addMetric,action:function(){return i._addMetric=o,a.find("span").text(t),e.call(i),!1}}})])}),l.click(function(){}),t.append($("
").addClass("separator")),t.append(o)},o.prototype._addInterval=function(t){this._w.addInterval(t),this._reopen({highlight:t})},o.prototype._open=function(t,e){var i,o,r,s,l;t.find(".item, .item-add, .separator").remove(),i=[],o=[],r=[],s=[],l=$("").addClass("separator"),$.each(e,function(t,e){var a=new n(e);a.isDWM()?s.push(e):a.kind()===n.HOURS?r.push(e):a.kind()===n.MINUTES?o.push(e):i.push(e)}),i.length&&(i.forEach(function(e){this._append(t,e)}.bind(this)),t.append(l.clone())),o.length&&o.forEach(function(e){this._append(t,e)}.bind(this)),r.length&&(t.append(l.clone()),r.forEach(function(e){this._append(t,e)}.bind(this))),s.length&&(t.append(l.clone()),s.forEach(function(e){this._append(t,e)}.bind(this))),a.enabled("custom_resolutions_box")&&this._appendAdd(t)},o.prototype._reopen=function(t){if(this._open(this._menu,this._w.getSortedIntervals()),t&&t.highlight){var e=this._menu.find(".item").filter(function(){return $(this).data("interval")===t.highlight});e.length&&e.highlight(2)}},o.prototype.open=function(t){ +var e,i=this,o=$("
").addClass("charts-popup-list intervals-list favored-list").toggleClass("touch",Modernizr.touch),n=this._w.mainButton().offset(),r=this._w.mainButton().outerHeight(),s=1+n.top+r+parseInt(i._options.popupSpacing||0);o.appendTo(document.body),o.css({top:s,left:n.left}).show(),this._menu=o,this._opener.addClass("active"),this._open(o,t),e=Math.min($("body").height(),$(window).height())-r-s-10,this._setMaxHeight(o,e),setTimeout(function(){o.on("mousedownoutside",function(t){this.close(t)&&o.unbind("mousedownoutside")}.bind(this))}.bind(this),0)},o.prototype._setMaxHeight=function(t,e){t.height()>=e&&(t.css("max-height",e+"px"),t.width(t.width()+18))},o.prototype.close=function(t){return(!t||!$(t.target).parents("span.item-add, .charts-popup-list.metrics").length)&&(!(t&&$(t.target).hasClass("submenu")&&$(t.target).parents(".intervals-container").length)&&(this._menu.remove(),$(document.body).off(".interval-menu"),delete this._menu,this._opener.removeClass("active"),!0))},t.exports=o},function(t,e,i){(function(e){"use strict";function o(t,e,i,o){this.reset(t,e,i,o)}var n=i(231).makeFont,r=i(218),s=e.enabled("charting_library_debug_mode");o.prototype.maxCount=200,o.prototype.reset=function(t,e,i,o){this._textWidthCache=new r(this.maxCount),this._fontSize=t,this._color=o,this._font=n(t,e,i),this._keys=[],this._hash={}},o.prototype.paintTo=function(t,e,i,o,n){var r=this.getLabelImage(t,e);"left"!==n&&(i-=r.textWidth),o-=Math.floor(r.height/2),t.drawImage(r.canvas,i,o)},o.prototype.getLabelImage=function(t,e){var i,o,n,r,a;return Object.prototype.hasOwnProperty.call(this._hash,e)?i=this._hash[e]:(this._keys.length>=this.maxCount&&(o=this._keys.shift(),delete this._hash[o]),i={text:e,textWidth:0,width:0,height:0,canvas:document.createElement("canvas")},n=Math.ceil(this._fontSize/4.5),r=Math.round(this._fontSize/10),a=Math.ceil(this._textWidthCache.measureText(t,e)),i.textWidth=Math.round(Math.max(1,a)),i.width=Math.round(a+2*n),i.height=this._fontSize+2*n,0!==a?(this._keys.push(i.text),this._hash[i.text]=i):s&&console.log('Canvas 2d context measureText return zero width for "'+e+'" text'),i.canvas.width=i.width,i.canvas.height=i.height,t=i.canvas.getContext("2d"),t.font=this._font,t.fillStyle=this._color,t.fillText(e,0,i.height-n-r)),i},t.exports=o}).call(e,i(7))},function(t,e,i){(function(e){"use strict";function o(t,e,i){this._model=e,this._paneWidget=t,this._chart=t._chart,this._mainDiv=i,this.$el=$(document.createElement("div")).addClass("pane-legend"),this._itemsBinding=[],this._chart.properties().paneProperties.legendProperties.showStudyTitles.listeners().subscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showSeriesTitle.listeners().subscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showSeriesOHLC.listeners().subscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showStudyValues.listeners().subscribe(this,this.updateLayout);var o=this._chart.properties().scalesProperties.textColor +;o.listeners().subscribe(this,function(t){this.$el.css("color",t.value())}),this.$el.css("color",o.value()),this.updateLayout()}var n=(i(61).Study,i(48).trackEvent),r=(i(13).getLogger("Chart.LegendWidget"),i(19)),s=i(172).showEditObjectDialog,a=i(144).setMouseEventHandler;o.prototype.contextMenuEvent=function(t,i){if(!this._model.chartModel().readOnly()&&e.enabled("legend_context_menu")){var o=i.source;this._paneWidget.showContextMenuForSource(o,t)}},o.prototype.updateLayout=function(){var t,o,n,r,s,l,c,h,u,d,p;if(this._itemsBinding.length=0,this.$el.find(".apply-common-tooltip").trigger("mouseleave"),this.$el.empty(),(t=this._paneWidget.state())&&this._model){for(o={showStudyTitles:this._model.model().properties().paneProperties.legendProperties.showStudyTitles.value(),showSeriesTitle:this._chart.properties().paneProperties.legendProperties.showSeriesTitle.value(),showSeriesOHLC:this._chart.properties().paneProperties.legendProperties.showSeriesOHLC.value(),showStudyValues:this._chart.properties().paneProperties.legendProperties.showStudyValues.value(),showLegend:this._model.model().properties().paneProperties.legendProperties.showLegend.value()},n=this._model.mainSeries(),r=t.orderedSources().slice(),s=r.indexOf(n),s>-1&&(r.splice(s,1),r.push(n)),l=r.length-1;l>=0;l--)c=r[l],(h=c.statusView())&&(!(u=c===n)||o.showSeriesTitle||o.showSeriesOHLC||o.showStudyTitles||o.showStudyValues)&&(u&&e.enabled("fundamental_widget")||(o.showLegend||!u?(u||o.showStudyTitles||o.showStudyValues)&&o.showLegend&&(d=$("
").addClass("pane-legend-line pane-legend-wrap").appendTo(this.$el),d.source=c,u?(p=$('').append($(i(1340)).attr({class:"expand"})),d.addClass("main").append(p.on("click touchend",this.toggleTitles.bind(this)))):d.addClass("study"),c.properties().visible.value()||d.addClass("disabled"),this._generateItemsForRow(d,h,o),a(d,this,!0)):this.$el.find(".expand-line").length||(d=$("
").addClass("pane-legend-line pane-legend-wrap main expand-line").appendTo(this.$el),p=$('').append($(i(1339)).attr({class:"expand closed"})),d.append(p.on("click touchend",this.toggleTitles.bind(this))),d.source=c,o={showStudyTitles:!1,showSeriesTitle:!1,showSeriesOHLC:o.showSeriesOHLC,showStudyValues:!1},this._generateItemsForRow(d,h,o),a(d,this,!0),this.update())));this.update()}},o.prototype._generateItemsForRow=function(t,o,n){var r,s,a,l,c,h,u,d,p,_,f,m=t.source,g=this,v=m===this._model.mainSeries();if((v&&n.showSeriesTitle||!v&&n.showStudyTitles)&&(r=$(""),r.addClass("pane-legend-line apply-overflow-tooltip"),e.enabled("legend_context_menu")&&!this._chart.readOnly()||r.addClass("no-context-menu"),v&&r.addClass("main"),m.properties().visible.value()||r.addClass("disabled"),r.css({"font-weight":o.bold()?"bold":"normal","font-size":o.size()}),r.click(function(e){g.contextMenuEvent(e,t)}),r.appendTo(t),this._itemsBinding.push({value:o,cell:r,source:t.source}), +!this._chart.readOnly()&&m.userEditEnabled()&&e.enabled("edit_buttons_in_legend")&&(s=$('').appendTo(t),e.enabled("show_hide_button_in_legend")&&$('').append($(i(1211)).attr({width:14,height:14})).appendTo(s).on("click touchend",this._generateItemsForRow._onShowhideClick.bind(this,m)),e.enabled("property_pages")&&(!v||e.enabled("show_chart_property_page")&&!this._chart.onWidget())&&e.enabled("format_button_in_legend")&&$('').append($(i(1207)).attr({width:14,height:14})).appendTo(s).on("click touchend",this._generateItemsForRow._onFormatClick.bind(this,m)),!v&&e.enabled("delete_button_in_legend")&&$('').append($(i(510)).attr({width:14,height:14})).appendTo(s).on("click touchend",this._generateItemsForRow._onDeleteClick.bind(this,m)))),a=m.dataWindowView(),this.isDataWindowValuesVisible(a)&&(v&&n.showSeriesOHLC||!v&&n.showStudyValues)){for(l=[],c=[],h=$('
'),e.enabled("legend_context_menu")||h.addClass("no-context-menu"),u=0;u").appendTo(h),p=v?$("").appendTo(d):null,_=$("").appendTo(d),v&&(p.addClass("pane-legend-item-value-title__main"),_.addClass("pane-legend-item-value__main")),m.properties().visible.value()||(_.addClass("disabled"),p&&p.addClass("disabled")),l.push(_),p&&c.push(p);f=$("").appendTo(h.appendTo(t)),this._itemsBinding.push({value:a,cell:l,titleCells:c.length?c:null,source:m,additional:f})}},o.prototype.isDataWindowValuesVisible=function(t){return this._chart.onWidget()?!!t&&!this._chart.isSmall():!!t},o.prototype._generateItemsForRow._onShowhideClick=function(t){this._model.setProperty(t.properties().visible,!t.properties().visible.value(),"Show/Hide "+t.title())},o.prototype._generateItemsForRow._onFormatClick=function(t,e){t.userEditEnabled()&&(TVSettings.setValue("properties_dialog.active_tab.chart",$.t("Style")),s(t,this._model))},o.prototype._generateItemsForRow._onDeleteClick=function(t){t.isUserDeletable()&&(t.hasChildren()?showDeleteStudyTreeConfirm(this._model.removeSource.bind(this._model,t)).open():this._model.removeSource(t))},o.prototype._generateItemsForRow._onAddChildSourceClick=function(t){var e,i,o=this._chart.showIndicators(t);o&&(e=function(){n("SOS","Apply SOS","Apply by Plus SOS")},i=this._model.model().studyInserted(),i.subscribe(this,e),o.visibilityChanged.subscribe(this,function(t){t||i.unsubscribe(this,e)},!0))},o.prototype._generateItemsForRow._onViewSorceClick=function(t){var e=t.metaInfo();this._getPineSourceCode(e).done(function(t){ +TradingView.bottomWidgetBar&&TradingView.bottomWidgetBar.activateScriptEditorTab(t)})},o.prototype._getPineSourceCode=function(t){return $.Deferred()},o.prototype.setItemEnabled=function(t,e){var i=!t.hasClass("disabled"),o=t.closest(".pane-legend-wrap");e&&!i?(t.removeClass("disabled"),o.removeClass("disabled")):!e&&i&&(t.addClass("disabled"),o.addClass("disabled"))},o.prototype.valueChanged=function(t,e,i){return t[e]!==i&&(t[e]=i,!0)},o.prototype.firstTitle=function(){return this.$el.find(".pane-legend-line.pane-legend-wrap:first-child")},o.prototype.updateTitle=function(){var t,i,o,n,r,s,a,l,c,h;for(o=this._itemsBinding.length;o--;)i=this._itemsBinding[o],Array.isArray(i.cell)||(i.last||(i.last={}),n=i.last,r=i.source,t=r.properties().visible.value(),this.valueChanged(n,"sourceVisible",t)&&this.setItemEnabled(i.cell,t),s=i.value.color(),a=r!==this._model.mainSeries()&&r===this._model.selectedSource()?"bold":"normal",l=i.value.text(),e.enabled("fundamental_widget")&&(c=this._model.mainSeries(),h=c.symbolInfo(),l=(h?h.name:c.actualSymbol())+" "+l),(this.valueChanged(n,"color",s)||this.valueChanged(n,"fontWeight",a)||this.valueChanged(n,"text",l))&&i.cell.text(TradingView.clean(l,!0)).css({color:s,"border-color":s,"font-weight":a}));this._chart.resizeIndicator()},o.prototype.update=function(t){var e,i,o,n,s,a,l,c,h,u;for(this.updateTitle(),c=this._itemsBinding.length;c--;)if(n=this._itemsBinding[c],e=n.cell,i=n.titleCells,o=n.source.properties().visible.value(),Array.isArray(e)){for(n.last||(n.last={},n.last.dwView||(n.last.dwView={})),h=n.last,s=n.value.items(),u=this.valueChanged(h,"sourceVisible",o),a=0;a=0;e--)this._chart._paneWidgets[e].legendWidget.updateLayout()},t.exports=o}).call(e,i(7))},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,e,i){(function(e,o){"use strict" +;function n(t){this._chartWidgetCollection=t,this._bindings=[],this._hasAlertWathcedValue=null,this._$templatesButton=null,this._currentProperties=null,this._toolbarWidgets=[],this._clearProeprtiesOnHideTimeoutId=null,this._init(),this.attachHandlers()}function r(t,e){t.push({id:e,widget:$('
'+e+"
")[0]})}function s(t,e){t.push({id:e.value,widget:$(e.iconSvgCode)[0]})}function a(t,e){return $("
").addClass("tv-linetool-properties-toolbar__icon").addClass(e).append(t)[0]}function l(t){return a(t,"tv-linetool-properties-toolbar__icon--line-props")}var c,h,u,d,p,_,f,m,g,v,y,b,S,w,T,x=i(10),C=x.PropertyPage,P=x.ColorBinding,L=i(133).BarsMarksContainer,I=i(3).LineDataSource,k=i(44),A=i(268),M=i(103).bindPopupMenu,E=i(11).DefaultProperty,V=i(1117).GroupButtonFloatingToolbar,D=i(172).showEditObjectDialog,O=i(18).LineEnd;i(200),i(637),n.prototype.activeChartWidget=function(){return this._chartWidgetCollection.activeChartWidget.value()},n.prototype.selectedSource=function(){return this._chartWidgetCollection.selectedSource.value()},n.prototype._init=function(){this._floatingToolbar=new V({addClass:"tv-linetool-properties-toolbar",defaultPosition:{top:window.headerChartPanel.outerHeight()+15,left:window.innerWidth/2},positionSettingsKey:"properties_toolbar.position"}),this._floatingToolbar.onWidgetStateChanged().subscribe(this,this._onPropertyChangedInToolbar),this._sourceActions=this._createSourceActions(),this._sourceActions.forEach(function(t){this._floatingToolbar.addWidget(t.button)},this)},n.prototype._bindPopupMenuDirection=function(){return this._floatingToolbar.isVertical()?"right":"down"},n.prototype._onPropertyChangedInToolbar=function(t,e){this._currentProperties&&this.activeChartWidget().model().setProperty(this._currentProperties[t],e)},n.prototype._onPropertyChanged=function(t,e){this._floatingToolbar.setGroupedWidgetState(t,e.value())},n.prototype._hideAllSourceActions=function(){this._sourceActions.forEach(function(t){this._floatingToolbar.hideWidget(t.button)},this),this._sourceActionsVisible=!1},n.prototype._updateSourceActionsVisibility=function(t){this._sourceActionsVisible=!1,this._sourceActions.forEach(function(e){!e.isVisibleForSource||e.isVisibleForSource(t)?(this._floatingToolbar.showWidget(e.button),this._sourceActionsVisible=!0):this._floatingToolbar.hideWidget(e.button)},this)},n.prototype.attachHandlers=function(){k.tool.subscribe(this.onToolChanged.bind(this),{callWithLast:!0}),this._chartWidgetCollection.selectedSource.subscribe(this.onSourceChanged.bind(this))},n.prototype.onToolChanged=function(t,e){if(t&&-1!==t.toLowerCase().indexOf("linetool")){var e=e instanceof E?e:new E(t.toLowerCase());this._hideAllSourceActions(),this.showPropertiesOf(t,e),this.showTemplatesOf({tool:t,properties:e}),this._updateVisibility()}else this.selectedSource()?this.onSourceChanged(this.selectedSource()):this.hide()},n.prototype.findSourceOnWidget=function(t){var e,i,o,n +;for(e=0;e'+i(1239)+'
',buttonClass:"tv-linetool-properties-toolbar__button apply-common-tooltip",defaultsCallback:function(){r.restoreFactoryDefaults(),s.showPropertiesOf(n,r)},saveAsText:$.t("Save Drawing Template As..."),applyDefaultText:$.t("Apply Default Drawing Template"),getDataForSaveAs:o?function(){return o.template()}:null,popupActiveClass:"i-dropped",popupDirection:this._bindPopupMenuDirection.bind(this)}),this._$templatesButton=this._templatesList.createButton().attr("title",$.t("Templates")),this._floatingToolbar.addWidget(this._$templatesButton[0],{index:0})),this._templatesVisible=!0)},n.prototype.templatesList=function(){return this._templatesList},n.prototype._createButton=function(t){var e,i,o;return t=t||{},e=document.createElement("div"),e.setAttribute("title",t.title),e.className+="tv-linetool-properties-toolbar__button apply-common-tooltip",e.addEventListener("click",t.callback),t.svgIcon&&(i=document.createElement("div"),i.classList.add("tv-linetool-properties-toolbar__icon"),i.appendChild(t.svgIcon),e.appendChild(i)),t.addCaret&&(o=document.createElement("div"),o.className="tv-caret tv-caret--small tv-caret--colored tv-linetool-properties-toolbar__caret",e.appendChild(o)),e},n.prototype._createSettingsButton=function(){var t=this;return this._createButton({title:$.t("Settings"),callback:function(){ +D(t.selectedSource(),t.activeChartWidget().model(),{onWidget:t.activeChartWidget()._options.onWidget})},svgIcon:$(i(1203))[0]})},n.prototype._createZOrderButton=function(){var t=this._createButton({title:$.t("Visual Order"),callback:function(){t.classList.contains("i-dropped")||$(t).trigger("button-popup",[this._getZOrderActions()])}.bind(this),svgIcon:$(i(1232))[0],addCaret:!0});return M($(t),null,{direction:this._bindPopupMenuDirection.bind(this),event:"button-popup",reverse:!1,notCloseOnButtons:!0,activeClass:"i-dropped"}),t},n.prototype._createCloneButton=function(){var t,o=$.t("Clone");return e.enabled("datasource_copypaste")&&(o+=", "+$.t("Copy")),e.enabled("support_multicharts")&&(o+=", "+$.t("Sync")),t=this._createButton({title:o,callback:function(){t.classList.contains("i-dropped")||$(t).trigger("button-popup",[this._getCloneActions()])}.bind(this),svgIcon:$(i(1231))[0],addCaret:!0}),M($(t),null,{direction:this._bindPopupMenuDirection.bind(this),event:"button-popup",reverse:!1,notCloseOnButtons:!0,activeClass:"i-dropped"}),t},n.prototype._createLockButton=function(){var t=this._createButton({title:$.t("Lock"),callback:function(){this.activeChartWidget().toggleLockSelectedObject()}.bind(this),svgIcon:$(i(509))[0]});return this._lockChangeListener=function(e){t.classList.toggle("i-active",!!e.value())},t},n.prototype._createHideButton=function(){return this._createButton({title:$.t("Hide"),callback:function(){this.activeChartWidget().hideSelectedObject()}.bind(this),svgIcon:$(i(1233))[0]})},n.prototype._createRemoveButton=function(){return this._createButton({title:$.t("Remove"),callback:function(){this.activeChartWidget().removeSelectedSource()}.bind(this),svgIcon:$(i(1332))[0]})},n.prototype._createSourceActions=function(){var t=[];return e.enabled("property_pages")&&t.push({button:this._createSettingsButton()}),t.push({button:this._createZOrderButton()},{button:this._createCloneButton(),isVisibleForSource:function(t){var e=TradingView.className(t.constructor);return!this.activeChartWidget().model().model().isSingleInstanceLineTool(e)}.bind(this)},{button:this._createLockButton()},{button:this._createHideButton()},{button:this._createRemoveButton()}),t},n.prototype._getCloneActions=function(){var t=this.activeChartWidget().model(),i=this.selectedSource(),o=[];return i.properties().clonable.value()&&o.push({title:$.t("Clone"),action:function(){t.cloneLineTool(i)}}),e.enabled("datasource_copypaste")?(o.push({title:$.t("Copy"),shortcut:"Ctrl-C",action:function(){t.copySourceToClip(i)}}),e.enabled("support_multicharts")?(i.linkKey?o.push({title:$.t("Stop syncing"),action:function(){t.unlinkLine(i)}}):o.push({title:$.t("Sync to all charts"),action:function(){t.copyToOtherCharts(i)}}),o):o):o},n.prototype._getZOrderActions=function(){var t=[],e=this.selectedSource(),i=this.activeChartWidget().model(),o={title:$.t("Bring to Front"),action:function(){i.bringToFront(e)}},n={title:$.t("Send to Back"),action:function(){i.sendToBack(e)}},r={title:$.t("Bring Forward"),action:function(){i.changeZOrder(e,1)}},s={ +title:$.t("Send Backward"),action:function(){i.changeZOrder(e,-1)}},a=i.paneForSource(this.selectedSource()),l=a.getZOrderMinMax();return e.zorder()===l.minZOrder&&(n.disabled=!0,s.disabled=!0),e.zorder()===l.maxZOrder&&(r.disabled=!0,o.disabled=!0),t.push(o,n,r,s),t},n.prototype._getPossibleProperty=function(t){var e,i,o=[],r=this._defaultToolProperties();for(e=0;e=0;--n)if(a=i[n],l=e[a.name],"function"!=typeof(c=a.showIf)||c(l,e)){if(!l)continue;if(this._propertiesVisible=!0,h=[],"combobox"!==a.inputType){u=this.colorPropertyControl(l,a,e),this._floatingToolbar.addWidget(u[0],{index:this._$templatesButton?1:0}),this._toolbarWidgets.push(u[0]);continue}a.simple?a.comboboxOptions.forEach(r.bind(null,h)):a.comboboxOptions.forEach(s.bind(null,h)),a.propertyProxy&&(l=a.propertyProxy(e,this.activeChartWidget().model())),o[a.name]=l,l.subscribe(this,this._onPropertyChanged.bind(this,a.name,l)),this._floatingToolbar.addGroupedWidget({id:a.name,currentStateId:l.value(),stateWidgetAddClass:"tv-linetool-properties-toolbar__sub-widget",states:h,widgetAddClass:"tv-linetool-properties-toolbar__grouped-button",tooltip:a.title},{index:this._$templatesButton?1:0})}this._currentProperties=o}},n.prototype._updateVisibility=function(){this._propertiesVisible||this._sourceActionsVisible||this._templatesVisible?this._show():this.hide()},n.prototype._clearProperties=function(){this._currentProperties&&(this._clearProeprtiesOnHideTimeoutId&&(clearTimeout(this._clearProeprtiesOnHideTimeoutId),this._clearProeprtiesOnHideTimeoutId=null),Object.keys(this._currentProperties).forEach(function(t){this._currentProperties[t].unsubscribeAll(this),this._floatingToolbar.removeGroupedWidget(t)},this),this._currentProperties=null,this._toolbarWidgets.forEach(function(t){this._floatingToolbar.removeWidget(t)},this),this._toolbarWidgets=[],this.clearBindings())},n.prototype.hide=function(){this._floatingToolbar.hide(),this._clearProeprtiesOnHideTimeoutId=setTimeout(this._clearProperties.bind(this),this._floatingToolbar.hideDuration())},n.prototype._show=function(){this._floatingToolbar.show()},n.prototype.refresh=function(){this.onSourceChanged(this.selectedSource())},n.prototype._setupToggleLockButton=function(t){t!==this._selectedSourceBk&&(this._selectedSourceBk&&this._selectedSourceBk.properties().frozen&&this._selectedSourceBk.properties().frozen.unsubscribe(this,this._lockChangeListener), +t&&t.properties().frozen&&(t.properties().frozen.subscribe(this,this._lockChangeListener),this._lockChangeListener(t.properties().frozen)),this._selectedSourceBk=t)},n.prototype.bindControl=function(t){this._bindings.push(t)},n.prototype.clearBindings=function(t){for(var e=this._bindings.length;e--;)this._bindings[e].destroy();this._bindings.length=0},n.prototype.colorPropertyControl=function(t,e,i){var o,r,s=C.prototype.createColorPicker({addClass:"tv-linetool-properties-toolbar__color-picker apply-common-tooltip",direction:this._bindPopupMenuDirection.bind(this)});return s.attr("title",e.title),o=s.find("input"),r=$(e.iconSvgCode),r.on("click",function(t){o.data("tvcolorpicker")||o.focus()}),$(document).on("click",function(t){o.data("tvcolorpicker")?o.addClass("i-active"):o.removeClass("i-active")}),o.after(r),this.bindControl(new P(s,t,!0,this.activeChartWidget().model(),null,n.getTransparency(e,i))),"string"==typeof e.addClass&&s.addClass(e.addClass),s},n.getTransparency=function(t,e){if(t.transparency)return t.transparencyField?e[t.transparencyField].value():e.transparency.value()},n.prototype.createLineEndPropertyProxy=function(t,e){return function(i,r){var s,a;return s=i[e]&&i[e].value()?n.LINE_EXTEND:i[t].value(),a=new o(s),a.subscribe(this,function(o){var n=o.value();n<2?(r.beginUndoMacro(""),i[t].setValue(n),i[e]&&i[e].setValue(!1),r.endUndoMacro()):(r.beginUndoMacro(""),i[t].setValue(O.Normal),i[e]&&i[e].setValue(!0),r.endUndoMacro())}),a}},n.LINE_EXTEND=42,c=l(i(1226)),h=l(i(1227)),u=l(i(1228)),d=l(i(1229)),p=l(i(1219)),_=l(i(1218)),f=l(i(1222)),m=l(i(1220)),g=l(i(1221)),v=l(i(1225)),y=l(i(1223)),b=l(i(1224)),S=i(1234),w=i(1198),T=i(1206),n.prototype._defaultToolProperties=function(){return[{name:"color",inputType:"colorPicker",iconSvgCode:S,title:$.t("Color")},{name:"linecolor",inputType:"colorPicker",iconSvgCode:S,title:$.t("Color")},{name:"backgroundColor",inputType:"colorPicker",iconSvgCode:w,title:$.t("Background Color"),transparency:!0},{name:"linewidth",inputType:"combobox",comboboxOptions:[{value:1,iconSvgCode:c},{value:2,iconSvgCode:h},{value:3,iconSvgCode:u},{value:4,iconSvgCode:d}],title:$.t("Width")},{name:"linestyle",title:$.t("Style"),inputType:"combobox",comboboxOptions:[{value:0,iconSvgCode:c},{value:1,iconSvgCode:p},{value:2,iconSvgCode:_}]},{name:"leftEnd",title:$.t("Left End"),inputType:"combobox",comboboxOptions:[{value:O.Normal,iconSvgCode:f},{value:O.Arrow,iconSvgCode:m},{value:n.LINE_EXTEND,iconSvgCode:g}],propertyProxy:this.createLineEndPropertyProxy("leftEnd","extendLeft")},{name:"rightEnd",title:$.t("Right End"),inputType:"combobox",comboboxOptions:[{value:O.Normal,iconSvgCode:v},{value:O.Arrow,iconSvgCode:y},{value:n.LINE_EXTEND,iconSvgCode:b}],propertyProxy:this.createLineEndPropertyProxy("rightEnd","extendRight")}]},n.prototype._riskPropertiesExceptionCases=function(){return[{name:"textcolor",title:$.t("Text color"),inputType:"colorPicker",iconSvgCode:T},{name:"profitBackground",title:$.t("Profit Background Color"),inputType:"colorPicker",iconSvgCode:w,transparency:!0, +transparencyField:"profitBackgroundTransparency"},{name:"stopBackground",title:$.t("Stop Background Color"),inputType:"colorPicker",iconSvgCode:w,transparency:!0,transparencyField:"stopBackgroundTransparency"},{name:"linecolor",title:$.t("Border color"),inputType:"colorPicker",iconSvgCode:S}]},n.prototype._elliottPropertiesExceptionCases=function(){return[{name:"color",title:$.t("Color"),inputType:"colorPicker",iconSvgCode:S}]},n.prototype._rangeExceptionCases=function(){return[{name:"linecolor",inputType:"colorPicker",iconSvgCode:S,title:$.t("Color")},{name:"backgroundColor",inputType:"colorPicker",iconSvgCode:w,title:$.t("Background Color"),transparency:!0,transparencyField:"backgroundTransparency"},{name:"linewidth",inputType:"combobox",comboboxOptions:[{value:1,iconSvgCode:c},{value:2,iconSvgCode:h},{value:3,iconSvgCode:u},{value:4,iconSvgCode:d}],title:"Width"}]},n.prototype._textPropertiesExceptionCases=function(){return[{name:"color",title:$.t("Text color"),inputType:"colorPicker",iconSvgCode:T},{name:"backgroundColor",title:$.t("Background Color"),inputType:"colorPicker",iconSvgCode:w,showIf:function(t,e){return!e||!e.fillBackground||!!e.fillBackground.value()}},{name:"borderColor",title:$.t("Border Color"),inputType:"colorPicker",iconSvgCode:S},{name:"bordercolor",title:$.t("Border Color"),inputType:"colorPicker",iconSvgCode:S},{name:"fontsize",title:$.t("Font Size"),inputType:"combobox",simple:!0,addClass:"simple fontsize-dropdown",comboboxOptions:[10,11,12,14,16,20,24,28,32,40]}]},n.prototype._notePropertiesExceptionCases=function(){return[{name:"markerColor",title:$.t("Marker Color"),inputType:"colorPicker",iconSvgCode:S},{name:"textColor",title:$.t("Text color"),inputType:"colorPicker",iconSvgCode:T},{name:"fontSize",title:$.t("Font Size"),inputType:"combobox",simple:!0,addClass:"simple fontsize-dropdown",comboboxOptions:[10,11,12,14,16,20,24,28,32,40]}]},n.prototype._brushPropertiesExceptionCases=function(){return[{name:"linecolor",inputType:"colorPicker",iconSvgCode:S,title:$.t("Color")},{name:"backgroundColor",inputType:"colorPicker",iconSvgCode:w,transparency:!0,showIf:function(t,e){return e.fillBackground.value()},title:$.t("Background Color")},{name:"linewidth",inputType:"combobox",comboboxOptions:[{value:1,iconSvgCode:c},{value:2,iconSvgCode:h},{value:3,iconSvgCode:u},{value:4,iconSvgCode:d}],title:$.t("Line Width")},{name:"leftEnd",title:$.t("Left End"),inputType:"combobox",comboboxOptions:[{value:O.Normal,iconSvgCode:f},{value:O.Arrow,iconSvgCode:m}],propertyProxy:this.createLineEndPropertyProxy("leftEnd","extendLeft")},{name:"rightEnd",title:$.t("Right End"),inputType:"combobox",comboboxOptions:[{value:O.Normal,iconSvgCode:v},{value:O.Arrow,iconSvgCode:y}],propertyProxy:this.createLineEndPropertyProxy("rightEnd","extendRight")}]},n.prototype._oneColorForAllLines=function(){return[{name:"collectibleColors",inputType:"colorPicker",iconSvgCode:S,title:$.t("One color for all lines")}]},n.prototype._createToolExceptionCases=function(){return{LineToolRegressionTrend:[], +LineToolGannSquare:n.prototype._oneColorForAllLines(),LineToolFibTimeZone:n.prototype._oneColorForAllLines(),LineToolBrush:n.prototype._brushPropertiesExceptionCases(),LineToolPolyline:n.prototype._brushPropertiesExceptionCases(),LineToolText:n.prototype._textPropertiesExceptionCases(),LineToolTextAbsolute:n.prototype._textPropertiesExceptionCases(),LineToolBalloon:n.prototype._textPropertiesExceptionCases(),LineToolCallout:n.prototype._textPropertiesExceptionCases(),LineToolPriceLabel:n.prototype._textPropertiesExceptionCases(),LineToolArrowMarkLeft:[],LineToolArrowMarkRight:[],LineToolArrowMarkUp:[],LineToolArrowMarkDown:[],LineToolFlagMark:[],LineToolThumbUp:[],LineToolThumbDown:[],LineToolElliottCircle:n.prototype._elliottPropertiesExceptionCases(),LineToolElliottSubminuette:n.prototype._elliottPropertiesExceptionCases(),LineToolElliottMinor:n.prototype._elliottPropertiesExceptionCases(),LineToolElliottMinorRetr:n.prototype._elliottPropertiesExceptionCases(),LineToolElliottMajorRetr:n.prototype._elliottPropertiesExceptionCases(),LineToolDateRange:n.prototype._rangeExceptionCases(),LineToolPriceRange:n.prototype._rangeExceptionCases(),LineToolDateAndPriceRange:n.prototype._rangeExceptionCases(),LineToolIcon:[{name:"color",title:$.t("Color"),inputType:"colorPicker",iconSvgCode:w}],LineToolNote:n.prototype._notePropertiesExceptionCases(),LineToolNoteAbsolute:n.prototype._notePropertiesExceptionCases(),LineToolThreeDrivers:[{name:"color",title:$.t("Text color"),inputType:"colorPicker",iconSvgCode:S}],LineToolRiskRewardLong:n.prototype._riskPropertiesExceptionCases(),LineToolRiskRewardShort:n.prototype._riskPropertiesExceptionCases(),LineToolBarsPattern:[{name:"color",title:$.t("Color"),inputType:"colorPicker",iconSvgCode:w}],LineToolProjection:[{name:"color1",title:$.t("Background color 1"),inputType:"colorPicker",iconSvgCode:w,transparency:!0},{name:"color2",title:$.t("Background color 2"),inputType:"colorPicker",iconSvgCode:w,transparency:!0},{name:"linewidth",inputType:"combobox",comboboxOptions:[{value:1,iconSvgCode:c},{value:2,iconSvgCode:h},{value:3,iconSvgCode:u},{value:4,iconSvgCode:d}]}],LineToolFibCircles:n.prototype._oneColorForAllLines(),LineToolFibChannel:n.prototype._oneColorForAllLines(),LineToolFibSpeedResistanceArcs:n.prototype._oneColorForAllLines(),LineToolFibRetracement:n.prototype._oneColorForAllLines(),LineToolFibSpeedResistanceFan:n.prototype._oneColorForAllLines(),LineToolTrendBasedFibTime:n.prototype._oneColorForAllLines(),LineToolFibWedge:n.prototype._oneColorForAllLines(),LineToolGannComplex:n.prototype._oneColorForAllLines(),LineToolGannFan:n.prototype._oneColorForAllLines(),LineToolPitchfan:n.prototype._oneColorForAllLines(),LineToolPitchfork:n.prototype._oneColorForAllLines(),LineToolSchiffPitchfork2:n.prototype._oneColorForAllLines(),LineToolSchiffPitchfork:n.prototype._oneColorForAllLines(),LineToolInsidePitchfork:n.prototype._oneColorForAllLines(),LineToolTrendBasedFibExtension:n.prototype._oneColorForAllLines()}},t.exports=n}).call(e,i(7),i(52))},,,,,,,,function(t,e,i){ +(function(e,o,n){"use strict";function r(){this.title=$.t("Load Chart Layout"),this._removeDialogShown=!1,this.options={},this.matchedItems=[],this.itemsData=[],this.qs=new r.QuickSearch(this.fieldsExtractor,this.searchResult.bind(this)),this.sortObj=new r.SortObject(this.modifiedCompare),this.nameSort=new r.SortObject(this.nameCompare),this.symbolSort=new r.SortObject(this.symbolCompare),this.toolsSort=new r.SortObject(this.toolsCompare),this.offset=0,c.on("chart_loaded",r.onChartLoaded,this)}var s,a,l,c=i(43),h=i(96).createDialog,u=i(478).createSearchControl,d=i(319).regExpEscape;s='
{{#withFavs}}
'+i(329)+''+i(328)+'
{{/withFavs}}
{{title}}
{{modifiedDate}}
{{chartSymbol}}
'+i(109)+"
",a='
'+$.t("Chart Layout Name")+'
'+$.t("Last Modified")+'
'+$.t("Active Symbol")+'
',l=50,r.onChartLoaded=function(){this.itemsData&&this.itemsData.length>0&&this._refreshChartsList()},r.QuickSearch=function(t,e){this.fieldsExtractor=t,this.callback=e,this.regExps=[]}, +r.QuickSearch.prototype.onInput=function(t){this.query=t,this.createRegexps(t),this.search()},r.QuickSearch.prototype.createRegexps=function(t){this.regExps=[],t&&this.regExps.push(RegExp("("+t.split("").map(function(t){return d(t)}).join(")(.*?)(")+")","i"))},r.QuickSearch.prototype.match=function(t){var e,i,o,n;for(e=0;e-1&&this.itemsData.splice(e,1),this.setChartsData(this.itemsData)},r.prototype.modifiedCompare=function(t,e){var i=t.modified,o=e.modified;return n(o).diff(n(i))},r.prototype.nameCompare=function(t,e){return t.title.localeCompare(e.title)},r.symbolWrap=function(t){return""===t.symbol?"multiple charts":t.symbol+" "+t.interval},r.prototype.symbolCompare=function(t,e){return r.symbolWrap(t).localeCompare(r.symbolWrap(e))},r.prototype.toolsCompare=function(t,e){var i=t.toolsCount,o=e.toolsCount;return i=this.matchedItems.length)){for(t=Math.min(this.offset+l,this.matchedItems.length),e="",i=this.offset;i");r.append(n.$control),r.append('
'),this.content=$("
").appendTo(r.find(".tv-load-chart-dialog-table")),this.header=this.layoutHeader(),this.setSort(),this.itemsListContainer=$('
').data({ +localScroll:!0}).appendTo(this.content),this.itemsList=$('
').appendTo(this.itemsListContainer),$('
').text($.t("There are no saved charts")).appendTo(this.itemsListContainer),this.itemsListContainer.on("click",".js-remove-button",function(t){var e=i._findItemById($(t.currentTarget).data("id"));i._onRemoveButtonClicked(e,t),t.stopPropagation()}).on("click",".js-table-row",function(t){var e=i._findItemById($(t.currentTarget).data("id"));i._onItemClicked(e,t),t.preventDefault()}).on("scrolltoend",function(){i.showMoreData()}),o.enabled("items_favoriting")&&this.itemsListContainer.on("click",".js-empty-star",function(t){var e=i._findItemById($(t.currentTarget).data("id"));i._onFavoriteClicked(e,!0,t),t.stopPropagation()}).on("click",".js-filled-star",function(t){var e=i._findItemById($(t.currentTarget).data("id"));i._onFavoriteClicked(e,!1,t),t.stopPropagation()}),this.header.children(".tv-load-chart-dialog-table__column--header").click($.proxy(this,"sortClick")),n.inputChangedDelegate.subscribe(this.qs,this.qs.onInput),this.favorites=e,this.setChartsData(t),this.qs.onInput(""),this._dialog&&this._dialog.close(),this._dialog=h({title:this.title,width:600,height:550,content:r,contentWrapTemplate:"
",destroyOnClose:!0,withScroll:!1,isClickOutFn:function(){return!this._removeDialogShown&&void 0}.bind(this)}),this._dialog.open()},r.prototype.highlightOccurrences=function(t){0!==t.length&&this.itemsList.children(".js-table-row").each(function(){var e,i=$(this).find(".js-column-name"),o=i.text();o=r.highlightText(o,t),i.html(o),e=$(this).find(".js-column-symbol"),o=e.text(),o=r.highlightText(o,t),e.html(o)})},r.highlightText=function(t,e){var i,o,n,r,s,a;if(t=$("
").text(t).html(),0===e.length)return t;for(i=0;i$'+a+"":"$"+a;if((r=t.replace(o,n))&&r!==t)return r}},t.exports=r}).call(e,i(54),i(7),i(36))},,,,,function(t,e,i){"use strict";function o(t,e,i){this._model=e,this._paneWidget=t,this._chart=t._chart,this._mainDiv=i,this.jqDiv=$('
'),this._initVisibility(),this.update(),this.jqDiv.appendTo(i)}var n=i(309);o.prototype.update=function(){var t,e,o,n,r,s,a,l;if(!this._visible||!this._chart.isActive())return void this.jqDiv[0].classList.add("pane-controls--hidden");if(this.jqDiv[0].classList.remove("pane-controls--hidden"),t=this,e=t._model,o=t._paneWidget.state(),n=e.panes().indexOf(o),this.jqDiv.toggleClass("toppane",0===n||this._chart.isMaximizedPane()),r=!1,!o.containsMainSeries()&&!this._chart.isMaximizedPane()){for(s=0,a=o.dataSources(),l=a.length;l--;)if(a[l]instanceof TradingView.Study&&++s>1){r=!0;break}a=null}n>0&&!this._chart.isMaximizedPane()?(this._$upButton||(this._$upButton=$(document.createElement("a")).addClass("pane-legend-icon up").append($(i(1217)).attr({width:14,height:14})).attr("title",$.t("Move Up")).on("click",function(){ +t._model.rearrangePanes(t._chart,t._model.panes().indexOf(t._paneWidget.state()),"up")})),this._$upButton.appendTo(this.jqDiv)):this._$upButton&&this._$upButton.detach(),n1&&!this._chart.isMaximizedPane()?(this._$maximizeButton||(this._$maximizeButton=$(document.createElement("a")).addClass("pane-legend-icon maximize").append($(i(1215)).attr({width:14,height:14})).attr("title",$.t("Toggle Maximize Pane")).on("click",function(){t._chart.toggleMaximizePane(t._paneWidget)})),this._$maximizeButton.appendTo(this.jqDiv)):this._$maximizeButton&&this._$maximizeButton.detach(),this._model.panes().length>1&&this._chart.isMaximizedPane()?(this._$restoreButton||(this._$restoreButton=$(document.createElement("a")).addClass("pane-legend-icon restore").append($(i(1216)).attr({width:14,height:14})).attr("title",$.t("Toggle Maximize Pane")).on("click",function(){t._chart.toggleMaximizePane(t._paneWidget)})),this._$restoreButton.appendTo(this.jqDiv)):this._$restoreButton&&this._$restoreButton.detach()},o.prototype.destroy=function(){this._visibilityProperty&&(this._visibilityProperty.unsubscribe(this,this._onVisibilityPropertyChange),this._visibilityProperty=null),this._boundMouseHandler&&(this._mainDiv[0].removeEventListener("mouseenter",this._boundMouseHandler,!1),this._mainDiv[0].removeEventListener("mouseleave",this._boundMouseHandler,!1),this._boundMouseHandler=null),this.jqDiv.remove()},o.prototype._initVisibility=function(){this._visible=!0,this._visibilityProperty=n.actualBehavior(),this._visibilityProperty.subscribe(this,this._onVisibilityPropertyChange),this._onVisibilityPropertyChange()},o.prototype._onVisibilityPropertyChange=function(){var t=this._visibilityProperty.value();"alwaysOn"===t||"alwaysOff"===t?(this._visible="alwaysOn"===t,this._boundMouseHandler&&(this._mainDiv[0].removeEventListener("mouseenter",this._boundMouseHandler),this._mainDiv[0].removeEventListener("mouseleave",this._boundMouseHandler),this._boundMouseHandler=null)):(this._boundMouseHandler||(this._boundMouseHandler=this._visibilityMouseHandler.bind(this),this._mainDiv[0].addEventListener("mouseenter",this._boundMouseHandler),this._mainDiv[0].addEventListener("mouseleave",this._boundMouseHandler)),this._visible=!1), +this.update()},o.prototype._visibilityMouseHandler=function(t){this._visible="mouseenter"===t.type,this.update()},t.exports=o},function(t,e,i){"use strict";function o(t,e,i){this.chart=t,this.paneA=t.paneWidgets()[e],this.paneB=t.paneWidgets()[i],this.jqRow=$(document.createElement("tr")),this.jqRow.height(o.HEIGHT),this.jqCell=$(document.createElement("td")),this.jqCell.appendTo(this.jqRow),this.jqCell.addClass("pane-separator"),this.jqCell.attr("colspan","3"),this.jqCell.css("background",this.chart.properties().scalesProperties.lineColor.value()),this.jqCell.click(function(){}),this.handle=$('
').appendTo(this.jqCell),r(this.handle,this)}var n,r;i(626),n=i(56).clamp,r=i(144).setMouseEventHandler,o.HEIGHT=1,o.prototype.hide=function(){this.jqRow.addClass("js-hidden")},o.prototype.show=function(){this.jqRow.removeClass("js-hidden")},o.prototype.mouseDownEvent=function(t){(0===t.button||Modernizr.touch)&&(this.startY=t.pageY,this.deltaY=0,this.totalHeight=this.paneA.size.h+this.paneB.size.h,this.totalStretch=this.paneA.stretchFactor()+this.paneB.stretchFactor(),this.prevStretchA=this.paneA.stretchFactor(),this.minPaneHeight=30,this.maxPaneHeight=this.totalHeight-this.minPaneHeight,this.pixelStretchFactor=this.totalStretch/this.totalHeight)},o.prototype.pressedMouseMoveEvent=function(t){var e,i,o,r;(0===t.button||Modernizr.touch)&&(t.preventDefault(),this.deltaY=t.pageY-this.startY,e=this.paneA.size.h,i=n(e+this.deltaY,this.minPaneHeight,this.maxPaneHeight),o=i*this.pixelStretchFactor,r=this.totalStretch-o,this.paneA.setStretchFactor(o),this.paneB.setStretchFactor(r),this.chart._adjustSize(),this.paneA.size.h!==e&&(this.startY=t.pageY),this.chart.paint())},o.prototype.mouseUpEvent=function(t){(0===t.button||Modernizr.touch)&&(this.chart._model.addPaneStretchFactorUndoCommand(this.paneA._state,this.paneB._state,this.prevStretchA,this.paneA.stretchFactor()),this.startY=0,this.deltaY=0,this.totalHeight=0,this.totalStretch=0,this.minPaneHeight=0,this.maxPaneHeight=0,this.pixelStretchFactor=0)},o.prototype.update=function(){this.jqCell.css("background",this.chart.properties().scalesProperties.lineColor.value())},o.prototype.paint=function(){},o.prototype.image=function(){var t={},e=o.HEIGHT,i=this.paneA.lhsPriceAxisWidget.size.w,n=this.paneA.size.w,r=this.paneA.rhsPriceAxisWidget.size.w,s=$('')[0],a=s.getContext("2d");return a.fillStyle=this.chart.properties().scalesProperties.lineColor.value(),a.fillRect(0,0,i,e),t.leftAxis={content:s.toDataURL(),contentWidth:i,contentHeight:e},s=$('')[0],a=s.getContext("2d"),a.fillStyle=this.chart.properties().scalesProperties.lineColor.value(),a.fillRect(0,0,n,e),t.content=s.toDataURL(),t.contentWidth=n,t.contentHeight=e,s=$('')[0],a=s.getContext("2d"),a.fillStyle=this.chart.properties().scalesProperties.lineColor.value(),a.fillRect(0,0,r,e),t.rightAxis={content:s.toDataURL(),contentWidth:r,contentHeight:e},t},t.exports=o},function(t,e,i){(function(e){ +"use strict";function o(t,e,i,o){this._chart=t,this.dialog=t.dialog,this._state=e,this.verticalTouchScroll=o,this._disableContextMenu=!!i,this.lhsPriceAxisWidget=new c(this,c.LHS),this.rhsPriceAxisWidget=new c(this,c.RHS),this.jqPane=$(document.createElement("td")),this.jqPane.addClass("chart-markup-table"),this.jqPane.addClass("pane"),this._dv=$("
"),this._dv.css("width","100%"),this._dv.css("height","100%"),this._dv.css("position","relative"),this._dv.css("overflow","hidden"),this._dv.appendTo(this.jqPane),this.canvas=D(this._dv,new O(16,16)),$(this.canvas).css("position","absolute"),$(this.canvas).css("z-order","2"),$(this.canvas).css("left",0),$(this.canvas).css("top",0),this.ctx=this.canvas.getContext("2d"),this.top_canvas=D(this._dv,new O(16,16)),$(this.top_canvas).css("position","absolute"),$(this.top_canvas).css("z-order","1"),$(this.top_canvas).css("left",0),$(this.top_canvas).css("top",0),this.top_ctx=this.top_canvas.getContext("2d"),this._zoomSelector=$("
"),this._zoomSelector.addClass("zoom-selector"),this._zoomSelector.css("display","none"),this._zoomSelector.appendTo(this._dv),this._tooltipSelector=$("
"),this._tooltipSelector.addClass("tooltip tooltip-selector tooltip-selector-hidden"),this._tooltipSelector.appendTo(this._dv),this.legendWidget=new l(this,this._chart.model(),this._chart._jqMainDiv),this.jqRow=$(document.createElement("tr")),this.lhsPriceAxisWidget.jqCell.appendTo(this.jqRow),this.jqPane.appendTo(this.jqRow),this.legendWidget.$el.appendTo(this._dv),this.rhsPriceAxisWidget.jqCell.appendTo(this.jqRow),this.setCursorForTool(),B($(this.top_canvas),this,!0,o),e&&!this._chart.readOnly()&&(this.paneControls=new L(this,this._chart.model(),this._dv)),this.updateScalesVisibility(),this.actions=[],this.readonlyActions=[],this._onKeyUpListener=this._onKeyUpListener.bind(this),this._lineCancelledCallback=this._lineCancelledCallback.bind(this),$(window).on("keyup.panewidget",this._onKeyUpListener),this._chart.withModel(this,this._lineCancelledCallback),this._overlays={},this._contextMenuX=0,this._contextMenuY=0,this._lockDrawingsProperty=C.lockDrawings(),this._chart.withModel(this,function(){var t=this._chart.model();t.onSimpleZoomIn().subscribe(this,this._updateCrosshairOnZoom),t.onSimpleZoomOut().subscribe(this,this._updateCrosshairOnZoom)})}var n,r,s,a,l,c,h,u,d,p,_,f,m,g,v,y,b,S,w,T,x,C,P,L,I,k,A,M,E,V,D,O,B,R,z,F,N;i(627),n=i(1).Point,r=i(497).UndoMacroCommand,s=i(76).UndoHistory,a=i(61).Study,l=i(756),c=i(269),h=i(83).LineToolOrder,u=i(83).LineToolPosition,d=i(3).LineDataSource,p=i(83).LineToolBrush,_=i(133).BarsMarksContainer,f=i(48).trackEvent,m=i(219).isFeatureEnabled,g=i(172).showEditObjectDialog,v=i(270).ActionBinder,y=i(62).PriceDataSource,b=i(73),S=b.Action,w=b.ActionPlaceholder,T=b.ActionSeparator,x=i(131),C=i(44),P=i(4),L=i(807),I=i(37),k=i(43),A=i(171),M=A.resizeCanvas,E=A.hardResizeCanvas,V=A.clearRect,D=A.addCanvasTo,O=A.Size,B=i(144).setMouseEventHandler,R=i(266),z=i(177),F=i(490).PaneCursorType,N=i(13).getLogger("Chart.PaneWidget"),o.prototype.destroy=function(){ +$(window).off("keyup.panewidget",this._onKeyUpListener),this.legendWidget&&(this.legendWidget.$el.remove(),delete this.legendWidget),this.paneControls&&(this.paneControls.destroy(),delete this.paneControls),this._chart.withModel({chart:this._chart,instance:this,callback:this._hideTooltip},function(){this.chart.model().lineCancelled().unsubscribe(this.instance,this.callback)});for(var t in this)delete this[t]},o.prototype.cancelZoom=function(){this._zoomSelector.css("display","none"),delete this._firstZoomPoint},o.prototype._onKeyUpListener=function(t){if(27===t.keyCode){this._chart.model().lineBeingCreated()&&this._chart.model().cancelCreatingLine(),this._firstZoomPoint&&this.cancelZoom();this._chart.model().model().crossHairSource().clearMeasure(),this.setCursorForTool(),this._hideTooltip()}},o.prototype._lineCancelledCallback=function(){try{this._chart.model().lineCancelled().subscribe(this,this._hideTooltip)}catch(t){}},o.prototype.backgroundColor=function(){return this._chart.properties().paneProperties.background.value()},o.prototype.priceAxisByCanvas=function(t){return t===this.lhsPriceAxisWidget.canvas||t===this.lhsPriceAxisWidget.top_canvas?this.lhsPriceAxisWidget:t===this.rhsPriceAxisWidget.canvas||t===this.rhsPriceAxisWidget.top_canvas?this.rhsPriceAxisWidget:null},o.prototype.updateScalesVisibility=function(){this.lhsPriceAxisWidget.setVisible(this._chart.properties().scalesProperties.showLeftScale.value()),this.rhsPriceAxisWidget.setVisible(this._chart.properties().scalesProperties.showRightScale.value())},o.prototype.chart=function(){return this._chart},o.prototype._chartModel=function(){return this._chart.model().model()},o.prototype.state=function(){return this._state},o.prototype.setState=function(t){this._state=t},o.prototype.stretchFactor=function(){return this._state?this._state._stretchFactor:Pane.DEFAULT_STRETCH_FACTOR},o.prototype.setStretchFactor=function(t){this._state&&(this._state._stretchFactor=t)},o.prototype.mouseEnterEvent=function(t){var e=this._chart.model();e&&(e.crossHairSource().visible=!0,"function"==typeof this.onMouseEnter&&this.onMouseEnter(this))},o.prototype.isLineTool=function(t){var e=TradingView[t];return"function"==typeof e&&e.prototype instanceof d},o.prototype.hideInplaceEditor=function(){return!!this._inplaceEditor&&(this._inplaceEditor.remove(),this._inplaceEditor=void 0,!0)},o.prototype._processMouseMoveWhileZoom=function(t){var e=Math.floor(this._chart.model().timeScale().coordinateToIndex(t.localX)),i=this._chart.model().timeScale().indexToCoordinate(e)-.5*this._chart.model().timeScale().barSpacing(),o=t.localY,n=Math.abs(i-this._firstZoomPoint.x),r=Math.abs(o-this._firstZoomPoint.y);i=0)&&this._mouseDownEventForLineTool(t,r,h,c));if(p=this.dataSourceAtPoint(t.localX,t.localY),_=p&&p.source&&p.source.customization?p.source.customization:{},p.hittest&&p.hittest.result()===P.CUSTOM&&(f=p.hittest.data().mouseDownHandler)&&f(t),!this._chart.readOnly()){if(p&&p.hittest&&p.hittest.result()===P.CUSTOM_MOVE&&(f=p.hittest.data().pressedMouseMoveHandler))return void i.startCustomMoving(p.source,new n(t.localX,t.localY),f);if(p&&!_.disableSelection&&(m=p.hittest&&p.hittest.result()>P.MOVEPOINT_BACKGROUND,m=m||p.hittest&&p.hittest.result()===P.MOVEPOINT_BACKGROUND&&TradingView.isMobile.any(), +m?i.setSelectedSource(p.source,p.hittest&&p.hittest.data()):i.setSelectedSource(null)),p.source&&"eraser"===C.tool.value()&&!_.disableErasing&&(TradingView.isInherited(p.source.constructor,d)||TradingView.isInherited(p.source.constructor,a)))return g=p.hittest.eraseMarker(),void(t.ctrlKey&&void 0!==g&&p.source.processErase?p.source.processErase(i,g):i.removeSource(p.source));if(v=p.source&&TradingView.isInherited(p.source.constructor,d)&&p.source.isLocked(),!(this._lockDrawingsProperty.value()||v)){if(p.source&&p.source.userEditEnabled&&!p.source.userEditEnabled())return;if(p.hittest&&p.hittest.result()===P.CHANGEPOINT)return s=p.source.priceScale(),c=s.coordinateToPrice(t.localY),i.startChangingLinetool(p.source,{index:h,price:c},p.hittest.data(),r),void this._updateTooltip(t.localX,t.localY);if(p.hittest&&this.checkMovepoint(p.hittest.result()))return b=p.source.properties(),r.control&&b.clonable&&b.clonable.value()?void(this._clonningAtMoveLineTool=p.source):void(p.source.isFixed&&p.source.isFixed()?i.startMovingSource(p.source,new n(t.localX,t.localY),p.hittest.data()):(s=p.source.priceScale(),c=s.coordinateToPrice(t.localY),i.startMovingSource(p.source,{index:h,price:c},p.hittest.data())))}if(p.source&&TradingView.isInherited(p.source.constructor,y)&&p.source.isDraggable())return void(this._chart.draggingSource=p.source)}p.hittest&&p.hittest.result()===P.REGULAR||(this._processing=!0)}},o.prototype.drawRightThere=function(t){var e,i;this.isLineTool(t)&&(e=this._chart.model(),i=e.crossHairSource(),e.createLineTool(this._state,{index:i.index,price:i.price},t))},o.prototype._finishTool=function(t){var e,i=this._chart.model(),o=C.tool.value();C.resetToCursor(),this._hideTooltip(),i.setSelectedSource(t),this._chart.isTextTool(o)&&(e=i.createUndoCheckpoint(),g(t,i,null,e).then(function(t){t.focusOnText()}))},o.prototype._mouseDownEventForLineTool=function(t,e,i,o){var r,s,a,l,c,h,u,d,_,f,m=this._chart.model(),g=!1,v=null,y=t.localX,b=t.localY,S=this._chart.model().model().crossHairSource(),w=C.tool.value();if(C.hideAllDrawings().setValue(!1),C.lockDrawings().setValue(!1),TradingView.supportTouch()&&this.isLineTool(w)&&"LineToolBrush"!==w&&!m.lineBeingCreated()&&(this._startTouchPoint=new n(y,b),this._initCrossHairPosition=S.currentPoint(),this._skipFirstMove=!0),!m.lineBeingCreated()||m.lineBeingCreated()instanceof p)TradingView.supportTouch()&&"LineToolBrush"!==w||(f={index:i,price:o},v=m.createLineTool(this._state,f,w),m.lineBeingCreated()||(g=!0));else if(TradingView.supportTouch()){if(this._skipFirstMove=!0,!this._startTouchPoint)return this._startTouchPoint=new n(y,b),r=m.lineBeingCreated().points(),s=r[r.length-1],a=m.timeScale().indexToCoordinate(s.index),o=s.price,l=m.lineBeingCreated().priceScale(),l.isPercent()&&(c=m.lineBeingCreated().ownerSource().firstValue(),o=l.priceRange().convertToPercent(o,c)),h=l.priceToCoordinate(o),void(this._lastDrawingPoint=new n(a,h))}else v=m.lineBeingCreated(),u=m.paneForSource(v),u!==this._state?(d=this._dv.offset(),y=t.localX+d.left,b=t.localY+d.top, +_=this._chart.paneByState(u),d=_._dv.offset(),y-=d.left,b-=d.top,o=v.priceScale().coordinateToPrice(b),i=Math.round(m.timeScale().coordinateToIndex(y)),g=m.coninueCreatingLine({index:i,price:o},e)):g=m.coninueCreatingLine({index:i,price:o},e);m.setSelectedSource(v),g?this._finishTool(v):TradingView.supportTouch()&&"LineToolBrush"!==w||this._updateTooltip(t.localX,t.localY)},o.prototype._equalsCursorCache=function(t,e){return C.toolIsCursor(t.tool)?t.tool===e.tool&&t.theme===e.theme&&t.crosshair===e.crosshair:t.tool===e.tool&&t.theme===e.theme},o.prototype._setCursorClassName=function(t){var e="";t&&(e="pane--cursor-"+t),this._currentCursorClassName!==e&&(this._currentCursorClassName&&this.jqPane.removeClass(this._currentCursorClassName),e&&this.jqPane.addClass(e),this._currentCursorClassName=e,this.jqPane.css("cursor"))},o.prototype.setCursorForTool=function(t,e){var i,o=C.tool.value();if(C.toolIsCursor(o)){if(this._chart.draggingSource||this._isScrolling||this._chart.model()&&this._chart.model().sourceBeingMoved())return void this._setCursorClassName("grabbing");if(t)return void this._setCursorClassName("pointer")}return"eraser"===o?void this._setCursorClassName("eraser"):"zoom"===o?void this._setCursorClassName("zoom-in"):"dot"===(i=C.cursorTool.value())?void this._setCursorClassName("dot"):"arrow"===i?void this._setCursorClassName("default"):void this._setCursorClassName("")},o.prototype.setDragToAnotherPaneCursor=function(){this._setCursorClassName("grabbing")},o.prototype.gestureStartEvent=function(t){this._prev_pinch_scale=1,this._pinching=!0},o.prototype.gestureChangeEvent=function(t){var e,i,o=t.center.x-5,n=this._chart.paneWidgets()[0].lhsPriceAxisWidget.size.w,r=this._chart.model().timeScale().width();n&&(o=Math.max(0,o-n)),o=Math.min(o,r),e=2*(o/r-.5),i=5*(t.scale-this._prev_pinch_scale),i>0?this._chart.model().zoomIn(e,i):i<0&&this._chart.model().zoomOut(e,-i),this._prev_pinch_scale=t.scale},o.prototype.gestureEndEvent=function(t){this._pinching=!1},o.prototype._updateCommonTooltip=function(t){var e,i,o,n=this._lastCommonTooltipData,r=null;if(t&&t.hittest&&t.hittest.result()===P.CUSTOM&&(e=t.hittest.data())&&(r=e.tooltip||null),null!=n||null!=r)return null==r?(this._lastCommonTooltipData=null,void z.hide()):void(n&&r.text===n.text&&r.rect.x===n.rect.x&&r.rect.y===n.rect.y&&r.rect.w===n.rect.w&&r.rect.h===n.rect.h||(this._lastCommonTooltipData=r,i=TradingView.clone(r),o=this.jqPane.offset(),i.rect.x+=o.left,i.rect.y+=o.top,z.show(i)))},o.prototype._processMouseMoveForCustomHandler=function(t){var e,i=this.dataSourceAtPoint(t.localX,t.localY);i.hittest&&i.hittest.result()===P.CUSTOM&&(e=i.hittest.data().mouseMoveHandler)&&e(t)},o.prototype.mouseMoveEvent=function(t){var e,i,n,r,s,a,l,c,h,u,d,p,_,f,m;if(this._processMouseMoveForCustomHandler(t),e=this._chart.model()){if(i=t.localX,n=t.localY,r=new o.EvironmentState(t),this._firstZoomPoint)return void this._processMouseMoveWhileZoom(t);if(!(this._chart.readOnly()||this._editDialog&&this._editDialog.isVisible())&&(s=C.tool.value(),a=null,l=null,c=null, +this._processing||!C.toolIsCursor(s)&&"eraser"!==s||(a=this.dataSourceAtPoint(t.localX,t.localY),h=a&&a.source,u=this._chart.model().crossHairSource(),h&&("LineToolOrder"===h.toolname||"LineToolPosition"===h.toolname||"AlertLabel"===h.toolname)?u.visibleTrap=!1:u.visibleTrap=!0,a.hittest&&a.hittest.result()>P.MOVEPOINT_BACKGROUND?(l=a.source,c=a.hittest.result(),!a.source||"eraser"===s&&a.source.constructor===TradingView.Series?e.setHoveredSource(null):e.setHoveredSource(a.source,a.hittest.data())):e.setHoveredSource(null)),this._isSelectBarModeEnabled()?this._setCursorClassName("pointer"):this.setCursorForTool(l,c),this._updateCommonTooltip(a),null!==a&&null!==a.hittest&&a.hittest.result()===P.CUSTOM_MOVE))switch(d=a.hittest.data()||{},d.cursorType){case F.VerticalResize:this._setCursorClassName("ns-resize")}if(this._chart.readOnly()&&(a=this.dataSourceAtPoint(t.localX,t.localY),null!==a.source?e.setHoveredSource(a.source,a.hittest.data()):e.setHoveredSource(null,null)),this._chart.model().lineBeingCreated()&&(p=this._chart.model().lineBeingCreated(),(_=this._chart.model().paneForSource(p))!==this._state))return f=this._dv.offset(),i+=f.left,n+=f.top,m=this._chart.paneByState(_),f=m._dv.offset(),i-=f.left,n-=f.top,void e.setAndSaveCurrentPosition(i,n,_);s=C.tool.value(),TradingView.supportTouch()&&this.isLineTool(s)||(e.setAndSaveCurrentPosition(i,n,this._state,r),this._updateTooltip(i,n))}},o.prototype.pressedMouseMoveEvent=function(t){var i,r,s,a,l,c,h,u,_,f,m,g,v,y,b,S,w,T,x,P,L,I,k,A,M,E,V,D;if(!this._pinching){if(this._skipFirstMove?(delete this._skipFirstMove,delete this._touchMove):this._touchMove=!0,i=new o.EvironmentState(t),r=this._chart.model(),s=t.localX,a=t.localY,this._firstZoomPoint)return this._processMouseMoveWhileZoom(t),void(this._firstZoomPoint.draggingMode=!0);if(l=C.tool.value(),TradingView.supportTouch()&&this._startTouchPoint&&this.isLineTool(l)&&"LineToolBrush"!==l&&!r.lineBeingCreated()&&!this._isSelectBarModeEnabled())return c=this._initCrossHairPosition,h=new n(s,a),u=h.subtract(this._startTouchPoint),_=c.add(u),this._chart.model().setAndSaveCurrentPosition(_.x,_.y,this._state),void this._updateTooltip(_.x,_.y);if(TradingView.supportTouch()&&r.lineBeingCreated()&&!(r.lineBeingCreated()instanceof p))return void(this._startTouchPoint&&(f=r.lineBeingCreated(),m=t.localX-this._startTouchPoint.x,g=t.localY-this._startTouchPoint.y,v=this._lastDrawingPoint.x+m,y=this._lastDrawingPoint.y+g,b=this._chart.model().paneForSource(f),r.setAndSaveCurrentPosition(v,y,b),this._updateTooltip(v,y)));if(r.setAndSaveCurrentPosition(s,a,this._state,i),this._updateTooltip(s,a),S=C.tool.value(),w=this._isSelectBarModeEnabled(),(!this.isLineTool(S)||"LineToolBrush"===l||w)&&(0===t.button||Modernizr.touch)){if("LineToolBrush"===S&&!w){if(T=this._state.defaultPriceScale(),T.isEmpty())return;if(!this._chart.model().lineBeingCreated())return;return x=T.coordinateToPrice(t.localY),P=Math.round(this._chart.model().timeScale().coordinateToIndex(t.localX)), +void((!e.enabled("charting_library_base")||P>=0)&&this._chart.model().coninueCreatingLine({index:P,price:x}))}if(this._chart.draggingSource&&(L=t.target,I=this._chart.paneByCanvas(L),I&&(I!==this?I.setDragToAnotherPaneCursor():I.setCursorForTool()),k=this._chart.priceAxisByCanvas(L),k&&k.setCursor("grabbing"),(A=this._chart.timeAxisByCanvas(L))&&A.setCursor("grabbing")),r.timeScale().isEmpty())return;if(r.customMoveBeingProcessed())return void r.processCustomMove(new n(s,a));if(r.lineBeingEdited())return P=Math.round(this._chart.model().timeScale().coordinateToIndex(s)),(!e.enabled("charting_library_base")||P>=0)&&r.changeLinePoint({x:s,y:a},i),this._updateTooltip(s,a),void this.setCursorForTool();if(r.sourceBeingMoved()){if(T=r.sourceBeingMoved().priceScale(),T.isEmpty())return;if(P=this._chart.model().timeScale().coordinateToIndex(t.localX),x=T.coordinateToPrice(t.localY),M=r.sourceBeingMoved(),this.setCursorForTool(),e.enabled("charting_library_base")&&!r.sourceBeingMoved().onlyYMoving()&&(E=M.points(),0!==E.length&&E.reduce(function(t,e){return e.index=0&&t.localX=1?x():requestAnimationFrame(M)},requestAnimationFrame(M)):x()),this._chart.draggingSource)for(E=t.target,V=this._chart.paneByCanvas(E),V&&V!==this&&(D=V._state.findSuitableScale(this._chart.draggingSource),T&&(T=!1,s.undo()),this._chart.model().move(this._chart.draggingSource,V._state,D)),O=this._chart.priceAxisByCanvas(E),O&&(V=O.pane,l=O._isLeft?V._state.leftPriceScale():V._state.rightPriceScale(),T&&(T=!1,s.undo()),this._chart.model().move(this._chart.draggingSource,V._state,l)),B=this._chart.timeAxisByCanvas(E),B&&(T&&(T=!1,s.undo()),this._chart.model().move(this._chart.draggingSource,null,null)),this._chart.draggingSource=null,R=this._chart.getTimeScale(),R&&R.restoreDefaultCursor(),y=this.dataSourceAtPoint(t.localX,t.localY),z=this._chart.paneWidgets(),F=0;F=P.REGULAR||r>=P.MOVEPOINT_BACKGROUND&&TradingView.isMobile.any(),this._chart.updateActions(),null!==n&&s?this.showContextMenuForSource(n,t):(this._contextMenu(t).then(function(e){return e.show(t)}),this._chart.model().setSelectedSource(null)),this.paint())}}},o.prototype._contextMenu=function(t){function e(t){return null===t.text}var i=this;return Promise.all(this._initActions(t)).then(function(t){var o,n,r=i._customActions();for(t=t.filter(function(t){return null!==t}),r.remove.forEach(function(e){for(var i=0;i0;n--)e(o[n])&&e(o[n-1])&&o.splice(n,1);return o.length&&e(o[0])&&o.splice(0,1),o.length&&e(o[o.length-1])&&o.splice(o.length-1,1),x.createMenu(o,{statName:"ChartContextMenu"})})},o.prototype.createRemoveMenu=function(){var t,e=this._chart.actions(),i=new S({text:$.t("Remove"),statName:"Remove"});return i.subActions||(i.subActions=[]),t=i.subActions,t.push(e.paneRemoveAllStudies,e.paneRemoveAllDrawingTools,e.paneRemoveAllStudiesDrawingTools),i},o.prototype.createDrawingMenu=function(){var t,i=this._chart.actions(),o=new S({text:$.t("Drawing Tools"),statName:"DrawingTools"});return o.subActions||(o.subActions=[]),t=o.subActions,e.enabled("left_toolbar")&&t.push(i.drawingToolbarAction),e.enabled("items_favoriting")&&t.push(i.favoriteDrawingToolbar),0!==o.subActions.length&&t.push(new T),t.push(i.magnetAction,i.stayInDrawingModeAction),e.enabled("support_multicharts")&&t.push(i.syncModeAction),t.push(new T,i.lockDrawingsAction,i.hideAllDrawingsAction,i.paneRemoveAllDrawingTools),o},o.prototype._initActions=function(t){var i,o,n,r,s,a=this,l=this._chart.actions(),c=[];return e.enabled("datasource_copypaste")&&(!(i=R.get())||"study"!==i.type&&"drawing"!==i.type||(o=new S({text:$.t("Paste %s").replace("%s",$.t(i.title||i.type)),shortcut:"Ctrl-V",statName:"Paste"}),o.callbacks().subscribe(null,function(){a._chart.onAppClipboardPaste(a.state())}),c.push(o))),l.gotoDate&&c.push(l.gotoDate),c.length&&c.push(new T),c.push(l.chartReset,l.symbolSearch,l.changeInterval),n=window.widgetbar&&(!window.widgetbar._customization||window.widgetbar._customization.watchlist),n&&l.addToWatchlist&&c.push(l.addToWatchlist),e.enabled("text_notes")&&m("text_notes")&&c.push(l.addToTextNotes),e.enabled("symbol_info")&&c.push(l.showSymbolInfoDialog),c.push(new T,this._createLockTimeAxisAction(t),new T,l.paneObjectTree,l.insertIndicator),e.enabled("charting_library_base")||c.push(l.applyStudyTemplate),e.enabled("compare_symbol")&&c.push(l.compareOrAdd),c.push(this.createDrawingMenu()),e.enabled("charting_library_base")&&c.push(l.hideAllMarks),c.push(this.createRemoveMenu(),new T),r=this._priceAxisMenu(),r&&c.push(r),s=this._timeAxisMenu(),s&&c.push(s),e.enabled("charting_library_base")||c.push(l.applyColorTheme),e.enabled("show_chart_property_page")&&c.push(l.chartProperties), +pro.hasPackage("mtp-mtpredictor")&&this.state().containsMainSeries()&&c.push(new T,this._createMTPredictorActions()),c},o.prototype._customActions=function(){var t,i={top:[],bottom:[],remove:[]},o=this._chart.model(),n=o.timeScale(),r=this._state.defaultPriceScale();return e.enabled("custom_items_in_context_menu")?(t=n.isEmpty()?void 0:n.indexToUserTime(n.coordinateToIndex(this._contextMenuX)),k.emit("onContextMenu",{unixtime:t?t/1e3:void 0,price:r.isEmpty()?void 0:r.coordinateToPrice(this._contextMenuY),callback:function(t){[].concat(t).forEach(function(t){if(t.text)if(t.text.length>1&&"-"===t.text[0])i.remove.push(t.text.slice(1));else{var e;"-"===t.text?e=new T:(e=new S({text:t.text}),e.callbacks().subscribe(null,t.click)),t.position&&"top"===t.position?i.top.push(e):i.bottom.push(e)}})}}),i):i},o.prototype._timeAxisMenu=function(){if(this._chart.model().timeScale().isEmpty())return null;var t=this._chart.getTimeScale();return new S({text:$.t("Time Scale"),subActions:t.getContextMenuActions(),statName:"TimeScale"})},o.prototype.getDefaultPriceAxisWidget=function(){var t=this._state.defaultPriceScale();return t.isEmpty()?null:t===this._state.leftPriceScale?this.leftPriceAxisWidget():this.rightPriceAxisWidget()},o.prototype._priceAxisMenu=function(){var t=this.getDefaultPriceAxisWidget();return t?new S({text:$.t("Price Scale"),subActions:t.getContextMenuActions(),statName:"PriceScale"}):null},o.prototype._seriesContextMenu=function(t){var i,o,n,r,s,a=this._chart.actions(),l=t.properties().visible.value(),c=null;if(this._chart.readOnly())i=[l?a.seriesHide:this.createActionShow(t),new T,this.createActionShowCountdown(t),new T,this.createActionScaleLeft(t),this.createActionScaleRight(t),this.createActionNoScale(t)],e.enabled("countdown")||i.splice(3,1),c=x.createMenu(i);else{if(o=this._mergeContentMenuItems(t),n=[a.showSymbolInfoDialog,a.compare,l?a.seriesHide:this.createActionShow(t),this.createVisualOrderAction(t),new T,this.createActionShowCountdown(t),new T],e.enabled("countdown")||n.splice(5,2),e.enabled("compare_symbol")||n.splice(1,1),e.enabled("symbol_info")||n.splice(0,1),!this.chart().onWidget()&&e.enabled("show_chart_property_page")&&n.unshift(a.format),r=this.createActionLockScale(t),r&&n.push(r,new T),o.length>0){for(s=0;sh&&(y=c,v=r));if(this.containsMainSeries()){for(u=this._chart.model().barsMarksSources(),o=0;o=0;i--)e[i].createDrawingsCaches();for(i=0;i=0;i--)e[i].clearDrawingCaches()},o.prototype.recalculatePriceScale=function(){var t,e,i,o=this._state;for(o.recalculatePriceScale(o.m_rightPriceScale),o.recalculatePriceScale(o.m_leftPriceScale),t=o.dataSources(),e=0;e=0;c--)n[c]._hideTooltip();this._isSelectBarModeEnabled()||(a.isStudyLineTool(r)&&!TradingView.isMobile.any()?i($.t("Click to set a point")):TradingView.isMobile.any()&&"LineToolBrush"!==r&&o.isLineTool(r)&&!o._chart.model().lineBeingCreated()?i($.t("1. Slide your finger to select location for first anchor
2. Tap anywhere to place the first anchor")):TradingView.isMobile.any()&&"LineToolBrush"!==r&&o.isLineTool(r)&&i($.t("1. Slide your finger to select location for next anchor
2. Tap anywhere to place the next anchor")))}},o.prototype._hideTooltip=function(){this._tooltipSelector.addClass("tooltip-selector-hidden")},o.prototype._updateCrosshairOnZoom=function(){var t,e;C.lockTimeAxis().value()&&(t=this._chart.model(),e=t.crossHairSource(),e.setPosition(e.index,e.price,this._state))},o.prototype._isSelectBarModeEnabled=function(){return this._chart.model().crossHairSource().selectBarMode().value()},t.exports=o}).call(e,i(7))},function(t,e,i){(function(e){"use strict";function o(t){var i,o,n,a,l,h=this,d=this._chartWidget=t.chartWidget;this.$parent=t.parent,this._dateRangesPopupList=[],this._goToPopupBtn=[],this._iterativeHide=[],this._timeFormatter=new r,this._currentRange=window.urlParams&&window.urlParams.range||"",this._$seriesControls=$(document.createElement("div")).attr("class","chart-controls-bar-buttons chart-series-controls").appendTo(t.parent), +this._$timezoneButton=$(''),e.enabled("fundamental_widget")||this._$timezoneButton.appendTo(this._$seriesControls),!d.onWidget()&&e.enabled("timezone_menu")?c(h._$timezoneButton,function(){var t,e,i,o,n;if(d.updateActions(),t=[],!(e=d.actions())||!e.applyTimeZone||!e.applyTimeZone.subActions)return t;for(i=e.applyTimeZone.subActions,o=0;o0&&(t=$.t("Go to..."),e=function(){n(this._chartWidget.model())}.bind(this),$(document.createElement("a")).text(t).addClass("js-goto-date-btn apply-common-tooltip").attr("title","Alt+G").appendTo(this._$dateRanges).click(e),this._goToPopupBtn.push({title:t,action:e})),this.updateTimeframePopupMenu()},o.prototype.updateTimeframePopupMenu=function(){this._$dateRangesBtn.toggleClass("i-hidden",!(this._dateRangesPopupList.length||this._goToPopupBtn.length)),h(this._$dateRangesBtn),c(this._$dateRangesBtn,this._dateRangesPopupList.concat(this._goToPopupBtn),{direction:"up",addClass:"date-range-popupmenu"}),this.resizeUI()},o.prototype.updateTimezonesButton=function(){var t,e,i;null!==this._chartWidget.model().mainSeries().symbolInfo()&&(t=this._chartWidget.model().model().timezone(),"exchange"===t&&(e=this._chartWidget.model().mainSeries().symbolInfo().timezone)&&(t=e),i=a(t),this.tzOffset=i.offset,this._$timezoneName.text("("+i.string+")"),this.tickClock(),this.resizeUI())}, +o.prototype.checkTimezonesButton=function(t){this._$timezoneButton.toggleClass("i-invisible",t!==this._chartWidget),this.resizeUI()},o.prototype.tickClock=function(){void 0!==this.tzOffset&&this._$timezoneClock.text(this._timeFormatter.format(new Date(Date.now()+this.tzOffset+1e3*ChartApiInstance.serverTimeOffset())))},o.prototype.updateExtendedHoursButton=function(){if(this._$extendedHoursButton){this._chartWidget.model().mainSeries().properties().extendedHours.value()?this._$extendedHoursButton.addClass("active"):this._$extendedHoursButton.removeClass("active"),this.resizeUI()}},o.prototype.updateFullscreenChartButton=function(){var t=this._chartWidget._chartWidgetCollection;if(!t||"s"===t.layout.value())return void this._$fullscreenChartButton.addClass("i-hidden");this._$fullscreenChartButton.removeClass("i-hidden"),this._$fullscreenChartButton.toggleClass("active",t.maximizeCurrentChart.value()),this.resizeUI()},o.prototype.updateUI=function(){this.updateScaleButtons(),this.resizeUI()},o.prototype.resizeUI=function(){var t,e,i,o,n,r,s;if(this._$seriesControls&&this._$dateRanges){for(this.$parent.addClass("i-measure"),t=this.$parent.width(),e=this._$dateRanges.width(),i=this._$dateRangesBtn.outerWidth(),o=0,this._$seriesControls.find("a").each(function(){var t=$(this);t.hasClass("i-hidden")||(o+=t.outerWidth())}),n=o,r=0;rt-o),this.$parent.removeClass("i-measure")}},t.exports=o}).call(e,i(7))},,function(t,e,i){(function(e,o,n){"use strict";function r(t,i,o){this.HIGHLIGHT_STUDY_NUM_FLICKS=2,this.SCROLL_TOLERANCE=10,this._BASIC_STUDIES_PACKAGE_NAME="tv-basicstudies",this._CUSTOM_STUDIES_PACKAGE_NAME="Script$USER",this._PUBLISHED_STUDIES_PACKAGE_NAME="Script$PUB",this._STANDARD_STUDIES_PACKAGE_NAME="Script$STD",this._SCRIPTING_PACKAGE_NAME="tv-scripting",this._FUNDAMENTAL_PACKAGE_NAME="Script$EDGR",this._BASIC_STUDIES_PAGE_NAME=e.enabled("plain_studymarket")?$.t("Technical Analysis"):$.t("Built-ins"),this._FUNDAMENTALS_PAGE_NAME=$.t("Fundamentals"),this._dialog=null,this._selectedStudy=null,this._keyDownListener=null,this._chartWidgetCollection=t,this._chart=t.activeChartWidget.value(),this._options=$.extend({},this.DEFAULT_OPTIONS,o||{}),this.concretizeOptions(),this._user=i,this.setup()}var s,a,l,c=i(21).assert,h=i(43),u=i(207).SidebarCustomScroll,d=i(45),p=i(96).createDialog,_=(i(123).createConfirmDialog,i(203).createNoticeDialog),f=i(478).createSearchControl,m=i(28),g=i(63),v=i(263),y=i(104),b=i(368).AddSymbolCheckbox,S=i(180),w=i(158),T=i(365).KeyboardListener,x=i(369),C=i(13).getLogger("Chart.StudyMarket");i(636),i(650),i(200), +s='
{{^minimized}}
{{/minimized}}
{{#minimized}}{{#withSearch}}
{{/withSearch}}{{/minimized}}
',a='
{{title}}
',l='
{{#withFavorites}}
'+i(328)+''+i(329)+'
{{/withFavorites}}
{{{title}}}
',r.prototype.setup=function(){this._initialized=!1,this._loadMore=null,this._$economyTabInput=null,this._$symbolSearchPopup=null,this._market=null,this._studies=null,this._packagesWithTabNames={},this._pages={},this._tabs={},this._subProductIds={},this.favsChanged=new o,this.visibilityChanged=new o,this._previousInviteOnlyStudiesIds=[],this.studiesReady=new $.Deferred,this.marketPagesReady=new $.Deferred,this._pubSearchCount=[0,0,0],this._pubSearchCanLoad=[!0,!0,!0],this._pubSearchEntries=[],this._pubSearchCache=[],this._pubSearchDfd=null,this._pubSearchPageShown=!1,this._w_market_tabs=null,this._w_technical_tabs=null},r.prototype.init=function(){if(this._initialized)return void this.getStudyInfo();this.setupMarketInfo(),this.getStudyInfo(),this.setUser(this._user),this.prepareLayout(),this.attachHandlers(),this._initialized=!0},r.prototype.DEFAULT_OPTIONS={onWidget:!1,hideMarketPages:!1,selectBasicPage:!0,minimized:!1,searchKeywords:{earning:RegExp("EPS"),earnings:RegExp("EPS"),"trailing twelve months":RegExp("TTM")}},r.prototype._PAGE_KEY="studyMarket.page",r.prototype._ECONOMY_TAB=$.t("Economy & Symbols"),r.prototype._PUB_SEARCH_ENTRIES_ON_PAGE=20,r.prototype.loadFavorites=function(){},r.prototype.concretizeOptions=function(){e.enabled("study_market_minimized")&&(this._options.hideMarketPages=!0,this._options.selectBasicPage=!0,this._options.minimized=!0),this._options.onWidget&&(this._options.hideMarketPages=!0)},r.prototype.setupMarketInfo=function(){},r.prototype.getStudyInfo=function(){this._chart.withModel(this,function(){ +this.setupStudyInfo()})},r.prototype.setupStudyInfo=function(){var t=this._chartWidgetCollection.activeChartWidget.value().model().studiesMetaData();t.length;this._studies={},t=t.filter(function(t){return!this.isHidedStudy(t)},this),t.forEach(function(t){var e,i=this.getStudyPackageName(t.id);!(this._options.minimized&&i!==this._BASIC_STUDIES_PACKAGE_NAME||this._options.onWidget&&d.isScriptStrategy(t))&&(e=this.resolvePackageName(i),c(void 0!==e,"Cannot resolve packageName "+i),this._studies[e]=this._studies[e]||[],this._studies[e].push(t))}.bind(this),this),this.studiesReady.resolve()},r.prototype.setupAddonsInfo=function(){var t,e,i,o,n,r=[],s={};for(t in this._market.products)e=this._market.products[t],pro.hasPackage(t)&&e.subproduct_ids&&e.subproduct_ids[0]&&!e.disabled&&(i=e.subproduct_ids[0],o=i.split("$")[1],s[o]=t,r.push(ScriptLib.requestPineAddons(o)));return n=this,Promise.all(r).then(function(t){return t.reduce(function(t,e){var i=e[0].scriptIdPart.split("_")[0],o=[];return n._fillScriptsMetainfo(e,o),t[s[i]]=o,t},{})})},r.prototype.resolvePackageName=function(t){return t in this._subProductIds?this._subProductIds[t]:t},r.prototype.setUser=function(t){window.is_authenticated?this.setupUserData(t):this.setAnonymous()},r.prototype.setupUserData=function(t){this._user=t,this.loadFavorites(),this.updateMarketPages()},r.prototype.setAnonymous=function(){this.setupUserData(null),this.favsChanged.fire()},r.prototype.isHidedStudy=function(t){var e;return this._options.onWidget&&(e="IchimokuCloud@tv-basicstudies"===t.id),!!t.is_hidden_study&&!e},r._breakpointDevice="phone-vertical",r.prototype._switchPagesContainer=function(t,e){this._options.minimized||(t===r._breakpointDevice?this._w_pages.detach().appendTo(this._widget.find(".js-left-panel-wrapper")):e===r._breakpointDevice&&this._w_pages.detach().appendTo(this._widget.find(".js-right-panel")))},r.prototype.prepareLayout=function(){this._widget=$(n.render(s,{withSearch:e.enabled("study_dialog_search_control"),minimized:this._options.minimized})),this._w_tabs=this._widget.find(".js-tabs-container"),this._w_pages=this._widget.find(".js-pages"),this._loadMore=null,this.preparePages(),!this._options.selectBasicPage||this._options.fundamentalsOnly||v.device===r._breakpointDevice&&!this._options.minimized?this._options.fundamentalsOnly&&(v.device!==r._breakpointDevice||this._options.minimized)?this.selectPage(this._FUNDAMENTALS_PAGE_NAME):v.device===r._breakpointDevice&&this.selectPage(""):this.selectPage(this._BASIC_STUDIES_PAGE_NAME),this._scroll=new u(this._widget.find(".js-tabs-viewport"),this._w_tabs,{showBottomShadow:!1});var t='
'+i(332)+'
{{{ title }}}
';this._dialog=p({title:" ",titleTemplate:t,contentWrapTemplate:this._widget, +addClass:"tv-insert-indicator-dialog "+(this._options.minimized?"i-minimized":""),width:this._options.minimized?490:842,height:580,withScroll:!1,focusFirstControl:!1,closeOnClickAtOtherDialogs:!1,isClickOutFn:function(t){var e=x.instance();if(e)return e.isEventOut(t);if(this._$symbolSearchPopup)return this._$symbolSearchPopup[0]!==t.target&&!this._$symbolSearchPopup[0].contains(t.target)&&void 0}.bind(this)}),this._dialog.on("afterClose",this._onDialogClosed.bind(this)),this._dialog.$title.find(".js-back-button").on(Modernizr.touch?"touchend":"click",this.selectPage.bind(this,"")),v.on("changeDevice",function(t,e){t===r._breakpointDevice&&this.currentPage()&&this.currentPage().hasClass("js-marketplace-page")&&this.selectPage(""),t===r._breakpointDevice&&(this._scroll.scrollToStart(),this._updateDialogTitleText()),this._switchPagesContainer(t,e)}.bind(this)),this._switchPagesContainer(v.device,""),this._showHideBackButton(),this.hide()},r.prototype.scrollHandler=function(){var t,e;if(!this._loadMore)return void this._w_pages.off("scroll.loadMoreOnEnd");t=$.map(this._w_pages.children(":visible"),function(t){return $(t).outerHeight(!0)}).reduce(function(t,e){return t+e},0),e=this._widget.find(".js-right-panel").height(),this._w_pages.scrollTop()>t-e-this.SCROLL_TOLERANCE&&(this._w_pages.off("scroll.loadMoreOnEnd"),this._loadMore())},r.prototype._updateDialogTitleText=function(){var t,e,i;if(this._dialog){if(t=""!==this._currentPageTitle,e=v.device!==r._breakpointDevice,!t||e||this._options.minimized)return void this._dialog.setTitleText(this._dialogTitleText);i=this.currentPage(),this._dialog.setTitleText(i.data("fullTitle"))}},r.prototype.currentPage=function(){return this._pages[this._currentPageTitle]},r.prototype.preparePages=function(){this.addSearchPage(),e.enabled("items_favoriting")&&this.addFavoritesPage(),this._options.fundamentalsOnly||this.prepareBasicPage(),this._options.fundamentalsOnly||this.addEconomyPage()},r.prototype.addEconomyPage=function(){var t,e,i=this.addPage(this._ECONOMY_TAB,{withoutTopPadding:!0,noFlex:!0}),o=f({withoutControls:!0,placeholder:$.t("Symbol"),addClass:"tv-insert-indicator-dialog__economy"});this._$economyTabInput=o.$input,t=new b({labelRight:$.t("Overlay the main chart")}),this._symbolSearch=y.bindToInput(this._$economyTabInput,{keepFocus:!0,clearAfterAccept:!0,callback:function(e){var i=this._chartWidgetCollection.activeChartWidget.value();i&&i.addSymbol(e,t.checked)}.bind(this),onPopupOpen:function(t){this._$symbolSearchPopup=t,this._$symbolSearchPopup.css("z-index",this._dialog.zIndex)}.bind(this),onPopupClose:function(){this._$symbolSearchPopup=null}.bind(this)}),i.append(o.$control),e=$('
'),e.append(t.$el),i.append(e)},r.prototype.addFavoritesPage=function(){this.addPage("Favorites",{localizedTitle:$.t("Favorites")}),this.loadFavorites(),this.updateFavorites()},r.prototype.addInvitesOnlyPage=function(){this.addPage("invitesOnly",{localizedTitle:$.t("Invite-Only Scripts")})},r.prototype.prepareBasicPage=function(){ +var t=this.addPage(this._BASIC_STUDIES_PAGE_NAME,{packageName:this._BASIC_STUDIES_PACKAGE_NAME,technical:!e.enabled("plain_studymarket")});this._basicPage=t,this.studiesReady.done(function(){this.resetBasicPage()}.bind(this))},r.prototype._applyGlobalFilter=function(t){return this._parentSource&&(t=t.filter(d.canBeChild)),t},r.prototype._applyStrategiesFilter=function(t){var e=this._parentSource?"not_strategies":"none";return"not_strategies"!==e&&"only_strategies"!==e||(t=t.filter(function(t){var i=d.isScriptStrategy(t);return"not_strategies"===e?!i:i})),t},r.prototype.resetBasicPage=function(){var t,e,i=this.getPage(this._BASIC_STUDIES_PAGE_NAME);this._studies&&(t=this._studies[this._BASIC_STUDIES_PACKAGE_NAME]||[],e=this._studies[this._STANDARD_STUDIES_PACKAGE_NAME]||[],t=t.concat(e),t=this._applyStrategiesFilter(t),t=this._applyGlobalFilter(t),this.preparePageStudies(i,t))},r.prototype.resetAllPages=function(){this.resetBasicPage(),this.resetCustomScriptPage(),this.resetPublishedScriptPage(),this.resetInvitesOnlyPage()},r.prototype._fillScriptsMetainfo=function(t,e){var i,o,n;for(i=0;i')},r.prototype._createSubGroupItem=function(t){return $('
').text(t)},r.prototype._createItemsGroup=function(t,e,i){var o,n=this._createItemsList();return this.fillStudies(n,t,i),o=$('
'),e.length&&o.append(this._createSubGroupItem(e)),o.append(n),o},r.prototype.addSearchPage=function(){var t,e,i,o=f({addClass:"tv-insert-indicator-dialog__search-control"});this._tabs.search=o.$control.data("title","search"),this._pages.search=$('

a",t=f.getElementsByTagName("*"),n=f.getElementsByTagName("a")[0],!t||!t.length||!n)return{};r=bt.createElement("select"),o=r.appendChild(bt.createElement("option")),i=f.getElementsByTagName("input")[0],e={leadingWhitespace:3===f.firstChild.nodeType,tbody:!f.getElementsByTagName("tbody").length,htmlSerialize:!!f.getElementsByTagName("link").length,style:/top/.test(n.getAttribute("style")),hrefNormalized:"/a"===n.getAttribute("href"),opacity:/^0.55/.test(n.style.opacity),cssFloat:!!n.style.cssFloat,checkOn:"on"===i.value,optSelected:o.selected,getSetAttribute:"t"!==f.className,enctype:!!bt.createElement("form").enctype,html5Clone:"<:nav>"!==bt.createElement("nav").cloneNode(!0).outerHTML,submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},xt.boxModel=e.boxModel="CSS1Compat"===bt.compatMode,i.checked=!0, +e.noCloneChecked=i.cloneNode(!0).checked,r.disabled=!0,e.optDisabled=!o.disabled;try{delete f.test}catch(t){e.deleteExpando=!1}if(!f.addEventListener&&f.attachEvent&&f.fireEvent&&(f.attachEvent("onclick",function(){e.noCloneEvent=!1}),f.cloneNode(!0).fireEvent("onclick")),i=bt.createElement("input"),i.value="t",i.setAttribute("type","radio"),e.radioValue="t"===i.value,i.setAttribute("checked","checked"),i.setAttribute("name","t"),f.appendChild(i),a=bt.createDocumentFragment(),a.appendChild(f.lastChild),e.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,e.appendChecked=i.checked,a.removeChild(i),a.appendChild(f),f.attachEvent)for(c in{submit:1,change:1,focusin:1})u="on"+c,l=u in f,l||(f.setAttribute(u,"return;"),l="function"==typeof f[u]),e[c+"Bubbles"]=l;return a.removeChild(f),a=r=o=f=i=null,xt(function(){var t,n,r,o,i,a,u,c,p,d,h,m,g=bt.getElementsByTagName("body")[0];g&&(u=1,m="padding:0;margin:0;border:",d="position:absolute;top:0;left:0;width:1px;height:1px;",h=m+"0;visibility:hidden;",c="style='"+d+m+"5px solid #000;",p="
",t=bt.createElement("div"),t.style.cssText=h+"width:0;height:0;position:static;top:0;margin-top:"+u+"px",g.insertBefore(t,g.firstChild),f=bt.createElement("div"),t.appendChild(f),f.innerHTML="
t
",s=f.getElementsByTagName("td"),l=0===s[0].offsetHeight,s[0].style.display="",s[1].style.display="none",e.reliableHiddenOffsets=l&&0===s[0].offsetHeight,window.getComputedStyle&&(f.innerHTML="",a=bt.createElement("div"),a.style.width="0",a.style.marginRight="0",f.style.width="2px",f.appendChild(a),e.reliableMarginRight=0===(parseInt((window.getComputedStyle(a,null)||{marginRight:0}).marginRight,10)||0)),void 0!==f.style.zoom&&(f.innerHTML="",f.style.width=f.style.padding="1px",f.style.border=0,f.style.overflow="hidden",f.style.display="inline",f.style.zoom=1,e.inlineBlockNeedsLayout=3===f.offsetWidth,f.style.display="block",f.style.overflow="visible",f.innerHTML="
",e.shrinkWrapBlocks=3!==f.offsetWidth),f.style.cssText=d+h,f.innerHTML=p,n=f.firstChild,r=n.firstChild,o=n.nextSibling.firstChild.firstChild,i={doesNotAddBorder:5!==r.offsetTop,doesAddBorderForTableAndCells:5===o.offsetTop},r.style.position="fixed",r.style.top="20px",i.fixedPosition=20===r.offsetTop||15===r.offsetTop,r.style.position=r.style.top="",n.style.overflow="hidden",n.style.position="relative",i.subtractsBorderForOverflowNotVisible=-5===r.offsetTop,i.doesNotIncludeMarginInBodyOffset=g.offsetTop!==u,window.getComputedStyle&&(f.style.marginTop="1%",e.pixelMargin="1%"!==(window.getComputedStyle(f,null)||{marginTop:0}).marginTop),void 0!==t.style.zoom&&(t.style.zoom=1),g.removeChild(t),a=f=t=null,xt.extend(e,i))}),e}(),A=/^(?:\{.*\}|\[.*\])$/,L=/([A-Z])/g,xt.extend({cache:{},uuid:0,expando:"jQuery"+(xt.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0, +object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return!!(e=e.nodeType?xt.cache[e[xt.expando]]:e[xt.expando])&&!o(e)},data:function(e,t,n,r){if(xt.acceptData(e)){var o,i,a,s=xt.expando,u="string"==typeof t,c=e.nodeType,l=c?xt.cache:e,f=c?e[s]:e[s]&&s,p="events"===t;if(f&&l[f]&&(p||r||l[f].data)||!u||void 0!==n)return f||(c?e[s]=f=++xt.uuid:f=s),l[f]||(l[f]={},c||(l[f].toJSON=xt.noop)),"object"!=typeof t&&"function"!=typeof t||(r?l[f]=xt.extend(l[f],t):l[f].data=xt.extend(l[f].data,t)),o=i=l[f],r||(i.data||(i.data={}),i=i.data),void 0!==n&&(i[xt.camelCase(t)]=n),p&&!i[t]?o.events:(u?null==(a=i[t])&&(a=i[xt.camelCase(t)]):a=i,a)}},removeData:function(e,t,n){if(xt.acceptData(e)){var r,i,a,s=xt.expando,u=e.nodeType,c=u?xt.cache:e,l=u?e[s]:s;if(c[l]){if(t&&(r=n?c[l]:c[l].data)){xt.isArray(t)||(t in r?t=[t]:(t=xt.camelCase(t),t=t in r?[t]:t.split(" ")));for(i=0,a=t.length;i1,null,!1))},removeData:function(e){return this.each(function(){xt.removeData(this,e)})}}),xt.extend({_mark:function(e,t){e&&(t=(t||"fx")+"mark",xt._data(e,t,(xt._data(e,t)||0)+1))},_unmark:function(e,t,n){if(!0!==e&&(n=t,t=e,e=!1),t){n=n||"fx";var r=n+"mark",o=e?0:(xt._data(t,r)||1)-1;o?xt._data(t,r,o):(xt.removeData(t,r,!0),i(t,n,"mark"))}},queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=xt._data(e,t),n&&(!r||xt.isArray(n)?r=xt._data(e,t,xt.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=xt.queue(e,t),r=n.shift(),o={};"inprogress"===r&&(r=n.shift()),r&&("fx"===t&&n.unshift("inprogress"),xt._data(e,t+".run",o),r.call(e,function(){xt.dequeue(e,t)},o)),n.length||(xt.removeData(e,t+"queue "+t+".run",!0),i(e,t,"queue"))}}),xt.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length1)},removeAttr:function(e){return this.each(function(){xt.removeAttr(this,e)})},prop:function(e,t){return xt.access(this,xt.prop,e,t,arguments.length>1)},removeProp:function(e){return e=xt.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(e){}})},addClass:function(e){var t,n,r,o,i,a,s;if(xt.isFunction(e))return this.each(function(t){xt(this).addClass(e.call(this,t,this.className))});if(e&&"string"==typeof e)for(t=e.split(j),n=0,r=this.length;n-1)return!0;return!1},val:function(e){var t,n,r,o=this[0];{if(arguments.length)return r=xt.isFunction(e),this.each(function(n){var o,i=xt(this);1===this.nodeType&&(o=r?e.call(this,n,i.val()):e, +null==o?o="":"number"==typeof o?o+="":xt.isArray(o)&&(o=xt.map(o,function(e){return null==e?"":e+""})),(t=xt.valHooks[this.type]||xt.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,o,"value")||(this.value=o))});if(o)return(t=xt.valHooks[o.type]||xt.valHooks[o.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(o,"value"))?n:(n=o.value,"string"==typeof n?n.replace(R,""):null==n?"":n)}}}),xt.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r,o,i=e.selectedIndex,a=[],s=e.options,u="select-one"===e.type;if(i<0)return null;for(n=u?i:0,r=u?i+1:s.length;n=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(e,t,n,r){var o,i,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return r&&t in xt.attrFn?xt(e)[t](n):void 0===e.getAttribute?xt.prop(e,t,n):(a=1!==s||!xt.isXMLDoc(e),a&&(t=t.toLowerCase(),i=xt.attrHooks[t]||(Y.test(t)?V:B)),void 0!==n?null===n?void xt.removeAttr(e,t):i&&"set"in i&&a&&void 0!==(o=i.set(e,n,t))?o:(e.setAttribute(t,""+n),n):i&&"get"in i&&a&&null!==(o=i.get(e,t))?o:(o=e.getAttribute(t),null===o?void 0:o))},removeAttr:function(e,t){var n,r,o,i,a,s=0;if(t&&1===e.nodeType)for(r=t.toLowerCase().split(j),i=r.length;s=0}})}),z=/^(?:textarea|input|select)$/i,$=/^([^\.]*)?(?:\.(.+))?$/,G=/(?:^|\s)hover(\.\S+)?\b/,K=/^key/,X=/^(?:mouse|contextmenu)|click/,Q=/^(?:focusinfocus|focusoutblur)$/,J=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Z=function(e){var t=J.exec(e);return t&&(t[1]=(t[1]||"").toLowerCase(),t[3]=t[3]&&RegExp("(?:^|\\s)"+t[3]+"(?:\\s|$)")),t},ee=function(e,t){var n=e.attributes||{};return(!t[1]||e.nodeName.toLowerCase()===t[1])&&(!t[2]||(n.id||{}).value===t[2])&&(!t[3]||t[3].test((n.class||{}).value))},te=function(e){return xt.event.special.hover?e:e.replace(G,"mouseenter$1 mouseleave$1")},xt.event={add:function(e,t,n,r,o){var i,a,s,u,c,l,f,p,d,h,m;if(3!==e.nodeType&&8!==e.nodeType&&t&&n&&(i=xt._data(e))){for(n.handler&&(d=n,n=d.handler,o=d.selector),n.guid||(n.guid=xt.guid++),s=i.events,s||(i.events=s={}),a=i.handle,a||(i.handle=a=function(e){return void 0===xt||e&&xt.event.triggered===e.type?void 0:xt.event.dispatch.apply(a.elem,arguments)},a.elem=e),t=xt.trim(te(t)).split(" "),u=0;u=0&&(h=h.slice(0,-1),i=!0),h.indexOf(".")>=0&&(m=h.split("."),h=m.shift(),m.sort()),n&&!xt.event.customEvent[h]||xt.event.global[h]))if(e="object"==typeof e?e[xt.expando]?e:new xt.Event(h,e):new xt.Event(h),e.type=h,e.isTrigger=!0,e.exclusive=i,e.namespace=m.join("."),e.namespace_re=e.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,c=h.indexOf(":")<0?"on"+h:"",n){if(e.result=void 0,e.target||(e.target=n),t=null!=t?xt.makeArray(t):[],t.unshift(e),l=xt.event.special[h]||{},!l.trigger||!1!==l.trigger.apply(n,t)){if(p=[[n,l.bindType||h]],!r&&!l.noBubble&&!xt.isWindow(n)){for(d=l.delegateType||h,s=Q.test(d+h)?n:n.parentNode,u=null;s;s=s.parentNode)p.push([s,d]),u=s;u&&u===n.ownerDocument&&p.push([u.defaultView||u.parentWindow||window,d])}for(a=0;ap&&g.push({elem:this,matches:f.slice(p)}),t=0;t0?this.on(t,null,e,n):this.trigger(t)},xt.attrFn&&(xt.attrFn[t]=!0),K.test(t)&&(xt.event.fixHooks[t]=xt.event.keyHooks),X.test(t)&&(xt.event.fixHooks[t]=xt.event.mouseHooks)}),function(){function e(e,t,n,r,o,i){var a,s,u,c;for(a=0,s=r.length;a0){l=c;break}c=c[e]}o[s]=l}}var n,r,o,i,a,s,u,c,l,f,p=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),h=0,m=Object.prototype.toString,g=!1,y=!0,v=/\\/g,b=/\r\n/g,_=/\W/;[0,0].sort(function(){return y=!1,0}),n=function(e,t,r,a){var s,c,l,d,h,g,y,v,b,_,w,x,C;if(r=r||[],t=t||bt,s=t,1!==t.nodeType&&9!==t.nodeType)return[];if(!e||"string"!=typeof e)return r;_=!0,w=n.isXML(t),x=[],C=e;do{if(p.exec(""),(c=p.exec(C))&&(C=c[3],x.push(c[1]),c[2])){h=c[3];break}}while(c) +;if(x.length>1&&i.exec(e))if(2===x.length&&o.relative[x[0]])l=f(x[0]+x[1],t,a);else for(l=o.relative[x[0]]?[t]:n(x.shift(),t);x.length;)e=x.shift(),o.relative[e]&&(e+=x.shift()),l=f(e,l,a);else if(!a&&x.length>1&&9===t.nodeType&&!w&&o.match.ID.test(x[0])&&!o.match.ID.test(x[x.length-1])&&(g=n.find(x.shift(),t,w),t=g.expr?n.filter(g.expr,g.set)[0]:g.set[0]),t)for(g=a?{expr:x.pop(),set:u(a)}:n.find(x.pop(),1!==x.length||"~"!==x[0]&&"+"!==x[0]||!t.parentNode?t:t.parentNode,w),l=g.expr?n.filter(g.expr,g.set):g.set,x.length>0?d=u(l):_=!1;x.length;)y=x.pop(),v=y,o.relative[y]?v=x.pop():y="",null==v&&(v=t),o.relative[y](d,v,w);else d=x=[];if(d||(d=l),d||n.error(y||e),"[object Array]"===m.call(d))if(_)if(t&&1===t.nodeType)for(b=0;null!=d[b];b++)d[b]&&(!0===d[b]||1===d[b].nodeType&&n.contains(t,d[b]))&&r.push(l[b]);else for(b=0;null!=d[b];b++)d[b]&&1===d[b].nodeType&&r.push(l[b]);else r.push.apply(r,d);else u(d,r);return h&&(n(h,s,r,a),n.uniqueSort(r)),r},n.uniqueSort=function(e){if(c&&(g=y,e.sort(c),g))for(var t=1;t0},n.find=function(e,t,n){var r,i,a,s,u,c;if(!e)return[];for(i=0,a=o.order.length;i":function(e,t){var r,o,i="string"==typeof t,a=0,s=e.length;if(i&&!_.test(t))for(t=t.toLowerCase();a=0)?n||r.push(a):n&&(t[s]=!1));return!1},ID:function(e){return e[1].replace(v,"")},TAG:function(e,t){return e[1].replace(v,"").toLowerCase()},CHILD:function(e){if("nth"===e[1]){e[2]||n.error(e[0]),e[2]=e[2].replace(/^\+|\s*/g,"");var t=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec("even"===e[2]&&"2n"||"odd"===e[2]&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=t[1]+(t[2]||1)-0,e[3]=t[3]-0}else e[2]&&n.error(e[0]);return e[0]=h++,e},ATTR:function(e,t,n,r,i,a){var s=e[1]=e[1].replace(v,"");return!a&&o.attrMap[s]&&(e[1]=o.attrMap[s]),e[4]=(e[4]||e[5]||"").replace(v,""),"~="===e[2]&&(e[4]=" "+e[4]+" "),e},PSEUDO:function(e,t,r,i,a){if("not"===e[1]){if(!((p.exec(e[3])||"").length>1||/^\w/.test(e[3]))){var s=n.filter(e[3],t,r,!0^a);return r||i.push.apply(i,s),!1}e[3]=n(e[3],null,null,t)}else if(o.match.POS.test(e[0])||o.match.CHILD.test(e[0]))return!0;return e},POS:function(e){return e.unshift(!0),e}},filters:{enabled:function(e){return!1===e.disabled&&"hidden"!==e.type},disabled:function(e){return!0===e.disabled},checked:function(e){return!0===e.checked},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},parent:function(e){return!!e.firstChild},empty:function(e){return!e.firstChild},has:function(e,t,r){return!!n(r[3],e).length},header:function(e){return/h\d/i.test(e.nodeName)},text:function(e){var t=e.getAttribute("type"),n=e.type +;return"input"===e.nodeName.toLowerCase()&&"text"===n&&(t===n||null===t)},radio:function(e){return"input"===e.nodeName.toLowerCase()&&"radio"===e.type},checkbox:function(e){return"input"===e.nodeName.toLowerCase()&&"checkbox"===e.type},file:function(e){return"input"===e.nodeName.toLowerCase()&&"file"===e.type},password:function(e){return"input"===e.nodeName.toLowerCase()&&"password"===e.type},submit:function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&"submit"===e.type},image:function(e){return"input"===e.nodeName.toLowerCase()&&"image"===e.type},reset:function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&"reset"===e.type},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},input:function(e){return/input|select|textarea|button/i.test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(e,t){return 0===t},last:function(e,t,n,r){return t===r.length-1},even:function(e,t){return t%2==0},odd:function(e,t){return t%2==1},lt:function(e,t,n){return tn[3]-0},nth:function(e,t,n){return n[3]-0===t},eq:function(e,t,n){return n[3]-0===t}},filter:{PSEUDO:function(e,t,i,a){var s,u,c,l=t[1],f=o.filters[l];if(f)return f(e,i,t,a);if("contains"===l)return(e.textContent||e.innerText||r([e])||"").indexOf(t[3])>=0;if("not"===l){for(s=t[3],u=0,c=s.length;u=0}},ID:function(e,t){return 1===e.nodeType&&e.getAttribute("id")===t},TAG:function(e,t){return"*"===t&&1===e.nodeType||!!e.nodeName&&e.nodeName.toLowerCase()===t},CLASS:function(e,t){return(" "+(e.className||e.getAttribute("class"))+" ").indexOf(t)>-1},ATTR:function(e,t){var r=t[1],i=n.attr?n.attr(e,r):o.attrHandle[r]?o.attrHandle[r](e):null!=e[r]?e[r]:e.getAttribute(r),a=i+"",s=t[2],u=t[4];return null==i?"!="===s:!s&&n.attr?null!=i:"="===s?a===u:"*="===s?a.indexOf(u)>=0:"~="===s?(" "+a+" ").indexOf(u)>=0:u?"!="===s?a!==u:"^="===s?0===a.indexOf(u):"$="===s?a.substr(a.length-u.length)===u:"|="===s&&(a===u||a.substr(0,u.length+1)===u+"-"):a&&!1!==i},POS:function(e,t,n,r){var i=t[2],a=o.setFilters[i];if(a)return a(e,n,t,r)}}},i=o.match.POS,a=function(e,t){return"\\"+(t-0+1)};for(s in o.match)o.match[s]=RegExp(o.match[s].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[s]=RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[s].source.replace(/\\(\d+)/g,a));o.match.globalPOS=i,u=function(e,t){return e=Array.prototype.slice.call(e,0),t?(t.push.apply(t,e),t):e};try{ +Array.prototype.slice.call(bt.documentElement.childNodes,0)[0].nodeType}catch(e){u=function(e,t){var n,r=0,o=t||[];if("[object Array]"===m.call(e))Array.prototype.push.apply(o,e);else if("number"==typeof e.length)for(n=e.length;r",n.insertBefore(e,n.firstChild),bt.getElementById(t)&&(o.find.ID=function(e,t,n){if(void 0!==t.getElementById&&!n){var r=t.getElementById(e[1]);return r?r.id===e[1]||void 0!==r.getAttributeNode&&r.getAttributeNode("id").nodeValue===e[1]?[r]:void 0:[]}},o.filter.ID=function(e,t){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return 1===e.nodeType&&n&&n.nodeValue===t}),n.removeChild(e),n=e=null}(),function(){var e=bt.createElement("div");e.appendChild(bt.createComment("")),e.getElementsByTagName("*").length>0&&(o.find.TAG=function(e,t){var n,r,o=t.getElementsByTagName(e[1]);if("*"===e[1]){for(n=[],r=0;o[r];r++)1===o[r].nodeType&&n.push(o[r]);o=n}return o}),e.innerHTML="",e.firstChild&&void 0!==e.firstChild.getAttribute&&"#"!==e.firstChild.getAttribute("href")&&(o.attrHandle.href=function(e){return e.getAttribute("href",2)}),e=null}(),bt.querySelectorAll&&function(){var e,t=n,r=bt.createElement("div");if(r.innerHTML="

",!r.querySelectorAll||0!==r.querySelectorAll(".TEST").length){n=function(e,r,i,a){var s,c,l,f,p,d,h;if(r=r||bt,!a&&!n.isXML(r)){if((s=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(e))&&(1===r.nodeType||9===r.nodeType)){if(s[1])return u(r.getElementsByTagName(e),i);if(s[2]&&o.find.CLASS&&r.getElementsByClassName)return u(r.getElementsByClassName(s[2]),i)}if(9===r.nodeType){if("body"===e&&r.body)return u([r.body],i);if(s&&s[3]){if(!(c=r.getElementById(s[3]))||!c.parentNode)return u([],i);if(c.id===s[3])return u([c],i)}try{return u(r.querySelectorAll(e),i)}catch(e){}}else if(1===r.nodeType&&"object"!==r.nodeName.toLowerCase()){l=r,f=r.getAttribute("id"),p=f||"__sizzle__",d=r.parentNode,h=/^\s*[+~]/.test(e),f?p=p.replace(/'/g,"\\$&"):r.setAttribute("id",p),h&&d&&(r=r.parentNode);try{if(!h||d)return u(r.querySelectorAll("[id='"+p+"'] "+e),i)}catch(e){}finally{f||l.removeAttribute("id")}}}return t(e,r,i,a)};for(e in t)n[e]=t[e];r=null}}(), +function(){var e,t,r=bt.documentElement,i=r.matchesSelector||r.mozMatchesSelector||r.webkitMatchesSelector||r.msMatchesSelector;if(i){e=!i.call(bt.createElement("div"),"div"),t=!1;try{i.call(bt.documentElement,"[test!='']:sizzle")}catch(e){t=!0}n.matchesSelector=function(r,a){if(a=a.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']"),!n.isXML(r))try{if(t||!o.match.PSEUDO.test(a)&&!/!=/.test(a)){var s=i.call(r,a);if(s||!e||r.document&&11!==r.document.nodeType)return s}}catch(e){}return n(a,null,null,[r]).length>0}}}(),function(){var e=bt.createElement("div");e.innerHTML="
",e.getElementsByClassName&&0!==e.getElementsByClassName("e").length&&(e.lastChild.className="e",1!==e.getElementsByClassName("e").length&&(o.order.splice(1,0,"CLASS"),o.find.CLASS=function(e,t,n){if(void 0!==t.getElementsByClassName&&!n)return t.getElementsByClassName(e[1])},e=null))}(),bt.documentElement.contains?n.contains=function(e,t){return e!==t&&(!e.contains||e.contains(t))}:bt.documentElement.compareDocumentPosition?n.contains=function(e,t){return!!(16&e.compareDocumentPosition(t))}:n.contains=function(){return!1},n.isXML=function(e){var t=(e?e.ownerDocument||e:0).documentElement;return!!t&&"HTML"!==t.nodeName},f=function(e,t,r){for(var i,a,s,u=[],c="",l=t.nodeType?[t]:t;i=o.match.PSEUDO.exec(e);)c+=i[0],e=e.replace(o.match.PSEUDO,"");for(e=o.relative[e]?e+"*":e,a=0,s=l.length;a0)for(i=o;i=0:xt.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r,o,i,a=[],s=this[0];if(xt.isArray(e)){for(o=1;s&&s.ownerDocument&&s!==t;){for(n=0;n-1:xt.find.matchesSelector(s,e)){a.push(s);break}if(!(s=s.parentNode)||!s.ownerDocument||s===t||11===s.nodeType)break}return a=a.length>1?xt.unique(a):a, +this.pushStack(a,"closest",e)},index:function(e){return e?"string"==typeof e?xt.inArray(this[0],xt(e)):xt.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n="string"==typeof e?xt(e,t):xt.makeArray(e&&e.nodeType?[e]:e),r=xt.merge(this.get(),n);return this.pushStack(u(n[0])||u(r[0])?r:xt.unique(r))},andSelf:function(){return this.add(this.prevObject)}}),xt.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return xt.dir(e,"parentNode")},parentsUntil:function(e,t,n){return xt.dir(e,"parentNode",n)},next:function(e){return xt.nth(e,2,"nextSibling")},prev:function(e){return xt.nth(e,2,"previousSibling")},nextAll:function(e){return xt.dir(e,"nextSibling")},prevAll:function(e){return xt.dir(e,"previousSibling")},nextUntil:function(e,t,n){return xt.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return xt.dir(e,"previousSibling",n)},siblings:function(e){return xt.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return xt.sibling(e.firstChild)},contents:function(e){return xt.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:xt.makeArray(e.childNodes)}},function(e,t){xt.fn[e]=function(n,r){var o=xt.map(this,t,n);return ne.test(e)||(r=n),r&&"string"==typeof r&&(o=xt.filter(r,o)),o=this.length>1&&!ue[e]?xt.unique(o):o,(this.length>1||oe.test(r))&&re.test(e)&&(o=o.reverse()),this.pushStack(o,e,ae.call(arguments).join(","))}}),xt.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?xt.find.matchesSelector(t[0],e)?[t[0]]:[]:xt.find.matches(e,t)},dir:function(e,t,n){for(var r=[],o=e[t];o&&9!==o.nodeType&&(void 0===n||1!==o.nodeType||!xt(o).is(n));)1===o.nodeType&&r.push(o),o=o[t];return r},nth:function(e,t,n,r){t=t||1;for(var o=0;e&&(1!==e.nodeType||++o!==t);e=e[n]);return e},sibling:function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}}),ce="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",le=/ jQuery\d+="(?:\d+|null)"/g,fe=/^\s+/,pe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,de=/<([\w:]+)/,he=/
","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},Ce=l(bt),xe.optgroup=xe.option,xe.tbody=xe.tfoot=xe.colgroup=xe.caption=xe.thead,xe.th=xe.td,xt.support.htmlSerialize||(xe._default=[1,"div
","
"]),xt.fn.extend({text:function(e){return xt.access(this,function(e){ +return void 0===e?xt.text(this):this.empty().append((this[0]&&this[0].ownerDocument||bt).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(xt.isFunction(e))return this.each(function(t){xt(this).wrapAll(e.call(this,t))});if(this[0]){var t=xt(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return xt.isFunction(e)?this.each(function(t){xt(this).wrapInner(e.call(this,t))}):this.each(function(){var t=xt(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=xt.isFunction(e);return this.each(function(n){xt(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){xt.nodeName(this,"body")||xt(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){1===this.nodeType&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){1===this.nodeType&&this.insertBefore(e,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=xt.clean(arguments);return e.push.apply(e,this.toArray()),this.pushStack(e,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=this.pushStack(this,"after",arguments);return e.push.apply(e,xt.clean(arguments)),e}},remove:function(e,t){for(var n,r=0;null!=(n=this[r]);r++)e&&!xt.filter(e,[n]).length||(t||1!==n.nodeType||(xt.cleanData(n.getElementsByTagName("*")),xt.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)for(1===e.nodeType&&xt.cleanData(e.getElementsByTagName("*"));e.firstChild;)e.removeChild(e.firstChild);return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return xt.clone(this,e,t)})},html:function(e){return xt.access(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(le,""):null;if("string"==typeof e&&!ge.test(e)&&(xt.support.leadingWhitespace||!fe.test(e))&&!xe[(de.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(pe,"<$1>");try{for(;n1&&s0?this.clone(!0):this).get(),xt(s[r])[t](i),a=a.concat(i);return this.pushStack(a,e,s.selector)}}),xt.extend({clone:function(e,t,n){var r,o,i,a=xt.support.html5Clone||xt.isXMLDoc(e)||!ve.test("<"+e.nodeName+">")?e.cloneNode(!0):y(e);if(!(xt.support.noCloneEvent&&xt.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||xt.isXMLDoc(e)))for(d(e,a),r=h(e),o=h(a),i=0;r[i];++i)o[i]&&d(r[i],o[i]);if(t&&(p(e,a),n))for(r=h(e),o=h(a),i=0;r[i];++i)p(r[i],o[i]);return r=o=null,a},clean:function(e,t,n,r){var o,i,a,s,u,c,f,p,d,h,m,y,v,b,_,w=[];for(t=t||bt,void 0===t.createElement&&(t=t.ownerDocument||t[0]&&t[0].ownerDocument||bt),s=0;null!=(u=e[s]);s++)if("number"==typeof u&&(u+=""),u){if("string"==typeof u)if(me.test(u)){for(u=u.replace(pe,"<$1>"),c=(de.exec(u)||["",""])[1].toLowerCase(),f=xe[c]||xe._default,p=f[0],d=t.createElement("div"),h=Ce.childNodes,t===bt?Ce.appendChild(d):l(t).appendChild(d),d.innerHTML=f[1]+u+f[2];p--;)d=d.lastChild;if(!xt.support.tbody)for(y=he.test(u),v="table"!==c||y?""!==f[1]||y?[]:d.childNodes:d.firstChild&&d.firstChild.childNodes,a=v.length-1;a>=0;--a)xt.nodeName(v[a],"tbody")&&!v[a].childNodes.length&&v[a].parentNode.removeChild(v[a]);!xt.support.leadingWhitespace&&fe.test(u)&&d.insertBefore(t.createTextNode(fe.exec(u)[0]),d.firstChild),u=d.childNodes,d&&(d.parentNode.removeChild(d), +h.length>0&&(m=h[h.length-1])&&m.parentNode&&m.parentNode.removeChild(m))}else u=t.createTextNode(u);if(!xt.support.appendChecked)if(u[0]&&"number"==typeof(b=u.length))for(a=0;a1)},xt.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ae(e,"opacity");return""===n?"1":n}return e.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{float:xt.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,i,a=xt.camelCase(t),s=e.style,u=xt.cssHooks[a];if(t=xt.cssProps[a]||a,void 0===n)return u&&"get"in u&&void 0!==(o=u.get(e,!1,r))?o:s[t];if(!(i=typeof n,"string"===i&&(o=Oe.exec(n))&&(n=+(o[1]+1)*+o[2]+parseFloat(xt.css(e,t)),i="number"),null==n||"number"===i&&isNaN(n)||("number"!==i||xt.cssNumber[a]||(n+="px"),u&&"set"in u&&void 0===(n=u.set(e,n)))))try{s[t]=n}catch(e){}}},css:function(e,t,n){var r,o;return t=xt.camelCase(t),o=xt.cssHooks[t],t=xt.cssProps[t]||t,"cssFloat"===t&&(t="float"),o&&"get"in o&&void 0!==(r=o.get(e,!0,n))?r:Ae?Ae(e,t):void 0},swap:function(e,t,n){var r,o,i={};for(o in t)i[o]=e.style[o],e.style[o]=t[o];r=n.call(e);for(o in t)e.style[o]=i[o];return r}}),xt.curCSS=xt.css,bt.defaultView&&bt.defaultView.getComputedStyle&&(Le=function(e,t){var n,r,o,i,a=e.style;return t=t.replace(Ee,"-$1").toLowerCase(),(r=e.ownerDocument.defaultView)&&(o=r.getComputedStyle(e,null))&&(""!==(n=o.getPropertyValue(t))||xt.contains(e.ownerDocument.documentElement,e)||(n=xt.style(e,t))),!xt.support.pixelMargin&&o&&Ne.test(t)&&Me.test(n)&&(i=a.width,a.width=n,n=o.width,a.width=i),n}),bt.documentElement.currentStyle&&(Ie=function(e,t){var n,r,o,i=e.currentStyle&&e.currentStyle[t],a=e.style;return null==i&&a&&(o=a[t])&&(i=o),Me.test(i)&&(n=a.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left), +a.left="fontSize"===t?"1em":i,i=a.pixelLeft+"px",a.left=n,r&&(e.runtimeStyle.left=r)),""===i?"auto":i}),Ae=Le||Ie,xt.each(["height","width"],function(e,t){xt.cssHooks[t]={get:function(e,n,r){if(n)return 0!==e.offsetWidth?v(e,t,r):xt.swap(e,De,function(){return v(e,t,r)})},set:function(e,t){return Se.test(t)?t+"px":t}}}),xt.support.opacity||(xt.cssHooks.opacity={get:function(e,t){return ke.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?parseFloat(RegExp.$1)/100+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,o=xt.isNumeric(t)?"alpha(opacity="+100*t+")":"",i=r&&r.filter||n.filter||"";n.zoom=1,t>=1&&""===xt.trim(i.replace(Te,""))&&(n.removeAttribute("filter"),r&&!r.filter)||(n.filter=Te.test(i)?i.replace(Te,o):i+" "+o)}}),xt(function(){xt.support.reliableMarginRight||(xt.cssHooks.marginRight={get:function(e,t){return xt.swap(e,{display:"inline-block"},function(){return t?Ae(e,"margin-right"):e.style.marginRight})}})}),xt.expr&&xt.expr.filters&&(xt.expr.filters.hidden=function(e){var t=e.offsetWidth,n=e.offsetHeight;return 0===t&&0===n||!xt.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||xt.css(e,"display"))},xt.expr.filters.visible=function(e){return!xt.expr.filters.hidden(e)}),xt.each({margin:"",padding:"",border:"Width"},function(e,t){xt.cssHooks[e+t]={expand:function(n){var r,o="string"==typeof n?n.split(" "):[n],i={};for(r=0;r<4;r++)i[e+Pe[r]+t]=o[r]||o[r-2]||o[0];return i}}}),je=/%20/g,Re=/\[\]$/,Fe=/\r?\n/g,Ue=/#.*$/,He=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ye=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,We=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,Be=/^(?:GET|HEAD)$/,Ve=/^\/\//,qe=/\?/,ze=/)<[^<]*)*<\/script>/gi,$e=/^(?:select|textarea)/i,Ge=/\s+/,Ke=/([?&])_=[^&]*/,Xe=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,Qe=xt.fn.load,Je={},Ze={},nt="*/*";try{et=wt.href}catch(e){et=bt.createElement("a"),et.href="",et=et.href}tt=Xe.exec(et.toLowerCase())||[],xt.fn.extend({load:function(e,t,n){var r,o,i,a;return"string"!=typeof e&&Qe?Qe.apply(this,arguments):this.length?(r=e.indexOf(" "),r>=0&&(o=e.slice(r,e.length),e=e.slice(0,r)),i="GET",t&&(xt.isFunction(t)?(n=t,t=void 0):"object"==typeof t&&(t=xt.param(t,xt.ajaxSettings.traditional),i="POST")),a=this,xt.ajax({url:e,type:i,dataType:"html",data:t,complete:function(e,t,r){r=e.responseText,e.isResolved()&&(e.done(function(e){r=e}),a.html(o?xt("
").append(r.replace(ze,"")).find(o):r)),n&&a.each(n,[r,t,e])}}),this):this},serialize:function(){return xt.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?xt.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||$e.test(this.nodeName)||Ye.test(this.type))}).map(function(e,t){var n=xt(this).val();return null==n?null:xt.isArray(n)?xt.map(n,function(e,n){return{name:t.name,value:e.replace(Fe,"\r\n")}}):{name:t.name,value:n.replace(Fe,"\r\n")}}).get()}}), +xt.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){xt.fn[t]=function(e){return this.on(t,e)}}),xt.each(["get","post"],function(e,t){xt[t]=function(e,n,r,o){return xt.isFunction(n)&&(o=o||r,r=n,n=void 0),xt.ajax({type:t,url:e,data:n,success:r,dataType:o})}}),xt.extend({getScript:function(e,t){return xt.get(e,void 0,t,"script")},getJSON:function(e,t,n){return xt.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?w(e,xt.ajaxSettings):(t=e,e=xt.ajaxSettings),w(e,t),e},ajaxSettings:{url:et,isLocal:We.test(tt[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":nt},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":window.String,"text html":!0,"text json":xt.parseJSON,"text xml":xt.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:b(Je),ajaxTransport:b(Ze),ajax:function(e,t){function n(e,t,n,l){if(2!==y){y=2,m&&clearTimeout(m),h=void 0,p=l||"",w.readyState=e>0?4:0;var f,d,g,b,_,x=t,k=n?C(r,w,n):void 0;if(e>=200&&e<300||304===e)if(r.ifModified&&((b=w.getResponseHeader("Last-Modified"))&&(xt.lastModified[c]=b),(_=w.getResponseHeader("Etag"))&&(xt.etag[c]=_)),304===e)x="notmodified",f=!0;else try{d=T(r,k),x="success",f=!0}catch(e){x="parsererror",g=e}else g=x,x&&!e||(x="error",e<0&&(e=0));w.status=e,w.statusText=""+(t||x),f?a.resolveWith(o,[d,x,w]):a.rejectWith(o,[w,x,g]),w.statusCode(u),u=void 0,v&&i.trigger("ajax"+(f?"Success":"Error"),[w,r,f?d:g]),s.fireWith(o,[w,x]),v&&(i.trigger("ajaxComplete",[w,r]),--xt.active||xt.event.trigger("ajaxStop"))}}var r,o,i,a,s,u,c,l,f,p,d,h,m,g,y,v,b,w,x,k;if("object"==typeof e&&(t=e,e=void 0),t=t||{},r=xt.ajaxSetup({},t),o=r.context||r,i=o!==r&&(o.nodeType||o instanceof xt)?xt(o):xt.event,a=xt.Deferred(),s=xt.Callbacks("once memory"),u=r.statusCode||{},l={},f={},y=0,w={readyState:0,setRequestHeader:function(e,t){if(!y){var n=e.toLowerCase();e=f[n]=f[n]||e,l[e]=t}return this},getAllResponseHeaders:function(){return 2===y?p:null},getResponseHeader:function(e){var t;if(2===y){if(!d)for(d={};t=He.exec(p);)d[t[1].toLowerCase()]=t[2];t=d[e.toLowerCase()]}return void 0===t?null:t},overrideMimeType:function(e){return y||(r.mimeType=e),this},abort:function(e){return e=e||"abort",h&&h.abort(e),n(0,e),this}},a.promise(w),w.success=w.done,w.error=w.fail,w.complete=s.add,w.statusCode=function(e){if(e){var t;if(y<2)for(t in e)u[t]=[u[t],e[t]];else t=e[w.status],w.then(t,t)}return this},r.url=((e||r.url)+"").replace(Ue,"").replace(Ve,tt[1]+"//"),r.dataTypes=xt.trim(r.dataType||"*").toLowerCase().split(Ge),null==r.crossDomain&&(g=Xe.exec(r.url.toLowerCase()),r.crossDomain=!(!g||g[1]==tt[1]&&g[2]==tt[2]&&(g[3]||("http:"===g[1]?80:443))==(tt[3]||("http:"===tt[1]?80:443)))),r.data&&r.processData&&"string"!=typeof r.data&&(r.data=xt.param(r.data,r.traditional)),_(Je,r,t,w),2===y)return!1;v=r.global, +r.type=r.type.toUpperCase(),r.hasContent=!Be.test(r.type),v&&0==xt.active++&&xt.event.trigger("ajaxStart"),r.hasContent||(r.data&&(r.url+=(qe.test(r.url)?"&":"?")+r.data,delete r.data),c=r.url,!1===r.cache&&(x=xt.now(),k=r.url.replace(Ke,"$1_="+x),r.url=k+(k===r.url?(qe.test(r.url)?"&":"?")+"_="+x:""))),(r.data&&r.hasContent&&!1!==r.contentType||t.contentType)&&w.setRequestHeader("Content-Type",r.contentType),r.ifModified&&(c=c||r.url,xt.lastModified[c]&&w.setRequestHeader("If-Modified-Since",xt.lastModified[c]),xt.etag[c]&&w.setRequestHeader("If-None-Match",xt.etag[c])),w.setRequestHeader("Accept",r.dataTypes[0]&&r.accepts[r.dataTypes[0]]?r.accepts[r.dataTypes[0]]+("*"!==r.dataTypes[0]?", "+nt+"; q=0.01":""):r.accepts["*"]);for(b in r.headers)w.setRequestHeader(b,r.headers[b]);if(r.beforeSend&&(!1===r.beforeSend.call(o,w,r)||2===y))return w.abort(),!1;for(b in{success:1,error:1,complete:1})w[b](r[b]);if(h=_(Ze,r,t,w)){w.readyState=1,v&&i.trigger("ajaxSend",[w,r]),r.async&&r.timeout>0&&(m=setTimeout(function(){w.abort("timeout")},r.timeout));try{y=1,h.send(l,n)}catch(e){if(!(y<2))throw e;n(-1,e)}}else n(-1,"No Transport");return w},param:function(e,t){var n,r=[],o=function(e,t){t=xt.isFunction(t)?t():t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=xt.ajaxSettings.traditional),xt.isArray(e)||e.jquery&&!xt.isPlainObject(e))xt.each(e,function(){o(this.name,this.value)});else for(n in e)x(n,e[n],t,o);return r.join("&").replace(je,"+")}}),xt.extend({active:0,lastModified:{},etag:{}}),rt=xt.now(),ot=/(\=)\?(&|$)|\?\?/i,xt.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return xt.expando+"_"+rt++}}),xt.ajaxPrefilter("json jsonp",function(e,t,n){var r,o,i,a,s,u,c="string"==typeof e.data&&/^application\/x\-www\-form\-urlencoded/.test(e.contentType);if("jsonp"===e.dataTypes[0]||!1!==e.jsonp&&(ot.test(e.url)||c&&ot.test(e.data)))return o=e.jsonpCallback=xt.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,i=window[o],a=e.url,s=e.data,u="$1"+o+"$2",!1!==e.jsonp&&(a=a.replace(ot,u),e.url===a&&(c&&(s=s.replace(ot,u)),e.data===s&&(a+=(/\?/.test(a)?"&":"?")+e.jsonp+"="+o))),e.url=a,e.data=s,window[o]=function(e){r=[e]},n.always(function(){window[o]=i,r&&xt.isFunction(i)&&window[o](r[0])}),e.converters["script json"]=function(){return r||xt.error(o+" was not called"),r[0]},e.dataTypes[0]="json","script"}),xt.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return xt.globalEval(e),e}}}),xt.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),xt.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=bt.head||bt.getElementsByTagName("head")[0]||bt.documentElement;return{send:function(r,o){t=bt.createElement("script"),t.async="async",e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,r){ +(r||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,n&&t.parentNode&&n.removeChild(t),t=void 0,r||o(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(0,1)}}}}),it=!!window.ActiveXObject&&function(){for(var e in st)st[e](0,1)},at=0,xt.ajaxSettings.xhr=window.ActiveXObject?function(){return!this.isLocal&&k()||E()}:k,function(e){xt.extend(xt.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(xt.ajaxSettings.xhr()),xt.support.ajax&&xt.ajaxTransport(function(e){if(!e.crossDomain||xt.support.cors){var t;return{send:function(n,r){var o,i,a=e.xhr();if(e.username?a.open(e.type,e.url,e.async,e.username,e.password):a.open(e.type,e.url,e.async),e.xhrFields)for(i in e.xhrFields)a[i]=e.xhrFields[i];e.mimeType&&a.overrideMimeType&&a.overrideMimeType(e.mimeType),e.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest");try{for(i in n)a.setRequestHeader(i,n[i])}catch(e){}a.send(e.hasContent&&e.data||null),t=function(n,i){var s,u,c,l,f;try{if(t&&(i||4===a.readyState))if(t=void 0,o&&(a.onreadystatechange=xt.noop,it&&delete st[o]),i)4!==a.readyState&&a.abort();else{s=a.status,c=a.getAllResponseHeaders(),l={},f=a.responseXML,f&&f.documentElement&&(l.xml=f);try{l.text=a.responseText}catch(n){}try{u=a.statusText}catch(e){u=""}s||!e.isLocal||e.crossDomain?1223===s&&(s=204):s=l.text?200:404}}catch(e){i||r(-1,e)}l&&r(s,u,l,c)},e.async&&4!==a.readyState?(o=++at,it&&(st||(st={},xt(window).unload(it)),st[o]=t),a.onreadystatechange=t):t()},abort:function(){t&&t(0,1)}}}}),ut={},ft=/^(?:toggle|show|hide)$/,pt=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,ht=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],xt.fn.extend({show:function(e,t,n){var r,o,i,a;if(e||0===e)return this.animate(O("show",3),e,t,n);for(i=0,a=this.length;i=s.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),s.animatedProperties[this.prop]=!0;for(t in s.animatedProperties)!0!==s.animatedProperties[t]&&(i=!1);if(i){if(null==s.overflow||xt.support.shrinkWrapBlocks||xt.each(["","X","Y"],function(e,t){a.style["overflow"+t]=s.overflow[e]}),s.hide&&xt(a).hide(),s.hide||s.show)for(t in s.animatedProperties)xt.style(a,t,s.orig[t]),xt.removeData(a,"fxshow"+t,!0),xt.removeData(a,"toggle"+t,!0);r=s.complete,r&&(s.complete=!1,r.call(a))}return!1}return s.duration==1/0?this.now=o:(n=o-this.startTime,this.state=n/s.duration,this.pos=xt.easing[s.animatedProperties[this.prop]](this.state,n,0,1,s.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update(),!0}},xt.extend(xt.fx,{tick:function(){for(var e,t=xt.timers,n=0;n-1,u={},c={},s?(c=r.position(),l=c.top,f=c.left):(l=parseFloat(i)||0,f=parseFloat(a)||0),xt.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+l),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):r.css(u)}},xt.fn.extend({position:function(){if(!this[0])return null;var e=this[0],t=this.offsetParent(),n=this.offset(),r=vt.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(xt.css(e,"marginTop"))||0,n.left-=parseFloat(xt.css(e,"marginLeft"))||0,r.top+=parseFloat(xt.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(xt.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||bt.body;e&&!vt.test(e.nodeName)&&"static"===xt.css(e,"position");)e=e.offsetParent;return e})}}),xt.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);xt.fn[e]=function(r){return xt.access(this,function(e,r,o){var i=D(e);if(void 0===o)return i?t in i?i[t]:xt.support.boxModel&&i.document.documentElement[r]||i.document.body[r]:e[r];i?i.scrollTo(n?xt(i).scrollLeft():o,n?o:xt(i).scrollTop()):e[r]=o},e,r,arguments.length,null)}}),xt.each({Height:"height",Width:"width" +},function(e,t){var n="client"+e,r="scroll"+e,o="offset"+e;xt.fn["inner"+e]=function(){var e=this[0];return e?e.style?parseFloat(xt.css(e,t,"padding")):this[t]():null},xt.fn["outer"+e]=function(e){var n=this[0];return n?n.style?parseFloat(xt.css(n,t,e?"margin":"border")):this[t]():null},xt.fn[t]=function(e){return xt.access(this,function(e,t,i){var a,s,u,c;return xt.isWindow(e)?(a=e.document,s=a.documentElement[n],xt.support.boxModel&&s||a.body&&a.body[n]||s):9===e.nodeType?(a=e.documentElement,a[n]>=a[r]?a[n]:Math.max(e.body[r],a[r],e.body[o],a[o])):void 0===i?(u=xt.css(e,t),c=parseFloat(u),xt.isNumeric(c)?c:u):void xt(e).css(t,i)},t,e,arguments.length,null)}}),e.exports=window.jQuery=window.$=xt},,function(e,t,n){"use strict";var r=n(66),o=r;e.exports=o},function(e,t){"use strict";function n(e){var t,n,r=arguments.length-1,o="Minified React error #"+e+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+e;for(t=0;t0)for(n in Hr)r=Hr[n],void 0!==(o=t[r])&&(e[r]=o);return e}function m(e){h(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),!1===Yr&&(Yr=!0,t.updateOffset(this),Yr=!1)}function g(e){ +return e instanceof m||null!=e&&null!=e._isAMomentObject}function y(e){return e<0?Math.ceil(e):Math.floor(e)}function v(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=y(t)),n}function b(e,t,n){var r,o=Math.min(e.length,t.length),i=Math.abs(e.length-t.length),a=0;for(r=0;r0;){if(r=C(o.slice(0,t).join("-")))return r;if(n&&n.length>=t&&b(o,n,!0)>=t-1)break;t--}i++}return null}function C(t){var r=null;if(!Wr[t]&&void 0!==e&&e&&e.exports)try{r=Rn._abbr,n(724)("./"+t),T(r)}catch(e){}return Wr[t]}function T(e,t){var n;return e&&(n=void 0===t?E(e):k(e,t))&&(Rn=n),Rn._abbr}function k(e,t){return null!==t?(t.abbr=e,Wr[e]=Wr[e]||new _,Wr[e].set(t),T(e),Wr[e]):(delete Wr[e],null)}function E(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Rn;if(!o(e)){if(t=C(e))return t;e=[e]}return x(e)}function S(e,t){var n=e.toLowerCase();Br[n]=Br[n+"s"]=Br[t]=e}function M(e){return"string"==typeof e?Br[e]||Br[e.toLowerCase()]:void 0}function O(e){var t,n,r={};for(n in e)s(e,n)&&(t=M(n))&&(r[t]=e[n]);return r}function N(e,n){return function(r){return null!=r?(P(this,e,r),t.updateOffset(this,n),this):D(this,e)}}function D(e,t){return e._d["get"+(e._isUTC?"UTC":"")+t]()}function P(e,t,n){return e._d["set"+(e._isUTC?"UTC":"")+t](n)}function A(e,t){var n;if("object"==typeof e)for(n in e)this.set(n,e[n]);else if(e=M(e),"function"==typeof this[e])return this[e](t);return this}function L(e,t,n){var r=""+Math.abs(e),o=t-r.length;return(e>=0?n?"+":"":"-")+(""+Math.pow(10,Math.max(0,o))).substr(1)+r}function I(e,t,n,r){var o=r;"string"==typeof r&&(o=function(){return this[r]()}),e&&($r[e]=o),t&&($r[t[0]]=function(){return L(o.apply(this,arguments),t[1],t[2])}),n&&($r[n]=function(){return this.localeData().ordinal(o.apply(this,arguments),e)})}function j(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function R(e){var t,n,r=e.match(Vr);for(t=0,n=r.length;t=0&&qr.test(e);)e=e.replace(qr,n),qr.lastIndex=0,r-=1;return e}function H(e){return"function"==typeof e&&"[object Function]"===Object.prototype.toString.call(e)}function Y(e,t,n){uo[e]=H(t)?t:function(e){return e&&n?n:t}}function W(e,t){return s(uo,e)?uo[e](t._strict,t._locale):RegExp(B(e))}function B(e){return e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,r,o){return t||n||r||o}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function V(e,t){var n,r=t;for("string"==typeof e&&(e=[e]),"number"==typeof t&&(r=function(e,n){n[t]=v(e)}), +n=0;n11?fo:n[po]<1||n[po]>$(n[lo],n[fo])?po:n[ho]<0||n[ho]>24||24===n[ho]&&(0!==n[mo]||0!==n[go]||0!==n[yo])?ho:n[mo]<0||n[mo]>59?mo:n[go]<0||n[go]>59?go:n[yo]<0||n[yo]>999?yo:-1,f(e)._overflowDayOfYear&&(tpo)&&(t=po),f(e).overflow=t),e}function te(e){!1===t.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function ne(e,t){var n=!0;return u(function(){return n&&(te(e+"\n"+Error().stack),n=!1),t.apply(this,arguments)},t)}function re(e,t){Hn[e]||(te(t),Hn[e]=!0)}function oe(e){var t,n,r=e._i,o=Yn.exec(r);if(o){for(f(e).iso=!0,t=0,n=Wn.length;to&&(i-=7),i0?e:e-1,dayOfYear:i>0?i:ue(e-1)+i}}function ve(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")}function be(e,t,n){return null!=e?e:null!=t?t:n}function _e(e){var t=new Date;return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}function we(e){var t,n,r,o,i=[];if(!e._d){for(r=_e(e),e._w&&null==e._a[po]&&null==e._a[fo]&&xe(e),e._dayOfYear&&(o=be(e._a[lo],r[lo]),e._dayOfYear>ue(o)&&(f(e)._overflowDayOfYear=!0),n=se(o,0,e._dayOfYear),e._a[fo]=n.getUTCMonth(),e._a[po]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=i[t]=r[t];for(;t<7;t++)e._a[t]=i[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ho]&&0===e._a[mo]&&0===e._a[go]&&0===e._a[yo]&&(e._nextDay=!0,e._a[ho]=0),e._d=(e._useUTC?se:ae).apply(null,i),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ho]=24)}}function xe(e){var t,n,r,o,i,a,s;t=e._w,null!=t.GG||null!=t.W||null!=t.E?(i=1,a=4,n=be(t.GG,e._a[lo],fe(De(),1,4).year),r=be(t.W,1),o=be(t.E,1)):(i=e._locale._week.dow,a=e._locale._week.doy,n=be(t.gg,e._a[lo],fe(De(),i,a).year),r=be(t.w,1),null!=t.d?(o=t.d)0&&f(e).unusedInput.push(a),s=s.slice(s.indexOf(r)+r.length),c+=r.length),$r[i]?(r?f(e).empty=!1:f(e).unusedTokens.push(i),z(i,r,e)):e._strict&&!r&&f(e).unusedTokens.push(i);f(e).charsLeftOver=u-c,s.length>0&&f(e).unusedInput.push(s),!0===f(e).bigHour&&e._a[ho]<=12&&e._a[ho]>0&&(f(e).bigHour=void 0),e._a[ho]=Te(e._locale,e._a[ho],e._meridiem),we(e),ee(e)}function Te(e,t,n){var r;return null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?(r=e.isPM(n),r&&t<12&&(t+=12),r||12!==t||(t=0),t):t}function ke(e){var t,n,r,o,i;if(0===e._f.length)return f(e).invalidFormat=!0,void(e._d=new Date(NaN));for(o=0;othis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ge(){var e,t;return void 0!==this._isDSTShifted?this._isDSTShifted:(e={},h(e,this),e=Me(e),e._a?(t=e._isUTC?c(e._a):De(e._a),this._isDSTShifted=this.isValid()&&b(e._a,t.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted)}function Ke(){return!this._isUTC}function Xe(){return this._isUTC}function Qe(){return this._isUTC&&0===this._offset}function Je(e,t){var n,r,o,i=e,a=null;return je(e)?i={ms:e._milliseconds,d:e._days,M:e._months}:"number"==typeof e?(i={},t?i[t]=e:i.milliseconds=e):(a=Xn.exec(e))?(n="-"===a[1]?-1:1,i={y:0,d:v(a[po])*n,h:v(a[ho])*n,m:v(a[mo])*n,s:v(a[go])*n,ms:v(a[yo])*n}):(a=Qn.exec(e))?(n="-"===a[1]?-1:1,i={y:Ze(a[2],n),M:Ze(a[3],n),d:Ze(a[4],n),h:Ze(a[5],n),m:Ze(a[6],n),s:Ze(a[7],n),w:Ze(a[8],n) +}):null==i?i={}:"object"==typeof i&&("from"in i||"to"in i)&&(o=tt(De(i.from),De(i.to)),i={},i.ms=o.milliseconds,i.M=o.months),r=new Ie(i),je(e)&&s(e,"_locale")&&(r._locale=e._locale),r}function Ze(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function et(e,t){var n={milliseconds:0,months:0};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function tt(e,t){var n;return t=Ue(t,e),e.isBefore(t)?n=et(e,t):(n=et(t,e),n.milliseconds=-n.milliseconds,n.months=-n.months),n}function nt(e,t){return function(n,r){var o,i;return null===r||isNaN(+r)||(re(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period)."),i=n,n=r,r=i),n="string"==typeof n?+n:n,o=Je(n,r),rt(this,o,e),this}}function rt(e,n,r,o){var i=n._milliseconds,a=n._days,s=n._months;o=null==o||o,i&&e._d.setTime(+e._d+i*r),a&&P(e,"Date",D(e,"Date")+a*r),s&&Q(e,D(e,"Month")+s*r),o&&t.updateOffset(e,a||s)}function ot(e,t){var n=e||De(),r=Ue(n,this).startOf("day"),o=this.diff(r,"days",!0),i=o<-6?"sameElse":o<-1?"lastWeek":o<0?"lastDay":o<1?"sameDay":o<2?"nextDay":o<7?"nextWeek":"sameElse";return this.format(t&&t[i]||this.localeData().calendar(i,this,De(n)))}function it(){return new m(this)}function at(e,t){return t=M(void 0!==t?t:"millisecond"),"millisecond"===t?(e=g(e)?e:De(e),+this>+e):(g(e)?+e:+De(e))<+this.clone().startOf(t)}function st(e,t){var n;return t=M(void 0!==t?t:"millisecond"),"millisecond"===t?(e=g(e)?e:De(e),+this<+e):(n=g(e)?+e:+De(e),+this.clone().endOf(t)11?n?"pm":"PM":n?"am":"AM"}function Xt(e,t){t[yo]=v(1e3*("0."+e))}function Qt(){return this._isUTC?"UTC":""}function Jt(){return this._isUTC?"Coordinated Universal Time":""}function Zt(e){return De(1e3*e)}function en(){return De.apply(null,arguments).parseZone()} +function tn(e,t,n){var r=this._calendar[e];return"function"==typeof r?r.call(t,n):r}function nn(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])}function rn(){return this._invalidDate}function on(e){return this._ordinal.replace("%d",e)}function an(e){return e}function sn(e,t,n,r){var o=this._relativeTime[n];return"function"==typeof o?o(e,t,n,r):o.replace(/%d/i,e)}function un(e,t){var n=this._relativeTime[e>0?"future":"past"];return"function"==typeof n?n(t):n.replace(/%s/i,t)}function cn(e){var t,n;for(n in e)t=e[n],"function"==typeof t?this[n]=t:this["_"+n]=t;this._ordinalParseLenient=RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function ln(e,t,n,r){var o=E(),i=c().set(r,t);return o[n](i,e)}function fn(e,t,n,r,o){var i,a;if("number"==typeof e&&(t=e,e=void 0),e=e||"",null!=t)return ln(e,t,n,o);for(a=[],i=0;i=0&&a>=0&&s>=0||i<=0&&a<=0&&s<=0||(i+=864e5*wn(Tn(s)+a),a=0,s=0),u.milliseconds=i%1e3,e=y(i/1e3),u.seconds=e%60,t=y(e/60),u.minutes=t%60,n=y(t/60),u.hours=n%24,a+=y(n/24),o=y(Cn(a)),s+=o,a-=wn(Tn(o)),r=y(s/12),s%=12,u.days=a,u.months=s,u.years=r,this}function Cn(e){return 4800*e/146097}function Tn(e){return 146097*e/4800}function kn(e){var t,n,r=this._milliseconds;if("month"===(e=M(e))||"year"===e)return t=this._days+r/864e5,n=this._months+Cn(t),"month"===e?n:n/12;switch(t=this._days+Math.round(Tn(this._months)),e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return 24*t+r/36e5;case"minute":return 1440*t+r/6e4;case"second":return 86400*t+r/1e3;case"millisecond":return Math.floor(864e5*t)+r;default:throw Error("Unknown unit "+e)}}function En(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*v(this._months/12)}function Sn(e){return function(){return this.as(e)}}function Mn(e){return e=M(e),this[e+"s"]()}function On(e){return function(){return this._data[e]}}function Nn(){return y(this.days()/7)}function Dn(e,t,n,r,o){return o.relativeTime(t||1,!!n,e,r)}function Pn(e,t,n){ +var r=Je(e).abs(),o=jr(r.as("s")),i=jr(r.as("m")),a=jr(r.as("h")),s=jr(r.as("d")),u=jr(r.as("M")),c=jr(r.as("y")),l=o0,l[4]=n,Dn.apply(null,l)}function An(e,t){return void 0!==Rr[e]&&(void 0===t?Rr[e]:(Rr[e]=t,!0))}function Ln(e){var t=this.localeData(),n=Pn(this,!e,t);return e&&(n=t.pastFuture(+this,n)),t.postformat(n)}function In(){var e,t,n,r,o,i,a,s,u=Fr(this._milliseconds)/1e3,c=Fr(this._days),l=Fr(this._months),f=y(u/60),p=y(f/60);return u%=60,f%=60,e=y(l/12),l%=12,t=e,n=l,r=c,o=p,i=f,a=u,s=this.asSeconds(),s?(s<0?"-":"")+"P"+(t?t+"Y":"")+(n?n+"M":"")+(r?r+"D":"")+(o||i||a?"T":"")+(o?o+"H":"")+(i?i+"M":"")+(a?a+"S":""):"P0D"}var jn,Rn,Fn,Un,Hn,Yn,Wn,Bn,Vn,qn,zn,$n,Gn,Kn,Xn,Qn,Jn,Zn,er,tr,nr,rr,or,ir,ar,sr,ur,cr,lr,fr,pr,dr,hr,mr,gr,yr,vr,br,_r,wr,xr,Cr,Tr,kr,Er,Sr,Mr,Or,Nr,Dr,Pr,Ar,Lr,Ir,jr,Rr,Fr,Ur,Hr=t.momentProperties=[],Yr=!1,Wr={},Br={},Vr=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,qr=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,zr={},$r={},Gr=/\d/,Kr=/\d\d/,Xr=/\d{3}/,Qr=/\d{4}/,Jr=/[+-]?\d{6}/,Zr=/\d\d?/,eo=/\d{1,3}/,to=/\d{1,4}/,no=/[+-]?\d{1,6}/,ro=/\d+/,oo=/[+-]?\d+/,io=/Z|[+-]\d\d:?\d\d/gi,ao=/[+-]?\d+(\.\d{1,3})?/,so=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,uo={},co={},lo=0,fo=1,po=2,ho=3,mo=4,go=5,yo=6;for(I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),I("MMMM",0,0,function(e){return this.localeData().months(this,e)}),S("month","M"),Y("M",Zr),Y("MM",Zr,Kr),Y("MMM",so),Y("MMMM",so),V(["M","MM"],function(e,t){t[fo]=v(e)-1}),V(["MMM","MMMM"],function(e,t,n,r){var o=n._locale.monthsParse(e,r,n._strict);null!=o?t[fo]=o:f(n).invalidMonth=e}),Fn="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Un="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Hn={},t.suppressDeprecationWarnings=!1,Yn=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Wn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],Bn=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],Vn=/^\/?Date\((\-?\d+)/i,t.createFromInputFallback=ne("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"), +I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),S("year","y"),Y("Y",oo),Y("YY",Zr,Kr),Y("YYYY",to,Qr),Y("YYYYY",no,Jr),Y("YYYYYY",no,Jr),V(["YYYYY","YYYYYY"],lo),V("YYYY",function(e,n){n[lo]=2===e.length?t.parseTwoDigitYear(e):v(e)}),V("YY",function(e,n){n[lo]=t.parseTwoDigitYear(e)}),t.parseTwoDigitYear=function(e){return v(e)+(v(e)>68?1900:2e3)},qn=N("FullYear",!1),I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),S("week","w"),S("isoWeek","W"),Y("w",Zr),Y("ww",Zr,Kr),Y("W",Zr),Y("WW",Zr,Kr),q(["w","ww","W","WW"],function(e,t,n,r){t[r.substr(0,1)]=v(e)}),zn={dow:0,doy:6},I("DDD",["DDDD",3],"DDDo","dayOfYear"),S("dayOfYear","DDD"),Y("DDD",eo),Y("DDDD",Xr),V(["DDD","DDDD"],function(e,t,n){n._dayOfYear=v(e)}),t.ISO_8601=function(){},$n=ne("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var e=De.apply(null,arguments);return ethis?this:e}),Re("Z",":"),Re("ZZ",""),Y("Z",io),Y("ZZ",io),V(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=Fe(e)}),Kn=/([\+\-]|\d\d)/gi,t.updateOffset=function(){},Xn=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,Qn=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,Je.fn=Ie.prototype,Jn=nt(1,"add"),Zn=nt(-1,"subtract"),t.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",er=ne("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)}),I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Dt("gggg","weekYear"),Dt("ggggg","weekYear"),Dt("GGGG","isoWeekYear"),Dt("GGGGG","isoWeekYear"),S("weekYear","gg"),S("isoWeekYear","GG"),Y("G",oo),Y("g",oo),Y("GG",Zr,Kr),Y("gg",Zr,Kr),Y("GGGG",to,Qr),Y("gggg",to,Qr),Y("GGGGG",no,Jr),Y("ggggg",no,Jr),q(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,r){t[r.substr(0,2)]=v(e)}),q(["gg","GG"],function(e,n,r,o){n[o]=t.parseTwoDigitYear(e)}),I("Q",0,0,"quarter"),S("quarter","Q"),Y("Q",Gr),V("Q",function(e,t){t[fo]=3*(v(e)-1)}),I("D",["DD",2],"Do","date"),S("date","D"),Y("D",Zr),Y("DD",Zr,Kr),Y("Do",function(e,t){return e?t._ordinalParse:t._ordinalParseLenient}),V(["D","DD"],po),V("Do",function(e,t){t[po]=v(e.match(Zr)[0],10)}),tr=N("Date",!0),I("d",0,"do","day"),I("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),I("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),I("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),S("day","d"),S("weekday","e"),S("isoWeekday","E"),Y("d",Zr),Y("e",Zr),Y("E",Zr),Y("dd",so),Y("ddd",so),Y("dddd",so),q(["dd","ddd","dddd"],function(e,t,n){var r=n._locale.weekdaysParse(e);null!=r?t.d=r:f(n).invalidWeekday=e}), +q(["d","e","E"],function(e,t,n,r){t[r]=v(e)}),nr="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),rr="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),or="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),I("H",["HH",2],0,"hour"),I("h",["hh",2],0,function(){return this.hours()%12||12}),zt("a",!0),zt("A",!1),S("hour","h"),Y("a",$t),Y("A",$t),Y("H",Zr),Y("h",Zr),Y("HH",Zr,Kr),Y("hh",Zr,Kr),V(["H","HH"],ho),V(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),V(["h","hh"],function(e,t,n){t[ho]=v(e),f(n).bigHour=!0}),ir=/[ap]\.?m?\.?/i,ar=N("Hours",!0),I("m",["mm",2],0,"minute"),S("minute","m"),Y("m",Zr),Y("mm",Zr,Kr),V(["m","mm"],mo),sr=N("Minutes",!1),I("s",["ss",2],0,"second"),S("second","s"),Y("s",Zr),Y("ss",Zr,Kr),V(["s","ss"],go),ur=N("Seconds",!1),I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),I(0,["SSS",3],0,"millisecond"),I(0,["SSSS",4],0,function(){return 10*this.millisecond()}),I(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),I(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),I(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),I(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),I(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),S("millisecond","ms"),Y("S",eo,Gr),Y("SS",eo,Kr),Y("SSS",eo,Xr),cr="SSSS";cr.length<=9;cr+="S")Y(cr,ro);for(cr="S";cr.length<=9;cr+="S")V(cr,Xt);return lr=N("Milliseconds",!1),I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName"),fr=m.prototype,fr.add=Jn,fr.calendar=ot,fr.clone=it,fr.diff=lt,fr.endOf=xt,fr.format=ht,fr.from=mt,fr.fromNow=gt,fr.to=yt,fr.toNow=vt,fr.get=A,fr.invalidAt=Nt,fr.isAfter=at,fr.isBefore=st,fr.isBetween=ut,fr.isSame=ct,fr.isValid=Mt,fr.lang=er,fr.locale=bt,fr.localeData=_t,fr.max=Gn,fr.min=$n,fr.parsingFlags=Ot,fr.set=A,fr.startOf=wt,fr.subtract=Zn,fr.toArray=Et,fr.toObject=St,fr.toDate=kt,fr.toISOString=dt,fr.toJSON=dt,fr.toString=pt,fr.unix=Tt,fr.valueOf=Ct,fr.year=qn,fr.isLeapYear=le,fr.weekYear=At,fr.isoWeekYear=Lt,fr.quarter=fr.quarters=Rt,fr.month=J,fr.daysInMonth=Z,fr.week=fr.weeks=me,fr.isoWeek=fr.isoWeeks=ge,fr.weeksInYear=jt,fr.isoWeeksInYear=It,fr.date=tr,fr.day=fr.days=Bt,fr.weekday=Vt,fr.isoWeekday=qt,fr.dayOfYear=ve,fr.hour=fr.hours=ar,fr.minute=fr.minutes=sr,fr.second=fr.seconds=ur,fr.millisecond=fr.milliseconds=lr,fr.utcOffset=Ye,fr.utc=Be,fr.local=Ve,fr.parseZone=qe,fr.hasAlignedHourOffset=ze,fr.isDST=$e,fr.isDSTShifted=Ge,fr.isLocal=Ke,fr.isUtcOffset=Xe,fr.isUtc=Qe,fr.isUTC=Qe,fr.zoneAbbr=Qt,fr.zoneName=Jt,fr.dates=ne("dates accessor is deprecated. Use date instead.",tr),fr.months=ne("months accessor is deprecated. Use month instead",J),fr.years=ne("years accessor is deprecated. Use year instead",qn),fr.zone=ne("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",We),pr=fr,dr={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},hr={LTS:"h:mm:ss A",LT:"h:mm A", +L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},mr="Invalid date",gr="%d",yr=/\d{1,2}/,vr={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},br=_.prototype,br._calendar=dr,br.calendar=tn,br._longDateFormat=hr,br.longDateFormat=nn,br._invalidDate=mr,br.invalidDate=rn,br._ordinal=gr,br.ordinal=on,br._ordinalParse=yr,br.preparse=an,br.postformat=an,br._relativeTime=vr,br.relativeTime=sn,br.pastFuture=un,br.set=cn,br.months=G,br._months=Fn,br.monthsShort=K,br._monthsShort=Un,br.monthsParse=X,br.week=pe,br._week=zn,br.firstDayOfYear=he,br.firstDayOfWeek=de,br.weekdays=Ut,br._weekdays=nr,br.weekdaysMin=Yt,br._weekdaysMin=or,br.weekdaysShort=Ht,br._weekdaysShort=rr,br.weekdaysParse=Wt,br.isPM=Gt,br._meridiemParse=ir,br.meridiem=Kt,T("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===v(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),t.lang=ne("moment.lang is deprecated. Use moment.locale instead.",T),t.langData=ne("moment.langData is deprecated. Use moment.localeData instead.",E),_r=Math.abs,wr=Sn("ms"),xr=Sn("s"),Cr=Sn("m"),Tr=Sn("h"),kr=Sn("d"),Er=Sn("w"),Sr=Sn("M"),Mr=Sn("y"),Or=On("milliseconds"),Nr=On("seconds"),Dr=On("minutes"),Pr=On("hours"),Ar=On("days"),Lr=On("months"),Ir=On("years"),jr=Math.round,Rr={s:45,m:45,h:22,d:26,M:11},Fr=Math.abs,Ur=Ie.prototype,Ur.abs=yn,Ur.add=bn,Ur.subtract=_n,Ur.as=kn,Ur.asMilliseconds=wr,Ur.asSeconds=xr,Ur.asMinutes=Cr,Ur.asHours=Tr,Ur.asDays=kr,Ur.asWeeks=Er,Ur.asMonths=Sr,Ur.asYears=Mr,Ur.valueOf=En,Ur._bubble=xn,Ur.get=Mn,Ur.milliseconds=Or,Ur.seconds=Nr,Ur.minutes=Dr,Ur.hours=Pr,Ur.days=Ar,Ur.weeks=Nn,Ur.months=Lr,Ur.years=Ir,Ur.humanize=Ln,Ur.toISOString=In,Ur.toString=In,Ur.toJSON=In,Ur.locale=bt,Ur.localeData=_t,Ur.toIsoString=ne("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",In),Ur.lang=er,I("X",0,0,"unix"),I("x",0,0,"valueOf"),Y("x",oo),Y("X",ao),V("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),V("x",function(e,t,n){n._d=new Date(v(e))}),t.version="2.10.6",r(De),t.fn=pr,t.min=Ae,t.max=Le,t.utc=c,t.unix=Zt,t.months=pn,t.isDate=i,t.locale=T,t.invalid=d,t.duration=Je,t.isMoment=g,t.weekdays=hn,t.parseZone=en,t.localeData=E,t.isDuration=je,t.monthsShort=dn,t.weekdaysMin=gn,t.defineLocale=k,t.weekdaysShort=mn,t.normalizeUnits=M,t.relativeTimeThreshold=An,t})}).call(t,n(78)(e))},,,function(e,t,n){var r=n(252)("wks"),o=n(152),i=n(35).Symbol,a="function"==typeof i;(e.exports=function(e){return r[e]||(r[e]=a&&i[e]||(a?i:o)("Symbol."+e))}).store=r},,,,,,,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var o=n(1075),i=r(o),a=n(460),s=r(a);e.exports={TransitionGroup:s.default,CSSTransitionGroup:i.default}},,,,function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},,,function(e,t,n){"use strict";function r(e,t,n){return $.isNaN(t)?e:tn?n:Math.round(t)} +function o(e,t,n){return $.isNaN(t)?e:tn?n:Math.round(1e4*t)/1e4}function i(e){return r(0,e,255)}function a(e){return r(0,e,255)}function s(e){return r(0,e,255)}function u(e){return o(0,e,1)}function c(e,t,n){return[i(e),a(t),s(n)]}function l(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function f(e,t,n,r){var o,c,l;return Array.isArray(e)?(o=e,r=t,[o[0],o[1],o[2],u(r)]):(c=e,l=t,n=n||0,r=r||0,[i(c),a(l),s(n),u(r)])}function p(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]}function d(e){return o(0,e,1)}function h(e){return o(0,e,1)}function m(e){return o(0,e,1)}function g(e){return o(0,e,1)}function y(e){return o(0,e,1)}function v(e,t,n){return[d(e),h(t),g(n)]}function b(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function _(e,t,n){return[d(e),m(t),y(n)]}function w(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function x(e){var t,n=e[0],r=e[1],o=e[2],i=n/255,a=r/255,s=o/255,u=Math.min(i,a,s),c=Math.max(i,a,s),l=0,f=0,p=(u+c)/2;if(u===c)l=0,f=0;else switch(t=c-u,f=p>.5?t/(2-c-u):t/(c+u),c){case i:l=((a-s)/t+(a1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function T(e){var t,n,r,o,u,c=e[0],l=e[1],f=e[2];return 0===l?t=n=r=f:(o=f<.5?f*(1+l):f+l-f*l,u=2*f-o,t=C(u,o,c+1/3),n=C(u,o,c),r=C(u,o,c-1/3)),[i(255*t),a(255*n),s(255*r)]}function k(e){var t=e[0],n=e[1],r=e[2],o=t/255,i=n/255,a=r/255,s=Math.min(o,i,a),u=Math.max(o,i,a),c=u-s,l=0,f=0===u?0:c/u,p=u;if(u===s)l=0;else switch(u){case t:l=((i-a)/c+(i255)throw Error("invalid threshold value, valid values are [0, 255]");return S(e)>=t?"white":"black"}function B(e){var t,n,r,o,i;if(e=e.toLowerCase(),L(K,e)){if(null!==(t=R(K[e])))return t;throw Error("Invalid named color definition")}return null!==(n=I(e))?n:null!==(r=R(e))?r:null!==(o=U(e))?o:(i=H(e),null!==i?i:null)}function V(e){var t=B(e);if(null!==t)return t;throw Error("Passed color string does not match any of the known color representations")}function q(e){var t,n,r,o,i,a,s,u;if(e=e.toLowerCase(),L(K,e)){if(null!==(t=R(K[e])))return n=t[0],r=t[1],o=t[2],[n,r,o,1];throw Error("Invalid named color definition")}return null!==(i=I(e))?(n=i[0],r=i[1],o=i[2],[n,r,o,1]):null!==(a=R(e))?(n=a[0],r=a[1],o=a[2],[n,r,o,1]):null!==(s=U(e))?(n=s[0],r=s[1],o=s[2],[n,r,o,1]):(u=H(e),null!==u?u:null)}function z(e){var t=q(e);if(null!==t)return t;throw Error("Passed color string does not match any of the known color representations")}var $,G,K,X,Q,J,Z;Object.defineProperty(t,"__esModule",{value:!0}),$=n(333),t.normalizeRedComponent=i,t.normalizeGreenComponent=a,t.normalizeBlueComponent=s,t.normalizeAlphaComponent=u,t.rgb=c,t.areEqualRgb=l,t.rgba=f,t.areEqualRgba=p,t.normalizeHue=d,t.normalizeHslSaturation=h,t.normalizeHsvSaturation=m,t.normalizeLightness=g,t.normalizeValue=y,t.hsl=v,t.areEqualHsl=b,t.hsv=_,t.areEqualHsv=w,t.rgbToHsl=x,t.hslToRgb=T,t.rgbToHsv=k,t.hsvToRgb=E,G=[.199,.687,.114],t.rgbToGrayscale=S,t.distanceRgb=M,t.invertRgb=O,t.darkenRgb=N,t.blendRgba=D,t.shiftRgb=P,t.shiftColor=A,K={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",feldspar:"#d19275",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1", +lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslateblue:"#8470ff",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",violetred:"#d02090",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},function(e){function t(e){return[i(parseInt(e[1],10)),a(parseInt(e[2],10)),s(parseInt(e[3],10))]}e.re=/^rgb\(\s*(-?\d{1,10})\s*,\s*(-?\d{1,10})\s*,\s*(-?\d{1,10})\s*\)$/,e.parse=t}(X||(X={})),t.rgbToString=j,function(e){function t(e){return[i(parseInt(e[1],16)),a(parseInt(e[2],16)),s(parseInt(e[3],16))]}e.re=/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,e.parse=t}(Q||(Q={})),t.rgbToHexString=F,function(e){function t(e){return[i(parseInt(e[1]+e[1],16)),a(parseInt(e[2]+e[2],16)),s(parseInt(e[3]+e[3],16))]}e.re=/^#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])$/,e.parse=t}(J||(J={})),function(e){function t(e){return[i(parseInt(e[1],10)),a(parseInt(e[2],10)),s(parseInt(e[3],10)),u(parseFloat(e[4]))]}e.re=/^rgba\(\s*(-?\d{1,10})\s*,\s*(-?\d{1,10})\s*,\s*(-?\d{1,10})\s*,\s*(-?[\d]{0,10}(?:\.\d+)?)\s*\)$/,e.parse=t}(Z||(Z={})),t.rgbaToString=Y,t.rgbToBlackWhiteString=W,t.tryParseRgb=B,t.parseRgb=V,t.tryParseRgba=q,t.parseRgba=z},function(e,t,n){(function(t){e.exports=t.Mustache=n(725)}).call(t,function(){return this}())},function(e,t,n){"use strict";e.exports=n(1024)},,,function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var r=n(29),o=n(342),i=n(151),a=Object.defineProperty;t.f=n(79)?Object.defineProperty:function(e,t,n){if(r(e),t=i(t,!0),r(n),o)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t){"use strict";var n=!("undefined"==typeof window||!window.document||!window.document.createElement),r={canUseDOM:n,canUseWorkers:"undefined"!=typeof Worker, +canUseEventListeners:n&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:n&&!!window.screen,isInWorker:!n};e.exports=r},,,,,,function(e,t){"use strict";function n(e){return function(){return e}}var r=function(){};r.thatReturns=n,r.thatReturnsFalse=n(!1),r.thatReturnsTrue=n(!0),r.thatReturnsNull=n(null),r.thatReturnsThis=function(){return this},r.thatReturnsArgument=function(e){return e},e.exports=r},,,,,,function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},,,function(e,t,n){"use strict";var r=null;e.exports={debugTool:r}},,,function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children=[],e.webpackPolyfill=1),e}},function(e,t,n){e.exports=!n(58)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},,,,,,,function(e,t,n){e.exports=n(1008)()},function(e,t,n){"use strict";function r(){p.ReactReconcileTransaction&&T||d("123")}function o(){this.reinitializeTransaction(),this.dirtyComponentsLength=null,this.callbackQueue=m.getPooled(),this.reconcileTransaction=p.ReactReconcileTransaction.getPooled(!0)}function i(e,t,n,o,i,a){return r(),T.batchedUpdates(e,t,n,o,i,a)}function a(e,t){return e._mountOrder-t._mountOrder}function s(e){var t,n,r,o,i,s,u=e.dirtyComponentsLength;for(u!==_.length&&d("124",u,_.length),_.sort(a),w++,t=0;t0?o(r(e),9007199254740991):0}},function(e,t){"use strict";var n=window.Modernizr=function(e,t,n){function r(e){v.cssText=e}function o(e,t){return typeof e===t}function i(e,t){return!!~(""+e).indexOf(t)}function a(e,t){var r,o;for(r in e)if(o=e[r],!i(o,"-")&&v[o]!==n)return"pfx"!=t||o;return!1}function s(e,t,r){var i,a;for(i in e)if((a=t[e[i]])!==n)return!1===r?e[i]:o(a,"function")?a.bind(r||t):a;return!1}function u(e,t,n){var r=e.charAt(0).toUpperCase()+e.slice(1),i=(e+" "+w.join(r+" ")+r).split(" ");return o(t,"string")||o(t,"undefined")?a(i,t):(i=(e+" "+x.join(r+" ")+r).split(" "),s(i,t,n))}var c,l,f,p="2.8.3",d={},h=!0,m=t.documentElement,g="modernizr",y=t.createElement(g),v=y.style,b=" -webkit- -moz- -o- -ms- ".split(" "),_="Webkit Moz O ms",w=_.split(" "),x=_.toLowerCase().split(" "),C={},T=[],k=T.slice,E=function(e,n,r,o){var i,a,s,u,c=t.createElement("div"),l=t.body,f=l||t.createElement("body");if(parseInt(r,10))for(;r--;)s=t.createElement("div"),s.id=o?o[r]:g+(r+1),c.appendChild(s);return i='­",c.id=g,(l?c:f).innerHTML+=i,f.appendChild(c),l||(f.style.background="",f.style.overflow="hidden",u=m.style.overflow,m.style.overflow="hidden",m.appendChild(f)),a=n(c,e),l?c.parentNode.removeChild(c):(f.parentNode.removeChild(f),m.style.overflow=u),!!a},S=function(){function e(e,i){i=i||t.createElement(r[e]||"div"),e="on"+e;var a=e in i;return a||(i.setAttribute||(i=t.createElement("div")),i.setAttribute&&i.removeAttribute&&(i.setAttribute(e,""),a=o(i[e],"function"),o(i[e],"undefined")||(i[e]=n),i.removeAttribute(e))),i=null,a}var r={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return e}(),M={}.hasOwnProperty;l=o(M,"undefined")||o(M.call,"undefined")?function(e,t){return t in e&&o(e.constructor.prototype[t],"undefined")}:function(e,t){return M.call(e,t)},Function.prototype.bind||(Function.prototype.bind=function(e){var t,n,r=this;if("function"!=typeof r)throw new TypeError;return t=k.call(arguments,1),n=function(){var o,i,a;return this instanceof n?(o=function(){},o.prototype=r.prototype,i=new o,a=r.apply(i,t.concat(k.call(arguments))),Object(a)===a?a:i):r.apply(e,t.concat(k.call(arguments)))}}),C.flexbox=function(){return u("flexWrap")},C.canvas=function(){var e=t.createElement("canvas");return!!e.getContext&&!!e.getContext("2d")},C.canvastext=function(){return!!d.canvas&&!!o(t.createElement("canvas").getContext("2d").fillText,"function")},C.touch=function(){var n;return"ontouchstart"in e||e.DocumentTouch&&t instanceof DocumentTouch?n=!0:E("@media ("+b.join("touch-enabled),(")+g+"){#modernizr{top:9px;position:absolute}}",function(e){n=9===e.offsetTop}),n}, +C.history=function(){return!!e.history&&!!history.pushState},C.draganddrop=function(){var e=t.createElement("div");return"draggable"in e||"ondragstart"in e&&"ondrop"in e},C.websockets=function(){return"WebSocket"in e||"MozWebSocket"in e},C.multiplebgs=function(){return r("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(v.background)},C.csscolumns=function(){return u("columnCount")},C.csstransitions=function(){return u("transition")},C.localstorage=function(){try{return localStorage.setItem(g,g),localStorage.removeItem(g),!0}catch(e){return!1}};for(f in C)l(C,f)&&(c=f.toLowerCase(),d[c]=C[f](),T.push((d[c]?"":"no-")+c));return d.addTest=function(e,t){if("object"==typeof e)for(var r in e)l(e,r)&&d.addTest(r,e[r]);else{if(e=e.toLowerCase(),d[e]!==n)return d;t="function"==typeof t?t():t,void 0!==h&&h&&(m.className+=" feature-"+(t?"":"no-")+e),d[e]=t}return d},r(""),y=null,d._version=p,d._prefixes=b,d._domPrefixes=x,d._cssomPrefixes=w,d.hasEvent=S,d.testProp=function(e){return a([e])},d.testAllProps=u,d.testStyles=E,m.className=m.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(h?" feature-js feature-"+T.join(" feature-"):""),d}(window,document);!n.touch||"onorientationchange"in window||(n.touch=!1,document.documentElement.className=document.documentElement.className.replace("feature-touch","feature-no-touch")),n.addTest("pointerevents",function(){var e,t=document.createElement("x"),n=document.documentElement,r=window.getComputedStyle,o=!1;return"pointerEvents"in t.style&&(t.style.pointerEvents="auto",t.style.pointerEvents="x",n.appendChild(t),r&&(e=r(t,""),o=!!e&&"auto"===e.pointerEvents),n.removeChild(t),!!o)}),n.addTest("flexbox",n.testAllProps("flexBasis","1px",!0))},function(e,t,n){"use strict";function r(e,t,n,r){var o,i,s,u;this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n,o=this.constructor.Interface;for(i in o)o.hasOwnProperty(i)&&(s=o[i],s?this[i]=s(n):"target"===i?this.target=r:this[i]=n[i]);return u=null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue,this.isDefaultPrevented=u?a.thatReturnsTrue:a.thatReturnsFalse,this.isPropagationStopped=a.thatReturnsFalse,this}var o=n(30),i=n(120),a=n(66),s=(n(24),["dispatchConfig","_targetInst","nativeEvent","isDefaultPrevented","isPropagationStopped","_dispatchListeners","_dispatchInstances"]),u={type:null,target:null,currentTarget:a.thatReturnsNull,eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};o(r.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=a.thatReturnsTrue)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=a.thatReturnsTrue)},persist:function(){this.isPersistent=a.thatReturnsTrue},isPersistent:a.thatReturnsFalse,destructor:function(){ +var e,t,n=this.constructor.Interface;for(e in n)this[e]=null;for(t=0;t1){for(f=Array(u),p=0;p1){for(d=Array(p),h=0;h-1&&n.observers[e].splice(r,1)}else delete n.observers[e]})},e.prototype.emit=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r-1?e.replace(/###/g,"."):e}for(var o,i="string"!=typeof t?[].concat(t):t.split(".");i.length>1;){if(!e)return{};o=r(i.shift()),!e[o]&&n&&(e[o]=new n),e=e[o]}return e?{obj:e,k:r(i.shift())}:{}}function i(e,t,n){var r=o(e,t,Object);r.obj[r.k]=n}function a(e,t,n,r){var i=o(e,t,Object),a=i.obj,s=i.k;a[s]=a[s]||[],r&&(a[s]=a[s].concat(n)),r||a[s].push(n)}function s(e,t){var n=o(e,t),r=n.obj,i=n.k;if(r)return r[i]}function u(e,t,n){for(var r in t)r in e?"string"==typeof e[r]||e[r]instanceof String||"string"==typeof t[r]||t[r]instanceof String?n&&(e[r]=t[r]):u(e[r],t[r],n):e[r]=t[r];return e}function c(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}function l(e){return"string"==typeof e?e.replace(/[&<>"'\/]/g,function(e){return f[e]}):e}Object.defineProperty(t,"__esModule",{value:!0}),t.makeString=n,t.copy=r,t.setPath=i,t.pushPath=a,t.getPath=s,t.deepExtend=u,t.regexEscape=c,t.escape=l;var f={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"}},,,,,function(e,t,n){"use strict";function r(e){return"button"===e||"input"===e||"select"===e||"textarea"===e}function o(e,t,n){switch(e){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":return!(!n.disabled||!r(t));default:return!1}}var i=n(25),a=n(291),s=n(292),u=n(296),c=n(451),l=n(452),f=(n(17),{}),p=null,d=function(e,t){e&&(s.executeDispatchesInOrder(e,t),e.isPersistent()||e.constructor.release(e))},h=function(e){return d(e,!0)},m=function(e){return d(e,!1)},g=function(e){return"."+e._rootNodeID},y={injection:{injectEventPluginOrder:a.injectEventPluginOrder,injectEventPluginsByName:a.injectEventPluginsByName},putListener:function(e,t,n){var r,o,s;"function"!=typeof n&&i("94",t,typeof n),r=g(e),o=f[t]||(f[t]={}),o[r]=n,(s=a.registrationNameModules[t])&&s.didPutListener&&s.didPutListener(e,t,n)},getListener:function(e,t){var n,r=f[t];return o(t,e._currentElement.type,e._currentElement.props)?null:(n=g(e),r&&r[n])},deleteListener:function(e,t){var n,r,o=a.registrationNameModules[t];o&&o.willDeleteListener&&o.willDeleteListener(e,t),(n=f[t])&&(r=g(e),delete n[r])},deleteAllListeners:function(e){var t,n,r=g(e);for(t in f)f.hasOwnProperty(t)&&f[t][r]&&(n=a.registrationNameModules[t],n&&n.willDeleteListener&&n.willDeleteListener(e,t),delete f[t][r])},extractEvents:function(e,t,n,r){var o,i,s,u,l=a.plugins;for(i=0;i=0&&i0?0:s-1;return arguments.length<3&&(o=n[a?a[c]:c],c+=e),t(n,r,o,a,c,s)}}function i(e){return function(t,n,r){var o,i;for(n=c(n,r),o=h(t),i=e>0?0:o-1;i>=0&&i0?a=i>=0?i:Math.max(i+s,a):s=i>=0?Math.min(i+1,s):i+s+1;else if(n&&i&&s)return i=n(r,o),r[i]===o?i:-1;if(o!==o)return i=t(R.call(r,a,s),q.isNaN),i>=0?i+a:-1;for(i=e>0?a:s-1;i>=0&&i=0&&t<=d},q.each=q.forEach=function(e,t,n){var r,o,i;if(t=u(t,n),m(e))for(r=0,o=e.length;r=0},q.invoke=function(e,t){var n=R.call(arguments,2),r=q.isFunction(t);return q.map(e,function(e){var o=r?t:e[t];return null==o?o:o.apply(e,n)})},q.pluck=function(e,t){return q.map(e,q.property(t))},q.where=function(e,t){return q.filter(e,q.matcher(t))},q.findWhere=function(e,t){return q.find(e,q.matcher(t))},q.max=function(e,t,n){var r,o,i,a,s=-1/0,u=-1/0;if(null==t&&null!=e)for(e=m(e)?e:q.values(e),i=0,a=e.length;is&&(s=r);else t=c(t,n),q.each(e,function(e,n,r){((o=t(e,n,r))>u||o===-1/0&&s===-1/0)&&(s=e,u=o)});return s},q.min=function(e,t,n){var r,o,i,a,s=1/0,u=1/0;if(null==t&&null!=e)for(e=m(e)?e:q.values(e), +i=0,a=e.length;ir||void 0===n)return 1;if(nt?(s&&(clearTimeout(s),s=null),u=l,i=e.apply(r,o),s||(r=o=null)):s||!1===n.trailing||(s=setTimeout(a,c)),i}},q.debounce=function(e,t,n){var r,o,i,a,s,u=function(){var c=q.now()-a;c=0?r=setTimeout(u,t-c):(r=null,n||(s=e.apply(i,o),r||(i=o=null)))};return function(){i=this,o=arguments,a=q.now();var c=n&&!r;return r||(r=setTimeout(u,t)),c&&(s=e.apply(i,o),i=o=null),s}},q.wrap=function(e,t){return q.partial(t,e)},q.negate=function(e){return function(){return!e.apply(this,arguments)}},q.compose=function(){var e=arguments,t=e.length-1;return function(){for(var n=t,r=e[t].apply(this,arguments);n--;)r=e[n].call(this,r);return r}},q.after=function(e,t){return function(){if(--e<1)return t.apply(this,arguments)}},q.before=function(e,t){var n;return function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=null),n}},q.once=q.partial(q.before,2),b=!{toString:null}.propertyIsEnumerable("toString"),_=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],q.keys=function(e){var t,n;if(!q.isObject(e))return[];if(Y)return Y(e);t=[];for(n in e)q.has(e,n)&&t.push(n);return b&&s(e,t),t},q.allKeys=function(e){var t,n;if(!q.isObject(e))return[];t=[];for(n in e)t.push(n);return b&&s(e,t),t},q.values=function(e){var t,n=q.keys(e),r=n.length,o=Array(r);for(t=0;t":">",'"':""","'":"'","`":"`"},C=q.invert(x),T=function(e){var t=function(t){return e[t]},n="(?:"+q.keys(e).join("|")+")",r=RegExp(n),o=RegExp(n,"g");return function(e){return e=null==e?"":""+e,r.test(e)?e.replace(o,t):e}},q.escape=T(x),q.unescape=T(C),q.result=function(e,t,n){var r=null==e?void 0:e[t];return void 0===r&&(r=n),q.isFunction(r)?r.call(e):r},k=0,q.uniqueId=function(e){var t=++k+"";return e?e+t:t},q.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},E=/(.)^/,S={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},M=/\\|'|\r|\n|\u2028|\u2029/g,O=function(e){return"\\"+S[e]},q.template=function(e,t,n){var r,o,i,a,s,u;!t&&n&&(t=n),t=q.defaults({},t,q.templateSettings),r=RegExp([(t.escape||E).source,(t.interpolate||E).source,(t.evaluate||E).source].join("|")+"|$","g"),o=0,i="__p+='",e.replace(r,function(t,n,r,a,s){return i+=e.slice(o,s).replace(M,O),o=s+t.length,n?i+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?i+="'+\n((__t=("+r+"))==null?'':__t)+\n'":a&&(i+="';\n"+a+"\n__p+='"),t}),i+="';\n",t.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{a=Function(t.variable||"obj","_",i)}catch(e){throw e.source=i,e}return s=function(e){return a.call(this,e,q)},u=t.variable||"obj",s.source="function("+u+"){\n"+i+"}",s},q.chain=function(e){var t=q(e);return t._chain=!0,t},N=function(e,t){return e._chain?q(t).chain():t},q.mixin=function(e){q.each(q.functions(e),function(t){var n=q[t]=e[t];q.prototype[t]=function(){var e=[this._wrapped];return j.apply(e,arguments),N(this,n.apply(q,e))}})},q.mixin(q),q.each(["pop","push","reverse","shift","sort","splice","unshift"],function(e){var t=A[e];q.prototype[e]=function(){var n=this._wrapped;return t.apply(n,arguments),"shift"!==e&&"splice"!==e||0!==n.length||delete n[0],N(this,n)}}),q.each(["concat","join","slice"],function(e){var t=A[e];q.prototype[e]=function(){return N(this,t.apply(this._wrapped,arguments))}}),q.prototype.value=function(){return this._wrapped},q.prototype.valueOf=q.prototype.toJSON=q.prototype.value,q.prototype.toString=function(){return""+this._wrapped},r=[],void 0!==(o=function(){return q}.apply(t,r))&&(e.exports=o)}).call(this)},,function(e,t){e.exports={}},function(e,t){e.exports=!1},function(e,t,n){ +var r=n(29),o=n(531),i=n(238),a=n(251)("IE_PROTO"),s=function(){},u="prototype",c=function(){var e,t=n(237)("iframe"),r=i.length,o="<",a=">";for(t.style.display="none",n(341).appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write(o+"script"+a+"document.F=Object"+o+"/script"+a),e.close(),c=e.F;r--;)delete c[u][i[r]];return c()};e.exports=Object.create||function(e,t){var n;return null!==e?(s[u]=r(e),n=new s,s[u]=null,n[a]=e):n=c(),void 0===t?n:o(n,t)}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){var r=n(199),o=Math.max,i=Math.min;e.exports=function(e,t){return e=r(e),e<0?o(e+t,0):i(e,t)}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},,,function(e,t,n){"use strict";var r={};e.exports=r},,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";function r(e){return Object.prototype.hasOwnProperty.call(e,m)||(e[m]=d++,f[e[m]]={}),f[e[m]]}var o,i=n(30),a=n(291),s=n(1039),u=n(450),c=n(1071),l=n(302),f={},p=!1,d=0,h={topAbort:"abort",topAnimationEnd:c("animationend")||"animationend",topAnimationIteration:c("animationiteration")||"animationiteration",topAnimationStart:c("animationstart")||"animationstart",topBlur:"blur",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topChange:"change",topClick:"click",topCompositionEnd:"compositionend",topCompositionStart:"compositionstart",topCompositionUpdate:"compositionupdate",topContextMenu:"contextmenu",topCopy:"copy",topCut:"cut",topDoubleClick:"dblclick",topDrag:"drag",topDragEnd:"dragend",topDragEnter:"dragenter",topDragExit:"dragexit",topDragLeave:"dragleave",topDragOver:"dragover",topDragStart:"dragstart",topDrop:"drop",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topFocus:"focus",topInput:"input",topKeyDown:"keydown",topKeyPress:"keypress",topKeyUp:"keyup",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topMouseDown:"mousedown",topMouseMove:"mousemove",topMouseOut:"mouseout",topMouseOver:"mouseover",topMouseUp:"mouseup",topPaste:"paste",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topScroll:"scroll",topSeeked:"seeked",topSeeking:"seeking",topSelectionChange:"selectionchange",topStalled:"stalled",topSuspend:"suspend",topTextInput:"textInput",topTimeUpdate:"timeupdate",topTouchCancel:"touchcancel",topTouchEnd:"touchend",topTouchMove:"touchmove",topTouchStart:"touchstart",topTransitionEnd:c("transitionend")||"transitionend",topVolumeChange:"volumechange",topWaiting:"waiting",topWheel:"wheel"},m="_reactListenersID"+(Math.random()+"").slice(2),g=i({},s,{ReactEventListener:null,injection:{injectReactEventListener:function(e){e.setHandleTopLevel(g.handleTopLevel),g.ReactEventListener=e}},setEnabled:function(e){g.ReactEventListener&&g.ReactEventListener.setEnabled(e)},isEnabled:function(){return!(!g.ReactEventListener||!g.ReactEventListener.isEnabled())},listenTo:function(e,t){ +var n,o,i=t,s=r(i),u=a.registrationNameDependencies[e];for(n=0;n]/;e.exports=r},function(e,t,n){"use strict";var r,o,i=n(60),a=n(290),s=/^[ \r\n\t\f]/,u=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,c=n(298),l=c(function(e,t){if(e.namespaceURI!==a.svg||"innerHTML"in e)e.innerHTML=t;else{r=r||document.createElement("div"),r.innerHTML=""+t+"";for(var n=r.firstChild;n.firstChild;)e.appendChild(n.firstChild)}});i.canUseDOM&&(o=document.createElement("div"),o.innerHTML=" ",""===o.innerHTML&&(l=function(e,t){if(e.parentNode&&e.parentNode.replaceChild(e,e),s.test(t)||"<"===t[0]&&u.test(t)){e.innerHTML=String.fromCharCode(65279)+t;var n=e.firstChild;1===n.data.length?e.removeChild(n):n.deleteData(0,1)}else e.innerHTML=t}),o=null),e.exports=l},,,,,,,,,,,function(e,t){e.exports=function(e,t,n,r){if(!(e instanceof t)||void 0!==r&&r in e)throw TypeError(n+": incorrect invocation!");return e}},function(e,t,n){var r=n(50),o=n(35).document,i=r(o)&&r(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){var r=n(39)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[r]=!1,!"/./"[e](t)}catch(e){}}return!0}},function(e,t,n){var r=n(99),o=n(347),i=n(344),a=n(29),s=n(89),u=n(357),c={},l={};t=e.exports=function(e,t,n,f,p){var d,h,m,g,y=p?function(){return e}:u(e),v=r(n,f,t?2:1),b=0;if("function"!=typeof y)throw TypeError(e+" is not iterable!");if(i(y)){for(d=s(e.length);d>b;b++)if((g=t?v(a(h=e[b])[0],h[1]):v(e[b]))===c||g===l)return g}else for(m=y.call(e);!(h=m.next()).done;)if((g=o(m,v,h.value,t))===c||g===l)return g},t.BREAK=c,t.RETURN=l},function(e,t,n){var r=n(111);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,t,n){"use strict";var r=n(195),o=n(6),i=n(129),a=n(113),s=n(72),u=n(194),c=n(348),l=n(150),f=n(148),p=n(39)("iterator"),d=!([].keys&&"next"in[].keys()),h="keys",m="values",g=function(){return this};e.exports=function(e,t,n,y,v,b,_){var w,x,C,T,k,E,S,M,O,N,D,P;if(c(n,t,y),w=function(e){if(!d&&e in k)return k[e];switch(e){case h:case m:return function(){return new n(this,e)}}return function(){return new n(this,e)}},x=t+" Iterator",C=v==m,T=!1,k=e.prototype,E=k[p]||k["@@iterator"]||v&&k[v],S=E||w(v),M=v?C?w("entries"):S:void 0,O="Array"==t?k.entries||E:E, +O&&(P=f(O.call(new e)))!==Object.prototype&&(l(P,x,!0),r||s(P,p)||a(P,p,g)),C&&E&&E.name!==m&&(T=!0,S=function(){return E.call(this)}),r&&!_||!d&&!T&&k[p]||a(k,p,S),u[t]=S,u[x]=g,v)if(N={values:C?S:w(m),keys:b?S:w(h),entries:M},_)for(D in N)D in k||i(k,D,N[D]);else o(o.P+o.F*(d||T),t,N);return N}},function(e,t,n){var r,o=n(39)("iterator"),i=!1;try{r=[7][o](),r.return=function(){i=!0},Array.from(r,function(){throw 2})}catch(e){}e.exports=function(e,t){var n,r,a;if(!t&&!i)return!1;n=!1;try{r=[7],a=r[o](),a.next=function(){return{done:n=!0}},r[o]=function(){return a},e(r)}catch(e){}return n}},function(e,t){var n=Math.expm1;e.exports=!n||n(10)>22025.465794806718||n(10)<22025.465794806718||-2e-17!=n(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:Math.exp(e)-1}:n},function(e,t){e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},function(e,t,n){var r=n(152)("meta"),o=n(50),i=n(72),a=n(59).f,s=0,u=Object.isExtensible||function(){return!0},c=!n(58)(function(){return u(Object.preventExtensions({}))}),l=function(e){a(e,r,{value:{i:"O"+ ++s,w:{}}})},f=function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,r)){if(!u(e))return"F";if(!t)return"E";l(e)}return e[r].i},p=function(e,t){if(!i(e,r)){if(!u(e))return!0;if(!t)return!1;l(e)}return e[r].w},d=function(e){return c&&h.NEED&&u(e)&&!i(e,r)&&l(e),e},h=e.exports={KEY:r,NEED:!1,fastKey:f,getWeak:p,onFreeze:d}},function(e,t,n){var r=n(351),o=n(238).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,o)}},function(e,t,n){var r=n(129);e.exports=function(e,t,n){for(var o in t)r(e,o,t[o],n);return e}},function(e,t,n){var r=n(50),o=n(29),i=function(e,t){if(o(e),!r(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,r){try{r=n(99)(Function.call,n(127).f(Object.prototype,"__proto__").set,2),r(e,[]),t=!(e instanceof Array)}catch(e){t=!0}return function(e,n){return i(e,n),t?e.__proto__=n:r(e,n),e}}({},!1):void 0),check:i}},function(e,t,n){"use strict";var r=n(35),o=n(59),i=n(79),a=n(39)("species");e.exports=function(e){var t=r[e];i&&t&&!t[a]&&o.f(t,a,{configurable:!0,get:function(){return this}})}},function(e,t,n){var r=n(252)("keys"),o=n(152);e.exports=function(e){return r[e]||(r[e]=o(e))}},function(e,t,n){var r=n(35),o="__core-js_shared__",i=r[o]||(r[o]={});e.exports=function(e){return i[e]||(i[e]={})}},function(e,t,n){var r=n(527),o=n(112);e.exports=function(e,t,n){if(r(t))throw TypeError("String#"+n+" doesn't accept regex!");return o(e)+""}},function(e,t){e.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},,,,,,function(e,t){"use strict";function n(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!==e&&t!==t}function r(e,t){var r,i,a;if(n(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;if(r=Object.keys(e),i=Object.keys(t),r.length!==i.length)return!1;for(a=0;a0&&void 0!==arguments[0]?arguments[0]:n.props.includeMargin;n.props.shouldMeasure&&(n._node.parentNode||n._setDOMNode(),e=n.getDimensions(n._node,r),t="function"==typeof n.props.children,n._propsToMeasure.some(function(r){if(e[r]!==n._lastDimensions[r])return n.props.onMeasure(e),t&&void 0!==n&&n.setState({dimensions:e}),n._lastDimensions=e,!0}))},n.state={dimensions:{width:0,height:0,top:0,right:0,bottom:0,left:0}},n._node=null,n._propsToMeasure=n._getPropsToMeasure(e),n._lastDimensions={},n}return a(t,e),s(t,[{key:"componentDidMount",value:function(){var e=this;this._setDOMNode(),this.measure(),this.resizeObserver=new h.default(function(){return e.measure()}),this.resizeObserver.observe(this._node)}},{key:"componentWillReceiveProps",value:function(e){var t=(e.config,e.whitelist),n=e.blacklist;this.props.whitelist===t&&this.props.blacklist===n||(this._propsToMeasure=this._getPropsToMeasure({whitelist:t,blacklist:n}))}},{key:"componentWillUnmount",value:function(){this.resizeObserver.disconnect(this._node),this._node=null}},{key:"_setDOMNode",value:function(){this._node=p.default.findDOMNode(this)}},{key:"getDimensions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._node,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.props.includeMargin;return(0,g.default)(e,{margin:t})}},{ +key:"_getPropsToMeasure",value:function(e){var t=e.whitelist,n=e.blacklist;return t.filter(function(e){return n.indexOf(e)<0})}},{key:"render",value:function(){var e=this.props.children;return u.Children.only("function"==typeof e?e(this.state.dimensions):e)}}]),t}(u.Component);y.propTypes={whitelist:l.default.array,blacklist:l.default.array,includeMargin:l.default.bool,useClone:l.default.bool,cloneOptions:l.default.object,shouldMeasure:l.default.bool,onMeasure:l.default.func},y.defaultProps={whitelist:["width","height","top","right","bottom","left"],blacklist:[],includeMargin:!0,useClone:!1,cloneOptions:{},shouldMeasure:!0,onMeasure:function(){return null}},t.default=y,e.exports=t.default},function(t,n){t.exports=e},function(e,t,n){(function(t){"use strict";var r,o,i,a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};"production"!==t.env.NODE_ENV?(r="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,o=function(e){return"object"===(void 0===e?"undefined":a(e))&&null!==e&&e.$$typeof===r},i=!0,e.exports=n(5)(o,i)):e.exports=n(12)()}).call(t,n(4))},function(e,t){"use strict";function n(){throw Error("setTimeout has not been defined")}function r(){throw Error("clearTimeout has not been defined")}function o(e){if(l===setTimeout)return setTimeout(e,0);if((l===n||!l)&&setTimeout)return l=setTimeout,setTimeout(e,0);try{return l(e,0)}catch(t){try{return l.call(null,e,0)}catch(t){return l.call(this,e,0)}}}function i(e){if(f===clearTimeout)return clearTimeout(e);if((f===r||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(e);try{return f(e)}catch(t){try{return f.call(null,e)}catch(t){return f.call(this,e)}}}function a(){h&&p&&(h=!1,p.length?d=p.concat(d):m=-1,d.length&&s())}function s(){var e,t;if(!h){for(e=o(a),h=!0,t=d.length;t;){for(p=d,d=[];++m1)for(t=1;t1?t-1:0),r=1;r2?n-2:0),i=2;i1&&void 0!==arguments[1]?arguments[1]:{},n=e.getBoundingClientRect(),r=void 0,o=void 0,i=void 0;return t.margin&&(i=(0,a.default)(getComputedStyle(e))),t.margin?(r=i.left+n.width+i.right,o=i.top+n.height+i.bottom):(r=n.width,o=n.height),{width:r,height:o,top:n.top,right:n.right,bottom:n.bottom,left:n.left}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o;var i=n(16),a=r(i);e.exports=t.default},function(e,t){"use strict";function n(e){return e=e||{},{top:r(e.marginTop),right:r(e.marginRight),bottom:r(e.marginBottom),left:r(e.marginLeft)}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n;var r=function(e){return parseInt(e)||0};e.exports=t.default}])})},function(e,t,n){"use strict";function r(e,t){return Array.isArray(t)&&(t=t[1]),t?t.nextSibling:e.firstChild}function o(e,t,n){f.insertTreeBefore(e,t,n)}function i(e,t,n){Array.isArray(t)?s(e,t[0],t[1],n):g(e,t,n)}function a(e,t){if(Array.isArray(t)){var n=t[1];t=t[0],u(e,t,n),e.removeChild(n)}e.removeChild(t)}function s(e,t,n,r){for(var o,i=t;;){if(o=i.nextSibling,g(e,i,r),i===n)break;i=o}}function u(e,t,n){for(;;){var r=t.nextSibling;if(r===n)break;e.removeChild(r)}}function c(e,t,n){var r=e.parentNode,o=e.nextSibling;o===t?n&&g(r,document.createTextNode(n),o):n?(m(o,n),u(r,o,t)):u(r,e,t)}var l,f=n(137),p=n(1016),d=(n(32),n(75),n(298)),h=n(225),m=n(458),g=d(function(e,t,n){e.insertBefore(t,n)}),y=p.dangerouslyReplaceNodeWithMarkup;l={dangerouslyReplaceNodeWithMarkup:y,replaceDelimitedText:c,processUpdates:function(e,t){var n,s;for(n=0;n-1||a("96",e),!c.plugins[n]){t.extractEvents||a("97",e),c.plugins[n]=t,r=t.eventTypes;for(i in r)o(r[i],t,i)||a("98",i,e)}}function o(e,t,n){var r,o,s;if(c.eventNameDispatchConfigs.hasOwnProperty(n)&&a("99",n),c.eventNameDispatchConfigs[n]=e,r=e.phasedRegistrationNames){for(o in r)r.hasOwnProperty(o)&&(s=r[o],i(s,t,n));return!0}return!!e.registrationName&&(i(e.registrationName,t,n),!0)}function i(e,t,n){c.registrationNameModules[e]&&a("100",e),c.registrationNameModules[e]=t,c.registrationNameDependencies[e]=t.eventTypes[n].dependencies}var a=n(25),s=(n(17),null),u={},c={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:null,injectEventPluginOrder:function(e){s&&a("101"),s=Array.prototype.slice.call(e),r()},injectEventPluginsByName:function(e){var t,n,o=!1;for(t in e)e.hasOwnProperty(t)&&(n=e[t],u.hasOwnProperty(t)&&u[t]===n||(u[t]&&a("102",t),u[t]=n,o=!0));o&&r()},getPluginModuleForEvent:function(e){var t,n,r,o=e.dispatchConfig;if(o.registrationName)return c.registrationNameModules[o.registrationName]||null;if(void 0!==o.phasedRegistrationNames){t=o.phasedRegistrationNames;for(n in t)if(t.hasOwnProperty(n)&&(r=c.registrationNameModules[t[n]]))return r}return null},_resetEventPlugins:function(){var e,t,n,r,o;s=null;for(e in u)u.hasOwnProperty(e)&&delete u[e];c.plugins.length=0,t=c.eventNameDispatchConfigs;for(n in t)t.hasOwnProperty(n)&&delete t[n];r=c.registrationNameModules;for(o in r)r.hasOwnProperty(o)&&delete r[o]}};e.exports=c},function(e,t,n){"use strict";function r(e){return"topMouseUp"===e||"topTouchEnd"===e||"topTouchCancel"===e}function o(e){return"topMouseMove"===e||"topTouchMove"===e}function i(e){return"topMouseDown"===e||"topTouchStart"===e}function a(e,t,n,r){var o=e.type||"unknown-event";e.currentTarget=h.getNodeFromInstance(r),t?g.invokeGuardedCallbackWithCatch(o,n,e):g.invokeGuardedCallback(o,n,e),e.currentTarget=null}function s(e,t){var n,r=e._dispatchListeners,o=e._dispatchInstances;if(Array.isArray(r))for(n=0;n0&&n.length<20?t+" (keys: "+n.join(", ")+")":t)}function i(e,t){var n=s.get(e);return n||null}var a=n(25),s=(n(92),n(167)),u=(n(75),n(87)),c=(n(17),n(24),{isMounted:function(e){var t;return!!(t=s.get(e))&&!!t._renderedComponent},enqueueCallback:function(e,t,n){c.validateCallback(t,n);var o=i(e);if(!o)return null;o._pendingCallbacks?o._pendingCallbacks.push(t):o._pendingCallbacks=[t],r(o)},enqueueCallbackInternal:function(e,t){e._pendingCallbacks?e._pendingCallbacks.push(t):e._pendingCallbacks=[t],r(e)},enqueueForceUpdate:function(e){var t=i(e,"forceUpdate");t&&(t._pendingForceUpdate=!0,r(t))},enqueueReplaceState:function(e,t,n){var o=i(e,"replaceState");o&&(o._pendingStateQueue=[t],o._pendingReplaceState=!0,void 0!==n&&null!==n&&(c.validateCallback(n,"replaceState"),o._pendingCallbacks?o._pendingCallbacks.push(n):o._pendingCallbacks=[n]),r(o))},enqueueSetState:function(e,t){var n,o;(n=i(e,"setState"))&&(o=n._pendingStateQueue||(n._pendingStateQueue=[]),o.push(t),r(n))},enqueueElementInternal:function(e,t,n){e._pendingElement=t,e._context=n,r(e)},validateCallback:function(e,t){e&&"function"!=typeof e&&a("122",t,o(e))}});e.exports=c},function(e,t){"use strict";var n=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,r,o){MSApp.execUnsafeLocalFunction(function(){return e(t,n,r,o)})}:e};e.exports=n},function(e,t){"use strict";function n(e){var t,n=e.keyCode;return"charCode"in e?0===(t=e.charCode)&&13===n&&(t=13):t=n,t>=32||13===t?t:0}e.exports=n},function(e,t){"use strict";function n(e){var t,n=this,r=n.nativeEvent;return r.getModifierState?r.getModifierState(e):!!(t=o[e])&&!!r[t]}function r(e){return n}var o={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};e.exports=r},function(e,t){"use strict";function n(e){var t=e.target||e.srcElement||window;return t.correspondingUseElement&&(t=t.correspondingUseElement),3===t.nodeType?t.parentNode:t}e.exports=n},function(e,t,n){"use strict";function r(e,t){var n,r,a;return!(!i.canUseDOM||t&&!("addEventListener"in document))&&(n="on"+e,r=n in document,r||(a=document.createElement("div"),a.setAttribute(n,"return;"),r="function"==typeof a[n]),!r&&o&&"wheel"===e&&(r=document.implementation.hasFeature("Events.wheel","3.0")),r)}var o,i=n(60);i.canUseDOM&&(o=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature("","")),e.exports=r},function(e,t){"use strict";function n(e,t){var n,r,o=null===e||!1===e,i=null===t||!1===t;return o||i?o===i:(n=typeof e,r=typeof t,"string"===n||"number"===n?"string"===r||"number"===r:"object"===r&&e.type===t.type&&e.key===t.key)}e.exports=n},function(e,t,n){"use strict";var r=(n(30),n(66)),o=(n(24),r);e.exports=o},,,,,,,,,,,,,,,,,function(e,t,n){"use strict";function r(){return new Promise(function(e){n.e(0,function(t){n(514),e()})})}Object.defineProperty(t,"__esModule",{value:!0}),n(22), +t.lazyVelocity=r,$.fn.velocity=function(){var e,t=this,n=[];for(e=0;e0)}function i(e){return Math.round(1e10*e)/1e10}function a(e,t){var n=e/t,r=Math.floor(n),o=n-r;return o>2e-10?i(o>.5?(r+1)*t:r*t):e}Object.defineProperty(t,"__esModule",{value:!0}),t.isNumber=n,t.isInteger=r,t.isNaN=o,t.fixComputationError=i,t.alignTo=a},,function(e,t,n){var r=n(88),o=n(89),i=n(198);e.exports=function(e){return function(t,n,a){var s,u=r(t),c=o(u.length),l=i(a,c);if(e&&n!=n){for(;c>l;)if((s=u[l++])!=s)return!0}else for(;c>l;l++)if((e||l in u)&&u[l]===n)return e||l||0;return!e&&-1}}},function(e,t,n){var r=n(99),o=n(241),i=n(130),a=n(89),s=n(521);e.exports=function(e,t){var n=1==e,u=2==e,c=3==e,l=4==e,f=6==e,p=5==e||f,d=t||s;return function(t,s,h){for(var m,g,y=i(t),v=o(y),b=r(s,h,3),_=a(v.length),w=0,x=n?d(t,_):u?d(t,0):void 0;_>w;w++)if((p||w in v)&&(m=v[w],g=b(m,w,y),e))if(n)x[w]=g;else if(g)switch(e){case 3:return!0;case 5:return m;case 6:return w;case 2:x.push(m)}else if(l)return!1;return f?-1:c||l?l:x}}},function(e,t,n){var r=n(111),o=n(39)("toStringTag"),i="Arguments"==r(function(){return arguments}()),a=function(e,t){try{return e[t]}catch(e){}};e.exports=function(e){var t,n,s;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=a(t=Object(e),o))?n:i?r(t):"Object"==(s=r(t))&&"function"==typeof t.callee?"Arguments":s}},function(e,t,n){"use strict";var r=n(59).f,o=n(196),i=n(248),a=n(99),s=n(236),u=n(112),c=n(240),l=n(242),f=n(349),p=n(250),d=n(79),h=n(246).fastKey,m=d?"_s":"size",g=function(e,t){var n,r=h(t);if("F"!==r)return e._i[r];for(n=e._f;n;n=n.n)if(n.k==t)return n};e.exports={getConstructor:function(e,t,n,l){var f=e(function(e,r){s(e,f,t,"_i"),e._i=o(null),e._f=void 0,e._l=void 0,e[m]=0,void 0!=r&&c(r,n,e[l],e)});return i(f.prototype,{clear:function(){for(var e=this,t=e._i,n=e._f;n;n=n.n)n.r=!0,n.p&&(n.p=n.p.n=void 0),delete t[n.i];e._f=e._l=void 0,e[m]=0},delete:function(e){var t,n,r=this,o=g(r,e);return o&&(t=o.n,n=o.p,delete r._i[o.i],o.r=!0,n&&(n.n=t),t&&(t.p=n),r._f==o&&(r._f=t),r._l==o&&(r._l=n),r[m]--),!!o},forEach:function(e){s(this,f,"forEach");for(var t,n=a(e,arguments.length>1?arguments[1]:void 0,3);t=t?t.n:this._f;)for(n(t.v,t.k,this);t&&t.r;)t=t.p},has:function(e){return!!g(this,e)}}),d&&r(f.prototype,"size",{get:function(){return u(this[m])}}),f},def:function(e,t,n){var r,o,i=g(e,t);return i?i.v=n:(e._l=i={i:o=h(t,!0),k:t,v:n,p:r=e._l,n:void 0,r:!1},e._f||(e._f=i),r&&(r.n=i),e[m]++,"F"!==o&&(e._i[o]=i)),e},getEntry:g,setStrong:function(e,t,n){l(e,t,function(e,t){this._t=e,this._k=t,this._l=void 0},function(){for(var e=this,t=e._k,n=e._l;n&&n.r;)n=n.p;return e._t&&(e._l=n=n?n.n:e._t._f)?"keys"==t?f(0,n.k):"values"==t?f(0,n.v):f(0,[n.k,n.v]):(e._t=void 0,f(1))},n?"entries":"values",!n,!0),p(t)}}},function(e,t,n){"use strict" +;var r=n(35),o=n(6),i=n(129),a=n(248),s=n(246),u=n(240),c=n(236),l=n(50),f=n(58),p=n(243),d=n(150),h=n(526);e.exports=function(e,t,n,m,g,y){var v,b,_,w,x,C=r[e],T=C,k=g?"set":"add",E=T&&T.prototype,S={},M=function(e){var t=E[e];i(E,e,"delete"==e?function(e){return!(y&&!l(e))&&t.call(this,0===e?0:e)}:"has"==e?function(e){return!(y&&!l(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return y&&!l(e)?void 0:t.call(this,0===e?0:e)}:"add"==e?function(e){return t.call(this,0===e?0:e),this}:function(e,n){return t.call(this,0===e?0:e,n),this})};return"function"==typeof T&&(y||E.forEach&&!f(function(){(new T).entries().next()}))?(v=new T,b=v[k](y?{}:-0,1)!=v,_=f(function(){v.has(1)}),w=p(function(e){new T(e)}),x=!y&&f(function(){for(var e=new T,t=5;t--;)e[k](t,t);return!e.has(-0)}),w||(T=t(function(t,n){c(t,T,e);var r=h(new C,t,T);return void 0!=n&&u(n,g,r[k],r),r}),T.prototype=E,E.constructor=T),(_||x)&&(M("delete"),M("has"),g&&M("get")),(x||b)&&M(k),y&&E.clear&&delete E.clear):(T=m.getConstructor(t,e,g,k),a(T.prototype,n),s.NEED=!0),d(T,e),S[e]=T,o(o.G+o.W+o.F*(T!=C),S),y||m.setStrong(T,e,g),T}},function(e,t,n){"use strict";var r=n(59),o=n(114);e.exports=function(e,t,n){t in e?r.f(e,t,o(0,n)):e[t]=n}},function(e,t,n){e.exports=n(35).document&&document.documentElement},function(e,t,n){e.exports=!n(79)&&!n(58)(function(){return 7!=Object.defineProperty(n(237)("div"),"a",{get:function(){return 7}}).a})},function(e,t){e.exports=function(e,t,n){var r=void 0===n;switch(t.length){case 0:return r?e():e.call(n);case 1:return r?e(t[0]):e.call(n,t[0]);case 2:return r?e(t[0],t[1]):e.call(n,t[0],t[1]);case 3:return r?e(t[0],t[1],t[2]):e.call(n,t[0],t[1],t[2]);case 4:return r?e(t[0],t[1],t[2],t[3]):e.call(n,t[0],t[1],t[2],t[3])}return e.apply(n,t)}},function(e,t,n){var r=n(194),o=n(39)("iterator"),i=Array.prototype;e.exports=function(e){return void 0!==e&&(r.Array===e||i[o]===e)}},function(e,t,n){var r=n(111);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,t,n){var r=n(50),o=Math.floor;e.exports=function(e){return!r(e)&&isFinite(e)&&o(e)===e}},function(e,t,n){var r=n(29);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){var i=e.return;throw void 0!==i&&r(i.call(e)),t}}},function(e,t,n){"use strict";var r=n(196),o=n(114),i=n(150),a={};n(113)(a,n(39)("iterator"),function(){return this}),e.exports=function(e,t,n){e.prototype=r(a,{next:o(1,n)}),i(e,t+" Iterator")}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t){e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:Math.log(1+e)}},function(e,t,n){var r=n(72),o=n(88),i=n(335)(!1),a=n(251)("IE_PROTO");e.exports=function(e,t){var n,s=o(e),u=0,c=[];for(n in s)n!=a&&r(s,n)&&c.push(n);for(;t.length>u;)r(s,n=t[u++])&&(~i(c,n)||c.push(n));return c}},function(e,t,n){var r=n(128),o=n(88),i=n(149).f;e.exports=function(e){return function(t){for(var n,a=o(t),s=r(a),u=s.length,c=0,l=[];u>c;)i.call(a,n=s[c++])&&l.push(e?[n,a[n]]:a[n]);return l}}},function(e,t,n){var r=n(199),o=n(112);e.exports=function(e){ +return function(t,n){var i,a,s=o(t)+"",u=r(n),c=s.length;return u<0||u>=c?e?"":void 0:(i=s.charCodeAt(u),i<55296||i>56319||u+1===c||(a=s.charCodeAt(u+1))<56320||a>57343?e?s.charAt(u):i:e?s.slice(u,u+2):a-56320+(i-55296<<10)+65536)}}},function(e,t,n){var r=n(6),o=n(112),i=n(58),a=n(254),s="["+a+"]",u="​…",c=RegExp("^"+s+s+"*"),l=RegExp(s+s+"*$"),f=function(e,t,n){var o={},s=i(function(){return!!a[e]()||u[e]()!=u}),c=o[e]=s?t(p):a[e];n&&(o[n]=c),r(r.P+r.F*s,"String",o)},p=f.trim=function(e,t){return e=o(e)+"",1&t&&(e=e.replace(c,"")),2&t&&(e=e.replace(l,"")),e};e.exports=f},function(e,t,n){var r,o,i,a=n(99),s=n(343),u=n(341),c=n(237),l=n(35),f=l.process,p=l.setImmediate,d=l.clearImmediate,h=l.MessageChannel,m=0,g={},y="onreadystatechange",v=function(){var e,t=+this;g.hasOwnProperty(t)&&(e=g[t],delete g[t],e())},b=function(e){v.call(e.data)};p&&d||(p=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return g[++m]=function(){s("function"==typeof e?e:Function(e),t)},r(m),m},d=function(e){delete g[e]},"process"==n(111)(f)?r=function(e){f.nextTick(a(v,e,1))}:h?(o=new h,i=o.port2,o.port1.onmessage=b,r=a(i.postMessage,i,1)):l.addEventListener&&"function"==typeof postMessage&&!l.importScripts?(r=function(e){l.postMessage(e+"","*")},l.addEventListener("message",b,!1)):r=y in c("script")?function(e){u.appendChild(c("script"))[y]=function(){u.removeChild(this),v.call(e)}}:function(e){setTimeout(a(v,e,1),0)}),e.exports={set:p,clear:d}},function(e,t,n){t.f=n(39)},function(e,t,n){var r=n(337),o=n(39)("iterator"),i=n(194);e.exports=n(126).getIteratorMethod=function(e){if(void 0!=e)return e[o]||e["@@iterator"]||i[r(e)]}},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=!("undefined"==typeof window||!window.document||!window.document.createElement),e.exports=t.default},,,function(e,t,n){"use strict";var r=n(66),o={listen:function(e,t,n){return e.addEventListener?(e.addEventListener(t,n,!1),{remove:function(){e.removeEventListener(t,n,!1)}}):e.attachEvent?(e.attachEvent("on"+t,n),{remove:function(){e.detachEvent("on"+t,n)}}):void 0},capture:function(e,t,n){return e.addEventListener?(e.addEventListener(t,n,!0),{remove:function(){e.removeEventListener(t,n,!0)}}):{remove:r}},registerDefault:function(){}};e.exports=o},function(e,t){"use strict";function n(e){try{e.focus()}catch(e){}}e.exports=n},function(e,t){"use strict";function n(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}e.exports=n},,,,,,,,,,,,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){return e.interpolation={unescapeSuffix:"HTML"},e.interpolation.prefix=e.interpolationPrefix||"__",e.interpolation.suffix=e.interpolationSuffix||"__",e.interpolation.escapeValue=e.escapeInterpolation||!1,e.interpolation.nestingPrefix=e.reusePrefix||"$t(",e.interpolation.nestingSuffix=e.reuseSuffix||")",e}function i(e){return e.resStore&&(e.resources=e.resStore), +e.ns&&e.ns.defaultNs?(e.defaultNS=e.ns.defaultNs,e.ns=e.ns.namespaces):e.defaultNS=e.ns||"translation",e.fallbackToDefaultNS&&e.defaultNS&&(e.fallbackNS=e.defaultNS),e.saveMissing=e.sendMissing,e.saveMissingTo=e.sendMissingTo||"current",e.returnNull=!e.fallbackOnNull,e.returnEmptyString=!e.fallbackOnEmpty,e.returnObjects=e.returnObjectTrees,e.joinArrays="\n",e.returnedObjectHandler=e.objectTreeKeyHandler,e.parseMissingKeyHandler=e.parseMissingKey,e.appendNamespaceToMissingKey=!0,e.nsSeparator=e.nsseparator,e.keySeparator=e.keyseparator,"sprintf"===e.shortcutFunction&&(e.overloadTranslationOptionHandler=function(e){var t,n=[];for(t=1;t1&&~~(e/10)%10!=1}function n(e,n,r){var o=e+" ";switch(r){case"m":return n?"minuta":"minutę";case"mm":return o+(t(e)?"minuty":"minut");case"h":return n?"godzina":"godzinę";case"hh":return o+(t(e)?"godziny":"godzin");case"MM":return o+(t(e)?"miesiące":"miesięcy");case"yy":return o+(t(e)?"lata":"lat")}}var r="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),o="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");return e.defineLocale("pl",{months:function(e,t){return""===t?"("+o[e.month()]+"|"+r[e.month()]+")":/D MMMM/.test(t)?o[e.month()]:r[e.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"), +weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"nie_pon_wt_śr_czw_pt_sb".split("_"),weekdaysMin:"N_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:n,mm:n,h:n,hh:n,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:n,y:"rok",yy:n},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,t,n){!function(e,t){t(n(36))}(0,function(e){"use strict";return e.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº"})})},function(e,t,n){!function(e,t){t(n(36))}(0,function(e){"use strict";return e.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}) +},function(e,t,n){!function(e,t){t(n(36))}(0,function(e){"use strict";function t(e,t){var n=e.split("_");return t%10==1&&t%100!=11?n[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?n[1]:n[2]}function n(e,n,r){var o={mm:n?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===r?n?"минута":"минуту":e+" "+t(o[r],+e)}function r(e,t){return{nominative:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),accusative:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_")}[/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(t)?"accusative":"nominative"][e.month()]}function o(e,t){return{nominative:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),accusative:"янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек".split("_")}[/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(t)?"accusative":"nominative"][e.month()]}function i(e,t){return{nominative:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),accusative:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_")}[/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/.test(t)?"accusative":"nominative"][e.day()]}return e.defineLocale("ru",{months:r,monthsShort:o,weekdays:i,weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[й|я]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сегодня в] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(){return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT"},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:n,mm:n,h:"час",hh:n,d:"день",dd:n,M:"месяц",MM:n,y:"год",yy:n},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},ordinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:7}})})},function(e,t,n){!function(e,t){t(n(36))}(0,function(e){"use strict";var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};return e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"), +weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinalParse:/\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(e){if(0===e)return e+"'ıncı";var n=e%10,r=e%100-n,o=e>=100?100:null;return e+(t[n]||t[r]||t[o])},week:{dow:1,doy:7}})})},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t){"use strict";!function(e){function t(t){var n=t||window.event,r=[].slice.call(arguments,1),o=0,i=0,a=0;return t=e.event.fix(n),t.type="mousewheel",n.wheelDelta&&(o=n.wheelDelta/120),n.detail&&(o=-n.detail/3),a=o,void 0!==n.axis&&n.axis===n.HORIZONTAL_AXIS&&(a=0,i=-1*o),void 0!==n.wheelDeltaY&&(a=n.wheelDeltaY/120),void 0!==n.wheelDeltaX&&(i=-1*n.wheelDeltaX/120),r.unshift(t,o,i,a),(e.event.dispatch||e.event.handle).apply(this,r)}var n,r=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],o=["mousewheel","DomMouseScroll","MozMousePixelScroll"];if(e.event.fixHooks)for(n=r.length;n;)e.event.fixHooks[r[--n]]=e.event.mouseHooks;e.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var e=o.length;e;)this.addEventListener(o[--e],t,!1);else this.onmousewheel=t},teardown:function(){if(this.removeEventListener)for(var e=o.length;e;)this.removeEventListener(o[--e],t,!1);else this.onmousewheel=null}},e.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})}(jQuery)},function(e,t,n){"use strict";var r=n(53),o=r.rgba,i=r.areEqualRgb,a=r.areEqualRgba,s=r.normalizeHue,u=r.normalizeHsvSaturation,c=r.normalizeValue,l=r.hsv,f=r.rgbToHsv,p=r.hsvToRgb,d=r.rgbToString,h=r.rgbaToString,m=r.parseRgb,g=r.parseRgba,y=n(708);!function(e){function t(e){return""===e?e:h(g(e))}function n(e){e&&(e.join||(e=e?(""+e).split(","):[]),b=e)}function r(w){function x(t){var n=!1,r=m(t);return e.each(b,function(e,t){if(i(m(t),r))return n=!0,!1}),!n&&(b=[d(r)].concat(b.slice(0,v-1)),!0)}function C(t,n,r){var i=e(this);t=h(o(m(t),n)),T.call(this,t),i.removeData("tvcolorpicker").removeData("tvcolorpicker-custom-color"),r&&(O(),i.blur())}function T(t){var n=e(this);n.val(t),n.change(),t?n.trigger("pick-color",t):n.trigger("pick-transparent"),k.call(this,t)}function k(t){if(""===t)return void e(this).addClass("tvcolorpicker-gradient-widget");e(this).removeClass("tvcolorpicker-gradient-widget"),e(this).css({backgroundColor:t,color:t})}function E(t,n){var r,o,a,s,u,c;return n=n||{},r=this,o=e(r).val().toLowerCase(), +a=document.createElement("table"),s=document.createElement("tbody"),a.appendChild(s),c=0,e.each(t,function(t,a){var l,f;c++,t%v==0&&(u=e("
").appendTo(s)),l=e('').appendTo(u),f=e('
').appendTo(l).find(".tvcolorpicker-swatch").data("color",a),n.addClass&&f.addClass(n.addClass),a&&(a=a.toLowerCase(),o&&i(m(o),m(a))&&f.addClass("active"),f.css({backgroundColor:a}).data("color",a),f.bind("click",function(){C.call(r,a,N.val(),!0)}))}),e(a).addClass("tvcolorpicker-table"),c?a:e()}function S(t,n,r){var o,i=e(t).offset(),a={left:e(document).scrollLeft(),top:e(document).scrollTop()},s={width:e(t).outerWidth(),height:e(t).outerHeight()},u={width:e(window).width(),height:e(window).height()},c={width:e(n).outerWidth(),height:e(n).outerHeight()};switch("function"==typeof r.direction?r.direction():r.direction){default:case"down":o={top:i.top+s.height+r.offset,left:i.left+r.drift};break;case"right":o={top:i.top+r.drift,left:i.left+s.width+r.offset}}o.top+c.height>u.height+a.top&&(o.top=u.height-c.height+a.top),i.left+c.width>u.width&&(o.left=u.width-c.width),o.left+="px",o.top+="px",n.css(o)}function M(t){function n(e){var t=e.originalEvent,n=e.offsetX||e.layerX||t&&(t.offsetX||t.layerX)||0,r=e.offsetY||e.layerY||t&&(t.offsetY||t.layerY)||0;D.css({left:n+"px",top:r+"px"}),W[0]=s(n/F),W[1]=u(1-r/R),L.css({backgroundColor:d(p(l(W[0],W[1],1)))}),x()}function r(t){1==t.which&&(U=!1,q.is(".opened")&&e(V).get(0).focus())}function i(t){var n=t.pageY,r=e(j),o=r.offset().top,i=n-o;return i>r.height()?r.height():i<0?0:i}function v(e){var t=i(e);I.css({top:t+"px"}),W[2]=c(1-Math.max(0,Math.min(t,R))/R),x()}function w(t){1==t.which&&(H=!1,e(document).unbind("mouseup",w),q.is(".opened")&&e(V).get(0).focus())}function x(){var e,t;Y&&(Y=!1,q.find(".tvcolorpicker-swatch.active").removeClass("active")),e=o(p(W),N.val()),a(g(V.val().toUpperCase()),e)||(t=h(e),V.data("tvcolorpicker-custom-color",t),T.call(V,t))}var k,M,O,D,P,A,L,I,j,R,F,U,H,Y,W,B=!1,V=e(this),q=e('
'),z=e('
').appendTo(q);return z.append(E.call(this,["rgb(0, 0, 0)","rgb(66, 66, 66)","rgb(101, 101, 101)","rgb(152, 152, 152)","rgb(182, 182, 182)","rgb(203, 203, 203)","rgb(216, 216, 216)","rgb(238, 238, 238)","rgb(242, 242, 242)","rgb(255, 255, 255)"])),z.append(E.call(this,["rgb(151, 0, 0)","rgb(255, 0, 0)","rgb(255, 152, 0)","rgb(255, 255, 0)","rgb(0, 255, 0)","rgb(0, 255, 255)","rgb(73, 133, 231)","rgb(0, 0, 255)","rgb(152, 0, 255)","rgb(255, 0, 255)"])), +z.append(E.call(this,["rgb(230, 184, 175)","rgb(244, 204, 204)","rgb(252, 229, 205)","rgb(255, 242, 204)","rgb(217, 234, 211)","rgb(208, 224, 227)","rgb(201, 218, 248)","rgb(207, 226, 243)","rgb(217, 210, 233)","rgb(234, 209, 220)","rgb(221, 126, 107)","rgb(234, 153, 153)","rgb(249, 203, 156)","rgb(255, 229, 153)","rgb(182, 215, 168)","rgb(162, 196, 201)","rgb(164, 194, 244)","rgb(159, 197, 232)","rgb(180, 167, 214)","rgb(213, 166, 189)","rgb(204, 65, 37)","rgb(224, 102, 102)","rgb(246, 178, 107)","rgb(255, 217, 102)","rgb(147, 196, 125)","rgb(118, 165, 175)","rgb(109, 158, 235)","rgb(111, 168, 220)","rgb(142, 124, 195)","rgb(194, 123, 160)","rgb(166, 28, 0)","rgb(204, 0, 0)","rgb(230, 145, 56)","rgb(241, 194, 50)","rgb(106, 168, 79)","rgb(69, 129, 142)","rgb(60, 120, 216)","rgb(61, 133, 198)","rgb(103, 78, 167)","rgb(166, 77, 121)","rgb(133, 32, 12)","rgb(153, 0, 0)","rgb(180, 95, 6)","rgb(191, 144, 0)","rgb(56, 118, 29)","rgb(19, 79, 92)","rgb(17, 85, 204)","rgb(11, 83, 148)","rgb(53, 28, 117)","rgb(116, 27, 71)","rgb(91, 15, 0)","rgb(102, 0, 0)","rgb(120, 63, 4)","rgb(127, 96, 0)","rgb(39, 78, 19)","rgb(12, 52, 61)","rgb(28, 69, 135)","rgb(7, 55, 99)","rgb(32, 18, 77)","rgb(76, 17, 48)"])),k=e('
').css({display:"none"}).appendTo(q),M=e('
').appendTo(k),O=e('
').appendTo(M),D=e('
').appendTo(O),P=e('
').appendTo(O),A=e('
').appendTo(M),L=e('
').appendTo(A),I=e('
').appendTo(L),j=e('
').appendTo(L),N=y(e(this),t.hideTransparency),N.initEvents(),N.updateColor(),N.$el.appendTo(q),N.val(g(V.val()||_)[3]),R=O.height(),F=O.width(),U=!1,H=!1,Y=!0,W=[0,0,.5],P.bind("mousedown",function(t){1==t.which&&(U=!0,e(document).bind("mouseup",r),n(t),t.preventDefault())}),P.bind("mousemove",function(e){U&&(n(e),e.preventDefault())}),e(N).on("change",function(){if(B)return void x();C.call(this,e(this).val()||_,N.val())}.bind(this)),e(N).on("afterChange",function(){e(this).focus()}.bind(this)),A.bind("mousedown",function(t){1==t.which&&(H=!0,e(document).bind("mouseup",w),v(t),t.preventDefault())}),e(document).bind("mousemove",function(e){H&&(v(e),e.preventDefault())}),e(''+window.t("Custom color...")+"").appendTo(q).bind("click",function(){var t,n=e(this).is(".active");n||k.css({minWidth:z.width()+"px",minHeight:z.height()+"px"}),e(this)[n?"removeClass":"addClass"]("active"),B=e(this).is(".active"),k.css({display:n?"none":"block"}),z.css({display:n?"block":"none"}),n?V.removeData("tvcolorpicker-custom-color"):(R=O.height(),F=O.width(),t=m(V.val()||_),W=f(t),D.css({left:~~(W[0]*F)+"px",top:~~((1-W[1])*R)+"px"}),I.css({top:~~((1-W[2])*R)+"px"}),L.css({backgroundColor:d(p(l(W[0],W[1],1)))}))}),q.append(e(E.call(this,b,{addClass:"tvcolorpicker-user" +})).addClass("tvcolorpicker-user-swatches")),e(document.body).append(q),S(V,q,t),q}function O(){e(".tvcolorpicker-popup").removeClass("opened").remove(),e(N).off("change"),e(N).off("afterChange"),e(D).data("tvcolorpicker",null),e(D).each(function(){var t,n=e(this).data("tvcolorpicker-custom-color");n&&(x(n)&&e(this).trigger("customcolorchange",[b]),e(this).data("tvcolorpicker-custom-color",null)),t=e(this).data("tvcolorpicker-previous-color"),t&&t!=e(this).val()&&e(this).trigger("change"),e(this).removeData("tvcolorpicker-previous-color")})}var N,D;return w=e.extend({},r.options,w||{}),D=this,w&&"customColors"in w&&n(w.customColors),this.each(function(){function n(){var e=t(a.val());k.call(a,e)}var r,o,i,a=e(this);a.val(t(a.val())),r=null,o=!1,a.addClass("tvcolorpicker-widget").attr("autocomplete","off").attr("readonly",!0),i=function(){a.data("tvcolorpicker")||(O.call(a),r=M.call(a,w),a.data("tvcolorpicker-custom-color",null),a.data("tvcolorpicker",r),a.data("tvcolorpicker-previous-color",a.val()),r.bind("mousedown click",function(t){e(t.target).parents().andSelf().is(r)&&(a.focus(),o=!0,setTimeout(function(){o=!1},0))}))},a.on("touchstart",i),a.focus(i),O.call(a),a.bind("blur",function(e){o?e.stopPropagation():O.call(a)}),a.change(function(e){n()}),n()})}var v,b,_;if(!e)throw Error("This program cannot be run in DOS mode");r.setCustomColors=n,e.fn.tvcolorpicker=r,v=10,b=[],_="rgb(14, 15, 16)",r.options={direction:"down",offset:0,drift:0}}(window.jQuery)},,function(e,t){function n(){throw Error("setTimeout has not been defined")}function r(){throw Error("clearTimeout has not been defined")}function o(e){if(l===setTimeout)return setTimeout(e,0);if((l===n||!l)&&setTimeout)return l=setTimeout,setTimeout(e,0);try{return l(e,0)}catch(t){try{return l.call(null,e,0)}catch(t){return l.call(this,e,0)}}}function i(e){if(f===clearTimeout)return clearTimeout(e);if((f===r||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(e);try{return f(e)}catch(t){try{return f.call(null,e)}catch(t){return f.call(this,e)}}}function a(){d&&h&&(d=!1,h.length?p=h.concat(p):m=-1,p.length&&s())}function s(){var e,t;if(!d){for(e=o(a),d=!0,t=p.length;t;){for(h=p,p=[];++m1)for(t=1;t.":"function"==typeof t?" Instead of passing a class like Foo, pass React.createElement(Foo) or .":null!=t&&void 0!==t.props?" This may be caused by unintentionally loading two independent copies of React.":""),a=y.createElement(U,{child:t}),e?(u=C.get(e),s=u._processChildContext(u._context)):s=M,l=p(n)){if(f=l._currentElement,m=f.props.child,D(m,t))return g=l._renderedComponent.getPublicInstance(),v=r&&function(){r.call(g)},d._updateRootComponent(l,a,s,n,v),g;d.unmountComponentAtNode(n)}return b=o(n),_=b&&!!i(b),w=c(n),x=_&&!l&&!w,T=d._renderNewRootComponent(a,n,x,s)._renderedComponent.getPublicInstance(),r&&r.call(T),T},render:function(e,t,n){return d._renderSubtreeIntoContainer(null,e,t,n)},unmountComponentAtNode:function(e){var t;return l(e)||h("40"),(t=p(e))?(delete R[t._instance.rootID],S.batchedUpdates(u,t,e,!1),!0):(c(e),1===e.nodeType&&e.hasAttribute(A),!1)},_mountImageIntoNode:function(e,t,n,i,a){var s,u,c,f,p,d;if(l(t)||h("41"),i){if(s=o(t),T.canReuseMarkup(e,s))return void b.precacheNode(n,s);u=s.getAttribute(T.CHECKSUM_ATTR_NAME),s.removeAttribute(T.CHECKSUM_ATTR_NAME),c=s.outerHTML,s.setAttribute(T.CHECKSUM_ATTR_NAME,u),f=e,p=r(f,c),d=" (client) "+f.substring(p-20,p+20)+"\n (server) "+c.substring(p-20,p+20),t.nodeType===I&&h("42",d)}if(t.nodeType===I&&h("43"),a.useCreateElement){for(;t.lastChild;)t.removeChild(t.lastChild);m.insertTreeBefore(t,e,null)}else N(t,e),b.precacheNode(n,t.firstChild)}},e.exports=d},function(e,t,n){"use strict" +;var r=n(25),o=n(140),i=(n(17),{HOST:0,COMPOSITE:1,EMPTY:2,getType:function(e){return null===e||!1===e?i.EMPTY:o.isValidElement(e)?"function"==typeof e.type?i.COMPOSITE:i.HOST:void r("26",e)}});e.exports=i},function(e,t){"use strict";var n={currentScrollLeft:0,currentScrollTop:0,refreshScrollValues:function(e){n.currentScrollLeft=e.x,n.currentScrollTop=e.y}};e.exports=n},function(e,t,n){"use strict";function r(e,t){return null==t&&o("30"),null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}var o=n(25);n(17);e.exports=r},function(e,t){"use strict";function n(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}e.exports=n},function(e,t,n){"use strict";function r(e){for(var t;(t=e._renderedNodeType)===o.COMPOSITE;)e=e._renderedComponent;return t===o.HOST?e._renderedComponent:t===o.EMPTY?null:void 0}var o=n(449);e.exports=r},function(e,t,n){"use strict";function r(){return!i&&o.canUseDOM&&(i="textContent"in document.documentElement?"textContent":"innerText"),i}var o=n(60),i=null;e.exports=r},function(e,t,n){"use strict";function r(e){var t=e.type,n=e.nodeName;return n&&"input"===n.toLowerCase()&&("checkbox"===t||"radio"===t)}function o(e){return e._wrapperState.valueTracker}function i(e,t){e._wrapperState.valueTracker=t}function a(e){delete e._wrapperState.valueTracker}function s(e){var t;return e&&(t=r(e)?""+e.checked:e.value),t}var u=n(32),c={_getTrackerFromNode:function(e){return o(u.getInstanceFromNode(e))},track:function(e){var t,n,s,c;o(e)||(t=u.getNodeFromInstance(e),n=r(t)?"checked":"value",s=Object.getOwnPropertyDescriptor(t.constructor.prototype,n),c=""+t[n],t.hasOwnProperty(n)||"function"!=typeof s.get||"function"!=typeof s.set||(Object.defineProperty(t,n,{enumerable:s.enumerable,configurable:!0,get:function(){return s.get.call(this)},set:function(e){c=""+e,s.set.call(this,e)}}),i(e,{getValue:function(){return c},setValue:function(e){c=""+e},stopTracking:function(){a(e),delete t[n]}})))},updateValueIfChanged:function(e){var t,n,r;return!!e&&((t=o(e))?(n=t.getValue(),(r=s(u.getNodeFromInstance(e)))!==n&&(t.setValue(r),!0)):(c.track(e),!0))},stopTracking:function(e){var t=o(e);t&&t.stopTracking()}};e.exports=c},function(e,t,n){"use strict";function r(e){if(e){var t=e.getName();if(t)return" Check the render method of `"+t+"`."}return""}function o(e){return"function"==typeof e&&void 0!==e.prototype&&"function"==typeof e.prototype.mountComponent&&"function"==typeof e.prototype.receiveComponent}function i(e,t){var n,s,u,p;return null===e||!1===e?n=c.create(i):"object"==typeof e?(s=e,u=s.type,"function"!=typeof u&&"string"!=typeof u&&(p="",p+=r(s._owner),a("130",null==u?u:typeof u,p)),"string"==typeof s.type?n=l.createInternalComponent(s):o(s.type)?(n=new s.type(s),n.getHostNode||(n.getHostNode=n.getNativeNode)):n=new f(s)):"string"==typeof e||"number"==typeof e?n=l.createInstanceForText(e):a("131",typeof e),n._mountIndex=0,n._mountImage=null,n}var a=n(25),s=n(30),u=n(1023),c=n(444),l=n(446),f=(n(1086),n(17),n(24),function(e){this.construct(e)}) +;s(f.prototype,u,{_instantiateReactComponent:i}),e.exports=i},function(e,t){"use strict";function n(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!r[e.type]:"textarea"===t}var r={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};e.exports=n},function(e,t,n){"use strict";var r=n(60),o=n(224),i=n(225),a=function(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t};r.canUseDOM&&("textContent"in document.documentElement||(a=function(e,t){if(3===e.nodeType)return void(e.nodeValue=t);i(e,o(t))})),e.exports=a},function(e,t,n){"use strict";function r(e,t){return e&&"object"==typeof e&&null!=e.key?c.escape(e.key):t.toString(36)}function o(e,t,n,i){var p,d,h,m,g,y,v,b,_,w,x,C,T=typeof e;if("undefined"!==T&&"boolean"!==T||(e=null),null===e||"string"===T||"number"===T||"object"===T&&e.$$typeof===s)return n(i,e,""===t?l+r(e,0):t),1;if(h=0,m=""===t?l:t+f,Array.isArray(e))for(g=0;g2?arguments[2]:void 0,l=Math.min((void 0===c?a:o(c,a))-u,a-s),f=1;for(u0;)u in n?n[s]=n[u]:delete n[s],s+=f,u+=f;return n}},function(e,t,n){"use strict";var r=n(130),o=n(198),i=n(89);e.exports=function(e){for(var t=r(this),n=i(t.length),a=arguments.length,s=o(a>1?arguments[1]:void 0,n),u=a>2?arguments[2]:void 0,c=void 0===u?n:o(u,n);c>s;)t[s++]=e;return t}},function(e,t,n){var r=n(50),o=n(345),i=n(39)("species");e.exports=function(e){var t;return o(e)&&(t=e.constructor,"function"!=typeof t||t!==Array&&!o(t.prototype)||(t=void 0),r(t)&&null===(t=t[i])&&(t=void 0)),void 0===t?Array:t}},function(e,t,n){var r=n(520);e.exports=function(e,t){return new(r(e))(t)}},function(e,t,n){"use strict";var r=n(124),o=n(50),i=n(343),a=[].slice,s={},u=function(e,t,n){if(!(t in s)){for(var r=[],o=0;oa;)n.call(e,s=t[a++])&&u.push(s);return u}},function(e,t,n){"use strict";var r=n(29);e.exports=function(){var e=r(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},function(e,t,n){var r=n(50),o=n(249).set;e.exports=function(e,t,n){var i,a=t.constructor;return a!==n&&"function"==typeof a&&(i=a.prototype)!==n.prototype&&r(i)&&o&&o(e,i),e}},function(e,t,n){var r=n(50),o=n(111),i=n(39)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[i])?!!t:"RegExp"==o(e))}},function(e,t,n){var r=n(128),o=n(88);e.exports=function(e,t){for(var n,i=o(e),a=r(i),s=a.length,u=0;s>u;)if(i[n=a[u++]]===t)return n}},function(e,t,n){var r=n(35),o=n(355).set,i=r.MutationObserver||r.WebKitMutationObserver,a=r.process,s=r.Promise,u="process"==n(111)(a);e.exports=function(){var e,t,n,c,l,f,p=function(){var r,o;for(u&&(r=a.domain)&&r.exit();e;){o=e.fn,e=e.next;try{o()}catch(r){throw e?n():t=void 0,r}}t=void 0,r&&r.enter()};return u?n=function(){a.nextTick(p)}:i?(c=!0,l=document.createTextNode(""),new i(p).observe(l,{characterData:!0}),n=function(){l.data=c=!c}):s&&s.resolve?(f=s.resolve(),n=function(){f.then(p)}):n=function(){o.call(r,p)},function(r){var o={fn:r,next:void 0};t&&(t.next=o),e||(e=o,n()),t=o}}},function(e,t,n){"use strict" +;var r=n(128),o=n(197),i=n(149),a=n(130),s=n(241),u=Object.assign;e.exports=!u||n(58)(function(){var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||Object.keys(u({},t)).join("")!=r})?function(e,t){for(var n,u,c,l,f,p=a(e),d=arguments.length,h=1,m=o.f,g=i.f;d>h;)for(n=s(arguments[h++]),u=m?r(n).concat(m(n)):r(n),c=u.length,l=0;c>l;)g.call(n,f=u[l++])&&(p[f]=n[f]);return p}:u},function(e,t,n){var r=n(59),o=n(29),i=n(128);e.exports=n(79)?Object.defineProperties:function(e,t){o(e);for(var n,a=i(t),s=a.length,u=0;s>u;)r.f(e,n=a[u++],t[n]);return e}},function(e,t,n){var r=n(88),o=n(247).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(e){try{return o(e)}catch(e){return a.slice()}};e.exports.f=function(e){return a&&"[object Window]"==i.call(e)?s(e):o(r(e))}},function(e,t,n){var r=n(247),o=n(197),i=n(29),a=n(35).Reflect;e.exports=a&&a.ownKeys||function(e){var t=r.f(i(e)),n=o.f;return n?t.concat(n(e)):t}},function(e,t,n){var r=n(35).parseFloat,o=n(354).trim;e.exports=1/r(n(254)+"-0")!=-1/0?function(e){var t=o(e+"",3),n=r(t);return 0===n&&"-"==t.charAt(0)?-0:n}:r},function(e,t,n){var r=n(35).parseInt,o=n(354).trim,i=n(254),a=/^[\-+]?0[xX]/;e.exports=8!==r(i+"08")||22!==r(i+"0x16")?function(e,t){var n=o(e+"",3);return r(n,t>>>0||(a.test(n)?16:10))}:r},function(e,t){e.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}},function(e,t,n){var r=n(29),o=n(124),i=n(39)("species");e.exports=function(e,t){var n,a=r(e).constructor;return void 0===a||void 0==(n=r(a)[i])?t:o(n)}},function(e,t,n){"use strict";var r=n(199),o=n(112);e.exports=function(e){var t=o(this)+"",n="",i=r(e);if(i<0||i==1/0)throw RangeError("Count can't be negative");for(;i>0;(i>>>=1)&&(t+=t))1&i&&(n+=t);return n}},function(e,t,n){var r=n(35),o=n(126),i=n(195),a=n(356),s=n(59).f;e.exports=function(e){var t=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==e.charAt(0)||e in t||s(t,e,{value:a.f(e)})}},function(e,t,n){var r=n(6);r(r.P,"Array",{copyWithin:n(518)}),n(125)("copyWithin")},function(e,t,n){var r=n(6);r(r.P,"Array",{fill:n(519)}),n(125)("fill")},function(e,t,n){"use strict";var r=n(6),o=n(336)(6),i="findIndex",a=!0;i in[]&&Array(1)[i](function(){a=!1}),r(r.P+r.F*a,"Array",{findIndex:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),n(125)(i)},function(e,t,n){"use strict";var r=n(6),o=n(336)(5),i="find",a=!0;i in[]&&Array(1)[i](function(){a=!1}),r(r.P+r.F*a,"Array",{find:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),n(125)(i)},function(e,t,n){"use strict";var r=n(99),o=n(6),i=n(130),a=n(347),s=n(344),u=n(89),c=n(340),l=n(357);o(o.S+o.F*!n(243)(function(e){Array.from(e)}),"Array",{from:function(e){var t,n,o,f,p=i(e),d="function"==typeof this?this:Array,h=arguments.length,m=h>1?arguments[1]:void 0,g=void 0!==m,y=0,v=l(p);if(g&&(m=r(m,h>2?arguments[2]:void 0,2)),void 0==v||d==Array&&s(v))for(t=u(p.length), +n=new d(t);t>y;y++)c(n,y,g?m(p[y],y):p[y]);else for(f=v.call(p),n=new d;!(o=f.next()).done;y++)c(n,y,g?a(f,m,[o.value,y],!0):o.value);return n.length=y,n}})},function(e,t,n){"use strict";var r=n(125),o=n(349),i=n(194),a=n(88);e.exports=n(242)(Array,"Array",function(e,t){this._t=a(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,o(1)):"keys"==t?o(0,n):"values"==t?o(0,e[n]):o(0,[n,e[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},function(e,t,n){"use strict";var r=n(6),o=n(340);r(r.S+r.F*n(58)(function(){function e(){}return!(Array.of.call(e)instanceof e)}),"Array",{of:function(){for(var e=0,t=arguments.length,n=new("function"==typeof this?this:Array)(t);t>e;)o(n,e,arguments[e++]);return n.length=t,n}})},function(e,t,n){n(250)("Array")},function(e,t,n){var r=n(39)("toPrimitive"),o=Date.prototype;r in o||n(113)(o,r,n(523))},function(e,t,n){var r=Date.prototype,o="Invalid Date",i="toString",a=r[i],s=r.getTime;new Date(NaN)+""!=o&&n(129)(r,i,function(){var e=s.call(this);return e===e?a.call(this):o})},function(e,t,n){"use strict";var r=n(50),o=n(148),i=n(39)("hasInstance"),a=Function.prototype;i in a||n(59).f(a,i,{value:function(e){if("function"!=typeof this||!r(e))return!1;if(!r(this.prototype))return e instanceof this;for(;e=o(e);)if(this.prototype===e)return!0;return!1}})},function(e,t,n){var r=n(59).f,o=n(114),i=n(72),a=Function.prototype,s=/^\s*function ([^ (]*)/,u="name",c=Object.isExtensible||function(){return!0};u in a||n(79)&&r(a,u,{configurable:!0,get:function(){try{var e=this,t=(""+e).match(s)[1];return i(e,u)||!c(e)||r(e,u,o(5,t)),t}catch(e){return""}}})},function(e,t,n){"use strict";var r=n(338);e.exports=n(339)("Map",function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{get:function(e){var t=r.getEntry(this,e);return t&&t.v},set:function(e,t){return r.def(this,0===e?0:e,t)}},r,!0)},function(e,t,n){var r=n(6),o=n(350),i=Math.sqrt,a=Math.acosh;r(r.S+r.F*!(a&&710==Math.floor(a(Number.MAX_VALUE))&&a(1/0)==1/0),"Math",{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?Math.log(e)+Math.LN2:o(e-1+i(e-1)*i(e+1))}})},function(e,t,n){function r(e){return isFinite(e=+e)&&0!=e?e<0?-r(-e):Math.log(e+Math.sqrt(e*e+1)):e}var o=n(6),i=Math.asinh;o(o.S+o.F*!(i&&1/i(0)>0),"Math",{asinh:r})},function(e,t,n){var r=n(6),o=Math.atanh;r(r.S+r.F*!(o&&1/o(-0)<0),"Math",{atanh:function(e){return 0==(e=+e)?e:Math.log((1+e)/(1-e))/2}})},function(e,t,n){var r=n(6),o=n(245);r(r.S,"Math",{cbrt:function(e){return o(e=+e)*Math.pow(Math.abs(e),1/3)}})},function(e,t,n){var r=n(6);r(r.S,"Math",{clz32:function(e){return(e>>>=0)?31-Math.floor(Math.log(e+.5)*Math.LOG2E):32}})},function(e,t,n){var r=n(6),o=Math.exp;r(r.S,"Math",{cosh:function(e){return(o(e=+e)+o(-e))/2}})},function(e,t,n){var r=n(6),o=n(244);r(r.S+r.F*(o!=Math.expm1),"Math",{expm1:o})},function(e,t,n){var r=n(6),o=n(245),i=Math.pow,a=i(2,-52),s=i(2,-23),u=i(2,127)*(2-s),c=i(2,-126),l=function(e){return e+1/a-1/a};r(r.S,"Math",{fround:function(e){ +var t,n,r=Math.abs(e),i=o(e);return ru||n!=n?i*(1/0):i*n)}})},function(e,t,n){var r=n(6),o=Math.abs;r(r.S,"Math",{hypot:function(e,t){for(var n,r,i=0,a=0,s=arguments.length,u=0;a0?(r=n/u,i+=r*r):i+=n;return u===1/0?1/0:u*Math.sqrt(i)}})},function(e,t,n){var r=n(6),o=Math.imul;r(r.S+r.F*n(58)(function(){return-5!=o(4294967295,5)||2!=o.length}),"Math",{imul:function(e,t){var n=65535,r=+e,o=+t,i=n&r,a=n&o;return 0|i*a+((n&r>>>16)*a+i*(n&o>>>16)<<16>>>0)}})},function(e,t,n){var r=n(6);r(r.S,"Math",{log10:function(e){return Math.log(e)/Math.LN10}})},function(e,t,n){var r=n(6);r(r.S,"Math",{log1p:n(350)})},function(e,t,n){var r=n(6);r(r.S,"Math",{log2:function(e){return Math.log(e)/Math.LN2}})},function(e,t,n){var r=n(6);r(r.S,"Math",{sign:n(245)})},function(e,t,n){var r=n(6),o=n(244),i=Math.exp;r(r.S+r.F*n(58)(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function(e){return Math.abs(e=+e)<1?(o(e)-o(-e))/2:(i(e-1)-i(-e-1))*(Math.E/2)}})},function(e,t,n){var r=n(6),o=n(244),i=Math.exp;r(r.S,"Math",{tanh:function(e){var t=o(e=+e),n=o(-e);return t==1/0?1:n==1/0?-1:(t-n)/(i(e)+i(-e))}})},function(e,t,n){var r=n(6);r(r.S,"Math",{trunc:function(e){return(e>0?Math.floor:Math.ceil)(e)}})},function(e,t,n){var r=n(6);r(r.S,"Number",{EPSILON:Math.pow(2,-52)})},function(e,t,n){var r=n(6),o=n(35).isFinite;r(r.S,"Number",{isFinite:function(e){return"number"==typeof e&&o(e)}})},function(e,t,n){var r=n(6);r(r.S,"Number",{isInteger:n(346)})},function(e,t,n){var r=n(6);r(r.S,"Number",{isNaN:function(e){return e!=e}})},function(e,t,n){var r=n(6),o=n(346),i=Math.abs;r(r.S,"Number",{isSafeInteger:function(e){return o(e)&&i(e)<=9007199254740991}})},function(e,t,n){var r=n(6);r(r.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(e,t,n){var r=n(6);r(r.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},function(e,t,n){var r=n(6),o=n(534);r(r.S+r.F*(Number.parseFloat!=o),"Number",{parseFloat:o})},function(e,t,n){var r=n(6),o=n(535);r(r.S+r.F*(Number.parseInt!=o),"Number",{parseInt:o})},function(e,t,n){"use strict";var r=n(6),o=n(58),i=n(517),a=1..toPrecision;r(r.P+r.F*(o(function(){return"1"!==a.call(1,void 0)})||!o(function(){a.call({})})),"Number",{toPrecision:function(e){var t=i(this,"Number#toPrecision: incorrect invocation!");return void 0===e?a.call(t):a.call(t,e)}})},function(e,t,n){var r=n(6);r(r.S+r.F,"Object",{assign:n(530)})},function(e,t,n){var r=n(6);r(r.S,"Object",{is:n(536)})},function(e,t,n){var r=n(6);r(r.S,"Object",{setPrototypeOf:n(249).set})},function(e,t,n){"use strict";var r,o,i,a,s,u,c,l,f,p,d,h,m,g,y,v,b,_=n(195),w=n(35),x=n(99),C=n(337),T=n(6),k=n(50),E=n(124),S=n(236),M=n(240),O=n(537),N=n(355).set,D=n(529)(),P="Promise",A=w.TypeError,L=w.process,I=w[P];L=w.process,r="process"==C(L),o=function(){},u=!!function(){try{var e=I.resolve(1),t=(e.constructor={})[n(39)("species")]=function(e){e(o,o)};return(r||"function"==typeof PromiseRejectionEvent)&&e.then(o)instanceof t}catch(e){}}(),c=function(e,t){ +return e===t||e===I&&t===s},l=function(e){var t;return!(!k(e)||"function"!=typeof(t=e.then))&&t},f=function(e){return c(I,e)?new p(e):new a(e)},p=a=function(e){var t,n;this.promise=new e(function(e,r){if(void 0!==t||void 0!==n)throw A("Bad Promise constructor");t=e,n=r}),this.resolve=E(t),this.reject=E(n)},d=function(e){try{e()}catch(e){return{error:e}}},h=function(e,t){if(!e._n){e._n=!0;var n=e._c;D(function(){for(var r=e._v,o=1==e._s,i=0,a=function(t){var n,i,a=o?t.ok:t.fail,s=t.resolve,u=t.reject,c=t.domain;try{a?(o||(2==e._h&&y(e),e._h=1),!0===a?n=r:(c&&c.enter(),n=a(r),c&&c.exit()),n===t.promise?u(A("Promise-chain cycle")):(i=l(n))?i.call(n,s,u):s(n)):u(r)}catch(e){u(e)}};n.length>i;)a(n[i++]);e._c=[],e._n=!1,t&&!e._h&&m(e)})}},m=function(e){N.call(w,function(){var t,n,o,i=e._v;if(g(e)&&(t=d(function(){r?L.emit("unhandledRejection",i,e):(n=w.onunhandledrejection)?n({promise:e,reason:i}):(o=w.console)&&o.error&&o.error("Unhandled promise rejection",i)}),e._h=r||g(e)?2:1),e._a=void 0,t)throw t.error})},g=function(e){if(1==e._h)return!1;for(var t,n=e._a||e._c,r=0;n.length>r;)if(t=n[r++],t.fail||!g(t.promise))return!1;return!0},y=function(e){N.call(w,function(){var t;r?L.emit("rejectionHandled",e):(t=w.onrejectionhandled)&&t({promise:e,reason:e._v})})},v=function(e){var t=this;t._d||(t._d=!0,t=t._w||t,t._v=e,t._s=2,t._a||(t._a=t._c.slice()),h(t,!0))},b=function(e){var t,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===e)throw A("Promise can't be resolved itself");(t=l(e))?D(function(){var r={_w:n,_d:!1};try{t.call(e,x(b,r,1),x(v,r,1))}catch(e){v.call(r,e)}}):(n._v=e,n._s=1,h(n,!1))}catch(e){v.call({_w:n,_d:!1},e)}}},u||(I=function(e){S(this,I,P,"_h"),E(e),i.call(this);try{e(x(b,this,1),x(v,this,1))}catch(e){v.call(this,e)}},i=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=n(248)(I.prototype,{then:function(e,t){var n=f(O(this,I));return n.ok="function"!=typeof e||e,n.fail="function"==typeof t&&t,n.domain=r?L.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&h(this,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),p=function(){var e=new i;this.promise=e,this.resolve=x(b,e,1),this.reject=x(v,e,1)}),T(T.G+T.W+T.F*!u,{Promise:I}),n(150)(I,P),n(250)(P),s=n(126)[P],T(T.S+T.F*!u,P,{reject:function(e){var t=f(this);return(0,t.reject)(e),t.promise}}),T(T.S+T.F*(_||!u),P,{resolve:function(e){if(e instanceof I&&c(e.constructor,this))return e;var t=f(this);return(0,t.resolve)(e),t.promise}}),T(T.S+T.F*!(u&&n(243)(function(e){I.all(e).catch(o)})),P,{all:function(e){var t=this,n=f(t),r=n.resolve,o=n.reject,i=d(function(){var n=[],i=0,a=1;M(e,!1,function(e){var s=i++,u=!1;n.push(void 0),a++,t.resolve(e).then(function(e){u||(u=!0,n[s]=e,--a||r(n))},o)}),--a||r(n)});return i&&o(i.error),n.promise},race:function(e){var t=this,n=f(t),r=n.reject,o=d(function(){M(e,!1,function(e){t.resolve(e).then(n.resolve,r)})});return o&&r(o.error),n.promise}})},function(e,t,n){var r=n(6),o=n(124),i=n(29),a=(n(35).Reflect||{}).apply,s=Function.apply +;r(r.S+r.F*!n(58)(function(){a(function(){})}),"Reflect",{apply:function(e,t,n){var r=o(e),u=i(n);return a?a(r,t,u):s.call(r,t,u)}})},function(e,t,n){var r=n(6),o=n(196),i=n(124),a=n(29),s=n(50),u=n(58),c=n(522),l=(n(35).Reflect||{}).construct,f=u(function(){function e(){}return!(l(function(){},[],e)instanceof e)}),p=!u(function(){l(function(){})});r(r.S+r.F*(f||p),"Reflect",{construct:function(e,t){var n,r,u,d,h;if(i(e),a(t),n=arguments.length<3?e:i(arguments[2]),p&&!f)return l(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}return r=[null],r.push.apply(r,t),new(c.apply(e,r))}return u=n.prototype,d=o(s(u)?u:Object.prototype),h=Function.apply.call(e,d,t),s(h)?h:d}})},function(e,t,n){var r=n(59),o=n(6),i=n(29),a=n(151);o(o.S+o.F*n(58)(function(){Reflect.defineProperty(r.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(e,t,n){i(e),t=a(t,!0),i(n);try{return r.f(e,t,n),!0}catch(e){return!1}}})},function(e,t,n){var r=n(6),o=n(127).f,i=n(29);r(r.S,"Reflect",{deleteProperty:function(e,t){var n=o(i(e),t);return!(n&&!n.configurable)&&delete e[t]}})},function(e,t,n){"use strict";var r=n(6),o=n(29),i=function(e){this._t=o(e),this._i=0;var t,n=this._k=[];for(t in e)n.push(t)};n(348)(i,"Object",function(){var e,t=this,n=t._k;do{if(t._i>=n.length)return{value:void 0,done:!0}}while(!((e=n[t._i++])in t._t));return{value:e,done:!1}}),r(r.S,"Reflect",{enumerate:function(e){return new i(e)}})},function(e,t,n){var r=n(127),o=n(6),i=n(29);o(o.S,"Reflect",{getOwnPropertyDescriptor:function(e,t){return r.f(i(e),t)}})},function(e,t,n){var r=n(6),o=n(148),i=n(29);r(r.S,"Reflect",{getPrototypeOf:function(e){return o(i(e))}})},function(e,t,n){function r(e,t){var n,s,l=arguments.length<3?e:arguments[2];return c(e)===l?e[t]:(n=o.f(e,t))?a(n,"value")?n.value:void 0!==n.get?n.get.call(l):void 0:u(s=i(e))?r(s,t,l):void 0}var o=n(127),i=n(148),a=n(72),s=n(6),u=n(50),c=n(29);s(s.S,"Reflect",{get:r})},function(e,t,n){var r=n(6);r(r.S,"Reflect",{has:function(e,t){return t in e}})},function(e,t,n){var r=n(6),o=n(29),i=Object.isExtensible;r(r.S,"Reflect",{isExtensible:function(e){return o(e),!i||i(e)}})},function(e,t,n){var r=n(6);r(r.S,"Reflect",{ownKeys:n(533)})},function(e,t,n){var r=n(6),o=n(29),i=Object.preventExtensions;r(r.S,"Reflect",{preventExtensions:function(e){o(e);try{return i&&i(e),!0}catch(e){return!1}}})},function(e,t,n){var r=n(6),o=n(249);o&&r(r.S,"Reflect",{setPrototypeOf:function(e,t){o.check(e,t);try{return o.set(e,t),!0}catch(e){return!1}}})},function(e,t,n){function r(e,t,n){var u,p,d=arguments.length<4?e:arguments[3],h=i.f(l(e),t);if(!h){if(f(p=a(e)))return r(p,t,n,d);h=c(0)}return s(h,"value")?!(!1===h.writable||!f(d))&&(u=i.f(d,t)||c(0),u.value=n,o.f(d,t,u),!0):void 0!==h.set&&(h.set.call(d,n),!0)}var o=n(59),i=n(127),a=n(148),s=n(72),u=n(6),c=n(114),l=n(29),f=n(50);u(u.S,"Reflect",{set:r})},function(e,t,n){n(79)&&"g"!=/./g.flags&&n(59).f(RegExp.prototype,"flags",{ +configurable:!0,get:n(525)})},function(e,t,n){"use strict";var r=n(338);e.exports=n(339)("Set",function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{add:function(e){return r.def(this,e=0===e?0:e,e)}},r)},function(e,t,n){"use strict";var r=n(6),o=n(353)(!1);r(r.P,"String",{codePointAt:function(e){return o(this,e)}})},function(e,t,n){"use strict";var r=n(6),o=n(89),i=n(253),a="endsWith",s=""[a];r(r.P+r.F*n(239)(a),"String",{endsWith:function(e){var t=i(this,e,a),n=arguments.length>1?arguments[1]:void 0,r=o(t.length),u=void 0===n?r:Math.min(o(n),r),c=e+"";return s?s.call(t,c,u):t.slice(u-c.length,u)===c}})},function(e,t,n){var r=n(6),o=n(198),i=String.fromCharCode,a=String.fromCodePoint;r(r.S+r.F*(!!a&&1!=a.length),"String",{fromCodePoint:function(e){for(var t,n=[],r=arguments.length,a=0;r>a;){if(t=+arguments[a++],o(t,1114111)!==t)throw RangeError(t+" is not a valid code point");n.push(t<65536?i(t):i(55296+((t-=65536)>>10),t%1024+56320))}return n.join("")}})},function(e,t,n){"use strict";var r=n(6),o=n(253),i="includes";r(r.P+r.F*n(239)(i),"String",{includes:function(e){return!!~o(this,e,i).indexOf(e,arguments.length>1?arguments[1]:void 0)}})},function(e,t,n){"use strict";var r=n(353)(!0);n(242)(String,"String",function(e){this._t=e+"",this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){var r=n(6),o=n(88),i=n(89);r(r.S,"String",{raw:function(e){for(var t=o(e.raw),n=i(t.length),r=arguments.length,a=[],s=0;n>s;)a.push(t[s++]+""),s1?arguments[1]:void 0,t.length)),r=e+"";return s?s.call(t,r,n):t.slice(n,n+r.length)===r}})},function(e,t,n){"use strict";var r,o,i=n(35),a=n(72),s=n(79),u=n(6),c=n(129),l=n(246).KEY,f=n(58),p=n(252),d=n(150),h=n(152),m=n(39),g=n(356),y=n(539),v=n(528),b=n(524),_=n(345),w=n(29),x=n(88),C=n(151),T=n(114),k=n(196),E=n(532),S=n(127),M=n(59),O=n(128),N=S.f,D=M.f,P=E.f,A=i.Symbol,L=i.JSON,I=L&&L.stringify,j="prototype",R=m("_hidden"),F=m("toPrimitive"),U={}.propertyIsEnumerable,H=p("symbol-registry"),Y=p("symbols"),W=p("op-symbols"),B=Object[j],V="function"==typeof A,q=i.QObject,z=!q||!q[j]||!q[j].findChild,$=s&&f(function(){return 7!=k(D({},"a",{get:function(){return D(this,"a",{value:7}).a}})).a})?function(e,t,n){var r=N(B,t);r&&delete B[t],D(e,t,n),r&&e!==B&&D(B,t,r)}:D,G=function(e){var t=Y[e]=k(A[j]);return t._k=e,t},K=V&&"symbol"==typeof A.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof A},X=function(e,t,n){return e===B&&X(W,t,n),w(e),t=C(t,!0),w(n),a(Y,t)?(n.enumerable?(a(e,R)&&e[R][t]&&(e[R][t]=!1),n=k(n,{enumerable:T(0,!1)})):(a(e,R)||D(e,R,T(1,{})),e[R][t]=!0),$(e,t,n)):D(e,t,n)},Q=function(e,t){w(e) +;for(var n,r=b(t=x(t)),o=0,i=r.length;i>o;)X(e,n=r[o++],t[n]);return e},J=function(e,t){return void 0===t?k(e):Q(k(e),t)},Z=function(e){var t=U.call(this,e=C(e,!0));return!(this===B&&a(Y,e)&&!a(W,e))&&(!(t||!a(this,e)||!a(Y,e)||a(this,R)&&this[R][e])||t)},ee=function(e,t){if(e=x(e),t=C(t,!0),e!==B||!a(Y,t)||a(W,t)){var n=N(e,t);return!n||!a(Y,t)||a(e,R)&&e[R][t]||(n.enumerable=!0),n}},te=function(e){for(var t,n=P(x(e)),r=[],o=0;n.length>o;)a(Y,t=n[o++])||t==R||t==l||r.push(t);return r},ne=function(e){for(var t,n=e===B,r=P(n?W:x(e)),o=[],i=0;r.length>i;)!a(Y,t=r[i++])||n&&!a(B,t)||o.push(Y[t]);return o};for(V||(A=function(){var e,t;if(this instanceof A)throw TypeError("Symbol is not a constructor!");return e=h(arguments.length>0?arguments[0]:void 0),t=function(n){this===B&&t.call(W,n),a(this,R)&&a(this[R],e)&&(this[R][e]=!1),$(this,e,T(1,n))},s&&z&&$(B,e,{configurable:!0,set:t}),G(e)},c(A[j],"toString",function(){return this._k}),S.f=ee,M.f=X,n(247).f=E.f=te,n(149).f=Z,n(197).f=ne,s&&!n(195)&&c(B,"propertyIsEnumerable",Z,!0),g.f=function(e){return G(m(e))}),u(u.G+u.W+u.F*!V,{Symbol:A}),r="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),o=0;r.length>o;)m(r[o++]);for(r=O(m.store),o=0;r.length>o;)y(r[o++]);u(u.S+u.F*!V,"Symbol",{for:function(e){return a(H,e+="")?H[e]:H[e]=A(e)},keyFor:function(e){if(K(e))return v(H,e);throw TypeError(e+" is not a symbol!")},useSetter:function(){z=!0},useSimple:function(){z=!1}}),u(u.S+u.F*!V,"Object",{create:J,defineProperty:X,defineProperties:Q,getOwnPropertyDescriptor:ee,getOwnPropertyNames:te,getOwnPropertySymbols:ne}),L&&u(u.S+u.F*(!V||f(function(){var e=A();return"[null]"!=I([e])||"{}"!=I({a:e})||"{}"!=I(Object(e))})),"JSON",{stringify:function(e){if(void 0!==e&&!K(e)){for(var t,n,r=[e],o=1;arguments.length>o;)r.push(arguments[o++]);return t=r[1],"function"==typeof t&&(n=t),!n&&_(t)||(t=function(e,t){if(n&&(t=n.call(this,e,t)),!K(t))return t}),r[1]=t,I.apply(L,r)}}}),A[j][F]||n(113)(A[j],F,A[j].valueOf),d(A,"Symbol"),d(Math,"Math",!0),d(i.JSON,"JSON",!0)},function(e,t,n){"use strict";var r=n(6),o=n(335)(!0);r(r.P,"Array",{includes:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),n(125)("includes")},function(e,t,n){var r=n(6),o=n(352)(!0);r(r.S,"Object",{entries:function(e){return o(e)}})},function(e,t,n){var r=n(6),o=n(352)(!1);r(r.S,"Object",{values:function(e){return o(e)}})},function(e,t,n){"use strict";function r(e){return e}function o(e,t,n){function o(e,t){var n=v.hasOwnProperty(t)?v[t]:null;C.hasOwnProperty(t)&&u("OVERRIDE_BASE"===n,"ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.",t),e&&u("DEFINE_MANY"===n||"DEFINE_MANY_MERGED"===n,"ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",t)}function c(e,n){var r,a,s,c,l,f,h,m,g;if(n){ +u("function"!=typeof n,"ReactClass: You're attempting to use a component class or function as a mixin. Instead, just use a regular object."),u(!t(n),"ReactClass: You're attempting to use a component as a mixin. Instead, just use a regular object."),r=e.prototype,a=r.__reactAutoBindPairs,n.hasOwnProperty(i)&&_.mixins(e,n.mixins);for(s in n)n.hasOwnProperty(s)&&s!==i&&(c=n[s],l=r.hasOwnProperty(s),o(l,s),_.hasOwnProperty(s)?_[s](e,c):(f=v.hasOwnProperty(s),h="function"==typeof c,m=h&&!f&&!l&&!1!==n.autobind,m?(a.push(s,c),r[s]=c):l?(g=v[s],u(f&&("DEFINE_MANY_MERGED"===g||"DEFINE_MANY"===g),"ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.",g,s),"DEFINE_MANY_MERGED"===g?r[s]=p(r[s],c):"DEFINE_MANY"===g&&(r[s]=d(r[s],c))):r[s]=c))}}function l(e,t){var n,r,o,i;if(t)for(n in t)if(r=t[n],t.hasOwnProperty(n)){if(o=n in _,u(!o,'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.',n),n in e)return i=b.hasOwnProperty(n)?b[n]:null,u("DEFINE_MANY_MERGED"===i,"ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",n),void(e[n]=p(e[n],r));e[n]=r}}function f(e,t){u(e&&t&&"object"==typeof e&&"object"==typeof t,"mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.");for(var n in t)t.hasOwnProperty(n)&&(u(void 0===e[n],"mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.",n),e[n]=t[n]);return e}function p(e,t){return function(){var n,r=e.apply(this,arguments),o=t.apply(this,arguments);return null==r?o:null==o?r:(n={},f(n,r),f(n,o),n)}}function d(e,t){return function(){e.apply(this,arguments),t.apply(this,arguments)}}function h(e,t){var n=t.bind(e);return n}function m(e){var t,n,r,o=e.__reactAutoBindPairs;for(t=0;t":"<"+e+">",s[e]=!a.firstChild),s[e]?p[e]:null}var o=n(60),i=n(17),a=o.canUseDOM?document.createElement("div"):null,s={},u=[1,'"],c=[1,"
","
"],l=[3,"","
"],f=[1,'',""],p={"*":[1,"?
","
"],area:[1,"",""],col:[2,"","
"],legend:[1,"
","
"],param:[1,"",""],tr:[2,"","
"],optgroup:u,option:u,caption:c,colgroup:c,tbody:c,tfoot:c,thead:c,td:l,th:l};["circle","clipPath","defs","ellipse","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","text","tspan"].forEach(function(e){p[e]=f,s[e]=!0}),e.exports=r},function(e,t){"use strict";function n(e){return e.Window&&e instanceof e.Window?{x:e.pageXOffset||e.document.documentElement.scrollLeft,y:e.pageYOffset||e.document.documentElement.scrollTop}:{x:e.scrollLeft,y:e.scrollTop}}e.exports=n},function(e,t){"use strict";function n(e){return e.replace(r,"-$1").toLowerCase()}var r=/([A-Z])/g;e.exports=n},function(e,t,n){"use strict";function r(e){return o(e).replace(i,"-ms-")}var o=n(681),i=/^ms-/;e.exports=r},function(e,t){"use strict";function n(e){var t=e?e.ownerDocument||e:document,n=t.defaultView||window;return!(!e||!("function"==typeof n.Node?e instanceof n.Node:"object"==typeof e&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName))}e.exports=n},function(e,t,n){"use strict";function r(e){return o(e)&&3==e.nodeType}var o=n(683);e.exports=r},function(e,t){"use strict";function n(e){var t={};return function(n){return t.hasOwnProperty(n)||(t[n]=e.call(this,n)),t[n]}}e.exports=n},,,,,,,,,,,,,,,,,,,,,,,function(e,t){"use strict";var n=function(){function e(e,t){this.mouseFlag=!1,this.accuracy=2,this.value=1,this.colorInput=e,this.$el=$('
'),t&&this.$el.hide(),this.$gradient=$('
').appendTo(this.$el),this.$roller=$('').appendTo(this.$gradient)}return e.prototype.calculateRollerPosition=function(e){var t=e.pageX,n=this.$gradient.offset().left,r=t-n,o=this.$gradient.width();return r>o?100:r<0?0:~~(r/o*100)},e.prototype.toRgb=function(e){var t;return~e.indexOf("#")?e:(t=e.match(/[0-9.]+/g),t?"rgb("+t.slice(0,3).join(", ")+")":"rgb(127, 127, 127)") +},e.prototype.setValue=function(e){if(1===e)return void(this.value=e);this.value=e.toFixed(this.accuracy)},e.prototype.updateRoller=function(){this.$roller.css("left",100-100*this.value+"%")},e.prototype.rollerMoveHandler=function(e){if(this.mouseFlag){var t=this.calculateRollerPosition(e);this.setValue((100-t)/100),$(this).trigger("change",[this.val()]),this.$roller.css("left",t+"%")}e.preventDefault()},e.prototype.mouseupHandler=function(e){this.mouseFlag&&(this.mouseFlag=!1,$(this).trigger("afterChange",[this.val()]))},e.prototype.initEvents=function(){var e=function(e){return this.rollerMoveHandler(e)}.bind(this),t=function(n){return $(document).off("mousemove mouseup",e),$(document).off("mouseup",t),this.mouseupHandler(n)}.bind(this);this.$el.on("mousedown",function(n){this.mouseFlag=!0,$(document).on("mousemove mouseup",e),$(document).on("mouseup",t),n.preventDefault()}.bind(this)),this.colorInput.on("change",function(e){this.updateColor()}.bind(this))},e.prototype.removeEvents=function(){},e.prototype.updateColor=function(){var e=this.colorInput.val()||"black",t=this.toRgb(e),n=["-moz-linear-gradient(left, %COLOR 0%, transparent 100%)","-webkit-gradient(linear, left top, right top, color-stop(0%,%COLOR), color-stop(100%,transparent))","-webkit-linear-gradient(left, %COLOR 0%,transparent 100%)","-o-linear-gradient(left, %COLOR 0%,transparent 100%)","linear-gradient(to right, %COLOR 0%,transparent 100%)"];$.browser.msie?this.$gradient.css("filter","progid:DXImageTransform.Microsoft.gradient(startColorstr='"+t+"', EndColor=0, GradientType=1)"):n.forEach(function(e){this.$gradient.css("background-image",e.replace(/%COLOR/,t))}.bind(this))},e.prototype.val=function(e){return void 0!==e&&(this.setValue(+e),this.updateRoller()),this.value},function(t,n){return new e(t,n)}}();e.exports=n},,,,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){var t,n;if(e&&e.__esModule)return e;if(t={},null!=e)for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e,t){var n,r,o,i=Object.getOwnPropertyNames(t);for(n=0;n-1?n[1].toLowerCase():n[0]))},e.prototype.formatLanguageCode=function(e){var t,n;return"string"==typeof e&&e.indexOf("-")>-1?(t=["hans","hant","latn","cyrl","cans","mong","arab"],n=e.split("-"),this.options.lowerCaseLng?n=n.map(function(e){return e.toLowerCase()}):2===n.length?(n[0]=n[0].toLowerCase(),n[1]=n[1].toUpperCase(),t.indexOf(n[1].toLowerCase())>-1&&(n[1]=i(n[1].toLowerCase()))):3===n.length&&(n[0]=n[0].toLowerCase(),2===n[1].length&&(n[1]=n[1].toUpperCase()),"sgn"!==n[0]&&2===n[2].length&&(n[2]=n[2].toUpperCase()),t.indexOf(n[1].toLowerCase())>-1&&(n[1]=i(n[1].toLowerCase())),t.indexOf(n[2].toLowerCase())>-1&&(n[2]=i(n[2].toLowerCase()))),n.join("-")):this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e},e.prototype.isWhitelisted=function(e,t){return("languageOnly"===this.options.load||this.options.nonExplicitWhitelist&&!t)&&(e=this.getLanguagePartFromCode(e)),!this.whitelist||!this.whitelist.length||this.whitelist.indexOf(e)>-1},e.prototype.toResolveHierarchy=function(e,t){var n,r,o=this;return t=t||this.options.fallbackLng||[],"string"==typeof t&&(t=[t]),n=[],r=function(e){var t=!(arguments.length<=1||void 0===arguments[1])&&arguments[1];o.isWhitelisted(e,t)?n.push(e):o.logger.warn("rejecting non-whitelisted language code: "+e)}, +"string"==typeof e&&e.indexOf("-")>-1?("languageOnly"!==this.options.load&&r(this.formatLanguageCode(e),!0),"currentOnly"!==this.options.load&&r(this.getLanguagePartFromCode(e))):"string"==typeof e&&r(this.formatLanguageCode(e)),t.forEach(function(e){n.indexOf(e)<0&&r(o.formatLanguageCode(e))}),n},e}(),t.default=u},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(){var e={};return c.forEach(function(t){t.lngs.forEach(function(n){return e[n]={numbers:t.nr,plurals:l[t.fc]}})}),e}var a,s,u,c,l,f;Object.defineProperty(t,"__esModule",{value:!0}),a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},s=n(100),u=r(s),c=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","tg","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","es_ar","et","eu","fi","fo","fur","fy","gl","gu","ha","he","hi","hu","hy","ia","it","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt","pt_br","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","id","ja","jbo","ka","kk","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21}],l={1:function(e){return+(e>1)},2:function(e){return+(1!=e)},3:function(e){return 0},4:function(e){return+(e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},5:function(e){return+(0===e?0:1==e?1:2==e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5)},6:function(e){return+(1==e?0:e>=2&&e<=4?1:2)},7:function(e){return+(1==e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},8:function(e){return+(1==e?0:2==e?1:8!=e&&11!=e?2:3)},9:function(e){return+(e>=2)},10:function(e){return+(1==e?0:2==e?1:e<7?2:e<11?3:4)},11:function(e){return+(1==e||11==e?0:2==e||12==e?1:e>2&&e<20?2:3)},12:function(e){return+(e%10!=1||e%100==11)},13:function(e){return+(0!==e)},14:function(e){return+(1==e?0:2==e?1:3==e?2:3)},15:function(e){return+(e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2)},16:function(e){return+(e%10==1&&e%100!=11?0:0!==e?1:2)},17:function(e){return+(1==e||e%10==1?0:1)},18:function(e){return+(0==e?0:1==e?1:2)}, +19:function(e){return+(1==e?0:0===e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3)},20:function(e){return+(1==e?0:0===e||e%100>0&&e%100<20?1:2)},21:function(e){return+(e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0)}},f=function(){function e(t){var n=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];o(this,e),this.languageUtils=t,this.options=n,this.logger=u.default.create("pluralResolver"),this.rules=i()}return e.prototype.addRule=function(e,t){this.rules[e]=t},e.prototype.getRule=function(e){return this.rules[this.languageUtils.getLanguagePartFromCode(e)]},e.prototype.needsPlural=function(e){var t=this.getRule(e);return!(t&&t.numbers.length<=1)},e.prototype.getSuffix=function(e,t){var n,r=this,o=this.getRule(e);return o?(n=function(){var e,n,i;return 1===o.numbers.length?{v:""}:(e=o.noAbs?o.plurals(t):o.plurals(Math.abs(t)),n=o.numbers[e],2===o.numbers.length&&1===o.numbers[0]&&(2===n?n="plural":1===n&&(n="")),i=function(){return r.options.prepend&&""+n?r.options.prepend+""+n:""+n},"v1"===r.options.compatibilityJSON?1===n?{v:""}:"number"==typeof n?{v:"_plural_"+n}:{v:i()}:"v2"===r.options.compatibilityJSON||2===o.numbers.length&&1===o.numbers[0]?{v:i()}:2===o.numbers.length&&1===o.numbers[0]?{v:i()}:{v:r.options.prepend&&""+e?r.options.prepend+""+e:""+e})}(),"object"===(void 0===n?"undefined":a(n))?n.v:void 0):(this.logger.warn("no plural rule found for: "+e),"")},e}(),t.default=f},function(e,t,n){"use strict";function r(e){var t,n;if(e&&e.__esModule)return e;if(t={},null!=e)for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function o(e){return e&&e.__esModule?e:{default:e}}function i(e,t){var n,r,o,i=Object.getOwnPropertyNames(t);for(n=0;n-1&&this.options.ns.splice(t,1)},t.prototype.getResource=function(e,t,n){var r,o=arguments.length<=3||void 0===arguments[3]?{}:arguments[3],i=o.keySeparator||this.options.keySeparator;return void 0===i&&(i="."),r=[e,t],n&&"string"!=typeof n&&(r=r.concat(n)),n&&"string"==typeof n&&(r=r.concat(i?n.split(i):n)),e.indexOf(".")>-1&&(r=e.split(".")),d.getPath(this.data,r)},t.prototype.addResource=function(e,t,n,r){var o,i=arguments.length<=4||void 0===arguments[4]?{silent:!1}:arguments[4],a=this.options.keySeparator;void 0===a&&(a="."),o=[e,t],n&&(o=o.concat(a?n.split(a):n)),e.indexOf(".")>-1&&(o=e.split("."),r=t,t=o[1]),this.addNamespaces(t),d.setPath(this.data,o,r),i.silent||this.emit("added",e,t,n,r)},t.prototype.addResources=function(e,t,n){for(var r in n)"string"==typeof n[r]&&this.addResource(e,t,r,n[r],{silent:!0});this.emit("added",e,t,n)},t.prototype.addResourceBundle=function(e,t,n,r,o){var i,a=[e,t];e.indexOf(".")>-1&&(a=e.split("."),r=n,n=t,t=a[1]),this.addNamespaces(t),i=d.getPath(this.data,a)||{},r?d.deepExtend(i,n,o):i=c({},i,n),d.setPath(this.data,a,i),this.emit("added",e,t,n)},t.prototype.removeResourceBundle=function(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)},t.prototype.hasResourceBundle=function(e,t){return void 0!==this.getResource(e,t)},t.prototype.getResourceBundle=function(e,t){return t||(t=this.options.defaultNS),"v1"===this.options.compatibilityAPI?c({},this.getResource(e,t)):this.getResource(e,t)},t.prototype.toJSON=function(){return this.data},t}(f.default),t.default=h},function(e,t,n){"use strict";function r(e){var t,n;if(e&&e.__esModule)return e;if(t={},null!=e)for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function o(e){return e&&e.__esModule?e:{default:e}}function i(e,t){var n,r,o,i=Object.getOwnPropertyNames(t);for(n=0;n-1&&(r=e.split(o),n=r[0],e=r[1]),"string"==typeof n&&(n=[n]),{key:e,namespaces:n}},t.prototype.translate=function(e){var t,n,r,o,i,a,s,u,f,p,d,h,m,g,y,b,_=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if("object"!==(void 0===_?"undefined":l(_))?_=this.options.overloadTranslationOptionHandler(arguments):"v1"===this.options.compatibilityAPI&&(_=v.convertTOptions(_)),void 0===e||null===e||""===e)return"";if("number"==typeof e&&(e+=""),"string"==typeof e&&(e=[e]),(t=_.lng||this.language)&&"cimode"===t.toLowerCase())return e[e.length-1];if(n=_.keySeparator||this.options.keySeparator||".",r=this.extractFromKey(e[e.length-1],_),o=r.key,i=r.namespaces,a=i[i.length-1],s=this.resolve(e,_),u=Object.prototype.toString.apply(s),f=["[object Number]","[object Function]","[object RegExp]"],p=void 0!==_.joinArrays?_.joinArrays:this.options.joinArrays,s&&"string"!=typeof s&&f.indexOf(u)<0&&(!p||"[object Array]"!==u)){if(!_.returnObjects&&!this.options.returnObjects)return this.logger.warn("accessing an object - but returnObjects options is not enabled!"),this.options.returnedObjectHandler?this.options.returnedObjectHandler(o,s,_):"key '"+o+" ("+this.language+")' returned an object instead of string.";d="[object Array]"===u?[]:{};for(h in s)d[h]=this.translate(""+o+n+h,c({joinArrays:!1,ns:i},_));s=d}else if(p&&"[object Array]"===u)(s=s.join(p))&&(s=this.extendTranslation(s,o,_));else{if(m=!1,g=!1,this.isValidLookup(s)||void 0===_.defaultValue||(m=!0,s=_.defaultValue),this.isValidLookup(s)||(g=!0,s=o),g||m){if(this.logger.log("missingKey",t,a,o,s),y=[],"fallback"===this.options.saveMissingTo&&this.options.fallbackLng&&this.options.fallbackLng[0])for(b=0;b1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r=0?"rtl":"ltr":"rtl"},t.prototype.createInstance=function(){return new t(arguments.length<=0||void 0===arguments[0]?{}:arguments[0],arguments[1])},t.prototype.cloneInstance=function(){var e=this,n=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=arguments[1],o=new t(l({},n,this.options,{isClone:!0}),r);return["store","translator","services","language"].forEach(function(t){o[t]=e[t]}),o},t}(h.default),t.default=new L},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var o,i;Object.defineProperty(t,"__esModule",{value:!0}),o=n(720),i=r(o),t.default=i.default},function(e,t,n){var r,o,i;!function(a){o=[n(22)],r=a,void 0!==(i="function"==typeof r?r.apply(t,o):r)&&(e.exports=i)}(function(e){function t(e){return s.raw?e:encodeURIComponent(e)}function n(e){return s.raw?e:decodeURIComponent(e)}function r(e){return t(s.json?JSON.stringify(e):e+"")}function o(e){0===e.indexOf('"')&&(e=e.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return e=decodeURIComponent(e.replace(a," ")),s.json?JSON.parse(e):e}catch(e){}}function i(t,n){var r=s.raw?t:o(t);return e.isFunction(n)?n(r):r}var a=/\+/g,s=e.cookie=function(o,a,u){var c,l,f,p,d,h,m,g,y;if(void 0!==a&&!e.isFunction(a))return u=e.extend({},s.defaults,u),"number"==typeof u.expires&&(c=u.expires,l=u.expires=new Date,l.setTime(+l+864e5*c)),document.cookie=t(o)+"="+r(a)+(u.expires?"; expires="+u.expires.toUTCString():"")+(u.path?"; path="+u.path:"")+(u.domain?"; domain="+u.domain:"")+(u.secure?"; secure":"");for(f=o?void 0:{},p=document.cookie?document.cookie.split("; "):[],d=0,h=p.length;d"'`=\/]/g,function(e){return b[e]})}function u(t,n){function o(){if(d&&!h)for(;p.length;)delete u[p.pop()];else p=[];d=!1,h=!1}function i(e){if("string"==typeof e&&(e=e.split(w,2)),!g(e)||2!==e.length)throw Error("Invalid tags: "+e);m=RegExp(r(e[0])+"\\s*"),y=RegExp("\\s*"+r(e[1])),v=RegExp("\\s*"+r("}"+e[1]))}var s,u,p,d,h,m,y,v,b,k,E,S,M,O,N,D,P;if(!t)return[];for(s=[],u=[],p=[],d=!1,h=!1,i(n||e.tags),b=new f(t);!b.eos();){if(k=b.pos,S=b.scanUntil(m))for(D=0,P=S.length;D0?s[s.length-1][4]:i;break;default:a.push(t)}return i}function f(e){this.string=e,this.tail=e,this.pos=0}function p(e,t){this.view=e,this.cache={".":this.view},this.parent=t}function d(){this.cache={}}var h,m=Object.prototype.toString,g=Array.isArray||function(e){return"[object Array]"===m.call(e)},y=RegExp.prototype.test,v=/\S/,b={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="},_=/\s*/,w=/\s+/,x=/\s*=/,C=/\s*\}/,T=/#|\^|\/|>|\{|&|=|!/;f.prototype.eos=function(){return""===this.tail},f.prototype.scan=function(e){var t,n=this.tail.match(e);return n&&0===n.index?(t=n[0], +this.tail=this.tail.substring(t.length),this.pos+=t.length,t):""},f.prototype.scanUntil=function(e){var t,n=this.tail.search(e);switch(n){case-1:t=this.tail,this.tail="";break;case 0:t="";break;default:t=this.tail.substring(0,n),this.tail=this.tail.substring(n)}return this.pos+=t.length,t},p.prototype.push=function(e){return new p(e,this)},p.prototype.lookup=function(e){var n,r,i,a,s,u=this.cache;if(u.hasOwnProperty(e))n=u[e];else{for(r=this,s=!1;r;){if(e.indexOf(".")>0)for(n=r.view,i=e.split("."),a=0;null!=n&&a"===i?a=this.renderPartial(o,t,n,r):"&"===i?a=this.unescapedValue(o,t):"name"===i?a=this.escapedValue(o,t):"text"===i&&(a=this.rawValue(o)),void 0!==a&&(c+=a);return c},d.prototype.renderSection=function(e,n,r,o){function i(e){return u.render(e,n,r)}var a,s,u=this,c="",l=n.lookup(e[1]);if(l){if(g(l))for(a=0,s=l.length;a","/":"?","\\":"|"}},e.each(["keydown","keyup","keypress"],function(){e.event.special[this]={add:t}})}(jQuery)},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t){"use strict";!function(){var e,t,n,r,o,i;window.parent!==window&&window.CanvasRenderingContext2D&&window.TextMetrics&&(t=window.CanvasRenderingContext2D.prototype)&&t.hasOwnProperty("font")&&t.hasOwnProperty("mozTextStyle")&&"function"==typeof t.__lookupSetter__&&(n=t.__lookupSetter__("font"))&&(t.__defineSetter__("font",function(e){try{return n.call(this,e)}catch(e){if("NS_ERROR_FAILURE"!==e.name)throw e}}),r=t.measureText,e=function(){this.width=0,this.isFake=!0,this.__proto__=window.TextMetrics.prototype},t.measureText=function(t){try{return r.apply(this,arguments)}catch(t){if("NS_ERROR_FAILURE"!==t.name)throw t;return new e}},o=t.fillText,t.fillText=function(e,t,n,r){try{o.apply(this,arguments)}catch(e){if("NS_ERROR_FAILURE"!==e.name)throw e}},i=t.strokeText,t.strokeText=function(e,t,n,r){try{i.apply(this,arguments)}catch(e){if("NS_ERROR_FAILURE"!==e.name)throw e}})}()},function(e,t){!function(){var e,t,n,r,o=document.createElement("a").classList;o&&(e=Object.getPrototypeOf(o),t=e.add,n=e.remove,r=e.toggle,o.add("a","b"),o.toggle("a",!0),o.contains("b")||(e.add=function(e){for(var n=0;nn)&&(r.top%1n)||(o=Math.round(parseFloat(l.css("margin-left")))||0,i=Math.round(parseFloat(l.css("margin-top")))||0,l.css({"margin-left":o+"px","margin-top":i+"px"}),a=c.getBoundingClientRect(),s=-a.left%1,s>0&&(s-=1),s<-.5&&(s+=1),u=-a.top%1,u>0&&(u-=1),u<-.5&&(u+=1),l.css({"margin-left":o+s+"px","margin-top":i+u+"px"})))}),this}}(jQuery)},function(e,t){"use strict";!function(e,t){function n(){this._state=[],this._defaults={classHolder:"sbHolder",classHolderDisabled:"sbHolderDisabled",classHolderOpen:"sbHolderOpen",classSelector:"sbSelector",classOptions:"sbOptions",classGroup:"sbGroup",classSub:"sbSub",classDisabled:"sbDisabled",classToggleOpen:"sbToggleOpen",classToggle:"sbToggle",classSeparator:"sbSeparator",useCustomPrependWithSelector:"",customPrependSelectorClass:"",speed:200,slidesUp:!1,effect:"slide",onChange:null,beforeOpen:null,onOpen:null,onClose:null}}function r(t,n,r,o){function i(){n.removeClass(t.settings.customPrependSelectorClass),t._lastSelectorPrepend&&(t._lastSelectorPrepend.remove(),delete t._lastSelectorPrepend),r.data("custom-option-prepend")&&(t.settings.customPrependSelectorClass&&n.addClass(t.settings.customPrependSelectorClass),t._lastSelectorPrepend=e(r.data("custom-option-prepend")).clone(),n[t.settings.useCustomPrependWithSelector](t._lastSelectorPrepend))}t.settings.useCustomPrependWithSelector&&(o?t._onAttachCallback=i:i())}var o="selectbox",i=!1,a=!0 +;e.extend(n.prototype,{_refreshSelectbox:function(e,t){if(!e)return i;var n=this._getInst(e);return null==n?i:(this._fillList(e,n,t),a)},_isOpenSelectbox:function(e){return e?this._getInst(e).isOpen:i},_isDisabledSelectbox:function(e){return e?this._getInst(e).isDisabled:i},_attachSelectbox:function(t,n){function r(){var t,n=this.attr("id").split("_")[1];for(t in u._state)t!==n&&u._state.hasOwnProperty(t)&&e(":input[sb='"+t+"']")[0]&&u._closeSelectbox(e(":input[sb='"+t+"']")[0])}function a(n){s.children().each(function(r){var o,i=e(this);if(i.is(":selected")){if(38==n&&r>0)return o=e(s.children()[r-1]),u._changeSelectbox(t,o.val(),o.text()),!1;if(40==n&&r",{id:"sbHolder_"+c.uid,class:c.settings.classHolder}),m=s.data("selectbox-css"),m&&l.css(m),f=e("",{id:"sbSelector_"+c.uid,href:"#",class:c.settings.classSelector,click:function(n){n.preventDefault(),n.stopPropagation(),r.apply(e(this),[]);var o=e(this).attr("id").split("_")[1];u._state[o]?u._closeSelectbox(t):(u._openSelectbox(t),p.focus())},keyup:function(e){a(e.keyCode)}}),p=e("",{id:"sbToggle_"+c.uid,href:"#",class:c.settings.classToggle,click:function(n){n.preventDefault(),n.stopPropagation(),r.apply(e(this),[]);var o=e(this).attr("id").split("_")[1];u._state[o]?u._closeSelectbox(t):(u._openSelectbox(t),p.focus())},keyup:function(e){a(e.keyCode)}}),e('
').appendTo(p),p.appendTo(l),d=e("
").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});return t.wrap(r),r=t.parent(),"static"==t.css("position")?(r.css({position:"relative"}),t.css({position:"relative"})):(e.extend(n,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,r){n[r]=t.css(r),isNaN(parseInt(n[r],10))&&(n[r]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),r.css(n).show()},removeWrapper:function(e){return e.parent().is(".ui-effects-wrapper")?e.parent().replaceWith(e):e},setTransition:function(t,n,r,o){return o=o||{},e.each(n,function(e,n){unit=t.cssUnit(n),unit[0]>0&&(o[n]=unit[0]*r+unit[1])}),o}}),e.fn.extend({effect:function(t,n,r,o){ +var i=s.apply(this,arguments),a={options:i[1],duration:i[2],callback:i[3]},u=a.options.mode,c=e.effects[t];return e.fx.off||!c?u?this[u](a.duration,a.callback):this.each(function(){a.callback&&a.callback.call(this)}):c.call(this,a)},_show:e.fn.show,show:function(e){if(u(e))return this._show.apply(this,arguments);var t=s.apply(this,arguments);return t[1].mode="show",this.effect.apply(this,t)},_hide:e.fn.hide,hide:function(e){if(u(e))return this._hide.apply(this,arguments);var t=s.apply(this,arguments);return t[1].mode="hide",this.effect.apply(this,t)},__toggle:e.fn.toggle,toggle:function(t){if(u(t)||"boolean"==typeof t||e.isFunction(t))return this.__toggle.apply(this,arguments);var n=s.apply(this,arguments);return n[1].mode="toggle",this.effect.apply(this,n)},cssUnit:function(t){var n=this.css(t),r=[];return e.each(["em","px","%","pt"],function(e,t){n.indexOf(t)>0&&(r=[parseFloat(n),t])}),r}}),e.easing.jswing=e.easing.swing,e.extend(e.easing,{def:"easeOutQuad",swing:function(t,n,r,o,i){return e.easing[e.easing.def](t,n,r,o,i)},easeInQuad:function(e,t,n,r,o){return r*(t/=o)*t+n},easeOutQuad:function(e,t,n,r,o){return-r*(t/=o)*(t-2)+n},easeInOutQuad:function(e,t,n,r,o){return(t/=o/2)<1?r/2*t*t+n:-r/2*(--t*(t-2)-1)+n},easeInCubic:function(e,t,n,r,o){return r*(t/=o)*t*t+n},easeOutCubic:function(e,t,n,r,o){return r*((t=t/o-1)*t*t+1)+n},easeInOutCubic:function(e,t,n,r,o){return(t/=o/2)<1?r/2*t*t*t+n:r/2*((t-=2)*t*t+2)+n},easeInQuart:function(e,t,n,r,o){return r*(t/=o)*t*t*t+n},easeOutQuart:function(e,t,n,r,o){return-r*((t=t/o-1)*t*t*t-1)+n},easeInOutQuart:function(e,t,n,r,o){return(t/=o/2)<1?r/2*t*t*t*t+n:-r/2*((t-=2)*t*t*t-2)+n},easeInQuint:function(e,t,n,r,o){return r*(t/=o)*t*t*t*t+n},easeOutQuint:function(e,t,n,r,o){return r*((t=t/o-1)*t*t*t*t+1)+n},easeInOutQuint:function(e,t,n,r,o){return(t/=o/2)<1?r/2*t*t*t*t*t+n:r/2*((t-=2)*t*t*t*t+2)+n},easeInSine:function(e,t,n,r,o){return-r*Math.cos(t/o*(Math.PI/2))+r+n},easeOutSine:function(e,t,n,r,o){return r*Math.sin(t/o*(Math.PI/2))+n},easeInOutSine:function(e,t,n,r,o){return-r/2*(Math.cos(Math.PI*t/o)-1)+n},easeInExpo:function(e,t,n,r,o){return 0==t?n:r*Math.pow(2,10*(t/o-1))+n},easeOutExpo:function(e,t,n,r,o){return t==o?n+r:r*(1-Math.pow(2,-10*t/o))+n},easeInOutExpo:function(e,t,n,r,o){return 0==t?n:t==o?n+r:(t/=o/2)<1?r/2*Math.pow(2,10*(t-1))+n:r/2*(2-Math.pow(2,-10*--t))+n},easeInCirc:function(e,t,n,r,o){return-r*(Math.sqrt(1-(t/=o)*t)-1)+n},easeOutCirc:function(e,t,n,r,o){return r*Math.sqrt(1-(t=t/o-1)*t)+n},easeInOutCirc:function(e,t,n,r,o){return(t/=o/2)<1?-r/2*(Math.sqrt(1-t*t)-1)+n:r/2*(Math.sqrt(1-(t-=2)*t)+1)+n},easeInElastic:function(e,t,n,r,o){var i=0,a=r;return 0==t?n:1==(t/=o)?n+r:(i||(i=.3*o),a=9||t.button?this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted):this._mouseUp(t)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate), +this._mouseStarted&&(this._mouseStarted=!1,t.target==this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(e){return this.mouseDelayMet},_mouseStart:function(e){},_mouseDrag:function(e){},_mouseStop:function(e){},_mouseCapture:function(e){return!0}})}(jQuery)},function(e,t){!function(e,t){e.ui=e.ui||{};var n=/left|center|right/,r=/top|center|bottom/,o="center",i=e.fn.position,a=e.fn.offset;e.fn.position=function(t){if(!t||!t.of)return i.apply(this,arguments);t=e.extend({},t);var a,s,u,c=e(t.of),l=c[0],f=(t.collision||"flip").split(" "),p=t.offset?t.offset.split(" "):[0,0];return 9===l.nodeType?(a=c.width(),s=c.height(),u={top:0,left:0}):l.setTimeout?(a=c.width(),s=c.height(),u={top:c.scrollTop(),left:c.scrollLeft()}):l.preventDefault?(t.at="left top",a=s=0,u={top:t.of.pageY,left:t.of.pageX}):(a=c.outerWidth(),s=c.outerHeight(),u=c.offset()),e.each(["my","at"],function(){var e=(t[this]||"").split(" ");1===e.length&&(e=n.test(e[0])?e.concat([o]):r.test(e[0])?[o].concat(e):[o,o]),e[0]=n.test(e[0])?e[0]:o,e[1]=r.test(e[1])?e[1]:o,t[this]=e}),1===f.length&&(f[1]=f[0]),p[0]=parseInt(p[0],10)||0,1===p.length&&(p[1]=p[0]),p[1]=parseInt(p[1],10)||0,"right"===t.at[0]?u.left+=a:t.at[0]===o&&(u.left+=a/2),"bottom"===t.at[1]?u.top+=s:t.at[1]===o&&(u.top+=s/2),u.left+=p[0],u.top+=p[1],this.each(function(){var n,r=e(this),i=r.outerWidth(),c=r.outerHeight(),l=parseInt(e.curCSS(this,"marginLeft",!0))||0,d=parseInt(e.curCSS(this,"marginTop",!0))||0,h=i+l+(parseInt(e.curCSS(this,"marginRight",!0))||0),m=c+d+(parseInt(e.curCSS(this,"marginBottom",!0))||0),g=e.extend({},u);"right"===t.my[0]?g.left-=i:t.my[0]===o&&(g.left-=i/2),"bottom"===t.my[1]?g.top-=c:t.my[1]===o&&(g.top-=c/2),g.left=Math.round(g.left),g.top=Math.round(g.top),n={left:g.left-l,top:g.top-d},e.each(["left","top"],function(r,o){e.ui.position[f[r]]&&e.ui.position[f[r]][o](g,{targetWidth:a,targetHeight:s,elemWidth:i,elemHeight:c,collisionPosition:n,collisionWidth:h,collisionHeight:m,offset:p,my:t.my,at:t.at})}),e.fn.bgiframe&&r.bgiframe(),r.offset(e.extend(g,{using:t.using}))})},e.ui.position={fit:{left:function(t,n){var r=e(window),o=n.collisionPosition.left+n.collisionWidth-r.width()-r.scrollLeft();t.left=o>0?t.left-o:Math.max(t.left-n.collisionPosition.left,t.left)},top:function(t,n){var r=e(window),o=n.collisionPosition.top+n.collisionHeight-r.height()-r.scrollTop();t.top=o>0?t.top-o:Math.max(t.top-n.collisionPosition.top,t.top)}},flip:{left:function(t,n){if(n.at[0]!==o){var r=e(window),i=n.collisionPosition.left+n.collisionWidth-r.width()-r.scrollLeft(),a="left"===n.my[0]?-n.elemWidth:"right"===n.my[0]?n.elemWidth:0,s="left"===n.at[0]?n.targetWidth:-n.targetWidth,u=-2*n.offset[0];t.left+=n.collisionPosition.left<0?a+s+u:i>0?a+s+u:0}},top:function(t,n){if(n.at[1]!==o){ +var r=e(window),i=n.collisionPosition.top+n.collisionHeight-r.height()-r.scrollTop(),a="top"===n.my[1]?-n.elemHeight:"bottom"===n.my[1]?n.elemHeight:0,s="top"===n.at[1]?n.targetHeight:-n.targetHeight,u=-2*n.offset[1];t.top+=n.collisionPosition.top<0?a+s+u:i>0?a+s+u:0}}}},e.offset.setOffset||(e.offset.setOffset=function(t,n){/static/.test(e.curCSS(t,"position"))&&(t.style.position="relative");var r=e(t),o=r.offset(),i=parseInt(e.curCSS(t,"top",!0),10)||0,a=parseInt(e.curCSS(t,"left",!0),10)||0,s={top:n.top-o.top+i,left:n.left-o.left+a};"using"in n?n.using.call(t,s):r.css(s)},e.fn.offset=function(t){var n=this[0];return n&&n.ownerDocument?t?this.each(function(){e.offset.setOffset(this,t)}):a.call(this):null})}(jQuery)},,,,function(e,t){!function(e,t){var n,r;e.cleanData?(n=e.cleanData,e.cleanData=function(t){for(var r,o=0;null!=(r=t[o]);o++)e(r).triggerHandler("remove");n(t)}):(r=e.fn.remove,e.fn.remove=function(t,n){return this.each(function(){return n||t&&!e.filter(t,[this]).length||e("*",this).add([this]).each(function(){e(this).triggerHandler("remove")}),r.call(e(this),t,n)})}),e.widget=function(t,n,r){var o,i,a=t.split(".")[0];t=t.split(".")[1],o=a+"-"+t,r||(r=n,n=e.Widget),e.expr[":"][o]=function(n){return!!e.data(n,t)},e[a]=e[a]||{},e[a][t]=function(e,t){arguments.length&&this._createWidget(e,t)},i=new n,i.options=e.extend(!0,{},i.options),e[a][t].prototype=e.extend(!0,i,{namespace:a,widgetName:t,widgetEventPrefix:e[a][t].prototype.widgetEventPrefix||t,widgetBaseClass:o},r),e.widget.bridge(t,e[a][t])},e.widget.bridge=function(n,r){e.fn[n]=function(o){var i="string"==typeof o,a=Array.prototype.slice.call(arguments,1),s=this;return o=!i&&a.length?e.extend.apply(null,[!0,o].concat(a)):o,i&&"_"===o.charAt(0)?s:(i?this.each(function(){var r=e.data(this,n),i=r&&e.isFunction(r[o])?r[o].apply(r,a):r;if(i!==r&&i!==t)return s=i,!1}):this.each(function(){var t=e.data(this,n);t?t.option(o||{})._init():e.data(this,n,new r(o,this))}),s)}},e.Widget=function(e,t){arguments.length&&this._createWidget(e,t)},e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(t,n){e.data(n,this.widgetName,this),this.element=e(n),this.options=e.extend(!0,{},this.options,this._getCreateOptions(),t);var r=this;this.element.bind("remove."+this.widgetName,function(){r.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return e.metadata&&e.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(n,r){var o=n;if(0===arguments.length)return e.extend({},this.options);if("string"==typeof n){if(r===t)return this.options[n];o={},o[n]=r}return this._setOptions(o),this},_setOptions:function(t){var n=this;return e.each(t,function(e,t){n._setOption(e,t)}),this}, +_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&this.widget()[t?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",t),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(t,n,r){var o,i,a=this.options[t];if(n=e.Event(n),n.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),r=r||{},n.originalEvent)for(o=e.event.props.length;o;)i=e.event.props[--o],n[i]=n.originalEvent[i];return this.element.trigger(n,r),!(e.isFunction(a)&&!1===a.call(this.element[0],n,r)||n.isDefaultPrevented())}}}(jQuery)},function(e,t){"use strict";!function(e){var t=e(window),n=e(document),r=190,o=function(o){var i=jQuery.data(o.target);i.localScroll?o.target.scrollTop>o.target.scrollHeight-e(o.target).height()-(i.tolerance||r)&&e(this).trigger("scrolltoend"):t.scrollTop()>n.height()-t.innerHeight()-(i.tolerance||r)&&e(this).trigger("scrolltoend")};e.event.special.scrolltoend={setup:function(t,n){e(this).bind("scroll.scrolltoend",o)},teardown:function(t){e(this).unbind("scroll.scrolltoend",o)}},jQuery.event.special.scrollto={bindType:"scroll",handle:function(e){var r,o,i=e.handleObj;if(e.scrollData||(e.scrollData={scrollTop:t.scrollTop()}),r=null,"number"==typeof e.data.to)r=e.scrollData.scrollTop>e.data.to-(e.data.tolerance||0);else{if("bottom"!==e.data.to)throw Error('Special event scrollto: property "to" has unexpected value');e.scrollData.bottomOffset||(e.scrollData.bottomOffset=n.height()-t.innerHeight()),r=e.scrollData.scrollTop>e.scrollData.bottomOffset-(e.data.tolerance||0)}return o=Array.prototype.slice.apply(arguments),r?(o.push(!0),i.handler.apply(this,o)):e.data.twoway?(o.push(!1),i.handler.apply(this,o)):void 0}}}(jQuery)},,function(e,t,n){(function(t){"use strict";if(t._babelPolyfill)throw Error("only one instance of babel/polyfill is allowed");t._babelPolyfill=!0,n(608),n(580),n(581),n(582),n(551),n(550),n(579),n(570),n(571),n(572),n(573),n(574),n(575),n(576),n(577),n(578),n(553),n(554),n(555),n(556),n(557),n(558),n(559),n(560),n(561),n(562),n(563),n(564),n(565),n(566),n(567),n(568),n(569),n(602),n(605),n(604),n(600),n(601),n(603),n(606),n(607),n(549),n(548),n(544),n(546),n(540),n(541),n(543),n(542),n(547),n(545),n(598),n(583),n(552),n(599),n(584),n(585),n(586),n(587),n(588),n(591),n(589),n(590),n(592),n(593),n(594),n(595),n(597),n(596),n(609),n(611),n(610),e.exports=n(126)}).call(t,function(){return this}())},function(e,t){"use strict";!function(){var e,t,n,r,o,i,a=function(){};for(void 0===window.console&&(window.console={}),e=window.console,t=["dir","log","time","info","warn","count","clear","debug","error","group","trace","assert","dirxml","profile","timeEnd","groupEnd","profileEnd","timeStamp","exception","table","notifyFirebug","groupCollapsed","getFirebugElement","firebug","userObjects","someMethodForAssetHashChange"],n=0,r=t.length;n "+o.stack+")

"):window.__tv_js_errors.push(e+" (found at "+t+", line "+n+" at time "+a+")"),i)try{i.apply(window,arguments)}catch(e){}}}()},function(e,t,n){"use strict";function r(e,t,n,r,o){}e.exports=r},function(e,t,n){"use strict";var r=n(66),o=n(17),i=n(438);e.exports=function(){function e(e,t,n,r,a,s){s!==i&&o(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types")}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t};return n.checkPropTypes=r,n.PropTypes=n,n}},function(e,t,n){"use strict";var r=n(66),o=n(17),i=n(24),a=n(438),s=n(1007);e.exports=function(e,t){function n(e){var t=e&&(S&&e[S]||e[M]);if("function"==typeof t)return t}function u(e,t){return e===t?0!==e||1/e==1/t:e!==e&&t!==t}function c(e){this.message=e,this.stack=""}function l(e){function n(n,r,i,s,u,l,f){if(s=s||O,l=l||i,f!==a)if(t)o(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");else;return null==r[i]?n?new c(null===r[i]?"The "+u+" `"+l+"` is marked as required in `"+s+"`, but its value is `null`.":"The "+u+" `"+l+"` is marked as required in `"+s+"`, but its value is `undefined`."):null:e(r,i,s,u,l)}var r;return r=n.bind(null,!1),r.isRequired=n.bind(null,!0),r}function f(e){function t(t,n,r,o,i,a){var s,u=t[n];return C(u)!==e?(s=T(u),new c("Invalid "+o+" `"+i+"` of type `"+s+"` supplied to `"+r+"`, expected `"+e+"`.")):null}return l(t)}function p(){return l(r.thatReturnsNull)}function d(e){function t(t,n,r,o,i){var s,u,l,f;if("function"!=typeof e)return new c("Property `"+i+"` of component `"+r+"` has invalid PropType notation inside arrayOf.");if(s=t[n],!Array.isArray(s))return u=C(s),new c("Invalid "+o+" `"+i+"` of type `"+u+"` supplied to `"+r+"`, expected an array.");for(l=0;l8&&O<=11),m=32,g=String.fromCharCode(m),y={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["topCompositionEnd","topKeyPress","topTextInput","topPaste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:["topBlur","topCompositionEnd","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart", +captured:"onCompositionStartCapture"},dependencies:["topBlur","topCompositionStart","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:["topBlur","topCompositionUpdate","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]}},v=!1,b=null,_={eventTypes:y,extractEvents:function(e,t,n,r){return[c(e,t,n,r),p(e,t,n,r)]}},e.exports=_},function(e,t,n){"use strict";var r,o,i=n(439),a=n(60),s=(n(75),n(675),n(1065)),u=n(682),c=n(685),l=(n(24),c(function(e){return u(e)})),f=!1,p="cssFloat";if(a.canUseDOM){r=document.createElement("div").style;try{r.font=""}catch(e){f=!0}void 0===document.documentElement.style.cssFloat&&(p="styleFloat")}o={createMarkupForStyles:function(e,t){var n,r,o,i="";for(n in e)e.hasOwnProperty(n)&&(r=0===n.indexOf("--"),null!=(o=e[n])&&(i+=l(n)+":",i+=s(n,o,t,r)+";"));return i||null},setValueForStyles:function(e,t,n){var r,o,a,u,c,l;r=e.style;for(o in t)if(t.hasOwnProperty(o))if(a=0===o.indexOf("--"),u=s(o,t[o],n,a),"float"!==o&&"cssFloat"!==o||(o=p),a)r.setProperty(o,u);else if(u)r[o]=u;else if(c=f&&i.shorthandPropertyExpansions[o])for(l in c)r[l]="";else r[o]=""}},e.exports=o},function(e,t,n){"use strict";function r(e,t,n){var r=M.getPooled(A.change,e,t,n);return r.type="change",T.accumulateTwoPhaseDispatches(r),r}function o(e){var t=e.nodeName&&e.nodeName.toLowerCase();return"select"===t||"input"===t&&"file"===e.type}function i(e){var t=r(I,e,N(e));S.batchedUpdates(a,t)}function a(e){C.enqueueEvents(e),C.processEventQueue(!1)}function s(e,t){L=e,I=t,L.attachEvent("onchange",i)}function u(){L&&(L.detachEvent("onchange",i),L=null,I=null)}function c(e,t){var n=O.updateValueIfChanged(e),r=!0===t.simulated&&x._allowSimulatedPassThrough;if(n||r)return e}function l(e,t){if("topChange"===e)return t}function f(e,t,n){"topFocus"===e?(u(),s(t,n)):"topBlur"===e&&u()}function p(e,t){L=e,I=t,L.attachEvent("onpropertychange",h)}function d(){L&&(L.detachEvent("onpropertychange",h),L=null,I=null)}function h(e){"value"===e.propertyName&&c(I,e)&&i(e)}function m(e,t,n){"topFocus"===e?(d(),p(t,n)):"topBlur"===e&&d()}function g(e,t,n){if("topSelectionChange"===e||"topKeyUp"===e||"topKeyDown"===e)return c(I,n)}function y(e){var t=e.nodeName;return t&&"input"===t.toLowerCase()&&("checkbox"===e.type||"radio"===e.type)}function v(e,t,n){if("topClick"===e)return c(t,n)}function b(e,t,n){if("topInput"===e||"topChange"===e)return c(t,n)}function _(e,t){var n,r;null!=e&&(n=e._wrapperState||t._wrapperState)&&n.controlled&&"number"===t.type&&(r=""+t.value,t.getAttribute("value")!==r&&t.setAttribute("value",r))}var w,x,C=n(165),T=n(166),k=n(60),E=n(32),S=n(87),M=n(91),O=n(455),N=n(301),D=n(302),P=n(457),A={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:["topBlur","topChange","topClick","topFocus","topInput","topKeyDown","topKeyUp","topSelectionChange"]}},L=null,I=null,j=!1;k.canUseDOM&&(j=D("change")&&(!document.documentMode||document.documentMode>8)),w=!1, +k.canUseDOM&&(w=D("input")&&(!("documentMode"in document)||document.documentMode>9)),x={eventTypes:A,_allowSimulatedPassThrough:!0,_isInputEventSupported:w,extractEvents:function(e,t,n,i){var a,s,u,c=t?E.getNodeFromInstance(t):window;if(o(c)?j?a=l:s=f:P(c)?w?a=b:(a=g,s=m):y(c)&&(a=v),a&&(u=a(e,t,n)))return r(u,n,i);s&&s(e,c,t),"topBlur"===e&&_(t,c)}},e.exports=x},function(e,t,n){"use strict";var r=n(25),o=n(137),i=n(60),a=n(678),s=n(66),u=(n(17),{dangerouslyReplaceNodeWithMarkup:function(e,t){if(i.canUseDOM||r("56"),t||r("57"),"HTML"===e.nodeName&&r("58"),"string"==typeof t){var n=a(t,s)[0];e.parentNode.replaceChild(n,e)}else o.replaceChildWithTree(e,t)}});e.exports=u},function(e,t){"use strict";var n=["ResponderEventPlugin","SimpleEventPlugin","TapEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin"];e.exports=n},function(e,t,n){"use strict";var r=n(166),o=n(32),i=n(222),a={mouseEnter:{registrationName:"onMouseEnter",dependencies:["topMouseOut","topMouseOver"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["topMouseOut","topMouseOver"]}},s={eventTypes:a,extractEvents:function(e,t,n,s){var u,c,l,f,p,d,h,m,g;return"topMouseOver"===e&&(n.relatedTarget||n.fromElement)?null:"topMouseOut"!==e&&"topMouseOver"!==e?null:(s.window===s?u=s:(c=s.ownerDocument,u=c?c.defaultView||c.parentWindow:window),"topMouseOut"===e?(l=t,p=n.relatedTarget||n.toElement,f=p?o.getClosestInstanceFromNode(p):null):(l=null,f=t),l===f?null:(d=null==l?u:o.getNodeFromInstance(l),h=null==f?u:o.getNodeFromInstance(f),m=i.getPooled(a.mouseLeave,l,n,s),m.type="mouseleave",m.target=d,m.relatedTarget=h,g=i.getPooled(a.mouseEnter,f,n,s),g.type="mouseenter",g.target=h,g.relatedTarget=d,r.accumulateEnterLeaveDispatches(m,g,l,f),[m,g]))}};e.exports=s},function(e,t,n){"use strict";function r(e){this._root=e,this._startText=this.getText(),this._fallbackText=null}var o=n(30),i=n(120),a=n(454);o(r.prototype,{destructor:function(){this._root=null,this._startText=null,this._fallbackText=null},getText:function(){return"value"in this._root?this._root.value:this._root[a()]},getData:function(){var e,t,n,r,o,i,a,s;if(this._fallbackText)return this._fallbackText;for(t=this._startText,n=t.length,o=this.getText(),i=o.length,e=0;e1?1-r:void 0,this._fallbackText=o.slice(e,s),this._fallbackText}}),i.addPoolingTo(r),e.exports=r},function(e,t,n){"use strict";var r=n(138),o=r.injection.MUST_USE_PROPERTY,i=r.injection.HAS_BOOLEAN_VALUE,a=r.injection.HAS_NUMERIC_VALUE,s=r.injection.HAS_POSITIVE_NUMERIC_VALUE,u=r.injection.HAS_OVERLOADED_BOOLEAN_VALUE,c={isCustomAttribute:RegExp.prototype.test.bind(RegExp("^(data|aria)-["+r.ATTRIBUTE_NAME_CHAR+"]*$")),Properties:{accept:0,acceptCharset:0,accessKey:0,action:0,allowFullScreen:i,allowTransparency:0,alt:0,as:0,async:i,autoComplete:0,autoPlay:i,capture:i,cellPadding:0,cellSpacing:0,charSet:0,challenge:0,checked:o|i,cite:0,classID:0,className:0,cols:s,colSpan:0,content:0,contentEditable:0,contextMenu:0, +controls:i,coords:0,crossOrigin:0,data:0,dateTime:0,default:i,defer:i,dir:0,disabled:i,download:u,draggable:0,encType:0,form:0,formAction:0,formEncType:0,formMethod:0,formNoValidate:i,formTarget:0,frameBorder:0,headers:0,height:0,hidden:i,high:0,href:0,hrefLang:0,htmlFor:0,httpEquiv:0,icon:0,id:0,inputMode:0,integrity:0,is:0,keyParams:0,keyType:0,kind:0,label:0,lang:0,list:0,loop:i,low:0,manifest:0,marginHeight:0,marginWidth:0,max:0,maxLength:0,media:0,mediaGroup:0,method:0,min:0,minLength:0,multiple:o|i,muted:o|i,name:0,nonce:0,noValidate:i,open:i,optimum:0,pattern:0,placeholder:0,playsInline:i,poster:0,preload:0,profile:0,radioGroup:0,readOnly:i,referrerPolicy:0,rel:0,required:i,reversed:i,role:0,rows:s,rowSpan:a,sandbox:0,scope:0,scoped:i,scrolling:0,seamless:i,selected:o|i,shape:0,size:s,sizes:0,span:s,spellCheck:0,src:0,srcDoc:0,srcLang:0,srcSet:0,start:a,step:0,style:0,summary:0,tabIndex:0,target:0,title:0,type:0,useMap:0,value:0,width:0,wmode:0,wrap:0,about:0,datatype:0,inlist:0,prefix:0,property:0,resource:0,typeof:0,vocab:0,autoCapitalize:0,autoCorrect:0,autoSave:0,color:0,itemProp:0,itemScope:i,itemType:0,itemID:0,itemRef:0,results:0,security:0,unselectable:0},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{},DOMMutationMethods:{value:function(e,t){if(null==t)return e.removeAttribute("value");"number"!==e.type||!1===e.hasAttribute("value")?e.setAttribute("value",""+t):e.validity&&!e.validity.badInput&&e.ownerDocument.activeElement!==e&&e.setAttribute("value",""+t)}}};e.exports=c},function(e,t,n){(function(t){"use strict";function r(e,t,n,r){var o=void 0===e[n];null!=t&&o&&(e[n]=a(t,!0))}var o,i=n(139),a=n(456),s=(n(293),n(303)),u=n(459);n(24);o={instantiateChildren:function(e,t,n,o){if(null==e)return null;var i={};return u(e,r,i),i},updateChildren:function(e,t,n,r,o,u,c,l,f){var p,d,h,m,g,y;if(t||e){for(p in t)t.hasOwnProperty(p)&&(d=e&&e[p],h=d&&d._currentElement,m=t[p],null!=d&&s(h,m)?(i.receiveComponent(d,m,o,l),t[p]=d):(d&&(r[p]=i.getHostNode(d),i.unmountComponent(d,!1)),g=a(m,!0),t[p]=g,y=i.mountComponent(g,o,u,c,l,f),n.push(y)));for(p in e)!e.hasOwnProperty(p)||t&&t.hasOwnProperty(p)||(d=e[p],r[p]=i.getHostNode(d),i.unmountComponent(d,!1))}},unmountChildren:function(e,t){var n,r;for(n in e)e.hasOwnProperty(n)&&(r=e[n],i.unmountComponent(r,t))}},e.exports=o}).call(t,n(436))},function(e,t,n){"use strict";var r=n(289),o=n(1029),i={processChildrenUpdates:o.dangerouslyProcessChildrenUpdates,replaceNodeWithMarkup:r.dangerouslyReplaceNodeWithMarkup};e.exports=i},function(e,t,n){"use strict";function r(e){}function o(e,t){}function i(e){return!(!e.prototype||!e.prototype.isReactComponent)}function a(e){return!(!e.prototype||!e.prototype.isPureReactComponent)}var s,u,c,l,f,p,d=n(25),h=n(30),m=n(140),g=n(295),y=n(92),v=n(296),b=n(167),_=(n(75),n(449)),w=n(139);s=n(202),n(17),u=n(260),c=n(303),n(24),l={ImpureClass:0,PureClass:1,StatelessFunctional:2},r.prototype.render=function(){ +var e=b.get(this)._currentElement.type,t=e(this.props,this.context,this.updater);return o(e,t),t},f=1,p={construct:function(e){this._currentElement=e,this._rootNodeID=0,this._compositeType=null,this._instance=null,this._hostParent=null,this._hostContainerInfo=null,this._updateBatchNumber=null,this._pendingElement=null,this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._renderedNodeType=null,this._renderedComponent=null,this._context=null,this._mountOrder=0,this._topLevelWrapper=null,this._pendingCallbacks=null,this._calledComponentWillUnmount=!1},mountComponent:function(e,t,n,u){var c,p,h,g,y,v,_,w,x;return this._context=u,this._mountOrder=f++,this._hostParent=t,this._hostContainerInfo=n,c=this._currentElement.props,p=this._processContext(u),h=this._currentElement.type,g=e.getUpdateQueue(),y=i(h),v=this._constructComponent(y,c,p,g),y||null!=v&&null!=v.render?a(h)?this._compositeType=l.PureClass:this._compositeType=l.ImpureClass:(_=v,o(h,_),null===v||!1===v||m.isValidElement(v)||d("105",h.displayName||h.name||"Component"),v=new r(h),this._compositeType=l.StatelessFunctional),v.props=c,v.context=p,v.refs=s,v.updater=g,this._instance=v,b.set(v,this),w=v.state,void 0===w&&(v.state=w=null),("object"!=typeof w||Array.isArray(w))&&d("106",this.getName()||"ReactCompositeComponent"),this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,x=v.unstable_handleError?this.performInitialMountWithErrorHandling(_,t,n,e,u):this.performInitialMount(_,t,n,e,u),v.componentDidMount&&e.getReactMountReady().enqueue(v.componentDidMount,v),x},_constructComponent:function(e,t,n,r){return this._constructComponentWithoutOwner(e,t,n,r)},_constructComponentWithoutOwner:function(e,t,n,r){var o=this._currentElement.type;return e?new o(t,n,r):o(t,n,r)},performInitialMountWithErrorHandling:function(e,t,n,r,o){var i,a=r.checkpoint();try{i=this.performInitialMount(e,t,n,r,o)}catch(s){r.rollback(a),this._instance.unstable_handleError(s),this._pendingStateQueue&&(this._instance.state=this._processPendingState(this._instance.props,this._instance.context)),a=r.checkpoint(),this._renderedComponent.unmountComponent(!0),r.rollback(a),i=this.performInitialMount(e,t,n,r,o)}return i},performInitialMount:function(e,t,n,r,o){var i,a,s=this._instance,u=0;return s.componentWillMount&&(s.componentWillMount(),this._pendingStateQueue&&(s.state=this._processPendingState(s.props,s.context))),void 0===e&&(e=this._renderValidatedComponent()),i=_.getType(e),this._renderedNodeType=i,a=this._instantiateReactComponent(e,i!==_.EMPTY),this._renderedComponent=a,w.mountComponent(a,r,t,n,this._processChildContext(o),u)},getHostNode:function(){return w.getHostNode(this._renderedComponent)},unmountComponent:function(e){var t,n;this._renderedComponent&&(t=this._instance,t.componentWillUnmount&&!t._calledComponentWillUnmount&&(t._calledComponentWillUnmount=!0,e?(n=this.getName()+".componentWillUnmount()",v.invokeGuardedCallback(n,t.componentWillUnmount.bind(t))):t.componentWillUnmount()), +this._renderedComponent&&(w.unmountComponent(this._renderedComponent,e),this._renderedNodeType=null,this._renderedComponent=null,this._instance=null),this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._pendingCallbacks=null,this._pendingElement=null,this._context=null,this._rootNodeID=0,this._topLevelWrapper=null,b.remove(t))},_maskContext:function(e){var t,n,r=this._currentElement.type,o=r.contextTypes;if(!o)return s;t={};for(n in o)t[n]=e[n];return t},_processContext:function(e){var t=this._maskContext(e);return t},_processChildContext:function(e){var t,n,r=this._currentElement.type,o=this._instance;if(o.getChildContext&&(t=o.getChildContext()),t){"object"!=typeof r.childContextTypes&&d("107",this.getName()||"ReactCompositeComponent");for(n in t)n in r.childContextTypes||d("108",this.getName()||"ReactCompositeComponent",n);return h({},e,t)}return e},_checkContextTypes:function(e,t,n){},receiveComponent:function(e,t,n){var r=this._currentElement,o=this._context;this._pendingElement=null,this.updateComponent(t,r,e,o,n)},performUpdateIfNecessary:function(e){null!=this._pendingElement?w.receiveComponent(this,this._pendingElement,e,this._context):null!==this._pendingStateQueue||this._pendingForceUpdate?this.updateComponent(e,this._currentElement,this._currentElement,this._context,this._context):this._updateBatchNumber=null},updateComponent:function(e,t,n,r,o){var i,a,s,c,f,p,h=this._instance;null==h&&d("136",this.getName()||"ReactCompositeComponent"),i=!1,this._context===o?a=h.context:(a=this._processContext(o),i=!0),s=t.props,c=n.props,t!==n&&(i=!0),i&&h.componentWillReceiveProps&&h.componentWillReceiveProps(c,a),f=this._processPendingState(c,a),p=!0,this._pendingForceUpdate||(h.shouldComponentUpdate?p=h.shouldComponentUpdate(c,f,a):this._compositeType===l.PureClass&&(p=!u(s,c)||!u(h.state,f))),this._updateBatchNumber=null,p?(this._pendingForceUpdate=!1,this._performComponentUpdate(n,c,f,a,e,o)):(this._currentElement=n,this._context=o,h.props=c,h.state=f,h.context=a)},_processPendingState:function(e,t){var n,r,o,i=this._instance,a=this._pendingStateQueue,s=this._pendingReplaceState;if(this._pendingReplaceState=!1,this._pendingStateQueue=null,!a)return i.state;if(s&&1===a.length)return a[0];for(n=h({},s?a[0]:i.state),r=s?1:0;r=0||null!=t.is}function m(e){var t=e.type;d(t),this._currentElement=e,this._tag=t.toLowerCase(),this._namespaceURI=null,this._renderedChildren=null,this._previousStyle=null,this._previousStyleCopy=null,this._hostNode=null,this._hostParent=null,this._rootNodeID=0,this._domID=0,this._hostContainerInfo=null,this._wrapperState=null,this._topLevelWrapper=null,this._flags=0}var g,y,v,b,_,w,x,C,T=n(25),k=n(30),E=n(1012),S=n(1014),M=n(137),O=n(290),N=n(138),D=n(441),P=n(165),A=n(291),L=n(221),I=n(442),j=n(32),R=n(1030),F=n(1031),U=n(443),H=n(1034),Y=(n(75),n(1043)),W=n(1048),B=(n(66),n(224)),V=(n(17),n(302),n(260),n(455)),q=(n(304),n(24),I),z=P.deleteListener,$=j.getNodeFromInstance,G=L.listenTo,K=A.registrationNameModules,X={string:!0,number:!0},Q="style",J="__html",Z={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null},ee=11;g={topAbort:"abort",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topSeeked:"seeked",topSeeking:"seeking",topStalled:"stalled",topSuspend:"suspend",topTimeUpdate:"timeupdate",topVolumeChange:"volumechange",topWaiting:"waiting"},y={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},v={listing:!0,pre:!0,textarea:!0},b=k({menuitem:!0},y),_=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,w={},x={}.hasOwnProperty,C=1,m.displayName="ReactDOMComponent",m.Mixin={mountComponent:function(e,t,n,r){var i,a,p,d,h,m,g,v,b,_,w;switch(this._rootNodeID=C++,this._domID=n._idCounter++,this._hostParent=t,this._hostContainerInfo=n,i=this._currentElement.props,this._tag){case"audio":case"form":case"iframe":case"img":case"link":case"object":case"source":case"video":this._wrapperState={listeners:null},e.getReactMountReady().enqueue(f,this);break;case"input":R.mountWrapper(this,i,t),i=R.getHostProps(this,i),e.getReactMountReady().enqueue(l,this),e.getReactMountReady().enqueue(f,this);break;case"option":F.mountWrapper(this,i,t), +i=F.getHostProps(this,i);break;case"select":U.mountWrapper(this,i,t),i=U.getHostProps(this,i),e.getReactMountReady().enqueue(f,this);break;case"textarea":H.mountWrapper(this,i,t),i=H.getHostProps(this,i),e.getReactMountReady().enqueue(l,this),e.getReactMountReady().enqueue(f,this)}switch(o(this,i),null!=t?(a=t._namespaceURI,p=t._tag):n._tag&&(a=n._namespaceURI,p=n._tag),(null==a||a===O.svg&&"foreignobject"===p)&&(a=O.html),a===O.html&&("svg"===this._tag?a=O.svg:"math"===this._tag&&(a=O.mathml)),this._namespaceURI=a,e.useCreateElement?(h=n._ownerDocument,a===O.html?"script"===this._tag?(g=h.createElement("div"),v=this._currentElement.type,g.innerHTML="<"+v+">",m=g.removeChild(g.firstChild)):m=i.is?h.createElement(this._currentElement.type,i.is):h.createElement(this._currentElement.type):m=h.createElementNS(a,this._currentElement.type),j.precacheNode(this,m),this._flags|=q.hasCachedChildNodes,this._hostParent||D.setAttributeForRoot(m),this._updateDOMProperties(null,i,e),b=M(m),this._createInitialChildren(e,i,r,b),d=b):(_=this._createOpenTagMarkupAndPutListeners(e,i),w=this._createContentMarkup(e,i,r),d=!w&&y[this._tag]?_+"/>":_+">"+w+""),this._tag){case"input":e.getReactMountReady().enqueue(s,this),i.autoFocus&&e.getReactMountReady().enqueue(E.focusDOMComponent,this);break;case"textarea":e.getReactMountReady().enqueue(u,this),i.autoFocus&&e.getReactMountReady().enqueue(E.focusDOMComponent,this);break;case"select":case"button":i.autoFocus&&e.getReactMountReady().enqueue(E.focusDOMComponent,this);break;case"option":e.getReactMountReady().enqueue(c,this)}return d},_createOpenTagMarkupAndPutListeners:function(e,t){var n,r,o,a="<"+this._currentElement.type;for(n in t)t.hasOwnProperty(n)&&null!=(r=t[n])&&(K.hasOwnProperty(n)?r&&i(this,n,r,e):(n===Q&&(r&&(r=this._previousStyleCopy=k({},t.style)),r=S.createMarkupForStyles(r,this)),o=null,null!=this._tag&&h(this._tag,t)?Z.hasOwnProperty(n)||(o=D.createMarkupForCustomAttribute(n,r)):o=D.createMarkupForProperty(n,r),o&&(a+=" "+o)));return e.renderToStaticMarkup?a:(this._hostParent||(a+=" "+D.createMarkupForRoot()),a+=" "+D.createMarkupForID(this._domID))},_createContentMarkup:function(e,t,n){var r,o,i,a="",s=t.dangerouslySetInnerHTML;return null!=s?null!=s.__html&&(a=s.__html):(r=X[typeof t.children]?t.children:null,o=null!=r?null:t.children,null!=r?a=B(r):null!=o&&(i=this.mountChildren(o,e,n),a=i.join(""))),v[this._tag]&&"\n"===a.charAt(0)?"\n"+a:a},_createInitialChildren:function(e,t,n,r){var o,i,a,s,u=t.dangerouslySetInnerHTML;if(null!=u)null!=u.__html&&M.queueHTML(r,u.__html);else if(o=X[typeof t.children]?t.children:null,i=null!=o?null:t.children,null!=o)""!==o&&M.queueText(r,o);else if(null!=i)for(a=this.mountChildren(i,e,n),s=0;st.end?(n=t.end,r=t.start):(n=t.start,r=t.end),o.moveToElementText(e),o.moveStart("character",n),o.setEndPoint("EndToStart",o),o.moveEnd("character",r-n),o.select()}function s(e,t){var n,r,o,i,a,s,u,f;window.getSelection&&(n=window.getSelection(),r=e[l()].length,o=Math.min(t.start,r),i=void 0===t.end?o:Math.min(t.end,r),!n.extend&&o>i&&(a=i,i=o,o=a),s=c(e,o),u=c(e,i),s&&u&&(f=document.createRange(),f.setStart(s.node,s.offset),n.removeAllRanges(),o>i?(n.addRange(f),n.extend(u.node,u.offset)):(f.setEnd(u.node,u.offset),n.addRange(f))))}var u=n(60),c=n(1070),l=n(454),f=u.canUseDOM&&"selection"in document&&!("getSelection"in window),p={getOffsets:f?o:i,setOffsets:f?a:s};e.exports=p},function(e,t,n){"use strict";var r=n(25),o=n(30),i=n(289),a=n(137),s=n(32),u=n(224),c=(n(17),n(304),function(e){this._currentElement=e,this._stringText=""+e,this._hostNode=null,this._hostParent=null,this._domID=0,this._mountIndex=0,this._closingComment=null,this._commentNodes=null});o(c.prototype,{mountComponent:function(e,t,n,r){var o,i,c,l,f,p,d,h;return o=n._idCounter++,i=" react-text: "+o+" ",c=" /react-text ",this._domID=o,this._hostParent=t,e.useCreateElement?(l=n._ownerDocument,f=l.createComment(i),p=l.createComment(c),d=a(l.createDocumentFragment()),a.queueChild(d,a(f)),this._stringText&&a.queueChild(d,a(l.createTextNode(this._stringText))),a.queueChild(d,a(p)), +s.precacheNode(this,f),this._closingComment=p,d):(h=u(this._stringText),e.renderToStaticMarkup?h:"\x3c!--"+i+"--\x3e"+h+"\x3c!--"+c+"--\x3e")},receiveComponent:function(e,t){var n,r;e!==this._currentElement&&(this._currentElement=e,(n=""+e)!==this._stringText&&(this._stringText=n,r=this.getHostNode(),i.replaceDelimitedText(r[0],r[1],n)))},getHostNode:function(){var e,t,n=this._commentNodes;if(n)return n;if(!this._closingComment)for(e=s.getNodeFromInstance(this),t=e.nextSibling;;){if(null==t&&r("67",this._domID),8===t.nodeType&&" /react-text "===t.nodeValue){this._closingComment=t;break}t=t.nextSibling}return n=[this._hostNode,this._closingComment],this._commentNodes=n,n},unmountComponent:function(){this._closingComment=null,this._commentNodes=null,s.uncacheNode(this)}}),e.exports=c},function(e,t,n){"use strict";function r(){this._rootNodeID&&l.updateWrapper(this)}function o(e){var t=this._currentElement.props,n=s.executeOnChange(t,e);return c.asap(r,this),n}var i=n(25),a=n(30),s=n(294),u=n(32),c=n(87),l=(n(17),n(24),{getHostProps:function(e,t){return null!=t.dangerouslySetInnerHTML&&i("91"),a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue,onChange:e._wrapperState.onChange})},mountWrapper:function(e,t){var n,r,a,u;n=s.getValue(t),r=n,null==n&&(a=t.defaultValue,u=t.children,null!=u&&(null!=a&&i("92"),Array.isArray(u)&&(u.length<=1||i("93"),u=u[0]),a=""+u),null==a&&(a=""),r=a),e._wrapperState={initialValue:""+r,listeners:null,onChange:o.bind(e)}},updateWrapper:function(e){var t,n=e._currentElement.props,r=u.getNodeFromInstance(e),o=s.getValue(n);null!=o&&(t=""+o,t!==r.value&&(r.value=t),null==n.defaultValue&&(r.defaultValue=t)),null!=n.defaultValue&&(r.defaultValue=n.defaultValue)},postMountWrapper:function(e){var t=u.getNodeFromInstance(e),n=t.textContent;n===e._wrapperState.initialValue&&(t.value=n)}});e.exports=l},function(e,t,n){"use strict";function r(e,t){var n,r,o,i,a;"_hostNode"in e||u("33"),"_hostNode"in t||u("33"),n=0;for(r=e;r;r=r._hostParent)n++;for(o=0,i=t;i;i=i._hostParent)o++;for(;n-o>0;)e=e._hostParent,n--;for(;o-n>0;)t=t._hostParent,o--;for(a=n;a--;){if(e===t)return e;e=e._hostParent,t=t._hostParent}return null}function o(e,t){"_hostNode"in e||u("35"),"_hostNode"in t||u("35");for(;t;){if(t===e)return!0;t=t._hostParent}return!1}function i(e){return"_hostNode"in e||u("36"),e._hostParent}function a(e,t,n){for(var r,o=[];e;)o.push(e),e=e._hostParent;for(r=o.length;r-- >0;)t(o[r],"captured",n);for(r=0;r0;)n(a[s],"captured",i)}var u=n(25);n(17);e.exports={isAncestor:o,getLowestCommonAncestor:r,getParentInstance:i,traverseTwoPhase:a,traverseEnterLeave:s}},function(e,t,n){"use strict";function r(){this.reinitializeTransaction()}var o,i,a=n(30),s=n(87),u=n(223),c=n(66),l={initialize:c,close:function(){i.isBatchingUpdates=!1}},f={initialize:c, +close:s.flushBatchedUpdates.bind(s)},p=[f,l];a(r.prototype,u,{getTransactionWrappers:function(){return p}}),o=new r,i={isBatchingUpdates:!1,batchedUpdates:function(e,t,n,r,a,s){var u=i.isBatchingUpdates;return i.isBatchingUpdates=!0,u?e(t,n,r,a,s):o.perform(e,null,t,n,r,a,s)}},e.exports=i},function(e,t,n){"use strict";function r(){C||(C=!0,v.EventEmitter.injectReactEventListener(y),v.EventPluginHub.injectEventPluginOrder(s),v.EventPluginUtils.injectComponentTree(p),v.EventPluginUtils.injectTreeTraversal(h),v.EventPluginHub.injectEventPluginsByName({SimpleEventPlugin:x,EnterLeaveEventPlugin:u,ChangeEventPlugin:a,SelectEventPlugin:w,BeforeInputEventPlugin:i}),v.HostComponent.injectGenericComponentClass(f),v.HostComponent.injectTextComponentClass(m),v.DOMProperty.injectDOMPropertyConfig(o),v.DOMProperty.injectDOMPropertyConfig(c),v.DOMProperty.injectDOMPropertyConfig(_),v.EmptyComponent.injectEmptyComponentFactory(function(e){return new d(e)}),v.Updates.injectReconcileTransaction(b),v.Updates.injectBatchingStrategy(g),v.Component.injectEnvironment(l))}var o=n(1011),i=n(1013),a=n(1015),s=n(1017),u=n(1018),c=n(1020),l=n(1022),f=n(1025),p=n(32),d=n(1027),h=n(1035),m=n(1033),g=n(1036),y=n(1040),v=n(1041),b=n(1046),_=n(1051),w=n(1052),x=n(1053),C=!1;e.exports={inject:r}},function(e,t){"use strict";var n="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;e.exports=n},function(e,t,n){"use strict";function r(e){o.enqueueEvents(e),o.processEventQueue(!1)}var o=n(165),i={handleTopLevel:function(e,t,n,i){r(o.extractEvents(e,t,n,i))}};e.exports=i},function(e,t,n){"use strict";function r(e){for(var t,n;e._hostParent;)e=e._hostParent;return t=p.getNodeFromInstance(e),n=t.parentNode,p.getClosestInstanceFromNode(n)}function o(e,t){this.topLevelType=e,this.nativeEvent=t,this.ancestors=[]}function i(e){var t,n=h(e.nativeEvent),o=p.getClosestInstanceFromNode(n),i=o;do{e.ancestors.push(i),i=i&&r(i)}while(i);for(t=0;t/,i=/^<\!\-\-/,a={CHECKSUM_ATTR_NAME:"data-react-checksum",addChecksumToMarkup:function(e){var t=r(e);return i.test(e)?e:e.replace(o," "+a.CHECKSUM_ATTR_NAME+'="'+t+'"$&')},canReuseMarkup:function(e,t){var n=t.getAttribute(a.CHECKSUM_ATTR_NAME);return n=n&&parseInt(n,10),r(e)===n}};e.exports=a},function(e,t,n){"use strict";function r(e,t,n){return{type:"INSERT_MARKUP",content:e,fromIndex:null,fromNode:null,toIndex:n,afterNode:t}}function o(e,t,n){return{type:"MOVE_EXISTING",content:null,fromIndex:e._mountIndex,fromNode:d.getHostNode(e),toIndex:n,afterNode:t}}function i(e,t){return{type:"REMOVE_NODE",content:null,fromIndex:e._mountIndex,fromNode:t,toIndex:null,afterNode:null}}function a(e){return{type:"SET_MARKUP",content:e,fromIndex:null,fromNode:null,toIndex:null,afterNode:null}}function s(e){return{type:"TEXT_CONTENT",content:e,fromIndex:null,fromNode:null,toIndex:null,afterNode:null}}function u(e,t){return t&&(e=e||[],e.push(t)),e}function c(e,t){p.processChildrenUpdates(e,t)}var l,f=n(25),p=n(295),d=(n(167),n(75),n(92),n(139)),h=n(1021),m=(n(66),n(1067));n(17);l={Mixin:{_reconcilerInstantiateChildren:function(e,t,n){return h.instantiateChildren(e,t,n)},_reconcilerUpdateChildren:function(e,t,n,r,o,i){var a,s=0;return a=m(t,s),h.updateChildren(e,a,n,r,o,this,this._hostContainerInfo,i,s),a},mountChildren:function(e,t,n){var r,o,i,a,s,u,c=this._reconcilerInstantiateChildren(e,t,n);this._renderedChildren=c,r=[],o=0;for(i in c)c.hasOwnProperty(i)&&(a=c[i],s=0,u=d.mountComponent(a,t,this,this._hostContainerInfo,n,s),a._mountIndex=o++,r.push(u));return r},updateTextContent:function(e){var t,n,r=this._renderedChildren;h.unmountChildren(r,!1);for(t in r)r.hasOwnProperty(t)&&f("118");n=[s(e)],c(this,n)},updateMarkup:function(e){var t,n,r=this._renderedChildren;h.unmountChildren(r,!1);for(t in r)r.hasOwnProperty(t)&&f("118");n=[a(e)],c(this,n)},updateChildren:function(e,t,n){this._updateChildren(e,t,n)},_updateChildren:function(e,t,n){var r,o,i,a,s,l,f,p,h=this._renderedChildren,m={},g=[],y=this._reconcilerUpdateChildren(h,e,g,m,t,n);if(y||h){r=null,i=0,a=0,s=0,l=null;for(o in y)y.hasOwnProperty(o)&&(f=h&&h[o],p=y[o],f===p?(r=u(r,this.moveChild(f,l,i,a)),a=Math.max(f._mountIndex,a),f._mountIndex=i):(f&&(a=Math.max(f._mountIndex,a)),r=u(r,this._mountChildAtIndex(p,g[s],l,i,t,n)),s++),i++,l=d.getHostNode(p));for(o in m)m.hasOwnProperty(o)&&(r=u(r,this._unmountChild(h[o],m[o])));r&&c(this,r),this._renderedChildren=y}},unmountChildren:function(e){var t=this._renderedChildren;h.unmountChildren(t,e),this._renderedChildren=null},moveChild:function(e,t,n,r){if(e._mountIndex=t)return{node:o,offset:t-i};i=a}o=n(r(o))}}e.exports=o},function(e,t,n){"use strict";function r(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n["ms"+e]="MS"+t,n["O"+e]="o"+t.toLowerCase(),n}function o(e){var t,n;if(s[e])return s[e];if(!a[e])return e;t=a[e];for(n in t)if(t.hasOwnProperty(n)&&n in u)return s[e]=t[n];return""}var i=n(60),a={ +animationend:r("Animation","AnimationEnd"),animationiteration:r("Animation","AnimationIteration"),animationstart:r("Animation","AnimationStart"),transitionend:r("Transition","TransitionEnd")},s={},u={};i.canUseDOM&&(u=document.createElement("div").style,"AnimationEvent"in window||(delete a.animationend.animation,delete a.animationiteration.animation,delete a.animationstart.animation),"TransitionEvent"in window||delete a.transitionend.transition),e.exports=o},function(e,t,n){"use strict";function r(e){return'"'+o(e)+'"'}var o=n(224);e.exports=r},function(e,t,n){"use strict";var r=n(448);e.exports=r.renderSubtreeIntoContainer},,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s,u,c,l,f,p,d,h,m,g,y,v;t.__esModule=!0,s=Object.assign||function(e){var t,n,r;for(t=1;t0;)n[r]=arguments[r+1];return n.reduce(function(n,r){return n+e(t["border-"+r+"-width"])},0)}function r(t){var n,r,o,i,a=["top","right","bottom","left"],s={};for(n=0,r=a;n0},M.prototype.connect_=function(){_&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),S?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},M.prototype.disconnect_=function(){_&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},M.prototype.onTransitionEnd_=function(e){var t,n=e.propertyName;void 0===n&&(n=""),(t=E.some(function(e){return!!~n.indexOf(e)}))&&this.refresh()},M.getInstance=function(){return this.instance_||(this.instance_=new M),this.instance_},M.instance_=null,l=function(e,t){var n,r,o;for(n=0,r=Object.keys(t);n0},y="undefined"!=typeof WeakMap?new WeakMap:new b,v=function(e){var t,n;if(!(this instanceof v))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");t=M.getInstance(),n=new g(e,t,this),y.set(this,n)},["observe","unobserve","disconnect"].forEach(function(e){v.prototype[e]=function(){return(t=y.get(this))[e].apply(t,arguments);var t}}),function(){return void 0!==w.ResizeObserver?w.ResizeObserver:v}()})}).call(t,function(){return this}())},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(993),n(1002),n(997),n(998),n(996)},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";var r=function(){};e.exports=r},function(e,t){!function(e){"use strict";function t(e){if("string"!=typeof e&&(e+=""),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function n(e){return"string"!=typeof e&&(e+=""),e}function r(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}} +;return y.iterable&&(t[Symbol.iterator]=function(){return t}),t}function o(e){this.map={},e instanceof o?e.forEach(function(e,t){this.append(t,e)},this):e&&Object.getOwnPropertyNames(e).forEach(function(t){this.append(t,e[t])},this)}function i(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function a(e){return new Promise(function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}})}function s(e){var t=new FileReader,n=a(t);return t.readAsArrayBuffer(e),n}function u(e){var t=new FileReader,n=a(t);return t.readAsText(e),n}function c(e){var t,n=new Uint8Array(e),r=Array(n.length);for(t=0;t-1?t:e}function d(e,t){t=t||{};var n=t.body;if("string"==typeof e)this.url=e;else{if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new o(e.headers)),this.method=e.method,this.mode=e.mode,n||null==e._bodyInit||(n=e._bodyInit,e.bodyUsed=!0)} +if(this.credentials=t.credentials||this.credentials||"omit",!t.headers&&this.headers||(this.headers=new o(t.headers)),this.method=p(t.method||this.method||"GET"),this.mode=t.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(n)}function h(e){var t=new FormData;return e.trim().split("&").forEach(function(e){var n,r,o;e&&(n=e.split("="),r=n.shift().replace(/\+/g," "),o=n.join("=").replace(/\+/g," "),t.append(decodeURIComponent(r),decodeURIComponent(o)))}),t}function m(e){var t=new o;return e.split("\r\n").forEach(function(e){var n,r=e.split(":"),o=r.shift().trim();o&&(n=r.join(":").trim(),t.append(o,n))}),t}function g(e,t){t||(t={}),this.type="default",this.status="status"in t?t.status:200,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new o(t.headers),this.url=t.url||"",this._initBody(e)}var y,v,b,_,w,x;e.fetch||(y={searchParams:"URLSearchParams"in e,iterable:"Symbol"in e&&"iterator"in Symbol,blob:"FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),formData:"FormData"in e,arrayBuffer:"ArrayBuffer"in e},y.arrayBuffer&&(v=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],b=function(e){return e&&DataView.prototype.isPrototypeOf(e)},_=ArrayBuffer.isView||function(e){return e&&v.indexOf(Object.prototype.toString.call(e))>-1}),o.prototype.append=function(e,r){e=t(e),r=n(r);var o=this.map[e];o||(o=[],this.map[e]=o),o.push(r)},o.prototype.delete=function(e){delete this.map[t(e)]},o.prototype.get=function(e){var n=this.map[t(e)];return n?n[0]:null},o.prototype.getAll=function(e){return this.map[t(e)]||[]},o.prototype.has=function(e){return this.map.hasOwnProperty(t(e))},o.prototype.set=function(e,r){this.map[t(e)]=[n(r)]},o.prototype.forEach=function(e,t){Object.getOwnPropertyNames(this.map).forEach(function(n){this.map[n].forEach(function(r){e.call(t,r,n,this)},this)},this)},o.prototype.keys=function(){var e=[];return this.forEach(function(t,n){e.push(n)}),r(e)},o.prototype.values=function(){var e=[];return this.forEach(function(t){e.push(t)}),r(e)},o.prototype.entries=function(){var e=[];return this.forEach(function(t,n){e.push([n,t])}),r(e)},y.iterable&&(o.prototype[Symbol.iterator]=o.prototype.entries),w=["DELETE","GET","HEAD","OPTIONS","POST","PUT"],d.prototype.clone=function(){return new d(this,{body:this._bodyInit})},f.call(d.prototype),f.call(g.prototype),g.prototype.clone=function(){return new g(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new o(this.headers),url:this.url})},g.error=function(){var e=new g(null,{status:0,statusText:""});return e.type="error",e},x=[301,302,303,307,308],g.redirect=function(e,t){if(-1===x.indexOf(t))throw new RangeError("Invalid status code");return new g(null,{status:t,headers:{location:e}})}, +e.Headers=o,e.Request=d,e.Response=g,e.fetch=function(e,t){return new Promise(function(n,r){var o=new d(e,t),i=new XMLHttpRequest;i.onload=function(){var e,t={status:i.status,statusText:i.statusText,headers:m(i.getAllResponseHeaders()||"")};t.url="responseURL"in i?i.responseURL:t.headers.get("X-Request-URL"),e="response"in i?i.response:i.responseText,n(new g(e,t))},i.onerror=function(){r(new TypeError("Network request failed"))},i.ontimeout=function(){r(new TypeError("Network request failed"))},i.open(o.method,o.url,!0),"include"===o.credentials&&(i.withCredentials=!0),"responseType"in i&&y.blob&&(i.responseType="blob"),o.headers.forEach(function(e,t){i.setRequestHeader(t,e)}),i.send(void 0===o._bodyInit?null:o._bodyInit)})},e.fetch.polyfill=!0)}("undefined"!=typeof self?self:this)}]); \ No newline at end of file diff --git a/static/Kline/charting_library/static/bundles/zoom.e21f24dd632c7069139bc47ae89c54b5.cur b/static/Kline/charting_library/static/bundles/zoom.e21f24dd632c7069139bc47ae89c54b5.cur new file mode 100644 index 0000000..e31fb2b Binary files /dev/null and b/static/Kline/charting_library/static/bundles/zoom.e21f24dd632c7069139bc47ae89c54b5.cur differ diff --git a/static/Kline/charting_library/static/css/tradingview_black.css b/static/Kline/charting_library/static/css/tradingview_black.css new file mode 100644 index 0000000..881b34a --- /dev/null +++ b/static/Kline/charting_library/static/css/tradingview_black.css @@ -0,0 +1,31 @@ +.header-group-fullscreen{float: right;} +.header-group-intervals > .intervals-container > .quick span{padding-left: 15px; padding-right: 15px;} +.chart-page .header-chart-panel .my-group{float: left;} +.separator-3cgsM4c1-{background-color: #2c303b;} +.chart-page .header-chart-panel .my-group.active .mydate, +.feature-no-touch .chart-controls-bar-buttons a:not(.disabled):hover{background:linear-gradient(135deg,rgba(188,106,188,1) 0%,rgba(104,86,166,1) 100%);} +.header-chart-panel .button, +.feature-no-touch .header-chart-panel .button:active, +.favored-list-container span{background-color: #222e3d; color: #758696; border-color: #222e3d;border-radius:3px;} + +.chart-controls-bar-buttons a:before{border-color: #2c303b;} +.button.indicators svg, +.button.fullscreen svg, +.button.properties svg{fill: #4e5b85;} +.feature-no-touch .header-chart-panel .button:hover, +.favored-list-container span.selected{background: #2c3b59; color: #58c3e5;} +.feature-no-touch .favored-list-container span:hover{background: #2c3b59; color: #58c3e5;} +.favored-list-container span.disabled{background: #171820; color: #4e5b85!important;} + +.chart-page .chart-container{border-color: #2c303b;} + +.charting-mask{display: block; position: absolute; top: 38px; width: 100%; left: 0; bottom: 0;} + +.chart-page .layout__area--left [class^="drawingToolbar-"]{background: #222e3d!important;} +.bottom-widgetbar-content.backtesting .button, .header-chart-panel .button, .hotlist-controls .button, .symbol-edit-widget .button{ + padding:4px 4px; +} +.tv-close-panel{ + background-color:#007bff; + border: none; +} \ No newline at end of file diff --git a/static/Kline/charting_library/static/css/tradingview_white.css b/static/Kline/charting_library/static/css/tradingview_white.css new file mode 100644 index 0000000..d606d1c --- /dev/null +++ b/static/Kline/charting_library/static/css/tradingview_white.css @@ -0,0 +1,26 @@ +.header-group-fullscreen{float: right;} +.header-group-intervals > .intervals-container > .quick span{padding-left: 15px; padding-right: 15px;} +.chart-page .header-chart-panel .my-group{float: left;} +.separator-3cgsM4c1-{background-color: #d1d4db;} +.chart-page .header-chart-panel .my-group.active .mydate, +.feature-no-touch .chart-controls-bar-buttons a:not(.disabled):hover{background-color: #e1ecf2; color: #8b8c8e;} +.header-chart-panel .button, +.feature-no-touch .header-chart-panel .button:active, +.favored-list-container span{background-color: #f6f7fb; color: #4e5b85; border-color: #d1d4db;} +.chart-controls-bar-buttons a:before{border-color: #d1d4db;} +.button.indicators svg, +.button.fullscreen svg, +.button.properties svg{fill: #4e5b85;} +.feature-no-touch .header-chart-panel .button:hover, +.favored-list-container span.selected{background: #e1ecf2; color: #58c3e5;} +.feature-no-touch .favored-list-container span:hover{background: #e1ecf2; color: #58c3e5;} +.favored-list-container span.disabled{background: #fff; color: #4e5b85!important;} + +.chart-page .chart-container{border-color: #d1d4db;} + +.charting-mask{display: block; position: absolute; top: 38px; width: 100%; left: 0; bottom: 0;} + +.chart-page .layout__area--left [class^="drawingToolbar-"]{background: #ebecf1!important;} +.bottom-widgetbar-content.backtesting .button, .header-chart-panel .button, .hotlist-controls .button, .symbol-edit-widget .button{ + padding:7px 4px; +} \ No newline at end of file diff --git a/static/Kline/charting_library/static/fonts/fontawesome-webfont.svg b/static/Kline/charting_library/static/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..45fdf33 --- /dev/null +++ b/static/Kline/charting_library/static/fonts/fontawesome-webfont.svg @@ -0,0 +1,414 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/Kline/charting_library/static/fonts/fontawesome-webfont.ttf b/static/Kline/charting_library/static/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..e89738d Binary files /dev/null and b/static/Kline/charting_library/static/fonts/fontawesome-webfont.ttf differ diff --git a/static/Kline/charting_library/static/fonts/fontawesome-webfont.woff b/static/Kline/charting_library/static/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..8c1748a Binary files /dev/null and b/static/Kline/charting_library/static/fonts/fontawesome-webfont.woff differ diff --git a/static/Kline/charting_library/static/images/balloon.png b/static/Kline/charting_library/static/images/balloon.png new file mode 100644 index 0000000..6c65ac3 Binary files /dev/null and b/static/Kline/charting_library/static/images/balloon.png differ diff --git a/static/Kline/charting_library/static/images/bar-loader.gif b/static/Kline/charting_library/static/images/bar-loader.gif new file mode 100644 index 0000000..9e34fa7 Binary files /dev/null and b/static/Kline/charting_library/static/images/bar-loader.gif differ diff --git a/static/Kline/charting_library/static/images/button-bg.png b/static/Kline/charting_library/static/images/button-bg.png new file mode 100644 index 0000000..a49bc51 Binary files /dev/null and b/static/Kline/charting_library/static/images/button-bg.png differ diff --git a/static/Kline/charting_library/static/images/charting_library/logo-widget-copyright-faded.png b/static/Kline/charting_library/static/images/charting_library/logo-widget-copyright-faded.png new file mode 100644 index 0000000..644a7a6 Binary files /dev/null and b/static/Kline/charting_library/static/images/charting_library/logo-widget-copyright-faded.png differ diff --git a/static/Kline/charting_library/static/images/charting_library/logo-widget-copyright.png b/static/Kline/charting_library/static/images/charting_library/logo-widget-copyright.png new file mode 100644 index 0000000..3a67497 Binary files /dev/null and b/static/Kline/charting_library/static/images/charting_library/logo-widget-copyright.png differ diff --git a/static/Kline/charting_library/static/images/controlll.png b/static/Kline/charting_library/static/images/controlll.png new file mode 100644 index 0000000..a00ea65 Binary files /dev/null and b/static/Kline/charting_library/static/images/controlll.png differ diff --git a/static/Kline/charting_library/static/images/delayed.png b/static/Kline/charting_library/static/images/delayed.png new file mode 100644 index 0000000..1d56924 Binary files /dev/null and b/static/Kline/charting_library/static/images/delayed.png differ diff --git a/static/Kline/charting_library/static/images/dialogs/checkbox.png b/static/Kline/charting_library/static/images/dialogs/checkbox.png new file mode 100644 index 0000000..9a01791 Binary files /dev/null and b/static/Kline/charting_library/static/images/dialogs/checkbox.png differ diff --git a/static/Kline/charting_library/static/images/dialogs/close-flat.png b/static/Kline/charting_library/static/images/dialogs/close-flat.png new file mode 100644 index 0000000..920df31 Binary files /dev/null and b/static/Kline/charting_library/static/images/dialogs/close-flat.png differ diff --git a/static/Kline/charting_library/static/images/dialogs/large-slider-handle.png b/static/Kline/charting_library/static/images/dialogs/large-slider-handle.png new file mode 100644 index 0000000..be2ad92 Binary files /dev/null and b/static/Kline/charting_library/static/images/dialogs/large-slider-handle.png differ diff --git a/static/Kline/charting_library/static/images/dialogs/linewidth-slider.png b/static/Kline/charting_library/static/images/dialogs/linewidth-slider.png new file mode 100644 index 0000000..464eb9d Binary files /dev/null and b/static/Kline/charting_library/static/images/dialogs/linewidth-slider.png differ diff --git a/static/Kline/charting_library/static/images/dialogs/opacity-slider.png b/static/Kline/charting_library/static/images/dialogs/opacity-slider.png new file mode 100644 index 0000000..e42efca Binary files /dev/null and b/static/Kline/charting_library/static/images/dialogs/opacity-slider.png differ diff --git a/static/Kline/charting_library/static/images/icons.png b/static/Kline/charting_library/static/images/icons.png new file mode 100644 index 0000000..9423e7c Binary files /dev/null and b/static/Kline/charting_library/static/images/icons.png differ diff --git a/static/Kline/charting_library/static/images/prediction-clock-black.png b/static/Kline/charting_library/static/images/prediction-clock-black.png new file mode 100644 index 0000000..cdf4be1 Binary files /dev/null and b/static/Kline/charting_library/static/images/prediction-clock-black.png differ diff --git a/static/Kline/charting_library/static/images/prediction-clock-white.png b/static/Kline/charting_library/static/images/prediction-clock-white.png new file mode 100644 index 0000000..38a4f1b Binary files /dev/null and b/static/Kline/charting_library/static/images/prediction-clock-white.png differ diff --git a/static/Kline/charting_library/static/images/prediction-failure-white.png b/static/Kline/charting_library/static/images/prediction-failure-white.png new file mode 100644 index 0000000..f12b96f Binary files /dev/null and b/static/Kline/charting_library/static/images/prediction-failure-white.png differ diff --git a/static/Kline/charting_library/static/images/prediction-success-white.png b/static/Kline/charting_library/static/images/prediction-success-white.png new file mode 100644 index 0000000..5d51909 Binary files /dev/null and b/static/Kline/charting_library/static/images/prediction-success-white.png differ diff --git a/static/Kline/charting_library/static/images/select-bg.png b/static/Kline/charting_library/static/images/select-bg.png new file mode 100644 index 0000000..9fafc4b Binary files /dev/null and b/static/Kline/charting_library/static/images/select-bg.png differ diff --git a/static/Kline/charting_library/static/images/sidetoolbar/instruments.png b/static/Kline/charting_library/static/images/sidetoolbar/instruments.png new file mode 100644 index 0000000..a66eaeb Binary files /dev/null and b/static/Kline/charting_library/static/images/sidetoolbar/instruments.png differ diff --git a/static/Kline/charting_library/static/images/sidetoolbar/toolgroup.png b/static/Kline/charting_library/static/images/sidetoolbar/toolgroup.png new file mode 100644 index 0000000..e05a2c8 Binary files /dev/null and b/static/Kline/charting_library/static/images/sidetoolbar/toolgroup.png differ diff --git a/static/Kline/charting_library/static/images/svg/chart/bucket2.svg b/static/Kline/charting_library/static/images/svg/chart/bucket2.svg new file mode 100644 index 0000000..969b473 --- /dev/null +++ b/static/Kline/charting_library/static/images/svg/chart/bucket2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/Kline/charting_library/static/images/svg/chart/font.svg b/static/Kline/charting_library/static/images/svg/chart/font.svg new file mode 100644 index 0000000..300f6e7 --- /dev/null +++ b/static/Kline/charting_library/static/images/svg/chart/font.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/Kline/charting_library/static/images/svg/chart/large-slider-handle.svg b/static/Kline/charting_library/static/images/svg/chart/large-slider-handle.svg new file mode 100644 index 0000000..ed22891 --- /dev/null +++ b/static/Kline/charting_library/static/images/svg/chart/large-slider-handle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/Kline/charting_library/static/images/svg/chart/pencil2.svg b/static/Kline/charting_library/static/images/svg/chart/pencil2.svg new file mode 100644 index 0000000..98c4f20 --- /dev/null +++ b/static/Kline/charting_library/static/images/svg/chart/pencil2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/Kline/charting_library/static/images/svg/question-mark-rounded.svg b/static/Kline/charting_library/static/images/svg/question-mark-rounded.svg new file mode 100644 index 0000000..ca518f1 --- /dev/null +++ b/static/Kline/charting_library/static/images/svg/question-mark-rounded.svg @@ -0,0 +1 @@ + diff --git a/static/Kline/charting_library/static/images/tvcolorpicker-bg-gradient.png b/static/Kline/charting_library/static/images/tvcolorpicker-bg-gradient.png new file mode 100644 index 0000000..18a303f Binary files /dev/null and b/static/Kline/charting_library/static/images/tvcolorpicker-bg-gradient.png differ diff --git a/static/Kline/charting_library/static/images/tvcolorpicker-bg.png b/static/Kline/charting_library/static/images/tvcolorpicker-bg.png new file mode 100644 index 0000000..bea0579 Binary files /dev/null and b/static/Kline/charting_library/static/images/tvcolorpicker-bg.png differ diff --git a/static/Kline/charting_library/static/images/tvcolorpicker-check.png b/static/Kline/charting_library/static/images/tvcolorpicker-check.png new file mode 100644 index 0000000..d6fe433 Binary files /dev/null and b/static/Kline/charting_library/static/images/tvcolorpicker-check.png differ diff --git a/static/Kline/charting_library/static/images/tvcolorpicker-sprite.png b/static/Kline/charting_library/static/images/tvcolorpicker-sprite.png new file mode 100644 index 0000000..d619ddf Binary files /dev/null and b/static/Kline/charting_library/static/images/tvcolorpicker-sprite.png differ diff --git a/static/Kline/charting_library/static/images/warning-icon.png b/static/Kline/charting_library/static/images/warning-icon.png new file mode 100644 index 0000000..d7baa14 Binary files /dev/null and b/static/Kline/charting_library/static/images/warning-icon.png differ diff --git a/static/Kline/charting_library/static/js/external/spin.min.js b/static/Kline/charting_library/static/js/external/spin.min.js new file mode 100644 index 0000000..4f530fc --- /dev/null +++ b/static/Kline/charting_library/static/js/external/spin.min.js @@ -0,0 +1,3 @@ +"use strict"; +//fgnass.github.com/spin.js#v2.0.1 +!function(a,b){"object"==typeof exports?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Spinner=b()}(this,function(){"use strict";function a(a,b){var c,d=document.createElement(a||"div");for(c in b)d[c]=b[c];return d}function b(a){for(var b=1,c=arguments.length;c>b;b++)a.appendChild(arguments[b]);return a}function c(a,b,c,d){var e=["opacity",b,~~(100*a),c,d].join("-"),f=.01+c/d*100,g=Math.max(1-(1-a)/b*(100-f),a),h=j.substring(0,j.indexOf("Animation")).toLowerCase(),i=h&&"-"+h+"-"||"";return l[e]||(m.insertRule("@"+i+"keyframes "+e+"{0%{opacity:"+g+"}"+f+"%{opacity:"+a+"}"+(f+.01)+"%{opacity:1}"+(f+b)%100+"%{opacity:"+a+"}100%{opacity:"+g+"}}",m.cssRules.length),l[e]=1),e}function d(a,b){var c,d,e=a.style;for(b=b.charAt(0).toUpperCase()+b.slice(1),d=0;d',c)}m.addRule(".spin-vml","behavior:url(#default#VML)"),h.prototype.lines=function(a,d){function f(){return e(c("group",{coordsize:k+" "+k,coordorigin:-j+" "+-j}),{width:k,height:k})}function h(a,h,i){b(m,b(e(f(),{rotation:360/d.lines*a+"deg",left:~~h}),b(e(c("roundrect",{arcsize:d.corners}),{width:j,height:d.width,left:d.radius,top:-d.width>>1,filter:i}),c("fill",{color:g(d.color,a),opacity:d.opacity}),c("stroke",{opacity:0}))))}var i,j=d.length+d.width,k=2*j,l=2*-(d.width+d.length)+"px",m=e(f(),{position:"absolute",top:l,left:l});if(d.shadow)for(i=1;i<=d.lines;i++)h(i,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(i=1;i<=d.lines;i++)h(i);return b(a,m)},h.prototype.opacity=function(a,b,c,d){var e=a.firstChild;d=d.shadow&&d.lines||0,e&&b+d>1)+"px"})}for(var i,k=0,l=(f.lines-1)*(1-f.direction)/2;k2. Tap anywhere to place the first anchor": "حرك إصبعك لتحديد موقع المرساة الأولى <‎2‎
open a chart and then try again.": "Textnotizen sind verfügbar nur auf der Chartseite. Bitte öffne einen Chart und versuche Sie es erneut.", "Color": "Farbe", "Aroon Up_input": "Aroon Tief", "Singapore": "Singapur", "Scales Lines": "Skalenlinien", "Type the interval number for munute charts (i.e. 5 if it is going to be a five minute chart). Or number plus letter for H (Hourly), D (Daily), W (Weekly), M (Monthly) intervals (i.e. D or 2H)": "Geben Sie die Intervallänge für Minuten-Charts ein (z.B. 5, wenn es sich um ein Fünf-Minuten-Diagramm handeln soll). Oder Zahl plus Buchstabe für die Intervalle H (Std.), D (Täglich), W (Wöchentlich), M (Monatlich) (z.B. D oder 2H).", "HLC Bars": "HLC-Balken", "Up Wave C": "Aufwärtswelle C", "Show Distance": "Abstand anzeigen", "Risk/Reward Ratio: {0}": "Chance/Risiko Verhältnis: {0}", "Volume Oscillator_study": "Volume Oscillator", "Williams Fractal_study": "Williams Fractal", "Merge Up": "Nach oben zusammenführen", "Right Margin": "Rechter Seitenrand", "Moscow": "Moskau", "Warsaw": "Warschau"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/el.json b/static/Kline/charting_library/static/localization/translations/el.json new file mode 100644 index 0000000..5583539 --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/el.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "ticks", "Months_interval": "Months", "Percent_input": "Percent", "in_dates": "σε", "roclen1_input": "roclen1", "smalen3_input": "smalen3", "OSC_input": "OSC", "Volume_study": "Όγκος", "Lips_input": "Lips", "Histogram": "Ιστόγραμμα", "Base Line_input": "Base Line", "Step": "Βήμα", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "Bollinger Bands", "Nov": "Νοε", "Upper_input": "Upper", "Sig_input": "Sig", "Move Up": "Μετακίνηση πάνω", "Scales Properties...": "Ιδιότητες Κλίμακας", "Count_input": "Count", "Anchored Text": "Καρφιτσωμένο κείμενο", "OnBalanceVolume_input": "OnBalanceVolume", "Cross_chart_type": "Cross", "H_in_legend": "H", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Accumulation/Distribution", "Rate Of Change_study": "Rate Of Change", "Color 7_input": "Color 7", "Chop Zone_study": "Chop Zone", "Scales Properties": "Ιδιότητες κλίμακας", "Remove All Indicators": "Αφαίρεση όλων των Τεχνικών Δεικτών", "Oscillator_input": "Oscillator", "Last Modified": "Τελευταία αλλαγή", "yay Color 0_input": "yay Color 0", "Labels": "Ετικέτες", "Chande Kroll Stop_study": "Chande Kroll Stop", "Hours_interval": "Hours", "Scale Right": "Δεξια Κλίμακα", "Money Flow_study": "Money Flow", "DEMA_input": "DEMA", "Toggle Percentage": "Ποσοστιαία κλίμακα", "Remove All Drawing Tools": "Αφαίρεση όλων των εργαλείων σχεδίασης", "Linear Regression Curve_study": "Linear Regression Curve", "Symbol_input": "Symbol", "increment_input": "increment", "Compare or Add Symbol...": "Σύγκριση ή Προσθήκη Συμβόλου...", "Label": "Ετικέτα", "smoothD_input": "smoothD", "Percentage": "Ποσοστό", "RSI Source_input": "RSI Source", "Ichimoku Cloud_study": "Ichimoku Cloud", "Toggle Log Scale": "Λογαριθμική κλίμακα", "Grid": "Πλέγμα", "Mass Index_study": "Mass Index", "Rename...": "Μετονομασία...", "Smoothing_input": "Smoothing", "Color 3_input": "Color 3", "Jaw Length_input": "Jaw Length", "Keltner Channels_study": "Keltner Channels", "Bands style_input": "Bands style", "Undo {0}": "Αναίρεση {0}", "Momentum_study": "Momentum", "MF_input": "MF", "m_dates": "m", "Fast length_input": "Fast length", "W_interval_short": "W", "Log Scale": "Λογαριθμική κλίμακα", "Equality Line_input": "Equality Line", "Short_input": "Short", "Down fractals_input": "Down fractals", "smalen2_input": "smalen2", "isCentered_input": "isCentered", "Klinger Oscillator_study": "Klinger Oscillator", "Style": "Στυλ", "SMI Ergodic Indicator/Oscillator_study": "SMI Ergodic Indicator/Oscillator", "Aug": "Αυγ", "No Overlapping Labels_scale_menu": "No Overlapping Labels", "Manage Drawings": "Διαχείριση σχεδίων", "No drawings yet": "Δεν υπάρχουν ακομα σχέδια", "Chande MO_input": "Chande MO", "jawLength_input": "jawLength", "TRIX_study": "TRIX", "RVGI_input": "RVGI", "signalLength_input": "signalLength", "d_dates": "d", "Source_compare": "Πηγή", "Correlation Coefficient_study": "Correlation Coefficient", "Text color": "Χρώμα κειμένου", "lipsLength_input": "lipsLength", "Short Length_input": "Short Length", "teethLength_input": "teethLength", "Visible Range_study": "Visible Range", "Lock All Drawing Tools": "Κλείδωμα Εργαλείων Σχεδίασης", "Long_input": "Long", "Default": "Προεπιλογή", "Properties...": "Ιδιότητες...", "MA Cross_study": "MA Cross", "Signal line period_input": "Signal line period", "Show/Hide": "Εμφάνιση/Απόκρυψη", "Price Volume Trend_study": "Price Volume Trend", "Auto Scale": "Αυτόματη κλίμακα", "Text": "Κείμενο", "F_data_mode_forbidden_letter": "F", "Long RoC Length_input": "Long RoC Length", "Length3_input": "Length3", "+DI_input": "+DI", "Length_input": "Length", "MACD_study": "MACD", "%s ago_time_range": "%s ago", "Zoom In": "Μεγέθυνση", "Date Range": "Εύρος ημ/νιας", "Show Price": "Εμφάνιση Τιμής", "Level_input": "Level", "Commodity Channel Index_study": "Commodity Channel Index", "Elder's Force Index_input": "Elder's Force Index", "Format": "Διαμόρφωση", "Move Down": "Μετακίνηση κάτω", "Text:": "Κείμενο:", "Aroon_study": "Aroon", "Active Symbol": "Ενεργό σύμβολο", "Lead 1_input": "Lead 1", "SMALen1_input": "SMALen1", "P_input": "P", "SMALen3_input": "SMALen3", "Average Directional Index_study": "Average Directional Index", "Fr_day_of_week": "Fr", "D_input": "D", "Font Size": "Μέγεθος γραμματοσειράς", "Change Interval": "Αλλαγή διαστήματος", "p_input": "p", "orders_up to ... orders": "orders", "Dot_hotkey": "Dot", "Lead 2_input": "Lead 2", "Save image": "Αποθήκευση εικόνας", "Vortex Indicator_study": "Vortex Indicator", "Apply": "Εφαρμογή", "Plots Background_study": "Plots Background", "Price Channel_study": "Price Channel", "Hide": "Απόκρυψη", "Scale Left": "Αριστερή Κλίμακα", "Jan": "Ιαν", "Text Alignment:": "Στοίχιση Κειμένου:", "R_data_mode_realtime_letter": "R", "Conversion Line_input": "Conversion Line", "Su_day_of_week": "Su", "Up fractals_input": "Up fractals", "Double EMA_study": "Double EMA", "Price Oscillator_study": "Price Oscillator", "Th_day_of_week": "Th", "Stay in Drawing Mode": "Παραμονή στη Λειτουργία Σχεδίασης", "Average True Range_study": "Average True Range", "Max value_input": "Max value", "MA Length_input": "MA Length", "in %s_time_range": "in %s", "UpperLimit_input": "UpperLimit", "sym_input": "sym", "DI Length_input": "DI Length", "SMI_input": "SMI", "Basis_input": "Basis", "Moving Average_study": "Κινητός μέσος όρος", "lengthStoch_input": "lengthStoch", "Remove from favorites": "Διαγραφή απο τα αγαπημένα", "Arnaud Legoux Moving Average_study": "Arnaud Legoux Moving Average", "Technical Analysis": "Τεχνική Ανάλυση", "Lower Band_input": "Lower Band", "VI +_input": "VI +", "Always Show Stats": "Εμφάνιζε πάντα στατιστικά", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "Simple ma(signal line)", "Show Labels": "Εμφάνιση Ετικετών", "Color 6_input": "Color 6", "CRSI_study": "CRSI", "Value_input": "Value", "Chaikin Oscillator_study": "Chaikin Oscillator", "ASI_study": "ASI", "Color Theme": "Χρωματικό Θέμα", "Awesome Oscillator_study": "Awesome Oscillator", "Bollinger Bands Width_input": "Bollinger Bands Width", "Signal Length_input": "Signal Length", "D_interval_short": "D", "Color 1_input": "Color 1", "Moving Average Weighted_study": "Moving Average Weighted", "Save": "Αποθήκευση", "Type": "Τύπος", "Short period_input": "Short period", "Fisher_input": "Fisher", "Volume Oscillator_study": "Ταλαντωτής όγκου", "S_data_mode_snapshot_letter": "S", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "Upper Deviation", "Accumulative Swing Index_study": "Accumulative Swing Index", "Move_input": "Move", "NV_input": "NV", "Choppiness Index_study": "Choppiness Index", "Merge Down": "Συγχώνευση προς τα κάτω", "Delete": "Διαγραφή", "Length MA_input": "Length MA", "percent_input": "percent", "Apr": "Απρ", "{0} copy": "{0} αντιγράφω", "Median_input": "Median", "Accumulation/Distribution_input": "Accumulation/Distribution", "C_in_legend": "C", "Weeks_interval": "Weeks", "smoothK_input": "smoothK", "Percentage_scale_menu": "Ποσοστό", "MOM_input": "MOM", "h_interval_short": "h", "top": "πάνω", "Send Backward": "Μετακίνηση προς τα πίσω", "Custom color...": "Αλλο χρώμα...", "TRIX_input": "TRIX", "Periods_input": "Periods", "Forecast": "Πρόβλεψη", "Histogram_input": "Histogram", "StdDev_input": "StdDev", "EMA Cross_study": "EMA Cross", "Conversion Line Periods_input": "Conversion Line Periods", "Add Symbol_compare_or_add_symbol_dialog": "Add Symbol", "Williams %R_study": "Williams %R", "Symbol": "Σύμβολο", "Precision": "Ακρίβεια", "RSI_input": "RSI", "Format...": "Διαμόρφωση...", "Toggle Auto Scale": "Αυτόματη κλίμακα", "Search": "Αναζήτησή", "Zig Zag_study": "Zig Zag", "SUCCESS": "ΕΠΙΤΥΧΙΑ", "Long period_input": "Long period", "length_input": "length", "roclen4_input": "roclen4", "Price Line": "Γραμμή Τιμής", "Zoom Out": "Σμίκρυνση", "Jul": "Ιουλ", "Visual Order": "Σειρά Εμφάνισης", "Slow length_input": "Slow length", "Sep": "Σεπ", "TEMA_input": "TEMA", "q_input": "q", "Advance/Decline_study": "Advance/Decline", "Drawings": "Σχέδια", "Cancel": "Άκυρο", "Ultimate Oscillator_study": "Ultimate Oscillator", "Growing_input": "Growing", "Plot_input": "Plot", "Color 8_input": "Color 8", "Indicators, Fundamentals, Economy and Add-ons": "Δείκτες, Θεμελιώδη, οικονομικά στοιχεία και πρόσθετα", "h_dates": "ω", "Bollinger Bands Width_study": "Bollinger Bands Width", "Top Labels": "Ετικέτες Πάνω", "Overbought_input": "Overbought", "DPO_input": "DPO", "TimeZone": "Ζώνη ώρας", "Tu_day_of_week": "Tu", "Period_input": "Period", "Trigger_input": "Trigger", "SigLen_input": "SigLen", "Price": "Τιμή", "Color 2_input": "Color 2", "Show Prices": "Εμφάνιση Τιμών", "Background color 2": "Χρώμα υπόβαθρου 2", "Background color 1": "Χρωμα υπόβαθρου 1", "MA/EMA Cross_study": "MA/EMA Cross", "Williams Alligator_study": "Williams Alligator", "ROCLen1_input": "ROCLen1", "M_interval_short": "M", "Chaikin Oscillator_input": "Chaikin Oscillator", "Zero Line_input": "Zero Line", "Increment_input": "Increment", "Days_interval": "Days", "Net Volume_study": "Net Volume", "Historical Volatility_study": "Historical Volatility", "Lock": "Κλείδωμα", "length14_input": "length14", "High": "Υψηλό", "Lock/Unlock": "Κλείδωμα/Ξεκλείδωμα", "Color 0_input": "Color 0", "maximum_input": "maximum", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "VWMA_study": "VWMA", "fastLength_input": "fastLength", "Width": "Πλάτος", "Use Lower Deviation_input": "Use Lower Deviation", "Falling_input": "Falling", "Divisor_input": "Divisor", "Dec": "Δεκ", "length7_input": "length7", "Undo": "Αναίρεση", "Window Size_input": "Window Size", "Reset Scale": "Επαναφορά Κλίμακας", "Long Length_input": "Long Length", "%R_input": "%R", "Chart Properties": "Ιδιότητες γραφήματος", "bars_margin": "bars", "Show Angle": "Εμφάνιση γωνίας", "Objects Tree...": "Δέντρο Αντικειμένων", "Length1_input": "Length1", "x_input": "x", "Save As...": "Αποθήκευση ως...", "Parabolic SAR_study": "Parabolic SAR", "UO_input": "UO", "Stats Text Color": "Χρώμα κειμένου στατιστικών", "Short RoC Length_input": "Short RoC Length", "Jaw_input": "Jaw", "Help": "Βοήθεια", "Coppock Curve_study": "Coppock Curve", "Reset Chart": "Επαναφορά Γραφήματος", "Marker Color": "Χρωμα υπογράμμισης", "Open": "Άνοιγμα", "YES": "ΝΑΙ", "longlen_input": "longlen", "Moving Average Exponential_study": "Moving Average Exponential", "s_dates": "s", "Open Interval Dialog": "Άνοιγμα διαλόγου διαστήματος", "Balance of Power_study": "Balance of Power", "EOM_input": "EOM", "Indicators": "Τέχν. Δείκτες", "%D_input": "%D", "Offset_input": "Offset", "HV_input": "HV", "Start_input": "Αρχή", "Oct": "Οκτ", "ROC_input": "ROC", "Send to Back": "Τοποθέτηση πίσω", "Color 4_input": "Color 4", "Prices": "Τιμές", "ADX Smoothing_input": "ADX Smoothing", "Settings": "Ρυθμίσεις", "We_day_of_week": "We", "Hide All Drawing Tools": "Απόκρυψη Εργαλείων Σχεδίασης", "MA_input": "MA", "Length2_input": "Length2", "Multiplier_input": "Multiplier", "Session Volume_study": "Session Volume", "Image URL": "URL εικόνας", "SMI Ergodic Oscillator_input": "SMI Ergodic Oscillator", "Show Objects Tree": "Εμφάνιση Δέντρου Αντικειμένων", "Price:": "Τιμή:", "Bring to Front": "Τοποθέτηση μπροστά", "Add Symbol": "Εισαγωγή Συμβόλου", "C_data_mode_connecting_letter": "C", "SMALen4_input": "SMALen4", "Invalid Symbol": "Άκυρο σύμβολο", "yay Color 1_input": "yay Color 1", "CHOP_input": "CHOP", "Middle_input": "Middle", "WMA Length_input": "WMA Length", "Low": "Χαμηλό", "Borders": "Περιθώρια", "loading...": "ενημέρωση...", "Closed_line_tool_position": "Closed", "Columns": "Στήλες", "Jun": "Ιουν", "Least Squares Moving Average_study": "Κινητός μέσος ελαχίστων τετραγώνων", "Source_input": "Source", "%K_input": "%K", "Log Scale_scale_menu": "Λογαριθμική Κλίμακα", "len_input": "len", "Measure (Shift + Click on the chart)": "Μέτρηση (Shift + Click στο γράφημα)", "RSI Length_input": "RSI Length", "Long length_input": "Long length", "Base Line Periods_input": "Base Line Periods", "Relative Strength Index_study": "Relative Strength Index", "roclen3_input": "roclen3", "siglen_input": "siglen", "Slash_hotkey": "Slash", "No symbols matched your criteria": "Δε βρέθηκαν σύμβολα", "Icon": "Εικονίδιο", "lengthRSI_input": "lengthRSI", "Teeth Length_input": "Teeth Length", "Indicator_input": "Indicator", "Athens": "Αθηνα", "Q_input": "Q", "Relative Vigor Index_study": "Relative Vigor Index", "Envelope_study": "Envelope", "show MA_input": "show MA", "O_in_legend": "O", "Confirmation": "Επιβεβαίωση", "useTrueRange_input": "useTrueRange", "Show Date/Time Range": "Εμφάνιση εύρους ημ/νιας", "Minutes_interval": "Minutes", "-DI_input": "-DI", "Copy": "Αντιγραφή", "deviation_input": "deviation", "long_input": "long", "Time Interval": "Χρονικό εύρος", "Displacement_input": "Displacement", "Chaikin Money Flow_study": "Chaikin Money Flow", "Ease Of Movement_study": "Ease Of Movement", "Defaults": "Προεπιλογές", "Oversold_input": "Oversold", "short_input": "short", "depth_input": "depth", "VWAP_study": "VWAP", "Detrended Price Oscillator_input": "Detrended Price Oscillator", "Mo_day_of_week": "Mo", "ROC Length_input": "ROC Length", "X_input": "X", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "Aroon Down", "Clone": "Κλωνοποίηση", "left": "δεξιά", "Lock scale": "Κλείδωμα κλίμακας", "Limit_input": "Limit", "smalen1_input": "smalen1", "Color based on previous close_input": "Color based on previous close", "Price_input": "Price", "Relative Volatility Index_study": "Relative Volatility Index", "PVT_input": "PVT", "Hull Moving Average_study": "Hull Moving Average", "Bring Forward": "Μετακίνηση μπροστά", "Zero_input": "Zero", "Company Comparison": "Σύγκριση Εταιρείας", "Stochastic Length_input": "Stochastic Length", "mult_input": "mult", "Signal smoothing_input": "Signal smoothing", "E_data_mode_end_of_day_letter": "E", "Stochastic RSI_study": "Stochastic RSI", "Signal_input": "Signal", "Fullscreen mode": "Λειτουργία πλήρους οθόνης", "K_input": "K", "ROCLen3_input": "ROCLen3", "Text Color": "Χρώμα Κειμένου", "Note": "Σημείωση", "Moving Average Channel_study": "Moving Average Channel", "Show": "Εμφάνιση", "Lower_input": "Lower", "Elder's Force Index_study": "Elder's Force Index", "Stochastic_study": "Stochastic", "Bollinger Bands %B_study": "Bollinger Bands %B", "Time Zone": "Ζώνη Ώρας", "Donchian Channels_study": "Donchian Channels", "Upper Band_input": "Upper Band", "start_input": "start", "No indicators matched your criteria.": "Δε βρέθηκαν Τέχνικο. Δείκτες που να ταιριάζουν με τα κριτήρια αναζήτησης", "Short length_input": "Short length", "Triple EMA_study": "Triple EMA", "Smoothed Moving Average_study": "Smoothed Moving Average", "Show Text": "Εμφάνιση Κειμένου", "Lagging Span 2 Periods_input": "Lagging Span 2 Periods", "Teeth_input": "Teeth", "exponential_input": "exponential", "Directional Movement_study": "Directional Movement", "roclen2_input": "roclen2", "Chande Momentum Oscillator_study": "Chande Momentum Oscillator", "Not applicable": "Μη εφαρμόσιμο", "Bollinger Bands %B_input": "Bollinger Bands %B", "Shapes_input": "Shapes", "Lips Length_input": "Lips Length", "Use Upper Deviation_input": "Use Upper Deviation", "L_in_legend": "L", "shortlen_input": "shortlen", "Exponential_input": "Exponential", "Stay In Drawing Mode": "Παραμονή στη Λειτουργία Σχεδίασης", "Comment": "Σχόλιο", "Connors RSI_study": "Connors RSI", "Left Labels": "Ετικέτες Δεξιά", "Insert Indicator...": "Προσθήκη Τεχικού Δείκτη...", "ADR_B_input": "ADR_B", "Change Symbol...": "Αλλαγή Συμβόλου...", "Feb": "Φεβ", "Transparency": "Διαφάνεια", "length28_input": "length28", "Objects Tree": "Δέντρο αντικειμένων", "Add": "Προσθήκη", "On Balance Volume_study": "On Balance Volume", "Hull MA_input": "Hull MA", "Lock Scale": "Κλεϊδωμα Κλίμακας", "distance: {0}": "απόσταση: {0}", "log": "λογαριθμική", "NO": "ΟΧΙ", "Top Margin": "Περιθώριο Πάνω", "Insert Drawing Tool": "Προσθήκη Εργαλείου Σχεδίασης", "Show Price Range": "Εμφάνιση Εύρους Τιμών", "Correlation_input": "Correlation", "Anchored Note": "Καρφιτσωμένη σημείωση", "UpDown Length_input": "UpDown Length", "Background Color": "Χρώμα Υπόβαθρου", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "slowLength", "Click to set a point": "Κάντε κλικ για να δημιουργία σημείου", "Sa_day_of_week": "Sa", "RVI_input": "RVI", "Centered_input": "Centered", "True Strength Indicator_study": "True Strength Indicator", "Simple ma(oscillator)_input": "Simple ma(oscillator)", "Compare": "Σύγκριση", "Fisher Transform_study": "Fisher Transform", "Length EMA_input": "Length EMA", "FAILURE": "ΑΠΟΤΥΧΙΑ", "MA with EMA Cross_study": "MA with EMA Cross", "Close": "Κλείσιμο", "ParabolicSAR_input": "ParabolicSAR", "MACD_input": "MACD", "Open_line_tool_position": "Opened", "Lagging Span_input": "Lagging Span", "Label Background": "Υπόβαθρο Ετικέτας", "ADX smoothing_input": "ADX smoothing", "Mar": "Μαρ", "May": "Μαι", "Detrended Price Oscillator_study": "Detrended Price Oscillator", "Color 5_input": "Color 5", "McGinley Dynamic_study": "McGinley Dynamic", "auto_scale": "αυτοματο", "Background": "Υπόβαθρο", "VWMA_input": "VWMA", "Lower Deviation_input": "Lower Deviation", "ATR_input": "ATR", "Add to favorites": "Προσθήκη στα αγαπημένα", "ADX_input": "ADX", "Remove": "Αφαίρεση", "Crosses_input": "Crosses", "KST_input": "KST", "LowerLimit_input": "LowerLimit", "Know Sure Thing_study": "Know Sure Thing", "Compare...": "Σύγκριση...", "Compare or Add Symbol": "Σύγκριση ή Προσθήκη Συμβόλου", "Color": "Χρώμα", "Aroon Up_input": "Aroon Up", "Show Distance": "Εμφάνιση Διαστήματος", "Fixed Range_study": "Fixed Range", "Williams Fractal_study": "Williams Fractal", "Merge Up": "Συγχώνευση προς τα πάνω", "Right Margin": "Περιθώριο Δεξιά"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/en.json b/static/Kline/charting_library/static/localization/translations/en.json new file mode 100644 index 0000000..e264d2f --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/en.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "ticks", "Months_interval": "Months", "Percent_input": "Percent", "in_dates": "in", "roclen1_input": "roclen1", "OSC_input": "OSC", "Volume_study": "Volume", "Lips_input": "Lips", "Base Line_input": "Base Line", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "Bollinger Bands", "Upper_input": "Upper", "Sig_input": "Sig", "Count_input": "Count", "OnBalanceVolume_input": "OnBalanceVolume", "Cross_chart_type": "Cross", "H_in_legend": "H", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Accumulation/Distribution", "Rate Of Change_study": "Rate Of Change", "Color 7_input": "Color 7", "Chop Zone_study": "Chop Zone", "Oscillator_input": "Oscillator", "yay Color 0_input": "yay Color 0", "CRSI_study": "CRSI", "Chande Kroll Stop_study": "Chande Kroll Stop", "Hours_interval": "Hours", "Money Flow_study": "Money Flow", "DEMA_input": "DEMA", "Linear Regression Curve_study": "Linear Regression Curve", "Symbol_input": "Symbol", "increment_input": "increment", "smoothD_input": "smoothD", "RSI Source_input": "RSI Source", "Ichimoku Cloud_study": "Ichimoku Cloud", "Mass Index_study": "Mass Index", "Smoothing_input": "Smoothing", "Color 3_input": "Color 3", "Jaw Length_input": "Jaw Length", "Keltner Channels_study": "Keltner Channels", "Bands style_input": "Bands style", "Momentum_study": "Momentum", "MF_input": "MF", "Fast length_input": "Fast length", "W_interval_short": "W", "Equality Line_input": "Equality Line", "Short_input": "Short", "Down fractals_input": "Down fractals", "smalen2_input": "smalen2", "isCentered_input": "isCentered", "Klinger Oscillator_study": "Klinger Oscillator", "SMI Ergodic Indicator/Oscillator_study": "SMI Ergodic Indicator/Oscillator", "No Overlapping Labels_scale_menu": "No Overlapping Labels", "Chande MO_input": "Chande MO", "jawLength_input": "jawLength", "TRIX_study": "TRIX", "RVGI_input": "RVGI", "signalLength_input": "signalLength", "d_dates": "d", "Source_compare": "Source", "Correlation Coefficient_study": "Correlation Coefficient", "lipsLength_input": "lipsLength", "Short Length_input": "Short Length", "teethLength_input": "teethLength", "Visible Range_study": "Visible Range", "Connors RSI_study": "Connors RSI", "MA Cross_study": "MA Cross", "Signal line period_input": "Signal line period", "Price Volume Trend_study": "Price Volume Trend", "F_data_mode_forbidden_letter": "F", "Long RoC Length_input": "Long RoC Length", "Length3_input": "Length3", "+DI_input": "+DI", "MACD_study": "MACD", "%s ago_time_range": "%s ago", "Level_input": "Level", "Commodity Channel Index_study": "Commodity Channel Index", "Elder's Force Index_input": "Elder's Force Index", "Aroon_study": "Aroon", "h_dates": "h", "SMALen1_input": "SMALen1", "P_input": "P", "SMALen3_input": "SMALen3", "Average Directional Index_study": "Average Directional Index", "Fr_day_of_week": "Fr", "D_input": "D", "p_input": "p", "orders_up to ... orders": "orders", "Dot_hotkey": "Dot", "Lead 2_input": "Lead 2", "Vortex Indicator_study": "Vortex Indicator", "Plots Background_study": "Plots Background", "Price Channel_study": "Price Channel", "R_data_mode_realtime_letter": "R", "Conversion Line_input": "Conversion Line", "Su_day_of_week": "Su", "Up fractals_input": "Up fractals", "Double EMA_study": "Double EMA", "Price Oscillator_study": "Price Oscillator", "Th_day_of_week": "Th", "Average True Range_study": "Average True Range", "Max value_input": "Max value", "MA Length_input": "MA Length", "in %s_time_range": "in %s", "UpperLimit_input": "UpperLimit", "sym_input": "sym", "DI Length_input": "DI Length", "SMI_input": "SMI", "Basis_input": "Basis", "Moving Average_study": "Moving Average", "lengthStoch_input": "lengthStoch", "Smoothed Moving Average_study": "Smoothed Moving Average", "Lower Band_input": "Lower Band", "VI +_input": "VI +", "Lead 1_input": "Lead 1", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "Simple ma(signal line)", "Color 6_input": "Color 6", "Value_input": "Value", "Chaikin Oscillator_study": "Chaikin Oscillator", "ASI_study": "ASI", "Awesome Oscillator_study": "Awesome Oscillator", "Bollinger Bands Width_input": "Bollinger Bands Width", "Signal Length_input": "Signal Length", "D_interval_short": "D", "Color 1_input": "Color 1", "Moving Average Weighted_study": "Moving Average Weighted", "Short period_input": "Short period", "Fisher_input": "Fisher", "Volume Oscillator_study": "Volume Oscillator", "S_data_mode_snapshot_letter": "S", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "Upper Deviation", "Accumulative Swing Index_study": "Accumulative Swing Index", "Move_input": "Move", "NV_input": "NV", "Choppiness Index_study": "Choppiness Index", "Length MA_input": "Length MA", "percent_input": "percent", "Length_input": "Length", "Accumulation/Distribution_input": "Accumulation/Distribution", "C_in_legend": "C", "Weeks_interval": "Weeks", "smoothK_input": "smoothK", "Percentage_scale_menu": "Percentage", "MOM_input": "MOM", "h_interval_short": "h", "TRIX_input": "TRIX", "Periods_input": "Periods", "Histogram_input": "Histogram", "StdDev_input": "StdDev", "EMA Cross_study": "EMA Cross", "Relative Strength Index_study": "Relative Strength Index", "-DI_input": "-DI", "short_input": "short", "RSI_input": "RSI", "Zig Zag_study": "Zig Zag", "Detrended Price Oscillator_input": "Detrended Price Oscillator", "length_input": "length", "roclen4_input": "roclen4", "Add Symbol_compare_or_add_symbol_dialog": "Add Symbol", "Slow length_input": "Slow length", "Conversion Line Periods_input": "Conversion Line Periods", "TEMA_input": "TEMA", "q_input": "q", "Advance/Decline_study": "Advance/Decline", "Ultimate Oscillator_study": "Ultimate Oscillator", "Growing_input": "Growing", "Plot_input": "Plot", "Color 8_input": "Color 8", "Bollinger Bands Width_study": "Bollinger Bands Width", "roclen3_input": "roclen3", "Overbought_input": "Overbought", "DPO_input": "DPO", "Relative Vigor Index_study": "Relative Vigor Index", "Tu_day_of_week": "Tu", "Period_input": "Period", "Trigger_input": "Trigger", "SigLen_input": "SigLen", "Color 2_input": "Color 2", "MA/EMA Cross_study": "MA/EMA Cross", "Williams Alligator_study": "Williams Alligator", "ROCLen1_input": "ROCLen1", "M_interval_short": "M", "Chaikin Oscillator_input": "Chaikin Oscillator", "Zero Line_input": "Zero Line", "Increment_input": "Increment", "Days_interval": "Days", "Net Volume_study": "Net Volume", "m_dates": "m", "length14_input": "length14", "Color 0_input": "Color 0", "maximum_input": "maximum", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "fastLength_input": "fastLength", "Historical Volatility_study": "Historical Volatility", "Use Lower Deviation_input": "Use Lower Deviation", "Falling_input": "Falling", "Divisor_input": "Divisor", "length7_input": "length7", "Window Size_input": "Window Size", "Long Length_input": "Long Length", "%R_input": "%R", "bars_margin": "bars", "Simple ma(oscillator)_input": "Simple ma(oscillator)", "Length1_input": "Length1", "x_input": "x", "Parabolic SAR_study": "Parabolic SAR", "UO_input": "UO", "Short RoC Length_input": "Short RoC Length", "Jaw_input": "Jaw", "Coppock Curve_study": "Coppock Curve", "longlen_input": "longlen", "Moving Average Exponential_study": "Moving Average Exponential", "s_dates": "s", "Balance of Power_study": "Balance of Power", "EOM_input": "EOM", "%D_input": "%D", "Offset_input": "Offset", "HV_input": "HV", "Start_input": "Start", "ROC_input": "ROC", "Color 4_input": "Color 4", "ADX Smoothing_input": "ADX Smoothing", "We_day_of_week": "We", "MA_input": "MA", "Length2_input": "Length2", "Multiplier_input": "Multiplier", "Session Volume_study": "Session Volume", "SMI Ergodic Oscillator_input": "SMI Ergodic Oscillator", "C_data_mode_connecting_letter": "C", "SMALen4_input": "SMALen4", "yay Color 1_input": "yay Color 1", "CHOP_input": "CHOP", "Middle_input": "Middle", "WMA Length_input": "WMA Length", "Stochastic_study": "Stochastic", "Closed_line_tool_position": "Closed", "On Balance Volume_study": "On Balance Volume", "Source_input": "Source", "%K_input": "%K", "Log Scale_scale_menu": "Log Scale", "len_input": "len", "RSI Length_input": "RSI Length", "Long length_input": "Long length", "Base Line Periods_input": "Base Line Periods", "siglen_input": "siglen", "Slash_hotkey": "Slash", "lengthRSI_input": "lengthRSI", "Indicator_input": "Indicator", "Q_input": "Q", "Envelope_study": "Envelope", "show MA_input": "show MA", "O_in_legend": "O", "useTrueRange_input": "useTrueRange", "Minutes_interval": "Minutes", "deviation_input": "deviation", "long_input": "long", "VWMA_study": "VWMA", "Displacement_input": "Displacement", "Chaikin Money Flow_study": "Chaikin Money Flow", "Ease Of Movement_study": "Ease Of Movement", "Oversold_input": "Oversold", "Williams %R_study": "Williams %R", "depth_input": "depth", "VWAP_study": "VWAP", "Long period_input": "Long period", "Mo_day_of_week": "Mo", "ROC Length_input": "ROC Length", "X_input": "X", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "Aroon Down", "Limit_input": "Limit", "smalen1_input": "smalen1", "Color based on previous close_input": "Color based on previous close", "Price_input": "Price", "Relative Volatility Index_study": "Relative Volatility Index", "PVT_input": "PVT", "Hull Moving Average_study": "Hull Moving Average", "Zero_input": "Zero", "Stochastic Length_input": "Stochastic Length", "mult_input": "mult", "Signal smoothing_input": "Signal smoothing", "E_data_mode_end_of_day_letter": "E", "Stochastic RSI_study": "Stochastic RSI", "K_input": "K", "ROCLen3_input": "ROCLen3", "Signal_input": "Signal", "Moving Average Channel_study": "Moving Average Channel", "Lower_input": "Lower", "Elder's Force Index_study": "Elder's Force Index", "Bollinger Bands %B_study": "Bollinger Bands %B", "Donchian Channels_study": "Donchian Channels", "Upper Band_input": "Upper Band", "start_input": "start", "Short length_input": "Short length", "Triple EMA_study": "Triple EMA", "Lagging Span 2 Periods_input": "Lagging Span 2 Periods", "Teeth_input": "Teeth", "exponential_input": "exponential", "Directional Movement_study": "Directional Movement", "roclen2_input": "roclen2", "Chande Momentum Oscillator_study": "Chande Momentum Oscillator", "Bollinger Bands %B_input": "Bollinger Bands %B", "Lips Length_input": "Lips Length", "Use Upper Deviation_input": "Use Upper Deviation", "L_in_legend": "L", "shortlen_input": "shortlen", "Exponential_input": "Exponential", "Long_input": "Long", "ADR_B_input": "ADR_B", "length28_input": "length28", "Arnaud Legoux Moving Average_study": "Arnaud Legoux Moving Average", "Least Squares Moving Average_study": "Least Squares Moving Average", "Hull MA_input": "Hull MA", "Median_input": "Median", "Correlation_input": "Correlation", "UpDown Length_input": "UpDown Length", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "slowLength", "Sa_day_of_week": "Sa", "RVI_input": "RVI", "Centered_input": "Centered", "True Strength Indicator_study": "True Strength Indicator", "smalen3_input": "smalen3", "Fisher Transform_study": "Fisher Transform", "Length EMA_input": "Length EMA", "Teeth Length_input": "Teeth Length", "MA with EMA Cross_study": "MA with EMA Cross", "ParabolicSAR_input": "ParabolicSAR", "MACD_input": "MACD", "Open_line_tool_position": "Open", "Lagging Span_input": "Lagging Span", "ADX smoothing_input": "ADX smoothing", "Detrended Price Oscillator_study": "Detrended Price Oscillator", "Color 5_input": "Color 5", "McGinley Dynamic_study": "McGinley Dynamic", "auto_scale": "auto", "VWMA_input": "VWMA", "Lower Deviation_input": "Lower Deviation", "ATR_input": "ATR", "Shapes_input": "Shapes", "ADX_input": "ADX", "Crosses_input": "Crosses", "KST_input": "KST", "LowerLimit_input": "LowerLimit", "Know Sure Thing_study": "Know Sure Thing", "Aroon Up_input": "Aroon Up", "Fixed Range_study": "Fixed Range", "Williams Fractal_study": "Williams Fractal"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/es.json b/static/Kline/charting_library/static/localization/translations/es.json new file mode 100644 index 0000000..90f1bf5 --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/es.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "ticks", "Months_interval": "Meses", "Realtime": "En tiempo real", "Callout": "Leyenda", "Sync to all charts": "Sincronizar en todos los gráficos", "month": "mes", "London": "Londres", "roclen1_input": "roclen1", "Unmerge Down": "Separar hacia abajo", "Percents": "Porcentajes", "Search Note": "Buscar nota", "Minor": "Menor", "Do you really want to delete Chart Layout '{0}' ?": "¿Está seguro de que desea eliminar el perfil del gráfico '{0}'?", "Quotes are delayed by {0} min and updated every 30 seconds": "Los precios se retrasarán {0} minutos y se actualizarán cada 30 segundos", "Magnet Mode": "Modo imán", "Grand Supercycle": "Gran superciclo", "OSC_input": "OSC", "Hide alert label line": "Ocultar línea de etiqueta de la alerta", "Volume_study": "Volumen", "Lips_input": "Labios", "Show real prices on price scale (instead of Heikin-Ashi price)": "Mostrar precios reales en la escala de precios (en vez de los precios Heikin-Ashi)", "Histogram": "Histograma", "Base Line_input": "Línea base", "Step": "Paso", "Insert Study Template": "Insertar plantilla de estudio", "Fib Time Zone": "Zona horaria de Fibonacci", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "Bandas de Bollinger", "Show/Hide": "Mostrar/ocultar", "Upper_input": "Superior", "exponential_input": "exponencial", "Move Up": "Subir", "Symbol Info": "Información del símbolo", "This indicator cannot be applied to another indicator": "Este indicador no se puede aplicar a otro indicador", "Scales Properties...": "Propiedades de las escalas", "Count_input": "Cuenta", "Full Circles": "Círculos completos", "Industry": "Industria", "OnBalanceVolume_input": "OnBalanceVolume", "Cross_chart_type": "Cruce", "H_in_legend": "H", "a day": "un día", "Pitchfork": "Tridente o Pitchfork", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Acumulación/distribución", "Rate Of Change_study": "Indicador de la tasa de cambio", "in_dates": "en", "Clone": "Clonar", "Color 7_input": "Color 7", "Chop Zone_study": "Zona de corte", "Bar #": "Número de barra", "Scales Properties": "Propiedades de las escalas", "Trend-Based Fib Time": "Zona temporal de Fibonacci basada en tendencias", "Remove All Indicators": "Quitar todos los indicadores", "Oscillator_input": "Oscilador", "Last Modified": "Ultima modificación", "yay Color 0_input": "yay Color 0", "Labels": "Etiquetas", "Chande Kroll Stop_study": "Chande Kroll Stop", "Hours_interval": "Horas", "Allow up to": "Permitir hasta", "Scale Right": "Escala derecha", "Money Flow_study": "Flujo monetario", "siglen_input": "siglen", "Indicator Labels": "Etiquetas de los indicadores", "__specialSymbolOpen__Tomorrow at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Mañana a las__specialSymbolClose__ __dayTime__", "Toggle Percentage": "Alternar porcentaje", "Remove All Drawing Tools": "Quitar todas las herramientas de dibujo", "Remove all line tools for ": "Quitar todas las herramientas de líneas para", "Linear Regression Curve_study": "Curva de regresion lineal", "Symbol_input": "Símbolo", "Currency": "Divisa", "increment_input": "incremento", "Compare or Add Symbol...": "Comparar/añadir símbolo...", "__specialSymbolOpen__Last__specialSymbolClose__ __dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Ultimo__specialSymbolClose__\n__dayName__\n__specialSymbolOpen__a las__specialSymbolClose__\n__dayTime__", "Save Chart Layout": "Guardar diseño de gráfico", "Number Of Line": "Número de la línea", "Label": "Etiqueta", "Post Market": "Período de negociación posterior al cierre de mercado", "second": "segundo", "Change Hours To": "Cambiar horas a", "smoothD_input": "smoothD", "Falling_input": "Descendente", "X_input": "X", "Risk/Reward short": "Riesgo/beneficio a corto", "Donchian Channels_study": "Canales de Donchian", "Entry price:": "Precio de entrada:", "Circles": "Círculos", "Head": "Cabeza", "Stop: {0} ({1}) {2}, Amount: {3}": "Stop: {0} ({1}) {2}, Cantidad: {3}", "Mirrored": "Rotar verticalmente", "Ichimoku Cloud_study": "Nube Ichimoku", "Signal smoothing_input": "Suavizado de señales", "Use Upper Deviation_input": "Utilizar la desviación superior", "Toggle Auto Scale": "Alternar la escala automática", "Grid": "Rejilla", "Triangle Down": "Triángulo hacia abajo", "Apply Elliot Wave Minor": "Aplicar onda de Elliott menor", "Slippage": "Deslizamiento", "Smoothing_input": "Suavizado", "Color 3_input": "Color 3", "Jaw Length_input": "Longitud de la mandíbula", "Inside": "Interior", "Delete all drawing for this symbol": "Eliminar todos los dibujos para este símbolo", "Fundamentals": "Fundamentos", "Keltner Channels_study": "Canales Keltner", "Long Position": "Posición larga", "Bands style_input": "Estilo de bandas", "Undo {0}": "Deshacer {0}", "With Markers": "Con marcadores", "Momentum_study": "Momentum", "MF_input": "MF", "Gann Box": "Cuadro de Gann", "Switch to the next chart": "Cambiar al siguiente gráfico", "charts by TradingView": "gráficos por TradingView", "Fast length_input": "Longitud rápida", "Apply Elliot Wave": "Aplicar onda de Elliott", "Disjoint Angle": "Ángulo disjunto", "Supermillennium": "Supermilenio", "W_interval_short": "S", "Show Only Future Events": "Mostrar solo eventos futuros", "Log Scale": "Escala logarítmica", "Line - High": "Línea - Alta", "Equality Line_input": "Línea de igualdad", "Short_input": "Corto", "Fib Wedge": "Cuña de Fibonacci", "Line": "Línea", "Session": "Sesión", "Down fractals_input": "Fractales bajistas", "Fib Retracement": "Retroceso de Fibonacci", "smalen2_input": "smalen2", "isCentered_input": "estáCentrado", "Border": "Borde", "Klinger Oscillator_study": "Oscilador Klinger", "Absolute": "Absoluto", "Tue": "Mar", "Style": "Estilo", "Show Left Scale": "Mostrar escala de la izquierda", "SMI Ergodic Indicator/Oscillator_study": "Indicador/oscilador ergódico SMI", "Aug": "Ago", "Last available bar": "Última barra disponible", "Manage Drawings": "Gestionar los dibujos", "Analyze Trade Setup": "Analizar configuración de las transacciones", "No drawings yet": "No hay dibujos todavía", "SMI_input": "SMI", "Chande MO_input": "Oscilador de momento de Chande", "jawLength_input": "jawLength", "TRIX_study": "TRIX (media exponencial triple)", "Show Bars Range": "Mostrar rango de barras", "RVGI_input": "RVGI", "Last edited ": "Editado por última vez", "signalLength_input": "signalLength", "%s ago_time_range": "hace %s", "Reset Settings": "Restablecer ajustes", "d_dates": "d", "Point & Figure": "Punto y Figura (PnF)", "August": "Agosto", "Recalculate After Order filled": "Recalcular después de completar la orden", "Source_compare": "Fuente", "Down bars": "Barras hacia abajo", "Correlation Coefficient_study": "Coeficiente de correlación", "Delayed": "Retrasada", "Bottom Labels": "Etiquetas de la parte inferior", "Text color": "Color del texto", "Levels": "Niveles", "Short Length_input": "Longitud corta", "teethLength_input": "teethLength", "Visible Range_study": "Visible Range", "Open {{symbol}} Text Note": "Abrir nota de texto {{symbol}}", "October": "Octubre", "Lock All Drawing Tools": "Bloquear todas las herramientas de dibujo", "Long_input": "Largo", "Right End": "Extremo derecho", "Show Symbol Last Value": "Mostrar valor del último símbolo", "Head & Shoulders": "Cabeza y hombros", "Do you really want to delete Study Template '{0}' ?": "¿Está seguro de que desea eliminar la plantilla de indicador '{0}'?", "Favorite Drawings Toolbar": "Barra de herramientas de dibujo favoritas", "Properties...": "Propiedades...", "Reset Scale": "Restablecer escala", "MA Cross_study": "Cruce de medias móviles", "Trend Angle": "Ángulo de tendencia", "Snapshot": "Imagen", "Crosshair": "Retícula", "Signal line period_input": "Período de la línea de señales", "Timezone/Sessions Properties...": "Propiedades zona horaria/sesiones", "Line Break": "Salto de línea", "Quantity": "Cantidad", "Price Volume Trend_study": "Tendencia de volumen según el precio", "Auto Scale": "Escala automática", "hour": "hora", "Delete chart layout": "Eliminar el perfil del gráfico", "Text": "Тexto", "F_data_mode_forbidden_letter": "F", "Risk/Reward long": "Riesgo/beneficio a largo", "Apr": "Abr", "Long RoC Length_input": "Longitud larga del tipo de cambio (RoC) ", "Length3_input": "Longitud3", "+DI_input": "+DI", "Length_input": "Longitud", "Use one color": "Utilizar un color", "Chart Properties": "Propiedades del gráfico", "No Overlapping Labels_scale_menu": "Sin etiquetas superpuestas", "Exit Full Screen (ESC)": "Salir de la pantalla completa (ESC)", "MACD_study": "Convergencia/divergencia de la media móvil (MACD)", "Show Economic Events on Chart": "Mostrar los eventos económicos en el gráfico", "Moving Average_study": "Media móvil", "Show Wave": "Mostrar onda", "Failure back color": "Error de color de fondo", "Below Bar": "Barra por debajo", "Time Scale": "Escala de tiempo", "

Only D, W, M intervals are supported for this symbol/exchange. You will be automatically switched to a D interval. Intraday intervals are not available because of exchange policies.

": "

Solo los intervalos D, W, M están disponibles para este símbolo/mercado. Se activará el intervalo diario (D) en su lugar. Los intervalos intradía no se encuentran disponibles por las políticas de los mercados.

", "Extend Left": "Ampliar a la izquierda", "Date Range": "Rango de datos", "Min Move": "Movimiento min", "Price format is invalid.": "El formato del precio es incorrecto.", "Show Price": "Mostrar precio", "Level_input": "Nivel", "Angles": "Ángulos", "Commodity Channel Index_study": "Índice de canal de mercaderías", "Elder's Force Index_input": "Índice de fuerza de Elder", "Gann Square": "Cuadrado de Gann", "Format": "Formato", "Color bars based on previous close": "Color de barras en función del cierre anterior", "Change band background": "Cambiar el fondo de la banda", "Target: {0} ({1}) {2}, Amount: {3}": "Objetivo: {0} ({1}) {2}, cantidad: {3}", "Anchored Text": "Тexto anclado", "Long length_input": "Longitud larga", "Edit {0} Alert...": "Editar alerta {0}...", "Previous Close Price Line": "Línea anterior con el precio de cierre", "Up Wave 5": "Onda 5 hacia arriba", "Qty: {0}": "Cantidad: {0}", "Aroon_study": "Aroon", "show MA_input": "mostrar MV", "Lead 1_input": "Lead 1", "Short Position": "Posición corta", "SMALen1_input": "SMALen1", "P_input": "P", "Apply Default": "Aplicar configuración predeterminada", "SMALen3_input": "SMALen3", "Average Directional Index_study": "Índice medio de movimiento direccional", "Fr_day_of_week": "V", "Invite-only script. Contact the author for more information.": "Script solo mediante Invitación. Póngase en contacto con el autor para conseguir más información.", "Curve": "Curva", "a year": "un año", "Target Color:": "Color de objetivo:", "Bars Pattern": "Patrón de barras", "D_input": "D", "Font Size": "Tamaño de la fuente", "Create Vertical Line": "Crear línea vertical", "p_input": "p", "Rotated Rectangle": "Rectángulo rotado", "Chart layout name": "Nombre de diseño del gráfico", "Fib Circles": "Ciclos de Fibonacci", "Apply Manual Decision Point": "Aplicar punto de decisión manual", "Dot": "Punto", "Target back color": "Color del fondo del objetivo", "All": "Todo", "orders_up to ... orders": "órdenes", "Dot_hotkey": "Punto", "Lead 2_input": "Lead 2", "Save image": "Guardar imagen", "Move Down": "Bajar", "Triangle Up": "Triángulo hacia arriba", "Box Size": "Tamaño de la caja", "Navigation Buttons": "Botones de navegación.", "Miniscule": "Minúsculo", "Apply": "Aplicar", "Down Wave 3": "Onda 3 hacia abajo", "Plots Background_study": "Fondo de los gráficos", "Marketplace Add-ons": "Complementos del mercado", "Sine Line": "Línea del seno", "Fill": "Rellenar", "%d day": "%d día", "Hide": "Ocultar", "Toggle Maximize Chart": "Alternar maximizar gráfico", "Target text color": "Color del texto del objetivo", "Scale Left": "Escala izquierda", "Elliott Wave Subminuette": "Subminuette de onda de Elliott", "Color based on previous close_input": "Color basado en el cierre anterior", "Down Wave C": "Onda C hacia abajo", "Countdown": "Cuenta atrás", "UO_input": "UO", "Go to Date...": "Ir a la fecha...", "Text Alignment:": "Alineación del texto:", "R_data_mode_realtime_letter": "R", "Extend Lines": "Ampliar líneas", "Conversion Line_input": "Línea de conversión", "March": "Marzo", "Su_day_of_week": "Do", "Exchange": "Mercado bursátil", "Arcs": "Arcos", "Regression Trend": "Tendencia de regresión", "Short RoC Length_input": "Longitud RoC corta", "Fib Spiral": "Espiral de Fibonacci", "Double EMA_study": "Media móvil exponencial (EMA) de doble canal", "minute": "minuto", "All Indicators And Drawing Tools": "Todos los indicadores y herramientas de dibujo", "Indicator Last Value": "Último valor de los indicadores", "Sync drawings to all charts": "Sincronizar dibujos en todos los gráficos", "Change Average HL value": "Cambiar media del valor HL", "Stop Color:": "Color de Stop:", "Stay in Drawing Mode": "Permanecer en modo dibujo", "Bottom Margin": "Margen inferior", "Save Chart Layout saves not just some particular chart, it saves all charts for all symbols and intervals which you are modifying while working with this Layout": "Al guardar el diseño del gráfico también se guardan los gráficos de todos los símbolos e intervalos que esté modificando mientras esté trabajando en este diseño.", "Average True Range_study": "Rango verdadero medio", "Max value_input": "Valor máximo", "MA Length_input": "Longitud de la MV", "Invite-Only Scripts": "Scripts solo mediante invitación", "in %s_time_range": "en %s", "UpperLimit_input": "LímiteSuperior", "sym_input": "sym", "DI Length_input": "Longitud DI", "Rome": "Roma", "Scale": "Escala", "Periods_input": "Períodos", "Arrow": "Flecha", "useTrueRange_input": "useTrueRange", "Basis_input": "Base", "Arrow Mark Down": "Marca de la flecha hacia abajo", "lengthStoch_input": "longitudStoch", "Objects Tree": "Árbol de objetos", "Remove from favorites": "Quitar de favoritos", "Show Symbol Previous Close Value": "Mostrar el símbolo con el valor de cierre anterior", "Scale Series Only": "Solo series de la escala", "Source text color": "Color del texto de la fuente", "Created ": "Creado", "Report a data issue": "Informar sobre un problema con los datos", "Arnaud Legoux Moving Average_study": "Media móvil Arnaud Legoux", "Smoothed Moving Average_study": "Media móvil suavizada", "Lower Band_input": "Band inferior", "Verify Price for Limit Orders": "Verificar precio para órdenes limitadas", "VI +_input": "VI +", "Line Width": "Grosor de línea", "Contracts": "Contratos", "Always Show Stats": "Mostrar estadísticas siempre", "Down Wave 4": "Onda 4 hacia abajo", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "Media móvil simple (línea de señal)", "Change Interval...": "Cambiar intervalo...", "Public Library": "Librería pública", " Do you really want to delete Drawing Template '{0}' ?": " ¿Desea realmente eliminar la plantilla de dibujo '{0}'?", "Sat": "Sáb", "Left Shoulder": "Hombro izquierdo", "week": "semana", "CRSI_study": "CRSI", "Close message": "Cerrar mensaje", "Base currency": "Divisa base", "Show Drawings Toolbar": "Mostrar barra de herramientas de dibujos", "Chaikin Oscillator_study": "Oscilador Chaikin", "Price Source": "Fuente de precios", "Market Open": "Mercado abierto", "Color Theme": "Paleta de colores", "Projection up bars": "Proyección barras hacia arriba", "Awesome Oscillator_study": "Oscilador asombroso", "Bollinger Bands Width_input": "Ancho de las bandas de Bollinger", "long_input": "longitud", "Error occured while publishing": "Se ha producido un error al publicar", "Fisher_input": "Fisher", "Color 1_input": "Color 1", "Moving Average Weighted_study": "Media móvil ponderada", "Save": "Guardar", "Type": "Tipo", "Wick": "Mecha", "Accumulative Swing Index_study": "Accumulative Swing Index", "Load Chart Layout": "Cargar diseño de gráfico", "Show Values": "Mostrar valores", "Fib Speed Resistance Fan": "Abanico de Fibonacci de resistencia de velocidad", "Bollinger Bands Width_study": "Ancho de las bandas de Bollinger", "This chart layout has more than 1000 drawings, which is a lot! This may negatively affect performance, storage and publishing. We recommend to remove some drawings to avoid potential performance issues.": "El diseño de este gráfico tiene más de 1000 dibujos, ¡demasiados! Esto puede afectar de forma negativa al rendimiento, almacenamiento y publicación. Le recomendamos quitar algunos dibujos para evitar posibles errores de funcionamiento.", "Left End": "Extremo izquierdo", "%d year": "%d año", "Always Visible": "Siempre visible", "S_data_mode_snapshot_letter": "S", "Flag": "Bandera", "Elliott Wave Circle": "Círculo de onda de Elliott", "Earnings breaks": "Informe de ganancias de la empresa", "Change Minutes From": "Cambiar minutos de", "Do not ask again": "No vuelva a preguntar", "Displacement_input": "Desplazamiento", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "Desviación superior", "(H + L)/2": "(Máx+Mín)/2", "XABCD Pattern": "Patron XABCD", "Schiff Pitchfork": "Tridente de Schiff", "HLC Bars": "Barras con el máximo, mínimo y cierre (HLC)", "Flipped": "Invertido", "DEMA_input": "DEMA", "Move_input": "Move", "NV_input": "NV", "Choppiness Index_study": "Índice Choppiness", "Study Template '{0}' already exists. Do you really want to replace it?": "La plantilla indicador '{0}' ya existe. ¿Está seguro de que quiere reemplazarla?", "Merge Down": "Combinar hacia abajo", "Th_day_of_week": "Ju", " per contract": " por contrato", "Overlay the main chart": "Superponer el gráfico principal", "Screen (No Scale)": "Pantalla (sin escala)", "Delete": "Eliminar", "Save Indicator Template As": "Guardar plantilla de indicador como", "Length MA_input": "Longitud MA", "percent_input": "porcentaje", "September": "Septiembre", "{0} copy": "{0} copia", "Avg HL in minticks": "Promedio de HL en minticks", "Accumulation/Distribution_input": "Acumulación/distribución", "Sync": "Sincronizar", "C_in_legend": "C", "Weeks_interval": "Semanas", "smoothK_input": "smoothK", "Percentage_scale_menu": "Porcentaje", "Change Extended Hours": "Cambiar horas extendidas", "MOM_input": "MOM", "h_interval_short": "h", "Change Interval": "Cambiar intervalo", "Change area background": "Cambiar el fondo del área", "Modified Schiff": "Schiff modificado", "top": "superior", "Custom color...": "Color personalizado...", "Send Backward": "Enviar atrás", "Mexico City": "Ciudad de Mexico", "TRIX_input": "TRIX", "Show Price Range": "Mostrar rango de precios", "Elliott Major Retracement": "Retroceso mayor de Elliott", "ASI_study": "ASI", "Notification": "Notificación", "Fri": "Vi", "just now": "justo ahora", "Forecast": "Previsión", "Fraction part is invalid.": "La parte de la fracción no es correcta.", "Connecting": "Conectando", "Ghost Feed": "Fuente RSS fantasma", "Signal_input": "Señal", "Histogram_input": "Histograma", "The Extended Trading Hours feature is available only for intraday charts": "La función de horario ampliado de trading solo se encuentra disponible para gráficos intradías.", "Stop syncing": "Detener sincronización", "open": "abierto", "StdDev_input": "StdDev", "EMA Cross_study": "Cruce EMA", "Conversion Line Periods_input": "Períodos de la línea de conversión", "Diamond": "Diamante", "My Scripts": "Mis scripts", "Monday": "Lunes", "Add Symbol_compare_or_add_symbol_dialog": "Add Symbol", "Williams %R_study": "Williams %R", "Symbol": "Símbolo", "a month": "un mes", "Precision": "Precisión", "depth_input": "profundidad", "Go to": "Ir a", "Please enter chart layout name": "Introduzca el nombre de diseño del gráfico", "VWAP_study": "Precio medio ponderado por volumen (VWAP)", "Offset": "Compensación", "Date": "Fecha", "Format...": "Formato...", "__dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__dayName__\n__specialSymbolOpen__a las__specialSymbolClose__\n__dayTime__", "Toggle Maximize Pane": "Alternar maximizar panel", "Search": "Buscar", "Zig Zag_study": "Zigzag", "Actual": "Real", "SUCCESS": "ÉXITO", "Long period_input": "Período largo", "length_input": "longitud", "roclen4_input": "roclen4", "Price Line": "Línea de precios", "Area With Breaks": "Área con rupturas", "Zoom Out": "Alejar", "Stop Level. Ticks:": "Nivel de Stop. Tics:", "Economy & Symbols": "Economía y símbolos", "Circle Lines": "Líneas circulares", "Visual Order": "Orden visual", "__specialSymbolOpen__Yesterday at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Ayer a las__specialSymbolClose__ __dayTime__", "Stop Background Color": "Color de fondo de Stop", "Slow length_input": "Longitud lenta", "Copied to clipboard": "Copiado al portapapeles", "powered by TradingView": "con tecnología de TradingView", "Text:": "Тexto:", "Stochastic_study": "Estocástica", "Marker Color": "Color del marcador", "TEMA_input": "TEMA", "Apply WPT Up Wave": "Aplicar onda WPT ascendente", "Min Move 2": "Movimiento min 2", "Extend Left End": "Ampliar al extremo izquierdo", "Projection down bars": "Proyección barras hacia abajo", "Advance/Decline_study": "Avance/retroceso", "New York": "Nueva York", "Flag Mark": "Marca con bandera", "Drawings": "Dibujos", "Cancel": "Cancelar", "Compare or Add Symbol": "Comparar/añadir símbolo", "Redo": "Repetir", "Hide Drawings Toolbar": "Ocultar barra de herramientas de dibujo", "Ultimate Oscillator_study": "Oscilador de Williams", "Vert Grid Lines": "Líneas verticales de la cuadrícula", "Growing_input": "Creciendo", "Angle": "Ángulo", "Plot_input": "Dibujo", "Color 8_input": "Color 8", "Indicators, Fundamentals, Economy and Add-ons": "Indicadores, fundamentos, economía y complementos", "h_dates": "h", "ROC Length_input": "ROC Length", "roclen3_input": "roclen3", "Overbought_input": "Sobrecomprado", "DPO_input": "DPO", "Change Minutes To": "Cambiar minutos a", "No study templates saved": "No existen plantillas de estudio guardadas", "Trend Line": "Línea de tendencia", "TimeZone": "Zona horaria", "Your chart is being saved, please wait a moment before you leave this page.": "Se está guardando su gráfico. Por favor, espere un momento antes de salir de la página.", "Percentage": "Porcentaje", "Tu_day_of_week": "Ma", "RSI Length_input": "Longitud RSI", "Triangle": "Triángulo", "Line With Breaks": "Línea con rupturas", "Period_input": "Período", "Watermark": "Marca de agua", "Trigger_input": "Activar", "SigLen_input": "SigLen", "Extend Right": "Ampliar a la derecha", "Color 2_input": "Color 2", "Show Prices": "Mostrar precios", "Unlock": "Desbloquear", "Copy": "Copiar", "high": "alto", "Arc": "Arco", "Edit Order": "Editar orden", "January": "Enero", "Arrow Mark Right": "Marca de la flecha hacia la derecha", "Extend Alert Line": "Ampliar línea de alertas", "Background color 1": "Color de fondo 1", "RSI Source_input": "Fuente RSI", "Close Position": "Cerrar posición", "Any Number": "Cualquier número", "Stop syncing drawing": "Detener sincronización del dibujo", "Visible on Mouse Over": "Visible al pasar el ratón", "MA/EMA Cross_study": "Cruce de media móvil (MA)/media móvil exponencial (EMA)", "Thu": "Jue", "Vortex Indicator_study": "Indicador de vortex", "view-only chart by {user}": "Gráfico de solo lectura para {user}", "ROCLen1_input": "ROCLen1", "M_interval_short": "M", "Chaikin Oscillator_input": "Oscilador de Chaikin", "Price Levels": "Nivel de precios", "Show Splits": "Mostrar acciones desdobladas", "Zero Line_input": "Línea cero", "__specialSymbolOpen__Today at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Hoy a las__specialSymbolClose__ __dayTime__", "Increment_input": "Incremento", "Days_interval": "Días", "Show Right Scale": "Mostrar escala de la derecha", "Show Alert Labels": "Mostrar etiquetas de alerta", "Historical Volatility_study": "Volatilidad histórica", "Lock": "Bloquear", "length14_input": "longitud14", "High": "Máximo", "Q_input": "Q", "Date and Price Range": "Rango de fecha y precio", "Polyline": "Polilínea", "Reconnect": "Reconectar", "Lock/Unlock": "Bloquear/Desbloquear", "Price Channel_study": "Price Channel", "Label Down": "Etiqueta hacia abajo", "Saturday": "Sábado", "Symbol Last Value": "Último valor del símbolo", "Above Bar": "Barra por encima", "Studies": "Estudios", "Color 0_input": "Color 0", "Add Symbol": "Añadir símbolo", "maximum_input": "máximo", "Wed": "Mi", "Paris": "París", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "VWMA_study": "Media móvil ponderada de volumen (VWMA)", "fastLength_input": "LongitudRápida", "Time Levels": "Niveles de tiempo", "Width": "Ancho", "Loading": "Cargando", "Template": "Plantilla", "Use Lower Deviation_input": "Utilizar la desviación inferior", "Up Wave 3": "Onda 3 hacia arriba", "Parallel Channel": "Canal paralelo", "Time Cycles": "Ciclos de tiempo", "Second fraction part is invalid.": "La segunda parte de la fracción es incorrecta", "Divisor_input": "Divisor", "Down Wave 1 or A": "Onda 1 o A hacia abajo", "ROC_input": "ROC", "Dec": "Dic", "Ray": "Rayo", "Extend": "Ampliar", "length7_input": "longitud7", "Bring Forward": "Traer hacia delante", "Bottom": "Parte inferior", "Berlin": "Berlín", "Undo": "Deshacer", "Window Size_input": "Tamaño de la ventana", "Mon": "Lu", "Right Labels": "Etiquetas de la parte derecha", "Long Length_input": "Longitud larga", "True Strength Indicator_study": "Índice de fuerza verdadera (TSI)", "%R_input": "%R", "There are no saved charts": "No hay gráficos guardados", "Instrument is not allowed": "Instrumento no permitido", "bars_margin": "barras", "Decimal Places": "Decimales", "Show Indicator Last Value": "Mostrar valor del último indicador", "Initial capital": "Capital inicial", "Show Angle": "Mostrar ángulo", "Mass Index_study": "Índice Mass", "More features on tradingview.com": "Más funciones en tradingview.com", "Objects Tree...": "Árbol de objetos...", "Remove Drawing Tools & Indicators": "Eliminar herramientas de dibujo e indicadores", "Length1_input": "Longitud1", "Always Invisible": "Siempre invisible", "Circle": "Cículo", "Days": "Días", "x_input": "x", "Save As...": "Guardar como...", "Elliott Double Combo Wave (WXY)": "Onda de Elliott de doble combinación (WXY)", "Parabolic SAR_study": "Parabólica SAR", "Any Symbol": "Cualquier símbolo", "Variance": "Varianza", "Stats Text Color": "Color del texto de las estadísticas", "Minutes": "Minutos", "Williams Alligator_study": "Alligator de Williams", "Projection": "Proyección", "Jan": "Ene", "Jaw_input": "Mandíbula", "Right": "Derecha", "Help": "Ayuda", "Coppock Curve_study": "Curva de Coppock", "Reversal Amount": "Importe de la reversión", "Reset Chart": "Restablecer gráfico", "Sunday": "Domingo", "Left Axis": "Eje izquierdo", "Open": "Abrir", "YES": "SI", "longlen_input": "longlen", "Moving Average Exponential_study": "Media móvil exponencial", "Source border color": "Color del borde de la fuente", "Redo {0}": "Repetir {0}", "Cypher Pattern": "Cifrar patrón", "s_dates": "s", "Area": "Área", "Triangle Pattern": "Patrón de triángulo", "Balance of Power_study": "Correlación de fuerzas", "EOM_input": "EOM", "Shapes_input": "Formas", "Oversold_input": "Sobrevendido", "Apply Manual Risk/Reward": "Aplicar recompensa/riesgo manual", "Market Closed": "Mercado Cerrado", "Sydney": "Sidney", "Indicators": "Indicadores", "close": "cierre", "q_input": "q", "You are notified": "Estás notificado", "Font Icons": "Iconos de fuentes", "%D_input": "%D", "Border Color": "Color del borde", "Offset_input": "Compensación", "Risk": "Riesgo", "Price Scale": "Escala de precios", "HV_input": "HV", "Seconds": "Segundos", "Settings": "Opciones de configuración", "Start_input": "Inicio", "Elliott Impulse Wave (12345)": "Onda de impulso de Elliott (12345)", "Hours": "Horas", "Send to Back": "Enviar al fondo", "Color 4_input": "Color 4", "Los Angeles": "Los Ángeles", "Prices": "Precios", "Hollow Candles": "Velas huecas", "July": "Julio", "Create Horizontal Line": "Crear línea horizontal", "Minute": "Minuto", "Cycle": "Ciclo", "ADX Smoothing_input": "ADX suavizado", "One color for all lines": "Un color para todas las líneas", "m_dates": "m", "(H + L + C)/3": "(Máx.+Mín.+Cierre)/3", "Candles": "Velas", "We_day_of_week": "X", "Width (% of the Box)": "Ancho (% del recuadro)", "%d minute": "%d minuto", "Go to...": "Ir a...", "Pip Size": "Tamaño del Pip", "Wednesday": "Miércoles", "This drawing is used in alert. If you remove the drawing, the alert will be also removed. Do you want to remove the drawing anyway?": "Este dibujo se está usando en una alerta. Si quita el dibujo, también se eliminará la alerta. ¿Está seguro de que desea quitar el dibujo de todas formas?", "Show Countdown": "Mostrar cuenta atrás", "Show alert label line": "Mostrar la línea de la etiqueta de alerta", "MA_input": "MV", "Length2_input": "Longitud2", "not authorized": "no autorizado", "Session Volume_study": "Session Volume", "Image URL": "URL de la imagen", "SMI Ergodic Oscillator_input": "Oscilador ergódico SMI", "Show Objects Tree": "Mostrar árbol de objetos", "Primary": "Primario", "Price:": "Precio:", "Bring to Front": "Traer al frente", "Brush": "Pincel", "Not Now": "Ahora no", "Yes": "Sí", "C_data_mode_connecting_letter": "C", "SMALen4_input": "SMALen4", "Apply Default Drawing Template": "Aplicar plantilla de dibujo predeterminada", "Compact": "Compacto", "Save As Default": "Guardar como predeterminado", "Target border color": "Color del borde del objetivo", "Invalid Symbol": "Símbolo incorrecto", "Inside Pitchfork": "Tridente o Pitchfork interno", "yay Color 1_input": "yay Color 1", "Quandl is a huge financial database that we have connected to TradingView. Most of its data is EOD and is not updated in real-time, however the information may be extremely useful for fundamental analysis.": "Quandl es una gran base de datos financiera que hemos conectado a TradingView. La mayor parte de sus datos son EOD y no se actualizan en tiempo real, aunque la información puede resultar extremadamente útil para análisis fundamentales.", "Hide Marks On Bars": "Ocultar marcadores de barra", "Cancel Order": "Cancelar orden", "Hide All Drawing Tools": "Ocultar todas las herramientas del dibujo", "WMA Length_input": "Longitud WMA", "Show Dividends on Chart": "Mostrar dividendos en el gráfico", "Show Executions": "Mostrar ejecuciones", "Borders": "Bordes", "Remove Indicators": "Eliminar Indicadores", "loading...": "cargando...", "Closed_line_tool_position": "Cerrado", "Rectangle": "Rectángulo", "Change Resolution": "Cambiar resolución", "Indicator Arguments": "Argumentos de los indicadores", "Symbol Description": "Descripción del símbolo", "Chande Momentum Oscillator_study": "Oscilador de momento de Chande", "Degree": "Grado", " per order": " por orden", "Line - HL/2": "Línea - HL/2", "Supercycle": "Superciclo", "Least Squares Moving Average_study": "Media móvil de los mínimos cuadrados", "Change Variance value": "Cambiar valor de variación", "powered by ": "con tecnología de ", "Source_input": "Fuente", "Change Seconds To": "Cambiar segundos a", "%K_input": "%K", "Scales Text": "Тexto de las escalas", "Please enter template name": "Introduzca un nombre de plantilla", "Symbol Name": "Nombre del símbolo", "Tokyo": "Tokio", "Events Breaks": "Descansos de evento", "Study Templates": "Plantillas de estudio", "Months": "Meses", "Symbol Info...": "Información del símbolo...", "Elliott Wave Minor": "Onda menor de Elliott", "Cross": "Cruce", "Measure (Shift + Click on the chart)": "Medir (Mayús+ clic en el gráfico)", "Override Min Tick": "Anular min tic", "Show Positions": "Mostrar posiciones", "Dialog": "Diálogo", "Add To Text Notes": "Añadir a notas de texto", "Elliott Triple Combo Wave (WXYXZ)": "Onda de Elliott de triple combinación (WXYXZ)", "Multiplier_input": "Multiplicador", "Risk/Reward": "Riesgo/Beneficio", "Base Line Periods_input": "Períodos de línea base", "Show Dividends": "Mostrar dividendos", "Relative Strength Index_study": "Índice de fuerza relativa", "Modified Schiff Pitchfork": "Modificar Tridente de Schiff", "Top Labels": "Principales etiquetas", "Show Earnings": "Mostrar ganancias", "Line - Open": "Línea - Abierta", "Elliott Triangle Wave (ABCDE)": "Onda triangular de Elliott (ABCDE)", "Text Wrap": "Ajuste de texto", "Reverse Position": "Invertir posición...", "Elliott Minor Retracement": "Retroceso menor de Elliott", "Pitchfan": "Tridente abanico o Pitchfan", "Slash_hotkey": "Barra", "No symbols matched your criteria": "Ningún símbolo coincide con sus criterios de búsqueda.", "Icon": "Icono", "lengthRSI_input": "longitudRSI", "Tuesday": "Martes", "Teeth Length_input": "Longitud de los dientes", "Indicator_input": "Indicador", "Open Interval Dialog": "Abrir diálogo de intervalo", "Athens": "Atenas", "Fib Speed Resistance Arcs": "Arcos de Fibonacci de resistencia de velocidad", "Content": "Contenido", "middle": "medio", "Lock Cursor In Time": "Bloquear cursor en el tiempo", "Intermediate": "Intermediario", "Eraser": "Borrador", "Relative Vigor Index_study": "Índice de vigor relativo (RVI)", "Envelope_study": "Sobre", "Symbol Labels": "Etiquetas de símbolo", "Pre Market": "Período de negociación previo al cierre de mercado", "Horizontal Line": "Línea horizontal", "O_in_legend": "O", "Confirmation": "Confirmación", "HL Bars": "Barras HL - máximo y mínimo", "Lines:": "Líneas", "Hide Favorite Drawings Toolbar": "Ocultar barra de herramientas de dibujos favoritos", "X Cross": "Cruz en X", "Profit Level. Ticks:": "Nivel de ganancias. Tics:", "Show Date/Time Range": "Mostrar rango de fecha/hora", "Level {0}": "Nivel {0}", "Favorites": "Favoritos", "Horz Grid Lines": "Líneas de cuadrícula horizontales", "-DI_input": "-DI", "Price Range": "Rango de precios", "day": "día", "deviation_input": "desviación", "Account Size": "Tamaño de la cuenta", "Value_input": "Value", "Time Interval": "Intervalo de tiempo", "Success text color": "Color del texto correcto", "ADX smoothing_input": "ADX suavizado", "%d hour": "%d hora", "Order size": "Tamaño de la orden", "Drawing Tools": "Herramientas de dibujo", "Save Drawing Template As": "Guardar plantilla de dibujo como", "Traditional": "Tradicional", "Chaikin Money Flow_study": "Flujo monetario de Chaikin", "Ease Of Movement_study": "Facilidad de movimiento", "Defaults": "Predeterminados", "Percent_input": "Porcentaje", "Interval is not applicable": "No puede aplicarse el intervalo", "short_input": "corto", "Visual settings...": "Ajustes visuales...", "RSI_input": "RSI", "Chatham Islands": "Islas Chatham", "Detrended Price Oscillator_input": "Oscilador del precio sin tendencia", "Mo_day_of_week": "L", "Up Wave 4": "Onda 4 hacia arriba", "center": "centro", "Vertical Line": "Línea vertical", "Bogota": "Bogotá", "Show Splits on Chart": "Mostrar acciones desdobladas en el gráfico", "Sorry, the Copy Link button doesn't work in your browser. Please select the link and copy it manually.": "Lo sentimos, el botón Copiar enlace no funciona en su navegador. Por favor, seleccione el enlace y cópielo manualmente.", "Levels Line": "Línea de niveles", "Events & Alerts": "Eventos y alertas", "May": "Mayo", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "Aroon abajo (Aroon Down)", "Add To Watchlist": "Añadir a la lista de seguimiento", "Price": "Precio", "left": "izquierdo", "Lock scale": "Bloquear escala", "Limit_input": "Limit", "Change Days To": "Cambiar días a", "Price Oscillator_study": "Oscilador de precios", "smalen1_input": "smalen1", "Drawing Template '{0}' already exists. Do you really want to replace it?": "La plantilla de dibujo '{0}' ya existe. ¿Desea reemplazarla?", "Show Middle Point": "Mostrar punto medio", "KST_input": "KST", "Extend Right End": "Ampliar al extremo derecho", "Fans": "Abanicos", "Line - Low": "Línea - Baja", "Price_input": "Precio", "Gann Fan": "Abanico de Gann", "EOD": "Final del día (EOD)", "Weeks": "Semanas", "McGinley Dynamic_study": "Indicador dinámico McGinley", "Relative Volatility Index_study": "Índice de volatilidad relativa", "Source Code...": "Código fuente...", "PVT_input": "PVT", "Show Hidden Tools": "Mostrar herramientas ocultas", "Hull Moving Average_study": "Media móvil de Hull", "Symbol Prev. Close Value": "Símbolo con el valor de cierre anterior", "Istanbul": "Estambul", "{0} chart by TradingView": "{0} gráfico por TradingView", "Right Shoulder": "Hombro derecho", "Remove Drawing Tools": "Eliminar herramientas de dibujo", "Friday": "Viernes", "Zero_input": "Cero", "Company Comparison": "Comparación de empresas", "Stochastic Length_input": "Longitud estocástica", "mult_input": "mult", "URL cannot be received": "No se puede recibir la URL", "Success back color": "Color del fondo correcto", "E_data_mode_end_of_day_letter": "E", "Trend-Based Fib Extension": "Extensión de Fibonacci basada en tendencias", "Top": "Parte superior", "Double Curve": "Doble curva", "Stochastic RSI_study": "Índice de fuerza relativa (RSI) estocástica", "Oops!": "¡Vaya!", "Horizontal Ray": "Rayo horizontal", "smalen3_input": "smalen3", "Ok": "Aceptar", "Script Editor...": "Editor de script...", "Are you sure?": "¿Está seguro?", "Trades on Chart": "Transacciones en el gráfico", "Listed Exchange": "Mercado listado", "Pyramiding": "Efecto pirámide", "Fullscreen mode": "Modo pantalla completa", "Add Text Note For {0}": "Añadir nota de texto para {0}", "K_input": "K", "Do you really want to delete Drawing Template '{0}' ?": "¿Está seguro de que desea eliminar la plantilla de dibujo '{0}'?", "ROCLen3_input": "ROCLen3", "Restore Size": "Restablecer tamaño", "Text Color": "Color del texto", "Rename Chart Layout": "Cambiar el nombre del diseño del gráfico", "Built-ins": "Incorporados", "Background color 2": "Color de fondo 2", "Drawings Toolbar": "Barra de herramientas de dibujos", "Moving Average Channel_study": "Moving Average Channel", "New Zealand": "Nueva Zelanda", "CHOP_input": "CHOP", "Apply Defaults": "Aplicar configuración predeterminada", "% of equity": "% de patrimonio neto", "Extended Alert Line": "Línea de alertas ampliada", "Note": "Nota", "OK": "Aceptar", "like": "voto positivo", "Show": "Mostrar", "{0} bars": "{0} barras", "Lower_input": "Menor", "Warning": "Advertencia", "Elder's Force Index_study": "Índice de fuerza de Elder", "Show Earnings on Chart": "Mostrar ganancias en el gráfico", "ATR_input": "ATR", "Low": "Mínimo", "Bollinger Bands %B_study": "Bandas de Bollinger %B", "Time Zone": "Zona horaria", "right": "derecha", "%d month": "%d mes", "Wrong value": "Valor erróneo", "Upper Band_input": "Banda superior", "Sun": "Do", "Rename...": "Cambiar el nombre...", "start_input": "start", "No indicators matched your criteria.": "Ningún indicador coincide con sus criterios de búsqueda.", "Commission": "Comisión", "Down Color": "Color descendente", "Short length_input": "Longitud corta", "Kolkata": "Calcuta", "Submillennium": "Submilenio", "Technical Analysis": "Análisis técnico", "Show Text": "Mostrar texto", "Channel": "Canal", "FXCM CFD data is available only to FXCM account holders": "Los datos FXCM CFD sólo están disponibles para usuarios de cuenta FXCM", "Lagging Span 2 Periods_input": "Tramo de desfase de 2 períodos", "Connecting Line": "Línea de conexión", "Seoul": "Seúl", "bottom": "inferior", "Teeth_input": "Dientes", "Sig_input": "Sig", "Open Manage Drawings": "Abrir gestionar dibujos", "Save New Chart Layout": "Guardar nuevo diseño de gráfico", "Fib Channel": "Canal de Fibonacci", "Save Drawing Template As...": "Guardar plantilla de dibujo como...", "Minutes_interval": "Minutos", "Up Wave 2 or B": "Onda 2 o B hacia arriba", "Columns": "Columnas", "Directional Movement_study": "Movimiento direccional", "roclen2_input": "roclen2", "Apply WPT Down Wave": "Aplicar onda WPT descendente", "Not applicable": "No aplicable", "Bollinger Bands %B_input": "Bandas de Bollinger %B", "Default": "Predeterminado", "Singapore": "Singapur", "Template name": "Nombre de la plantilla", "Indicator Values": "Valores de los indicadores", "Lips Length_input": "Longitud de los labios", "Toggle Log Scale": "Alternar la escala logarítmica", "L_in_legend": "L", "Remove custom interval": "Quitar intervalo personalizado", "shortlen_input": "longitudcorta", "Quotes are delayed by {0} min": "Las cotizaciones se retrasarán {0} min", "Hide Events on Chart": "Ocultar eventos del gráfico", "Cash": "Efectivo", "Profit Background Color": "Color de fondo de ganancias", "Bar's Style": "Estilo de barra", "Exponential_input": "Exponencial", "Down Wave 5": "Onda 5 hacia abajo", "Previous": "Anterior", "Stay In Drawing Mode": "Permanecer en modo dibujo", "Comment": "Comentario", "Connors RSI_study": "Connors RSI", "Bars": "Barras", "Show Labels": "Mostrar etiquetas", "Flat Top/Bottom": "Plano superior/inferior", "Symbol Type": "Tipo de símbolo", "December": "Diciembre", "Lock drawings": "Bloquear dibujos", "Border color": "Color del borde", "Change Seconds From": "Cambiar segundos de", "Left Labels": "Etiquetas derechas", "Insert Indicator...": "Insertar indicador...", "ADR_B_input": "ADR_B", "Paste %s": "Pegar %s", "Change Symbol...": "Cambiar símbolo...", "Timezone": "Zona horaria", "Invite-only script. You have been granted access.": "Script solo mediante invitación. Tiene permiso para acceder.", "Color 6_input": "Color 6", "ATR Length": "Longitud ATR", "{0} financials by TradingView": "{0} financiero por TradingView", "Extend Lines Left": "Ampliar las líneas de la izquierda", "Source back color": "Color de fondo de la fuente", "Transparency": "Transparencia", "June": "Junio", "Cyclic Lines": "Líneas cíclicas", "length28_input": "longitud28", "ABCD Pattern": "Patrón ABCD", "When selecting this checkbox the study template will set \"__interval__\" interval on a chart": "Cuando seleccione esta casilla de verificación la plantilla de estudio establecerá el intervalo \"__interval__\" en un gráfico", "Add": "Añadir", "OC Bars": "Barras de OC - apertura y cierre", "On Balance Volume_study": "Balance de volúmenes", "Apply Indicator on {0} ...": "Aplicar indicador en {0} ...", "NEW": "NUEVA", "Chart Layout Name": "Nombre de diseño del gráfico", "Up bars": "Barras hacia arriba", "Hull MA_input": "MV de Hull", "Lock Scale": "Bloquear escala", "distance: {0}": "distancia: {0}", "Extended": "Ampliado", "Square": "Cuadrado", "Three Drives Pattern": "Patrón Three Drives", "Median_input": "Mediano", "Top Margin": "Margen superior", "Up fractals_input": "Fractales alcistas", "Insert Drawing Tool": "Insertar herramienta de dibujo", "OHLC Values": "Valores OHLC - abrir-alto-bajo-cierre", "Correlation_input": "Correlación", "Session Breaks": "Descansos de sesiones", "Add {0} To Watchlist": "Añadir {0} a la lista de seguimiento", "Anchored Note": "Nota anclada", "lipsLength_input": "lipsLength", "low": "bajo", "Apply Indicator on {0}": "Aplicar indicador en {0}", "UpDown Length_input": "UpDown Length", "Price Label": "Etiqueta de precio", "November": "Noviembre", "Tehran": "Teherán", "Balloon": "Globo", "Track time": "Medir el tiempo", "Background Color": "Color de fondo", "an hour": "una hora", "Right Axis": "Eje derecho", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "slowLength", "Click to set a point": "Haga clic para establecer un punto", "Save Indicator Template As...": "Guardar plantilla de indicador como ...", "Arrow Up": "Flecha hacia rriba", "n/a": "no disponible", "Indicator Titles": "Títulos de los indicadores", "Failure text color": "Error de color del texto", "Sa_day_of_week": "Sáb", "Net Volume_study": "Volumen neto", "Edit Position": "Editar posición", "RVI_input": "RVI", "Centered_input": "Centrado", "Recalculate On Every Tick": "Recalcular con cada tic", "Left": "Izquierda", "Simple ma(oscillator)_input": "Media móvil simple (oscilador)", "Compare": "Comparar", "Fisher Transform_study": "Transformación de Fisher", "Show Orders": "Mostrar órdenes", "Zoom In": "Aumentar", "Length EMA_input": "Longitud EMA", "Enter a new chart layout name": "Introduzca un nuevo nombre para el diseño del gráfico", "Signal Length_input": "Longitud de la señal", "FAILURE": "FALLO", "Point Value": "Valor del Punto", "D_interval_short": "D", "MA with EMA Cross_study": "Cruce de media móvil (MA) con media móvil exponencial (EMA)", "Label Up": "Etiqueta hacia arriba", "Close": "Cerrar", "ParabolicSAR_input": "ParabolicSAR", "Log Scale_scale_menu": "Introducir escala", "MACD_input": "MACD", "Do not show this message again": "No volver a mostrar este mensaje", "{0} P&L: {1}": "{0} ganancias y pérdidas: {1}", "No Overlapping Labels": "Sin etiquetas superpuestas", "Arrow Mark Left": "Marca de la flecha hacia la izquierda", "Down Wave 2 or B": "Onda 2 o B hacia abajo", "Line - Close": "Línea - Cierre", "(O + H + L + C)/4": "(Máx.+Мín.+Cierre+Apertura)/4", "Confirm Inputs": "Confirmar entradas de datos", "Open_line_tool_position": "Abrir", "Lagging Span_input": "Tramo de desfase", "Subminuette": "Subminutte", "Thursday": "Jueves", "Arrow Down": "Flecha hacia abajo", "Triple EMA_study": "Media móvil exponencial triple (TEMA)", "Elliott Correction Wave (ABC)": "Onda de corrección de Elliott (ABC)", "Error while trying to create snapshot.": "Se ha producido un error mientras intentaba crear una imagen.", "Label Background": "Fondo de la etiqueta", "Templates": "Plantillas", "Please report the issue or click Reconnect.": "Informe del problema o haga clic en Reconectar.", "1. Slide your finger to select location for first anchor
2. Tap anywhere to place the first anchor": "1. Deslice el dedo para seleccionar la ubicación del primer anclaje.
2. Toque en cualquier lugar para colocar la primera ancla.", "Signal Labels": "Etiquetas de señal", "Delete Text Note": "Eliminar nota de texto", "compiling...": "compilando...", "Detrended Price Oscillator_study": "Oscilador del precio sin tendencia", "Color 5_input": "Color 5", "Fixed Range_study": "Fixed Range", "Up Wave 1 or A": "Onda 1 o A hacia arriba", "Scale Price Chart Only": "Solo gráfico de precios de la escala", "Unmerge Up": "Separar hacia arriba", "auto_scale": "auto", "Short period_input": "Período corto", "Background": "Fondo", "Up Color": "Color ascendente", "Apply Elliot Wave Intermediate": "Aplicar onda de Elliott intermedia", "VWMA_input": "VWMA", "Lower Deviation_input": "Desviación inferior", "Save Interval": "Guardar intervalo", "February": "Febrero", "Reverse": "Invertir", "Oops, something went wrong": "¡Vaya! Algo ha fallado", "Add to favorites": "Añadir a favoritos", "Median": "Mediano", "ADX_input": "ADX", "Remove": "Quitar", "len_input": "len", "Arrow Mark Up": "Marca de la flecha hacia arriba", "April": "Abril", "Active Symbol": "Símbolo activo", "Extended Hours": "Horario ampliado", "Crosses_input": "Cruces", "Middle_input": "Medio", "Read our blog for more info!": "¡Lea nuestro blog para obtener más información!", "Sync drawing to all charts": "Sincronizar dibujo en todos los gráficos", "LowerLimit_input": "LowerLimit", "Know Sure Thing_study": "Know Sure Thing", "Copy Chart Layout": "Copiar diseño de gráfico", "Compare...": "Comparar...", "1. Slide your finger to select location for next anchor
2. Tap anywhere to place the next anchor": "1. Deslice el dedo para seleccionar la ubicación del siguiente anclaje.
2. Toque en cualquier lugar para colocar la siguiente ancla.", "Text Notes are available only on chart page. Please open a chart and then try again.": "Las notas de texto solo se encuentran disponibles en la página del gráfico. Abra un gráfico y vuelva a intentarlo.", "Aroon Up_input": "Aroon arriba (Aroon Up)", "Apply Elliot Wave Major": "Aplicar onda de Elliott mayor", "Scales Lines": "Líneas de las escalas", "Type the interval number for munute charts (i.e. 5 if it is going to be a five minute chart). Or number plus letter for H (Hourly), D (Daily), W (Weekly), M (Monthly) intervals (i.e. D or 2H)": "Introduzca el número del intervalo para gráficos de minutos (por ejemplo, 5 si va a ser un gráfico de cinco minutos). También puede introducir un número más una letra para intervalos de una hora (H), diarios (D), semanales (W) o mensuales (M), (por ejemplo 1D o 2H)", "Ellipse": "Elipse", "Up Wave C": "Onda C hacia arriba", "Show Distance": "Mostrar distancia", "Risk/Reward Ratio: {0}": "Relación riesgo/beneficio: {0}", "Volume Oscillator_study": "Oscilador de volumen", "Williams Fractal_study": "Fractal de Williams", "Merge Up": "Combinar hacia arriba", "Right Margin": "Margen derecho", "Moscow": "Moscú", "Warsaw": "Varsovia"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/et_EE.json b/static/Kline/charting_library/static/localization/translations/et_EE.json new file mode 100644 index 0000000..e264d2f --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/et_EE.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "ticks", "Months_interval": "Months", "Percent_input": "Percent", "in_dates": "in", "roclen1_input": "roclen1", "OSC_input": "OSC", "Volume_study": "Volume", "Lips_input": "Lips", "Base Line_input": "Base Line", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "Bollinger Bands", "Upper_input": "Upper", "Sig_input": "Sig", "Count_input": "Count", "OnBalanceVolume_input": "OnBalanceVolume", "Cross_chart_type": "Cross", "H_in_legend": "H", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Accumulation/Distribution", "Rate Of Change_study": "Rate Of Change", "Color 7_input": "Color 7", "Chop Zone_study": "Chop Zone", "Oscillator_input": "Oscillator", "yay Color 0_input": "yay Color 0", "CRSI_study": "CRSI", "Chande Kroll Stop_study": "Chande Kroll Stop", "Hours_interval": "Hours", "Money Flow_study": "Money Flow", "DEMA_input": "DEMA", "Linear Regression Curve_study": "Linear Regression Curve", "Symbol_input": "Symbol", "increment_input": "increment", "smoothD_input": "smoothD", "RSI Source_input": "RSI Source", "Ichimoku Cloud_study": "Ichimoku Cloud", "Mass Index_study": "Mass Index", "Smoothing_input": "Smoothing", "Color 3_input": "Color 3", "Jaw Length_input": "Jaw Length", "Keltner Channels_study": "Keltner Channels", "Bands style_input": "Bands style", "Momentum_study": "Momentum", "MF_input": "MF", "Fast length_input": "Fast length", "W_interval_short": "W", "Equality Line_input": "Equality Line", "Short_input": "Short", "Down fractals_input": "Down fractals", "smalen2_input": "smalen2", "isCentered_input": "isCentered", "Klinger Oscillator_study": "Klinger Oscillator", "SMI Ergodic Indicator/Oscillator_study": "SMI Ergodic Indicator/Oscillator", "No Overlapping Labels_scale_menu": "No Overlapping Labels", "Chande MO_input": "Chande MO", "jawLength_input": "jawLength", "TRIX_study": "TRIX", "RVGI_input": "RVGI", "signalLength_input": "signalLength", "d_dates": "d", "Source_compare": "Source", "Correlation Coefficient_study": "Correlation Coefficient", "lipsLength_input": "lipsLength", "Short Length_input": "Short Length", "teethLength_input": "teethLength", "Visible Range_study": "Visible Range", "Connors RSI_study": "Connors RSI", "MA Cross_study": "MA Cross", "Signal line period_input": "Signal line period", "Price Volume Trend_study": "Price Volume Trend", "F_data_mode_forbidden_letter": "F", "Long RoC Length_input": "Long RoC Length", "Length3_input": "Length3", "+DI_input": "+DI", "MACD_study": "MACD", "%s ago_time_range": "%s ago", "Level_input": "Level", "Commodity Channel Index_study": "Commodity Channel Index", "Elder's Force Index_input": "Elder's Force Index", "Aroon_study": "Aroon", "h_dates": "h", "SMALen1_input": "SMALen1", "P_input": "P", "SMALen3_input": "SMALen3", "Average Directional Index_study": "Average Directional Index", "Fr_day_of_week": "Fr", "D_input": "D", "p_input": "p", "orders_up to ... orders": "orders", "Dot_hotkey": "Dot", "Lead 2_input": "Lead 2", "Vortex Indicator_study": "Vortex Indicator", "Plots Background_study": "Plots Background", "Price Channel_study": "Price Channel", "R_data_mode_realtime_letter": "R", "Conversion Line_input": "Conversion Line", "Su_day_of_week": "Su", "Up fractals_input": "Up fractals", "Double EMA_study": "Double EMA", "Price Oscillator_study": "Price Oscillator", "Th_day_of_week": "Th", "Average True Range_study": "Average True Range", "Max value_input": "Max value", "MA Length_input": "MA Length", "in %s_time_range": "in %s", "UpperLimit_input": "UpperLimit", "sym_input": "sym", "DI Length_input": "DI Length", "SMI_input": "SMI", "Basis_input": "Basis", "Moving Average_study": "Moving Average", "lengthStoch_input": "lengthStoch", "Smoothed Moving Average_study": "Smoothed Moving Average", "Lower Band_input": "Lower Band", "VI +_input": "VI +", "Lead 1_input": "Lead 1", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "Simple ma(signal line)", "Color 6_input": "Color 6", "Value_input": "Value", "Chaikin Oscillator_study": "Chaikin Oscillator", "ASI_study": "ASI", "Awesome Oscillator_study": "Awesome Oscillator", "Bollinger Bands Width_input": "Bollinger Bands Width", "Signal Length_input": "Signal Length", "D_interval_short": "D", "Color 1_input": "Color 1", "Moving Average Weighted_study": "Moving Average Weighted", "Short period_input": "Short period", "Fisher_input": "Fisher", "Volume Oscillator_study": "Volume Oscillator", "S_data_mode_snapshot_letter": "S", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "Upper Deviation", "Accumulative Swing Index_study": "Accumulative Swing Index", "Move_input": "Move", "NV_input": "NV", "Choppiness Index_study": "Choppiness Index", "Length MA_input": "Length MA", "percent_input": "percent", "Length_input": "Length", "Accumulation/Distribution_input": "Accumulation/Distribution", "C_in_legend": "C", "Weeks_interval": "Weeks", "smoothK_input": "smoothK", "Percentage_scale_menu": "Percentage", "MOM_input": "MOM", "h_interval_short": "h", "TRIX_input": "TRIX", "Periods_input": "Periods", "Histogram_input": "Histogram", "StdDev_input": "StdDev", "EMA Cross_study": "EMA Cross", "Relative Strength Index_study": "Relative Strength Index", "-DI_input": "-DI", "short_input": "short", "RSI_input": "RSI", "Zig Zag_study": "Zig Zag", "Detrended Price Oscillator_input": "Detrended Price Oscillator", "length_input": "length", "roclen4_input": "roclen4", "Add Symbol_compare_or_add_symbol_dialog": "Add Symbol", "Slow length_input": "Slow length", "Conversion Line Periods_input": "Conversion Line Periods", "TEMA_input": "TEMA", "q_input": "q", "Advance/Decline_study": "Advance/Decline", "Ultimate Oscillator_study": "Ultimate Oscillator", "Growing_input": "Growing", "Plot_input": "Plot", "Color 8_input": "Color 8", "Bollinger Bands Width_study": "Bollinger Bands Width", "roclen3_input": "roclen3", "Overbought_input": "Overbought", "DPO_input": "DPO", "Relative Vigor Index_study": "Relative Vigor Index", "Tu_day_of_week": "Tu", "Period_input": "Period", "Trigger_input": "Trigger", "SigLen_input": "SigLen", "Color 2_input": "Color 2", "MA/EMA Cross_study": "MA/EMA Cross", "Williams Alligator_study": "Williams Alligator", "ROCLen1_input": "ROCLen1", "M_interval_short": "M", "Chaikin Oscillator_input": "Chaikin Oscillator", "Zero Line_input": "Zero Line", "Increment_input": "Increment", "Days_interval": "Days", "Net Volume_study": "Net Volume", "m_dates": "m", "length14_input": "length14", "Color 0_input": "Color 0", "maximum_input": "maximum", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "fastLength_input": "fastLength", "Historical Volatility_study": "Historical Volatility", "Use Lower Deviation_input": "Use Lower Deviation", "Falling_input": "Falling", "Divisor_input": "Divisor", "length7_input": "length7", "Window Size_input": "Window Size", "Long Length_input": "Long Length", "%R_input": "%R", "bars_margin": "bars", "Simple ma(oscillator)_input": "Simple ma(oscillator)", "Length1_input": "Length1", "x_input": "x", "Parabolic SAR_study": "Parabolic SAR", "UO_input": "UO", "Short RoC Length_input": "Short RoC Length", "Jaw_input": "Jaw", "Coppock Curve_study": "Coppock Curve", "longlen_input": "longlen", "Moving Average Exponential_study": "Moving Average Exponential", "s_dates": "s", "Balance of Power_study": "Balance of Power", "EOM_input": "EOM", "%D_input": "%D", "Offset_input": "Offset", "HV_input": "HV", "Start_input": "Start", "ROC_input": "ROC", "Color 4_input": "Color 4", "ADX Smoothing_input": "ADX Smoothing", "We_day_of_week": "We", "MA_input": "MA", "Length2_input": "Length2", "Multiplier_input": "Multiplier", "Session Volume_study": "Session Volume", "SMI Ergodic Oscillator_input": "SMI Ergodic Oscillator", "C_data_mode_connecting_letter": "C", "SMALen4_input": "SMALen4", "yay Color 1_input": "yay Color 1", "CHOP_input": "CHOP", "Middle_input": "Middle", "WMA Length_input": "WMA Length", "Stochastic_study": "Stochastic", "Closed_line_tool_position": "Closed", "On Balance Volume_study": "On Balance Volume", "Source_input": "Source", "%K_input": "%K", "Log Scale_scale_menu": "Log Scale", "len_input": "len", "RSI Length_input": "RSI Length", "Long length_input": "Long length", "Base Line Periods_input": "Base Line Periods", "siglen_input": "siglen", "Slash_hotkey": "Slash", "lengthRSI_input": "lengthRSI", "Indicator_input": "Indicator", "Q_input": "Q", "Envelope_study": "Envelope", "show MA_input": "show MA", "O_in_legend": "O", "useTrueRange_input": "useTrueRange", "Minutes_interval": "Minutes", "deviation_input": "deviation", "long_input": "long", "VWMA_study": "VWMA", "Displacement_input": "Displacement", "Chaikin Money Flow_study": "Chaikin Money Flow", "Ease Of Movement_study": "Ease Of Movement", "Oversold_input": "Oversold", "Williams %R_study": "Williams %R", "depth_input": "depth", "VWAP_study": "VWAP", "Long period_input": "Long period", "Mo_day_of_week": "Mo", "ROC Length_input": "ROC Length", "X_input": "X", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "Aroon Down", "Limit_input": "Limit", "smalen1_input": "smalen1", "Color based on previous close_input": "Color based on previous close", "Price_input": "Price", "Relative Volatility Index_study": "Relative Volatility Index", "PVT_input": "PVT", "Hull Moving Average_study": "Hull Moving Average", "Zero_input": "Zero", "Stochastic Length_input": "Stochastic Length", "mult_input": "mult", "Signal smoothing_input": "Signal smoothing", "E_data_mode_end_of_day_letter": "E", "Stochastic RSI_study": "Stochastic RSI", "K_input": "K", "ROCLen3_input": "ROCLen3", "Signal_input": "Signal", "Moving Average Channel_study": "Moving Average Channel", "Lower_input": "Lower", "Elder's Force Index_study": "Elder's Force Index", "Bollinger Bands %B_study": "Bollinger Bands %B", "Donchian Channels_study": "Donchian Channels", "Upper Band_input": "Upper Band", "start_input": "start", "Short length_input": "Short length", "Triple EMA_study": "Triple EMA", "Lagging Span 2 Periods_input": "Lagging Span 2 Periods", "Teeth_input": "Teeth", "exponential_input": "exponential", "Directional Movement_study": "Directional Movement", "roclen2_input": "roclen2", "Chande Momentum Oscillator_study": "Chande Momentum Oscillator", "Bollinger Bands %B_input": "Bollinger Bands %B", "Lips Length_input": "Lips Length", "Use Upper Deviation_input": "Use Upper Deviation", "L_in_legend": "L", "shortlen_input": "shortlen", "Exponential_input": "Exponential", "Long_input": "Long", "ADR_B_input": "ADR_B", "length28_input": "length28", "Arnaud Legoux Moving Average_study": "Arnaud Legoux Moving Average", "Least Squares Moving Average_study": "Least Squares Moving Average", "Hull MA_input": "Hull MA", "Median_input": "Median", "Correlation_input": "Correlation", "UpDown Length_input": "UpDown Length", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "slowLength", "Sa_day_of_week": "Sa", "RVI_input": "RVI", "Centered_input": "Centered", "True Strength Indicator_study": "True Strength Indicator", "smalen3_input": "smalen3", "Fisher Transform_study": "Fisher Transform", "Length EMA_input": "Length EMA", "Teeth Length_input": "Teeth Length", "MA with EMA Cross_study": "MA with EMA Cross", "ParabolicSAR_input": "ParabolicSAR", "MACD_input": "MACD", "Open_line_tool_position": "Open", "Lagging Span_input": "Lagging Span", "ADX smoothing_input": "ADX smoothing", "Detrended Price Oscillator_study": "Detrended Price Oscillator", "Color 5_input": "Color 5", "McGinley Dynamic_study": "McGinley Dynamic", "auto_scale": "auto", "VWMA_input": "VWMA", "Lower Deviation_input": "Lower Deviation", "ATR_input": "ATR", "Shapes_input": "Shapes", "ADX_input": "ADX", "Crosses_input": "Crosses", "KST_input": "KST", "LowerLimit_input": "LowerLimit", "Know Sure Thing_study": "Know Sure Thing", "Aroon Up_input": "Aroon Up", "Fixed Range_study": "Fixed Range", "Williams Fractal_study": "Williams Fractal"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/fa.json b/static/Kline/charting_library/static/localization/translations/fa.json new file mode 100644 index 0000000..1635036 --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/fa.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "ticks", "Months_interval": "Months", "Percent_input": "Percent", "Clone": "تکثیر", "London": "لندن", "roclen1_input": "roclen1", "Minor": "کوچک", "smalen3_input": "smalen3", "Magnet Mode": "آهنربا", "OSC_input": "OSC", "Volume_study": "حجم", "Lips_input": "Lips", "Histogram": "میله‌ای", "Base Line_input": "Base Line", "Step": "پله‌ای", "Fib Time Zone": "منطقه زمانی فیبوناچی", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "نوارهای بولینگر", "Upper_input": "Upper", "exponential_input": "exponential", "Move Up": "انتقال به بالا", "Scales Properties...": "تنظیمات محورها...", "Count_input": "Count", "Anchored Text": "متن ثابت", "Industry": "صنعت", "OnBalanceVolume_input": "OnBalanceVolume", "Cross_chart_type": "به‌علاوه", "H_in_legend": "بیشترین", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Accumulation/Distribution", "Rate Of Change_study": "Rate Of Change", "in_dates": "in", "Color 7_input": "Color 7", "Chop Zone_study": "Chop Zone", "Scales Properties": "خصوصیات مقیاس ها", "Remove All Indicators": "حذف همه اندیکاتورها", "Oscillator_input": "Oscillator", "yay Color 0_input": "yay Color 0", "Labels": "برچسب‌ها", "Chande Kroll Stop_study": "Chande Kroll Stop", "Hours_interval": "Hours", "Scale Right": "مقیاس محور راست", "Money Flow_study": "گردش پول", "DEMA_input": "DEMA", "Remove All Drawing Tools": "حذف همه اشکال", "Linear Regression Curve_study": "Linear Regression Curve", "Symbol_input": "Symbol", "increment_input": "increment", "Compare or Add Symbol...": "مقایسه یا افزودن نماد...", "Label": "برچسب", "second": "seconds", "Any Number": "هر عددی", "smoothD_input": "smoothD", "Percentage": "مقیاس درصدی", "Entry price:": "قیمت ورود", "Circles": "دایره", "Ichimoku Cloud_study": "Ichimoku Cloud", "Signal smoothing_input": "Signal smoothing", "Grid": "شبکه", "Mass Index_study": "شاخص انبوه", "Rename...": "تغییرنام...", "Smoothing_input": "Smoothing", "Color 3_input": "Color 3", "Jaw Length_input": "Jaw Length", "Delete all drawing for this symbol": "حذف تمام ترسیمات برای این نماد", "Keltner Channels_study": "Keltner Channels", "Long Position": "وضعیت خرید", "Bands style_input": "Bands style", "Undo {0}": "حالت قبلی", "With Markers": "نقاط قیمت", "Momentum_study": "Momentum", "MF_input": "MF", "m_dates": "ماه", "Fast length_input": "Fast length", "Apply Elliot Wave": "اجرای امواج الیوت", "Disjoint Angle": "قطع اتصال زاویه", "W_interval_short": "W", "Log Scale": "مقیاس لگاریتمی", "Minuette": "دقیقه", "Equality Line_input": "Equality Line", "Short_input": "Short", "Fib Wedge": "گوه فیبوناچی", "Line": "خط", "Down fractals_input": "Down fractals", "Fib Retracement": "اصلاحی فیبوناچی", "smalen2_input": "smalen2", "isCentered_input": "isCentered", "Border": "حاشیه", "Klinger Oscillator_study": "Klinger Oscillator", "Style": "نحوه نمایش", "SMI Ergodic Indicator/Oscillator_study": "SMI Ergodic Indicator/Oscillator", "Aug": "آگوست", "No Overlapping Labels_scale_menu": "No Overlapping Labels", "Manage Drawings": "مدیریت اشکال", "No drawings yet": "شکلی رسم نشده است", "Chande MO_input": "Chande MO", "jawLength_input": "jawLength", "TRIX_study": "TRIX", "Border color": "رنگ حاشیه", "RVGI_input": "RVGI", "signalLength_input": "signalLength", "d_dates": "روز", "August": "آگوست", "Source_compare": "منبع", "Correlation Coefficient_study": "Correlation Coefficient", "Text color": "رنگ متن", "Levels": "سطوح", "Length_input": "Length", "Short Length_input": "Short Length", "teethLength_input": "teethLength", "Visible Range_study": "Visible Range", "Hong Kong": "هنگ کنگ", "Text Alignment:": "تراز سطوح", "Subminuette": "کمتر از دقیقه", "Lock All Drawing Tools": "قفل کردن ابزار های رسم", "Long_input": "Long", "Default": "پیش‌فرض", "Head & Shoulders": "سر و شانه ها", "Properties...": "تنظیمات...", "MA Cross_study": "تقاطع میانگین متحرک", "Crosshair": "نشانه‌گر", "Signal line period_input": "Signal line period", "Q_input": "Q", "Show/Hide": "نمایش/عدم نمایش", "Price Volume Trend_study": "Price Volume Trend", "Auto Scale": "تنظیم خودکار محور", "hour": "hours", "Text": "متن", "F_data_mode_forbidden_letter": "F", "Show Bars Range": "نمایش فاصله روزها", "Long RoC Length_input": "Long RoC Length", "Length3_input": "Length3", "+DI_input": "+DI", "Madrid": "مادرید", "Sig_input": "Sig", "MACD_study": "MACD", "%s ago_time_range": "%s ago", "Zoom In": "بزرگ نمایی", "Failure back color": "رنگ پس‌زمینه حالت شکست", "Extend Left": "امتداد از چپ", "Date Range": "بازه زمانی", "Show Price": "نمایش قیمت", "Level_input": "Level", "Commodity Channel Index_study": "Commodity Channel Index", "Elder's Force Index_input": "Elder's Force Index", "Format": "ویژگی‌ها", "Color bars based on previous close": "نمایش رنگ کندل‌ها بر اساس قیمت پایانی روز قبل", "Text:": "متن:", "Aroon_study": "Aroon", "Active Symbol": "نماد فعال", "Lead 1_input": "Lead 1", "SMALen1_input": "SMALen1", "P_input": "P", "SMALen3_input": "SMALen3", "Average Directional Index_study": "Average Directional Index", "Fr_day_of_week": "Fr", "Curve": "منحنی", "Target Color:": "رنگ محدوده سود", "Bars Pattern": "الگوی داده ها", "D_input": "D", "Font Size": "اندازه قلم", "Create Vertical Line": "ایجاد خط عمودی", "p_input": "p", "Chart layout name": "نام طرح نمودار", "Fib Circles": "دایره های فیبوناچی", "Dot": "نقطه", "Target back color": "رنگ پس‌زمینه نقطه هدف", "All": "همه", "orders_up to ... orders": "orders", "Dot_hotkey": "Dot", "Lead 2_input": "Lead 2", "Save image": "ذخیره عکس", "Move Down": "انتقال به پایین", "Vortex Indicator_study": "Vortex Indicator", "Apply": "اعمال", "Plots Background_study": "Plots Background", "Price Channel_study": "Price Channel", "%d day": "%d days", "Hide": "عدم نمایش", "Bottom": "پایین", "Target text color": "رنگ متن نقطه هدف", "Scale Left": "مقیاس محور چپ", "Countdown": "شمارش معکوس", "Source back color": "رنگ پس‌زمینه نقطه شروع", "Go to Date...": "برو به تاریخ...", "Sao Paulo": "سائوپلو", "R_data_mode_realtime_letter": "R", "Extend Lines": "امتداد خطوط", "Conversion Line_input": "Conversion Line", "Su_day_of_week": "Su", "Up fractals_input": "Up fractals", "Arcs": "کمان‌ها", "Regression Trend": "روند رگراسیون", "Double EMA_study": "Double EMA", "minute": "minutes", "Price Oscillator_study": "Price Oscillator", "Stop Color:": "رنگ محدوده زیان", "Stay in Drawing Mode": "ماندن در حالت ترسیم", "Bottom Margin": "حاشیه از پایین", "Average True Range_study": "Average True Range", "Max value_input": "Max value", "MA Length_input": "MA Length", "in %s_time_range": "in %s", "UpperLimit_input": "UpperLimit", "sym_input": "sym", "DI Length_input": "DI Length", "SMI_input": "SMI", "Arrow": "پیکان", "Basis_input": "Basis", "Arrow Mark Down": "پیکان رو به پایین", "lengthStoch_input": "lengthStoch", "Taipei": "چین تایپه", "Remove from favorites": "حذف از موارد مورد علاقه", "Copy": "کپی", "Scale Series Only": "تغییر مقیاس تنها برای قیمت", "Simple": "ساده", "Arnaud Legoux Moving Average_study": "Arnaud Legoux Moving Average", "Smoothed Moving Average_study": "Smoothed Moving Average", "Lower Band_input": "Lower Band", "VI +_input": "VI +", "Always Show Stats": "نمایش همیشگی آمار", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "Simple ma(signal line)", "Show Labels": "نمایش برچسب‌ها", "Color 6_input": "Color 6", "Right End": "انتها باز", "CRSI_study": "CRSI", "long_input": "long", "Chaikin Oscillator_study": "Chaikin Oscillator", "Balloon": "بالون", "Color Theme": "شمای رنگی", "Awesome Oscillator_study": "Awesome Oscillator", "Bollinger Bands Width_input": "Bollinger Bands Width", "Signal Length_input": "Signal Length", "D_interval_short": "D", "Color 1_input": "Color 1", "Moving Average Weighted_study": "Moving Average Weighted", "Save": "ذخیره", "Type": "نوع", "Wick": "سایه بیشترین و کمترین", "Accumulative Swing Index_study": "Accumulative Swing Index", "Fisher_input": "Fisher", "Left End": "ابتدا باز", "%d year": "%d years", "Always Visible": "همواره آشکار", "S_data_mode_snapshot_letter": "S", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "Upper Deviation", "(H + L)/2": "‎(H + L)/2", "Flipped": "چرخش عمودی", "Move_input": "Move", "NV_input": "NV", "Choppiness Index_study": "Choppiness Index", "Merge Down": "ترکیب با ناحیه پایین", " per contract": " در هر قرارداد ", "Overlay the main chart": "نمایش بر روی ناحیه اصلی", "Delete": "حذف", "Length MA_input": "Length MA", "percent_input": "percent", "Apr": "آوریل", "{0} copy": "{0} کپی", "NO": "خیر", "Accumulation/Distribution_input": "Accumulation/Distribution", "C_in_legend": "پایانی", "Weeks_interval": "هفته ها", "smoothK_input": "smoothK", "Percentage_scale_menu": "مقایس درصدی", "MOM_input": "MOM", "h_interval_short": "h", "Change Interval": "تغییر بازه", "Modified Schiff": "شیف تغییر داده‌شد", "top": "بالا", "Send Backward": "عقب", "Custom color...": "رنگ دلخواه...", "TRIX_input": "TRIX", "Delete chart layout": "حذف طرح نمودار", "Periods_input": "Periods", "Forecast": "پیش بینی", "Histogram_input": "Histogram", "StdDev_input": "StdDev", "EMA Cross_study": "EMA Cross", "Conversion Line Periods_input": "Conversion Line Periods", "Add Symbol_compare_or_add_symbol_dialog": "Add Symbol", "Williams %R_study": "Williams %R", "Symbol": "نماد", "Precision": "دقت", "Go to": "برو به", "VWAP_study": "VWAP", "Offset": "فاصله", "Date": "تاریخ", "Format...": "فرمت...", "Search": "جستجو", "Zig Zag_study": "Zig Zag", "Actual": "واقعی", "SUCCESS": "موفقیت", "Long period_input": "Long period", "length_input": "length", "roclen4_input": "roclen4", "Price Line": "خط قیمت", "Area With Breaks": "ناحیه", "Median_input": "Median", "Stop Level. Ticks:": "حد زیان", "Above Bar": "نمودار بالا", "Visual Order": "ترتیب نمایش", "Slow length_input": "Slow length", "Marker Color": "رنگ نشانگر", "TEMA_input": "TEMA", "Extend Left End": "ابتدا باز", "Advance/Decline_study": "Advance/Decline", "New York": "نیویورک", "Flag Mark": "علامت گذاری", "Drawings": "ترسیم", "Cancel": "لغو", "Bar #": "شماره میله", "Redo": "حالت بعدی", "Ultimate Oscillator_study": "Ultimate Oscillator", "Growing_input": "Growing", "Plot_input": "Plot", "Chicago": "شیکاگو", "Color 8_input": "Color 8", "Indicators, Fundamentals, Economy and Add-ons": "اندیکاتورها و بنیادی ها، اقتصاد و افزودنی ها", "h_dates": "ساعت", "Bollinger Bands Width_study": "Bollinger Bands Width", "roclen3_input": "roclen3", "Overbought_input": "Overbought", "DPO_input": "DPO", "TimeZone": "منطقه زمانی", "Circle": "دایره", "Tu_day_of_week": "Tu", "Extended Hours": "ساعات غیرمعاملاتی", "Line With Breaks": "خط", "Period_input": "Period", "Watermark": "رنگ نماد پس زمینه", "Trigger_input": "Trigger", "SigLen_input": "SigLen", "Extend Right": "امتداد از راست", "Color 2_input": "Color 2", "Show Prices": "نمایش قیمت‌ها", "Arrow Mark Right": "پیکان رو به راست", "Background color 2": "رنگ پس‌زمینه ۲", "Background color 1": "رنگ پس‌زمینه ۱", "RSI Source_input": "RSI Source", "MA/EMA Cross_study": "MA/EMA Cross", "Williams Alligator_study": "Williams Alligator", "ROCLen1_input": "ROCLen1", "M_interval_short": "M", "Chaikin Oscillator_input": "Chaikin Oscillator", "Price Levels": "سطوح قیمت", "Source text color": "رنگ متن نقطه شروع", "Zero Line_input": "Zero Line", "Increment_input": "Increment", "Days_interval": "Days", "Net Volume_study": "حجم خالص", "Zoom Out": "کوچک نمایی", "Historical Volatility_study": "Historical Volatility", "Lock": "قفل", "length14_input": "length14", "High": "بیشترین", "Date and Price Range": "محدوده تاریخ و قیمت", "Lock/Unlock": "قفل/باز", "Color 0_input": "Color 0", "Add Symbol": "افزودن نماد", "maximum_input": "maximum", "Paris": "پاریس", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "VWMA_study": "VWMA", "fastLength_input": "fastLength", "Width": "عرض", "Time Levels": "سطوح تاریخ", "Use Lower Deviation_input": "Use Lower Deviation", "Falling_input": "Falling", "Divisor_input": "Divisor", "Dec": "دسامبر", "Extend": "بسط", "length7_input": "length7", "Send to Back": "آخرین", "Undo": "حالت قبلی", "Window Size_input": "Window Size", "Reset Scale": "مقیاس پیش‌فرض", "Long Length_input": "Long Length", "%R_input": "%R", "Chart Properties": "تنظیمات نمودار", "bars_margin": "میله ها", "Show Angle": "نمایش زاویه", "Indicator Last Value": "آخرین مقدار اندیکاتور", "Objects Tree...": "لیست اشکال و اندیکاتورها...", "Length1_input": "Length1", "Always Invisible": "همواره مخفی", "x_input": "x", "Save As...": "ذخیره به عنوان ...", "Tehran": "تهران", "Parabolic SAR_study": "Parabolic SAR", "Any Symbol": "هر نمادی", "UO_input": "UO", "Short RoC Length_input": "Short RoC Length", "Jan": "ژانویه", "Jaw_input": "Jaw", "Help": "کمک", "Coppock Curve_study": "Coppock Curve", "Reset Chart": "تنظیمات پیش‌فرض نمودار", "Open": "باز", "YES": "بله", "longlen_input": "longlen", "Moving Average Exponential_study": "نمایی میانگین متحرک", "Source border color": "رنگ لبه نقطه شروع", "Redo {0}": "حالت بعدی", "Cypher Pattern": "الگوی Cypher", "s_dates": "s", "Area": "ناحیه", "Balance of Power_study": "Balance of Power", "EOM_input": "EOM", "Shapes_input": "Shapes", "Sydney": "سیدنی", "Indicators": "اندیکاتورها", "q_input": "q", "%D_input": "%D", "Border Color": "رنگ حاشیه", "Offset_input": "Offset", "HV_input": "HV", "(H + L + C)/3": "‎(H + L + C)/3", "Start_input": "شروع", "ROC_input": "ROC", "Berlin": "برلین", "Color 4_input": "Color 4", "Los Angeles": "لس آنجلس", "Prices": "قیمت‌ها", "Hollow Candles": "شمعی توخالی", "Create Horizontal Line": "ایجاد خط افقی", "Minute": "دقیقه", "Cycle": "دوره", "ADX Smoothing_input": "ADX Smoothing", "Settings": "تنظیمات", "Candles": "شمعی", "We_day_of_week": "We", "%d minute": "%d minutes", "Go to...": "برو به ...", "Hide All Drawing Tools": "عدم نمایش اشکال", "MA_input": "MA", "Length2_input": "Length2", "Multiplier_input": "Multiplier", "Session Volume_study": "Session Volume", "Image URL": "مسیر عکس", "SMI Ergodic Oscillator_input": "SMI Ergodic Oscillator", "Show Objects Tree": "نمایش لیست اشکال", "Primary": "اصلی", "Price:": "قیمت:", "Bring to Front": "اولین", "Brush": "قلم", "C_data_mode_connecting_letter": "C", "SMALen4_input": "SMALen4", "Invalid Symbol": "نماد غیر معتبر", "yay Color 1_input": "yay Color 1", "CHOP_input": "CHOP", "Note": "یادداشت", "WMA Length_input": "WMA Length", "Low": "کمترین", "Borders": "حاشیه", "loading...": "در حال بارگزاری ...", "Closed_line_tool_position": "سود/زیان", "Rectangle": "مستطیل", "Change Resolution": "تغییر رزولوشن", " per order": " در هر سفارش", "Jun": "ژوئن", "On Balance Volume_study": "On Balance Volume", "Source_input": "Source", "%K_input": "%K", "Scales Text": "رنگ متن محورها", "Toronto": "تورنتو", "Tokyo": "توکیو", "len_input": "len", "Measure (Shift + Click on the chart)": "خطوط میزان تغییرات (شیفت + کلیک)", "Override Min Tick": "حداقل مقیاس قیمت", "RSI Length_input": "RSI Length", "Long length_input": "Long length", "Unmerge Down": "جداسازی و انتقال به پایین", "Base Line Periods_input": "Base Line Periods", "Relative Strength Index_study": "Relative Strength Index", "Top Labels": "برچسب‌های بالا", "siglen_input": "siglen", "Text Wrap": "شکستن خودکار خطوط", "Th_day_of_week": "Th", "Slash_hotkey": "Slash", "No symbols matched your criteria": "هیچ نمادی با شرط شما مطابقت ندارد", "Icon": "شمایل", "lengthRSI_input": "lengthRSI", "Teeth Length_input": "Teeth Length", "Indicator_input": "Indicator", "Shanghai": "شانگهای", "Athens": "آتن", "Timezone/Sessions Properties...": "خصوصیات موقعیت زمانی/دوره معاملاتی", "middle": "وسط", "Intermediate": "میانروز", "Eraser": "پاک‌کن", "Relative Vigor Index_study": "Relative Vigor Index", "Envelope_study": "Envelope", "show MA_input": "show MA", "Horizontal Line": "خط افقی", "O_in_legend": "باز", "Confirmation": "تاییدیه", "Lines:": "خطوط", "Buenos Aires": "بوینس آیرس", "useTrueRange_input": "useTrueRange", "Bangkok": "بانگوک", "Profit Level. Ticks:": "حد سود", "Show Date/Time Range": "نمایش فاصله تاریخی", "Level {0}": "سطح {0}", "-DI_input": "-DI", "Price Range": "محدوده قیمتی", "day": "days", "deviation_input": "deviation", "Value_input": "Value", "Time Interval": "دوره زمانی", "Success text color": "رنگ متن حالت موفقیت", "%d hour": "%d hours", "Displacement_input": "Displacement", "Chaikin Money Flow_study": "Chaikin Money Flow", "Ease Of Movement_study": "Ease Of Movement", "Defaults": "پیش‌فرض‌ها", "Oversold_input": "Oversold", "short_input": "short", "depth_input": "depth", "RSI_input": "RSI", "Detrended Price Oscillator_input": "Detrended Price Oscillator", "Mo_day_of_week": "Mo", "center": "وسط", "Bogota": "بوگوتا", "ROC Length_input": "ROC Length", "X_input": "X", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "Aroon Down", "Add To Watchlist": "اضافه کردن به دیده بان", "Price": "قیمت", "left": "چپ", "Lock scale": "قفل کردن محور", "Limit_input": "Limit", "smalen1_input": "smalen1", "KST_input": "KST", "Extend Right End": "انتها باز", "Fans": "بادبزن‌ها", "Color based on previous close_input": "Color based on previous close", "Price_input": "Price", "Moving Average_study": "میانگین متحرک", "McGinley Dynamic_study": "McGinley Dynamic", "Relative Volatility Index_study": "Relative Volatility Index", "PVT_input": "PVT", "Circle Lines": "خطوط منحنی", "Hull Moving Average_study": "Hull Moving Average", "Bring Forward": "جلو", "Zero_input": "Zero", "Company Comparison": "مقایسه شرکت", "Stochastic Length_input": "Stochastic Length", "mult_input": "mult", "Success back color": "رنگ پس‌زمینه حالت موفقیت", "E_data_mode_end_of_day_letter": "E", "Double Curve": "منحنی دوگانه", "Stochastic RSI_study": "Stochastic RSI", "Fullscreen mode": "حالت تمام صفحه", "K_input": "K", "ROCLen3_input": "ROCLen3", "Text Color": "رنگ متن", "Moving Average Channel_study": "Moving Average Channel", "Target border color": "رنگ لبه نقطه هدف", "Screen (No Scale)": "مقیاس صفحه", "Signal_input": "Signal", "OK": "تایید", "like": "likes", "Show": "نمایش", "{0} bars": "{0} میله", "Lower_input": "Lower", "Arc": "کمان", "Elder's Force Index_study": "Elder's Force Index", "Stochastic_study": "Stochastic", "Bollinger Bands %B_study": "نوارهای بولینگر %B", "Time Zone": "منطقه زمانی", "right": "راست", "%d month": "%d months", "Donchian Channels_study": "Donchian Channels", "Upper Band_input": "Upper Band", "start_input": "start", "No indicators matched your criteria.": "هیچ اندیکاتوری با شرط شما مطابقت ندارد.", "Short length_input": "Short length", "Kolkata": "کلکته", "Triple EMA_study": "Triple EMA", "Technical Analysis": "تحلیل تکنیکی", "Show Text": "نمایش متن", "Channel": "کانال", "Lagging Span 2 Periods_input": "Lagging Span 2 Periods", "Connecting Line": "خط ارتباطی", "Seoul": "سئول", "bottom": "پایین", "Teeth_input": "Teeth", "Moscow": "مسکو", "Fib Channel": "کانال فیبوناچی", "Columns": "ستونی", "Directional Movement_study": "Directional Movement", "roclen2_input": "roclen2", "Chande Momentum Oscillator_study": "Chande Momentum Oscillator", "Not applicable": "غیر قابل قبول", "Bollinger Bands %B_input": "Bollinger Bands %B", "Indicator Values": "مقادیر اندیکاتور", "Lips Length_input": "Lips Length", "Use Upper Deviation_input": "Use Upper Deviation", "L_in_legend": "کمترین", "Inside": "داخلی", "shortlen_input": "shortlen", "Bar's Style": "نحوه نمایش", "Exponential_input": "Exponential", "Stay In Drawing Mode": "ماندن در حالت رسم", "Comment": "توضیحات", "Connors RSI_study": "Connors RSI", "Bars": "میله‌ای", "December": "دسامبر", "Left Labels": "برچسب‌های چپ", "Insert Indicator...": "افزودن اندیکاتور...", "ADR_B_input": "ADR_B", "Change Symbol...": "تغییر نماد...", "Feb": "فوریه", "Transparency": "شفافیت", "Cyclic Lines": "خطوط دایره ای", "length28_input": "length28", "ABCD Pattern": "الگوی ABCD", "Objects Tree": "اشکال و اندیکاتورها", "Add": "افزودن", "Least Squares Moving Average_study": "Least Squares Moving Average", "Chart Layout Name": "نام طرح نمودار", "Hull MA_input": "Hull MA", "Schiff": "شیف", "Lock Scale": "قفل کردن محور", "distance: {0}": "{0} :فاصله مختصات", "Extended": "تمدید شده", "log": "لگاریتمی", "Normal": "خط", "Top Margin": "حاشیه از بالا", "Minutes_interval": "Minutes", "Insert Drawing Tool": "افزودن شکل", "Show Price Range": "نمایش فاصله قیمتی", "Correlation_input": "Correlation", "Session Breaks": "تنفس معاملاتی", "Add {0} To Watchlist": "افزودن {0} به دیده بان", "Anchored Note": "یادداشت ثابت", "lipsLength_input": "lipsLength", "UpDown Length_input": "UpDown Length", "ASI_study": "ASI", "Background Color": "رنگ پس‌زمینه", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "slowLength", "n/a": "هیچ کدام", "Indicator Titles": "عنوان اندیکاتور", "Failure text color": "رنگ متن حالت شکست", "Sa_day_of_week": "Sa", "Error": "خطا", "RVI_input": "RVI", "Centered_input": "Centered", "Original": "اصلی", "True Strength Indicator_study": "True Strength Indicator", "Simple ma(oscillator)_input": "Simple ma(oscillator)", "Compare": "مقایسه", "Fisher Transform_study": "Fisher Transform", "Length EMA_input": "Length EMA", "FAILURE": "شکست", "MA with EMA Cross_study": "MA with EMA Cross", "Close": "پایانی", "ParabolicSAR_input": "ParabolicSAR", "Log Scale_scale_menu": "مقیاس لگاریتمی", "MACD_input": "MACD", "{0} P&L: {1}": "‫", "Arrow Mark Left": "پیکان رو به چپ", "(O + H + L + C)/4": "‎(O + H + L + C)/4", "Confirm Inputs": "تایید ورودی‏ ها", "Open_line_tool_position": "سود/زیان", "Lagging Span_input": "Lagging Span", "Cross": "مکان‌نما", "Mirrored": "جرخش افقی", "Vancouver": "ونکوور", "Label Background": "برچسب پس‌زمینه", "ADX smoothing_input": "ADX smoothing", "Mar": "مارس", "May": "می", "Detrended Price Oscillator_study": "Detrended Price Oscillator", "Color 5_input": "Color 5", "Risk/Reward Ratio: {0}": "‫نسبت ریسک به سود: {0}", "Scale Price Chart Only": "فقط نمودار مقیاس قیمت", "Unmerge Up": "جداسازی و انتقال به بالا", "auto_scale": "خودکار", "Short period_input": "Short period", "Background": "پس‌زمینه", "% of equity": "درصد از سهم", "VWMA_input": "VWMA", "Lower Deviation_input": "Lower Deviation", "ATR_input": "ATR", "Reverse": "معکوس", "Add to favorites": "افزودن به موارد مورد علاقه", "Median": "خط میانی", "ADX_input": "ADX", "Remove": "حذف", "Arrow Mark Up": "پیکان رو به بالا", "April": "آوریل", "Crosses_input": "Crosses", "Middle_input": "Middle", "LowerLimit_input": "LowerLimit", "Know Sure Thing_study": "Know Sure Thing", "Copy Chart Layout": "کپی طرح نمودار", "Compare...": "مقایسه...", "Compare or Add Symbol": "مقایسه یا افزودن نماد", "Color": "رنگ", "Aroon Up_input": "Aroon Up", "Singapore": "سنگاپور", "Scales Lines": "رنگ خطوط محورها", "Show Distance": "نمایش فاصله مختصات", "Fixed Range_study": "Fixed Range", "Volume Oscillator_study": "Volume Oscillator", "Williams Fractal_study": "Williams Fractal", "Merge Up": "ترکیب با ناحیه بالایی", "Right Margin": "حاشیه از راست", "Warsaw": "ورشو"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/fr.json b/static/Kline/charting_library/static/localization/translations/fr.json new file mode 100644 index 0000000..53ced3e --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/fr.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "ticks", "Months_interval": "Mois", "Realtime": "Temps réel", "RSI Length_input": "Longueur RSI", "Sync to all charts": "Synchroniser tous les tableaux", "month": "mois", "London": "Londres", "roclen1_input": "roclen1", "Unmerge Down": "Défusionner vers le Bas", "Percents": "Pourcents", "Search Note": "Chercher une Note", "Minor": "Mineur", "Do you really want to delete Chart Layout '{0}' ?": "Voulez-vous vraiment supprimer la configuration du graphique '{0}' ?", "Quotes are delayed by {0} min and updated every 30 seconds": "Les cotations sont différées de {0} minute et mises à jour toutes les 30 secondes", "Magnet Mode": "Mode aimanté", "OSC_input": "OSC", "Hide alert label line": "Masquer la ligne de l'identifiant d'alerte", "Volume_study": "Volume", "Lips_input": "Lips", "Show real prices on price scale (instead of Heikin-Ashi price)": "Montrer les prix réels sur l'échelle de prix (au lieu du prix Heikin-Ashi)", "Histogram": "Histogramme", "Base Line_input": "Ligne de base", "Step": "En Marche d'Escalier", "Insert Study Template": "Insérer un modèle d'étude", "Fib Time Zone": "Zone Temporelle de Fibonacci", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "Bollinger Bands", "Show/Hide": "Montrer/Cacher", "Upper_input": "Supérieur", "Sig_input": "Sig", "Move Up": "Déplacer vers le Haut", "Symbol Info": "Info du Symbole", "This indicator cannot be applied to another indicator": "Cet indicateur ne peut pas être appliqué à un autre indicateur.", "Scales Properties...": "Propriétés des Échelles...", "Count_input": "Compter", "Full Circles": "Cercles complets", "Industry": "Industrie", "OnBalanceVolume_input": "Volume OnBalance", "Cross_chart_type": "Cross", "H_in_legend": "H", "a day": "un jour", "Pitchfork": "Fourchette", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Accumulation/Répartition", "Rate Of Change_study": "Taux de changement", "Text Font": "Police de texte", "in_dates": "en", "Clone": "Cloner", "Color 7_input": "Couleur 7", "Chop Zone_study": "Chop Zone", "Bar #": "Numéro de Barre", "Scales Properties": "Propriétés des Échelles", "Trend-Based Fib Time": "Temps de Fibonacci selon la Tendance", "Remove All Indicators": "Retirer tous les Indicateurs", "Oscillator_input": "Oscillateur", "Last Modified": "Dernière modification", "yay Color 0_input": "yay Couleur 0", "Labels": "Étiquettes", "Chande Kroll Stop_study": "Stop Chande Kroll", "Hours_interval": "Hours", "Allow up to": "Autoriser jusqu'à", "Scale Right": "Échelle à Droite", "Money Flow_study": "Flux d'argent", "siglen_input": "siglen", "Indicator Labels": "Étiquettes d'indicateurs", "__specialSymbolOpen__Tomorrow at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Demain à__specialSymbolClose____dayTime__", "Toggle Percentage": "Echelle en pourcentage", "Remove All Drawing Tools": "Retirer tous les Outils de Dessin", "Remove all line tools for ": "Supprimer tous les outils de ligne pour ", "Linear Regression Curve_study": "Courbe de régression linéaire", "Symbol_input": "Symbole", "increment_input": "incrément", "Compare or Add Symbol...": "Comparer ou Ajouter un Symbole...", "__specialSymbolOpen__Last__specialSymbolClose__ __dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Dernier__specialSymbolClose____dayName____specialSymbolOpen__à__specialSymbolClose____dayTime__", "Save Chart Layout": "Sauvegarder la Configuration du Graphique", "Number Of Line": "Numéro de la ligne", "Label": "Étiquette", "Post Market": "Post-marché", "second": "seconde", "Change Hours To": "Changer les heures pour", "smoothD_input": "smoothD", "Falling_input": "En chute", "X_input": "X", "Risk/Reward short": "Ration Risque/Récompense transaction de vente", "UpperLimit_input": "Limite supérieure", "Donchian Channels_study": "Donchian Channels", "Entry price:": "Prix d'Entrée", "Circles": "Cercles", "Head": "Tête", "Stop: {0} ({1}) {2}, Amount: {3}": "Stop: {0} ({1}) {2}, Montant: {3}", "Mirrored": "Reflété", "Ichimoku Cloud_study": "Nuage Ichimoku", "Signal smoothing_input": "Adoucissement du signal", "Use Upper Deviation_input": "Utiliser l'écart supérieur", "Toggle Auto Scale": "Mise à l'échelle automatique", "Grid": "Grille", "Triangle Down": "Triangle vers le bas", "Apply Elliot Wave Minor": "Appliquer Vague d'Elliot Mineure", "Rename...": "Renommer...", "Smoothing_input": "Adoucissement", "Color 3_input": "Couleur 3", "Jaw Length_input": "Longueur de Jaw", "Inside": "À l'intérieur", "Delete all drawing for this symbol": "Supprimer tout le dessin pour ce symbole", "Fundamentals": "Fondamentaux", "Keltner Channels_study": "Keltner Channels", "Long Position": "Position Longue", "Bands style_input": "Style de bandes", "Undo {0}": "Annuler {0}", "With Markers": "Avec des Points", "Momentum_study": "Momentum", "MF_input": "MF", "Gann Box": "Boite de Gan", "Switch to the next chart": "Passer au graphique suivant", "charts by TradingView": "graphique par TradingView", "Fast length_input": "Longueur rapide", "Apply Elliot Wave": "Appliquer une Vague d'Eliliot", "Disjoint Angle": "Angle disjoint", "Supermillennium": "Super millénaire", "W_interval_short": "W", "Show Only Future Events": "Montrer Uniquement les Événements Futurs", "Log Scale": "Échelle Logaritmique", "Line - High": "Ligne - Sommet", "Minuette": "Menuet", "Equality Line_input": "Ligne d'égalité", "Short_input": "Short", "Fib Wedge": "Coin de Fibonacci", "Line": "Droite", "Session": "Séance", "Down fractals_input": "Fractales inférieures", "Fib Retracement": "Retracement de Fibonacci", "smalen2_input": "smalen2", "isCentered_input": "estCentré", "Border": "Bordure", "Klinger Oscillator_study": "Klinger Oscillator", "Absolute": "Absolu", "Tue": "Mar", "Up Wave 3": "Vague Haussière 3", "Show Left Scale": "Montrer l'Échelle de Gauche", "SMI Ergodic Indicator/Oscillator_study": "SMI Ergodic Indicateur/Oscillateur", "Aug": "Août", "Last available bar": "Dernière barre disponible", "Manage Drawings": "Gérer les Dessins", "Analyze Trade Setup": "Analyser la Configuration du Trade", "No drawings yet": "Pas de Dessins pour le moment", "SMI_input": "SMI", "Chande MO_input": "Chande MO", "jawLength_input": "Longueur de Jaw", "TRIX_study": "TRIX", "Show Bars Range": "Montrer l'étendue des barres", "RVGI_input": "RVGI", "Last edited ": "Dernière édition ", "signalLength_input": "Longueur de signal", "%s ago_time_range": "il y a %s", "Reset Settings": "Réinitialiser les paramètres", "PnF": "Point et Figure", "d_dates": "j", "Point & Figure": "Point et Figure", "August": "Août", "Recalculate After Order filled": "Recalculer après l'ordre rempli", "Source_compare": "Source", "Down bars": "Barres inférieures", "Correlation Coefficient_study": "Coefficient de Corellation", "Delayed": "Retardé", "Bottom Labels": "Étiquettes du bas", "Text color": "Couleur du Texte", "Levels": "Niveaux", "Short Length_input": "Longueur du Short", "teethLength_input": "Longueurteeth", "Visible Range_study": "Gamme visible", "Delete": "Effacer", "Text Alignment:": "Alignement du Texte:", "Open {{symbol}} Text Note": "Ouvrir {{symbol}} Note de Texte", "October": "Octobre", "Lock All Drawing Tools": "Verrouiller tous les Outils de Dessin", "Long_input": "Long", "Right End": "Extrémité de Droite", "Show Symbol Last Value": "Montrer la Dernière Valeur du Symbole", "Head & Shoulders": "Tête et Épaules", "Do you really want to delete Study Template '{0}' ?": "Voulez-vous vraiment supprimer le modèle d'étude '{0}' ?", "Favorite Drawings Toolbar": "Barre d'outils de dessin favoris", "Properties...": "Propriétés...", "MA Cross_study": "Croisement MA", "Trend Angle": "Angle de la Tendance", "Snapshot": "photo instantanée", "Crosshair": "Réticule", "Signal line period_input": "Période de la ligne de signal", "Timezone/Sessions Properties...": "Propriétés des Fuseaux Horaires/Sessions", "Line Break": "Saut de ligne", "Quantity": "Quantité", "Price Volume Trend_study": "Tendance volume-prix", "Auto Scale": "Mise à l'échelle automatique", "hour": "heure", "Delete chart layout": "Supprimer la configuration du graphique", "Text": "Texte", "F_data_mode_forbidden_letter": "F", "Risk/Reward long": "Ration Risque/Récompense transaction d'achat", "Apr": "Avr", "Long RoC Length_input": "Grande longueur RoC", "Length3_input": "Longueur 3", "+DI_input": "+DI", "Length_input": "Longueur", "Use one color": "Utiliser une couleur", "Chart Properties": "Propriétés du graphique", "No Overlapping Labels_scale_menu": "Pas d'étiquettes superposées", "Exit Full Screen (ESC)": "Sortir du mode Plein Écran (ESC)", "MACD_study": "MACD", "Show Economic Events on Chart": "Montrer les événements économiques sur le graphique", "Moving Average_study": "Moyenne mobile", "Show Wave": "Montrer l'onde", "Failure back color": "Échec Couleur de Fond", "Below Bar": "Sous la barre", "Time Scale": "Echelle de Temps", "

Only D, W, M intervals are supported for this symbol/exchange. You will be automatically switched to a D interval. Intraday intervals are not available because of exchange policies.

": "

Seuls les intervalles J, S, Msont pris en charge pour ce symbole/échange. Vous passerez automatiquement à un intervalle J. Les intervalles intra-jour ne sont pas disponibles en raison des politiques d'échange.

", "Extend Left": "Prolonger à Gauche", "Date Range": "Étendue de dates", "Min Move": "Mouvement minimal", "Price format is invalid.": "Le format du prix n'est pas valide.", "Show Price": "Montrer le Prix", "Level_input": "Niveau", "Commodity Channel Index_study": "Commodity Channel Index", "Elder's Force Index_input": "Indice Elder's Force", "Gann Square": "Carré de Gann", "Currency": "Devise", "Color bars based on previous close": "Coloriser les Barres selon la Clôture Précédente", "Change band background": "Changer le fond du bandeau", "Target: {0} ({1}) {2}, Amount: {3}": "Cible: {0} ({1}) {2},Montant: {3}", "Zoom Out": "Réduction", "This chart layout has a lot of objects and can't be published! Please remove some drawings and/or studies from this chart layout and try to publish it again.": "Cette disposition graphique a beaucoup d'objets et ne peut pas être publiée! Supprimez certains dessins et / ou études de cette disposition graphique et essayez de la publier à nouveau.", "Anchored Text": "Texte ancré", "Long length_input": "Grande longueur", "Edit {0} Alert...": "Éditer {0} alerte...", "Previous Close Price Line": "Ligne précédente de prix de clôture", "Up Wave 5": "Vague Haussière 5", "Qty: {0}": "Qté: {0}", "Aroon_study": "Aroon", "show MA_input": "Montrer MA", "Lead 1_input": "Lead 1", "Short Position": "Position Short", "SMALen1_input": "SMALen1", "P_input": "P", "Apply Default": "Appliquer paramètres par Défaut", "SMALen3_input": "SMALen3", "Average Directional Index_study": "Average Directional Index", "Fr_day_of_week": "Ven", "Invite-only script. Contact the author for more information.": "Script sur invitation uniquement. Contactez l'auteur pour plus d'informations.", "Curve": "Courbe", "a year": "un an", "Target Color:": "Couleur de l'Objectif", "Bars Pattern": "Configuration de barres", "D_input": "D", "Font Size": "Taille de la police de caractères", "Create Vertical Line": "Créer une Ligne Verticale", "p_input": "p", "Rotated Rectangle": "Rectangle pivoté", "Chart layout name": "Nom de la configuration graphique", "Fib Circles": "Cercles de Fibonacci", "Apply Manual Decision Point": "Appliquer Point de Décision Manuel", "Dot": "Point", "Target back color": "Couleur de Fond de l'Objectif", "All": "Tous", "orders_up to ... orders": "ordres", "Dot_hotkey": "Point", "Lead 2_input": "Lead 2", "Save image": "Enregistrer l'Image", "Move Down": "Déplacer vers le Bas", "Triangle Up": "Triangle vers le haut", "Box Size": "Taille de la boîte", "Navigation Buttons": "Boutons de Navigation", "Miniscule": "Minuscule", "Apply": "Appliquer", "Down Wave 3": "Vague Baissière 3", "Plots Background_study": "Arrière-plan des graphiques", "Marketplace Add-ons": "Marché des Extensions", "Sine Line": "Ligne sinusoïdale", "Fill": "Remplir", "%d day": "%d jour", "Hide": "Cacher", "Toggle Maximize Chart": "Agrandir le graphique", "Target text color": "Couleur de Texte de l'Objectif", "Scale Left": "Échelle à Gauche", "Elliott Wave Subminuette": "Vague d'Elliott Sous Inférieure ou Subminuette", "Color based on previous close_input": "Couleur basée sur la clôture précédente", "Down Wave C": "Vague Baissière C", "Countdown": "Compte à rebours", "UO_input": "UO", "Pyramiding": "Pyramidage", "Source back color": "Couleur de Fond de la Source", "Go to Date...": "Aller à cette date...", "Sao Paulo": "São Paulo", "R_data_mode_realtime_letter": "R", "Extend Lines": "Prolonger les lignes", "Conversion Line_input": "Ligne de conversion", "March": "Mars", "Su_day_of_week": "Su", "Exchange": "Marché", "Regression Trend": "Tendance de la Régression", "Short RoC Length_input": "Longueur du Short RoC", "Fib Spiral": "Spirale de Fibonacci", "Double EMA_study": "EMA Double", "All Indicators And Drawing Tools": "Tous les Indicateurs Et Outils de Dessin", "Indicator Last Value": "Dernière valeur de l'indicateur", "Sync drawings to all charts": "Sync tracés sur tous les graphiques", "Change Average HL value": "Changer la valeur Haute Basse moyenne", "Stop Color:": "Couleur du Stop", "Stay in Drawing Mode": "Rester en Mode Dessin", "Bottom Margin": "Marge inférieure", "Dubai": "Dubaï", "Save Chart Layout saves not just some particular chart, it saves all charts for all symbols and intervals which you are modifying while working with this Layout": "'Enregistrer la disposition des graphiques' n'enregistre pas seulement un graphique particulier, il enregistre tous les graphiques pour tous les symboles et les intervalles que vous modifiez tout en travaillant avec cette disposition", "Average True Range_study": "Moyenne de la vraie amplitude", "Max value_input": "Valeur max", "MA Length_input": "Longueur MA", "Invite-Only Scripts": "Scripts sur invitation uniquement", "in %s_time_range": "in %s", "Extend Bottom": "Etendre le bas", "sym_input": "sym", "DI Length_input": "Longueur de DI", "Scale": "Échelle", "Periods_input": "Périodes", "Arrow": "Flèche", "Square": "Carré", "Basis_input": "Base", "Arrow Mark Down": "Flèche vers le Bas", "lengthStoch_input": "longueurStoch", "Objects Tree": "Arborescence des Objets", "Remove from favorites": "Retirer des favoris", "Show Symbol Previous Close Value": "Afficher le symbole précédent de valeur de fermeture", "Scale Series Only": "Mettre à l'Échelle la Série seulement", "Source text color": "Couleur du Texte de la Source", "Created ": "Créé ", "Report a data issue": "Signaler un problème de données", "Arnaud Legoux Moving Average_study": "Arnaud Legoux Moyenne Mobile", "Smoothed Moving Average_study": "Smoothed Moving Average", "Lower Band_input": "Bande inférieure", "Verify Price for Limit Orders": "Vérifier le Prix Pour les Ordres Limites", "VI +_input": "VI +", "Line Width": "Épaisseur de la ligne", "Contracts": "Contrats", "Always Show Stats": "Toujours montrer les statistiques", "Down Wave 4": "Vague Baissière 4", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "Simple ma(ligne de signal)", "Change Interval...": "Changer l'intervalle...", "Public Library": "Librairie publique", " Do you really want to delete Drawing Template '{0}' ?": " Voulez-vous vraiment supprimer le Modèle de Dessin '{0}' ?", "Sat": "Sam", "Left Shoulder": "Épaule gauche", "week": "Semaine", "CRSI_study": "CRSI", "Close message": "Fermer le message", "Jul": "Juill", "Base currency": "Devise de base", "Show Drawings Toolbar": "Montrer la Barre d'Outils de Dessin", "Chaikin Oscillator_study": "Chaikin Oscillator", "Price Source": "Source de prix", "Market Open": "Ouverture du Marché", "Color Theme": "Modèle de Couleurs", "Projection up bars": "Barres de projection supérieures", "Awesome Oscillator_study": "Oscillateur impressionnant", "Bollinger Bands Width_input": "Largeur des Bandes de Bollinger", "long_input": "long", "Error occured while publishing": "Une erreur est survenue lors de la publication", "Fisher_input": "Fisher", "Color 1_input": "Couleur 1", "Moving Average Weighted_study": "Moyenne mobile pondérée", "Save": "Sauvegarder", "Are you sure?": "Êtes-vous sûr?", "Wick": "Mèche", "Accumulative Swing Index_study": "Indice d'oscillation cumulative", "Load Chart Layout": "Charger la configuration graphique", "Show Values": "Montrer les Valeurs", "Fib Speed Resistance Fan": "Éventail de Résistance de la Vitesse de Fibonacci", "Bollinger Bands Width_study": "Largeur Bollinger Bands", "This chart layout has more than 1000 drawings, which is a lot! This may negatively affect performance, storage and publishing. We recommend to remove some drawings to avoid potential performance issues.": "Cette disposition de graphique a plus de 1000 dessins, ce qui est beaucoup! \nCela peut affecter négativement les performances, le stockage et la publication. Nous vous recommandons d'enlever certains dessins afin d'éviter des problèmes de performances potentiels.", "Left End": "Extrémité Gauche", "%d year": "%d année", "Always Visible": "Toujours visible", "S_data_mode_snapshot_letter": "S", "Flag": "Drapeau", "Elliott Wave Circle": "Cercle des vagues d'Elliott", "Earnings breaks": "Pénalités", "Change Minutes From": "Modifier les minutes de", "Do not ask again": "Ne demander plus", "MTPredictor": "MTPrédicteur", "Displacement_input": "Déplacement", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "Ecart supérieur", "XABCD Pattern": "Figure en XABCD", "Schiff Pitchfork": "Fourchette de Schiff", "Copied to clipboard": "Copié dans le presse-papier", "Flipped": "Basculé", "DEMA_input": "DEMA", "Move_input": "Mouvement", "NV_input": "NV", "Choppiness Index_study": "Choppiness Index", "Study Template '{0}' already exists. Do you really want to replace it?": "Le Modèle d'Etude '{0}' existe déjà. Voulez-vous vraiment le remplacer ?", "Merge Down": "Fusionner vers le bas", "Th_day_of_week": "Th", " per contract": " par contrat", "Overlay the main chart": "Superposer sur le graphique principal", "Screen (No Scale)": "Écran (sans échelle)", "Three Drives Pattern": "Modèle Three Drives", "Save Indicator Template As": "Sauvegarder le Modèle d'Indicateur Sous", "Length MA_input": "Longueur MA", "percent_input": "pourcent", "September": "Septembre", "{0} copy": "Copier {0}", "Avg HL in minticks": "Ticks minimums moyens entre les valeurs hautes et basses", "Accumulation/Distribution_input": "Accumulation/Distribution", "C_in_legend": "C", "Weeks_interval": "Weeks", "smoothK_input": "smoothK", "Percentage_scale_menu": "Pourcentage", "Change Extended Hours": "Changer les heures prolongées", "MOM_input": "MOM", "h_interval_short": "h", "Change Interval": "Changer l’intervalle", "Change area background": "Changer le fond de la surface", "Modified Schiff": "Schiff modifié", "top": "haut", "Adelaide": "Adélaïde", "Send Backward": "Mettre vers l'Arrière", "Mexico City": "Ville de Mexico", "TRIX_input": "TRIX", "Show Price Range": "Montrer l'étendue des prix", "Elliott Major Retracement": "Elliott Retracement Principal", "ASI_study": "ASI", "Fri": "Ven", "just now": "à l'instant", "Forecast": "Prévision", "Fraction part is invalid.": "La partie fractionnelle n'est pas valide.", "Connecting": "Connexion", "Ghost Feed": "Flux fantôme d'informations", "Histogram_input": "Histogramme", "The Extended Trading Hours feature is available only for intraday charts": "L'option Heures de Trading Prolongées est disponible uniquement pour les graphiques intrajournaliers", "Stop syncing": "Ne plus synchroniser", "open": "ouvert", "StdDev_input": "StdDev", "EMA Cross_study": "EMA Cross", "Conversion Line Periods_input": "Pérodes de lignes de conversion", "Diamond": "Diamant", "My Scripts": "Mes Scripts", "Monday": "Lundi", "Add Symbol_compare_or_add_symbol_dialog": "Ajouter un symbole", "Williams %R_study": "Williams %R", "Symbol": "Symbole", "a month": "un mois", "Precision": "Précision", "depth_input": "Profondeur", "Go to": "Aller à", "Please enter chart layout name": "Veuillez entrer un nouveau de plan graphique", "Mar": "Mars", "VWAP_study": "VWAP", "Offset": "Décalage", "Format...": "Formater...", "__dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__dayName____specialSymbolOpen__à__specialSymbolClose____dayTime__", "Toggle Maximize Pane": "Basculer le volet Agrandir", "Search": "Chercher", "Zig Zag_study": "Zig Zag", "Actual": "Actuel", "SUCCESS": "SUCCÈS", "Long period_input": "Longue période", "length_input": "longueur", "roclen4_input": "roclen4", "Price Line": "Ligne de Prix", "Area With Breaks": "Zone avec des interruptions", "Median_input": "Médiane", "Stop Level. Ticks:": "Niveau du Stop en Ticks", "Window Size_input": "Taille de la fenêtre", "Economy & Symbols": "Economie et symboles", "Circle Lines": "Lignes Circulaires", "Visual Order": "Ordre de visualisation", "__specialSymbolOpen__Yesterday at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Hier à__specialSymbolClose____dayTime__", "Stop Background Color": "Couleur de Fond du Stop", "Slow length_input": "Longueur lente", "Sector": "Secteur", "powered by TradingView": "fourni par TradingView", "Text:": "Texte:", "Stochastic_study": "Stochastic", "Sep": "Sept", "TEMA_input": "TEMA", "Apply WPT Up Wave": "Appliquer Vague WPT vers le Haut", "Min Move 2": "Mouvement Minimal 2", "Extend Left End": "Prolonger l'Extrémité Gauche", "Projection down bars": "Barres de projection inférieures", "Advance/Decline_study": "Advance/Decline", "Any Number": "N'importe quel Nombre", "Flag Mark": "Marque de Drapeau", "Drawings": "Dessins", "Cancel": "Annuler", "Compare or Add Symbol": "Comparer ou Ajouter un Symbole", "Redo": "Recommencer", "Hide Drawings Toolbar": "Cacher la barre d'outils de dessin", "Ultimate Oscillator_study": "Oscillateur Ultimate", "Vert Grid Lines": "Lignes Verticales de grille", "Growing_input": "En croissance", "Plot_input": "Tracé", "Color 8_input": "Couleur 8", "Indicators, Fundamentals, Economy and Add-ons": "Indicateurs, Fondamentaux, Économie et Compléments", "h_dates": "h", "ROC Length_input": "Longueur ROC", "roclen3_input": "roclen3", "Overbought_input": "Surévalué", "Extend Top": "Etendre le sommet", "Change Minutes To": "Modifier les minutes pour", "No study templates saved": "Aucun modèle d'analyse sauvegardé", "Trend Line": "Droite de Tendance", "TimeZone": "Fuseau Horaire", "Your chart is being saved, please wait a moment before you leave this page.": "La sauvegarde de votre graphique est en cours, veuillez attendre un moment avant de quitter la page.", "Percentage": "Pourcentage", "Tu_day_of_week": "Tu", "Extended Hours": "Horaire heures prolongées", "Line With Breaks": "Ligne Interrompue", "Period_input": "Période", "Watermark": "Filigrane", "Trigger_input": "Trigger", "SigLen_input": "SigLen", "Extend Right": "Prolonger à Droite", "Color 2_input": "Couleur 2", "Show Prices": "Montrer les Prix", "Unlock": "Déverrouiller", "Copy": "Copier", "high": "haut", "Edit Order": "Éditer l'ordre", "January": "Janvier", "Arrow Mark Right": "Flèche vers la Droite", "Extend Alert Line": "Prolonger la ligne d'alerte", "Background color 1": "Couleur de Fond 1", "RSI Source_input": "Source RSI", "Close Position": "Fermer la Position", "Stop syncing drawing": "Arrêter la synchronisation du dessin", "Visible on Mouse Over": "Visible avec déplacement de la souris", "MA/EMA Cross_study": "MA/EMA Cross", "Thu": "Jeu", "Vortex Indicator_study": "Indicateur Vortex", "view-only chart by {user}": "Graphique - en lecture seule- par {user}", "ROCLen1_input": "ROCLen1", "M_interval_short": "M", "Chaikin Oscillator_input": "Oscillateur de Chaikin", "Price Levels": "Niveaux de Prix", "Show Splits": "Montrer les fractionnements d'actions", "Zero Line_input": "Ligne de zéro", "Replay Mode": "Mode Replay", "__specialSymbolOpen__Today at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__ajourd'hui à__specialSymbolClose____dayTime__", "Increment_input": "Incrément", "Days_interval": "Days", "Show Right Scale": "Montrer l'Échelle de Droite", "Show Alert Labels": "Afficher les étiquettes des alertes", "Historical Volatility_study": "Volatilité Historique", "Lock": "Verrouiller", "length14_input": "longueur14", "High": "Haut", "Q_input": "Q", "Date and Price Range": "Étendue de date et de prix", "Polyline": "Ensemble de Lignes", "Reconnect": "Reconnecter", "Lock/Unlock": "Verrouiller/Déverrouiller", "Base Level": "Niveau de base", "Label Down": "Etiquette vers le bas", "Saturday": "Samedi", "Symbol Last Value": "Dernière valeur du symbole", "Above Bar": "Barre Au-dessus", "Studies": "Etudes", "Color 0_input": "Couleur 0", "Add Symbol": "Ajouter un Symbole", "maximum_input": "maximum", "Wed": "Mer", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "VWMA_study": "VWMA", "fastLength_input": "LongueurRapide", "Time Levels": "Niveaux de Temps", "Width": "Largeur", "Loading": "en chargement", "Template": "Espace de Travail", "Use Lower Deviation_input": "Utiliser l'écart inférieur", "Parallel Channel": "Canal parallèle", "Time Cycles": "Cycles de temps", "Second fraction part is invalid.": "La deuxième partie de fraction n'est pas valide.", "Divisor_input": "Diviseur", "Baseline": "Ligne de base", "Down Wave 1 or A": "Vague Baissière 1 ou A", "ROC_input": "ROC", "Dec": "Déc", "Ray": "Rayon", "Extend": "Prolonger", "length7_input": "longueur7", "Bring Forward": "Mettre en avant", "Bottom": "Bas", "Apply Elliot Wave Major": "Appliquer Vague d'Elliot Majeure", "Undo": "Annuler", "Original": "Initial", "Mon": "Lun", "Reset Scale": "Réinitialiser l'Échelle", "Long Length_input": "Grande longueur", "True Strength Indicator_study": "Indicateur True Strength", "%R_input": "%R", "There are no saved charts": "Aucun graphique n'est sauvegardé", "Instrument is not allowed": "instrument non permis", "bars_margin": "barres", "Decimal Places": "Décimales", "Show Indicator Last Value": "Montrer la Dernière Valeur de l'Indicateur", "Initial capital": "Capital initial", "Show Angle": "Afficher l'angle", "Mass Index_study": "Index de masse", "More features on tradingview.com": "Plus de fonctionnalités sur tradingview.com", "Objects Tree...": "Arborescence des Objets...", "Remove Drawing Tools & Indicators": "Supprimer les outils de dessin et les indicateurs", "Length1_input": "Longueur 1", "Always Invisible": "Toujours invisible", "Circle": "Cercle", "Days": "Jours", "x_input": "x", "Save As...": "Sauvegarder Sous...", "Elliott Double Combo Wave (WXY)": "Vague Elliott Double Combo (WXY)", "Parabolic SAR_study": "Parabolique SAR", "Any Symbol": "N'importe quel Symbole", "Price Label": "Étiquette de Prix", "Stats Text Color": "Couleur du texte des Statistiques", "Williams Alligator_study": "Alligator Williams", "Custom color...": "Couleur Personnalisée...", "Jan": "Janv", "Jaw_input": "Jaw", "Right": "Droite", "Help": "Aide", "Coppock Curve_study": "Courbe Coppock", "Reversal Amount": "Montant de renversement", "Reset Chart": "Réinitialiser le Graphique", "Marker Color": "Couleur du marqueur", "Sunday": "Dimanche", "Left Axis": "Axe de gauche", "Open": "Ouverture", "YES": "Oui", "longlen_input": "longlen", "Moving Average Exponential_study": "Moyenne mobile exponentielle", "Source border color": "Couleur de la Bordure de la Source", "Redo {0}": "Répéter {0}", "Cypher Pattern": "Modèle Cypher", "s_dates": "s", "Area": "Région", "Triangle Pattern": "Figure en Triangle", "Balance of Power_study": "Équilibre des forces", "EOM_input": "EOM", "Shapes_input": "Formes", "Oversold_input": "Sous-évalué", "Apply Manual Risk/Reward": "Appliquer Risque/Rendement Manuel", "Market Closed": "Marché fermé", "Indicators": "Indicateurs", "close": "proche", "q_input": "q", "You are notified": "Vous êtes notifié", "Font Icons": "Icônes de police", "%D_input": "%D", "Border Color": "Couleur de la Bordure", "Offset_input": "Décalage", "Risk": "Risque", "Price Scale": "Échelle de prix", "HV_input": "HV", "Seconds": "Secondes", "Start_input": "Début", "Elliott Impulse Wave (12345)": "Vague Elliott d'impulsion (12345)", "Hours": "Heures", "Send to Back": "Mettre au Fond", "Color 4_input": "Couleur 4", "Prices": "Prix", "Hollow Candles": "Bougies Creuses", "July": "Juillet", "Create Horizontal Line": "Créer une Ligne Horizontale", "ADX Smoothing_input": "ADXSmoothing", "One color for all lines": "Une couleur pour toutes les lignes", "m_dates": "m", "Settings": "Configurations", "Candles": "Bougies", "We_day_of_week": "We", "Width (% of the Box)": "Largeur (% de la boîte)", "Go to...": "Aller à ...", "Pip Size": "Valeur du pip", "Wednesday": "Mercredi", "This drawing is used in alert. If you remove the drawing, the alert will be also removed. Do you want to remove the drawing anyway?": "Ce dessin est utilisé en alerte. Si vous supprimez le dessin, l'alerte sera également supprimée. Souhaitez-vous supprimer le dessin de toute façon?", "Show Countdown": "Montrer le décompte", "Show alert label line": "Montrer l'étiquette de la ligne d'alerte", "MA_input": "MA", "Length2_input": "Longueur 2", "not authorized": "non autorisé", "Session Volume_study": "Volume de la session", "Image URL": "URL de l'image", "SMI Ergodic Oscillator_input": "Oscillateur SMI Ergodic", "Show Objects Tree": "Montrer l'Arborescence des Objets", "Primary": "Primaire", "Price:": "Prix:", "Bring to Front": "Mettre au premier plan", "Brush": "Pinceau", "Not Now": "Pas Maintenant", "Yes": "Oui", "C_data_mode_connecting_letter": "C", "SMALen4_input": "SMALen4", "Apply Default Drawing Template": "Appliquer le modèle de dessin par défaut", "Save As Default": "Sauvegarder comme Paramètres par Défaut", "Target border color": "Couleur de Bordure de l'Objectif", "Invalid Symbol": "Symbole invalide", "Inside Pitchfork": "Fourchette Interne", "yay Color 1_input": "yay Couleur 1", "Quandl is a huge financial database that we have connected to TradingView. Most of its data is EOD and is not updated in real-time, however the information may be extremely useful for fundamental analysis.": "Quandl est une base de données financières énorme que nous avons reliée à TradingView. La plupart des données sont des données de fin de journée et ne sont pas mises à jour en temps réel, mais les informations peuvent être extrêmement utiles pour l'analyse fondamentale.", "Hide Marks On Bars": "Cacher les marques de la barre", "Cancel Order": "Annuler Ordre", "Hide All Drawing Tools": "Cacher tous les Outils de Dessin", "WMA Length_input": "Longueur du WMA", "Show Dividends on Chart": "Afficher les dividendes sur le graphique", "Show Executions": "Afficher les exécutions", "Borders": "Bordures", "Remove Indicators": "Supprimer les indicateurs", "loading...": "chargement...", "Closed_line_tool_position": "Fermé", "Columns": "Colonnes", "Change Resolution": "Changer la Résolution", "Indicator Arguments": "Arguments de l'indicateur", "Symbol Description": "Description du symbole", "Chande Momentum Oscillator_study": "Chande Momentum Oscillator", "Degree": "Degré", " per order": " par ordre", "Line - HL/2": "Ligne - Haut et Bas Divisé par 2", "Up Wave 4": "Vague Haussière 4", "Jun": "Juin", "Least Squares Moving Average_study": "Moyenne Mobile Least Squares", "Change Variance value": "Changer la valeur de variance", "powered by ": "fourni par ", "Source_input": "Source", "Change Seconds To": "Changer les secondes pour", "%K_input": "%K", "Scales Text": "Texte des Échelles", "Please enter template name": "Veuillez entrer le nom du modèle", "Symbol Name": "Nom du symbole", "Events Breaks": "Pause entre Événements", "Study Templates": "Modèles d'étude", "Months": "Mois", "Symbol Info...": "Info du Symbole...", "Elliott Wave Minor": "Elliott Vague Mineure", "Read our blog for more info!": "Lisez notre blog pour plus d'infos!", "Measure (Shift + Click on the chart)": "Mesure (Majuscule+Cliquer sur le Graphique)", "Override Min Tick": "Ne pas tenir compte du Tick minimum", "Show Positions": "Montrer les postitions", "Dialog": "Dialogue", "Add To Text Notes": "Ajouter aux Notes de Texte", "Elliott Triple Combo Wave (WXYXZ)": "Vague Triple Combo Elliott (WXYXZ)", "Multiplier_input": "Multiplicateur", "Risk/Reward": "Risque/Récompense", "Base Line Periods_input": "Périodes de ligne de base", "Show Dividends": "Montrer les Dividendes", "Relative Strength Index_study": "Relative Strength Index", "Modified Schiff Pitchfork": "Fourchette de Schiff Modifiée", "Top Labels": "Étiquettes du Haut", "Show Earnings": "Montrer les Gains", "Line - Open": "Ligne - Ouverture", "Elliott Triangle Wave (ABCDE)": "Vague Triangle Elliott (ABCDE)", "Text Wrap": "Retour à la ligne forcé du Texte", "Reverse Position": "Inverser la Position", "Elliott Minor Retracement": "Elliott Retracement Mineur", "DPO_input": "DPO", "Pitchfan": "Éventail", "Slash_hotkey": "Slash", "No symbols matched your criteria": "Aucuns symboles ne correspondent à vos critères", "Icon": "Icône", "lengthRSI_input": "longueurRSI", "Tuesday": "Mardi", "Teeth Length_input": "Longueur des Teeth", "Indicator_input": "Indicateur", "Box size assignment method": "Méthode d'affectation de la taille de boîte", "Open Interval Dialog": "Ouvrir la fenêtre intervalle de temps", "Athens": "Athènes", "Fib Speed Resistance Arcs": "Arcs de Résistance de la vitesse de Fibonacci", "Content": "Contenu", "middle": "Milieu", "Lock Cursor In Time": "Verrouiller le curseur dans le temps", "Intermediate": "Intermédiaire", "Eraser": "Gomme", "Relative Vigor Index_study": "Relative Vigor Index", "Envelope_study": "Enveloppe", "Symbol Labels": "Etiquettes des Symboles", "Pre Market": "Pré-marché", "Horizontal Line": "Ligne Horizontale", "O_in_legend": "O", "Right Labels": "Étiquettes à droite", "HL Bars": "Barres Haut-Bas", "Lines:": "Droites:", "Hide Favorite Drawings Toolbar": "Masquer la barre d'outils Dessins favoris", "useTrueRange_input": "UtiliserVraieGamme", "Profit Level. Ticks:": "Niveau de Profit. Ticks:", "Show Date/Time Range": "Montrer l'intervalle date/heure", "Level {0}": "Niveau {0}", "Favorites": "Favoris", "Horz Grid Lines": "Lignes horizontales de la grille", "-DI_input": "-DI", "Price Range": "Intervalle de Prix", "day": "jour", "deviation_input": "écart", "Account Size": "Taille du compte", "Value_input": "Valeur", "Time Interval": "Intervalle de Temps", "Success text color": "Couleur de Texte en cas de succès", "ADX smoothing_input": "ADXsmoothing", "%d hour": "%d heure", "Order size": "Taille de l'Ordre", "Drawing Tools": "Outils de Dessin", "Save Drawing Template As": "Sauvegarder le Modèle de Dessin Sous", "Traditional": "Traditionnel", "Chaikin Money Flow_study": "Chaikin Money Flow", "Ease Of Movement_study": "Ease Of Movement", "Defaults": "Configurations par Défaut", "Percent_input": "Pourcent", "Interval is not applicable": "Intervalle non applicable", "short_input": "short", "Visual settings...": "Paramètres de visualisation", "RSI_input": "RSI", "Chatham Islands": "Îles Chatham", "Detrended Price Oscillator_input": "Oscillateur de prix hors tendance", "Mo_day_of_week": "Mo", "center": "Centre", "Vertical Line": "Droite Verticale", "Show Splits on Chart": "Afficher les fractionnements d'actions sur le graphique", "Sorry, the Copy Link button doesn't work in your browser. Please select the link and copy it manually.": "Désolé, le bouton Copier le Lien ne fonctionne pas avec votre navigateur. Veuillez sélectionner le lien et le copier manuellement.", "Levels Line": "Ligne des Niveaux", "Events & Alerts": "Événements et Alertes", "May": "Mai", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "AroonDown", "Add To Watchlist": "Ajouter à la liste à Surveiller", "Price": "Prix", "left": "restant", "Lock scale": "Verrouiller l'Échelle", "Limit_input": "Limite", "Change Days To": "Changer les jours pour", "Price Oscillator_study": "Price Oscillator", "smalen1_input": "smalen1", "Drawing Template '{0}' already exists. Do you really want to replace it?": "Le modèle de dessin '{0}' existe déjà. Voulez-vous vraiment le remplacer ?", "Show Middle Point": "Montrer point moyen", "KST_input": "KST", "Extend Right End": "Prolonger l'extrémité droite", "Fans": "Éventails de lignes", "Line - Low": "Ligne - Prix le plus bas", "Price_input": "Prix", "Gann Fan": "Éventail de Gann", "Weeks": "Semaines", "McGinley Dynamic_study": "McGinley Dynamic", "Relative Volatility Index_study": "Relative Volatility Index", "Source Code...": "Code Source...", "PVT_input": "PVT", "Show Hidden Tools": "Montrer les Outils Cachés", "Hull Moving Average_study": "Moyenne Mobile Hull", "Symbol Prev. Close Value": "Symbole précédent valeur de fermeture", "{0} chart by TradingView": "{0} graphique par TradingView", "Right Shoulder": "Bretelle droite", "Remove Drawing Tools": "Supprimer les outils de dessin", "Friday": "Vendredi", "Zero_input": "Zéro", "Company Comparison": "Comparaison de société", "Stochastic Length_input": "Longueur stochastique", "mult_input": "mult", "URL cannot be received": "L'URL ne peut pas être reçue", "Success back color": "Couleur de fond en cas de succès", "E_data_mode_end_of_day_letter": "E", "Trend-Based Fib Extension": "Prolongation de Fibonacci selon la Tendance", "Top": "Haut", "Double Curve": "Double Courbe", "Stochastic RSI_study": "Stochastic RSI", "Oops!": "Oups!", "Horizontal Ray": "Rayon Horizontal", "smalen3_input": "smalen3", "Ok": "D'accord", "Script Editor...": "Éditeur de Script...", "Trades on Chart": "Les Trades sur le graphique", "Listed Exchange": "Bourse agréée", "Error:": "Erreur:", "Fullscreen mode": "Mode plein écran", "Add Text Note For {0}": "Ajouter une Note de Texte pour {0}", "K_input": "K", "Do you really want to delete Drawing Template '{0}' ?": "Voulez-vous vraiment supprimer le modèle de dessin '{0}' ?", "ROCLen3_input": "ROCLen3", "Restore Size": "Restaurer la Taille", "Text Color": "Couleur du Texte", "Rename Chart Layout": "Renommer la configuration du graphique", "Built-ins": "Intégrés", "Background color 2": "Couleur de Fond 2", "Drawings Toolbar": "Barre d'outils de dessin", "New Zealand": "Nouvelle-Zélande", "CHOP_input": "CHOP", "Apply Defaults": "Appliquer les paramètres par défaut", "% of equity": "% d'équité", "Extended Alert Line": "Ligne d'Alerte étendue", "Signal_input": "Signal", "Moving Average Channel_study": "Canal de moyenne mobile", "Show": "Montrer", "{0} bars": "{0} barres", "Lower_input": "Inférieur", "Warning": "Avertissement", "Elder's Force Index_study": "Index de Force Elder", "Show Earnings on Chart": "Montrer les gains sur le graphique", "ATR_input": "ATR", "Low": "Bas", "Bollinger Bands %B_study": "Bollinger Bands %B", "Time Zone": "Fuseau Horaire", "right": "Droite", "%d month": "%d mois", "Wrong value": "Valeur erronée", "Upper Band_input": "Bande supérieure", "Sun": "Dim", "start_input": "start", "No indicators matched your criteria.": "Aucuns indicateurs ne correspondent à vos critères.", "Down Color": "Couleur du bas", "Short length_input": "Longueur du Short", "Kolkata": "Calcuta", "Submillennium": "Sous-millenaire", "Technical Analysis": "Analyse Technique", "Show Text": "Montrer le Texte", "Channel": "Canal", "FXCM CFD data is available only to FXCM account holders": "Les cotations des CFDs de FXCM ne sont disponibles qu'aux détenteurs de comptes chez FXCM.", "Lagging Span 2 Periods_input": "Délai de retournement 2 périodes", "Connecting Line": "Ligne de connexion", "Seoul": "Séoul", "bottom": "Bas", "Teeth_input": "Teeth", "Open Manage Drawings": "Ouvrir Gérer les dessins", "Save New Chart Layout": "Enregistrer la nouvelle configuration graphique", "Fib Channel": "Canal de Fibonacci", "Save Drawing Template As...": "Sauvegarder le Modèle de Dessin Sous...", "Minutes_interval": "Minutes", "Up Wave 2 or B": "Vague Haussière 2 ou B", "exponential_input": "exponentiel", "Directional Movement_study": "Directional Movement", "roclen2_input": "roclen2", "Apply WPT Down Wave": "Appliquer Vague WPT vers le Bas", "Not applicable": "Non applicable", "Bollinger Bands %B_input": "Bandes de Bollinger %B", "Default": "Par Défaut", "Template name": "Nom du modèle", "Indicator Values": "Valeurs de l'indicateur", "Lips Length_input": "Longueur des lips", "Toggle Log Scale": "Mise à l'échelle logarithmique", "L_in_legend": "B", "Remove custom interval": "Supprimer l'intervalle personnalisé", "shortlen_input": "shortlen", "Quotes are delayed by {0} min": "Les cotations sont différées de {0} min", "Hide Events on Chart": "Cacher les événements sur le graphique", "Cash": "cash", "Profit Background Color": "Couleur de Fond des Profits", "Bar's Style": "Style de barre", "Exponential_input": "Exponentiel", "Down Wave 5": "Vague Baissière 5", "Previous": "Précédent", "Stay In Drawing Mode": "Rester en Mode Dessin", "Comment": "Commentaire", "Connors RSI_study": "RSI de Connors", "Bars": "Barres", "Show Labels": "Montrer les Étiquettes", "Flat Top/Bottom": "Haut/Bas Plat", "Symbol Type": "Type de symbole", "December": "Décembre", "Lock drawings": "Verrouiller les dessins", "Border color": "Couleur de la Bordure", "Change Seconds From": "Changer les secondes à partir de", "Left Labels": "Étiquettes de Gauche", "Insert Indicator...": "Ajouter un indicateur...", "ADR_B_input": "ADR_B", "Paste %s": "Coller %s", "Change Symbol...": "Changer le Symbole...", "Timezone": "Fuseau horaire", "Invite-only script. You have been granted access.": "Script sur invitation uniquement. L’accès vous a été accordé.", "Color 6_input": "Couleur 6", "ATR Length": "Longueur ATR", "{0} financials by TradingView": "{0} données financières par TradingView", "Extend Lines Left": "Etendre les lignes à gauche", "Feb": "Févr", "Transparency": "Transparence", "No": "Non", "June": "Juin", "Cyclic Lines": "Lignes cycliques", "length28_input": "longueur28", "ABCD Pattern": "Figure en ABCD", "When selecting this checkbox the study template will set \"__interval__\" interval on a chart": "Lorsque vous cochez cette case, le modèle d'étude appliquera __interval__ comme Intervalle sur un graphique", "Add": "Ajouter", "OC Bars": "Barres Ouverture Fermeture", "Millennium": "Millénaire", "On Balance Volume_study": "Volume On Balance", "Apply Indicator on {0} ...": "Appliquer l'indicateur sur {0} ...", "NEW": "NOUVEAU", "Chart Layout Name": "Nom de la configuration graphique", "Up bars": "Barres supérieures", "Hull MA_input": "Hul MA", "Lock Scale": "Verrouiller l'Échelle", "Extended": "Étendu", "log": "Logarithme", "NO": "Non", "Top Margin": "Marge en Haut", "Up fractals_input": "Fractales supérieures", "Insert Drawing Tool": "Insérer l'Outil de Dessin", "OHLC Values": "Valeurs OHLC", "Correlation_input": "Corrélation", "Session Breaks": "Arrêts de Session", "Add {0} To Watchlist": "Ajouter {0} à la liste de surveillance", "Anchored Note": "Note ancrée", "lipsLength_input": "longueurLips", "low": "bas", "Apply Indicator on {0}": "Appliquer l'indicateur sur {0}", "UpDown Length_input": "Longueur Haut-Bas", "November": "Novembre", "Tehran": "Téhéran", "Balloon": "Ballon", "Track time": "Suivre le temps", "Background Color": "Couleur de Fond", "an hour": "une heure", "Right Axis": "Axe de droite", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "Longueurlente", "Click to set a point": "Cliquer pour établir un point", "Save Indicator Template As...": "Sauvegarder le Modèle d'Indicateur Sous...", "Arrow Up": "Flèche vers le haut", "n/a": "n/d", "Indicator Titles": "Titres de l'indicateur", "Failure text color": "Échec Couleur du Texte", "Sa_day_of_week": "Sa", "Net Volume_study": "Volume net", "Error": "Erreur", "Edit Position": "Éditer la position", "RVI_input": "RVI", "Centered_input": "Centré", "Recalculate On Every Tick": "Recalculer sur chaque tick", "Left": "Gauche", "Simple ma(oscillator)_input": "Simple ma(oscillateur)", "Compare": "Comparer", "Fisher Transform_study": "Fisher Transform", "Show Orders": "Voir les Ordres", "Zoom In": "Grossissement", "Length EMA_input": "Longueur EMA", "Enter a new chart layout name": "Entrer un nouveau nom de configuration graphique", "Signal Length_input": "Longueur du signal", "FAILURE": "ÉCHEC", "Point Value": "Valeur du point", "D_interval_short": "D", "MA with EMA Cross_study": "MA avec EMA Cross", "Label Up": "Etiquette vers le haut", "Price Channel_study": "Canal de prix", "Close": "Fermeture", "ParabolicSAR_input": "SAR Parabolique", "Log Scale_scale_menu": "Échelle Logarithmique", "MACD_input": "MACD", "Do not show this message again": "Ne plus montrer ce message", "{0} P&L: {1}": "{0} Gains&Pertes: {1}", "No Overlapping Labels": "Pas d'étiquettes superposées", "Arrow Mark Left": "Flèche vers la Gauche", "Down Wave 2 or B": "Vague Baissière 2 ou B", "Line - Close": "Ligne - Fermeture", "Confirm Inputs": "Confirmer les entrées", "Open_line_tool_position": "Ouvert", "Lagging Span_input": "Délai de retournement", "Subminuette": "Sous-menuet", "Thursday": "Jeudi", "Arrow Down": "Flèche vers le bas", "Triple EMA_study": "EMA Triple", "Elliott Correction Wave (ABC)": "Vague Elliott de correction (ABC)", "Error while trying to create snapshot.": "Erreur lors de la création de l'instantané.", "Label Background": "Fond de l'Étiquette", "Templates": "Espaces de Travail", "Please report the issue or click Reconnect.": "Veuillez signaler le problème ou cliquez sur Reconnecter.", "1. Slide your finger to select location for first anchor
2. Tap anywhere to place the first anchor": "1.Glisser votre doigt pour choisir l'endroit du premier ancrage
2.Taper n'importe où pour placer le premier ancrage", "Signal Labels": "Étiquettes du signal", "Delete Text Note": "Supprimer la note de texte", "compiling...": "compilation...", "Detrended Price Oscillator_study": "Detrended Price Oscillator", "Color 5_input": "Couleur 5", "Fixed Range_study": "Gamme fixe", "Up Wave 1 or A": "Vague Haussière 1 ou A", "Scale Price Chart Only": "Mise à l’échelle des prix du graphique uniquement", "Unmerge Up": "Défusionner vers le Haut", "auto_scale": "automatique", "Short period_input": "Période du Short", "Background": "Arrière-Plan", "Up Color": "Couleur du haut", "Apply Elliot Wave Intermediate": "Appliquer Vague d'Elliot Intermédiaire", "VWMA_input": "VWMA", "Lower Deviation_input": "Écart inférieur", "Save Interval": "Sauvegarder l'Intervalle", "February": "Février", "Reverse": "Inverse", "Oops, something went wrong": "Oups, quelque chose n'a pas fonctionné", "Add to favorites": "Ajouter aux favoris", "Median": "Médiane", "ADX_input": "ADX", "Remove": "Retirer ", "len_input": "len", "Arrow Mark Up": "Flèche vers le Haut", "April": "Avril", "Active Symbol": "Symbole actif", "Crosses_input": "Crosses", "Middle_input": "Milieu", "Sync drawing to all charts": "Sync les tracés sur tous les graphiques", "LowerLimit_input": "Limite inférieure", "Know Sure Thing_study": "Know Sure Thing", "Copy Chart Layout": "Copier la mise en page du graphique", "Compare...": "Comparer...", "1. Slide your finger to select location for next anchor
2. Tap anywhere to place the next anchor": "1.Glisser votre doigt pour choisir l'endroit de l'ancrage suivant
2.Taper n'importe où pour placer l'ancrage suivant", "Text Notes are available only on chart page. Please open a chart and then try again.": "Les Notes de Texte sont seulement disponibles sur la page du graphique. Veuillez ouvrir un graphiqueet réessayer.", "Color": "Couleur", "Aroon Up_input": "Aroon Up", "Singapore": "Singapour", "Scales Lines": "Axes", "Type the interval number for munute charts (i.e. 5 if it is going to be a five minute chart). Or number plus letter for H (Hourly), D (Daily), W (Weekly), M (Monthly) intervals (i.e. D or 2H)": "Tapez le numéro d'intervalle pour les graphiques de minute (c'est-à-dire 5 s'il s'agit d'un graphique de cinq minutes). Ou le nombre et la lettre pour les intervalles H (horaire), D (quotidien), W (hebdomadaire), M (mensuel) (c'est-à-dire D ou 2H)", "HLC Bars": "Barres HLC", "Up Wave C": "Vague Haussière C", "Show Distance": "Montrer la distance", "Risk/Reward Ratio: {0}": "Ratio Risque/Récompense: {0}", "Volume Oscillator_study": "Oscillateur de volume", "Williams Fractal_study": "Fractal Williams", "Merge Up": "Fusionner vers le Haut", "Right Margin": "Marge Droite", "Moscow": "Moscou", "Warsaw": "Varsovie"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/he_IL.json b/static/Kline/charting_library/static/localization/translations/he_IL.json new file mode 100644 index 0000000..13b72bc --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/he_IL.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "ticks", "Months_interval": "Months", "Percent_input": "Percent", "Callout": "הסבר", "Clone": "שכפל", "London": "לונדון", "roclen1_input": "roclen1", "Minor": "מינורי", "smalen3_input": "smalen3", "Magnet Mode": "מצב מגנטי", "OSC_input": "OSC", "Volume_study": "מחזור מסחר", "Lips_input": "Lips", "Histogram": "היסטוגרמה", "Base Line_input": "Base Line", "Step": "צעד", "Fib Time Zone": "אזור זמן פיבונאצ'י", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "רצועות בויילינגר", "Nov": "נובמבר", "Upper_input": "Upper", "exponential_input": "exponential", "Move Up": "הזז למעלה", "Scales Properties...": "הגדרות קנה מידה...", "Count_input": "Count", "Anchored Text": "טקסט נעוץ", "OnBalanceVolume_input": "OnBalanceVolume", "Cross_chart_type": "צלב", "H_in_legend": "ג", "Pitchfork": "מזלג", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "הצטברות / הפצה", "Rate Of Change_study": "Rate Of Change", "in_dates": "בתוך", "Color 7_input": "Color 7", "Chop Zone_study": "Chop Zone", "Scales Properties": "הגדרות קנה מידה", "Trend-Based Fib Time": "זמן פיבונאצ'י מבוסס מגמה", "Remove All Indicators": "הסר אינדיקטורים", "Oscillator_input": "Oscillator", "Last Modified": "שונה לאחרונה", "yay Color 0_input": "yay Color 0", "Labels": "תוויות", "Chande Kroll Stop_study": "צ'אנד קרול סטופ (CKS)", "Hours_interval": "Hours", "Scale Right": "קנה מידה ימני", "Money Flow_study": "זרימת כספים", "DEMA_input": "DEMA", "Hide All Drawing Tools": "הסתר את כלי הציור", "Toggle Percentage": "החלף אחוזים", "Remove All Drawing Tools": "הסר כלי ציור", "Linear Regression Curve_study": "Linear Regression Curve", "Symbol_input": "Symbol", "increment_input": "increment", "Compare or Add Symbol...": "השווה או הוסף סימול...", "Label": "תווית", "smoothD_input": "smoothD", "Falling_input": "Falling", "Risk/Reward short": "סיכון/סיכוי שורט", "Entry price:": "מחיר כניסה:", "Circles": "מעגלים", "Ichimoku Cloud_study": "ענן איצ'ימוקו", "Signal smoothing_input": "Signal smoothing", "Toggle Log Scale": "הפעל/כבה תפריט קנה מידה", "Grid": "רשת", "Mass Index_study": "מדד המונים", "Rename...": "בחר שם חדש", "Smoothing_input": "Smoothing", "Color 3_input": "Color 3", "Jaw Length_input": "Jaw Length", "Keltner Channels_study": "תעלות קלטנר", "Long Position": "עסקת לונג", "Bands style_input": "Bands style", "Undo {0}": "בטל (0)", "With Markers": "עם הדגשות", "Momentum_study": "Momentum", "MF_input": "MF", "Gann Box": "קופסת גאן", "m_dates": "חודש", "Fast length_input": "Fast length", "Apply Elliot Wave": "החל גלי אליוט", "Disjoint Angle": "זוית שבורה", "W_interval_short": "W", "Log Scale": "תפריט קנה מידה", "Minuette": "מינוט (Minuette)", "Equality Line_input": "Equality Line", "Short_input": "Short", "Fib Wedge": "דחיסת פיבונאצ'י", "Line": "קו", "Down fractals_input": "Down fractals", "Fib Retracement": "תיקוני פיבונאצ'י", "smalen2_input": "smalen2", "isCentered_input": "isCentered", "Border": "גבול", "Klinger Oscillator_study": "מתנד קלינגר (KO)", "Style": "סגנון", "SMI Ergodic Indicator/Oscillator_study": "SMI Ergodic Indicator/Oscillator", "Aug": "אוגוסט", "No Overlapping Labels_scale_menu": "No Overlapping Labels", "Manage Drawings": "נהל ציורים", "No drawings yet": "אין ציור עדיין", "Chande MO_input": "Chande MO", "jawLength_input": "jawLength", "TRIX_study": "טריקס (TRIX)", "Border color": "צבע גבול", "RVGI_input": "RVGI", "signalLength_input": "signalLength", "%s ago_time_range": "%s ago", "Renko": "גרף ראנקו", "d_dates": "יום", "Point & Figure": "גרף Point & Figure", "August": "‏אוגוסט", "Source_compare": "מקור", "Correlation Coefficient_study": "Correlation Coefficient", "Text color": "צבע טקסט", "Levels": "רמות", "Length_input": "Length", "Short Length_input": "Short Length", "teethLength_input": "teethLength", "Visible Range_study": "Visible Range", "Hong Kong": "הונג קונג", "Text Alignment:": "יישור טקסט", "Subminuette": "סאבמינוט (Subminuette)", "October": "אוקטובר‏", "Lock All Drawing Tools": "נעל כלי ציור", "Long_input": "Long", "Default": "ברירת מחדל", "Head & Shoulders": "ראש וכתפיים", "Properties...": "מאפיינים...", "MA Cross_study": "ממוצעים נעים חוצים", "Trend Angle": "זוית מגמה", "Crosshair": "כוונת צלב", "Signal line period_input": "Signal line period", "Timezone/Sessions Properties...": "הגדרות זמן מקומי", "Line Break": "מקטע קו", "Show/Hide": "הצג/הסתר", "Price Volume Trend_study": "Price Volume Trend", "Auto Scale": "קנה מידה אוטומטי", "Text": "טקסט", "F_data_mode_forbidden_letter": "F", "Show Bars Range": "הראה מרחק נרות", "Risk/Reward long": "סיכון/סיכוי לונג", "Apr": "אפריל", "Long RoC Length_input": "Long RoC Length", "Length3_input": "Length3", "+DI_input": "+DI", "Madrid": "מדריד", "Sig_input": "Sig", "MACD_study": "MACD", "Moving Average_study": "ממוצע נע", "Zoom In": "הגדל", "Failure back color": "צבע כישלון אחורי", "Extend Left": "הרחב שמאלה", "Date Range": "טווח תאריכים", "Show Price": "הצג מחיר", "Level_input": "Level", "Commodity Channel Index_study": "מדד ערוץ סחורות ׁׁ(CCI)", "Elder's Force Index_input": "Elder's Force Index", "Gann Square": "מרובע גאן", "Format": "פורמט", "Color bars based on previous close": "צבע הנר על בסיס הסגירה הקודמת", "Change band background": "שנה צבע רצועה", "Text:": "טקסט:", "Aroon_study": "הרון (Aroon)", "Active Symbol": "סמל פעיל", "Lead 1_input": "Lead 1", "Short Position": "עסקת שורט", "SMALen1_input": "SMALen1", "P_input": "P", "SMALen3_input": "SMALen3", "Average Directional Index_study": "Average Directional Index", "Fr_day_of_week": "Fr", "Target Color:": "צבע יעד:", "Bars Pattern": "תבנית נרות", "D_input": "D", "Font Size": "גודל גופן", "Change Interval": "שנה אינטרוול זמן", "p_input": "p", "Chart layout name": "שם תצורת גרף", "Fib Circles": "עיגולי פיבונאצ'י", "Dot": "נקודה", "Target back color": "צבע יעד אחורי", "All": "הכל", "orders_up to ... orders": "orders", "Dot_hotkey": "Dot", "Lead 2_input": "Lead 2", "Save image": "שמור תמונה", "Move Down": "הזז למטה", "Vortex Indicator_study": "Vortex Indicator", "Apply": "החל", "Plots Background_study": "Plots Background", "Price Channel_study": "Price Channel", "Hide": "הסתר", "Toggle Maximize Chart": "החלף מיקסום גרף", "Target text color": "צבע יעד טקסט", "Scale Left": "קנה מידה שמאלי", "Elliott Wave Subminuette": "גלי אליוט סאבמינוט (Subminuette)", "Jan": "ינואר", "UO_input": "UO", "Source back color": "צבע מקור אחורי", "Sao Paulo": "סאו פאולו", "R_data_mode_realtime_letter": "R", "Extend Lines": "הרחב קווים", "Conversion Line_input": "Conversion Line", "March": "מרץ‏", "Su_day_of_week": "Su", "Exchange": "בורסה", "Arcs": "קשתות", "Regression Trend": "טרנד רגריסיבי", "Fib Spiral": "ספירלת פיבונאצ'י", "Double EMA_study": "Double EMA", "Price Oscillator_study": "מתנד מחיר (PO)", "Stop Color:": "צבע סטופ:", "Stay in Drawing Mode": "הישאר במצב ציור", "Bottom Margin": "שוליים תחתונים", "Average True Range_study": "ממוצע טווח אמיתי (ATR)", "Max value_input": "Max value", "MA Length_input": "MA Length", "in %s_time_range": "in %s", "UpperLimit_input": "UpperLimit", "sym_input": "sym", "DI Length_input": "DI Length", "SMI_input": "SMI", "Arrow": "חץ", "Basis_input": "Basis", "Arrow Mark Down": "חץ למטה", "lengthStoch_input": "lengthStoch", "Taipei": "טייפה", "Remove from favorites": "הסר ממועדפים", "Copy": "העתק", "Scale Series Only": "הגדר קנה מידה רצף בלבד", "Simple": "פשוט", "Arnaud Legoux Moving Average_study": "ממוצעים נעים ארנולד לגוקס (ALMA)", "Smoothed Moving Average_study": "Smoothed Moving Average", "Lower Band_input": "Lower Band", "VI +_input": "VI +", "Q_input": "Q", "Always Show Stats": "תמיד הראה נתונים", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "Simple ma(signal line)", "Change Interval...": "שנה טווח זמן", "Color 6_input": "Color 6", "Right End": "גבול ימני", "CRSI_study": "CRSI", "UTC": "אזור זמן", "Chaikin Oscillator_study": "מתנד צ'אייקין (CO)", "Balloon": "בלון", "Color Theme": "נושא צבע", "Awesome Oscillator_study": "מתנד אוסום (AO)", "Bollinger Bands Width_input": "Bollinger Bands Width", "long_input": "long", "D_interval_short": "D", "Fisher_input": "Fisher", "Color 1_input": "Color 1", "Moving Average Weighted_study": "Moving Average Weighted", "Save": "שמור", "Type": "סוג", "Wick": "פתיל", "Accumulative Swing Index_study": "Accumulative Swing Index", "Load Chart Layout": "טען תצורת גרף", "Fib Speed Resistance Fan": "מניפת התנגדות פיבונאצ'י", "Left End": "קצה שמאלי", "Volume Oscillator_study": "חישוב מחזור ע\"י יחס בין ממוצעים נעים (Oscillator)", "S_data_mode_snapshot_letter": "S", "Elliott Wave Circle": "מעגל גלי אליוט", "Earnings breaks": "הפסקות דו\"חות רווחים", "MTPredictor": "תוכנת מסחר MTPredictor", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "Upper Deviation", "(H + L)/2": "2/(ג+נ)", "XABCD Pattern": "דפוס XABCD", "Schiff Pitchfork": "מזלג שיף", "Flipped": "הפוך במאוזן", "Move_input": "Move", "NV_input": "NV", "Choppiness Index_study": "מדד צ'ופינס", "Merge Down": "הרחב מטה", "Th_day_of_week": "Th", "Overlay the main chart": "כיסוי גרף ראשי", "Delete": "מחק", "Length MA_input": "Length MA", "percent_input": "percent", "September": "ספטמבר‏", "{0} copy": "העתק", "Median_input": "Median", "Accumulation/Distribution_input": "Accumulation/Distribution", "C_in_legend": "ס", "Weeks_interval": "Weeks", "smoothK_input": "smoothK", "Percentage_scale_menu": "אחוז", "MOM_input": "MOM", "h_interval_short": "h", "Rotated Rectangle": "מלבן מסובב", "Modified Schiff": "שיף מעודכן", "top": "חלק עליון", "Send Backward": "שלח אחורה", "Custom color...": "בחירת צבע אישית", "TRIX_input": "TRIX", "Elliott Major Retracement": "התנגדות ראשית אליוט", "Periods_input": "Periods", "Forecast": "תחזית", "Histogram_input": "Histogram", "The Extended Trading Hours feature is available only for intraday charts": "המסחר מחוץ לשעות המסחר הפעילות אפשרי עבור תרשימים תוך יומיים בלבד.", "StdDev_input": "StdDev", "EMA Cross_study": "EMA Cross", "Conversion Line Periods_input": "Conversion Line Periods", "Add Symbol_compare_or_add_symbol_dialog": "Add Symbol", "Williams %R_study": "Williams %R", "Symbol": "סימול", "Precision": "דיוק", "Please enter chart layout name": "אנא הכנס שם לתצורת הגרף", "VWAP_study": "VWAP", "Offset": "מרווח", "Date": "תאריך", "Format...": "אתחול...", "Toggle Auto Scale": "הפעל/כבה קנה מידה אוטומטיות", "Search": "חפש", "Zig Zag_study": "Zig Zag", "Actual": "אמיתי", "SUCCESS": "הצלחה", "Long period_input": "Long period", "length_input": "length", "roclen4_input": "roclen4", "Price Line": "קו מחיר", "Area With Breaks": "אזור מקוטע", "Zoom Out": "הקטן", "Stop Level. Ticks:": "רמת סטופ. טיקים:", "Jul": "יולי", "Visual Order": "הוראה ויזואלית", "Stop Background Color": "צבע רקע סטופ", "1. Slide your finger to select location for first anchor
2. Tap anywhere to place the first anchor": "1. החלק את האצבע כדי לבחור מקום לעוגן הראשון,
2\\. לחץ בכל מקום על מנת לשים עוגן", "Stochastic_study": "סטוכסטיק", "Sep": "ספטמבר", "TEMA_input": "TEMA", "Apply WPT Up Wave": "החל גל WPT כלפי מעלה", "Extend Left End": "הרחב גבול שמאלי", "Advance/Decline_study": "Advance/Decline", "New York": "ניו יורק", "Flag Mark": "סמן בדגל", "Drawings": "ציורים", "Cancel": "ביטול", "Bar #": "נר #", "Redo": "בצע שוב", "Ultimate Oscillator_study": "Ultimate Oscillator", "Growing_input": "Growing", "Angle": "זוית", "Plot_input": "Plot", "Chicago": "שיקגו", "Color 8_input": "Color 8", "Indicators, Fundamentals, Economy and Add-ons": "אינדקטורים, פונדמנטלי, כלכלה ותוספים", "h_dates": "שעה", "Bollinger Bands Width_study": "רוחב רצועות בויילינגר", "roclen3_input": "roclen3", "Overbought_input": "Overbought", "DPO_input": "DPO", "No study templates saved": "אין תבניות מתנדים שמורות", "Trend Line": "קו מגמה", "TimeZone": "אזור זמן", "Percentage": "אחוז", "Tu_day_of_week": "Tu", "Extended Hours": "מחוץ לשעות המסחר", "Triangle": "משולש", "Line With Breaks": "קו מקוטע", "Period_input": "Period", "Watermark": "קו המים", "Trigger_input": "Trigger", "SigLen_input": "SigLen", "Extend Right": "הרחב ימינה", "Color 2_input": "Color 2", "Show Prices": "הצג מחירים", "Arrow Mark Right": "חץ ימינה", "Extend Alert Line": "קו התראה מורחב", "Background color 1": "צבע רקע 1", "RSI Source_input": "RSI Source", "MA/EMA Cross_study": "MA/EMA Cross", "Williams Alligator_study": "תנין ויליאמס", "ROCLen1_input": "ROCLen1", "M_interval_short": "M", "Chaikin Oscillator_input": "Chaikin Oscillator", "Price Levels": "רמות מחיר", "Source text color": "צבע טקסט מקור", "Zero Line_input": "Zero Line", "Increment_input": "Increment", "Days_interval": "Days", "Net Volume_study": "מחזור מסחר כללי", "Show Alert Labels": "הראה תוויות התראה", "Historical Volatility_study": "Historical Volatility", "Lock": "נעל", "length14_input": "length14", "High": "גבוה", "ext": "חיצוני", "Polyline": "קווים מחוברים", "Lock/Unlock": "פתח/סגור", "Color 0_input": "Color 0", "Add Symbol": "הוסף סימול", "maximum_input": "maximum", "Paris": "פריז", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "VWMA_study": "ממוצעים נעים תלויי מחזור", "fastLength_input": "fastLength", "Width": "רוחב", "Time Levels": "רמות זמן", "Use Lower Deviation_input": "Use Lower Deviation", "Parallel Channel": "ערוץ מקביל", "Divisor_input": "Divisor", "Dec": "דצמבר", "Extend": "הרחב", "length7_input": "length7", "Send to Back": "שלח לאחור", "Undo": "בטל", "Window Size_input": "Window Size", "Reset Scale": "אתחל קנה מידה", "Long Length_input": "Long Length", "%R_input": "%R", "Chart Properties": "מאפייני גרף", "bars_margin": "נרות", "Show Angle": "הראה זווית", "Objects Tree...": "תרשים האובייקטים...", "Length1_input": "Length1", "x_input": "x", "Save As...": "שמור בשם...", "Tehran": "טהרן", "Parabolic SAR_study": "פרבוליק SAR", "Price Label": "תווית מחיר", "Stats Text Color": "צבע טקסט לנתונים", "Short RoC Length_input": "Short RoC Length", "Jaw_input": "Jaw", "Help": "עזרה", "Coppock Curve_study": "עקומת קופוק", "Reset Chart": "איפוס גרף", "Marker Color": "צבע סמן", "Open": "פתיחה", "YES": "כן", "longlen_input": "longlen", "Moving Average Exponential_study": "ממוצעים נעים אקספוננציאלית", "Source border color": "צבע גבול מקור", "Redo {0}": "בצע שוב {0}", "s_dates": "s", "Area": "אזור", "Triangle Pattern": "תבנית משולשת", "Balance of Power_study": "שיווי משקל כוח (BoP)", "EOM_input": "EOM", "Sydney": "סינדי", "Indicators": "אינדיקטורים", "q_input": "q", "%D_input": "%D", "Border Color": "צבע גבול", "Offset_input": "Offset", "Price Scale": "טווח מחירים", "HV_input": "HV", "Settings": "הגדרות", "Start_input": "התחל", "Oct": "אוקטובר", "ROC_input": "ROC", "Berlin": "ברלין", "Color 4_input": "Color 4", "Los Angeles": "לוס אנג'לס", "Prices": "מחירים", "Hollow Candles": "נרות חלולים", "July": "יולי‏", "Minute": "דקה", "Cycle": "גלי אליוט מחזוריים", "ADX Smoothing_input": "ADX Smoothing", "(H + L + C)/3": "3/(ג+נ+ס)", "Candles": "נרות", "We_day_of_week": "We", "Show Countdown": "הראה ספירה לאחור", "MA_input": "MA", "Length2_input": "Length2", "Multiplier_input": "Multiplier", "Session Volume_study": "Session Volume", "Image URL": "כתובת אתר של התמונה", "SMI Ergodic Oscillator_input": "SMI Ergodic Oscillator", "Show Objects Tree": "הראה את תרשים האובייקטים", "Primary": "ראשי", "Price:": "מחיר:", "Bring to Front": "הבא לחזית", "Brush": "מברשת", "C_data_mode_connecting_letter": "C", "SMALen4_input": "SMALen4", "Target border color": "צבע גבול יעד", "Invalid Symbol": "סימול לא קיים", "Inside Pitchfork": "מזלג פנימי", "yay Color 1_input": "yay Color 1", "Hide Marks On Bars": "הסתר סימנים על הנרות", "Note": "הערה", "Kagi": "גרף קאגי", "WMA Length_input": "WMA Length", "Show Dividends on Chart": "הראה דיבידנדים על הגרף", "Borders": "גבולות", "loading...": "טוען...", "Closed_line_tool_position": "נסגר", "Rectangle": "מלבן", "Chande Momentum Oscillator_study": "מתנד מומנטום צ'אנד (CMO)", "Mar": "מרץ", "Jun": "יוני", "On Balance Volume_study": "מחזור מסחר מאוזן (OBV)", "Source_input": "Source", "%K_input": "%K", "Scales Text": "קנה מידת טקסט", "Toronto": "טורונטו", "Tokyo": "טוקיו", "Elliott Wave Minor": "גל מינורי אליוט", "Measure (Shift + Click on the chart)": "מידה (מקש Shift ולחיצה על הגרף)", "Override Min Tick": "דריסת טיק מינימלי", "RSI Length_input": "RSI Length", "Long length_input": "Long length", "Unmerge Down": "צמצם חלק תחתון", "Base Line Periods_input": "Base Line Periods", "Relative Strength Index_study": "מדד כוח יחסי (RSIׂׂׂ)", "Modified Schiff Pitchfork": "מזלג שיף מעודכן", "Top Labels": "תוויות עליונות", "siglen_input": "siglen", "Text Wrap": "גלישת טקסט", "Elliott Minor Retracement": "התנגדות מינורית אליוט", "Pitchfan": "מניפת מחירים", "Slash_hotkey": "Slash", "No symbols matched your criteria": "לא נמצאו התאמות לסימול", "Icon": "סמל", "lengthRSI_input": "lengthRSI", "Teeth Length_input": "Teeth Length", "Indicator_input": "Indicator", "Open Interval Dialog": "פתח אפשרויות אינטרוולים", "Shanghai": "שנחאי", "Athens": "אתונה", "Fib Speed Resistance Arcs": "קשתות התנגדות מהירות פיבונאצ'י", "middle": "אמצע", "Intermediate": "ביניים", "Eraser": "מחק", "Relative Vigor Index_study": "מדד עוצמה יחסי (RVI)", "Envelope_study": "מעטפה", "show MA_input": "show MA", "Horizontal Line": "קו אופקי", "O_in_legend": "פ", "Confirmation": "אישור", "Lines:": "קווים", "Buenos Aires": "בואנוס איירס", "useTrueRange_input": "useTrueRange", "Bangkok": "בנגקוק", "Profit Level. Ticks:": "רמת רווח. טיקים:", "Show Date/Time Range": "הראה מידע/טווח זמן", "Level {0}": "רמה {0}", "-DI_input": "-DI", "Price Range": "טווח מחירים", "deviation_input": "deviation", "Value_input": "Value", "Time Interval": "אינטרוול זמן", "Success text color": "צבע טקסט הצלחה", "Displacement_input": "Displacement", "Chaikin Money Flow_study": "זרימת כספים צ'איקין (CMF)", "Ease Of Movement_study": "Ease Of Movement", "Defaults": "ברירות מחדל", "Oversold_input": "Oversold", "short_input": "short", "depth_input": "depth", "RSI_input": "RSI", "Detrended Price Oscillator_input": "Detrended Price Oscillator", "Mo_day_of_week": "Mo", "center": "מרכז", "Vertical Line": "קו אנכי", "Bogota": "בוגוטה", "Show Splits on Chart": "הראה חילוקי מניה על הגרף", "ROC Length_input": "ROC Length", "X_input": "X", "Events & Alerts": "אירועים והתראות", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "Aroon Down", "Add To Watchlist": "הוסף לרשימת מעקב", "Price": "מחיר", "left": "שמאל", "Lock scale": "נעילת קנה מידה", "Limit_input": "Limit", "smalen1_input": "smalen1", "KST_input": "KST", "Extend Right End": "הרחב גבול ימני", "Fans": "מניפות", "Color based on previous close_input": "Color based on previous close", "Price_input": "Price", "Gann Fan": "מניפת גאן", "McGinley Dynamic_study": "McGinley Dynamic", "Relative Volatility Index_study": "מדד תנודתיות יחסית", "Source Code...": "קוד מקור...", "PVT_input": "PVT", "Circle Lines": "קווי מעגל", "Hull Moving Average_study": "Hull Moving Average", "Bring Forward": "הצג מקדימה", "Zero_input": "Zero", "Company Comparison": "השוואת חברות", "Stochastic Length_input": "Stochastic Length", "mult_input": "mult", "Success back color": "צבע הצלחה אחורי", "E_data_mode_end_of_day_letter": "E", "Trend-Based Fib Extension": "שלוחת פיבונאצ'י מבוססת מגמה", "Stochastic RSI_study": "מדד כוח יחסי סטוכסטיק (Stochastic RSI)", "Horizontal Ray": "קרן אופקית", "Script Editor...": "עורך סקריפט...", "Fullscreen mode": "מצב מסך מלא", "K_input": "K", "ROCLen3_input": "ROCLen3", "Text Color": "צבע טקסט", "Rename Chart Layout": "בחר שם חדש לתצורת הגרף", "Background color 2": "צבע רקע 2", "Moving Average Channel_study": "Moving Average Channel", "New Zealand": "ניו זילנד‏", "CHOP_input": "CHOP", "Apply Defaults": "החל ברירת מחדל", "Screen (No Scale)": "מסך (ללא הגדרות קנה מידה)", "Extended Alert Line": "קו התראה מורחב", "Signal_input": "Signal", "OK": "אישור", "Show": "הצג", "{0} bars": "נרות {0}", "Lower_input": "Lower", "Arc": "קשת", "Elder's Force Index_study": "Elder's Force Index", "Show Earnings on Chart": "הראה דו\"חות רווחים על הגרף", "Low": "נמוך", "Bollinger Bands %B_study": "רוצועות בויילינגר %", "Time Zone": "אזור זמן", "right": "ימין", "Schiff": "שיף", "Donchian Channels_study": "ערוצי דונצ'יאן", "Upper Band_input": "Upper Band", "start_input": "start", "No indicators matched your criteria.": "לא נמצאו התאמות לאינדקטור", "Short length_input": "Short length", "Kolkata": "כלכותה", "Triple EMA_study": "ממוצעים נעים אקפוננציאלית פי 3 (Triple EMA)", "Technical Analysis": "ניתוח טכני", "Show Text": "הצג טקסט", "Channel": "ערוץ", "Lagging Span 2 Periods_input": "Lagging Span 2 Periods", "Seoul": "סיאול", "bottom": "תחתית", "Teeth_input": "Teeth", "Moscow": "מוסקבה", "Save New Chart Layout": "שמור תצורת גרף חדשה", "Fib Channel": "ערוץ פיבונאצ'י", "Minutes_interval": "Minutes", "Columns": "עמודות", "Directional Movement_study": "Directional Movement", "roclen2_input": "roclen2", "Apply WPT Down Wave": "החל גל WPT כלפי מטה", "Not applicable": "בלתי קביל", "Bollinger Bands %B_input": "Bollinger Bands %B", "Shapes_input": "Shapes", "Lips Length_input": "Lips Length", "Use Upper Deviation_input": "Use Upper Deviation", "L_in_legend": "נ", "Inside": "בתוך", "shortlen_input": "shortlen", "Profit Background Color": "צבע רקע לרווח", "Bar's Style": "סגנון נרות", "Exponential_input": "Exponential", "Stay In Drawing Mode": "הישאר במצב ציור", "Comment": "הערה", "Connors RSI_study": "Connors RSI", "Bars": "נרות", "Show Labels": "הראה תוויות", "Flat Top/Bottom": "החלק חלק עליון/תחתון", "December": "דצמבר‏", "Left Labels": "תוויות שמאליות", "Insert Indicator...": "הוסף אינדיקטור...", "ADR_B_input": "ADR_B", "Change Symbol...": "שנה סימול...", "Ray": "קרן", "Feb": "פברואר", "Transparency": "שקיפות", "June": "יוני‏", "Cyclic Lines": "קווים מחזוריים", "length28_input": "length28", "ABCD Pattern": "דפוס ABCD", "Objects Tree": "תרשים האובייקטים", "Add": "הוסף", "Least Squares Moving Average_study": "ריבועי ממוצעים נעים פשוטים (LSMA)", "Chart Layout Name": "שם תצורת גרף", "Hull MA_input": "Hull MA", "Lock Scale": "נעילת קנה מידה", "distance: {0}": "מרחק: {0}", "Extended": "מורחב", "log": "דוח", "NO": "לא", "Top Margin": "שול עליון", "Up fractals_input": "Up fractals", "Insert Drawing Tool": "הכנס כלי ציור", "Show Price Range": "הראה טווח מחירים", "Correlation_input": "Correlation", "Session Breaks": "הפסקות פעילות", "Add {0} To Watchlist": "הוסף {0} לרשימת המעקב", "Anchored Note": "הערה נעוצה", "lipsLength_input": "lipsLength", "UpDown Length_input": "UpDown Length", "November": "נובמבר‏", "ASI_study": "ASI", "Background Color": "צבע רקע", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "slowLength", "Click to set a point": "לחץ על מנת לקבוע נקודה", "January": "ינואר‏", "n/a": "לא זמין", "Failure text color": "צבע טקסט כשלון", "Sa_day_of_week": "Sa", "Change area background": "שנה צבע אזור", "Error": "שגיאה", "RVI_input": "RVI", "Centered_input": "Centered", "Original": "מקורי", "True Strength Indicator_study": "מדד כוח אמיתי ׁ(TSI)", "Simple ma(oscillator)_input": "Simple ma(oscillator)", "Compare": "השוואה", "Fisher Transform_study": "Fisher Transform", "Projection": "הקרנה", "Length EMA_input": "Length EMA", "Enter a new chart layout name": "הכנס שם חדש לתצורת הגרף", "Signal Length_input": "Signal Length", "FAILURE": "כישלון", "MA with EMA Cross_study": "MA with EMA Cross", "Close": "סגירה", "ParabolicSAR_input": "ParabolicSAR", "Log Scale_scale_menu": "תפריט מרחב", "MACD_input": "MACD", "{0} P&L: {1}": "{0} רווח/הפסד: {1}", "Arrow Mark Left": "חץ שמאלה", "Slow length_input": "Slow length", "(O + H + L + C)/4": "4/(פ+ג+נ+ס)", "Open_line_tool_position": "נפתח", "Lagging Span_input": "Lagging Span", "Cross": "צלב", "Mirrored": "הפוך במאונך", "Vancouver": "ונקובר", "Label Background": "רקע תווית", "ADX smoothing_input": "ADX smoothing", "Normal": "רגיל", "May": "מאי", "Detrended Price Oscillator_study": "Detrended Price Oscillator", "Color 5_input": "Color 5", "Risk/Reward Ratio: {0}": "יחס סיכוי/סיכון: {0}", "Scale Price Chart Only": "מרחב גרף מחירים בלבד", "Unmerge Up": "צמצם חלק עליון", "auto_scale": "אוטומטי", "Short period_input": "Short period", "Background": "רקע", "VWMA_input": "VWMA", "Lower Deviation_input": "Lower Deviation", "ATR_input": "ATR", "February": "פברואר‏", "Reverse": "היפוך", "Add to favorites": "הוסף למועדפים", "Median": "חציון", "ADX_input": "ADX", "Remove": "הסר", "len_input": "len", "Arrow Mark Up": "חץ למעלה", "April": "‏אפריל", "Crosses_input": "Crosses", "Middle_input": "Middle", "LowerLimit_input": "LowerLimit", "Know Sure Thing_study": "דע בביטחון (Know sure thing)", "Copy Chart Layout": "העתק תצורת גרף", "Compare...": "השוואה...", "1. Slide your finger to select location for next anchor
2. Tap anywhere to place the next anchor": "החלק את האצבע כדי לבחור מקום לעוגן הראשון.
2\\. לחץ בכל מקום על מנת לשים עוגן", "Compare or Add Symbol": "השווה או הוסף סימול", "Color": "צבע", "Aroon Up_input": "Aroon Up", "Singapore": "סינגפור", "Scales Lines": "קווי קנה מידה", "Show Distance": "הראה מרחק", "Fixed Range_study": "Fixed Range", "Williams Fractal_study": "Williams Fractal", "Merge Up": "הרחב מעלה", "Right Margin": "שול ימני", "Ellipse": "אליפסה", "Warsaw": "ורשה"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/hu_HU.json b/static/Kline/charting_library/static/localization/translations/hu_HU.json new file mode 100644 index 0000000..18a93d2 --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/hu_HU.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "ticks", "Months_interval": "Hónapok", "Realtime": "Valós Idejű", "Callout": "Kiemelő", "Clone": "Klón", "roclen1_input": "roclen1", "Unmerge Down": "Szétválasztás Le", "Percents": "Százalékok", "Search Note": "Megjegyzés Keresése", "Minor": "Kis", "Do you really want to delete Chart Layout '{0}' ?": "Biztos, hogy törölni akarod ezt a chart elrendezést: {0}?", "Quotes are delayed by {0} min and updated every 30 seconds": "A jegyzések {0} perccel vannak késleltetve és minden 30. percben frissülnek", "Magnet Mode": "Magnet Mód", "Grand Supercycle": "Nagy Szuperciklus", "OSC_input": "OSC", "Hide alert label line": "Riasztási vonal elrejtése", "Volume_study": "Volumen", "Lips_input": "Lips", "Show real prices on price scale (instead of Heikin-Ashi price)": "Valódi árak mutatása az ártáblázaton (a Heikin-Ashi árak helyett)", "Histogram": "Hisztogram", "Base Line_input": "Base Line", "Step": "Lépés", "Insert Study Template": "Tanulmánysablon Beillesztése", "Fib Time Zone": "Fib Időzóna", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "Bollinger Szalagok", "Show/Hide": "Mutatás/Elrejtés", "Upper_input": "Upper", "exponential_input": "exponential", "Move Up": "Mozgatás Fel", "Symbol Info": "Szimbólum Infó", "This indicator cannot be applied to another indicator": "Ezt az indikátort nem lehet alkalmazni egy másik indikátorra", "Scales Properties...": "Méretezési Tulajdonságok...", "Count_input": "Count", "Full Circles": "Teljes Körök", "Ashkhabad": "Asgábád", "OnBalanceVolume_input": "OnBalanceVolume", "Cross_chart_type": "Kereszt", "H_in_legend": "Magas", "a day": "egy nap", "Pitchfork": "Villa", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Akkumuláció/Disztribúció", "Rate Of Change_study": "Változás Üteme", "in_dates": "-ban/ben", "Color 7_input": "Color 7", "Chop Zone_study": "Oldalazó Zóna", "Bar #": "Bár #", "Scales Properties": "Méretezési Tulajdonságok", "Trend-Based Fib Time": "Trendalapú Fib Idő", "Remove All Indicators": "Minden Indikátor Eltávolítása", "Oscillator_input": "Oscillator", "Last Modified": "Utoljára Módosítva", "yay Color 0_input": "yay Color 0", "Labels": "Címkék", "Chande Kroll Stop_study": "Chande Kroll Stop", "Hours_interval": "Órák", "Scale Right": "Skála Jobbra", "Money Flow_study": "Pénzáramlás", "siglen_input": "siglen", "Indicator Labels": "Indikátor Címkék", "__specialSymbolOpen__Tomorrow at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Holnap__specialSymbolClose__ __dayTime__", "Toggle Percentage": "Váltás Százalék", "Remove All Drawing Tools": "Összes Rajzeszköz Eltávolítása", "Remove all line tools for ": "Összes vonal eszköz eltávolítása innen: ", "Linear Regression Curve_study": "Linear Regression Curve", "Symbol_input": "Symbol", "Currency": "Valuta", "increment_input": "increment", "Compare or Add Symbol...": "Összehasonlítás vagy Szimbólum Hozzáadása...", "__specialSymbolOpen__Last__specialSymbolClose__ __dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Utolsó__specialSymbolClose__ __dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__", "Save Chart Layout": "Chart Elrendezés Mentése", "Allow up to": "Engedélyezés maximum eddig:", "Label": "Címke", "second": "seconds", "Change Hours To": "Órák Módosítása", "smoothD_input": "smoothD", "Falling_input": "Falling", "X_input": "X", "Risk/Reward short": "Kockázat/Nyereség short", "Donchian Channels_study": "Donchian Csatornák", "Entry price:": "Belépési ár:", "Circles": "Körök", "Mirrored": "Tükrözött", "Ichimoku Cloud_study": "Ichimoku Felhő", "Signal smoothing_input": "Signal smoothing", "Toggle Log Scale": "Váltás Log Skála", "Apply Elliot Wave Major": "Fő Elliot Hullám Alkalmazása", "Grid": "Rács", "Apply Elliot Wave Minor": "Kis Elliot Hullám Alkalmazása", "Slippage": "Csúszás", "Smoothing_input": "Smoothing", "Color 3_input": "Color 3", "Jaw Length_input": "Jaw Length", "Almaty": "Almati", "Inside": "Belső", "Delete all drawing for this symbol": "Összes rajz törlése ennél a szimbólumknál", "Fundamentals": "Alapok", "Keltner Channels_study": "Keltner Csatornák", "Long Position": "Long Pozíció", "Bands style_input": "Bands style", "Undo {0}": "{0} Visszavonása", "With Markers": "Jelölésekkel", "Momentum_study": "Momentum", "MF_input": "MF", "Gann Box": "Gann Doboz", "Switch to the next chart": "Váltás a következő chartra", "charts by TradingView": "TradingView chartok", "Fast length_input": "Fast length", "Apply Elliot Wave": "Elliot Hullám Alkalmazása", "Disjoint Angle": "Diszjunkt Szög", "Supermillennium": "Szuperévezred", "W_interval_short": "W", "Show Only Future Events": "Csak a Jövőbeli Események Mutatása", "Log Scale": "Log Skála", "Line - High": "Vonal - High", "Zurich": "Zürich", "Equality Line_input": "Equality Line", "Short_input": "Short", "Fib Wedge": "Fib Ék", "Line": "Vonal", "Session": "Munkamenet", "Down fractals_input": "Down fractals", "smalen2_input": "smalen2", "isCentered_input": "isCentered", "Border": "Keret", "Klinger Oscillator_study": "Klinger Oszcillátor", "Absolute": "Teljes", "Tue": "Ke", "Style": "Stílus", "Show Left Scale": "Bal Oldali Skála Mutatása", "SMI Ergodic Indicator/Oscillator_study": "SMI Ergodic Indicator/Oscillator", "Istanbul": "Isztambul", "Last available bar": "Utolsó elérhető oszlop", "Manage Drawings": "Rajzok Kezelése", "Analyze Trade Setup": "Kereskedési Felállás Elemzése", "No drawings yet": "Nincs még rajz", "SMI_input": "SMI", "Chande MO_input": "Chande MO", "jawLength_input": "jawLength", "TRIX_study": "TRIX", "Show Bars Range": "Bártartomány Mutatás", "RVGI_input": "RVGI", "Last edited ": "Utoljára szerkesztett ", "signalLength_input": "signalLength", "%s ago_time_range": "ennyivel korábban: %s", "Reset Settings": "Alapbeállítások Visszaállítása", "d_dates": "n", "Point & Figure": "Pont & Ábra", "August": "Augusztus", "Recalculate After Order filled": "Újraszámolás a megbízás kitöltése után", "Source_compare": "Forrás", "Q_input": "Q", "Correlation Coefficient_study": "Korrelációs Koefficiens", "Delayed": "Késleltetett", "Bottom Labels": "Alsó Címkék", "Text color": "Szöveg szín", "Levels": "Szintek", "Short Length_input": "Short Length", "teethLength_input": "teethLength", "Visible Range_study": "Visible Range", "Text Alignment:": "Szöveg Igazítás:", "Open {{symbol}} Text Note": "{{symbol}} Szöveges Megjegyzés Megnyitása", "October": "Október", "Lock All Drawing Tools": "Rajzeszközök Zárolása", "Long_input": "Long", "Right End": "Jobb Vég", "Show Symbol Last Value": "Utolsó Érték Szimbólum Mutatása", "Do you really want to delete Study Template '{0}' ?": "Biztos, hogy törölni akarod ezt a tanulmánysablont: {0}?", "Favorite Drawings Toolbar": "Kedvenc Rajzok Eszköztár", "Properties...": "Tulajdonságok...", "Reset Scale": "Méret Visszaállítása", "MA Cross_study": "MA Kereszt", "Trend Angle": "Trendszög", "Snapshot": "Pillanatkép", "Crosshair": "Szálkereszt", "Signal line period_input": "Signal line period", "Timezone/Sessions Properties...": "Időzóna/Munkamenet Tulajdonságok...", "Line Break": "Vonaltörés", "Quantity": "Mennyiség", "Price Volume Trend_study": "Árvolumen Trend", "Auto Scale": "Automata Méretezés", "hour": "hours", "Delete chart layout": "Chart elrendezés törlése", "Text": "Szöveg", "F_data_mode_forbidden_letter": "F", "Risk/Reward long": "Kockázat/Nyereség long", "Apr": "Ápr", "Long RoC Length_input": "Long RoC Length", "Length3_input": "Length3", "+DI_input": "+DI", "Length_input": "Length", "Use one color": "Egyetlen szín használata", "Sig_input": "Sig", "No Overlapping Labels_scale_menu": "No Overlapping Labels", "Exit Full Screen (ESC)": "Kilépés a Teljes Képernyőből (ESC)", "MACD_study": "MACD", "Show Economic Events on Chart": "Gazdasági Események Mutatása a Charton", "Moving Average_study": "Mozgóátlag", "Zoom In": "Nagyítás", "Failure back color": "Veszteség vissza szín", "Below Bar": "Alsó oszlop", "Time Scale": "Időskála", "

Only D, W, M intervals are supported for this symbol/exchange. You will be automatically switched to a D interval. Intraday intervals are not available because of exchange policies.

": "

Csak D, W, M intervallumok érhetők el ehhez a szimbólumhoz/tőzsdéhez. Automatikusan a Napi D intervallum kerül beállításra. A napon belüli intervallumok a tőzsdei szabályozás miatt nem érhetők el.

", "Extend Left": "Bal Hosszabítás", "Date Range": "Időintervallum", "Min Move": "Min Változás", "Price format is invalid.": "Érvénytelen árformátum.", "Show Price": "Ár Mutatása", "Level_input": "Level", "Commodity Channel Index_study": "Árucsatorna Index", "Elder's Force Index_input": "Elder's Force Index", "Gann Square": "Gann Négyszög", "Format": "Formátum", "Color bars based on previous close": "Bárszínek az előző záró alapján", "Change band background": "Sáv háttér megváltoztatása", "Marketplace Add-ons": "Marketplace Bővítmények", "Zoom Out": "Kicsinyítés", "Anchored Text": "Horgony Szöveg", "Long length_input": "Long length", "Edit {0} Alert...": "{0} Riasztás Szerkesztése...", "Up Wave 5": "Hullám 5 Fel", "Text:": "Szöveg:", "Aroon_study": "Aroon", "Previous": "Előző", "Industry": "Iparág", "Lead 1_input": "Lead 1", "Short Position": "Short Pozíció", "SMALen1_input": "SMALen1", "P_input": "P", "Apply Default": "Alapértelmezett Beállítás", "SMALen3_input": "SMALen3", "Average Directional Index_study": "Átlagos Irányított Index", "Fr_day_of_week": "P", "Invite-only script. Contact the author for more information.": "Meghívásos szkript. A további információkért vedd fel a kapcsolatot a szerzővel.", "Curve": "Görbe", "a year": "egy év", "Target Color:": "Cél Szín:", "Bars Pattern": "Bár Minta", "D_input": "D", "Font Size": "Betűméret", "Create Vertical Line": "Függőleges Vonal Létrehozása", "p_input": "p", "Rotated Rectangle": "Elforgatott Téglalap", "Chart layout name": "Chart elrendezés neve", "Fib Circles": "Fib Körök", "Apply Manual Decision Point": "Manuális Döntési Pont Alkalmazása", "Dot": "Pont", "Target back color": "Cél vissza szín", "All": "Összes", "orders_up to ... orders": "orders", "Dot_hotkey": "Dot", "Lead 2_input": "Lead 2", "Save image": "Kép mentés", "Move Down": "Mozgatás Le", "Unlock": "Feloldás", "Navigation Buttons": "Navigációs Gombok", "Miniscule": "Apró", "Apply": "Alkalmaz", "Down Wave 3": "Hullám 3 Le", "Plots Background_study": "Plots Background", "Sine Line": "Szinuszvonal", "Price Channel_study": "Price Channel", "%d day": "%d days", "Hide": "Elrejtés", "Toggle Maximize Chart": "Maximális Chat Kiterjesztése", "Target text color": "Cél szöveg szín", "Scale Left": "Skála Balra", "Elliott Wave Subminuette": "Elliott Hullám Subminuette", "Color based on previous close_input": "Color based on previous close", "Down Wave C": "Hullám C Le", "Countdown": "Visszaszámlálás", "UO_input": "UO", "Pyramiding": "Pyramid használata", "Go to Date...": "Ugrás Dátumhoz:", "Sao Paulo": "São Paulo", "R_data_mode_realtime_letter": "R", "Extend Lines": "Vonalak Hosszabítása", "Conversion Line_input": "Conversion Line", "March": "Március", "Su_day_of_week": "V", "Exchange": "Tőzsde", "Arcs": "Ívek", "Regression Trend": "Regresszió Trend", "Fib Spiral": "Fib Spirál", "Double EMA_study": "Dupla EMA", "minute": "minutes", "All Indicators And Drawing Tools": "Összes Indikátor és Rajzeszköz", "Indicator Last Value": "Indikátor Utolsó Értéke", "Sync drawings to all charts": "Rajzok szinkronizálása minden charttal", "Change Average HL value": "Átlag HL-érték módosítása", "Stop Color:": "Szín Leállít:", "Stay in Drawing Mode": "Rajzmódban Marad", "Bottom Margin": "Alsó Margó", "Dubai": "Dubaj", "Save Chart Layout saves not just some particular chart, it saves all charts for all symbols and intervals which you are modifying while working with this Layout": "A Chart Elrendezés Mentése nem csak bizonyos chartokat ment el, hanem az összes olyan szimbólum és intervallum chartjait, amelyekkel az adott Elrendezésben éppen dolgozol.", "Average True Range_study": "Átlagos Valós Tartomány", "Max value_input": "Max value", "MA Length_input": "MA Length", "Invite-Only Scripts": "Meghívásos Szkriptek", "in %s_time_range": "%s múlva", "UpperLimit_input": "UpperLimit", "sym_input": "sym", "DI Length_input": "DI Length", "Scale": "Skála", "Periods_input": "Periods", "Arrow": "Nyíl", "Square": "Négyzet", "Basis_input": "Basis", "Arrow Mark Down": "Nyíl Lefelé", "lengthStoch_input": "lengthStoch", "Taipei": "Tajpej", "Objects Tree": "Tárgyfa", "Remove from favorites": "Eltávolít kedvencek közül", "Copy": "Másolás", "Scale Series Only": "Csak Skálasorozatok", "Source text color": "Forrás szöveg szín", "Simple": "Egyszerű", "Report a data issue": "Adatprobléma jelentése", "Arnaud Legoux Moving Average_study": "Arnaud Legoux Mozgóátlag", "Smoothed Moving Average_study": "Simított Mozgóátlag", "Lower Band_input": "Lower Band", "Verify Price for Limit Orders": "Limitáras Megbízások Árának Ellenőrzése", "VI +_input": "VI +", "Line Width": "Vonal Szélessége", "Contracts": "Szerződések", "Always Show Stats": "Mindig Mutasd Statisztikát", "Down Wave 4": "Hullám 4 Le", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "Simple ma(signal line)", "Change Interval...": "Időköz Változtatás...", "Public Library": "Nyilvános Könyvtár", " Do you really want to delete Drawing Template '{0}' ?": " Biztos, hogy törölni akarod ezt a rajzsablont: {0}?", "Sat": "Szom", "CRSI_study": "CRSI", "Close message": "Üzenet bezárása", "Jul": "Júl", "Base currency": "Alapdeviza", "Show Drawings Toolbar": "Rajzok Eszköztár Mutatása", "Chaikin Oscillator_study": "Chaikin Oszcillátor", "Balloon": "Ballon", "Market Open": "Piacnyitás", "Color Theme": "Szín Téma", "Awesome Oscillator_study": "Awesome Oszcillátor", "Bollinger Bands Width_input": "Bollinger Bands Width", "long_input": "long", "Error occured while publishing": "Hiba történt közzététel közben", "Fisher_input": "Fisher", "Color 1_input": "Color 1", "Moving Average Weighted_study": "Moving Average Weighted", "Save": "Mentés", "Type": "Típus", "Wick": "Kanóc", "Accumulative Swing Index_study": "Accumulative Swing Index", "Load Chart Layout": "Chart Elrendezés Betöltése", "Show Values": "Értékek Mutatása", "Fib Speed Resistance Fan": "Fib Speed Ellenállás Fan", "Bollinger Bands Width_study": "Bollinger Szalag Szélesség", "This chart layout has more than 1000 drawings, which is a lot! This may negatively affect performance, storage and publishing. We recommend to remove some drawings to avoid potential performance issues.": "Ehhez a chart elrendezéshez több, mint 1000 rajz tartozik, ami nagyon sok. Ez negatívan befolyásolhatja a teljesítményt, a tárolást és a publikálást. Azt javasoljuk, hogy a lehetséges teljesítményproblémák kiküszöbölése érdekében távolíts el néhány rajzot.", "Left End": "Bal Vég", "%d year": "%d years", "Always Visible": "Mindig Látható", "S_data_mode_snapshot_letter": "S", "Elliott Wave Circle": "Elliott Hullám Kör", "Earnings breaks": "Nyereségtörés", "Change Minutes From": "Percek Módosítása", "Do not ask again": "Ne kérdezd meg többször", "Displacement_input": "Displacement", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "Upper Deviation", "(H + L)/2": "(M + A)/2", "XABCD Pattern": "XABCD Minta", "Schiff Pitchfork": "Schiff Villa", "Copied to clipboard": "Vágólapra másolva", "Flipped": "Flippelt", "DEMA_input": "DEMA", "Move_input": "Move", "NV_input": "NV", "Choppiness Index_study": "Szaggatottság Index", "Study Template '{0}' already exists. Do you really want to replace it?": "{0} névvel már létezik tanulmánysablon. Biztos, hogy cserélni akarod?", "Merge Down": "Összeolvasztás Le", " per contract": " ügyletenként", "Overlay the main chart": "Fő chart borítása", "Delete": "Törlés", "Length MA_input": "Length MA", "percent_input": "percent", "September": "Szeptember", "{0} copy": "{0} mentés", "Avg HL in minticks": "Átl HL a minticks-ben", "Accumulation/Distribution_input": "Accumulation/Distribution", "Sync": "Szinkronizálás", "C_in_legend": "Z", "Weeks_interval": "Hetek", "smoothK_input": "smoothK", "Percentage_scale_menu": "Százalék", "Change Extended Hours": "Meghosszabbított Nyitva Tartás Módosítása", "MOM_input": "MOM", "h_interval_short": "h", "Change Interval": "Változás Időköz", "Change area background": "Terület háttér megváltoztatása", "Modified Schiff": "Módosított Schiff", "Custom color...": "Tetszőleges szín...", "Send Backward": "Hátrébb Küldés", "Mexico City": "Mexikóváros", "TRIX_input": "TRIX", "Show Price Range": "Ártartomány Mutatás", "Elliott Major Retracement": "Elliott Fő Retracement", "Notification": "Értesítés", "Fri": "Pén", "just now": "épp most", "Forecast": "Előrejelzés", "Fraction part is invalid.": "Érvénytelen törtrész.", "Connecting": "Csatlakozás", "Ghost Feed": "Ghost Hírfolyam", "Signal_input": "Signal", "Histogram_input": "Histogram", "The Extended Trading Hours feature is available only for intraday charts": "A Kibővített Kereskedési Óra funkció csak napon belüli chartokhoz érhető el", "StdDev_input": "StdDev", "EMA Cross_study": "EMA Cross", "Conversion Line Periods_input": "Conversion Line Periods", "Oversold_input": "Oversold", "My Scripts": "Szkriptjeim", "Monday": "Hétfő", "Add Symbol_compare_or_add_symbol_dialog": "Add Symbol", "Williams %R_study": "Williams %R", "Symbol": "Szimbólum", "a month": "egy hónap", "Precision": "Pontosság", "depth_input": "depth", "Go to": "Ugrás ide:", "Please enter chart layout name": "Kérjük, add meg a chart elrendezés nevét", "Mar": "Már", "VWAP_study": "VWAP", "Offset": "Eltolás", "Date": "Dátum", "Format...": "Formázás...", "Toggle Auto Scale": "Váltás Automata Méretezés", "Toggle Maximize Pane": "Maximalizáló Tábla Kezelése", "Search": "Keresés", "Zig Zag_study": "Cikk Cakk", "Actual": "Aktuális", "SUCCESS": "NYERESÉG", "Long period_input": "Long period", "length_input": "length", "roclen4_input": "roclen4", "Price Line": "Árvonal", "Area With Breaks": "Terület Törésekkel", "Median_input": "Median", "Stop Level. Ticks:": "Stop Szint. Tick:", "Window Size_input": "Window Size", "Circle Lines": "Körvonalak", "Visual Order": "Vizuális Elrendezés", "__specialSymbolOpen__Yesterday at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Tegnap__specialSymbolClose__ __dayTime__", "Stop Background Color": "Háttérszín Leállítás", "1. Slide your finger to select location for first anchor
2. Tap anywhere to place the first anchor": "1. Húzd el az újjad az első horgony kiválasztásához
2. Érintsd meg akárhol az első horgony elhelyezéséhez", "Sector": "Szektor", "powered by TradingView": "támogatta a TradingView", "Stochastic_study": "Sztochasztikus", "Sep": "Szep", "TEMA_input": "TEMA", "Apply WPT Up Wave": "WPT Fel Hullám Alkalmazása", "Min Move 2": "Min Változás 2", "Extend Left End": "Bal Vég Hosszabítás", "Advance/Decline_study": "Advance/Decline", "Any Number": "Bármely Szám", "Flag Mark": "Zászló Jel", "Drawings": "Rajzok", "Cancel": "Törlés", "Compare or Add Symbol": "Összehasonlítás vagy Szimbólum Hozzáadása", "Redo": "Újra", "Hide Drawings Toolbar": "Rajz Eszköztár Elrejtése", "Ultimate Oscillator_study": "Végső Oszcillátor", "Vert Grid Lines": "Függőleges Rácsvonalak", "Growing_input": "Growing", "Angle": "Szög", "Plot_input": "Plot", "Color 8_input": "Color 8", "Indicators, Fundamentals, Economy and Add-ons": "Indikátorok, Alapok, Gazdaság és Bővítmények", "h_dates": "ó", "ROC Length_input": "ROC Length", "roclen3_input": "roclen3", "Overbought_input": "Overbought", "DPO_input": "DPO", "Change Minutes To": "Percek Módosítása", "No study templates saved": "Nincs tanulmány sablon elmentve", "Trend Line": "Trendvonal", "TimeZone": "IdőZóna", "Your chart is being saved, please wait a moment before you leave this page.": "Folyamatban van a chartod mentése, ezért kérjük, még ne hagyd el az oldalt.", "Percentage": "Százalék", "Tu_day_of_week": "K", "RSI Length_input": "RSI Length", "Triangle": "Háromszög", "Line With Breaks": "Vonal Törésekkel", "Period_input": "Period", "Watermark": "Vízjel", "Trigger_input": "Trigger", "SigLen_input": "SigLen", "Extend Right": "Jobb Hosszabbítás", "Color 2_input": "Color 2", "Show Prices": "Árak Mutatása", "{0} chart by TradingView": "{0} TradingView chart", "Arc": "Ív", "Edit Order": "Megbízás Szerkesztése", "January": "Január", "Arrow Mark Right": "Nyíl Jobbra", "Extend Alert Line": "Riasztási Vonal Meghosszabbítása", "Background color 1": "Háttérszín 1", "RSI Source_input": "RSI Source", "Close Position": "Záró Pozíció", "Stop syncing drawing": "Rajzolás szinkronizálásának leállítása", "Visible on Mouse Over": "Az Egér Föléhúzásakor Látható", "MA/EMA Cross_study": "MA/EMA Cross", "Thu": "Cs", "Vortex Indicator_study": "Vortex Indikátor", "Williams Alligator_study": "Williams Alligátor", "ROCLen1_input": "ROCLen1", "M_interval_short": "M", "Chaikin Oscillator_input": "Chaikin Oscillator", "Price Levels": "Árszintek", "Show Splits": "Felosztások Mutatása", "Zero Line_input": "Zero Line", "__specialSymbolOpen__Today at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Ma__specialSymbolClose__ __dayTime__", "Increment_input": "Increment", "Days_interval": "Napok", "Show Right Scale": "Jobb Oldali Skála Mutatása", "Show Alert Labels": "Riasztás Címke Mutatása", "Historical Volatility_study": "Histórikus Volatilitás", "Lock": "Zárás", "length14_input": "length14", "High": "Magas", "Date and Price Range": "Dátum és Árfolyamtartomány", "Polyline": "Sokszögvonal", "Reconnect": "Újbóli csatlakozás", "Lock/Unlock": "Zárás/Feloldás", "Saturday": "Szombat", "Symbol Last Value": "Szimbólum Utolsó Értéke", "Above Bar": "Felső oszlop", "Studies": "Tanulmányok", "Color 0_input": "Color 0", "Add Symbol": "Szimbólum Hozzáadása", "maximum_input": "maximum", "Wed": "Szer", "Paris": "Párizs", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "VWMA_study": "VWMA", "fastLength_input": "fastLength", "Width": "Szélesség", "Time Levels": "Időszintek:", "Template": "Sablon", "Use Lower Deviation_input": "Use Lower Deviation", "Parallel Channel": "Párhuzamos Csatorna", "Time Cycles": "Ciklusidők", "Second fraction part is invalid.": "A második törtrész érvénytelen.", "Divisor_input": "Divisor", "Down Wave 1 or A": "Hullám 1 vagy A Le", "ROC_input": "ROC", "Ray": "Sugár", "Extend": "Hosszabítás", "length7_input": "length7", "Bottom": "Alsó", "Undo": "Visszavonás", "Original": "Eredeti", "Mon": "Hét", "Right Labels": "Jobb Címkék", "Long Length_input": "Long Length", "True Strength Indicator_study": "True Strength Indikátor", "%R_input": "%R", "There are no saved charts": "Nincsenek elmentett chartok", "Chart Properties": "Chart Tulajdonságok", "bars_margin": "bárok", "Show Indicator Last Value": "Utolsó Érték Indikátor Mutatása", "Initial capital": "Indulótőke", "Show Angle": "Szög Mutatás", "Mass Index_study": "Tömeg Index", "More features on tradingview.com": "Még több funkció a tradingview.com-on", "Objects Tree...": "Tárgyfa...", "Remove Drawing Tools & Indicators": "Rajzeszközök és Indikátorok Eltávolítása", "Length1_input": "Length1", "Always Invisible": "Mindig Láthatatlan", "Circle": "Kör", "Days": "Napok", "x_input": "x", "Save As...": "Mentés Másként...", "Elliott Double Combo Wave (WXY)": "Elliott Dupla Kombinációs Hullám (WXY)", "Parabolic SAR_study": "Parabolikus SAR", "Any Symbol": "Bármely Szimbólum", "Variance": "Eltérés", "Stats Text Color": "Statisztika Szöveg Szín", "Minutes": "Percek", "Short RoC Length_input": "Short RoC Length", "Projection": "Vetület", "Jaw_input": "Jaw", "Right": "Jobb", "Help": "Súgó", "Coppock Curve_study": "Coppock Görbe", "Reset Chart": "Chart Visszaállítása", "Marker Color": "Jelölő Színe", "Sunday": "Vasárnap", "Left Axis": "Bal Tengely", "Open": "Nyitás", "YES": "IGEN", "longlen_input": "longlen", "Moving Average Exponential_study": "Mozgóátlag Exponenciális", "Source border color": "Forrás keret szín", "Redo {0}": "{0} Újra", "Cypher Pattern": "Rejtjel Minta", "s_dates": "s", "Area": "Terület", "Triangle Pattern": "Háromszög Minta", "Balance of Power_study": "Erőegyensúly", "EOM_input": "EOM", "Shapes_input": "Shapes", "Apply Manual Risk/Reward": "Manuális Kockázat/Nyereség Alkalmazása", "Indicators": "Indikátorok", "q_input": "q", "You are notified": "Értesítést kaptál", "Font Icons": "Betű Ikonok", "%D_input": "%D", "Border Color": "Keret Színe", "Offset_input": "Offset", "Risk": "Kockázat", "Price Scale": "Ártáblázat", "HV_input": "HV", "Seconds": "Másodpercek", "Settings": "Beállítások", "Start_input": "Kezdés", "Elliott Impulse Wave (12345)": "Elliott Impulzushullám (12345)", "Hours": "Órák", "Send to Back": "Visszaküldés", "Color 4_input": "Color 4", "Angles": "Szögek", "Prices": "Árak", "Hollow Candles": "Áttetsző Gyertyák", "July": "Július", "Create Horizontal Line": "Vízszintes Vonal Létrehozása", "Minute": "Perc", "Cycle": "Ciklus", "ADX Smoothing_input": "ADX Smoothing", "One color for all lines": "Egyetlen szín minden vonalhoz", "m_dates": "hó", "(H + L + C)/3": "(M + A + Z)/3", "Candles": "Gyertyák", "We_day_of_week": "Sze", "Width (% of the Box)": "Szélesség (a Box %-a)", "%d minute": "%d minutes", "Go to...": "Ugrás ide...", "Pip Size": "Pip Méret", "Wednesday": "Szerda", "This drawing is used in alert. If you remove the drawing, the alert will be also removed. Do you want to remove the drawing anyway?": "Erre a rajzra riasztás van beállítva. Ha eltávolítod a rajzolt, a riasztás is törlődni fog. Biztos, hogy eltávolítod a rajzot?", "Show Countdown": "Visszaszámláló Mutatása", "Show alert label line": "Riasztási vonal mutatása", "Down Wave 2 or B": "Hullám 2 vagy B Le", "MA_input": "MA", "Length2_input": "Length2", "not authorized": "nem engedélyezett", "Session Volume_study": "Session Volume", "Image URL": "Kép URL", "Submicro": "Szubmikro", "SMI Ergodic Oscillator_input": "SMI Ergodic Oscillator", "Show Objects Tree": "Tárgyfa Mutatása", "Primary": "Elsődleges", "Price:": "Ár:", "Bring to Front": "Előrehozás", "Brush": "Ecset", "Not Now": "Most Nem", "Yes": "Igen", "C_data_mode_connecting_letter": "C", "SMALen4_input": "SMALen4", "Apply Default Drawing Template": "Alapértelmezett Rajzsablon Alkalmazása", "Save As Default": "Mentés Alapértelmezettként", "Target border color": "Cél keret szín", "Invalid Symbol": "Érvénytelen Szimbólum", "Inside Pitchfork": "Belső Villa", "yay Color 1_input": "yay Color 1", "Quandl is a huge financial database that we have connected to TradingView. Most of its data is EOD and is not updated in real-time, however the information may be extremely useful for fundamental analysis.": "A Quandl egy hatalmaz pénzügyi adatbázis, amelyet összekapcsoltunk a TradingView-val. A leginkább nap végi adatokkal dolgoznak és nincs valós idejű frissítés, az ott található információs mégis hasznosak lehetnek alapvető elemzésekhez.", "Hide Marks On Bars": "Jelölések Elrejtése a Bárokon", "Cancel Order": "Megbízás Törlése", "Hide All Drawing Tools": "Minden Rajzeszköz Elrejtése", "WMA Length_input": "WMA Length", "Show Dividends on Chart": "Osztalékok Mutatása Charton", "Show Executions": "Teljesítések Mutatása", "Borders": "Határok", "Remove Indicators": "Indikátorok Eltávolítása", "loading...": "töltés...", "Closed_line_tool_position": "Záró", "Rectangle": "Téglalap", "Change Resolution": "Felbontás Módosítása", "Indicator Arguments": "Indikátor Argumentumok", "Symbol Description": "Szimbólum Leírás", "Chande Momentum Oscillator_study": "Chande Momentum Oszcillátor", "Degree": "Fokozat", " per order": " megbízásonként", "Line - HL/2": "Vonal - HL/2", "Supercycle": "Szuperciklus", "Jun": "Jún", "Least Squares Moving Average_study": "Least Squares Mozgóátlag", "Change Variance value": "Szórásérték Módosítása", "powered by ": "támogatta: ", "Source_input": "Source", "Change Seconds To": "Másodpercek Módosítása Erre:", "%K_input": "%K", "Scales Text": "Skálaszöveg", "Please enter template name": "Kérjük, írd be a sablon nevét", "Symbol Name": "Szimbólum Neve", "Tokyo": "Tokió", "Events Breaks": "Esemény Szünetek", "Study Templates": "Tanulmány Sablonok", "Months": "Hónapok", "Symbol Info...": "Szimbólum Infó...", "Elliott Wave Minor": "Elliott Hullám Kicsi", "Cross": "Kereszt", "Measure (Shift + Click on the chart)": "Mérés (Shift + Click a charton)", "Override Min Tick": "Min. Tick Felülírása", "Show Positions": "Pozíciók Mutatása", "Dialog": "Dialógus", "Add To Text Notes": "Hozzáadás Szöveges Megjegyzésekhez", "Elliott Triple Combo Wave (WXYXZ)": "Elliott Tripla Kombinációs Hullám (WXYXZ)", "Multiplier_input": "Multiplier", "Risk/Reward": "Kockázat/Nyereség", "Base Line Periods_input": "Base Line Periods", "Show Dividends": "Osztalékok Mutatása", "Relative Strength Index_study": "Relatív Erő Index", "Modified Schiff Pitchfork": "Módosított Schiff Villa", "Top Labels": "Top Címkék", "Show Earnings": "Nyereség Mutatása", "Line - Open": "Line - Nyitás", "Elliott Triangle Wave (ABCDE)": "Elliott Háromszög Hullám (ABCDE)", "Minuette": "Menüett", "Text Wrap": "Szöveg Csomagolás", "Reverse Position": "Fordított Pozíció", "Elliott Minor Retracement": "Elliott Kis Retracement", "Th_day_of_week": "Cs", "Slash_hotkey": "Slash", "No symbols matched your criteria": "Egyetlen szimbólum se felel meg a kritériumoknak", "Icon": "Ikon", "lengthRSI_input": "lengthRSI", "Tuesday": "Kedd", "Teeth Length_input": "Teeth Length", "Indicator_input": "Indicator", "Open Interval Dialog": "Időközi Pábeszéd Dialógus", "Shanghai": "Sanghaj", "Athens": "Athén", "Fib Speed Resistance Arcs": "Fib Speed Ellenállás Ívek", "Content": "Tartalom", "middle": "közép", "Lock Cursor In Time": "Curzor Rögzítése Időhöz", "Intermediate": "Közbülső", "Eraser": "Radír", "Relative Vigor Index_study": "Relative Vigor Index", "Envelope_study": "Boríték", "Symbol Labels": "Szimbólum Címkék", "show MA_input": "show MA", "Horizontal Line": "Vízszintes Vonal", "O_in_legend": "Ny", "Confirmation": "Megerősítés", "HL Bars": "HL Oszlopok", "Lines:": "Vonalak", "Hide Favorite Drawings Toolbar": "Kedvenc Rajzok Eszköztár Elrejtése", "useTrueRange_input": "useTrueRange", "Profit Level. Ticks:": "Profitszint. Tick:", "Show Date/Time Range": "Dátum/Időintervallum Mutatás", "Level {0}": "{0} Szint", "Horz Grid Lines": "Vízszintes Rácsvonalak", "-DI_input": "-DI", "Price Range": "Ártartomány", "day": "days", "deviation_input": "deviation", "Value_input": "Value", "Time Interval": "Idő Intervallum", "Success text color": "Nyereség szöveg szín", "ADX smoothing_input": "ADX smoothing", "%d hour": "%d hours", "Order size": "Megbízás mérete", "Drawing Tools": "Rajzeszközök", "Save Indicator Template As": "Mentsd az Indikátort Sablonként Mint", "Chaikin Money Flow_study": "Chaikin Pénzáramlás", "Ease Of Movement_study": "Mozgás Könnyedség", "Defaults": "Alapértelmezettek", "Percent_input": "Percent", "Interval is not applicable": "Az időköz nem alkalmazható", "short_input": "short", "Visual settings...": "Képi beállítások", "RSI_input": "RSI", "Chatham Islands": "Chatham-szigetek", "Detrended Price Oscillator_input": "Detrended Price Oscillator", "Mo_day_of_week": "H", "Up Wave 4": "Hullám 4 Fel", "center": "közép", "Vertical Line": "Függőleges Vonal", "Bogota": "Bogotá", "Show Splits on Chart": "Felosztások Mutatása a Charton", "Sorry, the Copy Link button doesn't work in your browser. Please select the link and copy it manually.": "Sajnos a Link Másolása gomb nem működik a böngésződben. Kérjük, válaszd ki a linket, és másold ki manuálisan.", "Levels Line": "Szintvonal", "Events & Alerts": "Események & Riasztások", "May": "Május", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "Aroon Down", "Add To Watchlist": "Hozzáadás Figyelőlistához", "Total": "Összesen", "Price": "Ár", "left": "bal", "Lock scale": "Méret Zárolása", "Limit_input": "Limit", "Change Days To": "Napok Módosítása", "Price Oscillator_study": "Price Oszcillátor", "smalen1_input": "smalen1", "Drawing Template '{0}' already exists. Do you really want to replace it?": "{0} névvel már létezik rajzsablon. Biztos, hogy cserélni akarod?", "Show Middle Point": "Középpont Mutatása", "KST_input": "KST", "Extend Right End": "Jobb Vég Hosszabbítás", "Fans": "Rajongók", "Line - Low": "Vonal - Low", "Price_input": "Price", "Gann Fan": "Gann Legyező", "Weeks": "Hetek", "McGinley Dynamic_study": "McGinley Dinamika", "Relative Volatility Index_study": "Relative Volatility Index", "Source Code...": "Forráskód...", "PVT_input": "PVT", "Show Hidden Tools": "Elrejtett Eszközök Mutatása", "Hull Moving Average_study": "Hull Mozgóátlag", "Save Drawing Template As": "Rajzsablon Mentése Mint", "Bring Forward": "Előterjesztés", "Remove Drawing Tools": "Rajzeszközök Eltávolítása", "Friday": "Péntek", "Zero_input": "Zero", "Company Comparison": "Vállalat Összehasonlító", "Stochastic Length_input": "Stochastic Length", "mult_input": "mult", "URL cannot be received": "Az URL nem fogadható", "Success back color": "Nyereség vissza szín", "E_data_mode_end_of_day_letter": "E", "Trend-Based Fib Extension": "Trendalapú Fib Kiterjesztés", "Top": "Felső", "Double Curve": "Dupla Görbe", "Stochastic RSI_study": "Sztochasztikus RSI", "Oops!": "Hoppá!", "Horizontal Ray": "Vízszintes Sugár", "smalen3_input": "smalen3", "Ok": "Oké", "Script Editor...": "Szkript Editor...", "Are you sure?": "Biztos vagy benne?", "Trades on Chart": "Ügyletek a Charton", "Listed Exchange": "Listázott Tőzsde", "Error:": "Hiba:", "Fullscreen mode": "Teljes Képernyő Mód", "Add Text Note For {0}": "Szöveges Megjegyzés Hozzáadása Ehhez: {0}", "K_input": "K", "Do you really want to delete Drawing Template '{0}' ?": "Biztos, hogy törölni akarod ezt a rajzsablont: {0}?", "ROCLen3_input": "ROCLen3", "Micro": "Mikro", "Text Color": "Szöveg Szín", "Rename Chart Layout": "Chart Elrendezés Átnevezése", "Background color 2": "Háttérszín 2", "Drawings Toolbar": "Rajzok Eszköztár", "Moving Average Channel_study": "Moving Average Channel", "New Zealand": "Új-Zéland", "CHOP_input": "CHOP", "Apply Defaults": "Alapértelmezett Alkalmazása", "Screen (No Scale)": "Képernyő (Skála)", "Extended Alert Line": "Meghosszabbított Riasztási Vonal", "Note": "Megjegyzés", "OK": "Rendben", "like": "likes", "Show": "Mutat", "{0} bars": "{0} bárok", "Lower_input": "Lower", "Created ": "Létrehozva ", "Warning": "Figyelmeztetés", "Elder's Force Index_study": "Nemes Erő Index", "Show Earnings on Chart": "Nyereség Mutatása Charton", "ATR_input": "ATR", "Low": "Alacsony", "Bollinger Bands %B_study": "Bollinger Szalagok %B", "Time Zone": "Időzóna", "right": "jobb", "%d month": "%d months", "Wrong value": "Hibás érték", "Upper Band_input": "Upper Band", "Sun": "Vas", "Rename...": "Átnevezés...", "start_input": "start", "No indicators matched your criteria.": "Egyetlen indikátor se felel meg a kritériumoknak.", "Commission": "Jutalék", "Short length_input": "Short length", "Kolkata": "Kalkutta", "Submillennium": "Szubévezred", "Technical Analysis": "Technikai Elemzés", "Show Text": "Szöveg Mutatás", "Channel": "Csatorna", "FXCM CFD data is available only to FXCM account holders": "Az FXCM CFD adatait csak FXCM fiókkal rendelkező felhasználóink láthatják", "Lagging Span 2 Periods_input": "Lagging Span 2 Periods", "Connecting Line": "Összekötő Vonal", "Seoul": "Szöul", "bottom": "alsó", "Teeth_input": "Teeth", "Open Manage Drawings": "Rajzok Kezelésének Megnyitása", "Save New Chart Layout": "Új Chart Elrendezés Mentése", "Fib Channel": "Fib Csatorna", "Save Drawing Template As...": "Rajzsablon Mentése Másként...", "Minutes_interval": "Percek", "Up Wave 2 or B": "Hullám 2 vagy B Fel", "Columns": "Oszlopok", "Directional Movement_study": "Irányított Mozgás", "roclen2_input": "roclen2", "Apply WPT Down Wave": "WPT Le Hullám Alkalmazása", "Not applicable": "Nem alkalmazható", "Bollinger Bands %B_input": "Bollinger Bands %B", "Default": "Alapértelmezett", "Template name": "Sablon neve", "Indicator Values": "Indikátor Értékek", "Lips Length_input": "Lips Length", "Use Upper Deviation_input": "Use Upper Deviation", "L_in_legend": "Alacsony", "Remove custom interval": "Egyéni időköz eltávolítása", "shortlen_input": "shortlen", "Quotes are delayed by {0} min": "Az adatok késleltetve vannak {0} perccel", "Hide Events on Chart": "Események Elrejtése a Chartról", "Profit Background Color": "Profit Háttérszín", "Bar's Style": "Bár Stílusa", "Exponential_input": "Exponential", "Down Wave 5": "Hullám 5 Le", "Stay In Drawing Mode": "Rajzmódban Marad", "Comment": "Komment", "Connors RSI_study": "Connors RSI", "Bars": "Bárok", "Show Labels": "Címkék Mutatása", "Flat Top/Bottom": "Lapos Felső/Alsó", "Symbol Type": "Szimbólum Típusa", "Lock drawings": "Rajzok zárolása", "Border color": "Keret színe", "Change Seconds From": "Másodpercek Módosítása Erről:", "Left Labels": "Bal Címkék", "Insert Indicator...": "Indikátor Beillesztés...", "ADR_B_input": "ADR_B", "Paste %s": "%s Beillesztése", "Change Symbol...": "Szimbólum Változtatás...", "Timezone": "Időzóna", "Invite-only script. You have been granted access.": "Meghívásos szkript. Hozzáférést kaptál.", "Color 6_input": "Color 6", "Oct": "Okt", "{0} financials by TradingView": "{0} TradingView pénzügyek", "Extend Lines Left": "Vonalak Hosszabbítása Balra", "Source back color": "Forrás vissza szín", "Transparency": "Átláthatóság", "No": "Nem", "June": "Június", "Cyclic Lines": "Ciklikus Vonalak", "length28_input": "length28", "ABCD Pattern": "ABCD Minta", "When selecting this checkbox the study template will set \"__interval__\" interval on a chart": "A jelölőnégyzet kiválasztásával a tanulmánysablon \"__interval__\" időközt állít be a charton", "Add": "Hozzáad", "OC Bars": "OC Oszlopok", "Millennium": "Évezred", "On Balance Volume_study": "Egyensúly Volumen", "Apply Indicator on {0} ...": "Indikátor alkalmazása ezen: {0} ...", "NEW": "ÚJ", "Chart Layout Name": "Chart Elrendezés Neve", "Hull MA_input": "Hull MA", "Lock Scale": "Méret Zárolása", "distance: {0}": "távolság: {0}", "Extended": "Kiterjesztett", "Three Drives Pattern": "Három Hajtás Minta", "NO": "NEM", "Top Margin": "Felső Margó", "Up fractals_input": "Up fractals", "Insert Drawing Tool": "Rajzeszköz Beillesztés", "OHLC Values": "OHCL Értékek", "Correlation_input": "Correlation", "Session Breaks": "Munkamenet Szünetek", "Add {0} To Watchlist": "{0} Hozzáadása Figyelőlistához", "Anchored Note": "Horgony Megjegyzés", "lipsLength_input": "lipsLength", "Apply Indicator on {0}": "Indikátor alkalmazása ezen: {0}", "UpDown Length_input": "UpDown Length", "Price Label": "Árcímke", "Tehran": "Teherán", "ASI_study": "ASI", "Background Color": "Háttérszín", "an hour": "egy óra", "Right Axis": "Jobb Tengely", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "slowLength", "Click to set a point": "Klikkelj a pont megadásához", "Save Indicator Template As...": "Mentsd az Indikátort Sablonként Mint...", "Indicator Titles": "Indikátor Címkék", "Failure text color": "Veszteség szöveg szín", "Sa_day_of_week": "Szo", "Net Volume_study": "Nettó Volumen", "Error": "Hiba", "Edit Position": "Pozíció Szerkesztése", "RVI_input": "RVI", "Centered_input": "Centered", "Recalculate On Every Tick": "Újraszámolás minden bejelölésnél", "Left": "Bal", "Simple ma(oscillator)_input": "Simple ma(oscillator)", "Compare": "Összehasonlít", "Fisher Transform_study": "Fisher Transzformáció", "Show Orders": "Megbízások Mutatása", "Track time": "Időkövetés", "Length EMA_input": "Length EMA", "Enter a new chart layout name": "Add meg az új chart elrendezés nevét", "Signal Length_input": "Signal Length", "FAILURE": "VESZTESÉG", "Point Value": "Pontérték", "D_interval_short": "N", "MA with EMA Cross_study": "MA with EMA Cross", "Close": "Zárás", "ParabolicSAR_input": "ParabolicSAR", "Log Scale_scale_menu": "Log Skála", "MACD_input": "MACD", "Do not show this message again": "Ne mutasd többet ezt az üzenetet", "Up Wave 3": "Hullám 3 Fel", "Arrow Mark Left": "Nyíl Balra", "Slow length_input": "Slow length", "Line - Close": "Vonal - Zárás", "(O + H + L + C)/4": "(Ny + M + A + Z)/4", "Confirm Inputs": "Inputok Megerősítése", "Open_line_tool_position": "Nyitva", "Lagging Span_input": "Lagging Span", "Subminuette": "Szubminüett", "Thursday": "Csütörtök", "Triple EMA_study": "Triple EMA", "Elliott Correction Wave (ABC)": "Elliot Korrekciós Hullám (ABC)", "Error while trying to create snapshot.": "Hiba történt a snapshot készítése közben.", "Label Background": "Címke Háttér", "Templates": "Sablonok", "Please report the issue or click Reconnect.": "Jelentsd a problémát vagy kattints az Újracsatlakozás gombra", "Normal": "Normális", "Signal Labels": "Jel Címkék", "compiling...": "összeállítás...", "Detrended Price Oscillator_study": "Trendmentes Ár Oszcillátor", "Color 5_input": "Color 5", "Fixed Range_study": "Fixed Range", "Up Wave 1 or A": "Hullám 1 vagy A Fel", "Scale Price Chart Only": "Csak az Árskála Chart", "Unmerge Up": "Szétválasztás Fel", "auto_scale": "auto", "Short period_input": "Short period", "Background": "Háttér", "% of equity": "% a saját tőkéből", "Apply Elliot Wave Intermediate": "Közbülső Elliot Hullám Alkalmazása", "VWMA_input": "VWMA", "Lower Deviation_input": "Lower Deviation", "Save Interval": "Mentés Időköze", "February": "Február", "Reverse": "Fordított", "Oops, something went wrong": "Hoppá, valami hiba történt", "Add to favorites": "Hozzáadás kedvencekhez", "Median": "Medián", "ADX_input": "ADX", "Remove": "Eltávolítás", "len_input": "len", "Arrow Mark Up": "Nyíl Felfelé", "April": "Április", "Active Symbol": "Aktív Szimbólum", "Extended Hours": "Meghosszabbított Nyitva Tartás", "Crosses_input": "Crosses", "Middle_input": "Middle", "Read our blog for more info!": "További tudnivalókért olvasd el a blogunkat!", "Sync drawing to all charts": "Rajzolás szinkronizálása az összes charttal", "LowerLimit_input": "LowerLimit", "Know Sure Thing_study": "Biztosra Tudd Dolog", "Copy Chart Layout": "Chart Elrendezés Másolása", "Compare...": "Összehasonlít...", "1. Slide your finger to select location for next anchor
2. Tap anywhere to place the next anchor": "1. Húzd el az újjad az első horgony kiválasztásához
2. Érintsd meg akárhol az első horgony elhelyezéséhez", "Text Notes are available only on chart page. Please open a chart and then try again.": "A szöveges megjegyzéseket csak a chart oldalról éred el. Nyisd meg a chartot és próbáld újra.", "Color": "Szín", "Aroon Up_input": "Aroon Up", "Singapore": "Szingapúr", "Scales Lines": "Skálavonalak", "Type the interval number for munute charts (i.e. 5 if it is going to be a five minute chart). Or number plus letter for H (Hourly), D (Daily), W (Weekly), M (Monthly) intervals (i.e. D or 2H)": "Írd be az időköz számot a perces charthoz (pl. 5, ha öt perces chart lesz). Vagy szám + Ó (órás), N (napi), H (heti), H (havi) időköz (pl. N vagy 2Ó)", "Ellipse": "Ellipszis", "Up Wave C": "Hullám C Fel", "Show Distance": "Távolság Mutatás", "Risk/Reward Ratio: {0}": "Kockázat/Nyereség Arány: {0}", "Restore Size": "Méret Visszaállítása", "Volume Oscillator_study": "Volumen Oszcillátor", "Williams Fractal_study": "Williams Fraktál", "Merge Up": "Összeolvasztás Fel", "Right Margin": "Jobb Margó", "Moscow": "Moszkva", "Warsaw": "Varsó"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/id_ID.json b/static/Kline/charting_library/static/localization/translations/id_ID.json new file mode 100644 index 0000000..3f9fac6 --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/id_ID.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "ticks", "Months_interval": "Bulan", "Percent_input": "Persen", "Callout": "Memanggil", "Sync to all charts": "Sinkronisasi ke seluruh chart", "month": "bulan", "roclen1_input": "pjgroc1", "Unmerge Down": "Pisahkan Ke Bawah", "Percents": "Persen", "Search Note": "Cari Catatan", "Do you really want to delete Chart Layout '{0}' ?": "Apakah benar anda ingin menghapus Tata Letak Chart '{0}' ?", "Quotes are delayed by {0} min and updated every 30 seconds": "Kutipan tertunda {0} menit dan diperbaharui setiap 30 detik", "Magnet Mode": "Mode Magnet", "Grand Supercycle": "Supercycle Besar", "OSC_input": "OSC", "Hide alert label line": "Sembunyikan garis label peringatan", "Volume_study": "Volume", "Lips_input": "Lips", "Show real prices on price scale (instead of Heikin-Ashi price)": "Perlihatkan harga sebenarnya pada skala harga (bukan harga Heikin-Ashi)", "Base Line_input": "Garis Dasar", "Step": "Langkah", "Insert Study Template": "Masukkan Template Studi", "SMALen2_input": "PjgSMA2", "Bollinger Bands_study": "Bollinger Bands", "Show/Hide": "Perlihatkan/Sembunyikan", "Upper_input": "Atas", "exponential_input": "eksponensial", "Move Up": "Pindahkan Naik", "Symbol Info": "Info Simbol", "This indicator cannot be applied to another indicator": "Indikator ini tidak dapat diterapkan pada indikator lain", "Scales Properties...": "Properti Skala...", "Count_input": "Hitung", "Full Circles": "Lingkaran Penuh", "Industry": "Industri", "OnBalanceVolume_input": "OnBalanceVolume", "Cross_chart_type": "Cross", "H_in_legend": "H", "a day": "satu hari", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Akumulasi/Distribusi", "Rate Of Change_study": "Tingkat Perubahan", "Text Font": "Font Teks", "in_dates": "dalam", "Clone": "Gandakan", "Color 7_input": "Warna 7", "Chop Zone_study": "Zona Chop", "Scales Properties": "Properti Skala", "Trend-Based Fib Time": "Fib Time Berdasarkan Tren", "Remove All Indicators": "Hilangkan Semua Indikator", "Oscillator_input": "Osilator", "Last Modified": "Modifikasi Terakhir", "yay Color 0_input": "Warna yay 0", "Labels": "Label", "Chande Kroll Stop_study": "Chande Kroll Stop", "Hours_interval": "Jam", "Allow up to": "Diizinkan sampai dengan", "Scale Right": "Skala Kanan", "Money Flow_study": "Money Flow", "siglen_input": "pjgsin", "Indicator Labels": "Label Indikator", "__specialSymbolOpen__Tomorrow at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Besok pada__specialSymbolClose__ __dayTime__", "Toggle Percentage": "Toggle Persentase", "Remove All Drawing Tools": "Hilangkan Semua Alat Gambar", "Remove all line tools for ": "Hilangkan semua alat garis untuk ", "Linear Regression Curve_study": "Kurva Regresi Linear", "Symbol_input": "Simbol", "increment_input": "kenaikan", "Compare or Add Symbol...": "Bandingkan atau Tambahkan Simbol...", "__specialSymbolOpen__Last__specialSymbolClose__ __dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Terakhir__specialSymbolClose__ __dayName__ __specialSymbolOpen__pada__specialSymbolClose__ __dayTime__", "Save Chart Layout": "Simpan Susunan Chart", "Number Of Line": "Jumlah Dari Garis", "Contracts": "Kontrak", "Post Market": "Setelah Pasar", "second": "detik", "Change Hours To": "Ubah Jam Menjadi", "smoothD_input": "smoothD", "Falling_input": "Jatuh", "Risk/Reward short": "Risiko/Perolehan jual", "UpperLimit_input": "BatasAtas", "Donchian Channels_study": "Donchian Channels", "Entry price:": "Harga masuk:", "Circles": "Lingkaran", "Stop: {0} ({1}) {2}, Amount: {3}": "Stop: {0} ({1}) {2}, Jumlah: {3}", "Mirrored": "Tercermin", "Ichimoku Cloud_study": "Ichimoku Cloud", "Signal smoothing_input": "Smoothing sinyal", "Toggle Log Scale": "Toggle Skala Log", "Toggle Auto Scale": "Toggle Skala Otomatis", "Triangle Down": "Segitiga Turun", "Apply Elliot Wave Minor": "Terapkan Elliot Wave Minor", "Rename...": "Ganti Nama...", "Smoothing_input": "Smoothing", "Color 3_input": "Warna 3", "Jaw Length_input": "Panjang Jaw", "Inside": "Di Dalam", "Delete all drawing for this symbol": "Hapus semua gambar untuk simbol ini", "Fundamentals": "Fundamental", "Keltner Channels_study": "Keltner Channel", "Long Position": "Posisi Beli", "Bands style_input": "Bentuk Pita", "Undo {0}": "Kembalikan {0}", "With Markers": "Dengan Penanda", "Momentum_study": "Momentum", "MF_input": "MF", "Switch to the next chart": "Pindah ke chart berikutnya", "charts by TradingView": "chart oleh TradingView", "Fast length_input": "Panjang Cepat", "Apply Elliot Wave": "Terapkan Elliot Wave", "Disjoint Angle": "Pisahkan Sudut", "Supermillennium": "Supermilenium", "W_interval_short": "W", "Show Only Future Events": "Perlihatkan Hanya Peristiwa di Masa Mendatang", "Log Scale": "Skala Log", "Line - High": "Garis - High", "Equality Line_input": "Garis Kesetaraan", "Short_input": "Jual", "Tuesday": "Selasa", "Line": "Garis", "Session": "Sesi", "Down fractals_input": "Fraktal Turun", "smalen2_input": "pjgsma2", "isCentered_input": "Ditengahkan", "Border": "Batas", "Klinger Oscillator_study": "Osilator Klinger", "Absolute": "Absolut", "Tue": "Selasa", "Style": "Gaya", "Show Left Scale": "Perlihatkan Skala Kiri", "SMI Ergodic Indicator/Oscillator_study": "SMI Ergodic Indikator/Osilator", "Aug": "Agst", "Last available bar": "Bar tersedia terakhir", "Manage Drawings": "Kelola Gambar", "Analyze Trade Setup": "Analisis Persiapan Trade", "No drawings yet": "Belum ada gambar saat ini", "SMI_input": "SMI", "Chande MO_input": "Chande MO", "jawLength_input": "Panjangjaw", "TRIX_study": "TRIX", "Show Bars Range": "Perlihatkan Rentang Bar", "RVGI_input": "RVGI", "Last edited ": "Terakhir kali di edit ", "signalLength_input": "Panjangsinyal", "Reset Settings": "Atur Ulang Pengaturan", "d_dates": "d", "Point & Figure": "Poin & Figur", "August": "Agustus", "Recalculate After Order filled": "Hitung Kembali Setelah Order Terpenuhi", "Source_compare": "Sumber", "Down bars": "Bar turun", "Correlation Coefficient_study": "Koefisien Korelasi", "Delayed": "Tertunda", "Bottom Labels": "Label Dasar", "Text color": "Warna teks", "Levels": "Level", "Short Length_input": "Panjang Jual", "teethLength_input": "Panjangteeth", "Visible Range_study": "Rentang Terlihat", "Open {{symbol}} Text Note": "Buka Catatan Teks {{symbol}}", "October": "Oktober", "Lock All Drawing Tools": "Kunci Semua Alat Gambar", "Long_input": "Long", "Unmerge Up": "Pisahkan Ke Atas", "Show Symbol Last Value": "Perlihatkan Nilai Terakhir Simbol", "Do you really want to delete Study Template '{0}' ?": "Apakah benar anda ingin menghapus Template Studi '{0}' ?", "Favorite Drawings Toolbar": "Toolbar Alat Gambar Favorit", "Properties...": "Properti...", "Reset Scale": "Atur Ulang Skala", "MA Cross_study": "MA Cross", "Trend Angle": "Sudut Tren", "Snapshot": "Cuplikan", "Signal line period_input": "Periode garis sinyal", "Previous Close Price Line": "Garis Close Harga Sebelumnya", "Line Break": "Garis Jeda", "Quantity": "Kuantitas", "Price Volume Trend_study": "Price Volume Trend", "Auto Scale": "Skala Otomatis", "hour": "jam", "Text": "Teks", "F_data_mode_forbidden_letter": "F", "Risk/Reward long": "Risiko/Perolehan beli", "Long RoC Length_input": "Panjang RoC Beli", "Length3_input": "Panjang3", "+DI_input": "+DI", "Length_input": "Panjang", "Use one color": "Gunakan satu warna", "Chart Properties": "Properti Chart", "No Overlapping Labels_scale_menu": "Label Tertumpuk Tidak Diperbolehkan", "Exit Full Screen (ESC)": "Keluar dari Layar Penuh (ESC)", "MACD_study": "MACD", "Show Economic Events on Chart": "Perlihatkan Peristiwa Ekonomi pada Chart", "%s ago_time_range": "%s yang lalu", "Show Wave": "Tampilkan Wave", "Failure back color": "Kegagalan warna belakang", "Below Bar": "Bar Dibawah", "Time Scale": "Skala Waktu", "

Only D, W, M intervals are supported for this symbol/exchange. You will be automatically switched to a D interval. Intraday intervals are not available because of exchange policies.

": "

Hanya interval D, W, M yang tersedia untuk simbol/kurs ini. anda akan dipindahkan ke interval D secara otomatis. Interval intrahari tidak tersedia karena adanya kebijakan kurs.

", "Extend Left": "Perpanjang Kiri", "Date Range": "JarakTanggal", "Min Move": "Pergerakan Min", "Price format is invalid.": "Format harga tidak valid.", "Show Price": "Perlihatkan Harga", "Level_input": "Level", "Commodity Channel Index_study": "Commodity Channel Index", "Elder's Force Index_input": "Elder's Force Index", "Currency": "Mata Uang", "Color bars based on previous close": "Bar warna yang berdasarkan tutup sebelumnya", "Change band background": "Ubah latar belakang pita", "Target: {0} ({1}) {2}, Amount: {3}": "Target: {0} ({1}) {2}, Jumlah: {3}", "Zoom Out": "Perkecil", "This chart layout has a lot of objects and can't be published! Please remove some drawings and/or studies from this chart layout and try to publish it again.": "Susunan chart ini memiliki terlalu banyak objek sehingga tidak dapat dipublikasikan! Harap hilangkan beberapa gambar dan/atau studi dari susunan chart ini kemudian cobalah untuk mempublikasikannya kembali.", "Anchored Text": "Teks Dasar", "Edit {0} Alert...": "Edit Peringatan {0}...", "Up Wave 5": "Naik Gelombang 5", "Qty: {0}": "Kuanitas: {0}", "Aroon_study": "Aroon", "show MA_input": "tampilkan MA", "Lead 1_input": "Lead 1", "Short Position": "Posisi Jual", "SMALen1_input": "PjgSMA1", "P_input": "P", "Apply Default": "Terapkan Pengaturan Bawaan", "SMALen3_input": "PjgSMA3", "Average Directional Index_study": "Average Directional Index", "Fr_day_of_week": "Jum", "Invite-only script. Contact the author for more information.": "Skrip khusus-undangan. Kontak penulis untuk informasi lebih lanjut.", "Curve": "Kurva", "a year": "satu tahun", "Target Color:": "Warna Target:", "Bars Pattern": "Pola Bar", "D_input": "D", "Font Size": "Ukuran Font", "Create Vertical Line": "Buat Garis Vertikal", "p_input": "p", "Rotated Rectangle": "Bujur Sangkar Berputar", "Chart layout name": "Nama susunan chart", "Apply Manual Decision Point": "Terapkan Titik Keputusan Manual", "Dot": "Titik", "Target back color": "Warna belakang Target", "All": "Semua", "orders_up to ... orders": "order", "Dot_hotkey": "Titik", "Lead 2_input": "Lead 2", "Save image": "Simpan gambar", "Move Down": "Pindahkan Turun", "Triangle Up": "Segitiga Naik", "Box Size": "Ukuran kotak", "Navigation Buttons": "Tombol Navigasi", "Miniscule": "Amat kecil", "Apply": "Terapkan", "Down Wave 3": "Gelombang Turun 3", "Plots Background_study": "Latar Belakang Plots", "Marketplace Add-ons": "Add-on Marketplace", "Sine Line": "Garis Sinus", "Fill": "Penuhkan", "%d day": "%d hari", "Hide": "Sembunyikan", "Toggle Maximize Chart": "Toggle Memperbesar Chart", "Target text color": "Warna teks Target", "Scale Left": "Skala Kiri", "smalen3_input": "pjgsma3", "Down Wave C": "Gelombang Turun C", "Countdown": "Hitung Mundur", "UO_input": "UO", "Pyramiding": "Membentuk Piramid", "Go to Date...": "Masuk ke Tanggal...", "Text Alignment:": "Perataan Teks:", "R_data_mode_realtime_letter": "R", "Extend Lines": "Perpanjang Garis", "Conversion Line_input": "Garis Konversi", "March": "Maret", "Su_day_of_week": "Min", "Exchange": "Bursa", "Arcs": "Busur", "Regression Trend": "Tren Regresi", "Short RoC Length_input": "Panjang RoC Jual", "Symbol Description": "Deskripsi Simbol", "Double EMA_study": "Double EMA", "minute": "menit", "All Indicators And Drawing Tools": "Semua Indikator dan Alat Gambar", "Indicator Last Value": "Nilai Terakhir Indikator", "Sync drawings to all charts": "Sinkronisasi gambar pada semua chart", "Change Average HL value": "Ubah nilai Rata-rata HL", "Stop Color:": "Warna Stop:", "Stay in Drawing Mode": "Tetap Dalam Mode Menggambar", "Bottom Margin": "Marjin Dasar", "Save Chart Layout saves not just some particular chart, it saves all charts for all symbols and intervals which you are modifying while working with this Layout": "Simpan Susunan Chart menyimpan bukan hanya beberapa dari chart tertentu, melainkan semua chart untuk semua simbol dan interval yang telah Anda modifikasi saat mengerjakan Susunan tersebut", "Average True Range_study": "Average True Range", "Max value_input": "Nilai Max", "MA Length_input": "Panjang MA", "Invite-Only Scripts": "Skrip Khusus-Undangan", "in %s_time_range": "dalam%s", "Extend Bottom": "Perpanjang Kebawah", "sym_input": "sim", "DI Length_input": "Panjang DI", "Rome": "Roma", "Scale": "Skala", "Periods_input": "Periode", "Arrow": "Panah", "Square": "Persegi", "Basis_input": "Basis", "Arrow Mark Down": "Tanda Panah Turun", "lengthStoch_input": "panjangStoch", "Objects Tree": "Pohon Objek", "Remove from favorites": "Hilangkan dari favorit", "Show Symbol Previous Close Value": "Menampakkan Nilai Close Simbol Sebelumnya", "Scale Series Only": "Skalakan Seri Saja", "Source text color": "Warna teks sumber", "Simple": "Sederhana", "Report a data issue": "Laporkan masalah data", "Arnaud Legoux Moving Average_study": "Arnaud Legoux Moving Average", "Smoothed Moving Average_study": "Smoothed Moving Average", "Lower Band_input": "Pita Bawah", "Verify Price for Limit Orders": "Verifikasi Harga untuk Limit Order", "VI +_input": "VI +", "Line Width": "Tebal Garis", "Always Show Stats": "Selalu Tampilkan Statistik", "Down Wave 4": "Gelombang Turun 4", "ROCLen2_input": "PjgROC2", "Simple ma(signal line)_input": "Simple ma(garis sinyal)", "Change Interval...": "Ubah Interval...", "Public Library": "Kepustakaan Publik", " Do you really want to delete Drawing Template '{0}' ?": " Apakah benar anda ingin menghapus Template Gambar '{0}'?", "Sat": "Sab", "week": "minggu", "CRSI_study": "CRSI", "Close message": "Tutup pesan", "Base currency": "Mata Uang dasar", "Show Drawings Toolbar": "Perlihatkan Bilah Alat Gambar", "Chaikin Oscillator_study": "Osilator Chaikin", "Price Source": "Sumber Harga", "Market Open": "Pasar Buka", "Color Theme": "Warna Tema", "Projection up bars": "Proyeksi bar naik", "Awesome Oscillator_study": "Awesome Oscillator", "Bollinger Bands Width_input": "Lebar Bollinger Bands", "Q_input": "Q", "long_input": "beli", "Error occured while publishing": "Terjadi kesalahan saat mempublikasikan", "Color 1_input": "Warna 1", "Moving Average Weighted_study": "Moving Average Weighted", "Save": "Simpan", "Type": "Ketik", "Wick": "Sumbu", "Accumulative Swing Index_study": "Accumulative Swing Index", "Load Chart Layout": "Muat Susunan Chart", "Show Values": "Perlihatkan Nilai", "Fisher_input": "Fisher", "Bollinger Bands Width_study": "Lebar Bollinger Bands", "This chart layout has more than 1000 drawings, which is a lot! This may negatively affect performance, storage and publishing. We recommend to remove some drawings to avoid potential performance issues.": "Tata letak chart ini berisi lebih dari 1000 gambar, jumlah yang besar! Hal ini dapat memberi pengaruh buruk pada kinerja, penyimpanan dan publikasi. Kami menganjurkan agar beberapa gambar dihilangkan untuk menghindari potensi masalah pada kinerja.", "Left End": "Ujung Kiri", "Volume Oscillator_study": "Osilator Volume", "Always Visible": "Selalu Terlihat", "S_data_mode_snapshot_letter": "S", "Flag": "Bendera", "Change Minutes To": "Ubah Menit Menjadi", "Earnings breaks": "Jeda perolehan", "Change Minutes From": "Ubah Menit Dari", "Do not ask again": "Jangan tanyakan lagi", "MTPredictor": "PemrakiraMT", "Displacement_input": "Perpindahan", "smalen4_input": "pjgsma4", "CCI_input": "CCI", "Upper Deviation_input": "Deviasi Atas", "XABCD Pattern": "Pola XABCD", "Copied to clipboard": "Disalin ke clipboard", "Flipped": "Terbalik", "DEMA_input": "DEMA", "Move_input": "Pindah", "NV_input": "NV", "Choppiness Index_study": "Choppiness Index", "Study Template '{0}' already exists. Do you really want to replace it?": "Template Studi '{0}' sudah ada. Apakah anda ingin menggantinya?", "Merge Down": "Gabung ke Bawah", " per contract": " per kontrak", "Overlay the main chart": "Menimpa chart utama", "Screen (No Scale)": "Layar (Tanpa Skala)", "Delete": "Hapus", "Save Indicator Template As": "Simpan Template Indikator Sebagai", "Length MA_input": "Panjang MA", "percent_input": "persen", "{0} copy": "{0} salin", "Avg HL in minticks": "Rata-Rata HL dalam minticks", "Accumulation/Distribution_input": "Akumulasi/Distribusi", "Sync": "Sinkronisasi", "C_in_legend": "C", "Weeks_interval": "Minggu", "smoothK_input": "smoothK", "Percentage_scale_menu": "Persentase", "Change Extended Hours": "Ubah Jam Perpanjangan", "MOM_input": "MOM", "h_interval_short": "h", "Change Interval": "Ubah Interval", "Change area background": "Ubah latar belakang area", "top": "teratas", "Custom color...": "Warna custom...", "Send Backward": "Kirim Mundur", "Mexico City": "Kota Meksiko", "TRIX_input": "TRIX", "Show Price Range": "Perlihatkan Rentang Harga", "Delete chart layout": "Hapus susunan chart", "ASI_study": "ASI", "Notification": "Pemberitahuan", "Fri": "Jum", "just now": "baru saja", "Forecast": "Prakiraan", "Fraction part is invalid.": "Bagian fraksi tidak valid.", "Connecting": "Menyambungkan", "Signal_input": "Sinyal", "Histogram_input": "Histogram", "The Extended Trading Hours feature is available only for intraday charts": "Fitur Perpanjangan Jam Trading hanya tersedia untuk chart intraday", "Stop syncing": "Stop sinkronisasi", "StdDev_input": "StdDev", "EMA Cross_study": "EMA Cross", "Conversion Line Periods_input": "Periode Garis Konversi", "Oversold_input": "Oversold", "My Scripts": "Skrip Saya", "Monday": "Senin", "Add Symbol_compare_or_add_symbol_dialog": "Tambah Simbol", "Williams %R_study": "Williams %R", "Symbol": "Simbol", "a month": "satu bulan", "Precision": "Presisi", "depth_input": "kedalaman", "Go to": "Masuk ke", "Please enter chart layout name": "Silakan masukkan nama susunan chart", "VWAP_study": "VWAP", "Arrow Down": "Panah Turun", "Date": "Tanggal", "Apply WPT Up Wave": "Terapkan WPT Up Wave", "__dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__dayName__ __specialSymbolOpen__pada__specialSymbolClose__ __dayTime__", "Toggle Maximize Pane": "Toggle Memperbesar Pane", "Search": "Cari", "Zig Zag_study": "Zig Zag", "Actual": "Aktual", "SUCCESS": "SUKSES", "Long period_input": "Periode beli", "length_input": "panjang", "roclen4_input": "pjgroc4", "Price Line": "Garis Harga", "Area With Breaks": "Area Dengan Jeda", "Median_input": "Median", "Stop Level. Ticks:": "Level Stop. Ticks:", "Circle Lines": "Garis Lingkaran", "Visual Order": "Urutan Visual", "__specialSymbolOpen__Yesterday at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Kemarin pada__specialSymbolClose__ __dayTime__", "Stop Background Color": "Warna Latar Stop", "Slow length_input": "Panjang lambat", "Sector": "Sektor", "powered by TradingView": "ditenagai oleh TradingView", "Text:": "Teks:", "Marker Color": "Warna Penanda", "TEMA_input": "TEMA", "Min Move 2": "Pergerakan Min 2", "Extend Left End": "Perpanjang Ujung Kiri", "Projection down bars": "Proyeksi bar turun", "Advance/Decline_study": "Advance/Decline", "Any Number": "Angka Bebas", "Flag Mark": "Tanda Bendera", "Drawings": "Gambar", "Cancel": "Batal", "Compare or Add Symbol": "Bandingkan atau Tambahkan Simbol", "Redo": "Ulangi", "Hide Drawings Toolbar": "Sembunyikan Bilah Alat Gambar", "Ultimate Oscillator_study": "Osilator Ultimate", "Vert Grid Lines": "Garis Alur Vertikal", "Growing_input": "Berkembang", "Angle": "Sudut", "Plot_input": "Plot", "Color 8_input": "Warna 8", "Indicators, Fundamentals, Economy and Add-ons": "Indikator, Fundamental, Ekonomi dan Add-ons", "h_dates": "h", "ROC Length_input": "Panjang ROC", "roclen3_input": "pjgroc3", "Overbought_input": "Overbought", "Extend Top": "Perpanjang Keatas", "X_input": "X", "No study templates saved": "Tidak ada template studi tersimpan", "Trend Line": "Garis Tren", "TimeZone": "ZonaWaktu", "Your chart is being saved, please wait a moment before you leave this page.": "Chart anda sedang disimpan, mohon menunggu beberapa saat sebelum meninggalkan halaman ini.", "Percentage": "Persentase", "Tu_day_of_week": "Sel", "RSI Length_input": "Panjang RSI", "Triangle": "Segitiga", "Line With Breaks": "Garis Dengan Jeda", "Period_input": "Periode", "Watermark": "Tanda air", "Trigger_input": "Pemicu", "SigLen_input": "PjgSig", "Extend Right": "Perpanjang Kanan", "Color 2_input": "Warna 2", "Show Prices": "Perlihatkan Harga", "Unlock": "Buka Kunci", "Copy": "Salin", "Arc": "Busur", "January": "Januari", "Arrow Mark Right": "Tanda Panah Kanan", "Extend Alert Line": "Perpanjang Garis Peringatan", "Background color 1": "Warna Latar 1", "RSI Source_input": "Sumber RSI", "Close Position": "Tutup Posisi", "Stop syncing drawing": "Stop sinkronisasi gambar", "Visible on Mouse Over": "Terlihat saat Mouse Diatas", "MA/EMA Cross_study": "MA/EMA Cross", "Thu": "Kamis", "Vortex Indicator_study": "Indikator Vortex", "view-only chart by {user}": "grafik yang hanya dapat dilihat oleh {user}", "ROCLen1_input": "PjgROC1", "M_interval_short": "M", "Chaikin Oscillator_input": "Osilator Chaikin", "Price Levels": "Level Harga", "Show Splits": "Perlihatkan Pemisahan", "Zero Line_input": "Garis Nol", "Replay Mode": "Mode Putar Ulang", "__specialSymbolOpen__Today at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Hari ini pada__specialSymbolClose__ __dayTime__", "Increment_input": "Kenaikan", "Days_interval": "Hari", "Show Right Scale": "Perlihatkan Skala Kanan", "Show Alert Labels": "Perlihatkan Label Peringatan", "Historical Volatility_study": "Historical Volatility", "Lock": "Kunci", "length14_input": "panjang14", "ext": "perpanjangan", "Date and Price Range": "Jarak Tanggal dan Harga", "Reconnect": "Menyambungkan Kembali", "Lock/Unlock": "Kunci/Buka Kunci", "Price Channel_study": "Kanal Harga", "Label Down": "Label Turun", "Saturday": "Sabtu", "Symbol Last Value": "Nilai Terakhir Simbol", "Above Bar": "Bar Diatas", "Studies": "Studi", "Color 0_input": "Warna 0", "Add Symbol": "Tambah Simbol", "maximum_input": "maksimum", "Wed": "Rab", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "VWMA_study": "VWMA", "fastLength_input": "Panjangcepat", "Time Levels": "Level Waktu", "Width": "Lebar", "Loading": "Memuat", "Use Lower Deviation_input": "Gunakan Deviasi Bawah", "Up Wave 3": "Naik Gelombang 3", "Parallel Channel": "Saluran Paralel", "Time Cycles": "Siklus Waktu", "Second fraction part is invalid.": "Bagian pecahan kedua tidak valid.", "Divisor_input": "Pembagi", "Down Wave 1 or A": "Gelombang Turun 1 atau A", "ROC_input": "ROC", "Dec": "Des", "Ray": "Sinar", "Extend": "Perpanjang", "length7_input": "panjang7", "Bottom": "Dasar", "Apply Elliot Wave Major": "Terapkan Elliot Wave Mayor", "Undo": "Kembalikan", "Window Size_input": "Besar Jendela", "Mon": "Sen", "Right Labels": "Label Kanan", "Long Length_input": "Panjang Beli", "True Strength Indicator_study": "Indikator True Strength", "%R_input": "%R", "There are no saved charts": "Tidak ada chart yang tersimpan", "Instrument is not allowed": "Instrumen ini tidak diijinkan", "bars_margin": "bars", "Decimal Places": "Tempat Desimal", "Show Indicator Last Value": "Perlihatkan Nilai Terakhir Indikator", "Initial capital": "Modal awal", "Show Angle": "Perlihatkan Sudut", "Mass Index_study": "Mass Index", "More features on tradingview.com": "Lebih banyak lagi fitur di tradingview.com", "Objects Tree...": "Pohon Objek...", "Remove Drawing Tools & Indicators": "Hilangkan Peralatan Gambar & Indikator", "Length1_input": "Panjang1", "Always Invisible": "Selalu Tidak Terlihat", "Circle": "Lingkaran", "Days": "Hari", "x_input": "x", "Save As...": "Simpan Sebagai...", "Tehran": "Teheran", "Parabolic SAR_study": "Parabolik SAR", "Any Symbol": "Simbol Bebas", "Variance": "Varian", "Stats Text Color": "Warna Teks Statistik", "Minutes": "Menit", "Williams Alligator_study": "Williams Alligator", "Projection": "Proyeksi", "Jaw_input": "Jaw", "Right": "Kanan", "Help": "Bantuan", "Coppock Curve_study": "Kurva Coppock", "Reversal Amount": "Jumlah Pembalikan", "Reset Chart": "Atur Ulang Chart", "Sunday": "Minggu", "Left Axis": "Poros Kiri", "Color based on previous close_input": "Warna berdasarkan close sebelumnya", "YES": "YA", "longlen_input": "pjgbeli", "Moving Average Exponential_study": "Moving Average Exponential", "Source border color": "Warna batas sumber", "Redo {0}": "Ulangi {0}", "Cypher Pattern": "Pola Cypher", "s_dates": "s", "Open Interval Dialog": "Buka Dialog Interval", "Triangle Pattern": "Pola Segitiga", "Balance of Power_study": "Balance of Power", "EOM_input": "EOM", "Shapes_input": "Bentuk", "Apply Manual Risk/Reward": "Terapkan Risiko/Perolehan Manual", "Market Closed": "Pasar Tutup", "Indicators": "Indikator", "q_input": "q", "You are notified": "Anda telah diberitahu", "Font Icons": "Ikon Font", "%D_input": "%D", "Border Color": "Warna Batas", "Offset_input": "Offset", "Risk": "Risiko", "Price Scale": "Skala Harga", "HV_input": "HV", "Seconds": "Detik", "Start_input": "Start", "Oct": "Okt", "Hours": "Jam", "Send to Back": "Kirim ke Belakang", "Color 4_input": "Warna 4", "Angles": "Sudut", "Prices": "Harga", "Hollow Candles": "Candle Kosong", "July": "Juli", "Create Horizontal Line": "Buat Garis Horisontal", "Minute": "Menit", "Cycle": "Siklus", "ADX Smoothing_input": "ADX Smoothing", "One color for all lines": "Satu warna untuk semua garis", "m_dates": "m", "Settings": "Pengaturan", "Candles": "Candle", "We_day_of_week": "Rab", "Width (% of the Box)": "Lebar (% dari Kotak)", "%d minute": "%d menit", "Go to...": "Masuk ke...", "Pip Size": "Ukuran Pip", "Show Countdown": "Perlihatkan Hitung Mundur", "Show alert label line": "Perlihatkan garis label peringatan", "MA_input": "MA", "Length2_input": "Panjang2", "not authorized": "tidak berwenang", "Session Volume_study": "Volume Sesi", "Image URL": "URL Gambar", "Submicro": "Submikro", "SMI Ergodic Oscillator_input": "Osilator SMI Ergodic", "Show Objects Tree": "Perlihatkan Pohon Objek", "Primary": "Primer", "Price:": "Harga:", "Bring to Front": "Bawa ke Depan", "Brush": "Sikat", "Not Now": "Tidak Sekarang", "Yes": "Ya", "C_data_mode_connecting_letter": "C", "SMALen4_input": "PjgSMA4", "Apply Default Drawing Template": "Terapkan Template Gambar Bawaan", "Compact": "Kompak", "Save As Default": "Simpan Sebagai Bawaan", "Target border color": "Warna batas Target", "Invalid Symbol": "Simbol Tidak Valid", "yay Color 1_input": "Warna yay 1", "Quandl is a huge financial database that we have connected to TradingView. Most of its data is EOD and is not updated in real-time, however the information may be extremely useful for fundamental analysis.": "Quandl adalah database finansial besar yang telah kami hubungkan dengan TradingView. Sebagian besar datanya adalah EOD dan tidak diperbaharui secara real-time, namun informasi yang tersedia dapat sangat berguna untuk melakukan analisis fundamental.", "Hide Marks On Bars": "Sembunyikan Tanda-Tanda pada Bar", "Cancel Order": "Batalkan Order", "Hide All Drawing Tools": "Sembunyikan Semua Alat Gambar", "WMA Length_input": "Panjang WMA", "Show Dividends on Chart": "Perlihatkan Dividen pada Chart", "Show Executions": "Perlihatkan Eksekusi", "Borders": "Batas-batas", "Remove Indicators": "Hilangkan Indikator", "loading...": "memuat...", "Closed_line_tool_position": "Tutup", "Rectangle": "Persegi", "Change Resolution": "Ubah Resolusi", "Indicator Arguments": "Argumentasi Indikator", "Chande Momentum Oscillator_study": "Osilator Chande Momentum", "Degree": "Derajat", "Line - HL/2": "Garis - HL/2", "Up Wave 4": "Naik Gelombang 4", "Least Squares Moving Average_study": "Least Squares Moving Average", "Change Variance value": "Ubah nilai Varian", "powered by ": "ditenagai oleh ", "Source_input": "Sumber", "Change Seconds To": "Ubah Detik Menjadi", "%K_input": "%K", "Scales Text": "Teks Skala", "Please enter template name": "Silakan masukkan nama template", "Symbol Name": "Nama Simbol", "Events Breaks": "Jeda Peristiwa", "Study Templates": "Template Studi", "Months": "Bulan", "Symbol Info...": "Info simbol...", "len_input": "pjg", "Read our blog for more info!": "Baca blog kami untuk informasi lebih banyak!", "Measure (Shift + Click on the chart)": "Pengukur (Shift + Klik pada chart)", "Override Min Tick": "Menimpa Tick Min", "Show Positions": "Perlihatkan Posisi", "Add To Text Notes": "Tambah Kedalam Catatan Teks", "Long length_input": "Panjang beli", "Multiplier_input": "Pengali", "Risk/Reward": "Risiko/Perolehan", "Base Line Periods_input": "Periode Garis Dasar", "Show Dividends": "Perlihatkan Dividen", "Relative Strength Index_study": "Relative Strength Index", "Top Labels": "Label Teratas", "Show Earnings": "Perlihatkan Perolehan", "Line - Open": "Garis - Open", "Track time": "Waktu penelusuran", "Text Wrap": "Pembungkus Teks", "Reverse Position": "Membalik Posisi", "Economy & Symbols": "Ekonomi & Simbol", "DPO_input": "DPO", "Th_day_of_week": "Kam", "Slash_hotkey": "Setrip", "No symbols matched your criteria": "Tidak ada simbol yang cocok dengan kriteria Anda", "Icon": "Ikon", "lengthRSI_input": "panjangRSI", "Teeth Length_input": "Panjang Teeth", "Indicator_input": "Indikator", "Box size assignment method": "Metode penempatan ukuran kotak", "Athens": "Athena", "Timezone/Sessions Properties...": "Properti Zona Waktu/Sesi", "Content": "Konten", "middle": "pertengahan", "Lock Cursor In Time": "Kunci Kursor Sesuai Waktu", "Intermediate": "Menengah", "Eraser": "Penghapus", "Relative Vigor Index_study": "Relative Vigor Index", "Envelope_study": "Envelope", "Pre Market": "Sebelum Pasar", "Horizontal Line": "Garis Horisontal", "O_in_legend": "O", "Confirmation": "Konfirmasi", "HL Bars": "Bar HL", "Lines:": "Garis:", "Hide Favorite Drawings Toolbar": "Sembunyikan Toolbar Alat Gambar Favorit", "useTrueRange_input": "gunakanTrueRange", "Profit Level. Ticks:": "Level Keuntungan. Tanda:", "Show Date/Time Range": "Perlihatkan Rentang Tanggal/Waktu", "%d year": "%d tahun", "Favorites": "Favorit", "Horz Grid Lines": "Garis Pola Horz", "-DI_input": "-DI", "Price Range": "Rentang Harga", "day": "hari", "deviation_input": "deviasi", "Account Size": "Besar Akun", "Value_input": "Nilai", "Time Interval": "Interval Waktu", "Success text color": "Warna teks Sukses", "ADX smoothing_input": "ADX smoothing", "%d hour": "%d jam", "Order size": "Besar order", "Drawing Tools": "Alat Gambar", "Save Drawing Template As": "Simpan Template Gambar Sebagai", "Traditional": "Tradisional", "Chaikin Money Flow_study": "Chaikin Money Flow", "Ease Of Movement_study": "Ease Of Movement", "Defaults": "Bawaan", "Interval is not applicable": "Interval tidak dapat diterapkan", "short_input": "jual", "Visual settings...": "Pengaturan Visual...", "RSI_input": "RSI", "Chatham Islands": "Kepulauan Chatham", "Detrended Price Oscillator_input": "Osilator Harga Detrended", "Mo_day_of_week": "Sen", "center": "pusat", "Vertical Line": "Garis Vertikal", "Show Splits on Chart": "Perlihatkan Pemisahan pada Chart", "Sorry, the Copy Link button doesn't work in your browser. Please select the link and copy it manually.": "Maaf, tombol Salin Link tidak berfungsi di browser anda. Silakan sorot link lalu salin secara manual.", "Levels Line": "Garis Level", "Events & Alerts": "Peristiwa & Peringatan", "May": "Mei", "ROCLen4_input": "PjgROC4", "Aroon Down_input": "Aroon Turun", "Add To Watchlist": "Tambah Ke Daftar Pengamatan", "Price": "Harga", "left": "kiri", "Lock scale": "Kunci skala", "Limit_input": "Limit", "Change Days To": "Ubah Hari Menjadi", "Price Oscillator_study": "Osilator Harga", "smalen1_input": "pjgsma1", "Drawing Template '{0}' already exists. Do you really want to replace it?": "Template Gambar '{0}' sudah ada. Apakah benar anda ingin menggantinya?", "Show Middle Point": "Tampilkan Titik Tengah", "KST_input": "KST", "Extend Right End": "Perpanjang Ujung Kanan", "Fans": "Penggemar", "Line - Low": "Garis - Low", "Price_input": "Harga", "Moving Average_study": "Moving Average", "Weeks": "Minggu", "McGinley Dynamic_study": "McGinley Dynamic", "Relative Volatility Index_study": "Relative Volatility Index", "PVT_input": "PVT", "Show Hidden Tools": "Perlihatkan Alat Tersembunyi", "Hull Moving Average_study": "Hull Moving Average", "Symbol Prev. Close Value": "Nilai Close Simbol Sebelumnya", "{0} chart by TradingView": "{0} chart oleh TradingView", "Bring Forward": "Bawa Maju", "Remove Drawing Tools": "Hilangkan Peralatan Gambar", "Friday": "Jumat", "Zero_input": "Nol", "Company Comparison": "Perbandingan Perusahaan", "Stochastic Length_input": "Panjang Stochastic", "mult_input": "mult", "URL cannot be received": "URL tidak dapat diterima", "Success back color": "Warna belakang Sukses", "E_data_mode_end_of_day_letter": "E", "Trend-Based Fib Extension": "Fib Extension Berdasarkan Tren", "Top": "Puncak", "Double Curve": "Kurva Ganda", "Stochastic RSI_study": "Stochastic RSI", "Horizontal Ray": "Sinar Horisontal", "Symbol Labels": "Label Simbol", "Script Editor...": "Editor Skrip...", "Are you sure?": "Apakah anda yakin?", "Trades on Chart": "Trade pada Chart", "Listed Exchange": "Bursa Terdaftar", "Error:": "Kesalahan:", "Fullscreen mode": "Mode layar penuh", "Add Text Note For {0}": "Tambah Catatan Teks Untuk {0}", "K_input": "K", "Do you really want to delete Drawing Template '{0}' ?": "Apakah benar anda ingin menghapus Template Gambar '{0}' ?", "ROCLen3_input": "PjgROC3", "Micro": "Mikro", "Text Color": "Warna Teks", "Rename Chart Layout": "Ganti Nama Susunan Chart", "Background color 2": "Warna latar 2", "Drawings Toolbar": "Toolbar Alat Gambar", "Source Code...": "Kode Sumber...", "CHOP_input": "CHOP", "Apply Defaults": "Terapkan Pengaturan Bawaan", "% of equity": "% dari ekuitas", "Extended Alert Line": "Garis Peringatan yang Diperpanjang", "Note": "Catatan", "Moving Average Channel_study": "Kanal Moving Average", "like": "suka", "Show": "Perlihatkan", "{0} bars": "{0} bar", "Lower_input": "Bawah", "Created ": "Sudah Dibuat ", "Warning": "Peringatan", "Elder's Force Index_study": "Elder's Force Index", "Show Earnings on Chart": "Perlihatkan Perolehan pada Chart", "ATR_input": "ATR", "Stochastic_study": "Stochastic", "Bollinger Bands %B_study": "Bollinger Bands %B", "Time Zone": "Zona Waktu", "right": "kanan", "%d month": "%d bulan", "Wrong value": "Nilai salah", "Upper Band_input": "Pita Atas", "Sun": "Min", "start_input": "mulai", "No indicators matched your criteria.": "Tidak ada indikator yang cocok dengan kriteria anda.", "Commission": "Komisi", "Down Color": "Warna Turun", "Short length_input": "Panjang jual", "Submillennium": "Submilenium", "Technical Analysis": "Analisis Teknikal", "Show Text": "Perlihatkan Teks", "Channel": "Saluran", "FXCM CFD data is available only to FXCM account holders": "Data CFD FXCM hanya tersedia bagi pemegang akun FXCM", "Lagging Span 2 Periods_input": "Periode Lagging Span 2", "Connecting Line": "Garis Penghubung", "bottom": "dasar", "Teeth_input": "Teeth", "Sig_input": "Sig", "Open Manage Drawings": "Buka Pengaturan Gambar", "Save New Chart Layout": "Simpan Susunan Chart Baru", "Save Drawing Template As...": "Simpan Template Gambar Sebagai...", "Minutes_interval": "Menit", "Up Wave 2 or B": "Naik Gelombang 2 atau B", "Columns": "Kolom", "Directional Movement_study": "Directional Movement", "roclen2_input": "pjgroc2", "Apply WPT Down Wave": "Terapkan WPT Down Wave", "Not applicable": "Tidak dapat diterapkan", "Bollinger Bands %B_input": "Bollinger Bands %B", "Default": "Bawaan", "Template name": "Nama template", "Indicator Values": "Nilai Indikator", "Lips Length_input": "Panjang Lips", "Use Upper Deviation_input": "Gunakan Deviasi Atas", "L_in_legend": "L", "Remove custom interval": "Hilangkan interval custom", "shortlen_input": "pjgjual", "Quotes are delayed by {0} min": "Kutipan tertunda selama {0} menit", "Hide Events on Chart": "Sembunyikan Event di Chart", "Cash": "Uang", "Profit Background Color": "Warna Latar Belakang Keuntungan", "Bar's Style": "Model Bar", "Exponential_input": "Eksponensial", "Down Wave 5": "Gelombang Turun 5", "Previous": "Sebelumnya", "Stay In Drawing Mode": "Tetap Dalam Mode Menggambar", "Comment": "Komentar", "Connors RSI_study": "Connors RSI", "Bars": "Bar", "Show Labels": "Perlihatkan Label", "Flat Top/Bottom": "Puncak/Dasar Datar", "Symbol Type": "Tipe Simbol", "December": "Desember", "Lock drawings": "Kunci gambar", "Border color": "Warna batas", "Change Seconds From": "Ubah Detik Dari", "Left Labels": "Label Kiri", "Insert Indicator...": "Masukkan Indikator...", "ADR_B_input": "ADR_B", "Paste %s": "Pasang %s", "Change Symbol...": "Ubah Simbol...", "Timezone": "Zona waktu", "Invite-only script. You have been granted access.": "Skrip khusus-undangan. Akses telah diberikan kepada anda.", "Color 6_input": "Warna 6", "ATR Length": "Panjang ATR", "{0} financials by TradingView": "{0} finansial oleh TradingView", "Extend Lines Left": "Perpanjang Garis Kiri", "Source back color": "Warna belakang sumber", "Transparency": "Transparansi", "No": "Tidak", "June": "Juni", "Cyclic Lines": "Garis Putaran", "length28_input": "panjang28", "ABCD Pattern": "Pola ABCD", "When selecting this checkbox the study template will set \"__interval__\" interval on a chart": "Jika anda memilih checkbox ini maka template studi akan mengatur interval \"__interval__\" pada chart", "Add": "Tambah", "OC Bars": "Bar OC", "Millennium": "Milenium", "On Balance Volume_study": "On Balance Volume", "Apply Indicator on {0} ...": "Terapkan Indikator pada {0} ...", "NEW": "BARU", "Chart Layout Name": "Nama Susunan Chart", "Up bars": "Bar naik", "Hull MA_input": "Hull MA", "Lock Scale": "Kunci Skala", "distance: {0}": "jarak: {0}", "Extended": "Diperpanjang", "NO": "TIDAK", "Top Margin": "Marjin Teratas", "Up fractals_input": "Fraktal naik", "Insert Drawing Tool": "Masukkan Alat Gambar", "OHLC Values": "Nilai OHLC", "Correlation_input": "Korelasi", "Session Breaks": "Jeda Sesi", "Add {0} To Watchlist": "Tambah {0} ke Daftar Pengamatan", "Anchored Note": "Catatan Dasar", "lipsLength_input": "panjanglips", "Apply Indicator on {0}": "Terapkan Indikator pada {0}", "UpDown Length_input": "Panjang UpDown", "Price Label": "Label Harga", "Balloon": "Balon", "Background Color": "Warna Latar", "an hour": "satu jam", "Right Axis": "Poros Kanan", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "Panjanglambat", "Click to set a point": "Klik untuk menentukan sebuah poin", "Save Indicator Template As...": "Simpan Template Indikator Sebagai...", "Arrow Up": "Panah Naik", "Indicator Titles": "Judul Indikator", "Failure text color": "Kegagalan warna teks", "Sa_day_of_week": "Sab", "Net Volume_study": "Volume Bersih", "Error": "Kesalahan", "Edit Position": "Edit Posisi", "RVI_input": "RVI", "Centered_input": "Tengah", "Recalculate On Every Tick": "Hitung Kembali Pada Setiap Tick", "Left": "Kiri", "Simple ma(oscillator)_input": "Simple ma(osilator)", "Compare": "Bandingkan", "Fisher Transform_study": "Fisher Transform", "Show Orders": "Perlihatkan Order", "Zoom In": "Perbesar", "Length EMA_input": "Panjang EMA", "Enter a new chart layout name": "Masukkan nama susunan chart baru", "Signal Length_input": "Panjang Sinyal", "FAILURE": "KEGAGALAN", "Point Value": "Nilai Poin", "D_interval_short": "D", "MA with EMA Cross_study": "MA dengan EMA Cross", "Label Up": "Label Naik", "This drawing is used in alert. If you remove the drawing, the alert will be also removed. Do you want to remove the drawing anyway?": "Gambar ini digunakan dalam peringatan. Jika Anda menghilangkan gambar, peringatan juga akan hilang. Apakah Anda tetap ingin menghilangkan gambar ini?", "ParabolicSAR_input": "ParabolikSAR", "Log Scale_scale_menu": "Skala Log", "MACD_input": "MACD", "Do not show this message again": "Jangan tampilkan pesan ini lagi", "No Overlapping Labels": "Label Tertumpuk Tidak Diperbolehkan", "Arrow Mark Left": "Tanda Panah Kiri", "Down Wave 2 or B": "Gelombang Turun 2 atau B", "Line - Close": "Garis - Close", "Confirm Inputs": "Konfirmasi Input", "Open_line_tool_position": "Open", "Lagging Span_input": "Lagging Span", "Thursday": "Kamis", "Triple EMA_study": "Triple EMA", "Error while trying to create snapshot.": "Terjadi kesalahan saat akan membuat cuplikan.", "Label Background": "Latar Belakang Label", "Templates": "Template", "Please report the issue or click Reconnect.": "Silakan melaporkan permasalahan atau klik Menyambung Kembali", "1. Slide your finger to select location for first anchor
2. Tap anywhere to place the first anchor": "1. Geser jari Anda untuk memilih lokasi sumbu pertama
2. Ketuk di sembarang tempat untuk menempatkan sumbu pertama", "Signal Labels": "Label Sinyal", "Delete Text Note": "Hapus Catatan Teks", "compiling...": "menggabungkan...", "Detrended Price Oscillator_study": "Osilator Detrended Price", "Color 5_input": "Warna 5", "Fixed Range_study": "Rentang Tetap", "Up Wave 1 or A": "Naik Gelombang 1 atau A", "Scale Price Chart Only": "Skalakan Chart Harga Saja", "Right End": "Ujung Kanan", "auto_scale": "auto", "Short period_input": "Periode jual", "Background": "Latar belakang", "Up Color": "Warna Naik", "Apply Elliot Wave Intermediate": "Terapkan Elliot Wave Menengah", "VWMA_input": "VWMA", "Lower Deviation_input": "Deviasi Bawah", "Save Interval": "Simpan Interval", "February": "Februari", "Reverse": "Membalik", "Oops, something went wrong": "Oops, ada permasalahan", "Add to favorites": "Tambah ke daftar favorit", "Median": "Medium", "ADX_input": "ADX", "Remove": "Hilangkan", "Wednesday": "Rabu", "Arrow Mark Up": "Tanda Panah Naik", "Active Symbol": "Simbol Aktif", "Extended Hours": "Jam Perpanjangan", "Crosses_input": "Persilangan", "Middle_input": "Tengah", "Sync drawing to all charts": "Sinkronisasi gambar pada semua chart", "LowerLimit_input": "Limit Bawah", "Know Sure Thing_study": "Know Sure Thing", "Copy Chart Layout": "Salin Susunan Chart", "Compare...": "Bandingkan...", "1. Slide your finger to select location for next anchor
2. Tap anywhere to place the next anchor": "1. Geser jari Anda untuk memilih lokasi sumbu berikutnya
2. Ketuk di sembarang tempat untuk menempatkan sumbu berikutnya", "Text Notes are available only on chart page. Please open a chart and then try again.": "Catatan Teks hanya tersedia di halaman chart. Silakan buka sebuah chart kemudian coba kembali.", "Color": "Warna", "Aroon Up_input": "Aroon Naik", "Singapore": "Singapura", "Scales Lines": "Garis Skala", "Type the interval number for munute charts (i.e. 5 if it is going to be a five minute chart). Or number plus letter for H (Hourly), D (Daily), W (Weekly), M (Monthly) intervals (i.e. D or 2H)": "Ketik nomor interval untuk chart menit (misalnya 5 jika Anda ingin chart 5 menit). Atau nomor ditambah huruf untuk H (Jam), D (Hari), W (Minggu), M (Bulan) interval (misalnya D atau 2H)", "HLC Bars": "Bar HLC", "Up Wave C": "Naik Gelombang C", "Show Distance": "Perlihatkan Jarak", "Risk/Reward Ratio: {0}": "Rasio Risiko/Perolehan: {0}", "Restore Size": "Kembalikan Ukuran", "Williams Fractal_study": "Williams Fractal", "Merge Up": "Gabung ke Atas", "Right Margin": "Marjin Kanan", "Ellipse": "Elips", "Warsaw": "Warsawa"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/it.json b/static/Kline/charting_library/static/localization/translations/it.json new file mode 100644 index 0000000..4e48a6b --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/it.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "ticks", "Months_interval": "Mesi", "Realtime": "Tempo reale", "Callout": "Annuncio", "Sync to all charts": "Sincronizza su tutti i grafici", "month": "mese", "London": "Londra", "roclen1_input": "roclen1", "Unmerge Down": "Separa verso il basso", "Percents": "Percentuali", "Search Note": "Cerca Note", "Minor": "Minori", "Do you really want to delete Chart Layout '{0}' ?": "Vuoi davvero cancellare la configurazione '{0}' ?", "Quotes are delayed by {0} min and updated every 30 seconds": "Quotazioni in ritardo di {0} minuti e aggiornate ogni 30 secondi", "Magnet Mode": "Modalità magnete", "Grand Supercycle": "Gran superciclo", "OSC_input": "OSC", "Hide alert label line": "Nascondi linea etichetta allarme", "Volume_study": "Volume", "Lips_input": "Lips", "Show real prices on price scale (instead of Heikin-Ashi price)": "Mostra prezzi reali sulla scala prezzi (al posto del prezzo Heikin-Ashi)", "Histogram": "Istogramma", "Base Line_input": "Base Line", "Step": "Scaletta", "Insert Study Template": "Inserisci modello studio", "Fib Time Zone": "Time Zone Fibonacci", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "Bande di Bollinger", "Show/Hide": "Mostra/Nascondi", "Upper_input": "Upper", "exponential_input": "exponential", "Move Up": "Muovi in alto", "Symbol Info": "Informazioni simbolo", "This indicator cannot be applied to another indicator": "Questo indicatore non può' essere applicato ad un altro indicatore", "Scales Properties...": "Scala assi..", "Count_input": "Count", "Full Circles": "Cerchi completi", "Industry": "Settore", "OnBalanceVolume_input": "OnBalanceVolume", "Cross_chart_type": "Croce", "H_in_legend": "H (Massimo)", "a day": "un giorno", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Accumulazione/Distribuzione", "Rate Of Change_study": "Tasso Di Variazione", "Text Font": "Font di testo", "in_dates": "in", "Clone": "Duplica", "Color 7_input": "Colore 7", "Chop Zone_study": "Chop Zone", "Bar #": "Barra #", "Scales Properties": "Scala assi", "Trend-Based Fib Time": "Tempo Fib in base al trend", "Remove All Indicators": "Elimina tutti gli Indicatori", "Oscillator_input": "Oscillatore", "Last Modified": "Ultima modifica", "yay Color 0_input": "yay Color 0", "Labels": "Etichette", "Chande Kroll Stop_study": "Chande Kroll Stop", "Hours_interval": "Ore", "Allow up to": "Consentito fino a", "Scale Right": "Scala a destra", "Money Flow_study": "Money Flow", "siglen_input": "siglen", "Indicator Labels": "Etichette indicatore", "__specialSymbolOpen__Tomorrow at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Domani a__specialSymbolClose____dayTime__", "Toggle Percentage": "Seleziona/Deseleziona percentuale", "Remove All Drawing Tools": "Elimina tutti gli strumenti di disegno", "Remove all line tools for ": "Rimuovi tutti gli strumenti linea per ", "Linear Regression Curve_study": "Curva Regressione Lineare", "Symbol_input": "Symbol", "Currency": "Valuta", "increment_input": "increment", "Compare or Add Symbol...": "Confronta o aggiungi simbolo...", "__specialSymbolOpen__Last__specialSymbolClose__ __dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Ultimo__specialSymbolClose____dayName____specialSymbolOpen__a__specialSymbolClose____dayTime__", "Save Chart Layout": "Salva layout grafico", "Number Of Line": "Numero di riga", "Label": "Etichetta", "Post Market": "Post Mercato", "second": "secondo", "Change Hours To": "Cambia ore in", "smoothD_input": "smoothD", "Falling_input": "Falling", "X_input": "X", "Risk/Reward short": "Rischio/rendimento short", "UpperLimit_input": "UpperLimit", "Donchian Channels_study": "Canali Donchian", "Entry price:": "Prezzo di entrata:", "Circles": "Cerchi", "Head": "Testa", "Stop: {0} ({1}) {2}, Amount: {3}": "Stop: {0} ({1}) {2}, Quantità: {3}", "Mirrored": "Riflesso", "Ichimoku Cloud_study": "Ichimoku Cloud", "Signal smoothing_input": "Signal smoothing", "Use Upper Deviation_input": "Use Upper Deviation", "Toggle Auto Scale": "Seleziona/deseleziona scala automatica", "Grid": "Griglia", "Apply Elliot Wave Minor": "Applica un'onda di Elliot minore", "Rename...": "Rinomina...", "Smoothing_input": "Smoothing", "Color 3_input": "Colore 3", "Jaw Length_input": "Jaw Length", "Inside": "Dentro", "Delete all drawing for this symbol": "Cancella tutti i disegni per questo simbolo", "Fundamentals": "Fondamentali", "Keltner Channels_study": "Canali Keltner", "Long Position": "Posizione long", "Bands style_input": "Bands style", "Undo {0}": "Annulla {0}", "With Markers": "Con contrassegni", "Momentum_study": "Momentum", "MF_input": "MF", "Gann Box": "Scatola Gann", "Switch to the next chart": "Vai al prossimo grafico", "charts by TradingView": "grafici da TradingView", "Fast length_input": "Fast length", "Apply Elliot Wave": "Applica le onde di Elliot", "Disjoint Angle": "Angolo disgiunto", "W_interval_short": "W", "Show Only Future Events": "Mostra solo eventi futuri", "Log Scale": "Scala logaritmica", "Line - High": "Linea - In alto", "Zurich": "Zurigo", "Equality Line_input": "Equality Line", "Short_input": "Short", "Fib Wedge": "Cuneo Fib", "Line": "Linea", "Session": "Sessione", "Down fractals_input": "Down fractals", "Fib Retracement": "Ritracciamento Fibonacci", "smalen2_input": "smalen2", "isCentered_input": "isCentered", "Border": "Bordo", "Klinger Oscillator_study": "Klinger Oscillatore", "Absolute": "Assoluto", "Tue": "Mar", "Style": "Stile", "Show Left Scale": "Mostra scala sinistra", "SMI Ergodic Indicator/Oscillator_study": "SMI Ergodic Indicator/Oscillator", "Aug": "Ago", "Last available bar": "Ultima barra disponibile", "Manage Drawings": "Gestisci disegni", "Analyze Trade Setup": "Impostazione analizzatore trade", "No drawings yet": "Nessun disegno disponibile", "SMI_input": "SMI", "Chande MO_input": "Chande MO", "jawLength_input": "jawLength", "TRIX_study": "TRIX", "Show Bars Range": "Visualizza intervallo barre", "RVGI_input": "RVGI", "Last edited ": "Ultima modifica ", "signalLength_input": "signalLength", "%s ago_time_range": "%s fa", "Reset Settings": "Ripristina impostazioni", "PnF": "P&F", "d_dates": "d", "Are you sure?": "Sei sicuro?", "August": "Agosto", "Recalculate After Order filled": "Ricalcola dopo Attivazione Ordine", "Source_compare": "Sorgente", "Down bars": "Barre giù", "Correlation Coefficient_study": "Coefficiente di Correlazione", "Delayed": "In differita", "Bottom Labels": "Etichette in basso", "Text color": "Colore testo", "Levels": "Livelli", "Short Length_input": "Short Length", "teethLength_input": "teethLength", "Visible Range_study": "Intervallo visibile", "Open {{symbol}} Text Note": "Apri Nota {{symbol}}", "October": "Ottobre", "Lock All Drawing Tools": "Blocca tutti gli strumenti di disegno", "Long_input": "Long", "Right End": "Estremità destra", "Show Symbol Last Value": "Visualizza ultimo valore simbolo", "Head & Shoulders": "Testa & Spalle", "Do you really want to delete Study Template '{0}' ?": "Vuoi cancellare il Modello di Studio '{0}' ?", "Favorite Drawings Toolbar": "Barra strumenti disegno preferiti", "Properties...": "Proprietà...", "Reset Scale": "Ripristina scala", "MA Cross_study": "Incrocio Media Mobile", "Trend Angle": "Angolo Trend", "Snapshot": "Istantanea", "Crosshair": "Mirino", "Signal line period_input": "Signal line period", "Timezone/Sessions Properties...": "Proprietà fuso orario/sessioni", "Quantity": "Quantità", "Price Volume Trend_study": "Volume Prezzo Trend", "Auto Scale": "Scala automatica", "hour": "ora", "Delete chart layout": "Cancella configurazione grafico", "Text": "Testo", "F_data_mode_forbidden_letter": "F", "Risk/Reward long": "Rischio/rendimento long", "Long RoC Length_input": "Long RoC Length", "Length3_input": "Periodo3", "+DI_input": "+DI", "Length_input": "Periodo", "Use one color": "Usa un colore", "Chart Properties": "Proprietà grafico", "No Overlapping Labels_scale_menu": "Nessuna etichetta sovrapposta", "Exit Full Screen (ESC)": "Esci da Schermo Intero (ESC)", "MACD_study": "MACD", "Show Economic Events on Chart": "Mostra eventi economici sul grafico", "Moving Average_study": "Media Mobile", "Show Wave": "Mostra onda", "Failure back color": "Colore sfondo non riuscito", "Below Bar": "Sotto la barra", "Time Scale": "Scala temporale", "

Only D, W, M intervals are supported for this symbol/exchange. You will be automatically switched to a D interval. Intraday intervals are not available because of exchange policies.

": "

Solo gli intervalli G, S, M sono supportati per questo simbolo/borsa. Sarai automaticamente passato a un intervallo G. Gli intervalli intraday non sono disponibili a causa delle politiche di borsa.

", "Extend Left": "Estendi a sinistra", "Date Range": "Range data", "Min Move": "Mov min", "Price format is invalid.": "Il formato quotazioni non è valido.", "Show Price": "Visualizza Prezzo", "Level_input": "Level", "Commodity Channel Index_study": "Commodity Channel Index", "Elder's Force Index_input": "Elder's Force Index", "Gann Square": "Quadrato Gann", "Format": "Proprietà", "Color bars based on previous close": "Colore basato sulla chiusura precedente", "Change band background": "Cambia Sfondo Banda", "Target: {0} ({1}) {2}, Amount: {3}": "Target: {0} ({1}) {2}, Quantità: {3}", "This chart layout has a lot of objects and can't be published! Please remove some drawings and/or studies from this chart layout and try to publish it again.": "Questo grafico ha troppi oggetti e non può essere pubblicato! Rimuovi alcuni strumenti di disegno e/o strategie e riprova a pubblicare.", "Anchored Text": "Testo ancorato", "Long length_input": "Long length", "Edit {0} Alert...": "Modifica allarme {0} ....", "Previous Close Price Line": "Linea Prezzo Chiusura Precedente", "Up Wave 5": "Su Onda 5", "Qty: {0}": "Q.tà: {0}", "Aroon_study": "Aroon", "show MA_input": "show MA", "Lead 1_input": "Lead 1", "Short Position": "Posizione short", "SMALen1_input": "SMALen1", "P_input": "P", "Apply Default": "Applica predefinito", "SMALen3_input": "SMALen3", "Average Directional Index_study": "Average Directional Index", "Fr_day_of_week": "Ven", "Invite-only script. Contact the author for more information.": "Script solo-su-invito. Contatta l'autore per maggiori informazioni.", "Curve": "Curva", "a year": "un anno", "Target Color:": "Colore Target:", "Bars Pattern": "Modello a barre", "D_input": "D", "Font Size": "Dimensione caratteri", "Create Vertical Line": "Crea retta verticale", "p_input": "p", "Rotated Rectangle": "Rettangolo ruotato", "Chart layout name": "Nome configurazione grafico", "Fib Circles": "Cerchi Fib", "Apply Manual Decision Point": "Applica un punto di decisione manuale", "Dot": "Punto", "Target back color": "Colore sfondo Target", "All": "Tutto", "orders_up to ... orders": "orders", "Dot_hotkey": "Punto", "Lead 2_input": "Lead 2", "Save image": "Salva immagine", "Move Down": "Muovi in basso", "Unlock": "Sblocca", "Box Size": "Grandezza box", "Navigation Buttons": "Controlli navigazione", "Miniscule": "Minuscolo", "Apply": "Applica", "Down Wave 3": "Onda giù 3", "Plots Background_study": "Plots Background", "Marketplace Add-ons": "Mercatino Add-ons", "Sine Line": "Curva Sinusoidale", "Fill": "Riempi", "%d day": "%d giorno", "Hide": "Nascondi", "Toggle Maximize Chart": "Espandi grafico", "Target text color": "Colore testo Target", "Scale Left": "Scala a sinistra", "Elliott Wave Subminuette": "Onda Elliott subminuette", "Color based on previous close_input": "Colore basato sulla chiusura precedente", "Down Wave C": "Onda giù C", "Countdown": "Conto alla rovescia", "UO_input": "UO", "Pyramiding": "Piramidale", "Go to Date...": "Vai alla data...", "Text Alignment:": "Allineamento testo:", "R_data_mode_realtime_letter": "R", "Extend Lines": "Estendi linee", "Conversion Line_input": "Conversion Line", "March": "Marzo", "Su_day_of_week": "Dom", "Exchange": "Borsa", "Arcs": "Archi", "Regression Trend": "Trend regressione", "Fib Spiral": "Spirale Fib", "Double EMA_study": "Doppia EMA", "minute": "minuto", "All Indicators And Drawing Tools": "Tutti gli indicatori e tutti i strumenti di disegno", "Indicator Last Value": "Ultimo valore indicatore", "Sync drawings to all charts": "Sincronizza il disegno a tutti i grafici", "Change Average HL value": "Variazione valori Media HL", "Stop Color:": "Colore Stop", "Stay in Drawing Mode": "Rimani in modalità disegno", "Bottom Margin": "Margine inferiore", "Save Chart Layout saves not just some particular chart, it saves all charts for all symbols and intervals which you are modifying while working with this Layout": "Salva layout grafico non salva solo un particolare grafico, ma tutti i grafici, di tutti i simboli e intervalli, che sono stati modificati con questo layout", "Average True Range_study": "Average True Range", "Max value_input": "Max value", "MA Length_input": "MA Length", "Invite-Only Scripts": "Scripts Invite-Only", "in %s_time_range": "tra %s", "Extend Bottom": "Estendi sotto", "sym_input": "sym", "DI Length_input": "DI Length", "Rome": "Roma", "Scale": "Scala", "Periods_input": "Periods", "Arrow": "Freccia", "Square": "Quadrato", "Basis_input": "Basis", "Arrow Mark Down": "Segno freccia giù", "lengthStoch_input": "lengthStoch", "Objects Tree": "Albero Oggetti", "Remove from favorites": "Rimuovi dai preferiti", "Show Symbol Previous Close Value": "Mostra Linea Prezzo Chiusura Precedente", "Scale Series Only": "Scala solo serie", "Source text color": "Colore testo Origine", "Simple": "Semplice", "Report a data issue": "Segnala errore di dati", "Arnaud Legoux Moving Average_study": "Arnaud Legoux Media Mobile", "Smoothed Moving Average_study": "Media Mobile Smussata", "Lower Band_input": "Lower Band", "Verify Price for Limit Orders": "Verifica Prezzo per gli Ordini", "VI +_input": "VI +", "Line Width": "Larghezza linea", "Contracts": "Contratti", "Always Show Stats": "Visualizza sempre le statistiche", "Down Wave 4": "Onda giù 4", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "Simple ma(signal line)", "Change Interval...": "Cambia periodo...", "Public Library": "Libreria Pubblica", " Do you really want to delete Drawing Template '{0}' ?": " Vuoi cancellare il Modello disegno '{0}' ?", "Sat": "Sab", "Left Shoulder": "Spalla sinistra", "week": "settimana", "CRSI_study": "CRSI", "Close message": "Chiudi messaggio", "Jul": "Lug", "Base currency": "Valuta base", "Show Drawings Toolbar": "Mostra Barra Strumenti Disegno", "Chaikin Oscillator_study": "Chaikin Oscillatore", "Price Source": "Fonte prezzo", "Market Open": "Mercato aperto", "Color Theme": "Tema Colore", "Projection up bars": "Barre a proiezione superiore", "Awesome Oscillator_study": "Oscillatore Awesome", "Bollinger Bands Width_input": "Bollinger Bands Width", "Q_input": "Q", "long_input": "long", "Error occured while publishing": "Si è verificato un errore durante la pubblicazione", "Fisher_input": "Fisher", "Color 1_input": "Colore 1", "Moving Average Weighted_study": "Media Mobile Ponderata", "Save": "Salva", "Type": "Tipo", "Wick": "Ombra", "Accumulative Swing Index_study": "Indice Accumulative Swing", "Load Chart Layout": "Carica configurazione grafico", "Show Values": "Mostra valori", "Fib Speed Resistance Fan": "Linee a ventaglio di Fibonacci", "Bollinger Bands Width_study": "Ampiezza Bande Bollinger", "This chart layout has more than 1000 drawings, which is a lot! This may negatively affect performance, storage and publishing. We recommend to remove some drawings to avoid potential performance issues.": "Questo grafico ha più di 1000 disegni che sono molti. Un numero elevato di disegni potrebbe influire negativamente sulle performance, sull'archiviazione e sulla pubblicazione. Ti consigliamo di eliminare alcuni disegni per evitare eventuali problemi di performance.", "Left End": "Estremità sinistra", "%d year": "%d anno", "Always Visible": "Sempre visibile", "S_data_mode_snapshot_letter": "S", "Elliott Wave Circle": "Ciclo delle onde di Elliott", "Earnings breaks": "Separatori utili", "Change Minutes From": "Cambia minuti da", "Do not ask again": "Non chiedere ancora", "Displacement_input": "Displacement", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "Upper Deviation", "XABCD Pattern": "Pattern XABCD", "Schiff Pitchfork": "Pitchfork Schiff", "Copied to clipboard": "Copiato negli appunti", "HLC Bars": "Barre HLC", "Flipped": "Invertita", "DEMA_input": "DEMA", "Move_input": "Move", "NV_input": "NV", "Choppiness Index_study": "Choppiness Index", "Study Template '{0}' already exists. Do you really want to replace it?": "Modello di Studio '{0}' gia' esistente. Vuoi sostituirlo?", "Merge Down": "Unisci in basso", " per contract": " per contratto", "Overlay the main chart": "Sovrapponi sul grafico principale", "Screen (No Scale)": "Schermo (senza scala)", "Delete": "Elimina", "Save Indicator Template As": "Salva Modello Indicatore Come", "Length MA_input": "Length MA", "percent_input": "percent", "September": "Settembre", "{0} copy": "{0} copia", "Avg HL in minticks": "Media HL in miniticks", "Accumulation/Distribution_input": "Accumulazione/Distribuzione", "Sync": "Sincronizza", "C_in_legend": "C (Chiusura)", "Weeks_interval": "Settimane", "smoothK_input": "smoothK", "Percentage_scale_menu": "Percentuale", "Change Extended Hours": "Cambia orari estesi", "MOM_input": "MOM", "h_interval_short": "h", "Change Interval": "Cambia periodo", "Change area background": "Modifica lo sfondo", "Modified Schiff": "Schiff modificato", "top": "alto", "Custom color...": "Colore personalizzato...", "Send Backward": "Sposta indietro", "Mexico City": "Città del Messico", "TRIX_input": "TRIX", "Show Price Range": "Visualizza Intervallo prezzo", "Elliott Major Retracement": "Ritracciamento maggiore Elliott", "ASI_study": "ASI", "Notification": "Notifica", "Fri": "Ven", "just now": "ora", "Forecast": "Previsione", "Fraction part is invalid.": "La frazione non è valida.", "Connecting": "Connettendo", "Ghost Feed": "Proiezione fantasma", "Signal_input": "Signal", "Histogram_input": "Histogram", "The Extended Trading Hours feature is available only for intraday charts": "La funzionalità orari di negoziazione estesi è disponibile solo per i grafici intraday", "Stop syncing": "Interrompi sincronizzazione", "open": "apertura", "StdDev_input": "StdDev", "EMA Cross_study": "EMA Cross", "Conversion Line Periods_input": "Conversion Line Periods", "Oversold_input": "Ipervenduto", "My Scripts": "I miei Scripts", "Monday": "Lunedì", "Add Symbol_compare_or_add_symbol_dialog": "Aggiungi simbolo", "Williams %R_study": "Williams %R", "Symbol": "Simbolo", "a month": "un mese", "Precision": "Precisione", "depth_input": "depth", "Go to": "Vai a", "Please enter chart layout name": "Inserisci nome configurazione grafico", "VWAP_study": "VWAP", "Date": "Data", "Format...": "Proprietà...", "__dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__dayName__\n__specialSymbolOpen__a__specialSymbolClose__ __dayTime__", "Toggle Maximize Pane": "Espandi riquadro", "Search": "Cerca", "Zig Zag_study": "Zig Zag", "Actual": "Attuale", "SUCCESS": "OPERAZIONE RIUSCITA", "Long period_input": "Long period", "length_input": "length", "roclen4_input": "roclen4", "Price Line": "Linea quotazioni", "Area With Breaks": "Area interrotta", "Zoom Out": "Rimpicciolisci", "Stop Level. Ticks:": "Livello Stop. Ticks:", "Window Size_input": "Window Size", "Economy & Symbols": "Economia & Simboli", "Circle Lines": "Linee Cerchi", "Visual Order": "Ordine visualizzazione", "__specialSymbolOpen__Yesterday at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Ieri a__specialSymbolClose____dayTime__", "Stop Background Color": "Colore sfondo Stop", "1. Slide your finger to select location for first anchor
2. Tap anywhere to place the first anchor": "1. Trascina il dito per selezionare la posizione del primo punto di ancoraggio
2. Tocca per stabilire il primo punto di ancoraggio", "Sector": "Settore", "powered by TradingView": "fornito da TradingView", "Text:": "Testo:", "Stochastic_study": "Stocastico", "Sep": "Set", "TEMA_input": "TEMA", "Apply WPT Up Wave": "Applica onde crescenti WPT", "Min Move 2": "Mov min 2", "Extend Left End": "Estendi estremità sinistra", "Projection down bars": "Barre a proiezione inferiore", "Advance/Decline_study": "Advance/Decline", "Any Number": "Qualsiasi numero", "Flag Mark": "Segno bandiera", "Drawings": "Disegni", "Cancel": "Annulla", "Compare or Add Symbol": "Confronta o aggiungi simbolo", "Redo": "Ripeti", "Hide Drawings Toolbar": "Nascondi Barra Strumenti Disegno", "Ultimate Oscillator_study": "Ultimate Oscillatore", "Vert Grid Lines": "Linee vert. griglia", "Growing_input": "Growing", "Angle": "Angolo", "Plot_input": "Plot", "Color 8_input": "Colore 8", "Indicators, Fundamentals, Economy and Add-ons": "Indicatori, fondamentali, economia e componenti aggiuntivi", "h_dates": "h", "ROC Length_input": "ROC Length", "roclen3_input": "roclen3", "Overbought_input": "Ipercomprato", "Extend Top": "Estendi sopra", "Change Minutes To": "Cambia minuti a", "No study templates saved": "Non ci sono modelli studi salvati", "Trend Line": "Linea trend", "TimeZone": "Fuso orario", "Your chart is being saved, please wait a moment before you leave this page.": "Sto salvando il grafico, aspettare un momento prima di lasciare la pagina.", "Percentage": "Percentuale", "Tu_day_of_week": "Mar", "RSI Length_input": "Periodo RSI", "Triangle": "Triangolo", "Line With Breaks": "Linea interrotta", "Period_input": "Period", "Watermark": "Filigrana", "Trigger_input": "Trigger", "SigLen_input": "SigLen", "Extend Right": "Estendi a destra", "Color 2_input": "Colore 2", "Show Prices": "Visualizza Prezzi", "Copy": "Copia", "Arc": "Arco", "Edit Order": "Modifica ordine", "January": "Gennaio", "Arrow Mark Right": "Segno freccia dx", "Extend Alert Line": "Estendi linea allarme", "Background color 1": "Colore sfondo 1", "RSI Source_input": "Fonte RSI", "Close Position": "Chiudi posizione", "Stop syncing drawing": "Disabilita sincronia disegni", "Visible on Mouse Over": "Visibile al passaggio del mouse", "MA/EMA Cross_study": "MA/EMA Cross", "Thu": "Gio", "Vortex Indicator_study": "Indicatore Vortex", "view-only chart by {user}": "guarda solo grafico di {user}", "ROCLen1_input": "ROCLen1", "M_interval_short": "M", "Chaikin Oscillator_input": "Chaikin Oscillator", "Price Levels": "Livelli prezzo", "Show Splits": "Mostra split", "Zero Line_input": "Zero Line", "Replay Mode": "Modalità Replay", "__specialSymbolOpen__Today at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Oggi a__specialSymbolClose____dayTime__", "Increment_input": "Increment", "Days_interval": "Giorni", "Show Right Scale": "Mostra scala destra", "Show Alert Labels": "Mostra etichette alert", "Historical Volatility_study": "Volatilità Storica", "Lock": "Blocca", "length14_input": "length14", "High": "Massimo", "ext": "est", "Date and Price Range": "Range data e prezzo", "Polyline": "Polilinea", "Reconnect": "Riconnetti", "Lock/Unlock": "Blocca/Sblocca", "Base Level": "Livello base", "Saturday": "Sabato", "Symbol Last Value": "Ultimo valore simbolo", "Above Bar": "Sopra la barra", "Studies": "Studi", "Color 0_input": "Colore 0", "Add Symbol": "Aggiungi simbolo", "maximum_input": "maximum", "Wed": "Mer", "Paris": "Parigi", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "VWMA_study": "VWMA", "fastLength_input": "fastLength", "Time Levels": "Livelli tempo", "Width": "Larghezza", "Loading": "Caricamento", "Template": "Modello", "Use Lower Deviation_input": "Use Lower Deviation", "Up Wave 3": "Su Onda 3", "Parallel Channel": "Canale parallelo", "Time Cycles": "Cicli temporali", "Second fraction part is invalid.": "Seconda frazione non valida.", "Divisor_input": "Divisor", "Down Wave 1 or A": "Onda giù 1 o A", "ROC_input": "ROC", "Dec": "Dic", "Ray": "Raggio", "Extend": "Estendi", "length7_input": "length7", "Bring Forward": "Sposta avanti", "Bottom": "Fondo", "Berlin": "Berlino", "Undo": "Annulla", "Original": "Originale", "Mon": "Lun", "Right Labels": "Etichette destra", "Long Length_input": "Long Length", "True Strength Indicator_study": "True Strength Indicatore", "%R_input": "%R", "There are no saved charts": "Non ci sono grafici salvati", "Instrument is not allowed": "Strumento non consentito", "bars_margin": "barre", "Decimal Places": "Posizioni decimali", "Show Indicator Last Value": "Visualizza ultimo valore indicatore", "Initial capital": "Capitale iniziale", "Show Angle": "Visualizza angolo", "Mass Index_study": "Mass Index", "More features on tradingview.com": "Ancora più funzioni su tradingview.com", "Objects Tree...": "Albero Oggetti...", "Remove Drawing Tools & Indicators": "Elimina strumenti di disegno e indicatori", "Length1_input": "Periodo1", "Always Invisible": "Sempre invisibile", "Circle": "Cerchio", "Days": "Giorni", "x_input": "x", "Save As...": "Salva con nome", "Elliott Double Combo Wave (WXY)": "Onda di Elliott doppia combo (WXY)", "Parabolic SAR_study": "SAR Parabolico", "Any Symbol": "Qualsiasi simbolo", "Variance": "Varianza", "Stats Text Color": "Colore testo Statistiche", "Minutes": "Minuti", "Short RoC Length_input": "Short RoC Length", "Projection": "Proiezione", "Jan": "Gen", "Jaw_input": "Jaw", "Right": "Destra", "Help": "Aiuto", "Coppock Curve_study": "Curva Coppock", "Reversal Amount": "Ammontare di inversione", "Reset Chart": "Ripristina grafico", "Marker Color": "Colore evidenziatore", "Sunday": "Domenica", "Left Axis": "Asse sinistro", "Open": "Apertura", "YES": "SÌ", "longlen_input": "longlen", "Moving Average Exponential_study": "Media Mobile Esponenziale", "Source border color": "Colore bordo Origine", "Redo {0}": "Ripeti {0}", "Cypher Pattern": "Cypher pattern", "s_dates": "s", "Open Interval Dialog": "Apri Finestra intervallo", "Triangle Pattern": "Pattern a triangolo", "Balance of Power_study": "Balance of Power", "EOM_input": "EOM", "Shapes_input": "Shapes", "Apply Manual Risk/Reward": "Applica rischio/rendimento manuale", "Market Closed": "Mercato Chiuso", "Indicators": "Indicatori", "q_input": "q", "You are notified": "Hai ricevuto una notifica", "Font Icons": "Font icone", "%D_input": "%D", "Border Color": "Colore bordo", "Offset_input": "Offset", "Risk": "Rischio", "Price Scale": "Scala quotazioni", "HV_input": "HV", "Seconds": "Secondi", "Start_input": "Inizia", "Elliott Impulse Wave (12345)": "Onda di Elliott impulsiva (12345)", "Hours": "Ore", "Send to Back": "Porta in secondo piano", "Color 4_input": "Colore 4", "Angles": "Angoli", "Prices": "Prezzi", "Hollow Candles": "Candele vuote", "July": "Luglio", "Create Horizontal Line": "Crea retta orizzontale", "Minute": "Minuto", "Cycle": "Ciclo", "ADX Smoothing_input": "ADX Smoothing", "One color for all lines": "Un colore per tutte le linee", "m_dates": "m", "Settings": "Impostazioni", "Candles": "Candele", "We_day_of_week": "Mer", "Width (% of the Box)": "Ampiezza (% del grafico)", "%d minute": "%d minuto", "Go to...": "Vai a...", "Pip Size": "Dimensione Pip", "Wednesday": "Mercoledì", "This drawing is used in alert. If you remove the drawing, the alert will be also removed. Do you want to remove the drawing anyway?": "Il disegno è associato a un alert. Se rimuovi il disegno, anche l'alert sarà rimosso. Vuoi comunque rimuovere il disegno?", "Show Countdown": "Mostra conto alla rovescia", "Show alert label line": "Mostra linea etichetta alert", "Down Wave 2 or B": "Onda giù 2 o B", "MA_input": "MA", "Length2_input": "Periodo2", "not authorized": "non autorizzato", "Session Volume_study": "Volume di sessione", "Image URL": "URL Immagine", "SMI Ergodic Oscillator_input": "SMI Ergodic Oscillator", "Show Objects Tree": "Mostra albero oggetti", "Primary": "Primario", "Price:": "Prezzo:", "Bring to Front": "Porta in primo piano", "Brush": "Pennello", "Not Now": "Non ora", "Yes": "Sì", "C_data_mode_connecting_letter": "C", "SMALen4_input": "SMALen4", "Apply Default Drawing Template": "Applica Modello disegno predefinito", "Compact": "Compatto", "Save As Default": "Salva come predefinito", "Target border color": "Colore bordo Target", "Invalid Symbol": "Simbolo non valido", "Inside Pitchfork": "Pitchfork Inside", "yay Color 1_input": "yay Color 1", "Quandl is a huge financial database that we have connected to TradingView. Most of its data is EOD and is not updated in real-time, however the information may be extremely useful for fundamental analysis.": "Quandl è un enorme database finanziario che abbiamo collegato a TradingView. La maggior parte dei dati sono EOD e non sono aggiornati in tempo reale, tuttavia le informazioni potrebbero comunque essere estremamente utili nell'analisi dei fondamentali.", "Hide Marks On Bars": "Nascondi note sulle barre", "Cancel Order": "Annulla ordine", "Hide All Drawing Tools": "Nascondi tutti gli strumenti di disegno", "WMA Length_input": "WMA Length", "Show Dividends on Chart": "Mostra dividendi sul grafico", "Show Executions": "Mostra esecuzioni", "Borders": "Bordi", "Remove Indicators": "Elimina Indicatori", "loading...": "caricando....", "Closed_line_tool_position": "Chiuso", "Rectangle": "Rettangolo", "Change Resolution": "Cambia risoluzione", "Indicator Arguments": "Agomenti indicatore", "Symbol Description": "Descrizione simbolo", "Chande Momentum Oscillator_study": "Chande Momentum Oscillatore", "Degree": "Gradi", " per order": " per ordine", "Line - HL/2": "Linea - HL/2", "Supercycle": "SuperCiclo", "Jun": "Giu", "Least Squares Moving Average_study": "Least Squares Media Mobile", "Change Variance value": "Modifica valore Varianza", "powered by ": "fornito da ", "Source_input": "Fonte", "Change Seconds To": "Cambia da secondi a", "%K_input": "%K", "Scales Text": "Testo Scala assi", "Please enter template name": "Inserisci il nome del modello", "Symbol Name": "Nome simbolo", "Events Breaks": "Separatori eventi", "Study Templates": "Modelli Studio", "Months": "Mesi", "Symbol Info...": "Informazioni simbolo...", "Elliott Wave Minor": "Onda Elliott minore", "Cross": "Croce", "Measure (Shift + Click on the chart)": "Misura (Shift + clic sul grafico)", "Override Min Tick": "Sovrascrivi Tick Min", "Show Positions": "Mostra posizioni", "Dialog": "Discussione", "Add To Text Notes": "Aggiungi al blocco note", "Elliott Triple Combo Wave (WXYXZ)": "Onda di Elliot tripla combo (WXYXZ)", "Multiplier_input": "Multiplier", "Risk/Reward": "Rischio/Rendimento", "Base Line Periods_input": "Base Line Periods", "Show Dividends": "Mostra dividendi", "Relative Strength Index_study": "Relative Strength Index", "Modified Schiff Pitchfork": "Pitchfork Schiff modificata", "Top Labels": "Etichette in alto", "Show Earnings": "Mostra utili", "Line - Open": "Linea - Aperta", "Elliott Triangle Wave (ABCDE)": "Onde di Elliot triangolo (ABCDE)", "Minuette": "Minuetto", "Text Wrap": "Testo a capo", "Reverse Position": "Inverti posizione", "Elliott Minor Retracement": "Ritracciamento minore Elliott", "DPO_input": "DPO", "Th_day_of_week": "Gio", "Slash_hotkey": "Slash", "No symbols matched your criteria": "Nessun simbolo corrisponde ai criteri", "Icon": "Icona", "lengthRSI_input": "lengthRSI", "Tuesday": "Martedì", "Teeth Length_input": "Teeth Length", "Indicator_input": "Indicatore", "Athens": "Atene", "Fib Speed Resistance Arcs": "Archi Fib", "Content": "Contenuto", "middle": " mezzo", "Lock Cursor In Time": "Fissa cursore al tempo", "Intermediate": "Intermedio", "Eraser": "Cancellino", "Relative Vigor Index_study": "Relative Vigor Index", "Envelope_study": "Envelope", "Pre Market": "Pre Mercato", "Horizontal Line": "Retta orizzontale", "O_in_legend": "O (Apertura)", "Confirmation": "Conferma", "HL Bars": "Barre HL", "Lines:": "Linee:", "Hide Favorite Drawings Toolbar": "Nascondi barra strumenti disegno preferiti", "Buenos Aires": "Buenos Aires ", "useTrueRange_input": "useTrueRange", "Profit Level. Ticks:": "Livello profitto. Tick:", "Show Date/Time Range": "Visualizza Intervallo data/ora", "Level {0}": "Livello {0}", "Favorites": "Preferiti", "Horz Grid Lines": "Linee orizz. griglia", "-DI_input": "-DI", "Price Range": "Range prezzo", "day": "giorno", "deviation_input": "deviation", "Account Size": "Dimensione conto", "Value_input": "Valore", "Time Interval": "Intervallo", "Success text color": "Colore Testo riuscito", "ADX smoothing_input": "ADX smoothing", "%d hour": "%d ora", "Order size": "Grandezza ordine", "Drawing Tools": "Strumenti di disegno", "Save Drawing Template As": "Salva Modello disegno come", "Traditional": "Tradizionale", "Chaikin Money Flow_study": "Chaikin Money Flow", "Ease Of Movement_study": "Ease Of Movement", "Defaults": "Predefiniti", "Percent_input": "Percent", "Interval is not applicable": "Intervallo non valido", "short_input": "short", "Visual settings...": "Impostazioni visualizzazione...", "RSI_input": "RSI", "Chatham Islands": "Isole Chatham", "Detrended Price Oscillator_input": "Detrended Price Oscillator", "Mo_day_of_week": "Lun", "Up Wave 4": "Su Onda 4", "center": "centro", "Vertical Line": "Linea verticale", "Show Splits on Chart": "Mostra split sul grafico", "Sorry, the Copy Link button doesn't work in your browser. Please select the link and copy it manually.": "Spiacenti, il tasto Copia Link non funziona con il tuo browser. Selezionare il link desiderato e copiarlo manualmente.", "Levels Line": "Linea livelli", "Events & Alerts": "Eventi & Alert", "May": "Maggio", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "Aroon Down", "Add To Watchlist": "Aggiungi alla watchlist", "Total": "Totale", "Price": "Prezzo", "left": "sinistra", "Lock scale": "Blocca scala", "Limit_input": "Limit", "Change Days To": "Cambia giorni in", "Price Oscillator_study": "Oscillatore Prezzo", "smalen1_input": "smalen1", "Drawing Template '{0}' already exists. Do you really want to replace it?": "Modello disegno '{0}' già esistente. Sostituirlo?", "Show Middle Point": "Mostra punto centrale", "KST_input": "KST", "Extend Right End": "Estendi estremità destra", "Fans": "Ventagli", "Line - Low": "Linea - In basso", "Price_input": "Prezzo", "Gann Fan": "Ventaglio Gann", "Weeks": "Settimane", "McGinley Dynamic_study": "McGinley Dynamic", "Relative Volatility Index_study": "Relative Volatility Index", "Source Code...": "Codice sorgente...", "PVT_input": "PVT", "Show Hidden Tools": "Mostra strumenti nascosti", "Hull Moving Average_study": "Hull Media Mobile", "Symbol Prev. Close Value": "Valore Chiusura Precedente", "{0} chart by TradingView": "{0} grafico da TradingView", "Right Shoulder": "Spalla destra", "Remove Drawing Tools": "Elimina strumenti di disegno", "Friday": "Venerdì", "Zero_input": "Zero", "Company Comparison": "Comparazione simboli", "Stochastic Length_input": "Stochastic Length", "mult_input": "mult", "URL cannot be received": "L'URL non può essere ricevuto", "Success back color": "Colore Sfondo riuscito", "E_data_mode_end_of_day_letter": "E", "Trend-Based Fib Extension": "Estensione Fibonacci", "Top": "Alto", "Double Curve": "Curva doppia", "Stochastic RSI_study": "Stocastico RSI", "Horizontal Ray": "Semiretta orizzontale", "smalen3_input": "smalen3", "Symbol Labels": "Etichette simbolo", "Script Editor...": "Editor script", "Trades on Chart": "Trades sul Grafico", "Listed Exchange": "Quotato in borsa", "Error:": "Errore:", "Fullscreen mode": "Modalità schermo intero", "Add Text Note For {0}": "Aggiungi nota per {0}", "K_input": "K", "Do you really want to delete Drawing Template '{0}' ?": "Vuoi davvero cancellare il Modello disegno '{0}' ?", "ROCLen3_input": "ROCLen3", "Restore Size": "Ripristina dimensione", "Text Color": "Colore Testo", "Rename Chart Layout": "Rinomina Configurazione grafico", "Built-ins": "Integrati", "Background color 2": "Colore sfondo 2", "Drawings Toolbar": "Barra degli strumenti di disegno", "New Zealand": "Nuova Zelanda", "CHOP_input": "CHOP", "Apply Defaults": "Applica predefiniti", "% of equity": "% del patrimonio netto", "Extended Alert Line": "Linea estesa allarme", "Note": "Nota", "Moving Average Channel_study": "Canale media mobile", "like": "mi piace", "Show": "Mostra", "{0} bars": "{0} barre", "Lower_input": "Lower", "Created ": "Creato ", "Warning": "Avviso", "Elder's Force Index_study": "Indice Elder's Force", "Show Earnings on Chart": "Mostra utili sul grafico", "ATR_input": "ATR", "Low": "Minimo", "Bollinger Bands %B_study": "Bande di Bollinger %B", "Time Zone": "Fuso orario", "right": "destra", "%d month": "%d mese", "Wrong value": "Valore errato", "Upper Band_input": "Upper Band", "Sun": "Dom", "start_input": "start", "No indicators matched your criteria.": "Nessun indicatore corrisponde ai criteri", "Commission": "Commissione", "Down Color": "Colore giù", "Short length_input": "Short length", "Triple EMA_study": "Tripla EMA", "Technical Analysis": "Analisi tecnica", "Show Text": "Visualizza Testo", "Channel": "Canale", "FXCM CFD data is available only to FXCM account holders": "I dati FXCM CFD sono disponibili solo per i possessori di account FXCM", "Lagging Span 2 Periods_input": "Lagging Span 2 Periods", "Connecting Line": "Linea giuntura", "bottom": "basso", "Teeth_input": "Teeth", "Sig_input": "Sig", "Open Manage Drawings": "Apri Gestisci disegni", "Save New Chart Layout": "Salva nuovo layout grafico", "Fib Channel": "Canale Fib", "Save Drawing Template As...": "Salva Modello disegno come...", "Minutes_interval": "Minuti", "Up Wave 2 or B": "Su Onda 2 o B", "Columns": "Colonne", "Directional Movement_study": "Movimento Direzionale", "roclen2_input": "roclen2", "Apply WPT Down Wave": "Applica onde decrescenti WPT", "Not applicable": "Non applicabile", "Bollinger Bands %B_input": "Bollinger Bands %B", "Default": "Predefinito", "Template name": "Nome modello", "Indicator Values": "Valori indicatore", "Lips Length_input": "Lips Length", "Toggle Log Scale": "Seleziona/Deseleziona scala logaritmica", "L_in_legend": "L (Minimo)", "Remove custom interval": "Rimuovi intervallo personalizzato", "shortlen_input": "shortlen", "Quotes are delayed by {0} min": "Quotazioni in ritardo di {0} min", "Hide Events on Chart": "Nascondi eventi sul grafico", "Williams Alligator_study": "Williams Alligator", "Profit Background Color": "Colore sfondo profitto", "Bar's Style": "Tipo di grafico", "Exponential_input": "Exponential", "Down Wave 5": "Onda giù 5", "Previous": "Precedente", "Stay In Drawing Mode": "Rimani in modalità disegno", "Comment": "Commento", "Connors RSI_study": "Connors RSI", "Bars": "Barre", "Show Labels": "Visualizza etichette", "Flat Top/Bottom": "Cima/Fondo piatto", "Symbol Type": "Categoria simbolo", "December": "Dicembre", "Lock drawings": "Blocca disegni", "Border color": "Colore bordo", "Change Seconds From": "Cambia in Secondi da", "Left Labels": "Etichette sinistra", "Insert Indicator...": "Inserisci indicatore...", "ADR_B_input": "ADR_B", "Paste %s": "Incolla %s", "Change Symbol...": "Cambia simbolo...", "Timezone": "Fuso orario", "Invite-only script. You have been granted access.": "Script invite-only. Ti è stato dato l'accesso.", "Color 6_input": "Colore 6", "Oct": "Ott", "ATR Length": "Periodo ATR", "{0} financials by TradingView": "{0} dati finanziari da TradingView", "Extend Lines Left": "Estendi linee a sinistra", "Source back color": "Colore sfondo Origine", "Transparency": "Trasparenza", "June": "Giugno", "Cyclic Lines": "Linee cicliche", "length28_input": "length28", "ABCD Pattern": "Pattern ABCD", "When selecting this checkbox the study template will set \"__interval__\" interval on a chart": "Quando selezioni questa casella, il modello di studio verrà impostato su \"__interval__\" intervallo sul grafico", "Add": "Aggiungi", "OC Bars": "Barre OC", "Millennium": "Millennio", "On Balance Volume_study": "On Balance Volume", "Apply Indicator on {0} ...": "Applica indicatore su {0} ...", "NEW": "NUOVO", "Chart Layout Name": "Nome configurazione grafico", "Up bars": "Barre su", "Hull MA_input": "Hull MA", "Lock Scale": "Blocca scala", "distance: {0}": "distanza {0}", "Extended": "Esteso", "Three Drives Pattern": "Pattern Three Drives", "Median_input": "Median", "Top Margin": "Margine superiore", "Up fractals_input": "Up fractals", "Insert Drawing Tool": "Inserisci strumento di disegno", "OHLC Values": "Valori OHLC", "Correlation_input": "Correlation", "Session Breaks": "Separatori sessione", "Add {0} To Watchlist": "Aggiungi {0} alla watchlist", "Anchored Note": "Nota ancorata", "lipsLength_input": "lipsLength", "Apply Indicator on {0}": "Applica indicatore su {0}", "UpDown Length_input": "UpDown Length", "Price Label": "Etichetta quotazioni", "November": "Novembre", "Balloon": "Fumetto", "Track time": "Traccia tempo", "Background Color": "Colore sfondo", "an hour": "un'ora", "Right Axis": "Asse destro", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "slowLength", "Click to set a point": "Clicca per definire un punto", "Save Indicator Template As...": "Salva Modello Indicatore Come..", "n/a": "n.d.", "Indicator Titles": "Titoli indicatore", "Failure text color": "Colore testo non riuscito", "Sa_day_of_week": "Sab", "Net Volume_study": "Volumi Netti", "Error": "Errore", "Edit Position": "Modifica posizione", "RVI_input": "RVI", "Centered_input": "Centered", "Recalculate On Every Tick": "Ricalcola ad ogni Tick", "Left": "Sinistra", "Simple ma(oscillator)_input": "Simple ma(oscillator)", "Compare": "Confronta", "Fisher Transform_study": "Fisher Transform", "Show Orders": "Mostra ordini", "Zoom In": "Ingrandisci", "Length EMA_input": "Length EMA", "Enter a new chart layout name": "Inserisci nome nuova configurazione grafico", "Signal Length_input": "Signal Length", "FAILURE": "OPERAZIONE NON RIUSCITA", "Point Value": "Valore punto", "D_interval_short": "D", "MA with EMA Cross_study": "MA with EMA Cross", "Price Channel_study": "Canale prezzo", "Close": "Chiusura", "ParabolicSAR_input": "ParabolicSAR", "Log Scale_scale_menu": "Scala logaritmica", "MACD_input": "MACD", "Do not show this message again": "Non mostrare più questo messaggio", "No Overlapping Labels": "Nessuna etichetta sovrapposta", "Arrow Mark Left": "Segno freccia sx", "Slow length_input": "Slow length", "Line - Close": "Linea - Chiusura", "Confirm Inputs": "Conferma input", "Open_line_tool_position": "Aperto", "Lagging Span_input": "Lagging Span", "Subminuette": "Sotto-Minuetto", "Thursday": "Giovedì", "Elliott Correction Wave (ABC)": "Onda di Elliott correttiva (ABC)", "Error while trying to create snapshot.": "Errore nel creare l' istantanea", "Label Background": "Sfondo etichetta", "Templates": "Modelli", "Please report the issue or click Reconnect.": "Per favore segnala il problema o clicca Riconnetti", "Normal": "Normale", "Signal Labels": "Etichette di segnale", "Delete Text Note": "Elimina nota di testo", "compiling...": "compilando...", "Detrended Price Oscillator_study": "Detrended Price Oscillatore", "Color 5_input": "Colore 5", "Fixed Range_study": "Intervallo fisso", "Up Wave 1 or A": "Su Onda 1 o A", "Scale Price Chart Only": "Scala solo grafico prezzo", "Unmerge Up": "Separa verso l'alto", "auto_scale": "auto", "Short period_input": "Short period", "Background": "Sfondo", "Up Color": "Colore Su", "Apply Elliot Wave Intermediate": "Applica un'onda di Elliot intermedia", "VWMA_input": "VWMA", "Lower Deviation_input": "Lower Deviation", "Save Interval": "Salva Periodo", "February": "Febbraio", "Reverse": "Inverti", "Oops, something went wrong": "Oops, qualcosa è andato storto", "Add to favorites": "Aggiungi ai preferiti", "Median": "Mediana", "ADX_input": "ADX", "Remove": "Elimina", "len_input": "len", "Arrow Mark Up": "Segno freccia su", "April": "Aprile", "Active Symbol": "Simbolo attivo", "Extended Hours": "Orari estesi", "Crosses_input": "Crosses", "Middle_input": "Middle", "Read our blog for more info!": "Leggi il nostro blog per saperne di più.", "Sync drawing to all charts": "Sincronizza disegni di tutti i grafici", "LowerLimit_input": "LowerLimit", "Know Sure Thing_study": "Know Sure Thing", "Copy Chart Layout": "Copia configurazione grafico", "Compare...": "Confronta...", "1. Slide your finger to select location for next anchor
2. Tap anywhere to place the next anchor": "1. Trascina il dito per selezionare la posizione del successivo punto di ancoraggio
2. Tocca per stabilire il successivo punto di ancoraggio", "Text Notes are available only on chart page. Please open a chart and then try again.": "Il blocco note è disponibile solo alla pagina del grafico. apri un grafico e poi riprova.", "Color": "Colore", "Aroon Up_input": "Aroon Up", "Apply Elliot Wave Major": "Applica un'onda di Elliot maggiore", "Scales Lines": "Linee Scala assi", "Type the interval number for munute charts (i.e. 5 if it is going to be a five minute chart). Or number plus letter for H (Hourly), D (Daily), W (Weekly), M (Monthly) intervals (i.e. D or 2H)": "Digita l'intervallo di minuti che desideri vedere (ad esempio se digiti 5 avrai un grafico 5-min). Oppure puoi digitare un numero seguito da una lettera tra H (Orario), D (Giornaliero), W (Settimanale), M (Mensile) per cambiare timeframe (ad esempio \"2H\" sarà un grafico 2-ore)", "Ellipse": "Ellisse", "Up Wave C": "Su Onda C", "Show Distance": "Visualizza distanza", "Risk/Reward Ratio: {0}": "Rapporto rischio/rendimento: {0}", "Volume Oscillator_study": "Oscillatore Volumi", "Williams Fractal_study": "Williams Fractal", "Merge Up": "Unisci in alto", "Right Margin": "Margine destro", "Moscow": "Mosca", "Warsaw": "Varsavia"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/ja.json b/static/Kline/charting_library/static/localization/translations/ja.json new file mode 100644 index 0000000..94db6a9 --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/ja.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "ティック", "Months_interval": "月足", "Realtime": "リアルタイム", "Callout": "呼び出し", "Sync to all charts": "全てのチャートに同期する", "month": "月", "London": "ロンドン", "roclen1_input": "変化率期間1", "Unmerge Down": "重ねずに下へ移動", "Percents": "パーセント", "Search Note": "ノートを検索", "Minor": "マイナー", "Do you really want to delete Chart Layout '{0}' ?": "チャートレイアウト '{0}' を本当に消去しますか?", "Quotes are delayed by {0} min and updated every 30 seconds": "データは{0}分遅れておりリ30秒毎で更新されています。", "Magnet Mode": "マグネットモード", "Grand Supercycle": "グランドスーパーサイクル", "OSC_input": "OSC(オシレーター)", "Hide alert label line": "アラートラベルのラインを非表示", "Volume_study": "出来高", "Lips_input": "唇", "Show real prices on price scale (instead of Heikin-Ashi price)": "平均足ではなく実際の価格スケールで表示する。", "Histogram": "ヒストグラム", "Base Line_input": "基準線", "Step": "ステップ", "Insert Study Template": "スタディテンプレートを入れる", "Fib Time Zone": "フィボナッチ・タイムゾーン", "SMALen2_input": "単純移動平均期間2", "Bollinger Bands_study": "ボリンジャーバンド", "Nov": "11月", "Show/Hide": "表示/非表示", "Upper_input": "上方", "exponential_input": "指数", "Move Up": "上に移動", "Symbol Info": "シンボル情報", "This indicator cannot be applied to another indicator": "このインジケーターは他のインジケータに適用できません", "Scales Properties...": "スケールプロパティ...", "Count_input": "カウント", "Full Circles": "完全な円", "Ashkhabad": "アシュカバッド", "OnBalanceVolume_input": "オンバランスボリューム", "Cross_chart_type": "クロス", "H_in_legend": "高値", "a day": "日", "Pitchfork": "ピッチフォーク", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "累積/分配", "Rate Of Change_study": "変化率", "in_dates": ":", "Clone": "複製", "Color 7_input": "色 7", "Chop Zone_study": "Chopゾーン", "Bar #": "バー番号", "Scales Properties": "スケールプロパティ", "Trend-Based Fib Time": "トレンドに基づくフィボナッチ時間", "Remove All Indicators": "すべてのインディケータを削除", "Oscillator_input": "オシレーター", "Last Modified": "最終更新", "yay Color 0_input": "yay 色0", "Labels": "ラベル", "Chande Kroll Stop_study": "Chande Krollストップ", "Hours_interval": "時間足", "Allow up to": "上へ", "Scale Right": "右スケール", "Money Flow_study": "マネーフロー", "siglen_input": "シグナルの長さ", "Indicator Labels": "インジケーターラベル", "__specialSymbolOpen__Tomorrow at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__明日の__specialSymbolClose____dayTime__", "Hide All Drawing Tools": "すべての描画ツールを非表示", "Toggle Percentage": "%トグル", "Remove All Drawing Tools": "すべての描画ツールを削除", "Remove all line tools for ": "全ラインツールを削除", "Linear Regression Curve_study": "線形回帰曲線", "Symbol_input": "シンボル", "Currency": "通貨", "increment_input": "インクリメント", "Compare or Add Symbol...": "比較、またはシンボルの追加...", "__specialSymbolOpen__Last__specialSymbolClose__ __dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__最新の__specialSymbolClose____dayTime__\n__specialSymbolOpen__の__specialSymbolClose____dayTime__", "Save Chart Layout": "チャートレイアウトを保存", "Number Of Line": "線の数", "Label": "ラベル", "Post Market": "市場終了後", "second": "秒", "Change Hours To": "時間を変更", "smoothD_input": "スムースD", "Falling_input": "下落", "X_input": "X", "Risk/Reward short": "リスク/リワード・ショート", "Donchian Channels_study": "Donchianチャネル", "Entry price:": "エントリー価格:", "Circles": "円", "Head": "ヘッド", "Stop: {0} ({1}) {2}, Amount: {3}": "逆指値:{0}{1}{2}、量:{3}", "Mirrored": "垂直反転", "Ichimoku Cloud_study": "一目雲", "Signal smoothing_input": "シグナルの平滑化", "Use Upper Deviation_input": "上方偏差を使う", "Toggle Auto Scale": "自動スケールトグル", "Grid": "グリッド", "Triangle Down": "下向き三角", "Apply Elliot Wave Minor": "エリオット波動マイナーの適用", "Slippage": "スリッページ", "Smoothing_input": "平滑化", "Color 3_input": "色 3", "Jaw Length_input": "顎長", "Almaty": "アルマトイ", "Inside": "内側", "Delete all drawing for this symbol": "このシンボル状のすべての描画を削除", "Fundamentals": "ファンダメンタル", "Keltner Channels_study": "ケルトナーチャネル", "Long Position": "ロングポジション", "Bands style_input": "バンドのスタイル", "Undo {0}": "{0}をもとに戻す", "With Markers": "マーカー", "Momentum_study": "モメンタム", "MF_input": "マネーフロー", "Gann Box": "ギャン・ボックス", "Switch to the next chart": "次のチャートに切り替える", "charts by TradingView": "TradingViewによるチャート", "Fast length_input": "高速長", "Apply Elliot Wave": "エリオット波動の適用", "Disjoint Angle": "非連結の角度チャンネル", "Supermillennium": "スーパーミレニウム", "W_interval_short": "週", "Show Only Future Events": "将来のイベントのみを表示", "Log Scale": "ログスケール", "Line - High": "ライン - 高値", "Zurich": "チューリッヒ", "Equality Line_input": "分布線", "Short_input": "ショート", "Fib Wedge": "フィボナッチ・ウェッジ", "Line": "ライン", "Session": "セッション", "Down fractals_input": "下向きフラクタル", "Fib Retracement": "フィボナッチ・リトレースメント", "smalen2_input": "単純移動平均期間2", "isCentered_input": "中心にある", "Border": "枠", "Klinger Oscillator_study": "Klinger オシレーター", "Absolute": "絶対値", "Tue": "火曜日", "Style": "スタイル", "Show Left Scale": "左のスケールを表示する", "SMI Ergodic Indicator/Oscillator_study": "SMIエルゴードインジケーター/オシレーター ", "Aug": "8月", "Last available bar": "最後のバー", "Manage Drawings": "描画アイテムの管理", "Analyze Trade Setup": "トレード解析の設定", "No drawings yet": "未描画", "SMI_input": "SMI", "Chande MO_input": "シャンデモメンタムオシレーター", "jawLength_input": "jaw長", "TRIX_study": "TRIXトリックス", "Show Bars Range": "バー範囲を表示", "RVGI_input": "RVGI(相対活力指数)", "Last edited ": "最終編集", "signalLength_input": "シグナルの長さ", "%s ago_time_range": "%s 前", "Reset Settings": "設定をリセット", "PnF": "ポイントアンドフィギュア", "Renko": "練行足", "d_dates": "日", "Point & Figure": "ポイント&フィギュア", "August": "8月", "Recalculate After Order filled": "注文約定後に再計算", "Source_compare": "ソース", "Down bars": "下降バー", "Correlation Coefficient_study": "補正係数", "Delayed": "遅延", "Bottom Labels": "下ラベル", "Text color": "フォントカラー", "Levels": "レベル", "Length_input": "長さ", "Short Length_input": "ショートの長さ", "teethLength_input": "歯長", "Visible Range_study": "Visible Range", "Delete": "削除", "Hong Kong": "香港", "Text Alignment:": "テキスト揃え:", "Open {{symbol}} Text Note": "{{symbol}}メモを開く", "October": "10月", "Lock All Drawing Tools": "すべての描画ツールをロックする", "Long_input": "ロング", "Right End": "右端", "Show Symbol Last Value": "シンボルの最終値を表示", "Head & Shoulders": "ヘッド&ショルダー", "Do you really want to delete Study Template '{0}' ?": "学習用テンプレート{0}を消去しますか?", "Favorite Drawings Toolbar": "お気に入りの描画ツールバー", "Properties...": "プロパティ ...", "Reset Scale": "スケールをリセット", "MA Cross_study": "移動平均線の交差", "Trend Angle": "トレンド角", "Snapshot": "スナップショット", "Crosshair": "クロスヘアー", "Signal line period_input": "シグナル線の期間", "Timezone/Sessions Properties...": "タイムゾーン/セッションのプロパティ...", "Line Break": "ラインブレイク", "Quantity": "数量", "Price Volume Trend_study": "プライス出来高トレンド", "Auto Scale": "自動スケール", "hour": "時間", "Delete chart layout": "チャートのレイアウトを削除する。", "Text": "テキスト", "F_data_mode_forbidden_letter": "F(禁止)", "Risk/Reward long": "リスク/リワード比・ロング", "Apr": "4月", "Long RoC Length_input": "ロングの長さ変化率", "Length3_input": "期間3", "+DI_input": "+DI", "Madrid": "マドリード", "Use one color": "一つの色を使って下さい", "Chart Properties": "チャートプロパティ", "No Overlapping Labels_scale_menu": "ラベルを重ねない", "Exit Full Screen (ESC)": "フルスクリーンを終了(ESC)", "MACD_study": "MACD", "Show Economic Events on Chart": "チャート上に経済イベントを表示", "Moving Average_study": "移動平均線", "Show Wave": "波を表示する", "Failure back color": "失敗の場合の背景色", "Below Bar": "バーの下", "Time Scale": "時間スケール", "

Only D, W, M intervals are supported for this symbol/exchange. You will be automatically switched to a D interval. Intraday intervals are not available because of exchange policies.

": "

このシンボル・取引所は、D、W、Mの時間足のみ対応しています。自動的に、日足に切り替えられます。イントラデーは、取引所のポリシーにより利用できません。

", "Extend Left": "左端の拡張", "Date Range": "日付範囲", "Min Move": "最小の動き", "Price format is invalid.": "値段のフォーマットが無効です。", "Show Price": "価格表示", "Level_input": "レベル", "Angles": "角度", "Hide Favorite Drawings Toolbar": "お気に入り描画ツールバーを非表示", "Commodity Channel Index_study": "商品チャンネル指数(CCI)", "Elder's Force Index_input": "エルダーフォース指数", "Gann Square": "ギャン・スクウェア", "Phoenix": "フェニックス", "Format": "設定", "Color bars based on previous close": "前バーの終値に基づいたバーの色", "Change band background": "背景バンドの変更", "Target: {0} ({1}) {2}, Amount: {3}": "ターゲット:{0}{1}{2}、量:{3}", "Zoom Out": "ズームアウト", "Anchored Text": "リンク", "Long length_input": "ロングの長さ", "Edit {0} Alert...": "アラート{0}を編集...", "Previous Close Price Line": "直前の終値ライン", "Up Wave 5": "上昇波 5", "Qty: {0}": "数量:{0}", "Heikin Ashi": "平均足", "Aroon_study": "アーロン", "show MA_input": "移動平均を表示", "Industry": "業界", "Lead 1_input": "先行1", "Short Position": "ショートポジション", "SMALen1_input": "単純移動平均期間1", "P_input": "P", "Apply Default": "デフォルト適用", "SMALen3_input": "単純移動平均期間3", "Average Directional Index_study": "ADI", "Fr_day_of_week": "金曜", "Invite-only script. Contact the author for more information.": "招待者のみへの公開スクリプト。投稿者へ連絡して下さい。", "Curve": "曲線", "a year": "一年", "Target Color:": "ターゲットの色:", "Bars Pattern": "バーのパターン", "D_input": "日", "Font Size": "フォントサイズ", "Create Vertical Line": "垂直線を作成", "p_input": "p", "Rotated Rectangle": "傾斜長方形", "Chart layout name": "チャートレイアウト名", "Fib Circles": "フィボナッチ・サークル", "Apply Manual Decision Point": "マニュアルの決定ポイントを設定", "Dot": "ドット", "Target back color": "ターゲットの背景色", "All": "すべて", "orders_up to ... orders": "注文", "Dot_hotkey": "ドット", "Lead 2_input": "先行2", "Save image": "画像の保存", "Move Down": "下に移動", "Triangle Up": "上向き三角", "Box Size": "ボックスのサイズ", "Navigation Buttons": "ナビゲーションボタン", "Miniscule": "極小", "Apply": "適用", "Down Wave 3": "下落波 3", "Plots Background_study": "線を描く根拠", "Marketplace Add-ons": "マーケットプレイス アドオン", "Sine Line": "サイン曲線", "Fill": "記入", "%d day": "%d日", "Hide": "非表示", "Toggle Maximize Chart": "チャート最大化トグル", "Target text color": "ターゲットのテキスト色", "Scale Left": "左スケール", "Elliott Wave Subminuette": "エリオット波動サブミニュエット", "Color based on previous close_input": "直前終値を基に色分け", "Down Wave C": "下落波 C", "Countdown": "カウントダウン", "UO_input": "UO(アルティメットオシレーター)", "Pyramiding": "ピラミッティング", "Source back color": "背景色のソース", "Go to Date...": "日付指定", "Sao Paulo": "サンパウロ", "R_data_mode_realtime_letter": "R(リアルタイム)", "Extend Lines": "拡張ライン", "Conversion Line_input": "転換線", "March": "3月", "Su_day_of_week": "日曜", "Exchange": "取引所", "My Scripts": "マイスクリプト", "Arcs": "円弧", "Regression Trend": "回帰トレンド", "Short RoC Length_input": "ショートの長さ変化率", "Fib Spiral": "フィボナッチ・スパイラル", "Double EMA_study": "2重EMA", "minute": "分", "All Indicators And Drawing Tools": "すべてのインディケーター、すべての描画ツール", "Indicator Last Value": "インジケーターの終値", "Sync drawings to all charts": "全てのチャートに描画を同期する", "Change Average HL value": "平均 HL 値の変更", "Stop Color:": "逆指値の色:", "Stay in Drawing Mode": "描画モードを維持", "Bottom Margin": "下マージン", "Dubai": "ドバイ", "Save Chart Layout saves not just some particular chart, it saves all charts for all symbols and intervals which you are modifying while working with this Layout": "「チャートレイアウトを保存」は、特定のチャートを保存することではありません。現在お使いのレイアウトでのシンボル、時間足などすべての変更を保存します。", "Average True Range_study": "平均の真の変動幅", "Max value_input": "最大値", "MA Length_input": "移動平均の長さ", "Invite-Only Scripts": "招待者のみ公開", "in %s_time_range": "in %s", "UpperLimit_input": "上限", "sym_input": "シンボル", "DI Length_input": "DIの長さ", "Rome": "ローマ", "Scale": "スケール", "Periods_input": "期間", "Arrow": "矢印", "useTrueRange_input": "トゥルーレンジ使用", "Basis_input": "基準", "Arrow Mark Down": "下矢印", "lengthStoch_input": "長さ", "Taipei": "台北", "Objects Tree": "情報ツリー", "Remove from favorites": "お気に入りから削除", "Show Symbol Previous Close Value": "通貨ペアの直前終値の表示", "Scale Series Only": "スケール列のみ", "Source text color": "テキスト色のソース", "Simple": "シンプル", "Report a data issue": "データの問題を報告", "Arnaud Legoux Moving Average_study": "Arnaud Legoux 移動平均", "Smoothed Moving Average_study": "スムース・移動平均線", "Lower Band_input": "下方帯", "Verify Price for Limit Orders": "指値の価格確認", "VI +_input": "ボラティリティ指数+", "Line Width": "ライン幅", "Contracts": "先物契約", "Always Show Stats": "常に統計表示", "Down Wave 4": "下落波 4", "ROCLen2_input": "変化率期間2", "Simple ma(signal line)_input": "単純移動平均(シグナル線)", "Change Interval...": "時間足の変更 ...", "Public Library": "公開ライブラリ", " Do you really want to delete Drawing Template '{0}' ?": " 図のテンプレート '{0}' を本当に消去しますか?", "Sat": "土曜日", "Left Shoulder": "左ショルダー", "week": "週", "CRSI_study": "CRSI", "Close message": "メッセージを閉じる", "Jul": "7月", "Value_input": "Value", "Show Drawings Toolbar": "描画ツールバーを表示", "Chaikin Oscillator_study": "Chaikin オシレーター", "Price Source": "価格のソース", "Market Open": "市場開始", "Color Theme": "カラーテーマ", "Projection up bars": "上昇足予測", "Awesome Oscillator_study": "Awesomeオシレーター", "Bollinger Bands Width_input": "ボリンジャーバンド幅", "Q_input": "Q", "long_input": "ロング", "Error occured while publishing": "投稿中にエラーが発生しました", "Fisher_input": "フィッシャー", "Color 1_input": "色 1", "Moving Average Weighted_study": "加重移動平均線", "Save": "保存", "Type": "タイプ", "Wick": "ヒゲ", "Accumulative Swing Index_study": "Accumulative Swing Index", "Load Chart Layout": "チャートレイアウトを読み込み", "Show Values": "価格を表示", "Fib Speed Resistance Fan": "フィボナッチ・スピード抵抗ファン", "Bollinger Bands Width_study": "ボリンジャーバンド幅", "This chart layout has more than 1000 drawings, which is a lot! This may negatively affect performance, storage and publishing. We recommend to remove some drawings to avoid potential performance issues.": "チャートのレイアウトは1000以上あります。これはサイトのパフォーマンス、ストレージと公開されえたコンテンツに影響を与えることがあります。パフォーマンスに問題がある際はいくつかの描画を削除することを推奨します。", "Left End": "左端", "%d year": "%d年", "Always Visible": "常に非表示", "S_data_mode_snapshot_letter": "S(スナップショット)", "Flag": "フラッグ", "Elliott Wave Circle": "エリオット波動サークル", "Earnings breaks": "損益分岐点", "Change Minutes From": "分に変更する", "Do not ask again": "何度も聞かないで下さい", "MTPredictor": "MTPredictor ", "Displacement_input": "置換", "smalen4_input": "単純移動平均期間4", "CCI_input": "CCI", "Upper Deviation_input": "上方偏差", "(H + L)/2": "(高値+ 安値)/2", "XABCD Pattern": "XABCDパターン", "Schiff Pitchfork": "シフ・ピッチフォーク", "Copied to clipboard": "クリップボードにコピーされました", "hl2": "高値安値平均", "Flipped": "水平反転", "DEMA_input": "日足指数平滑移動平均線", "Move_input": "Move", "NV_input": "正味価額", "Choppiness Index_study": "Choppinessインデックス", "Study Template '{0}' already exists. Do you really want to replace it?": "学習用テンプレート{0}は既に存在します。本当に上書きしますか?", "Merge Down": "下へ重ねる", "Th_day_of_week": "木曜日", " per contract": "契約毎", "Overlay the main chart": "メインチャートに重ねる", "Screen (No Scale)": "スクリーン(スケールなし)", "Three Drives Pattern": "3ドライブパターン", "Save Indicator Template As": "インジケーターのテンプレートを保存", "Length MA_input": "移動平均線の長さ", "percent_input": "パーセント", "September": "9月", "{0} copy": "{0}をコピー", "Avg HL in minticks": "平均高値安値のティック数", "Accumulation/Distribution_input": "買い集め/ 売り抜け", "Sync": "同期", "C_in_legend": "終値", "Weeks_interval": "週足", "smoothK_input": "スムースK", "Percentage_scale_menu": "パーセント", "Change Extended Hours": "時間外取引を変更する", "MOM_input": "モメンタムオシレーター", "h_interval_short": "時間", "Change Interval": "時間足の変更", "Change area background": "背景エリアの変更", "Modified Schiff": "変形 シッフ", "top": "上", "Adelaide": "アデレード", "Send Backward": "最背面へ移動", "Mexico City": "メキシコシティ", "TRIX_input": "TRIXトリックス(三重指数移動平均オシレーター)", "Show Price Range": "価格レンジの表示", "Elliott Major Retracement": "エリオット・メジャーリトレースメント", "ASI_study": "ASI", "Notification": "通知", "Fri": "金曜日", "just now": "たった今", "Forecast": "予測", "Fraction part is invalid.": "小数部分が無効です。", "Connecting": "接続中", "Ghost Feed": "ゴースト配信", "Signal_input": "シグナル", "Histogram_input": "ヒストグラム", "The Extended Trading Hours feature is available only for intraday charts": "時間外取引の機能は、イントラデーのチャートでのみ利用できます。", "Stop syncing": "同期を停止する", "open": "オープン", "StdDev_input": "標準偏差", "EMA Cross_study": "EMAの交差", "Conversion Line Periods_input": "転換線の期間", "Diamond": "ダイアモンド", "Brisbane": "ブリスベン", "Monday": "月曜日", "Add Symbol_compare_or_add_symbol_dialog": "Add Symbol", "Williams %R_study": "ウィリアムス%R", "Symbol": "シンボル", "a month": "月", "Precision": "精度", "depth_input": "深さ", "Go to": "日付指定", "Please enter chart layout name": "チャートレイアウトの名前を入力してください", "Mar": "3月", "VWAP_study": "VWAP出来高加重平均", "Offset": "オフセット", "Date": "日付", "Format...": "設定 ...", "__dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__dayName____dayTime____specialSymbolClose__で__specialSymbolOpen__", "Toggle Maximize Pane": "チャート最大化トグル", "Search": "検索", "Zig Zag_study": "ジグザグ", "Actual": "現在", "SUCCESS": "成功", "Long period_input": "ロングの期間", "length_input": "長さ", "roclen4_input": "変化率期間4", "Price Line": "価格ライン", "Area With Breaks": "エリアをブレイク", "Median_input": "中央値", "Stop Level. Ticks:": "逆指値レベル ティック:", "Window Size_input": "ウィンドウの大きさ", "Economy & Symbols": "簡潔性、記号", "Circle Lines": "円ライン", "Visual Order": "表示の並び順", "__specialSymbolOpen__Yesterday at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__昨日の__specialSymbolClose____dayTime__", "Stop Background Color": "逆指値幅の背景色", "1. Slide your finger to select location for first anchor
2. Tap anywhere to place the first anchor": "1. 最初のアンカーの場所を選択するためにスライドさせます。
2. 最初のアンカーを置く場所をタップします。", "Sector": "業種", "powered by TradingView": "提供元 TradingView", "Text:": "テキスト:", "Stochastic_study": "ストキャスティクス", "Sep": "9月", "TEMA_input": "TEMA(三重指数移動平均)", "Apply WPT Up Wave": "WPTアップウェーブを適用", "Min Move 2": "最小の動き2", "Extend Left End": "左端の拡張", "Projection down bars": "下降足予測", "Advance/Decline_study": "上昇/下降", "New York": "ニューヨーク", "Flag Mark": "フラッグマーク", "Drawings": "描画アイテム", "Cancel": "キャンセル", "Compare or Add Symbol": "比較、またはシンボルの追加", "Redo": "やり直し", "Hide Drawings Toolbar": "描画アイテムツールバーを非表示", "Ultimate Oscillator_study": "究極オシレーター", "Vert Grid Lines": "垂直線グリッドライン", "Growing_input": "増大", "Angle": "角度", "Plot_input": "プロット", "Chicago": "シカゴ", "Color 8_input": "色 8", "Indicators, Fundamentals, Economy and Add-ons": "インジケーター、ファンダメンタル、経済指標、アドオン", "h_dates": "時間", "ROC Length_input": "ROC Length", "roclen3_input": "変化率期間3", "Overbought_input": "買われ過ぎ", "DPO_input": "トレンド除去価格オシレーター", "Change Minutes To": "分数を変更", "No study templates saved": "保存されたスタディテンプレートはありません。", "Trend Line": "トレンドライン", "TimeZone": "タイムゾーン", "Your chart is being saved, please wait a moment before you leave this page.": "あなたのチャートは保存されました。このページを切り替える前に、数秒待ってください。", "Percentage": "%", "Tu_day_of_week": "火曜日", "RSI Length_input": "RSI(相対力指数)の長さ", "Triangle": "三角", "Line With Breaks": "ラインをブレイク", "Period_input": "期間", "Watermark": "透かし", "Trigger_input": "トリガー", "SigLen_input": "シグナルの長さ", "Extend Right": "右端の拡張", "Color 2_input": "色 2", "Show Prices": "価格表示", "Unlock": "ロック解除", "Copy": "コピー", "high": "高値", "Arc": "円弧", "Edit Order": "注文を編集", "January": "1月", "Arrow Mark Right": "右矢印", "Extend Alert Line": "アラートラインを延長", "Background color 1": "背景色1", "RSI Source_input": "RSI(相対力指数)ソース", "Close Position": "ポジション決済", "Any Number": "数字", "Stop syncing drawing": "描画の同期を停止", "Visible on Mouse Over": "マウスの移動時に表示", "MA/EMA Cross_study": "移動平均線とEMA(指数平滑移動平均線)の交差", "Thu": "木曜日", "Vortex Indicator_study": "Vortex", "view-only chart by {user}": "{user}による読込専用チャート", "ROCLen1_input": "変化率期間1", "M_interval_short": "月", "Chaikin Oscillator_input": "チャイキンオシレーター", "Price Levels": "価格レベル", "Show Splits": "分割を表示", "Zero Line_input": "ゼロ線", "Replay Mode": "返答モード", "__specialSymbolOpen__Today at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__今日の__specialSymbolClose____dayTime__", "Increment_input": "インクリメント", "Days_interval": "日足", "Show Right Scale": "右のスケールを表示する", "Show Alert Labels": "アラートラベル表示", "Historical Volatility_study": "ボラタリティ履歴", "Lock": "ロック", "length14_input": "長さ14", "High": "高値", "ext": "時間外", "Date and Price Range": "日付と価格範囲", "Polyline": "折れ線", "Reconnect": "再接続", "Lock/Unlock": "ロック/解除", "HLC Bars": "HCLバー", "Price Channel_study": "プライス・チャネル", "Label Down": "ラベル下", "Saturday": "土曜日", "Symbol Last Value": "シンボルの終値", "Above Bar": "バーの上", "Studies": "スタデイ", "Color 0_input": "色 0 ", "Add Symbol": "シンボルの追加", "maximum_input": "最大", "Wed": "水曜日", "Paris": "パリ", "D_data_mode_delayed_letter": "D(遅延)", "Sigma_input": "シグマ", "VWMA_study": "VWMA出来高加重平均", "fastLength_input": "短期", "Time Levels": "時間レベル", "Width": "幅", "Sunday": "日曜日", "Loading": "読み込み中", "Template": "テンプレート", "Use Lower Deviation_input": "下方偏差を使う", "Up Wave 3": "上昇波 3", "Parallel Channel": "平行チャネル", "Time Cycles": "時間サイクル", "Second fraction part is invalid.": "小数部分が無効です。", "Divisor_input": "因数", "Down Wave 1 or A": "下落波 1 または A", "ROC_input": "変化率", "Dec": "12月", "Ray": "レイ", "Extend": "拡張", "length7_input": "長さ7", "Bring Forward": "一つ上に移動", "Bottom": "下", "Berlin": "ベルリン", "Undo": "取り消す", "Original": "オリジナル", "Mon": "月曜日", "Right Labels": "右ラベル", "Long Length_input": "ロングの長さ", "True Strength Indicator_study": "真力指数", "%R_input": "%R", "There are no saved charts": "保存されたチャートはありません", "Instrument is not allowed": "この商品は出来ません", "bars_margin": "バー", "Decimal Places": "小数の桁", "Show Indicator Last Value": "インディケーターの値を表示", "Initial capital": "初期資金", "Show Angle": "角度表示", "Mass Index_study": "Mass インデックス", "More features on tradingview.com": "TradingViewの更なる特徴", "Objects Tree...": "情報ツリー", "Remove Drawing Tools & Indicators": "作図ツールとインジケーターを削除", "Length1_input": "期間1", "Always Invisible": "常に非表示", "Circle": "円", "Days": "日", "x_input": "x", "Save As...": "名前を付けて保存 ...", "Elliott Double Combo Wave (WXY)": "エリオット波動 複合型(WXY)", "Parabolic SAR_study": "パラボリックSAR", "Any Symbol": "シンボル", "Variance": "変数", "Stats Text Color": "テキスト色", "Minutes": "分", "Williams Alligator_study": "Williams アリゲーター", "Projection": "投影", "Custom color...": "色の変更 ...", "Jan": "1月", "Jaw_input": "顎", "Right": "右", "Help": "ヘルプ", "Coppock Curve_study": "Coppock 曲線", "Reversal Amount": "反転の大きさ", "Reset Chart": "チャートをリセット", "Marker Color": "マーカーの色", "Fans": "ファン", "Left Axis": "左軸", "Open": "始値", "YES": "はい", "longlen_input": "ロングの長さ", "Moving Average Exponential_study": "指数移動平均", "Source border color": "枠色のソース", "Redo {0}": "{0}をやり直し", "Cypher Pattern": "サイファーパターン", "s_dates": "s", "Caracas": "カラカス", "Area": "エリア", "Triangle Pattern": "三角パターン", "Balance of Power_study": "バランスオブパワー", "EOM_input": "イーズ オブ ムーブメント", "Shapes_input": "型", "Oversold_input": "売られ過ぎ", "Apply Manual Risk/Reward": "手動での損失/利益(リスク/リワード)を設定", "Market Closed": "市場終了", "Sydney": "シドニー", "Indicators": "インジケーター", "close": "終値", "q_input": "q", "You are notified": "あなたは通知されました。", "Font Icons": "アイコンフォント", "%D_input": "%D", "Border Color": "枠色", "Offset_input": "オフセット", "Risk": "リスク", "Price Scale": "価格スケール", "HV_input": "ヒストリカルボラティリティ", "Seconds": "秒", "Settings": "設定", "Start_input": "スタート", "Elliott Impulse Wave (12345)": "エリオットインパルス波動(12345)", "Hours": "時間", "Send to Back": "一つ下に移動", "Color 4_input": "色 4", "Los Angeles": "ロサンジェルス", "Prices": "価格", "Hollow Candles": "中空ろうそく足", "July": "7月", "Create Horizontal Line": "水平ラインを作成", "Minute": "分", "Cycle": "サイクル", "ADX Smoothing_input": "ADX平滑化", "One color for all lines": "全てのラインを1つの色にする", "m_dates": "分", "(H + L + C)/3": "(高値+ 安値+終値)/3", "Candles": "ローソク足", "We_day_of_week": "水曜日", "Width (% of the Box)": "幅(箱の%)", "%d minute": "%d分", "Go to...": "日付指定", "Pip Size": "Pipサイズ", "Wednesday": "水曜日", "This drawing is used in alert. If you remove the drawing, the alert will be also removed. Do you want to remove the drawing anyway?": "この描画アイテムは、あるアラートに使われています。もし描画アイテムを削除するのであれば、アラートも削除されます。アイテムを削除しますか?", "Show Countdown": "カウントダウン表示", "Show alert label line": "アラートラベルラインを表示", "Down Wave 2 or B": "下落波 2 または B", "MA_input": "移動平均", "Length2_input": "期間2", "not authorized": "認証されていません", "Session Volume_study": "Session Volume", "Image URL": "画像 URL", "Submicro": "サブミクロ", "SMI Ergodic Oscillator_input": "SMIエルゴディックオシレーター", "Show Objects Tree": "情報ツリーの表示", "Primary": "プライマリー", "Price:": "価格:", "Bring to Front": "最上面へ移動", "Brush": "ブラシ", "Not Now": "あとで", "Yes": "はい", "C_data_mode_connecting_letter": "C(接続中)", "SMALen4_input": "単純移動平均期間4", "Apply Default Drawing Template": "デフォルト描画テンプレートを適用", "Compact": "コンパクトな", "Save As Default": "デフォルトを保存", "Target border color": "ターゲットの枠色", "Invalid Symbol": "不明なシンボル", "Inside Pitchfork": "インサイド・ピッチフォーク", "yay Color 1_input": "yay 色1", "Quandl is a huge financial database that we have connected to TradingView. Most of its data is EOD and is not updated in real-time, however the information may be extremely useful for fundamental analysis.": "QuandlはTradingViewに接続されている大きな金融データベースです。殆どのデータは終日データでありリアルタイムデータではございませんが、ファンダメンタル分析を行うにあたり大変便利な情報です。", "Hide Marks On Bars": "バーの上のマーカーを非表示", "Cancel Order": "注文をキャンセル", "Kagi": "カギ足", "WMA Length_input": "加重移動平均の期間", "Show Dividends on Chart": "チャート上に配当を表示", "Show Executions": "約定を表示", "Borders": "枠", "Remove Indicators": "インジケーターを削除", "loading...": "読み込み中 ...", "Closed_line_tool_position": "終了", "Rectangle": "長方形", "Change Resolution": "時間足を変更", "Indicator Arguments": "インジケータの引数", "Symbol Description": "シンボル詳細", "Chande Momentum Oscillator_study": "Chande モメンタムオシレーター", "Degree": "角度", " per order": "注文毎", "Line - HL/2": "ライン - HL/2", "Supercycle": "スーパーサイクル", "Jun": "6月", "Least Squares Moving Average_study": "最小二乗法移動平均", "Change Variance value": "変数の変更", "powered by ": "提供元", "Source_input": "ソース", "Change Seconds To": "秒へ変える", "%K_input": "%K", "Scales Text": "スケールテキスト", "Toronto": "トロント", "Please enter template name": "テンプレート名を入力してください。", "Symbol Name": "シンボル名", "Tokyo": "東京", "Events Breaks": "ブレイクイベント", "San Salvador": "サンサルバドル ", "Months": "か月", "Symbol Info...": "シンボル情報...", "Elliott Wave Minor": "エリオット波動マイナー", "Cross": "交差", "Measure (Shift + Click on the chart)": "測定 (Shift+チャート上をクリック)", "Override Min Tick": "小数点表示", "Show Positions": "ポジション表示", "Dialog": "ダイアログ", "Add To Text Notes": "テキストノートへ追加", "Elliott Triple Combo Wave (WXYXZ)": "エリオットトリプルコンボ波動(WXYXZ)", "Multiplier_input": "乗数", "Risk/Reward": "リスク・リワード", "Base Line Periods_input": "基準線の期間", "Show Dividends": "配当を表示", "Relative Strength Index_study": "RSI", "Modified Schiff Pitchfork": "変形 シフ・ピッチフォーク", "Top Labels": "上ラベル", "Show Earnings": "収益を表示", "Line - Open": "ライン - 開始値", "Elliott Triangle Wave (ABCDE)": "エリオットトライアングル波(ABCDE)", "Minuette": "ミニュット", "Text Wrap": "テキスト修飾", "Reverse Position": "ポジションを反転", "Elliott Minor Retracement": "エリオット・マイナーリトレースメント", "Pitchfan": "ピッチファン", "Slash_hotkey": "スラッシュ", "No symbols matched your criteria": "条件に合うシンボルがありません", "Icon": "アイコン", "lengthRSI_input": "RSI(相対力指数)期間", "Tuesday": "火曜日", "Teeth Length_input": "歯長", "Indicator_input": "インジケータ", "Open Interval Dialog": "時間足ダイアログを開く", "Shanghai": "上海", "Athens": "アテネ", "Fib Speed Resistance Arcs": "フィボナッチ・スピード抵抗円弧", "Content": "内容", "middle": "中央", "Lock Cursor In Time": "カーソル位置をロック", "Intermediate": "インターミディエイト", "Eraser": "消しゴム", "Relative Vigor Index_study": "RVI 相対的活力指数", "Envelope_study": "エンベロープ", "Symbol Labels": "シンボルラベル", "Pre Market": "市場開始前", "Horizontal Line": "水平ライン", "O_in_legend": "始値", "Confirmation": "確認", "HL Bars": "HLバー", "Lines:": "ライン", "hlc3": "高値安値終値平均", "Buenos Aires": "ブエノスアイレス", "X Cross": "X クロス", "Bangkok": "バンコク", "Profit Level. Ticks:": "利益幅 ティック :", "Show Date/Time Range": "日付・時間レンジを表示", "Level {0}": "レベル {0}", "Favorites": "お気に入り", "Horz Grid Lines": "水平グリッドライン", "-DI_input": "-DI", "Price Range": "価格レンジ", "day": "日", "deviation_input": "偏差", "Account Size": "アカウントのサイズ", "UTC": "UTC (協定世界時) ", "Time Interval": "時間足", "Success text color": "成功のテキスト色", "ADX smoothing_input": "ADX平滑化", "%d hour": "%d時間", "Order size": "発注サイズ", "Drawing Tools": "描画ツール", "Save Drawing Template As": "描画テンプレートを名前をつけて保存", "Tokelau": "トケラウ", "ohlc4": "始値高値安値終値平均", "Traditional": "伝統的な", "Chaikin Money Flow_study": "Chaikinマネー・フロー", "Ease Of Movement_study": "Ease ムーブメント", "Defaults": "デフォルト", "Percent_input": "パーセント", "%": "%", "Interval is not applicable": "時間足を適用できません。", "short_input": "ショート", "Visual settings...": "表示設定...", "RSI_input": "RSI", "Chatham Islands": "チャタム諸島", "Detrended Price Oscillator_input": "トレンド除去価格オシレーター(DPO)", "Mo_day_of_week": "月曜日", "Up Wave 4": "上昇波 4", "center": "中央", "Vertical Line": "垂直線", "Bogota": "ボゴタ", "Show Splits on Chart": "株式分割をチャートに表示", "Sorry, the Copy Link button doesn't work in your browser. Please select the link and copy it manually.": "このブラウザではリンクをコピーするボタンが作動しません。リンクを選択してマニュアルでコピーして下さい。", "Levels Line": "レベルライン", "Events & Alerts": "イベント&アラート", "May": "5月", "ROCLen4_input": "変化率期間4", "Aroon Down_input": "アルンダウン", "Add To Watchlist": "ウォッチリストに追加", "Total": "合計", "Price": "価格", "left": "左", "Lock scale": "スケールのロック", "Limit_input": "Limit", "Change Days To": "日を変更", "Price Oscillator_study": "プライスオシレーター", "smalen1_input": "単純移動平均期間1", "Drawing Template '{0}' already exists. Do you really want to replace it?": "図のテンプレート '{0}' は既に存在します。本当に置き換えますか?", "Show Middle Point": "中間点を表示", "KST_input": "KNT(Know Sure Thing) インジケーター", "Extend Right End": "右端の拡張", "Base currency": "基本通貨", "Line - Low": "ライン - 安値", "Price_input": "価格", "Gann Fan": "ギャン・ファン", "EOD": "末日", "Weeks": "週", "McGinley Dynamic_study": "McGinleyダイナミクス", "Relative Volatility Index_study": "相対ボラテリティ指数", "Source Code...": "ソースコード ...", "PVT_input": "プライスボリュームトレンド", "Show Hidden Tools": "非表示ツールを表示", "Hull Moving Average_study": "Hull 移動平均", "Symbol Prev. Close Value": "通貨ペアの直前終値", "Istanbul": "イスタンブール", "{0} chart by TradingView": "{0}TradingViewによるチャート", "Right Shoulder": "右ショルダー", "Remove Drawing Tools": "作図ツールを削除", "Friday": "金曜日", "Zero_input": "ゼロ", "Company Comparison": "企業比較", "Stochastic Length_input": "ストキャスティクス期間", "mult_input": "マルチ", "URL cannot be received": "URLが受信できません", "Success back color": "成功の場合の背景色", "E_data_mode_end_of_day_letter": "終日", "Trend-Based Fib Extension": "トレンドに基づくフィボナッチ拡張", "Top": "上", "Double Curve": "2次曲線", "Stochastic RSI_study": "ストキャスティクス RSI", "Oops!": "おっと、!", "Horizontal Ray": "水平レイ", "smalen3_input": "単純移動平均期間3", "Ok": "OK", "Script Editor...": "スクリプトエディタ", "Are you sure?": "本当に宜しいですか?", "Trades on Chart": "チャートから取引", "Listed Exchange": "上場取引所", "Error:": "エラー:", "Fullscreen mode": "フルスクリーンモード", "Add Text Note For {0}": "テキストノートを{0}に追加", "K_input": "K", "Do you really want to delete Drawing Template '{0}' ?": "図のテンプレート '{0}' を本当に消去しますか?", "ROCLen3_input": "変化率期間3", "Micro": "ミクロ", "Text Color": "フォントカラー", "Rename Chart Layout": "チャートレイアウトの名前を変更", "Built-ins": "内蔵", "Background color 2": "背景色2", "Drawings Toolbar": "描画ツールバー", "New Zealand": "ニュージーランド", "CHOP_input": "CHOP", "Apply Defaults": "デフォルトの適用", "% of equity": "資産比%", "Extended Alert Line": "時間外取引のアラート", "Note": "ノート", "Moving Average Channel_study": "移動平均チャネル", "like": "いいね", "Show": "表示", "{0} bars": "{0} バー", "Lower_input": "下方", "Created ": "作成されました", "Warning": "警告", "Elder's Force Index_study": "Elderフォース指数", "Show Earnings on Chart": "チャート上に収益を表示", "ATR_input": "ATR", "Low": "安値", "Bollinger Bands %B_study": "ボリンジャーバンド %B", "Time Zone": "タイムゾーン", "right": "右", "%d month": "%dヶ月", "Wrong value": "間違った値", "Upper Band_input": "上方の帯", "Sun": "日曜日", "Rename...": "名前の変更 ...", "start_input": "スタート", "No indicators matched your criteria.": "条件に合うインディケータがありません。", "Commission": "コミッション手数料", "Down Color": "下降カラー", "Short length_input": "ショートの長さ", "Kolkata": "カルカッタ", "Submillennium": "サブミレニウム", "Technical Analysis": "テクニカル解析", "Show Text": "テキスト表示", "Channel": "チャネル", "FXCM CFD data is available only to FXCM account holders": "FXCMのCFDデータはFXCMの口座をお持ちの方のみ提供可能となります。", "Lagging Span 2 Periods_input": "2期遅行スパン", "Connecting Line": "ライン接続", "Seoul": "ソウル", "bottom": "下", "Teeth_input": "歯", "Sig_input": "シグナル", "Open Manage Drawings": "描画の管理を開く", "Save New Chart Layout": "新規チャートレイアウトを保存", "Fib Channel": "フィボナッチ・チャネル", "Save Drawing Template As...": "描画テンプレートを名前をつけて保存", "Minutes_interval": "分足", "Up Wave 2 or B": "上昇波 2 または B", "Columns": "列", "Directional Movement_study": "方向性指数 DMI", "roclen2_input": "変化率期間2", "Apply WPT Down Wave": "WPTダウンウェーブを適用", "Not applicable": "適用できません。", "Bollinger Bands %B_input": "ボリンジャーバンド%B", "Default": "デフォルト", "Singapore": "シンガポール", "Template name": "テンプレート名", "Indicator Values": "インディケータの値", "Lips Length_input": "唇長", "Toggle Log Scale": "ログスケールの切り替えトグル", "L_in_legend": "安値", "Remove custom interval": "カスタム時間足を削除", "shortlen_input": "ショートの長さ", "Quotes are delayed by {0} min": "相場は{0}分遅延しています", "Hide Events on Chart": "チャートのイベントを非表示にする", "Cash": "キャッシュ", "Profit Background Color": "利益幅の背景色", "Bar's Style": "バーのスタイル", "Exponential_input": "指数", "Down Wave 5": "下落波 5", "Previous": "前へ", "Stay In Drawing Mode": "描画モードを維持", "Comment": "コメント", "Connors RSI_study": "Connors RSI", "Bars": "バー", "Show Labels": "ラベル表示", "Flat Top/Bottom": "上下フラット", "Symbol Type": "シンボルタイプ", "December": "12月", "Lock drawings": "描画をロックする", "Border color": "枠色", "Change Seconds From": "秒から変える", "Left Labels": "左ラベル", "Insert Indicator...": "インジケーターを挿入 ...", "ADR_B_input": "ADR_B", "Paste %s": "貼り付け%s", "Change Symbol...": "シンボルの変更 ...", "Timezone": "タイムゾーン", "Invite-only script. You have been granted access.": "招待者のみへの公開スクリプトへアクセスを付与されました。", "Color 6_input": "色 6", "Oct": "10月", "ATR Length": "ATRの期間", "{0} financials by TradingView": "{0}TradingViewによる金融", "Extend Lines Left": "左端の拡張", "Feb": "2月", "Transparency": "透明", "No": "いいえ", "June": "6月", "Tweet": "ツイート", "Cyclic Lines": "円ライン", "length28_input": "長さ28", "ABCD Pattern": "ABCDパターン", "When selecting this checkbox the study template will set \"__interval__\" interval on a chart": "このチェックボックスを選択するときスタディテンプレートは、チャートの__interval__の時間足に設定されます。", "Add": "追加", "OC Bars": "OCOCバー", "Millennium": "ミレニアム", "On Balance Volume_study": "オン・バランス・ボリューム", "Apply Indicator on {0} ...": " {0} ...にインディケータを適用", "NEW": "新規", "Chart Layout Name": "チャートレイアウト名", "Up bars": "上昇バー", "Hull MA_input": "ハル移動平均線", "Schiff": "シッフ", "Lock Scale": "スケールのロック", "distance: {0}": "距離: {0}", "Extended": "時間外", "Square": "スクエア", "log": "ログスケール", "NO": "いいえ", "Top Margin": "上マージン", "Up fractals_input": "フラクタル上昇", "Insert Drawing Tool": "描画ツールを挿入する", "OHLC Values": "OHLC値", "Correlation_input": "相関", "Session Breaks": "セッション区切り", "Add {0} To Watchlist": "ウオッチリストに {0} を追加", "Anchored Note": "アンカーノート", "lipsLength_input": "唇長", "low": "安値", "Apply Indicator on {0}": " {0}にインディケータを適用", "UpDown Length_input": "UpDown Length", "Price Label": "価格ラベル", "November": "11月", "Tehran": "テヘラン", "Balloon": "バルーン", "Track time": "トラックタイム", "Background Color": "背景色", "an hour": "1時間", "Right Axis": "右軸", "D_data_mode_delayed_streaming_letter": "遅延中", "VI -_input": "ボラティリティ指数-", "slowLength_input": "長期", "Click to set a point": "ポイントをクリックで指定", "Save Indicator Template As...": "このインジケーターのテンプレートを名前を付けて保存...", "Arrow Up": "上矢印", "n/a": "該当なし", "Indicator Titles": "インジケーターのタイトル", "Failure text color": "失敗のテキスト色", "Sa_day_of_week": "土曜日", "Net Volume_study": "ネット出来高", "Error": "エラー", "Edit Position": "ポジションを編集", "RVI_input": "RVI(相対活力指数)", "Centered_input": "中心になる", "Recalculate On Every Tick": "ティックごとに再計算", "Left": "左", "Simple ma(oscillator)_input": "単純移動平均(オシレーター)", "Compare": "比較", "Fisher Transform_study": "Fisher変換", "Show Orders": "注文表示", "Zoom In": "ズームイン", "Length EMA_input": "EMAの長さ", "Enter a new chart layout name": "新しいチャートレイアウトの名前を入力してください", "Signal Length_input": "シグナルの長さ", "FAILURE": "失敗", "Point Value": "ポイント値", "D_interval_short": "日", "MA with EMA Cross_study": "移動平均線とEMA(指数平滑移動平均線)の交差", "Label Up": "ラベル上", "Close": "終値", "ParabolicSAR_input": "パラボリック ストップアンドリバース", "Log Scale_scale_menu": "ログスケール", "MACD_input": "MACD", "Do not show this message again": "このメッセージを二度と表示しない。", "{0} P&L: {1}": "{0} 利益&損失: {1}", "No Overlapping Labels": "ラベルを重ねない", "Arrow Mark Left": "左矢印", "Slow length_input": "スローの期間", "Line - Close": "ライン - 終値", "(O + H + L + C)/4": "(始値+ 高値+ 安値+終値)/4", "Confirm Inputs": "入力を確認", "Open_line_tool_position": "開始", "Lagging Span_input": "遅行スパン", "Subminuette": "サブミニュエット", "Thursday": "木曜日", "Arrow Down": "下矢印", "Vancouver": "バンクーバー", "Triple EMA_study": "トリプル EMA", "Elliott Correction Wave (ABC)": "エリオット波動 修正波(ABC)", "Error while trying to create snapshot.": "スナップショット作成中にエラー発生", "Label Background": "ラベル背景", "Templates": "テンプレート", "Please report the issue or click Reconnect.": "この問題を報告するか、再接続をクリックしてください。", "Normal": "通常", "Signal Labels": "シグナルラベル", "Delete Text Note": "ノートを削除する", "compiling...": "コンパイル中...", "Detrended Price Oscillator_study": "トレンド除去価格オシレーター(DPO)", "Color 5_input": "色 5", "Fixed Range_study": "Fixed Range", "Up Wave 1 or A": "上昇波 1 または A", "Scale Price Chart Only": "スケール価格チャートのみ", "Unmerge Up": "重ねずに上へ移動", "auto_scale": "自動", "Short period_input": "ショート期間", "Background": "背景", "Study Templates": "スタディテンプレート", "Up Color": "上昇カラー", "Apply Elliot Wave Intermediate": "エリオット波動インターメディエイトの適用", "VWMA_input": "VWMA(出来高加重移動平均)", "Lower Deviation_input": "下方偏差", "Save Interval": "時間足の保存", "February": "2月", "Reverse": "リバース", "Oops, something went wrong": "申し訳ございません。不具合が起きたようです。", "Add to favorites": "お気に入りへ追加", "Median": "中央値", "ADX_input": "ADX", "Remove": "削除", "len_input": "長さ", "Arrow Mark Up": "上矢印", "April": "4月", "Active Symbol": "アクティブシンボル", "Extended Hours": "時間外取引", "Crosses_input": "交差", "Middle_input": "中央", "Read our blog for more info!": "ブログを読んでもっと知る!", "Sync drawing to all charts": "描画を全てのチャートに同期", "LowerLimit_input": "下限", "Know Sure Thing_study": "ノウンシュアティング", "Copy Chart Layout": "チャートレイアウトをコピー", "Compare...": "比較 ...", "1. Slide your finger to select location for next anchor
2. Tap anywhere to place the next anchor": "1. 次のアンカーの場所を選択するためにスライドさせます。
2. 次のアンカーを置く場所をタップします。", "Text Notes are available only on chart page. Please open a chart and then try again.": "テキストノートは、チャートページでのみ利用可能です。チャートを開き、もう一度試してください。", "Color": "色", "Aroon Up_input": "アルンアップ", "Apply Elliot Wave Major": "エリオット波動メジャーの適用", "Scales Lines": "スケールライン", "Type the interval number for munute charts (i.e. 5 if it is going to be a five minute chart). Or number plus letter for H (Hourly), D (Daily), W (Weekly), M (Monthly) intervals (i.e. D or 2H)": "分足チャートの、時間の間隔を入力してください。たとえば、5分足のチャートの場合は、5と入力します。その他、H (時間), D (日), W (週), M (月)などのアルファベット1文字で、時間足、日足、週足、月足を指定できます。たとえば、3D は、3日足になります。 2Hは、2時間足のチャートを表示できます。", "Ellipse": "楕円", "Up Wave C": "上昇波 C", "Show Distance": "距離の表示", "Risk/Reward Ratio: {0}": "リスク/リワード比: {0}", "Restore Size": "サイズを元に戻す", "Volume Oscillator_study": "出来高オシレーター", "Honolulu": "ホノルル", "Williams Fractal_study": "Williamsフラクタル", "Merge Up": "上へ重ねる", "Right Margin": "右マージン", "Moscow": "モスクワ", "Warsaw": "ワルシャワ"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/ko.json b/static/Kline/charting_library/static/localization/translations/ko.json new file mode 100644 index 0000000..b6b56e8 --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/ko.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "틱", "Months_interval": "달", "Realtime": "실시간", "Callout": "콜아웃", "Sync to all charts": "모든 차트에 동기화", "month": "달", "London": "런던", "roclen1_input": "roclen1", "Unmerge Down": "아래로 떼냄", "Percents": "퍼센트", "Search Note": "노트찾기", "Minor": "마이너", "Do you really want to delete Chart Layout '{0}' ?": "정말로 차트 레이아웃 '{0}' 을 지우시겠습니까?", "Quotes are delayed by {0} min and updated every 30 seconds": "{0}분 지연호가, 매 30초 업데이트", "Magnet Mode": "자석모드", "Grand Supercycle": "그랜드 수퍼사이클", "OSC_input": "OSC", "Hide alert label line": "얼러트 라벨 라인 숨기기", "Volume_study": "거래량 (Volume)", "Lips_input": "Lips", "Show real prices on price scale (instead of Heikin-Ashi price)": "가격 눈금에 실제 가격 보이기 (하이킨 아시 가격대신)", "Histogram": "막대그래프", "Base Line_input": "베이스 라인", "Step": "스텝", "Insert Study Template": "스터디템플릿넣기", "Fib Time Zone": "피보나치 타임존", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "볼린저 밴드 (Bollinger Bands)", "Nov": "11월", "Show/Hide": "보기/숨기기", "Upper_input": "어퍼", "exponential_input": "익스포넨셜", "Move Up": "위로옮김", "Symbol Info": "종목정보", "This indicator cannot be applied to another indicator": "이 지표를 다른 지표에 적용할 수 없습니다", "Scales Properties...": "눈금설정...", "Count_input": "카운트", "Full Circles": "동그라미", "Ashkhabad": "아슈하바트", "OnBalanceVolume_input": "온밸런스볼륨", "Cross_chart_type": "크로스", "H_in_legend": "고", "a day": "하루", "Pitchfork": "피치포크", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "누적/분포 (Accumulation/Distribution)", "Rate Of Change_study": "레이트 오브 체인지 (Rate Of Change)", "Text Font": "텍스트 폰트", "in_dates": "in", "Clone": "복제", "Color 7_input": "칼라 7", "Chop Zone_study": "찹 존 (Chop Zone)", "Bar #": "봉 #", "Scales Properties": "눈금설정", "Trend-Based Fib Time": "추세기반 피보나치 시간", "Remove All Indicators": "지표 모두 없앰", "Oscillator_input": "오실레이터", "Last Modified": "마지막 고친시간", "yay Color 0_input": "yay 칼라 0", "Labels": "라벨", "Chande Kroll Stop_study": "챈드 크롤 스탑 (Chande Kroll Stop)", "Hours_interval": "시간", "Allow up to": "최대 허용", "Scale Right": "오른눈금", "Money Flow_study": "머니 플로우 (Money Flow)", "siglen_input": "siglen", "Indicator Labels": "지표이름", "Hide All Drawing Tools": "드로잉툴숨김", "Toggle Percentage": "백분율토글", "Remove All Drawing Tools": "드로잉툴 모두 없앰", "Remove all line tools for ": "다음 라인 툴 모두 없애기: ", "Linear Regression Curve_study": "리니어 리그레션 커브 (Linear Regression Curve)", "Symbol_input": "심볼", "Currency": "통화", "increment_input": "인크레먼트", "Compare or Add Symbol...": "종목 비교/추가...", "Save Chart Layout": "차트레이아웃 저장", "Number Of Line": "라인 넘버", "Label": "라벨", "Post Market": "포스트-마켓", "second": "초", "Any Number": "아무 숫자", "smoothD_input": "smoothD", "Falling_input": "폴링", "Risk/Reward short": "위험/보상 쇼트", "UpperLimit_input": "어퍼 리밋", "Donchian Channels_study": "돈치안 채널 (Donchian Channels)", "Entry price:": "진입가:", "Circles": "원", "Head": "머리", "Stop: {0} ({1}) {2}, Amount: {3}": "스탑: {0} ({1}) {2}, 금액: {3}", "Mirrored": "거울대칭", "Ichimoku Cloud_study": "일목 구름 (Ichimoku Cloud)", "Signal smoothing_input": "시그널 스무딩", "Use Upper Deviation_input": "어퍼 디비에이션 쓰기", "Apply Elliot Wave Major": "메이저 엘리엇 파동 적용", "Grid": "격자선", "Triangle Down": "트라이앵글 다운", "Apply Elliot Wave Minor": "엘리엇파동 마이너 적용", "Slippage": "슬리피지", "Smoothing_input": "스무딩", "Color 3_input": "칼라 3", "Jaw Length_input": "Jaw 길이", "Almaty": "알마티", "Inside": "내부", "Delete all drawing for this symbol": "이 종목에 대한 드로잉 모두 지우기", "Fundamentals": "펀더멘털", "Keltner Channels_study": "켈트너 채널 (Keltner Channels)", "Long Position": "롱포지션", "Bands style_input": "밴드 스타일", "Undo {0}": "{0} 되돌리기", "With Markers": "마커도함께", "Momentum_study": "모멘텀 (Momentum)", "MF_input": "MF", "Gann Box": "간 박스", "Switch to the next chart": "다음 차트로 바꾸기", "charts by TradingView": "차트 제공 TradingView", "Fast length_input": "패스트 길이", "Apply Elliot Wave": "엘리엇파동적용", "Disjoint Angle": "분리각", "Supermillennium": "수퍼밀레니엄", "W_interval_short": "주", "Show Only Future Events": "미래이벤트만 보기", "Log Scale": "로그눈금", "Line - High": "라인 - 고가", "Zurich": "취리히", "Equality Line_input": "이퀄리티 라인", "Short_input": "쇼트", "Fib Wedge": "피보나치 웻지", "Line": "라인", "Session": "세션", "Down fractals_input": "다운 프랙탈", "Fib Retracement": "피보나치 되돌림", "smalen2_input": "smalen2", "isCentered_input": "isCentered", "Border": "경계", "Klinger Oscillator_study": "클링거 오실레이터 (Klinger Oscillator)", "Absolute": "절대값", "Tue": "화", "Style": "모습", "Show Left Scale": "왼눈금 보기", "SMI Ergodic Indicator/Oscillator_study": "SMI 에르고딕 인디케이터/오실레이터 (SMI Ergodic Indicator/Oscillator)", "Aug": "8월", "Last available bar": "마지막 봉", "Manage Drawings": "그림관리", "Analyze Trade Setup": "트레이드 셋업 분석", "No drawings yet": "그림없음", "SMI_input": "SMI", "Chande MO_input": "Chande MO", "jawLength_input": "jawLength", "TRIX_study": "트릭스 (TRIX)", "Show Bars Range": "봉 구간보기", "RVGI_input": "RVGI", "Last edited ": "마지막 편집 ", "signalLength_input": "signalLength", "%s ago_time_range": "%s앞", "Reset Settings": "설정초기화", "PnF": "피앤에프", "Renko": "렌코", "d_dates": "d", "Point & Figure": "포인트앤피겨", "August": "8월", "Recalculate After Order filled": "체결뒤 재계산", "Source_compare": "소스", "Down bars": "다운 바", "Correlation Coefficient_study": "코릴레이션 코에피션트 (Correlation Coefficient)", "Delayed": "지연", "Bottom Labels": "아래 라벨", "Text color": "문자열색", "Levels": "레벨", "Length_input": "길이", "Short Length_input": "쇼트 렝쓰", "teethLength_input": "teethLength", "Visible Range_study": "비저블 레인지", "Delete": "지움", "Hong Kong": "홍콩", "Text Alignment:": "문자열맞춤:", "Open {{symbol}} Text Note": "{{symbol}} 텍스트노트 열기", "October": "10월", "Lock All Drawing Tools": "드로잉툴고정", "Long_input": "롱", "Right End": "오른쪽끝", "Show Symbol Last Value": "종목현재가보기", "Head & Shoulders": "헤드 & 쇼울더", "Do you really want to delete Study Template '{0}' ?": "정말로 스터디 템플릿 '{0}' 을 지우시겠습니까?", "Favorite Drawings Toolbar": "자주 쓰는 드로잉 툴바", "Properties...": "속성...", "Reset Scale": "눈금초기화", "MA Cross_study": "MA 크로스 (MA Cross)", "Trend Angle": "추세각", "Snapshot": "스냅샷", "Crosshair": "십자표", "Signal line period_input": "시그널 라인 피어리어드", "Timezone/Sessions Properties...": "타임존/세션 속성...", "Line Break": "라인브레이크", "Quantity": "수량", "Price Volume Trend_study": "가격 거래량 트렌드 (Price Volume Trend)", "Auto Scale": "자동눈금", "hour": "시간", "Delete chart layout": "차트 레이아웃 지우기", "Text": "문자", "F_data_mode_forbidden_letter": "금", "Risk/Reward long": "리스크/리워드 롱", "Apr": "4월", "Long RoC Length_input": "Long RoC 길이", "Length3_input": "길이 3", "+DI_input": "+DI", "Madrid": "마드리드", "Use one color": "한가지 색만 쓰기", "Chart Properties": "차트속성", "No Overlapping Labels_scale_menu": "오버래핑 라벨 없음", "Exit Full Screen (ESC)": "전체화면 나감 (ESC)", "MACD_study": "MACD", "Show Economic Events on Chart": "차트에 경제이벤트 보기", "Moving Average_study": "이동 평균(Moving Average)", "Show Wave": "웨이브 보기", "Failure back color": "실패배경색", "Below Bar": "봉아래", "Time Scale": "시간눈금", "

Only D, W, M intervals are supported for this symbol/exchange. You will be automatically switched to a D interval. Intraday intervals are not available because of exchange policies.

": "

이 종목은 D,WWM 인터벌만 지원됩니다. 저절로 D 인터벌로 바뀌게 됩니다. 일봉 미만 인터벌은 거래소 정책에 의해 제공할 수 없습니다.

", "Extend Left": "왼쪽확장", "Date Range": "기간", "Min Move": "최소거래단위", "Price format is invalid.": "가격 포맷이 틀립니다.", "Show Price": "가격보기", "Level_input": "레벨", "Angles": "각", "Commodity Channel Index_study": "커모디티 채널 인덱스 (Commodity Channel Index)", "Elder's Force Index_input": "엘더즈 포스 인덱스", "Gann Square": "간 스퀘어", "Phoenix": "피닉스", "Format": "설정", "Color bars based on previous close": "이전종가에 따라 봉색결정", "Change band background": "밴드배경 바꾸기", "Target: {0} ({1}) {2}, Amount: {3}": "타겟: {0} ({1}) {2}, 금액: {3}", "Zoom Out": "작게보기", "This chart layout has a lot of objects and can't be published! Please remove some drawings and/or studies from this chart layout and try to publish it again.": "이 차트 레이아웃은 너무 많은 오브젝트가 들어 있어 퍼블리쉬할 수 없습니다! 이 차트 레이아웃에서 드로잉이나 스터디 몇개를 없애고 다시 퍼블리쉬해 보시기 바랍니다.", "Anchored Text": "고정위치문자", "Long length_input": "Long 길이", "Edit {0} Alert...": "{0} 얼러트 편집...", "Previous Close Price Line": "이전 종가 라인", "Up Wave 5": "업 웨이브 5", "Qty: {0}": "수량: {0}", "Heikin Ashi": "하이킨 아시", "Aroon_study": "아룬 (Aroon)", "show MA_input": "show MA", "Industry": "산업", "Lead 1_input": "리드 1", "Short Position": "쇼트포지션", "SMALen1_input": "SMALen1", "P_input": "P", "Apply Default": "디폴트적용", "SMALen3_input": "SMALen3", "Average Directional Index_study": "평균방향성지수 (Average Directional Index)", "Fr_day_of_week": "금", "Invite-only script. Contact the author for more information.": "초대전용 스크립트. 자세한 내용을 알려면 오써에게 연락하시기 바랍니다.", "Curve": "곡선", "a year": "1해", "Target Color:": "타겟색:", "Bars Pattern": "봉패턴", "D_input": "일", "Font Size": "폰트 크기", "Create Vertical Line": "세로줄 만들기", "p_input": "p", "Rotated Rectangle": "회전네모", "Chart layout name": "차트레이아웃 이름", "Fib Circles": "피보나치 서클", "Apply Manual Decision Point": "매뉴얼 디시전 포인트 적용", "Dot": "점", "Target back color": "대상배경색", "All": "전체", "orders_up to ... orders": "오더", "Dot_hotkey": "도트", "Lead 2_input": "리드 2", "Save image": "이미지저장", "Move Down": "아래로옮김", "Triangle Up": "트라이앵글 업", "Box Size": "박스 사이즈", "Navigation Buttons": "내비게이션버튼", "Miniscule": "미니스큘", "Apply": "적용", "Down Wave 3": "다운 웨이브 3", "Plots Background_study": "플롯 백그라운드", "Marketplace Add-ons": "판매애드온", "Sine Line": "사인 라인", "Fill": "채우기", "%d day": "%d 날", "Hide": "감추기", "Toggle Maximize Chart": "차트최대화토글", "Target text color": "대상문자열색", "Scale Left": "왼눈금", "Elliott Wave Subminuette": "엘리엇파동 서브미뉴에트", "Color based on previous close_input": "이전 종가에 따른 색깔", "Down Wave C": "다운 웨이브 C", "Countdown": "카운트다운", "UO_input": "UO", "Pyramiding": "피라미딩", "Source back color": "소스배경색", "Go to Date...": "날짜바로가기...", "Sao Paulo": "상파울루", "R_data_mode_realtime_letter": "실", "Extend Lines": "확장선", "Conversion Line_input": "컨버전 라인", "March": "3월", "Su_day_of_week": "일", "Exchange": "거래소", "My Scripts": "내 스크립트", "Arcs": "원호", "Regression Trend": "회귀추세", "Short RoC Length_input": "쇼트 RoC 렝쓰", "Fib Spiral": "피보나치 나선", "Double EMA_study": "더블 EMA (Double EMA)", "minute": "분", "All Indicators And Drawing Tools": "지표 및 드로잉툴 전체", "Indicator Last Value": "지표현재가", "Sync drawings to all charts": "모든 차트에 드로잉 동기화", "Change Average HL value": "평균 고저가 바꾸기", "Stop Color:": "스탑색:", "Stay in Drawing Mode": "그리기모드 유지", "Bottom Margin": "아래여백", "Dubai": "두바이", "Save Chart Layout saves not just some particular chart, it saves all charts for all symbols and intervals which you are modifying while working with this Layout": "차트레이아웃 저장은 귀하가 이 레이아웃으로 작업하면서 바꾼 종목 및 인터벌과 차트를 모두 저장한다.", "Average True Range_study": "애버리지 트루 레인지 (Average True Range)", "Max value_input": "최대값", "MA Length_input": "이평 길이", "Invite-Only Scripts": "초대전용 스크립트", "in %s_time_range": "in %s", "Extend Bottom": "익스텐드 바텀", "sym_input": "sym", "DI Length_input": "DI 길이", "Rome": "로마", "Scale": "눈금", "Periods_input": "피어리어드", "Arrow": "화살표", "useTrueRange_input": "useTrueRange", "Basis_input": "베이시스", "Arrow Mark Down": "아래화살표", "lengthStoch_input": "lengthStoch", "Taipei": "대만", "Objects Tree": "오브젝트트리", "Remove from favorites": "즐겨찾기지움", "Show Symbol Previous Close Value": "심볼 이전 클로즈 밸류 보기", "Scale Series Only": "종목눈금만", "Source text color": "소스문자열색", "Simple": "단순", "Report a data issue": "데이터이슈 리포트", "Arnaud Legoux Moving Average_study": "아르노 르두 무빙 애버리지 (Arnaud Legoux Moving Average)", "Smoothed Moving Average_study": "스무디드 무빙 애버리지 (Smoothed Moving Average)", "Lower Band_input": "로우어 밴드", "Verify Price for Limit Orders": "리밋오더가격 검증", "VI +_input": "VI +", "Line Width": "선너비", "Contracts": "계약", "Always Show Stats": "통계 늘 보기", "Down Wave 4": "다운 웨이브 4", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "단순 이평(시그널 라인)", "Change Interval...": "인터벌바꾸기...", "Public Library": "퍼블릭라이브러리", " Do you really want to delete Drawing Template '{0}' ?": " 정말로 드로잉 템플릿 '{0}' 을 지우시겠습니까?", "Sat": "토", "Left Shoulder": "왼어깨", "week": "주", "CRSI_study": "CRSI", "Close message": "메시지닫기", "Jul": "7월", "Value_input": "밸류", "Show Drawings Toolbar": "드로잉 툴바 보기", "Chaikin Oscillator_study": "체이킨 오실레이터 (Chaikin Oscillator)", "Price Source": "프라이스 소스", "Market Open": "마켓오픈", "Color Theme": "색상테마", "Projection up bars": "프로젝션 업 바", "Awesome Oscillator_study": "오썸 오실레이터 (Awesome Oscillator)", "Bollinger Bands Width_input": "볼린저 밴드 너비", "Q_input": "Q", "long_input": "롱", "Error occured while publishing": "퍼블리슁하다 에러났음", "Fisher_input": "피셔", "Color 1_input": "칼라 1", "Moving Average Weighted_study": "가중 이동 평균 (Moving Average Weighted)", "Save": "저장", "Type": "타입", "Wick": "윅", "Accumulative Swing Index_study": "어큐뮬러티브 스윙 인덱스", "Load Chart Layout": "차트레이아웃 불러오기", "Show Values": "값 보기", "Fib Speed Resistance Fan": "피보나치 속도 저항 부채꼴", "Bollinger Bands Width_study": "볼린저밴드 너비 (Bollinger Bands Width)", "This chart layout has more than 1000 drawings, which is a lot! This may negatively affect performance, storage and publishing. We recommend to remove some drawings to avoid potential performance issues.": "이 차트레이아웃은 1000개가 넘는 드로잉이 있습니다- 너무 많습니다! 이렇게 많으면, 성능, 저장 및 퍼블리슁을 떨어뜨리게 됩니다. 잠재적인 성능이슈를 피하려면 일부 드로잉을 없애기를 추천합니다.", "Left End": "왼쪽끝", "%d year": "%d 해", "Always Visible": "언제나 보임", "S_data_mode_snapshot_letter": "스", "Flag": "플래그", "Elliott Wave Circle": "엘리엇파동원", "Earnings breaks": "기업수익 경계", "Do not ask again": "다시 묻지 않기", "MTPredictor": "엠티프리딕터", "Displacement_input": "디스플레이스먼트", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "어퍼 디비에이션", "(H + L)/2": "(고 + 저)/2", "XABCD Pattern": "XABCD 패턴", "Schiff Pitchfork": "쉬프 피치포크", "Copied to clipboard": "클립보드로 복사됐음", "HLC Bars": "HLC 바", "Flipped": "위아래대칭", "DEMA_input": "DEMA", "Move_input": "무브", "NV_input": "NV", "Choppiness Index_study": "차피니스 인덱스 (Choppiness Index)", "Study Template '{0}' already exists. Do you really want to replace it?": "같은 이름의 스터디 템플릿 '{0}' 가 이미 있습니다. 정말로 바꾸시겠습니까?", "Merge Down": "아래로 겹침", "Th_day_of_week": "목", " per contract": " 계약당", "Overlay the main chart": "메인차트위에 겹쳐보기", "Screen (No Scale)": "화면전체", "Three Drives Pattern": "쓰리 드라이브 패턴", "Save Indicator Template As": "다음으로 지표 템플릿 저장:", "Length MA_input": "Length MA", "percent_input": "퍼센트", "September": "9월", "{0} copy": "{0} 카피", "Avg HL in minticks": "최소틱단위 평균 고저", "Accumulation/Distribution_input": "어큐물레이션/디스트리뷰션", "Sync": "동기", "C_in_legend": "종", "Weeks_interval": "주", "smoothK_input": "smoothK", "Percentage_scale_menu": "백분율눈금", "Change Extended Hours": "확장시간바꾸기", "MOM_input": "MOM", "h_interval_short": "시간", "Change Interval": "인터벌바꾸기", "Change area background": "영역배경 바꾸기", "Modified Schiff": "변형쉬프", "top": "위", "Adelaide": "애들레이드", "Send Backward": "한단계뒤로", "Mexico City": "멕시코 시티", "TRIX_input": "트릭스", "Show Price Range": "가격구간보기", "Elliott Major Retracement": "엘리엇 메이저 되돌림", "ASI_study": "ASI", "Notification": "알림", "Fri": "금", "just now": "방금", "Forecast": "예상", "Fraction part is invalid.": "분수 부분이 잘못 되었습니다.", "Connecting": "연결중", "Ghost Feed": "고스트피드", "Signal_input": "시그널", "Histogram_input": "히스토그램", "The Extended Trading Hours feature is available only for intraday charts": "확장거래시간은 인트라데이 차트에서만 가능합니다", "Stop syncing": "동기화 멈추기", "open": "오픈", "StdDev_input": "표준편차", "EMA Cross_study": "EMA 크로스", "Conversion Line Periods_input": "컨버전 라인 피어리어드", "Diamond": "다이아몬드", "Brisbane": "브리즈번", "Monday": "월요일", "Add Symbol_compare_or_add_symbol_dialog": "심볼 넣기", "Williams %R_study": "윌리엄스 %R (Williams %R)", "Symbol": "종목", "a month": "1달", "Precision": "정밀도", "depth_input": "뎊쓰", "Go to": "가기", "Please enter chart layout name": "차트레이아웃 이름을 넣으시오", "Mar": "3월", "VWAP_study": "브이왑 (VWAP)", "Offset": "오프셋", "Date": "날짜", "Format...": "설정...", "Toggle Auto Scale": "자동눈금토글", "Toggle Maximize Pane": "페인최대화 토글", "Search": "찾기", "Zig Zag_study": "지그재그 (Zig Zag)", "Actual": "실제", "SUCCESS": "성공", "Long period_input": "Long 피어리어드", "length_input": "길이", "roclen4_input": "roclen4", "Price Line": "가격선", "Area With Breaks": "영역 브레이크", "Median_input": "중앙값", "Stop Level. Ticks:": "스탑레벨틱:", "Window Size_input": "윈도우 사이즈", "Economy & Symbols": "이코노미 & 심볼", "Circle Lines": "서클 라인", "Visual Order": "보는차례", "Stop Background Color": "스탑배경색", "1. Slide your finger to select location for first anchor
2. Tap anywhere to place the first anchor": "1. 손가락으로 밀어 첫 앵커 자리를 고르시오
2. 아무 곳이나 톡 두들겨 첫 앵커 자리를 정하십시오", "Sector": "섹터", "powered by TradingView": "기능 제공 Tradingview", "Text:": "문자열:", "Stochastic_study": "스토캐스틱 (Stochastic)", "Sep": "9월", "TEMA_input": "TEMA", "Apply WPT Up Wave": "WPT Up Wave 적용", "Min Move 2": "최소거래단위2", "Extend Left End": "왼쪽끝확장", "Projection down bars": "프로젝션 다운 바", "Advance/Decline_study": "어드밴스/디클라인 (Advance/Decline)", "New York": "뉴욕", "Flag Mark": "플래그 마크", "Drawings": "그리기", "Cancel": "취소", "Compare or Add Symbol": "종목 비교/추가", "Redo": "다시하기", "Hide Drawings Toolbar": "드로잉 툴바 숨기기", "Ultimate Oscillator_study": "얼티미트 오실레이터 (Ultimate Oscillator)", "Vert Grid Lines": "세로격자선", "Growing_input": "그로잉", "Angle": "각", "Plot_input": "플롯", "Chicago": "시카고", "Color 8_input": "칼라 8", "Indicators, Fundamentals, Economy and Add-ons": "지표,펀더멘탈,경제,애드온", "h_dates": "h", "ROC Length_input": "ROC 렝쓰", "roclen3_input": "roclen3", "Overbought_input": "과매수", "Extend Top": "익스텐드 탑", "X_input": "X", "No study templates saved": "저장된 스터디템플릿이 없음", "Trend Line": "추세줄", "TimeZone": "타임존", "Percentage": "퍼센트", "Tu_day_of_week": "화", "RSI Length_input": "RSI 길이", "Triangle": "세모", "Line With Breaks": "라인 브레이크", "Period_input": "피어리어드", "Watermark": "워터마크", "Trigger_input": "트리거", "SigLen_input": "SigLen", "Extend Right": "오른쪽확장", "Color 2_input": "칼라 2", "Show Prices": "가격보기", "Unlock": "잠금풀기", "Copy": "복사", "Arc": "원호", "Edit Order": "주문 편집", "January": "1월", "Arrow Mark Right": "오른화살표", "Extend Alert Line": "얼러트 라인 확장하기", "Background color 1": "배경색 1", "RSI Source_input": "RSI 소스", "Close Position": "포지션 닫기", "Stop syncing drawing": "드로잉 동기화 멈추기", "Visible on Mouse Over": "...위로 마우스 오면 보임", "MA/EMA Cross_study": "MA/EMA 크로스", "Thu": "목", "Vortex Indicator_study": "보텍스 인디케이터 (Vortex Indicator)", "view-only chart by {user}": "뷰온리 차트 : 만든이 {user}", "ROCLen1_input": "ROCLen1", "M_interval_short": "달", "Chaikin Oscillator_input": "체이킨 오실레이터", "Price Levels": "가격레벨", "Show Splits": "스플릿 보기", "Zero Line_input": "제로 라인", "Replay Mode": "리플레이 모드", "Increment_input": "인크레먼트", "Days_interval": "일", "Show Right Scale": "오른눈금 보기", "Show Alert Labels": "얼러트 라벨 보기", "Historical Volatility_study": "과거변동성 (Historical Volatility)", "Lock": "잠금", "length14_input": "length14", "High": "고가", "ext": "확장", "Date and Price Range": "날짜 및 가격 범위", "Polyline": "다선형", "Reconnect": "다시 연결", "Lock/Unlock": "잠그기/풀기", "Base Level": "베이스 레벨", "Label Down": "레이블 다운", "Saturday": "토요일", "Symbol Last Value": "종목현재가", "Above Bar": "봉위", "Studies": "스터디", "Color 0_input": "칼라 0", "Add Symbol": "종목추가", "maximum_input": "맥시멈", "Wed": "수", "Paris": "파리", "D_data_mode_delayed_letter": "지", "Sigma_input": "시그마", "VWMA_study": "VWMA", "fastLength_input": "패스트렝쓰", "Time Levels": "시간레벨", "Width": "너비", "Sunday": "일요일", "Loading": "로딩", "Template": "템플릿", "Use Lower Deviation_input": "로우어 디비에이션 쓰기", "Up Wave 3": "업 웨이브 3", "Parallel Channel": "패러렐 채널", "Time Cycles": "타임 사이클", "Second fraction part is invalid.": "두번째 분수 부분이 잘못 되었습니다.", "Divisor_input": "디바이저", "Down Wave 1 or A": "다운 웨이브 1 또는 A", "ROC_input": "ROC", "Dec": "12월", "Ray": "빛", "Extend": "확장", "length7_input": "length7", "Bring Forward": "한단계앞으로", "Bottom": "아래", "Berlin": "베를린", "Undo": "되돌리기", "Original": "원본", "Mon": "월", "Right Labels": "오른 라벨", "Long Length_input": "Long 길이", "True Strength Indicator_study": "트루 스트렝쓰 인디케이터 (True Strength Indicator)", "%R_input": "%R", "There are no saved charts": "저장된 차트가 없습니다", "Instrument is not allowed": "쓸 수 없는 종목입니다", "bars_margin": "봉", "Decimal Places": "자릿수", "Show Indicator Last Value": "지표현재가보기", "Initial capital": "초기 자본금", "Show Angle": "각도 보기", "Mass Index_study": "매스 인덱스 (Mass Index)", "More features on tradingview.com": "Tradingview.com 에 있는 더욱 더 많은 기능들", "Objects Tree...": "오브젝트 트리", "Remove Drawing Tools & Indicators": "드로잉툴 & 인디케이터 없애기", "Length1_input": "길이 1", "Always Invisible": "언제나 안보임", "Circle": "원", "Days": "일", "x_input": "x", "Save As...": "...로 저장", "Elliott Double Combo Wave (WXY)": "엘리엇 다블콤보 파동 (WXY)", "Parabolic SAR_study": "파라볼릭 SAR (Parabolic SAR)", "Any Symbol": "아무 종목", "Variance": "분산", "Stats Text Color": "통계 문자색", "Minutes": "분", "Williams Alligator_study": "윌리엄스 앨리게이터 (Williams Alligator)", "Projection": "프로젝션", "Custom color...": "사용자색상...", "Jan": "1월", "Jaw_input": "Jaw", "Right": "오른쪽", "Help": "도움말", "Coppock Curve_study": "카포크 커브(Coppock Curve)", "Reversal Amount": "리버설 어마운트", "Reset Chart": "차트리셋", "Marker Color": "마켓 색상", "Fans": "부채꼴", "Left Axis": "왼축", "Open": "열기", "YES": "예", "longlen_input": "longlen", "Moving Average Exponential_study": "지수 이동 평균 (Moving Average Exponential)", "Source border color": "소스경계선색", "Redo {0}": "{0} 다시하기", "Cypher Pattern": "사이퍼 패턴", "s_dates": "s", "Caracas": "카라카스", "Area": "영역", "Triangle Pattern": "세모 패턴", "Balance of Power_study": "밸런스 오브 파우어 (Balance Of Power)", "EOM_input": "EOM", "Shapes_input": "셰이프", "Oversold_input": "과매도", "Apply Manual Risk/Reward": "수동 위험/보상 적용", "Market Closed": "마켓 클로즈드", "Sydney": "시드니", "Indicators": "지표", "q_input": "q", "You are notified": "알림이 왔습니다", "Font Icons": "폰트 아이콘", "%D_input": "%D", "Border Color": "경계색", "Offset_input": "오프셋", "Risk": "리스크", "Price Scale": "가격눈금", "HV_input": "HV", "Seconds": "초", "Settings": "설정", "Start_input": "시작", "Elliott Impulse Wave (12345)": "엘리엇 임펄스 파동 (12345)", "Hours": "시간", "Send to Back": "맨뒤로", "Color 4_input": "칼라 4", "Los Angeles": "로스엔젤레스", "Prices": "가격", "Hollow Candles": "할로우캔들", "July": "7월", "Create Horizontal Line": "가로줄 만들기", "Minute": "분", "Cycle": "사이클", "ADX Smoothing_input": "ADX 스무딩", "One color for all lines": "모든 줄에 한가지 색", "m_dates": "m", "(H + L + C)/3": "(고 + 저 + 종)/3", "Candles": "캔들", "We_day_of_week": "수", "Width (% of the Box)": "너비(박스의 %)", "%d minute": "%d 분", "Go to...": "...로 가기", "Pip Size": "핍사이즈", "Wednesday": "수요일", "This drawing is used in alert. If you remove the drawing, the alert will be also removed. Do you want to remove the drawing anyway?": "얼러트에 드로잉이 있습니다. 드로잉을 없애면 해당 얼러트도 함께 없어집니다. 그래도 드로잉을 없애겠습니까?", "Show Countdown": "카운트다운보기", "Show alert label line": "얼러트 라벨 라인 보기", "Down Wave 2 or B": "다운 웨이브 2 또는 B", "MA_input": "이평", "Length2_input": "길이 2", "not authorized": "권한 없음", "Session Volume_study": "세션 볼륨", "Image URL": "이미지 URL", "Submicro": "서브마이크로", "SMI Ergodic Oscillator_input": "SMI 에르고딕 오실레이터", "Show Objects Tree": "오브젝트트리보기", "Primary": "주요", "Price:": "가격:", "Bring to Front": "맨앞으로", "Brush": "붓", "Not Now": "지금은 아닙니다", "Yes": "예", "C_data_mode_connecting_letter": "연", "SMALen4_input": "SMALen4", "Apply Default Drawing Template": "디폴트 드로잉템플릿 적용", "Compact": "컴팩트", "Save As Default": "기본설정으로 사용", "Target border color": "대상경계색", "Invalid Symbol": "잘못된 종목", "Inside Pitchfork": "피치포크 안", "yay Color 1_input": "yay 칼라 1", "Quandl is a huge financial database that we have connected to TradingView. Most of its data is EOD and is not updated in real-time, however the information may be extremely useful for fundamental analysis.": "Quandl은 TradingView에 연결된 대형 데이터베이스입니다. 대부분의 데이터는 종가이며, 실시간데이터는 아니지만, 펀더멘털분석에 아주 쓸모가 있을 것입니다.", "Hide Marks On Bars": "봉의 마크 감추기", "Cancel Order": "주문 취소", "Kagi": "카기", "WMA Length_input": "WMA Length", "Show Dividends on Chart": "차트에서 배당금보기", "Show Executions": "주문실행보기", "Borders": "경계선", "Remove Indicators": "인디케이터 없애기", "loading...": "로딩...", "Closed_line_tool_position": "포지션청산", "Rectangle": "네모", "Change Resolution": "레졸루션 바꾸기", "Indicator Arguments": "지표인자", "Symbol Description": "종목설명", "Chande Momentum Oscillator_study": "챈드 모멘텀 오실레이터 (Chande Momentum Oscillator)", "Degree": "각도", " per order": " 주문당", "Line - HL/2": "라인 - HL/2", "Supercycle": "수퍼사이클", "Jun": "6월", "Least Squares Moving Average_study": "리스트 스퀘어 무빙 애버리지 (Least Squares Moving Average)", "powered by ": "기능 제공 ", "Source_input": "소스", "Change Seconds To": "초를 ...로 바꾸기", "%K_input": "%K", "Scales Text": "눈금문자", "Toronto": "토론토", "Please enter template name": "템플릿 이름을 넣으세요", "Symbol Name": "종목이름", "Tokyo": "도쿄", "Events Breaks": "이벤트경계", "San Salvador": "산살바도르", "Months": "달", "Symbol Info...": "종목정보...", "Elliott Wave Minor": "엘리엇파동 마이너", "Cross": "십자", "Measure (Shift + Click on the chart)": "재기(Shift + Click)", "Override Min Tick": "소숫점아래 표시바꾸기", "Show Positions": "포지션보기", "Dialog": "다이얼로그", "Add To Text Notes": "텍스트노트에 넣기", "Elliott Triple Combo Wave (WXYXZ)": "엘리엇 트리플콤보 파동 (WXYXZ)", "Multiplier_input": "멀티플라이어", "Risk/Reward": "위험/보상", "Base Line Periods_input": "베이스 라인 피어리어드", "Show Dividends": "배당보기", "Relative Strength Index_study": "상대강도지수 (Relative Strength Index)", "Modified Schiff Pitchfork": "변형 쉬프 피치포크", "Top Labels": "탑레벨", "Show Earnings": "어닝 보기", "Line - Open": "라인 - 시가", "Elliott Triangle Wave (ABCDE)": "엘리엇 트라이앵글 웨이브 (ABCDE)", "Minuette": "서브미뉴에트", "Text Wrap": "문자열줄넘김", "Reverse Position": "리버스 포지션", "Elliott Minor Retracement": "엘리엇 마이너 되돌림", "DPO_input": "DPO", "Pitchfan": "피치팬", "Slash_hotkey": "슬래쉬", "No symbols matched your criteria": "찾는 종목이 없습니다.", "Icon": "아이콘", "lengthRSI_input": "lengthRSI", "Tuesday": "화요일", "Teeth Length_input": "티쓰 렝쓰", "Indicator_input": "인디케이터", "Box size assignment method": "박스 사이즈 어사인먼트 메쏘드", "Open Interval Dialog": "인터벌대화창열기", "Shanghai": "상하이", "Athens": "아테네", "Fib Speed Resistance Arcs": "피보나치 속도 저항 원호", "Content": "내용", "middle": "가운데", "Lock Cursor In Time": "커서시간고정", "Intermediate": "중간", "Eraser": "지우개", "Relative Vigor Index_study": "렐러티브 비고르 인덱스 (Relative Vigor Index)", "Envelope_study": "엔빌로프 (Envelope)", "Symbol Labels": "종목이름", "Pre Market": "프리-마켓", "Horizontal Line": "가로줄", "O_in_legend": "시", "Confirmation": "확인", "HL Bars": "고저봉", "Lines:": "선", "Hide Favorite Drawings Toolbar": "자주 쓰는 드로잉 툴바 숨기기", "Buenos Aires": "부에노스아이레스", "X Cross": "X 크로스", "Bangkok": "방콕", "Profit Level. Ticks:": "수익레벨틱:", "Show Date/Time Range": "날짜/시간 구간보기", "Level {0}": "{0} 레벨", "Favorites": "즐겨찾기", "Horz Grid Lines": "가로격자선", "-DI_input": "-DI", "Price Range": "가격범위", "day": "날", "deviation_input": "디비에이션", "Account Size": "어카운트 사이즈", "UTC": "표준시", "Time Interval": "시간간격", "Success text color": "성공문자열색", "ADX smoothing_input": "ADX 스무딩", "%d hour": "%d 시간", "Order size": "오더 사이즈", "Drawing Tools": "드로잉툴", "Save Drawing Template As": "드로잉 템플릿 다른 이름으로 저장", "Tokelau": "토켈라우", "Traditional": "트래디셔널", "Chaikin Money Flow_study": "체이킨 머니 플로우 (Chaikin Money Flow)", "Ease Of Movement_study": "이즈 오브 무브먼트 (Ease Of Movement)", "Defaults": "기본설정", "Percent_input": "퍼센트", "Interval is not applicable": "쓸 수 없는 인터벌", "short_input": "쇼트", "Visual settings...": "보기설정...", "RSI_input": "RSI", "Chatham Islands": "채텀 제도", "Detrended Price Oscillator_input": "디트렌디드 프라이스 오실레이터", "Mo_day_of_week": "월", "Up Wave 4": "업 웨이브 4", "center": "가운데", "Vertical Line": "세로줄", "Bogota": "보고타", "Show Splits on Chart": "차트에 주식분할보기", "Sorry, the Copy Link button doesn't work in your browser. Please select the link and copy it manually.": "귀하의 브라우저에서는 카피 링크 버튼이 작동하지 않습니다. 링크를 고르고 직접 카피하시기 바랍니다.", "Levels Line": "레벨 라인", "Events & Alerts": "이벤트 & 얼러트", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "아룬 다운", "Add To Watchlist": "왓치리스트에 넣기", "Total": "합계", "Price": "가격", "left": "왼쪽", "Lock scale": "눈금고정", "Limit_input": "리밋", "Baseline": "베이스라인", "Price Oscillator_study": "프라이스 오실레이터 (Price Oscillator)", "smalen1_input": "smalen1", "Drawing Template '{0}' already exists. Do you really want to replace it?": "같은 이름의 드로잉 템플릿 '{0}' 이 이미 있습니다. 정말로 바꾸시겠습니까?", "Show Middle Point": "미들 포인트 보기", "KST_input": "KST", "Extend Right End": "오른쪽끝확장", "Base currency": "베이스 통화", "Line - Low": "라인 - 저가", "Price_input": "프라이스", "Gann Fan": "간 팬", "Weeks": "주", "McGinley Dynamic_study": "맥긴리 다이내믹 (McGinley Dynamic)", "Relative Volatility Index_study": "상대변동성지수 (Relative Volatility Index)", "Source Code...": "소스코드...", "PVT_input": "PVT", "Show Hidden Tools": "숨긴툴 보기", "Hull Moving Average_study": "헐 무빙 애버리지 (Hull Moving Average)", "Symbol Prev. Close Value": "심볼 이전 클로즈 밸류", "Istanbul": "이스탄불", "{0} chart by TradingView": "{0} 차트 제공 TradingView", "Right Shoulder": "오른어깨", "Remove Drawing Tools": "드로잉툴 없애기", "Friday": "금요일", "Zero_input": "제로", "Company Comparison": "회사비교", "Stochastic Length_input": "스토캐스틱 렝쓰", "mult_input": "곱", "URL cannot be received": "URL 을 받을 수 없음", "Success back color": "성공배경색", "E_data_mode_end_of_day_letter": "종", "Trend-Based Fib Extension": "추세기반 피보나치 확장", "Top": "탑", "Double Curve": "더블곡선", "Stochastic RSI_study": "스토캐스틱 RSI (Stochastic RSI)", "Oops!": "아이쿠!", "Horizontal Ray": "가로빛", "smalen3_input": "smalen3", "Ok": "확인", "Script Editor...": "스크립트편집기...", "Are you sure?": "맞습니까?", "Trades on Chart": "차트위 트레이드", "Listed Exchange": "상장 거래소", "Error:": "에러", "Fullscreen mode": "전체화면모드", "Add Text Note For {0}": "{0}에 텍스트노트 넣기", "K_input": "K", "Do you really want to delete Drawing Template '{0}' ?": "정말로 드로잉 템플리트 '{0}' 을 지우시겠습니까?", "ROCLen3_input": "ROCLen3", "Micro": "마이크로", "Text Color": "문자열색", "Rename Chart Layout": "차트 레이아웃이름 바꾸기", "Built-ins": "빌트인", "Background color 2": "배경색 2", "Drawings Toolbar": "드로잉 툴바", "Moving Average Channel_study": "무빙 애버리지 채널", "New Zealand": "뉴질랜드", "CHOP_input": "CHOP", "Apply Defaults": "기본설정", "% of equity": "에쿼티 %", "Extended Alert Line": "확장 얼러트 라인", "Note": "노트", "OK": "확인", "like": "좋아요", "Show": "보기", "{0} bars": "{0} 봉", "Lower_input": "로우어", "Created ": "만듬 ", "Warning": "경고", "Elder's Force Index_study": "엘더즈 포스 인덱스 (Elder's Force Index)", "Show Earnings on Chart": "차트에 기업수익 보기", "ATR_input": "ATR", "Low": "저가", "Bollinger Bands %B_study": "볼린저 밴드 %B (Bollinger Bands %B)", "Time Zone": "타임존", "right": "오른쪽", "%d month": "%d 달", "Wrong value": "잘못된 값", "Upper Band_input": "어퍼 밴드", "Sun": "일", "Rename...": "...로 이름 바꾸기", "start_input": "스타트", "No indicators matched your criteria.": "찾는 지표가 없습니다.", "Commission": "커미션", "Down Color": "다운 칼라", "Short length_input": "쇼트 렝쓰", "Kolkata": "콜카타", "Submillennium": "서브밀레니엄", "Technical Analysis": "기술적분석", "Show Text": "문자열보기", "Channel": "채널", "FXCM CFD data is available only to FXCM account holders": "FXCM CFD 데이터는 FXCM 계정을 가진 사람만 쓸 수 있습니다", "Lagging Span 2 Periods_input": "래깅 스팬 2 피어리어드", "Connecting Line": "연결선", "Seoul": "서울", "bottom": "아래", "Teeth_input": "티쓰", "Sig_input": "Sig", "Open Manage Drawings": "드로잉 관리 열기", "Save New Chart Layout": "새 차트레이아웃 저장", "Fib Channel": "피보나치 채널", "Save Drawing Template As...": "...로 드로잉템플릿 저장", "Minutes_interval": "분", "Up Wave 2 or B": "업 웨이브 2 또는 B", "Columns": "컬럼", "Directional Movement_study": "디렉셔널 무브먼트 (Directional Movement)", "roclen2_input": "roclen2", "Apply WPT Down Wave": "WPT Down Wave 적용", "Not applicable": "쓸 수 없음", "Bollinger Bands %B_input": "볼린저 밴드 %B", "Default": "기본설정", "Template name": "템플릿이름", "Indicator Values": "지표값", "Lips Length_input": "Lips 길이", "Toggle Log Scale": "로그눈금토글", "L_in_legend": "저", "Remove custom interval": "커스텀 인터벌 없애기", "shortlen_input": "shortlen", "Quotes are delayed by {0} min": "{0} 분 지연 호가", "Hide Events on Chart": "차트에서 이벤트 숨기기", "Cash": "캐쉬", "Profit Background Color": "수익배경색", "Bar's Style": "봉스타일", "Exponential_input": "익스포넨셜", "Down Wave 5": "다운 웨이브 5", "Previous": "이전", "Stay In Drawing Mode": "계속그리기 모드", "Comment": "코멘트", "Connors RSI_study": "코너즈 RSI", "Bars": "봉", "Show Labels": "라벨보기", "Flat Top/Bottom": "위나 아래 수평", "Symbol Type": "심볼 타입", "December": "12월", "Lock drawings": "드로잉 잠금", "Border color": "경계색", "Change Seconds From": "...를 초로 바꾸기", "Left Labels": "왼쪽라벨", "Insert Indicator...": "지표넣기", "ADR_B_input": "ADR_B", "Paste %s": "%s 붙여넣기", "Change Symbol...": "종목바꾸기...", "Timezone": "타임존", "Invite-only script. You have been granted access.": "초대전용 스크립트. 귀하에게 접근이 허락되었습니다.", "Color 6_input": "칼라 6", "Oct": "10월", "ATR Length": "ATR 렝쓰", "{0} financials by TradingView": "{0} 파이낸셜 제공 TradingView", "Extend Lines Left": "선왼쪽연장", "Feb": "2월", "Transparency": "투명도", "No": "아니오", "June": "6월", "Tweet": "트윗", "Cyclic Lines": "사이클릭 라인", "length28_input": "length28", "ABCD Pattern": "ABCD 패턴", "When selecting this checkbox the study template will set \"__interval__\" interval on a chart": "이 체크박스를 고르면 스터디 템플릿은 차트 인터벌을 \"__interval__\"로 세팅합니다", "Add": "추가", "OC Bars": "OC 바", "Millennium": "밀레니엄", "On Balance Volume_study": "온밸런스볼륨 (On Balance Volume)", "Apply Indicator on {0} ...": "{0}에 지표적용...", "NEW": "새노트", "Chart Layout Name": "차트레이아웃 이름", "Up bars": "업 바", "Hull MA_input": "Hull 이평", "Schiff": "쉬프", "Lock Scale": "눈금고정", "distance: {0}": "거리: {0}", "Extended": "확장", "Square": "네모", "log": "로그눈금", "NO": "아니오", "Top Margin": "위여백", "Up fractals_input": "업 프랙탈", "Insert Drawing Tool": "그림툴넣기", "OHLC Values": "시고저종 값", "Correlation_input": "코릴레이션", "Session Breaks": "세션구분", "Add {0} To Watchlist": "왓치리스트에 {0} 추가", "Anchored Note": "고정위치노트", "lipsLength_input": "lipsLength", "Apply Indicator on {0}": "{0}에 지표적용", "UpDown Length_input": "업다운 렝쓰", "Price Label": "가격라벨", "November": "11월", "Tehran": "테헤란", "Balloon": "풍선", "Track time": "시간추적", "Background Color": "배경색", "an hour": "한시간", "Right Axis": "오른축", "D_data_mode_delayed_streaming_letter": "지", "VI -_input": "VI -", "slowLength_input": "슬로우렝쓰", "Click to set a point": "그릴지점 클릭", "Save Indicator Template As...": "다음으로 지표 템플릿 저장...", "Arrow Up": "애로우 업", "n/a": "없음", "Indicator Titles": "지표이름", "Failure text color": "실패문자색", "Sa_day_of_week": "토", "Net Volume_study": "순거래량 (Net Volume)", "Error": "에러", "Edit Position": "포지션 편집", "RVI_input": "RVI", "Centered_input": "센터드", "Recalculate On Every Tick": "매틱마다 재계산", "Left": "왼쪽", "Simple ma(oscillator)_input": "단순 이평(오실레이터)", "Compare": "비교", "Fisher Transform_study": "피셔 트랜스폼 (Fisher Transform)", "Show Orders": "주문보기", "Zoom In": "크게보기", "Length EMA_input": "Length EMA", "Enter a new chart layout name": "새 차트레이아웃 이름을 넣으시오", "Signal Length_input": "시그널 렝쓰", "FAILURE": "실패", "Point Value": "포인트밸류", "D_interval_short": "일", "MA with EMA Cross_study": "MA with EMA Cross", "Label Up": "레이블 업", "Price Channel_study": "프라이스 채널", "Close": "종", "ParabolicSAR_input": "파라볼릭SAR", "Log Scale_scale_menu": "로그눈금", "MACD_input": "MACD", "Do not show this message again": "이 메시지 다시 보지 않기", "{0} P&L: {1}": "{0} 손익: {1}", "No Overlapping Labels": "오버래핑 라벨 없음", "Arrow Mark Left": "왼화살표", "Slow length_input": "슬로우 렝쓰", "Line - Close": "라인 - 종가", "(O + H + L + C)/4": "(시 + 고 + 저 + 종)/3", "Confirm Inputs": "인풋 확인", "Open_line_tool_position": "포지션보유", "Lagging Span_input": "래깅 스팬", "Subminuette": "서브미뉴에트", "Thursday": "목요일", "Arrow Down": "애로우 다운", "Vancouver": "밴쿠버", "Triple EMA_study": "트리플 EMA (Triple EMA)", "Elliott Correction Wave (ABC)": "엘리엇 코렉션 파동 (ABC)", "Error while trying to create snapshot.": "스냅샷 만들기 에러", "Label Background": "라벨배경색", "Templates": "템플릿", "Please report the issue or click Reconnect.": "문제를 보고하거나 다시 연결을 누르십시오.", "Normal": "정상", "Signal Labels": "신호라벨", "Delete Text Note": "텍스트 노트 지우기", "May": "5월", "Detrended Price Oscillator_study": "디트렌디드 프라이스 오실레이터 (Detrended Price Oscillator)", "Color 5_input": "칼라 5", "Fixed Range_study": "픽스트 레인지", "Up Wave 1 or A": "업 웨이브 1 또는 A", "Scale Price Chart Only": "가격차트만 스케일", "Unmerge Up": "위로 떼냄", "auto_scale": "자동", "Short period_input": "쇼트 피어리어드", "Background": "배경", "Study Templates": "스터디템플릿", "Up Color": "업 칼라", "Apply Elliot Wave Intermediate": "인터미디어트 엘리엇파동 적용", "VWMA_input": "VWMA", "Lower Deviation_input": "로우어 디비에이션", "Save Interval": "인터벌 저장", "February": "2월", "Reverse": "리버스", "Oops, something went wrong": "아이쿠, 뭔가 잘못되었네요", "Add to favorites": "즐겨찾기에 넣기", "Median": "평균값", "ADX_input": "ADX", "Remove": "없애기", "len_input": "len", "Arrow Mark Up": "위화살표", "April": "4월", "Active Symbol": "액티브종목", "Extended Hours": "확장시간", "Crosses_input": "크로스", "Middle_input": "미들", "Read our blog for more info!": "당사의 블로그를 통해 자세히 알아보십시오!", "Sync drawing to all charts": "모든 차트에 드로잉 동기화", "LowerLimit_input": "로우어 리밋", "Know Sure Thing_study": "노우 슈어 씽 (Know Sure Thing)", "Copy Chart Layout": "차트 레이아웃 복사", "Compare...": "비교...", "1. Slide your finger to select location for next anchor
2. Tap anywhere to place the next anchor": "1. 손가락으로 밀어 다음 앵커 자리를 고르시오
2. 아무 곳이나 톡 두들겨 다음 앵커 자리를 정하십시오", "Text Notes are available only on chart page. Please open a chart and then try again.": "텍스트노트는 차트에서만 쓸 수 있습니다. 차트열기를 한뒤 다시 해보세요.", "Color": "색", "Aroon Up_input": "아룬 업", "Singapore": "싱가폴", "Scales Lines": "눈금선", "Type the interval number for munute charts (i.e. 5 if it is going to be a five minute chart). Or number plus letter for H (Hourly), D (Daily), W (Weekly), M (Monthly) intervals (i.e. D or 2H)": "분차트 인터벌값 (보기, 5분차트면 5) 또는 숫자와 H (시간), D (날), W (주), M (달) 과 같은 인터벌 글자 (보기, D 또는 2H) 를 치십시오.", "Ellipse": "타원", "Up Wave C": "업 웨이브 C", "Show Distance": "거리 보기", "Risk/Reward Ratio: {0}": "위험/보상율: {0}", "Restore Size": "원래 크기로", "Volume Oscillator_study": "볼륨 오실레이터 (Volume Oscillator)", "Honolulu": "호노룰루", "Williams Fractal_study": "윌리엄스 프랙탈 (Williams Fractal)", "Merge Up": "위로 겹침", "Right Margin": "오른여백", "Moscow": "모스코바", "Warsaw": "바르샤바"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/ms_MY.json b/static/Kline/charting_library/static/localization/translations/ms_MY.json new file mode 100644 index 0000000..155097e --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/ms_MY.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "Tanda", "Months_interval": "Bulan", "Realtime": "Masa Nyata", "Callout": "Petak bual", "Sync to all charts": "Segerakkan semua carta", "month": "bulan", "roclen1_input": "Panjangroc1", "Unmerge Down": "Nyahgabung Ke Bawah", "Percents": "Peratus", "Search Note": "Nota Carian", "Do you really want to delete Chart Layout '{0}' ?": "Anda benar-benar ingin memadam Susunatur Carta '{0}' ?", "Quotes are delayed by {0} min and updated every 30 seconds": "Sebut Harga ditangguh selama {0} minit dan dikemas kini setiap 30 saat", "Magnet Mode": "Mod Magnet", "OSC_input": "OSC", "Hide alert label line": "Sembunyikan garis label makluman", "Volume_study": "Volume", "Lips_input": "Bibir", "Show real prices on price scale (instead of Heikin-Ashi price)": "Tunjuk harga benar atas skala harga (bukannya harga Heikin-Ashi)", "Base Line_input": "Garis Dasar", "Step": "Langkah", "Insert Study Template": "Masukkan Templat Kajian", "SMALen2_input": "PanjangSMA2", "Bollinger Bands_study": "Bollinger Bands", "Show/Hide": "Tunjuk/Sembunyi", "Upper_input": "Atas", "exponential_input": "Eksponen", "Move Up": "Gerak Ke Atas", "Symbol Info": "Maklumat Simbol", "This indicator cannot be applied to another indicator": "Indikator ini tidak boleh digunapakai pada indikator lain", "Scales Properties...": "Sifat Skala...", "Count_input": "Bilangan", "Full Circles": "bulatan penuh", "Industry": "Industri", "OnBalanceVolume_input": "BakiVolum", "Cross_chart_type": "Silang", "H_in_legend": "H", "a day": "satu hari", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Accumulation/Distribution", "Rate Of Change_study": "Rate Of Change", "Text Font": "Font Teks", "in_dates": "dalam", "Clone": "Klon", "Color 7_input": "Warna 7", "Chop Zone_study": "Chop Zone", "Scales Properties": "Sifat Skala", "Trend-Based Fib Time": "Fib Time Berdasarkan Trend", "Remove All Indicators": "Keluarkan Semua Penunjuk", "Oscillator_input": "Oscillator", "Last Modified": "Diubah Suai Kali Terakhir", "yay Color 0_input": "yay Warna 0", "Labels": "Label", "Chande Kroll Stop_study": "Chande Kroll Stop", "Hours_interval": "Jam", "Allow up to": "Dibenarkan sehingga", "Scale Right": "Skala Kanan", "Money Flow_study": "Money Flow", "siglen_input": "jaraksig", "Indicator Labels": "Label Indikator", "__specialSymbolOpen__Tomorrow at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Esok pada__specialSymbolClose____dayTime__", "Toggle Percentage": "Togol Peratus", "Remove All Drawing Tools": "Keluarkan Semua Alat Lukisan", "Remove all line tools for ": "Keluarkan semua alat garisan untuk ", "Linear Regression Curve_study": "Linear Regression Curve", "Symbol_input": "Simbol", "increment_input": "kenaikan", "Compare or Add Symbol...": "Bandingkan atau Tambah Simbol...", "__specialSymbolOpen__Last__specialSymbolClose__ __dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Terakhir__specialSymbolClose____dayName____specialSymbolOpen__di__specialSymbolClose__ __dayTime__", "Save Chart Layout": "Simpan Susun Atur Carta", "Number Of Line": "Nombor Garisan", "Label": "label", "Post Market": "Lepas-Pasaran", "second": "saat", "Change Hours To": "Tukar Jam Kepada", "smoothD_input": "lincirD", "Falling_input": "Jatuh", "X_input": "X", "Risk/Reward short": "Singkat risiko/ganjaran", "Donchian Channels_study": "Donchian Channels", "Entry price:": "entri harga", "Circles": "Bulatan", "Head": "Kepala", "Stop: {0} ({1}) {2}, Amount: {3}": "Berhenti: {0} ({1}) {2}, Jumlah: {3}", "Mirrored": "Cermin", "Ichimoku Cloud_study": "Ichimoku Cloud", "Signal smoothing_input": "Pelicinan Isyarat", "Toggle Log Scale": "Togol Skala Log", "Toggle Auto Scale": "Togol Skala Auto", "Triangle Down": "Segitiga Menurun", "Apply Elliot Wave Minor": "Gunapakai Gelombang Elliot Kecil", "Slippage": "Gelinciran", "Smoothing_input": "Pelicinan", "Color 3_input": "Warna 3", "Jaw Length_input": "Panjang Rahang", "Inside": "dalam", "Delete all drawing for this symbol": "Padamkan semua lukisan untuk simbol ini", "Fundamentals": "Asas", "Keltner Channels_study": "Keltner Channels", "Long Position": "Kedudukan Panjang", "Bands style_input": "Gaya Bands", "Undo {0}": "Buat asal {0}", "With Markers": "Dengan Penanda", "Momentum_study": "Momentum", "MF_input": "MF", "Switch to the next chart": "Alih ke carta seterusnya", "charts by TradingView": "carta oleh TradingView", "Fast length_input": "Jarak Laju", "Apply Elliot Wave": "Gunapakai Gelombang Elliot", "Disjoint Angle": "Sudut Tak Berkait", "W_interval_short": "W", "Show Only Future Events": "Hanya Tunjuk Peristiwa Masa Depan", "Log Scale": "Skala Log", "Line - High": "garisan tinggi", "Minuette": "Minuet", "Equality Line_input": "Garis Kesamarataan", "Short_input": "Pendek", "Tuesday": "Selasa", "Line": "Garisan", "Session": "Sesi", "Down fractals_input": "Fraktal Menurun", "smalen2_input": "jaraksma2", "isCentered_input": "Tertumpu", "Border": "Sempadan", "Klinger Oscillator_study": "Klinger Oscillator", "Absolute": "mutlak", "Tue": "Selasa", "Style": "Gaya", "Show Left Scale": "Tunjuk Skala Kiri", "SMI Ergodic Indicator/Oscillator_study": "SMI Ergodic Indicator/Oscillatordic", "Aug": "Ogos", "Last available bar": "Bar terakhir tersedia", "Manage Drawings": "Urus Lukisan", "Analyze Trade Setup": "Analisa Setup Dagangan", "No drawings yet": "Belum ada lukisan", "SMI_input": "SMI", "Chande MO_input": "Chande MO", "jawLength_input": "PanjangRahang", "TRIX_study": "TRIX", "Show Bars Range": "Tunjukkan Julat Bar", "RVGI_input": "RVGI", "Last edited ": "Suntingan terakhir ", "signalLength_input": "PanjangSignal", "Reset Settings": "Tetapkan Semula Pengesetan", "d_dates": "d", "Point & Figure": "Titik & Angka", "August": "Ogos", "Recalculate After Order filled": "Kira semula selepas pesanan dipenuhi", "Source_compare": "Sumber", "Down bars": "Bar turun", "Correlation Coefficient_study": "Correlation Coefficient", "Delayed": "Tertangguh", "Bottom Labels": "Label Bawah", "Text color": "Warna teks", "Levels": "tahap", "Short Length_input": "Jarak Singkat", "teethLength_input": "Panjanggigi", "Visible Range_study": "Julat yang boleh dilihat", "Open {{symbol}} Text Note": "Buka {{symbol}} Nota Teks", "October": "Oktober", "Lock All Drawing Tools": "Kuncikan Semua Alat Lukisan", "Long_input": "Panjang", "Right End": "Hujung Kanan", "Show Symbol Last Value": "Tunjuk Nilai Akhir Simbol", "Head & Shoulders": "Kepala dan Bahu", "Do you really want to delete Study Template '{0}' ?": "Anda benar-benar mahu memadamkan Templat Kajian '{0}'?", "Favorite Drawings Toolbar": "Bar Alat Lukisan Kegemaran", "Properties...": "Sifat...", "Reset Scale": "Tetapkan Semula Skala", "MA Cross_study": "MA Cross", "Trend Angle": "Sudut Trend", "Crosshair": "Rerambut Silang", "Signal line period_input": "Jangkamasa Garis Isyarat", "Previous Close Price Line": "Garisan Harga Tutup Sebelumnya", "Line Break": "Garisan Pecah", "Quantity": "Kuantiti", "Price Volume Trend_study": "Price Volume Trend", "Auto Scale": "Skala Auto", "hour": "jam", "Delete chart layout": "Padamkan susun atur carta", "Text": "Teks", "F_data_mode_forbidden_letter": "F", "Risk/Reward long": "Panjang risiko/ganjaran", "Long RoC Length_input": "Jarak Panjang RoC", "Length3_input": "Panjang3", "+DI_input": "+DI", "Length_input": "Panjang", "Use one color": "Guna satu warna", "Chart Properties": "Ciri-ciri Carta", "No Overlapping Labels_scale_menu": "Tiada Label Bertindih", "Exit Full Screen (ESC)": "Keluar Dari Skrin Penuh (ESC)", "MACD_study": "MACD", "Show Economic Events on Chart": "Tunjuk Perisitwa Ekonomi atas Carta", "%s ago_time_range": "%s yang lalu", "Zoom In": "Zum Masuk", "Failure back color": "Kegagalan warna belakang", "Below Bar": "Di bawah Bar", "Time Scale": "Skala Masa", "

Only D, W, M intervals are supported for this symbol/exchange. You will be automatically switched to a D interval. Intraday intervals are not available because of exchange policies.

": "

hanya tempoh D,W,M disokong untuk simbol ini/ pertukaran. Anda akan ditukar ke tempoh D secara automatik. Berdasarkan polisi pertukaran, selang intraday adalah tidak boleh didapati.

", "Extend Left": "Lanjut Kiri", "Date Range": "Julat tarikh", "Min Move": "Gerak Minima", "Price format is invalid.": "Format harga tidak sah.", "Show Price": "Tunjuk Harga", "Level_input": "Aras", "Commodity Channel Index_study": "Commodity Channel Index", "Elder's Force Index_input": "Elder's Force Index", "Currency": "Mata wang", "Color bars based on previous close": "Warnakan bar-bar berdasarkan harga tutup sebelumnya", "Change band background": "Tukar band latar", "Target: {0} ({1}) {2}, Amount: {3}": "Sasaran: {0} ({1}) {2}, Jumlah: {3}", "Zoom Out": "Zum Keluar", "This chart layout has a lot of objects and can't be published! Please remove some drawings and/or studies from this chart layout and try to publish it again.": "Carta ini mempunyai terlalu banyak objek dan tidak dapat diterbitkan! Sila buangkan beberapa lukisan atau/dan kajian dari carta ini dan cuba untuk terbitkan lagi.", "Anchored Text": "Teks Tetap", "Edit {0} Alert...": "Edit Makluman {0}", "Up Wave 5": "Gelombang Naik 5", "Qty: {0}": "Kuantiti: {0}", "Aroon_study": "Aroon", "show MA_input": "tunjukMA", "Lead 1_input": "Pendulu 1", "Short Position": "Kedudukan Singkat", "SMALen1_input": "PanjangSMA1", "P_input": "P", "Apply Default": "Gunapakai Sediakala", "SMALen3_input": "PanjangSMA3", "Average Directional Index_study": "Average Directional Index", "Fr_day_of_week": "Fr", "Invite-only script. Contact the author for more information.": "Skrip Jemputan Sahaja. Hubungi empunya untuk keterangan lanjut.", "Curve": "Lengkung", "a year": "satu tahun", "Target Color:": "Warna sasaran:", "Bars Pattern": "Corak Bar", "D_input": "D", "Font Size": "saiz huruf", "Create Vertical Line": "Cipta Garisan Menegak", "p_input": "p", "Rotated Rectangle": "Segi Empat Tepat Berputar", "Chart layout name": "Nama susun atur carta", "Apply Manual Decision Point": "Gunapakai Titik Keputusan Manual", "Dot": "Titik", "Target back color": "Warna sasaran belakang", "All": "Semua", "orders_up to ... orders": "pesanan", "Dot_hotkey": "Titik", "Lead 2_input": "Pendulu 2", "Save image": "Simpan imej", "Move Down": "Gerak Ke Bawah", "Triangle Up": "Segitiga Menaik", "Box Size": "Saiz Kotak", "Navigation Buttons": "Butang Navigasi", "Apply": "Memohon", "Down Wave 3": "Gelombang Ke Bawah 3", "Plots Background_study": "Latar Belakang Plot", "Marketplace Add-ons": "Tambahan Pasaran", "Sine Line": "Garis Sinus", "Fill": "Isi", "%d day": "%d hari", "Hide": "Sembunyikan", "Toggle Maximize Chart": "Togol Carta Maksima", "Target text color": "Warna teks sasaran", "Scale Left": "Skala Kiri", "Elliott Wave Subminuette": "Subminit Gelombang Elliott ", "Color based on previous close_input": "Color based on previous close", "Down Wave C": "Gelombang Ke Bawah C", "Countdown": "Kira detik", "UO_input": "UO", "Pyramiding": "Membina piramid", "Go to Date...": "Pergi ke Tarikh...", "Text Alignment:": "Jajaran Teks:", "R_data_mode_realtime_letter": "R", "Extend Lines": "melanjutkan baris", "Conversion Line_input": "Garis Pertukaran", "March": "Mac", "Su_day_of_week": "Su", "Exchange": "Pertukaran", "Arcs": "Lengkuk-lengkuk", "Regression Trend": "Trend Regresi", "Symbol Description": "Huraian Simbol", "Double EMA_study": "Double EMA", "minute": "minit", "All Indicators And Drawing Tools": "Semua Indikator Dan Alatan Lukis", "Indicator Last Value": "Nilai Akhir Indikator", "Sync drawings to all charts": "Segerakkan lukisan kepada semua carta", "Change Average HL value": "tukar nilai purata HL", "Stop Color:": "Warna Renti:", "Stay in Drawing Mode": "Tinggal Di Mod Lukisan", "Bottom Margin": "Margin Bawah", "Save Chart Layout saves not just some particular chart, it saves all charts for all symbols and intervals which you are modifying while working with this Layout": "Simpan Susun Atur Carta bukan sahaja menyimpan beberapa carta yang tertentu, ia menyimpan semua carta bagi semua symbol dan selang yang anda sedang mengubah suai ketika menggunakan Susun Atur ini.", "Average True Range_study": "Average True Range", "Max value_input": "Nilai Maksima", "MA Length_input": "Panjang MA", "Invite-Only Scripts": "Skrip Jemputan Sahaja", "in %s_time_range": "dalam %s", "UpperLimit_input": "Had Atas", "sym_input": "sym", "DI Length_input": "Panjang DI", "Scale": "Skala", "Periods_input": "Tempoh", "Arrow": "Anak Panah", "useTrueRange_input": "gunakan JulatBenar", "Basis_input": "Asas", "Arrow Mark Down": "Anak Panah Tunjuk Bawah", "lengthStoch_input": "PanjangStoch", "Objects Tree": "Pepohon Objek", "Remove from favorites": "Sisihkan daripada Kegemaran", "Show Symbol Previous Close Value": "Tunjuk Nilai Tutup Simbol Sebelumnya", "Scale Series Only": "Skalakan Siri Sahaja", "Source text color": "Warna teks sumber", "Simple": "Mudah", "Report a data issue": "Laporkan isu data", "Arnaud Legoux Moving Average_study": "Arnaud Legoux Moving Average", "Smoothed Moving Average_study": "Smoothed Moving Average", "Lower Band_input": "Jalur Bawah", "Verify Price for Limit Orders": "Harga pengesahan untuk Pesanan Had", "VI +_input": "VI +", "Line Width": "Lebar Garis", "Contracts": "Kontrak-kontrak", "Always Show Stats": "Sentiasa Tunjuk Statistik", "Down Wave 4": "Gelombang Ke Bawah 4", "ROCLen2_input": "PanjangROC2", "Simple ma(signal line)_input": "MA Mudah(Garis Isyarat)", "Change Interval...": "Tukar selang masa...", "Public Library": "Perpustakaan Awam", " Do you really want to delete Drawing Template '{0}' ?": " Betulkah anda hendak padam Templat Lakaran '{0}' ?", "Sat": "Sabtu", "Left Shoulder": "Bahu Kiri", "week": "minggu", "CRSI_study": "CRSI", "Close message": "Tutup mesej", "Base currency": "Matawang asas", "Show Drawings Toolbar": "Tunjuk Bar Alat Lukisan", "Chaikin Oscillator_study": "Chaikin Oscillator", "Price Source": "Sumber Harga", "Market Open": "Pasaran Dibuka", "Color Theme": "Tema Warna", "Projection up bars": "Unjuran bar ke atas", "Awesome Oscillator_study": "Awesome Oscillator", "Bollinger Bands Width_input": "Bollinger Bands Width", "long_input": "Panjang", "Error occured while publishing": "Kesilapan berlaku semasa menerbitkan", "Long length_input": "Jarak Panjang", "Color 1_input": "Warna 1", "Moving Average Weighted_study": "Moving Average Weighted", "Save": "Simpan", "Type": "Jenis", "Wick": "Sumbu", "Accumulative Swing Index_study": "Accumulative Swing Index", "Load Chart Layout": "Muatkan Susun Atur Carta", "Show Values": "Tunjuk Nilai", "Fisher_input": "Fisher", "Bollinger Bands Width_study": "Bollinger Bands Width", "This chart layout has more than 1000 drawings, which is a lot! This may negatively affect performance, storage and publishing. We recommend to remove some drawings to avoid potential performance issues.": "Susun atur carta ini mempunyai lebih daripada 1000 lukisan, iaitu terlalu banyak! Ini mungkin akan menjejaskan prestasi, penyimpanan, dan penerbitan dengan cara yang negatif. Kami mencadangkan bahawa beberapa lukisan dikeluarkan untuk mengelakkan berlakunya isu-isu prestasi.", "Left End": "Hujung Kiri", "%d year": "%d tahun", "Always Visible": "Sentiasa Kelihatan", "S_data_mode_snapshot_letter": "S", "Flag": "Maklum", "Elliott Wave Circle": "Bulatan Gelombang Elliott", "Earnings breaks": "Pendapatan Lampauhad", "Change Minutes From": "Tukar Minit Daripada", "Do not ask again": "Jangan tanya lagi", "Displacement_input": "Anjakan", "smalen4_input": "jaraksma4", "CCI_input": "CCI", "Upper Deviation_input": "Sisihan Atas", "XABCD Pattern": "Corak XABCD", "Copied to clipboard": "Telah disalin ke clipboard", "Flipped": "Terbalik", "DEMA_input": "DEMA", "Move_input": "Move", "NV_input": "NV", "Choppiness Index_study": "Choppiness Index", "Study Template '{0}' already exists. Do you really want to replace it?": "Template Kajian '{0}' sedia ada. Adakah anda mahu menukarnya?", "Merge Down": "Gabung Ke Bawah", " per contract": " per kontrak", "Overlay the main chart": "Tindih atas carta utama", "Screen (No Scale)": "Paparan (Tiada Skala)", "Delete": "Padam", "Save Indicator Template As": "Simpan Template Indikator Sebagai..", "Length MA_input": "Panjang MA", "percent_input": "peratus", "{0} copy": "{0} salin", "Avg HL in minticks": "Purata HL dalam tik minima", "Accumulation/Distribution_input": "Accumulation/Distribution", "Sync": "Segerak", "C_in_legend": "C", "Weeks_interval": "Minggu", "smoothK_input": "lincirK", "Percentage_scale_menu": "Peratus", "Change Extended Hours": "Tukar Masa Lanjutan", "MOM_input": "MOM", "h_interval_short": "h", "Change Interval": "Tukar selang masa", "Change area background": "Tukar kawasan latar", "Modified Schiff": "Schiff diubahsuai", "top": "atas", "Custom color...": "Warna langganan...", "Send Backward": "Hantar Ke Belakang", "Mexico City": "Bandar Mexico", "TRIX_input": "TRIX", "Show Price Range": "Tunjukkan Julat Harga", "Elliott Major Retracement": "Anjakan Kembali Utama Elliott", "ASI_study": "ASI", "Notification": "Pemberitahuan", "Fri": "Jumaat", "just now": "sebentar tadi", "Forecast": "Ramalan", "Fraction part is invalid.": "Bahagian pecahan adalah tidak sah.", "Connecting": "Sedang disambung", "Ghost Feed": "Suapan Hantu", "Signal_input": "Isyarat", "Histogram_input": "Histogram", "The Extended Trading Hours feature is available only for intraday charts": "Ciri -ciri Masa Lanjutan Perdagangan hanya didapati untuk carta intrahari", "Stop syncing": "Hentikan penyegerakan", "open": "Buka", "StdDev_input": "Sisihan Piawai", "EMA Cross_study": "EMA Cross", "Conversion Line Periods_input": "Tempoh Garis Pertukaran", "Diamond": "Berlian", "My Scripts": "Skrip Saya", "Monday": "Isnin", "Add Symbol_compare_or_add_symbol_dialog": "Tambah Simbol", "Williams %R_study": "Williams %R", "Symbol": "Simbol", "a month": "satu bulan", "Precision": "Ketepatan", "depth_input": "Kedalaman", "Go to": "Pergi ke", "Please enter chart layout name": "Sila masukkan nama susun atur carta", "Mar": "Mac", "VWAP_study": "VWAP", "Offset": "Imbangan", "Date": "Tarikh", "Apply WPT Up Wave": "Gunapakai Gelombang Menaik WPT", "__dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__dayName____specialSymbolOpen__di__specialSymbolClose__ __dayTime__", "Toggle Maximize Pane": "Togol Anak Tetingkap Maksima", "Search": "Cari", "Zig Zag_study": "Zig Zag", "Actual": "Sebenar", "SUCCESS": "BERJAYA", "Long period_input": "Tempoh Panjang", "length_input": "Panjang", "roclen4_input": "Panjangroc4", "Price Line": "Garis Harga", "Area With Breaks": "Kawasan Terputus", "Median_input": "Median", "Stop Level. Ticks:": "Tahap Henti. Ticks:", "Window Size_input": "Saiz Tetingkap", "Economy & Symbols": "Simbol & Ekonomi", "Circle Lines": "Garisan bulatan", "Visual Order": "Pesanan Visual", "__specialSymbolOpen__Yesterday at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Kelmarin pada__specialSymbolClose____dayTime__", "Stop Background Color": "Warna Latar Belakang Renti", "1. Slide your finger to select location for first anchor
2. Tap anywhere to place the first anchor": "1. Gelongsor jari anda untuk memilih lokasi untuk sauh pertama
2. Tekan mana-mana sahaja untuk meletakkan sauh pertama", "Sector": "sektor", "powered by TradingView": "dikuasakan oleh TradingView", "Text:": "Teks:", "Stochastic_study": "Stochastic", "Marker Color": "Warna Penanda", "TEMA_input": "TEMA", "Min Move 2": "Gerak Minima 2", "Extend Left End": "Lanjut Hujung Kiri", "Projection down bars": "Unjuran bar ke bawah", "Advance/Decline_study": "Advance/Decline", "Any Number": "Sebarang Nombor", "Flag Mark": "Tanda Bendera", "Drawings": "Lukisan", "Cancel": "Batal", "Compare or Add Symbol": "Bandingkan atau Tambah Simbol", "Redo": "Buat Semula", "Hide Drawings Toolbar": "Sembunyikan Bar Alat Lukisan", "Ultimate Oscillator_study": "Ultimate Oscillator", "Vert Grid Lines": "Garisan Grid Menegak", "Growing_input": "Pertumbuhan", "Angle": "Sudut", "Plot_input": "Plot", "Color 8_input": "Warna 8", "Indicators, Fundamentals, Economy and Add-ons": "Indikator, Asas, Ekonomi dan Tambahan", "h_dates": "h", "ROC Length_input": "Panjang ROC", "roclen3_input": "Panjangroc3", "Overbought_input": "Terlebih Beli", "DPO_input": "DPO", "Change Minutes To": "Tukar Minit Kepada", "No study templates saved": "Tiada templat kajian disimpan", "Trend Line": "Garis Trend", "TimeZone": "Zon Masa", "Your chart is being saved, please wait a moment before you leave this page.": "Carta anda sedang disimpan, sila tunggu sebentar sebelum anda meninggalkan halaman ini.", "Percentage": "Peratus", "Tu_day_of_week": "Tu", "RSI Length_input": "Panjang RSI", "Triangle": "Segitiga", "Line With Breaks": "Garis Dengan Pisahan", "Period_input": "Tempoh", "Watermark": "Tera Air", "Trigger_input": "Picu", "SigLen_input": "SigLen", "Extend Right": "Lanjut Kanan", "Color 2_input": "Warna 2", "Show Prices": "Tunjuk Harga", "Unlock": "Nyahkunci", "Copy": "Salin", "high": "Tinggi", "Arc": "Lengkuk", "Edit Order": "mengedit perintah", "January": "Januari", "Arrow Mark Right": "Anak Panah Tunjuk Kanan", "Extend Alert Line": "Lanjutkan Garis Makluman", "Background color 1": "Warna latar 1", "RSI Source_input": "Sumber RSI", "Close Position": "menutup kedudukan", "Stop syncing drawing": "Berhenti menyegerakkan lukisan", "Visible on Mouse Over": "Boleh dilihat pada Mouse Over", "MA/EMA Cross_study": "MA/EMA Cross", "Thu": "Khamis", "Vortex Indicator_study": "Vortex Indicator", "view-only chart by {user}": "Carta pandang sahaja oleh {user}", "ROCLen1_input": "PanjangROC1", "M_interval_short": "M", "Chaikin Oscillator_input": "Chaikin Oscillator", "Price Levels": "Tahap Harga", "Show Splits": "Tunjuk Pecahan", "Zero Line_input": "Garis Sifar", "Replay Mode": "Mod Ulangan", "__specialSymbolOpen__Today at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Hari ini pada__specialSymbolClose____dayTime__", "Increment_input": "Tambahan", "Days_interval": "Hari", "Show Right Scale": "Tunjuk Skala Kanan", "Show Alert Labels": "Tunjuk Label Makluman", "Historical Volatility_study": "Historical Volatility", "Lock": "Kunci", "length14_input": "Panjang14", "High": "Atas", "Q_input": "Q", "Date and Price Range": "Julat Tarikh dan Masa", "Polyline": "Poligaris", "Reconnect": "Sambung semula", "Lock/Unlock": "Kunci/Buka Kunci", "Base Level": "Paras Asas", "Label Down": "Label ke Bawah", "Saturday": "Sabtu", "Symbol Last Value": "Nilai Akhir Simbol", "Above Bar": "Bar Atas", "Studies": "Kajian", "Color 0_input": "Warna 0", "Add Symbol": "Tambah Simbol", "maximum_input": "maksima", "Wed": "Rabu", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "VWMA_study": "VWMA", "fastLength_input": "Panjanglaju", "Time Levels": "Tahap Masa", "Width": "Lebar", "Loading": "Pemuatan", "Template": "Templat", "Use Lower Deviation_input": "Gunakan Sisishan Bawah", "Up Wave 3": "Gelombang Naik 3", "Parallel Channel": "Saluran Selari", "Time Cycles": "Kitaran Masa", "Second fraction part is invalid.": "Bahagian pecahan kedua tidak sah", "Divisor_input": "Pembahagi", "Baseline": "Garis Dasar", "Down Wave 1 or A": "Gelombang Ke Bawah 1 atau A", "ROC_input": "ROC", "Dec": "Dis", "Ray": "Sinar", "Extend": "melanjutkan", "length7_input": "Panjang7", "Bring Forward": "Bawa Ke Hadapan", "Bottom": "Bawah", "Apply Elliot Wave Major": "Gunapakai Gelombang Elliot Utama", "Undo": "Buat asal", "Original": "Asal", "Mon": "Isnin", "Right Labels": "Label Kanan", "Long Length_input": "Jarak Panjang", "True Strength Indicator_study": "True Strength Indicator", "%R_input": "%R", "There are no saved charts": "Tiada carta disimpan", "Instrument is not allowed": "Instrumen tidak dibenarkan", "bars_margin": "bar", "Decimal Places": "Tempat Perpuluhan", "Show Indicator Last Value": "Tunjuk Nilai Akhir Penunjuk", "Initial capital": "Modal Permulaan", "Show Angle": "Tunjuk Sudut", "Mass Index_study": "Mass Index", "More features on tradingview.com": "Ciri selebihnya di tradingview.com", "Objects Tree...": "Pepohon Objek...", "Remove Drawing Tools & Indicators": "Buang Alatan Lukis & Indikator", "Length1_input": "Panjang1", "Always Invisible": "Sentiasa Tidak Kelihatan", "Circle": "Bulatan", "Days": "Hari", "x_input": "x", "Save As...": "Simpan Sebagai...", "Elliott Double Combo Wave (WXY)": "Gelombang Kombo Ganda Dua Elliott (WXY)", "Parabolic SAR_study": "Parabolic SAR", "Any Symbol": "Sebarang Simbol", "Variance": "Varians", "Stats Text Color": "Warna teks statistik", "Minutes": "Minit", "Short RoC Length_input": "Jarak RoC Singkat", "Projection": "Unjuran", "Jaw_input": "Rahang", "Right": "Kanan", "Help": "Pertolongan", "Coppock Curve_study": "Coppock Curve", "Reversal Amount": "Amaun Kembalik", "Reset Chart": "Tetapkan Semula Carta", "Sunday": "Ahad", "Left Axis": "Paksi Kiri", "Open": "Buka", "YES": "YA", "longlen_input": "JarakPanjang", "Moving Average Exponential_study": "Moving Average Exponential", "Source border color": "Warna sumber sempadan", "Redo {0}": "Buat Semula {0}", "Cypher Pattern": "Corak Cypher", "s_dates": "s", "Area": "Kawasan", "Triangle Pattern": "Corak Segitiga", "Balance of Power_study": "Balance of Power", "EOM_input": "EOM", "Shapes_input": "Bentuk", "Oversold_input": "Terlebih Jual", "Apply Manual Risk/Reward": "Gunapakai Risiko/Ganjaran Manual", "Market Closed": "Pasaran Ditutup", "Indicators": "Indikator", "close": "Tutup", "q_input": "q", "You are notified": "Anda telah dimaklumkan", "Font Icons": "Ikon Fon", "%D_input": "%D", "Border Color": "Warna Sempadan", "Offset_input": "Ofset", "Risk": "Risiko", "Price Scale": "Skala Harga", "HV_input": "HV", "Seconds": "saat", "Start_input": "Mula", "Oct": "Okt", "Hours": "Jam", "Send to Back": "Hantar ke Belakang", "Color 4_input": "Warna 4", "Angles": "Sudut-sudut", "Prices": "Harga", "Hollow Candles": "Lilin Berongga", "July": "Julai", "Create Horizontal Line": "Cipta Garisan Mendatar", "Minute": "Minit", "Cycle": "KItaran", "ADX Smoothing_input": "Pelicinan ADX", "One color for all lines": "Satu warna untuk semua baris", "m_dates": "m", "Settings": "Tetapan", "Candles": "Lilin", "We_day_of_week": "We", "Width (% of the Box)": "Lebar (% dari kotak)", "%d minute": "%d minit", "Go to...": "Pergi ke...", "Pip Size": "Saiz Pip", "Wednesday": "Rabu", "This drawing is used in alert. If you remove the drawing, the alert will be also removed. Do you want to remove the drawing anyway?": "Lukisan ini digunakan dalam makluman. Jika anda mengeluarkan lukisan, makluman juga akan dikeluarkan sekali dengan lukisan tersebut . Adakah anda ingin mengeluarkan lukisan?", "Show Countdown": "Tunjuk Pemasa Undur", "Show alert label line": "Tunjuk garis label makluman", "Down Wave 2 or B": "Gelombang Ke Bawah 2 atau B", "MA_input": "MA", "Length2_input": "Panjang2", "not authorized": "tidak dibenarkan", "Session Volume_study": "Volume Sesi", "Image URL": "URL imej", "Submicro": "Submikro", "SMI Ergodic Oscillator_input": "SMI Ergodic Oscillator", "Show Objects Tree": "Tunjuk Pepohon Objek", "Primary": "Utama", "Price:": "Harga:", "Bring to Front": "Bawa Ke Depan", "Brush": "Berus", "Not Now": "Bukan Sekarang", "Yes": "Ya", "C_data_mode_connecting_letter": "C", "SMALen4_input": "PanjangSMA4", "Apply Default Drawing Template": "Gunapakai Templat Lukisan Sediakala", "Compact": "Padat", "Save As Default": "Simpan Sebagai Lalai", "Target border color": "Warna sasaran sempadan", "Invalid Symbol": "Simbol Tidak Sah", "Inside Pitchfork": "Dalam Pitchfork", "yay Color 1_input": "yay Warna 1", "Quandl is a huge financial database that we have connected to TradingView. Most of its data is EOD and is not updated in real-time, however the information may be extremely useful for fundamental analysis.": "Quandl merupakan pangkalan data kewangan yang besar yang kita telah menyambung ke TradingView. Kebanyakan datanya adalah EOD dan tidak dikemaskini dalam masa nyata, walaubagaimanapun, maklumat tersebut mungkin amat berguna untuk analisis asas.", "Hide Marks On Bars": "Sembunyikan tanda-tanda atas bar", "Cancel Order": "Batalkan Pesanan", "Hide All Drawing Tools": "Sembunyikan semua alat lukisan", "WMA Length_input": "Panjang WMA", "Show Dividends on Chart": "Tunjuk Dividen atas Carta", "Show Executions": "Tunjuk Pelaksanaan", "Borders": "Sempadan", "Remove Indicators": "Buang Indikator", "loading...": "Muatan ...", "Closed_line_tool_position": "tutup", "Rectangle": "Segi Empat Tepat", "Change Resolution": "Tukar resolusi", "Indicator Arguments": "Argumen Indikator", "Chande Momentum Oscillator_study": "Chande Momentum Oscillator", "Degree": "Darjah", " per order": "per order", "Line - HL/2": "Garis - HL/2", "Supercycle": "Kitaran Super", "Least Squares Moving Average_study": "Least Squares Moving Average", "Change Variance value": "Tukar nilai varians", "powered by ": "dikuasakan oleh ", "Source_input": "Sumber", "Change Seconds To": "tukar saat kepada", "%K_input": "%K", "Scales Text": "Teks Skala", "Please enter template name": "Masukkan nama template", "Symbol Name": "Nama Simbol", "Events Breaks": "Peristiwa", "Study Templates": "Template Kajian", "Months": "Bulan", "Symbol Info...": "Maklumat Simbol...", "Elliott Wave Minor": "Gelombang Elliott Kecil", "Read our blog for more info!": "Baca blog kami untuk maklumat lanjut!", "Measure (Shift + Click on the chart)": "Ukur (Shift + Klik atas carta)", "Override Min Tick": "Override tik minima", "Show Positions": "Tunjuk Kedudukan", "Add To Text Notes": "Tambah Catatan Teks", "Elliott Triple Combo Wave (WXYXZ)": "Gelombang Kombo Ganda Tiga Elliott (WXYXZ)", "Multiplier_input": "Pengganda", "Risk/Reward": "Risiko/Ganjaran", "Base Line Periods_input": "Tempoh Garis Dasar", "Show Dividends": "Tunjuk Dividen", "Relative Strength Index_study": "Relative Strength Index", "Top Labels": "Label Atas", "Show Earnings": "Tunjuk Pendapatan", "Line - Open": "garis- buka", "Elliott Triangle Wave (ABCDE)": "Gelombang Segitiga Elliott (ABCDE)", "Text Wrap": "Balut Teks", "Reverse Position": "Posisi terbalik", "Elliott Minor Retracement": "Anjakan Kembali Kecil Elliott", "Th_day_of_week": "Th", "Slash_hotkey": "Slash", "No symbols matched your criteria": "Tiada simbol dipadankan untuk kriteria anda", "Icon": "Ikon", "lengthRSI_input": "PanjangRSI", "Heikin Ashi": "Heiken Aishi", "Teeth Length_input": "Panjang Gigi", "Indicator_input": "Indikator", "Box size assignment method": "Kaedah tugasan saiz kotak", "Open Interval Dialog": "Bukan Dialog Selangan", "Timezone/Sessions Properties...": "Sifat Zon Masa/Sesi", "Content": "kandungan", "middle": "tengah", "Lock Cursor In Time": "Kuncikan Kursor Dalam Masa", "Intermediate": "perantaraan", "Eraser": "Pemadam", "Relative Vigor Index_study": "Relative Vigor Index", "Envelope_study": "Envelope", "Pre Market": "Pra-Pasaran", "Horizontal Line": "Garisan Mendatar", "O_in_legend": "O", "Confirmation": "pengesahan", "HL Bars": "Batang HL", "Lines:": "Garis:", "Hide Favorite Drawings Toolbar": "Sembunyikan Bar Alat Lukisan Kegemaran", "X Cross": "Silang X", "Profit Level. Ticks:": "Tahap Keuntungan. Ticks:", "Show Date/Time Range": "Tunjukkan Julat Tarikh/Masa", "Level {0}": "Tahap {0}", "Favorites": "Sukaan", "Horz Grid Lines": "Garisan Grid Melintang", "-DI_input": "-DI", "Price Range": "Julat Harga", "day": "hari", "deviation_input": "Sisihan", "Account Size": "Saiz Akaun", "Value_input": "Nilai", "Time Interval": "Selang Masa", "Success text color": "Warna teks kejayaan", "ADX smoothing_input": "Pelicinan ADX", "%d hour": "%d jam", "Order size": "Saiz pesanan", "Drawing Tools": "Alat lukisan", "Save Drawing Template As": "Simpan Templat Lakaran Sebagai", "Traditional": "Tradisional", "Chaikin Money Flow_study": "Chaikin Money Flow", "Ease Of Movement_study": "Ease Of Movement", "Defaults": "tetapan asal", "Percent_input": "Peratus", "Interval is not applicable": "selang yang tidak berkenaan", "short_input": "pendek", "Visual settings...": "Pengesetan visual", "RSI_input": "RSI", "Chatham Islands": "Kepulauan Chatham", "Detrended Price Oscillator_input": "Detrended Price Oscillator", "Mo_day_of_week": "Mo", "Up Wave 4": "Gelombang Naik 4", "center": "pusat", "Vertical Line": "Garis Menegak", "Show Splits on Chart": "Tunjuk Pecahan atas Carta", "Sorry, the Copy Link button doesn't work in your browser. Please select the link and copy it manually.": "Maaf, butang CopyLink tidak berfungsi di pelayar web anda. Sila pilih pautan dan salin secara manual.", "Levels Line": "garis tahap", "Events & Alerts": "Peristiwa & Makluman", "May": "Mei", "ROCLen4_input": "PanjangROC4", "Aroon Down_input": "Aroon Turun", "Add To Watchlist": "Tambah Ke Daftar Lihat", "Total": "Jumlah", "Price": "Harga", "left": "kiri", "Lock scale": "Kuncikan Skala", "Limit_input": "Had", "Change Days To": "tukar hari kepada", "Price Oscillator_study": "Price Oscillator", "smalen1_input": "jaraksma1", "Drawing Template '{0}' already exists. Do you really want to replace it?": "Template Lukisan '{0}' sudah wujud. Pastikah anda hendak menggantikannya?", "Show Middle Point": "Papar Titik Tengah", "KST_input": "KST", "Extend Right End": "Lanjut Hujung Kanan", "Fans": "kipas", "Line - Low": "garisan rendah", "Price_input": "Harga", "Moving Average_study": "Moving Average", "Weeks": "Minggu", "McGinley Dynamic_study": "McGinley Dynamic", "Relative Volatility Index_study": "Relative Volatility Index", "Elliott Impulse Wave (12345)": "Gelombang Impuls Elliott (12345)", "PVT_input": "PVT", "Show Hidden Tools": "Tunjuk Alat Tersembunyi", "Hull Moving Average_study": "Hull Moving Average", "Symbol Prev. Close Value": "Nilai Tutup Simbol Sebelumnya", "{0} chart by TradingView": "Carta {0} oleh TradingView", "Right Shoulder": "Bahu Kanan", "Remove Drawing Tools": "Buang Alatan Lukis", "Friday": "Jumaat", "Zero_input": "Sifar", "Company Comparison": "Perbandingan Syarikat", "Stochastic Length_input": "Panjang Stochastic", "mult_input": "Pelbagai", "URL cannot be received": "URL tidak dapat diterima", "Success back color": "Warna kejayaan belakang", "E_data_mode_end_of_day_letter": "E", "Trend-Based Fib Extension": "Fib Extension Berdasarkan Trend", "Top": "Atas", "Double Curve": "Lengkung Kembar", "Stochastic RSI_study": "Stochastic RSI", "Horizontal Ray": "Sinaran Mendatar", "smalen3_input": "jaraksma3", "Symbol Labels": "Label Simbol", "Script Editor...": "Editor Skrip...", "Are you sure?": "Adakah anda pasti?", "Trades on Chart": "Jualbeli di Carta", "Listed Exchange": "Bursa Tersenarai", "Error:": "kesilapan", "Fullscreen mode": "Mod skrin penuh", "Add Text Note For {0}": "Tambah Catalan Teks untuk{0}", "K_input": "K", "Do you really want to delete Drawing Template '{0}' ?": "Pastikah anda hendak memadam Templat Lakaran '{0}'?", "ROCLen3_input": "PanjangROC3", "Micro": "Mikro", "Text Color": "Warna Teks", "Rename Chart Layout": "Namakan Semula Susun Atur Carta", "Built-ins": "Bina dalam", "Background color 2": "Warna latar 2", "Drawings Toolbar": "Bar Alat Lukisan", "Source Code...": "Kod Sumber...", "CHOP_input": "CHOP", "Apply Defaults": "Gunapakai Sediakala", "% of equity": "% ekuiti", "Extended Alert Line": "Garis Makluman Dilanjutkan", "Note": "Nota", "Moving Average Channel_study": "Saluran Moving Average", "like": "suka", "Show": "Tunjuk", "Lower_input": "Bawah", "Created ": "Telah dibuat ", "Warning": "Amaran", "Elder's Force Index_study": "Elder's Force Index", "Show Earnings on Chart": "Tunjuk Pendapatan atas Carta", "ATR_input": "ATR", "Low": "Rendah", "Bollinger Bands %B_study": "Bollinger Bands %B", "Time Zone": "Zon Masa", "right": "kanan", "%d month": "%d bulan", "Wrong value": "Nilai yang salah", "Upper Band_input": "Jalur Atas", "Sun": "Ahad", "Rename...": "Nama semula", "start_input": "Mula", "No indicators matched your criteria.": "Tiada indikator yang memenuhi kriteria anda.", "Commission": "Komisen", "Down Color": "Warna Bawah", "Short length_input": "Jarak Singkat", "Submillennium": "Submillenium", "Technical Analysis": "Analisa Teknikal", "Show Text": "Tunjuk Teks", "Channel": "saluran", "FXCM CFD data is available only to FXCM account holders": "Data FXCM CFD hanya disediakan kepada pemegang akaun FXCM", "Lagging Span 2 Periods_input": "Rentasan Pelambanan 2 Jangkamasa", "Connecting Line": "Garis Sambungan", "bottom": "bawah", "Teeth_input": "Gigi", "Sig_input": "Sig", "Open Manage Drawings": "Buka Urus Lukisan", "Save New Chart Layout": "Simpan Susun Atur Carta Baru", "Save Drawing Template As...": "Simpan Templat Lakaran Sebagai..", "Minutes_interval": "Minit", "Up Wave 2 or B": "Gelombang Naik 2 atau B", "Columns": "Kolum", "Directional Movement_study": "Directional Movement", "roclen2_input": "Panjangroc2", "Apply WPT Down Wave": "Gunapakai Gelombang Menurun WPT", "Not applicable": "Tidak berkaitan", "Bollinger Bands %B_input": "Bollinger Bands %B", "Default": "Lalai", "Template name": "Nama template", "Indicator Values": "Nilai Penunjuk", "Lips Length_input": "Panjang Muncung", "Use Upper Deviation_input": "Gunakan Sisishan Atas", "L_in_legend": "L", "Remove custom interval": "Keluarkan selangan suai langgan", "shortlen_input": "jarakpendek", "Quotes are delayed by {0} min": "Sebut Harga ditangguh selama {0} minit", "Hide Events on Chart": "Sembunyikan Peristiwa atas Carta", "Cash": "Tunai", "Profit Background Color": "Warna Latar Belakang Keuntungan", "Williams Alligator_study": "Williams Alligator", "Exponential_input": "Eksponen", "Down Wave 5": "Gelombang Ke Bawah 5", "Previous": "Sebelum", "Stay In Drawing Mode": "Tinggal Di Mod Lukisan", "Comment": "Komen", "Connors RSI_study": "Connors RSI", "Bars": "Bar", "Show Labels": "Tunjuk Label", "Flat Top/Bottom": "Atas/Bawah Rata", "Symbol Type": "jenis simbol", "December": "Disember", "Lock drawings": "Kuncikan lukisan", "Border color": "Warna sempadan", "Change Seconds From": "tukar saat dari", "Left Labels": "Label Kiri", "Insert Indicator...": "Masukkan Indikator...", "ADR_B_input": "ADR_B", "Paste %s": "Tampal %s", "Change Symbol...": "Tukar simbol...", "Timezone": "Zone Masa", "Invite-only script. You have been granted access.": "Skrip Jemputan Sahaja. Anda telah diberikan akses.", "Color 6_input": "Warna 6", "ATR Length": "Panjang ATR", "{0} financials by TradingView": "Kewangan {0} oleh TradingView", "Extend Lines Left": "Lanjutkan Garis Ke Kiri", "Source back color": "Warna sumber belakang", "Transparency": "Ketelusan", "No": "Tidak", "June": "Jun", "Cyclic Lines": "Garis Kitaran", "length28_input": "Panjang28", "ABCD Pattern": "Corak ABCD", "When selecting this checkbox the study template will set \"__interval__\" interval on a chart": "Apabila memilih kotak semak ini, template kajian akan menetapkan selang \"__interval__\" pada carta", "Add": "Tambah", "OC Bars": "Batang OC", "On Balance Volume_study": "On Balance Volume", "Apply Indicator on {0} ...": "Guna Indikator pada {0} ...", "NEW": "BARU", "Chart Layout Name": "Nama Susun Atur Carta", "Up bars": "Bar naik", "Hull MA_input": "Hull MA", "Lock Scale": "Kuncikan Skala", "distance: {0}": "jarak: {0}", "Extended": "Dilanjutkan", "Square": "Empat Segi Sama", "Three Drives Pattern": "Corak Tiga Pemacu", "NO": "TIDAK", "Top Margin": "Margin Teratas", "Up fractals_input": "Fraktal Menaik", "Insert Drawing Tool": "Masukkan Alat Lukisan", "OHLC Values": "Nilai OHLC", "Correlation_input": "Korelasi", "Session Breaks": "Perpisahan Sesi", "Add {0} To Watchlist": "Tambah {0} Daftar Lihat", "Anchored Note": "Nota Tetap", "lipsLength_input": "Panjangbibir", "low": "Rendah", "Apply Indicator on {0}": "Guna Indikator pada {0}", "UpDown Length_input": "Panjang NaikTurun", "Price Label": "Label Harga", "Balloon": "Belon", "Background Color": "Warna Latar", "an hour": "satu jam", "Right Axis": "Paksi Kanan", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "Jarakperlahan", "Click to set a point": "Klik untuk menetapkan titik", "Save Indicator Template As...": "Simpan Template Indikator Sebagai..", "Arrow Up": "Panah ke Atas", "Indicator Titles": "Tajuk Indikator", "Failure text color": "Kegagalan warna teks", "Sa_day_of_week": "Sa", "Net Volume_study": "Net Volume", "Error": "Kesilapan", "Edit Position": "mengedit kedudukan", "RVI_input": "RVI", "Centered_input": "Terpusat", "Recalculate On Every Tick": "Kira semula disetiap tik", "Left": "Kiri", "Simple ma(oscillator)_input": "Simple ma(oscillator)", "Compare": "Bandingkan", "Fisher Transform_study": "Fisher Transform", "Show Orders": "Tunjuk Order", "Track time": "Jejak masa", "Length EMA_input": "Panjang EMA", "Enter a new chart layout name": "Masukkan nama baru susun atur carta", "Signal Length_input": "Panjang Isyarat", "FAILURE": "kegagalan", "Point Value": "Nilai Mata", "D_interval_short": "D", "MA with EMA Cross_study": "MA with EMA Cross", "Label Up": "Label ke Atas", "Price Channel_study": "Saluran Harga", "Close": "Tutup", "ParabolicSAR_input": "ParabolicSAR", "Log Scale_scale_menu": "Skala Log", "MACD_input": "MACD", "Do not show this message again": "Jangan menunjukkan mesej ini lagi", "No Overlapping Labels": "Tiada Label Bertindih", "Arrow Mark Left": "Anak Panah Tunjuk Kiri", "Slow length_input": "Jarak Perlahan", "Line - Close": "garisan tutup", "Confirm Inputs": "Sahkan input", "Open_line_tool_position": "Buka", "Lagging Span_input": "Jarak Mundur", "Cross": "Silang", "Thursday": "Khamis", "Arrow Down": "Panah ke Bawah", "Triple EMA_study": "Triple EMA", "Elliott Correction Wave (ABC)": "Gelombang Pembetulan Elliott (ABC)", "Error while trying to create snapshot.": "Kesilapan semasa cuba mencipta gambar foto.", "Label Background": "Label Latarbelakang", "Templates": "Templat-templat", "Please report the issue or click Reconnect.": "Sila laporkan isu ini atau klik Sambung Semula.", "Normal": "Biasa", "Signal Labels": "Label Isyarat", "Delete Text Note": "Padam Nota Teks", "compiling...": "menyusun ....", "Detrended Price Oscillator_study": "Detrended Price Oscillator", "Color 5_input": "Warna 5", "Fixed Range_study": "Julat Tetap", "Up Wave 1 or A": "Gelombang Naik 1 atau A", "Scale Price Chart Only": "Skalakan Carta Harga Sahaja", "Unmerge Up": "Nyahgabung Ke Atas", "auto_scale": "auto", "Short period_input": "Jangkamasa Pendek", "Background": "Latar belakang", "Up Color": "Warna Atas", "Apply Elliot Wave Intermediate": "Gunapakai Gelombang Elliot Perantaraan", "VWMA_input": "VWMA", "Lower Deviation_input": "Sisihan Bawah", "Save Interval": "Simpan Selang", "February": "Februari", "Reverse": "Songsang", "Oops, something went wrong": "Oops, terdapat sesuatu kesilapan", "Add to favorites": "Tambah ke senarai pilihan", "ADX_input": "ADX", "Remove": "Padam", "len_input": "len", "Arrow Mark Up": "Anak Panah Tunjuk Atas", "Active Symbol": "Simbol Aktif", "Extended Hours": "Masa Lanjutan", "Crosses_input": "Silangan", "Middle_input": "Pertengahan", "Sync drawing to all charts": "Segerakkan lukisan kepada semua carta", "LowerLimit_input": "Had Bawah", "Know Sure Thing_study": "Know Sure Thing", "Copy Chart Layout": "Salin Susun Atur Carta", "Compare...": "Bandingkan...", "1. Slide your finger to select location for next anchor
2. Tap anywhere to place the next anchor": "1. Gelongsor jari anda untuk memilih lokasi untuk sauh seterusnya
2. Tekan mana-mana sahaja untuk meletakkan sauh seterusnya", "Text Notes are available only on chart page. Please open a chart and then try again.": "Nota teks hanya terdapat pada halaman carta. Sila membuka satu carta dan kemudian cuba lagi.", "Color": "Warna", "Aroon Up_input": "Aroon Naik", "Singapore": "Singapura", "Scales Lines": "Garis Skala", "Type the interval number for munute charts (i.e. 5 if it is going to be a five minute chart). Or number plus letter for H (Hourly), D (Daily), W (Weekly), M (Monthly) intervals (i.e. D or 2H)": "Taipkan nombor selang untuk carta minit (i.e. 5 jika ia merupakan carta lima minit). Atau kombinasi nombor dengan huruf bagi jarak waktu J (Jam), H (Harian), M (Mingguan) dan B (bulanan) (i.e. H atau 2J)", "HLC Bars": "Bar HLC", "Up Wave C": "Gelombang Naik C", "Show Distance": "Tunjuk Jarak", "Risk/Reward Ratio: {0}": "Nisbah risiko / ganjaran: {0}", "Restore Size": "Pulihkan Saiz", "Volume Oscillator_study": "Volume Oscillator", "Williams Fractal_study": "Williams Fractal", "Merge Up": "Gabung Ke Atas", "Right Margin": "Margin Kanan", "Ellipse": "Elips"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/nl_NL.json b/static/Kline/charting_library/static/localization/translations/nl_NL.json new file mode 100644 index 0000000..99696db --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/nl_NL.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "ticks", "Months_interval": "Months", "Percent_input": "Percent", "Callout": "Aanroepen", "Clone": "Kloon", "London": "Londen", "roclen1_input": "roclen1", "Minor": "Beperkt", "smalen3_input": "smalen3", "Magnet Mode": "Magneet modus", "OSC_input": "OSC", "Volume_study": "Volume", "Lips_input": "Lips", "Base Line_input": "Base Line", "Step": "Stap", "Fib Time Zone": "Fib tijdszone", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "Bollinger Bands", "Nov": "nov", "Show/Hide": "Laat zien/verbergen", "Upper_input": "Upper", "exponential_input": "exponential", "Move Up": "Verplaats omhoog", "Scales Properties...": "Schaal eigenschappen...", "Count_input": "Count", "Anchored Text": "Geankerde tekst", "OnBalanceVolume_input": "OnBalanceVolume", "Cross_chart_type": "Cross", "H_in_legend": "H", "Pitchfork": "Hooivork", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Accumulatie/distributie", "Rate Of Change_study": "Rate Of Change", "in_dates": "in", "Color 7_input": "Color 7", "Chop Zone_study": "Chop Zone", "Scales Properties": "Schaal eigenschappen", "Trend-Based Fib Time": "Trend gebaseerde Fib tijd", "Remove All Indicators": "Verwijder alle indicatoren", "Oscillator_input": "Oscillator", "Last Modified": "Laatst aangepast", "yay Color 0_input": "yay Color 0", "CRSI_study": "CRSI", "Chande Kroll Stop_study": "Chande Kroll Stop", "Hours_interval": "Hours", "Scale Right": "Schaal rechts", "Money Flow_study": "Money Flow", "DEMA_input": "DEMA", "Toggle Percentage": "Schakel percentage", "Remove All Drawing Tools": "Verwijder alle tekenhulpmiddelen", "Linear Regression Curve_study": "Linear Regression Curve", "Symbol_input": "Symbol", "increment_input": "increment", "Compare or Add Symbol...": "Vergelijk of voeg een symbool toe...", "smoothD_input": "smoothD", "Falling_input": "Falling", "Risk/Reward short": "Risico/opbrengst short", "Entry price:": "Openingsprijs:", "Circles": "Cirkels", "Ichimoku Cloud_study": "Ichimoku Cloud", "Signal smoothing_input": "Signal smoothing", "Toggle Log Scale": "Schakel log schaal", "Grid": "Rooster", "Mass Index_study": "Mass Index", "Rename...": "Hernoem...", "Smoothing_input": "Smoothing", "Color 3_input": "Color 3", "Jaw Length_input": "Jaw Length", "Keltner Channels_study": "Keltner Channels", "Long Position": "Long positie", "Bands style_input": "Bands style", "Undo {0}": "Ongedaan maken", "With Markers": "Met markeringen", "Momentum_study": "Momentum", "MF_input": "MF", "Gann Box": "Gann box", "m_dates": "m", "Fast length_input": "Fast length", "Accumulative Swing Index_study": "Accumulative Swing Index", "Disjoint Angle": "Ontwrichte hoek", "W_interval_short": "W", "Log Scale": "Logaritmische schaal", "Equality Line_input": "Equality Line", "Short_input": "Short", "Fib Wedge": "Fib wig", "Line": "Lijn", "Down fractals_input": "Down fractals", "Fib Retracement": "Fib teruggang", "smalen2_input": "smalen2", "isCentered_input": "isCentered", "Border": "Rand", "Klinger Oscillator_study": "Klinger Oscillator", "Absolute": "Absoluut", "Style": "Stijl", "SMI Ergodic Indicator/Oscillator_study": "SMI Ergodic Indicator/Oscillator", "Aug": "aug", "No Overlapping Labels_scale_menu": "No Overlapping Labels", "Manage Drawings": "Beheer tekeningen", "No drawings yet": "Nog geen tekeningen", "Chande MO_input": "Chande MO", "jawLength_input": "jawLength", "TRIX_study": "TRIX", "Border color": "Randkleur", "RVGI_input": "RVGI", "signalLength_input": "signalLength", "d_dates": "d", "%s ago_time_range": "%s ago", "Source_compare": "Source", "Correlation Coefficient_study": "Correlation Coefficient", "Bottom Labels": "Onderste labels", "Text color": "Tekstkleur", "lipsLength_input": "lipsLength", "Short Length_input": "Short Length", "teethLength_input": "teethLength", "Visible Range_study": "Visible Range", "Text Alignment:": "Tekst uitlijning", "Subminuette": "Subminuten", "Lock All Drawing Tools": "Vergrendel alle tekenhulpmiddelen", "Long_input": "Long", "Default": "Standaard", "Head & Shoulders": "Hoofd & schouders", "Properties...": "Eigenschappen...", "MA Cross_study": "MA Cross", "Trend Angle": "Trend hoek", "Crosshair": "Vizier", "Signal line period_input": "Signal line period", "Timezone/Sessions Properties...": "Tijdszone/sessie instellingen...", "Line Break": "Line break", "Quantity": "Hoeveelheid", "Price Volume Trend_study": "Price Volume Trend", "Auto Scale": "Autoschalen", "Text": "Tekst", "F_data_mode_forbidden_letter": "F", "Show Bars Range": "Toon bar bereik", "Risk/Reward long": "Risico/opbrengst long", "Long RoC Length_input": "Long RoC Length", "Length3_input": "Length3", "+DI_input": "+DI", "Length_input": "Length", "Sig_input": "Sig", "MACD_study": "MACD", "Moving Average_study": "Moving Average", "Zoom In": "Inzoomen", "Failure back color": "Standaardkleur", "Extend Left": "Rek uit naar links", "Date Range": "Datum reikwijdte", "Show Price": "Toon prijs", "Level_input": "Level", "Commodity Channel Index_study": "Commodity Channel Index", "Elder's Force Index_input": "Elder's Force Index", "Gann Square": "Gann vierkant", "Format": "Formaat", "Color bars based on previous close": "Kleur bars gebaseerd op voorgaand slot", "Text:": "Tekst:", "Aroon_study": "Aroon", "Active Symbol": "Actief symbool", "Lead 1_input": "Lead 1", "Short Position": "Short positie", "SMALen1_input": "SMALen1", "P_input": "P", "SMALen3_input": "SMALen3", "Average Directional Index_study": "Average Directional Index", "Fr_day_of_week": "Fr", "Target Color:": "Doel kleur:", "Bars Pattern": "Bars patroon", "D_input": "D", "Font Size": "Lettertype grootte", "Change Interval": "Verander interval", "p_input": "p", "Chart layout name": "Grafiek lay-out naam", "Fib Circles": "Fib cirkels", "Dot": "Punt", "Target back color": "Doel achtergrondkleur", "orders_up to ... orders": "orders", "Dot_hotkey": "Dot", "Lead 2_input": "Lead 2", "Save image": "Sla afbeelding op", "Move Down": "Verplaats omlaag", "Vortex Indicator_study": "Vortex Indicator", "Apply": "Toepassen", "Plots Background_study": "Plots Background", "Price Channel_study": "Price Channel", "Hide": "Verbergen", "Target text color": "Doel tekstkleur", "Scale Left": "Schaal links", "Elliott Wave Subminuette": "Elliot subminuette golf", "Jan": "jan", "UO_input": "UO", "Source back color": "Bron achtergrondkleur", "Sao Paulo": "São Paulo", "R_data_mode_realtime_letter": "R", "Extend Lines": "Rek lijnen uit", "Conversion Line_input": "Conversion Line", "Su_day_of_week": "Su", "Exchange": "Beurs", "Arcs": "Bogen", "Regression Trend": "Regressie trend", "Fib Spiral": "Fib spiraal", "Double EMA_study": "Double EMA", "Price Oscillator_study": "Price Oscillator", "Stop Color:": "Stop kleur:", "Stay in Drawing Mode": "Blijf in teken modus", "Bottom Margin": "Onderste marge", "Average True Range_study": "Average True Range", "Max value_input": "Max value", "MA Length_input": "MA Length", "Right Labels": "Rechter labels", "in %s_time_range": "in %s", "UpperLimit_input": "UpperLimit", "sym_input": "sym", "DI Length_input": "DI Length", "SMI_input": "SMI", "Arrow": "Pijl", "Basis_input": "Basis", "Arrow Mark Down": "Pijl teken beneden", "lengthStoch_input": "lengthStoch", "Remove from favorites": "Verwijder van favorieten", "Copy": "Kopiëren", "Scale Series Only": "Schaal alleen data series", "Simple": "Eenvoudig", "Arnaud Legoux Moving Average_study": "Arnaud Legoux Moving Average", "Smoothed Moving Average_study": "Smoothed Moving Average", "Lower Band_input": "Lower Band", "VI +_input": "VI +", "Q_input": "Q", "Always Show Stats": "Toon statistieken altijd", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "Simple ma(signal line)", "Change Interval...": "Verander interval...", "Color 6_input": "Color 6", "Right End": "Rechter einde", "UTC": "UTC+0", "Chaikin Oscillator_study": "Chaikin Oscillator", "Balloon": "Ballon", "Color Theme": "Kleuren Thema", "Awesome Oscillator_study": "Awesome Oscillator", "Bollinger Bands Width_input": "Bollinger Bands Width", "long_input": "long", "D_interval_short": "D", "Fisher_input": "Fisher", "Color 1_input": "Color 1", "Moving Average Weighted_study": "Moving Average Weighted", "Save": "Opslaan", "Wick": "Lont", "Short period_input": "Short period", "Load Chart Layout": "Laad grafiek lay-out", "Fib Speed Resistance Fan": "Fib snelheid weerstandswaaier", "Left End": "Linker einde", "Volume Oscillator_study": "Volume Oscillator", "S_data_mode_snapshot_letter": "S", "Elliott Wave Circle": "Elliott golfcyclus", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "Upper Deviation", "XABCD Pattern": "XABC patroon", "Schiff Pitchfork": "Schiff hooivork", "Flipped": "Omgedraaid", "Move_input": "Move", "NV_input": "NV", "Choppiness Index_study": "Choppiness Index", "Merge Down": "Omlaag samenvoegen", "Th_day_of_week": "Th", "Overlay the main chart": "Plaats over de primaire grafiek", "Delete": "Verwijderen", "Length MA_input": "Length MA", "percent_input": "percent", "Apr": "apr", "{0} copy": "{0} kopiëren", "Median_input": "Median", "Accumulation/Distribution_input": "Accumulation/Distribution", "C_in_legend": "C", "Weeks_interval": "Weeks", "smoothK_input": "smoothK", "Percentage_scale_menu": "Percentage", "MOM_input": "MOM", "h_interval_short": "h", "Rotated Rectangle": "Gedraaide rechthoek", "Modified Schiff": "Aangepaste Schiff", "Send Backward": "Stuur naar achteren", "Custom color...": "Aangepaste kleur...", "TRIX_input": "TRIX", "Elliott Major Retracement": "Elliott sterke teruggang", "Periods_input": "Periods", "Forecast": "Voorspelling", "Histogram_input": "Histogram", "The Extended Trading Hours feature is available only for intraday charts": "De 'Extended Trading Hours' optie is alleen beschikbaar voor intra-day grafieken", "StdDev_input": "StdDev", "EMA Cross_study": "EMA Cross", "Conversion Line Periods_input": "Conversion Line Periods", "Add Symbol_compare_or_add_symbol_dialog": "Add Symbol", "Williams %R_study": "Williams %R", "Symbol": "Symbool", "Precision": "Precisie", "Please enter chart layout name": "Voer een grafiek lay-out naam in", "VWAP_study": "VWAP", "Offset": "Afstand", "Date": "Datum", "Format...": "Instellen...", "Toggle Auto Scale": "Schakel autoschaal", "Search": "Zoeken", "Zig Zag_study": "Zig Zag", "Actual": "Daadwerkelijk", "SUCCESS": "Succes!", "Long period_input": "Long period", "length_input": "length", "roclen4_input": "roclen4", "Price Line": "Prijs lijn", "Zoom Out": "Uitzoomen", "Stop Level. Ticks:": "Stop level. Ticks:", "Jul": "jul", "Above Bar": "Boven bar", "Visual Order": "Visuele volgorde", "Stop Background Color": "Stop achtergrondkleur", "Slow length_input": "Slow length", "Sep": "sep", "TEMA_input": "TEMA", "Extend Left End": "Rek einde uit naar links", "Advance/Decline_study": "Advance/Decline", "Flag Mark": "Vlag markering", "Drawings": "Tekeningen", "Cancel": "Annuleren", "Redo": "Opnieuw", "Hide Drawings Toolbar": "Verberg tekeningen werkbalk", "Ultimate Oscillator_study": "Ultimate Oscillator", "Growing_input": "Growing", "Angle": "Hoek", "Plot_input": "Plot", "Color 8_input": "Color 8", "Indicators, Fundamentals, Economy and Add-ons": "Indicatoren, fundamenten, economie en add-ons", "h_dates": "h", "Bollinger Bands Width_study": "Bollinger Bands Width", "roclen3_input": "roclen3", "Overbought_input": "Overbought", "DPO_input": "DPO", "Trend Line": "Trendlijn", "TimeZone": "Tijdszone", "Tu_day_of_week": "Tu", "Extended Hours": "Verlengde uren", "Triangle": "Driehoek", "Period_input": "Period", "Watermark": "Watermerk", "Trigger_input": "Trigger", "SigLen_input": "SigLen", "Extend Right": "Rek uit naar rechts", "Color 2_input": "Color 2", "Show Prices": "Toon prijzen", "Arrow Mark Right": "Pijl teken rechts", "Background color 2": "Achtergrond kleur 2", "Background color 1": "Achtergrond kleur 1", "RSI Source_input": "RSI Source", "MA/EMA Cross_study": "MA/EMA Cross", "Williams Alligator_study": "Williams Alligator", "ROCLen1_input": "ROCLen1", "M_interval_short": "M", "Chaikin Oscillator_input": "Chaikin Oscillator", "Price Levels": "Prijs levels", "Source text color": "Bron tekstkleur", "Zero Line_input": "Zero Line", "Increment_input": "Increment", "Days_interval": "Days", "Net Volume_study": "Net Volume", "Enter a new chart layout name": "Voer een nieuwe grafiek lay-out naam in", "Historical Volatility_study": "Historical Volatility", "Lock": "Op slot", "length14_input": "length14", "High": "Hoog", "Polyline": "Polygoon", "Lock/Unlock": "Vergrendel/ontgrendel", "Color 0_input": "Color 0", "Add Symbol": "Voeg symbool toe", "maximum_input": "maximum", "Paris": "Parijs", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "VWMA_study": "VWMA", "fastLength_input": "fastLength", "Width": "Breedte", "Use Lower Deviation_input": "Use Lower Deviation", "Parallel Channel": "Parallel kanaal", "Divisor_input": "Divisor", "Dec": "dec", "Extend": "Rek uit", "length7_input": "length7", "Send to Back": "Stuur naar achteren", "Undo": "Ongedaan maken", "Window Size_input": "Window Size", "Reset Scale": "Herstel schaal", "Long Length_input": "Long Length", "%R_input": "%R", "Chart Properties": "Grafiek eigenschappen", "bars_margin": "bars", "Show Angle": "Toon hoek", "Objects Tree...": "Objecten boom...", "Length1_input": "Length1", "x_input": "x", "Save As...": "Opslaan als...", "Tehran": "Teheran", "Parabolic SAR_study": "Parabolic SAR", "Price Label": "Prijs label", "Stats Text Color": "Statistieken tekst kleur", "Short RoC Length_input": "Short RoC Length", "Jaw_input": "Jaw", "Coppock Curve_study": "Coppock Curve", "Reset Chart": "Herstel grafiek", "Marker Color": "Markeer kleur", "Open": "Openen", "YES": "JA", "longlen_input": "longlen", "Moving Average Exponential_study": "Moving Average Exponential", "Source border color": "Bron randkleur", "Redo {0}": "Herhalen {0}", "s_dates": "s", "Area": "Gebied", "Triangle Pattern": "Driehoek patroon", "Balance of Power_study": "Balance of Power", "EOM_input": "EOM", "Indicators": "Indicatoren", "q_input": "q", "%D_input": "%D", "Border Color": "Randkleur", "Offset_input": "Offset", "HV_input": "HV", "Start_input": "Start", "Oct": "Okt", "ROC_input": "ROC", "Berlin": "Berlijn", "Color 4_input": "Color 4", "Prices": "Prijzen", "Hollow Candles": "Lege candles", "ADX Smoothing_input": "ADX Smoothing", "Settings": "Instellingen", "We_day_of_week": "We", "Show Countdown": "Toon aftellen", "MA_input": "MA", "Length2_input": "Length2", "Multiplier_input": "Multiplier", "Session Volume_study": "Session Volume", "Image URL": "Afbeelding URL", "SMI Ergodic Oscillator_input": "SMI Ergodic Oscillator", "Show Objects Tree": "Toon objecten boom", "Primary": "Primair", "Price:": "Prijs:", "Bring to Front": "Breng naar voren", "Brush": "Borstel", "C_data_mode_connecting_letter": "C", "SMALen4_input": "SMALen4", "Target border color": "Doel randkleur", "Invalid Symbol": "Onjuist symbool", "Inside Pitchfork": "Interne hooivork", "yay Color 1_input": "yay Color 1", "Hide Marks On Bars": "Verberg markeringen op bars", "Note": "Notitie", "Hide All Drawing Tools": "Verberg alle tekenhulpmiddelen", "WMA Length_input": "WMA Length", "Low": "Laag", "Borders": "Randen", "loading...": "laden...", "Closed_line_tool_position": "Gesloten", "Rectangle": "Vierkant", "Mar": "mrt", "Jun": "jun", "On Balance Volume_study": "On Balance Volume", "Source_input": "Source", "%K_input": "%K", "Scales Text": "Schaal tekst", "Tokyo": "Tokio", "Elliott Wave Minor": "Elliot kleine golf", "Measure (Shift + Click on the chart)": "Meten (Shift + klik op de grafiek)", "Override Min Tick": "Overschrijven minimale tick", "RSI Length_input": "RSI Length", "Long length_input": "Long length", "Unmerge Down": "Omlaag losmaken", "Base Line Periods_input": "Base Line Periods", "Relative Strength Index_study": "Relative Strength Index", "Modified Schiff Pitchfork": "Aangepaste Schiff hooivork", "Top Labels": "Bovenste labels", "siglen_input": "siglen", "Elliott Minor Retracement": "Elliot kleine teruggang", "Pitchfan": "Pitch waaier", "Slash_hotkey": "Slash", "No symbols matched your criteria": "Geen symbool voldeed aan je criteria", "Icon": "Icoon", "lengthRSI_input": "lengthRSI", "Teeth Length_input": "Teeth Length", "Indicator_input": "Indicator", "Open Interval Dialog": "Open interval dialoog", "Athens": "Athene", "Fib Speed Resistance Arcs": "Fib snelheid weerstandsbogen", "middle": "midden", "Eraser": "Gum", "Relative Vigor Index_study": "Relative Vigor Index", "Envelope_study": "Envelope", "show MA_input": "show MA", "Horizontal Line": "Horizontale lijn", "O_in_legend": "O", "Confirmation": "Bevestig", "Lines:": "Lijnen", "useTrueRange_input": "useTrueRange", "Profit Level. Ticks:": "Winstlevel. Ticks:", "Show Date/Time Range": "Toon datum/tijd bereik", "Minutes_interval": "Minutes", "-DI_input": "-DI", "Price Range": "Prijs gebied", "deviation_input": "deviation", "Value_input": "Value", "Time Interval": "Tijdinterval", "Success text color": "Succes tekstkleur", "Displacement_input": "Displacement", "Chaikin Money Flow_study": "Chaikin Money Flow", "Ease Of Movement_study": "Ease Of Movement", "Defaults": "Standaard", "Oversold_input": "Oversold", "short_input": "short", "depth_input": "depth", "RSI_input": "RSI", "Detrended Price Oscillator_input": "Detrended Price Oscillator", "Mo_day_of_week": "Mo", "center": "middelpunt", "Vertical Line": "Verticale Lijn", "ROC Length_input": "ROC Length", "X_input": "X", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "Aroon Down", "Add To Watchlist": "Voeg toe aan volglijst", "Price": "Prijs", "left": "links", "Lock scale": "Vergrendel schaal", "Limit_input": "Limit", "smalen1_input": "smalen1", "KST_input": "KST", "Extend Right End": "Rek einde uit naar rechts", "Fans": "Waaiers", "Color based on previous close_input": "Color based on previous close", "Price_input": "Price", "Gann Fan": "Gann waaier", "McGinley Dynamic_study": "McGinley Dynamic", "Relative Volatility Index_study": "Relative Volatility Index", "PVT_input": "PVT", "Circle Lines": "Cirkel lijnen", "Hull Moving Average_study": "Hull Moving Average", "Bring Forward": "Breng naar voren", "Zero_input": "Zero", "Company Comparison": "Vergelijk ondernemingen", "Stochastic Length_input": "Stochastic Length", "mult_input": "mult", "Success back color": "Succes achtergrondkleur", "E_data_mode_end_of_day_letter": "E", "Trend-Based Fib Extension": "Trend gebaseerde Fib extensie", "Stochastic RSI_study": "Stochastic RSI", "Horizontal Ray": "Horizontale straal", "Script Editor...": "Script bewerker...", "Trades on Chart": "Trades op de grafiek", "Fullscreen mode": "Volledig scherm modus", "K_input": "K", "ROCLen3_input": "ROCLen3", "Text Color": "Tekstkleur", "Rename Chart Layout": "Hernoem grafiek lay-out", "Moving Average Channel_study": "Moving Average Channel", "Source Code...": "Bron code...", "CHOP_input": "CHOP", "Screen (No Scale)": "Scherm (geen schaal)", "Signal_input": "Signal", "OK": "Oké", "Show": "Toon", "Lower_input": "Lower", "Arc": "Boog", "Elder's Force Index_study": "Elder's Force Index", "Stochastic_study": "Stochastic", "Bollinger Bands %B_study": "Bollinger Bands %B", "Time Zone": "Tijdszone", "right": "rechts", "Donchian Channels_study": "Donchian Channels", "Upper Band_input": "Upper Band", "start_input": "start", "No indicators matched your criteria.": "Geen indicator voldeed aan je criteria", "Short length_input": "Short length", "Triple EMA_study": "Triple EMA", "Technical Analysis": "Technische Analyse", "Show Text": "Laat Tekst zien", "Channel": "Kanaal", "Lagging Span 2 Periods_input": "Lagging Span 2 Periods", "bottom": "onderzijde", "Teeth_input": "Teeth", "Moscow": "Moskou", "Save New Chart Layout": "Sla nieuwe grafiek lay-out op", "Fib Channel": "Fib kanaal", "Columns": "Kolommen", "Directional Movement_study": "Directional Movement", "roclen2_input": "roclen2", "Chande Momentum Oscillator_study": "Chande Momentum Oscillator", "Not applicable": "Niet van toepassingen", "Bollinger Bands %B_input": "Bollinger Bands %B", "Shapes_input": "Shapes", "Lips Length_input": "Lips Length", "Use Upper Deviation_input": "Use Upper Deviation", "L_in_legend": "L", "Inside": "Binnen", "shortlen_input": "shortlen", "Profit Background Color": "Winst achtergrondkleur", "Bar's Style": "Bar's stijl", "Exponential_input": "Exponential", "Stay In Drawing Mode": "Blijf in tekenmodus", "Comment": "Reactie", "Connors RSI_study": "Connors RSI", "Show Labels": "Toon labels", "Flat Top/Bottom": "Vlakke top/bodem", "Left Labels": "Linker labels", "Insert Indicator...": "Voeg indicator toe...", "ADR_B_input": "ADR_B", "Change Symbol...": "Verander Symbool...", "Ray": "Straal", "Feb": "feb", "Transparency": "Transparantie", "Cyclic Lines": "Cyclische lijnen", "length28_input": "length28", "ABCD Pattern": "ABCD patroon", "Objects Tree": "Objecten boom", "Add": "Toevoegen", "Least Squares Moving Average_study": "Least Squares Moving Average", "Chart Layout Name": "Grafiek lay-out naam", "Hull MA_input": "Hull MA", "Lock Scale": "Vergrendel schaal", "distance: {0}": "afstand: {0}", "Extended": "Uitgerekt", "log": "Logaritmisch", "NO": "NEE", "Top Margin": "Bovenste marge", "Up fractals_input": "Up fractals", "Insert Drawing Tool": "Voeg tekenhulpmiddel toe", "Show Price Range": "Toon prijs bereik", "Correlation_input": "Correlation", "Session Breaks": "Sessie onderbrekingen", "Add {0} To Watchlist": "Voeg {0} toe aan volglijst", "Anchored Note": "Geankerde notitie", "UpDown Length_input": "UpDown Length", "ASI_study": "ASI", "Background Color": "Achtergrond Kleur", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "slowLength", "Failure text color": "Standaardkleur tekst", "Sa_day_of_week": "Sa", "Error": "Fout", "RVI_input": "RVI", "Centered_input": "Centered", "Original": "Origineel", "True Strength Indicator_study": "True Strength Indicator", "Simple ma(oscillator)_input": "Simple ma(oscillator)", "Compare": "Vergelijken", "Fisher Transform_study": "Fisher Transform", "Projection": "Projectie", "Length EMA_input": "Length EMA", "Signal Length_input": "Signal Length", "FAILURE": "Mislukt!", "MA with EMA Cross_study": "MA with EMA Cross", "Close": "Slot", "ParabolicSAR_input": "ParabolicSAR", "Log Scale_scale_menu": "Log Scale", "MACD_input": "MACD", "{0} P&L: {1}": "{0} winst & verlies: {1}", "Arrow Mark Left": "Pijl teken links", "Open_line_tool_position": "Opened", "Lagging Span_input": "Lagging Span", "Cross": "Kruis", "Mirrored": "Gespiegeld", "Label Background": "Label achtergrond", "ADX smoothing_input": "ADX smoothing", "Normal": "Normaal", "Signal Labels": "Signaal labels", "May": "Mei", "Detrended Price Oscillator_study": "Detrended Price Oscillator", "Color 5_input": "Color 5", "Risk/Reward Ratio: {0}": "Risico/opbrengst ratio: {0}", "Scale Price Chart Only": "Schaal alleen prijsgrafiek", "Unmerge Up": "Omhoog losmaken", "auto_scale": "auto", "Background": "Achtergrond", "VWMA_input": "VWMA", "Lower Deviation_input": "Lower Deviation", "ATR_input": "ATR", "Reverse": "Keer om", "Add to favorites": "Voeg toe aan favorieten", "Median": "Mediaan", "ADX_input": "ADX", "Remove": "Verwijder", "len_input": "len", "Arrow Mark Up": "Pijl teken omhoog", "Crosses_input": "Crosses", "Middle_input": "Middle", "LowerLimit_input": "LowerLimit", "Know Sure Thing_study": "Know Sure Thing", "Copy Chart Layout": "Kopieer grafiek lay-out", "Compare...": "Vergelijken..", "Compare or Add Symbol": "Vergelijk of voeg een symbool toe", "Color": "Kleur", "Aroon Up_input": "Aroon Up", "Scales Lines": "Schaal lijnen", "Show Distance": "Toon afstand", "Fixed Range_study": "Fixed Range", "Williams Fractal_study": "Williams Fractal", "Merge Up": "Omhoog samenvoegen", "Right Margin": "Rechter marge", "Ellipse": "Ovaal", "Warsaw": "Warschau"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/no.json b/static/Kline/charting_library/static/localization/translations/no.json new file mode 100644 index 0000000..e264d2f --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/no.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "ticks", "Months_interval": "Months", "Percent_input": "Percent", "in_dates": "in", "roclen1_input": "roclen1", "OSC_input": "OSC", "Volume_study": "Volume", "Lips_input": "Lips", "Base Line_input": "Base Line", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "Bollinger Bands", "Upper_input": "Upper", "Sig_input": "Sig", "Count_input": "Count", "OnBalanceVolume_input": "OnBalanceVolume", "Cross_chart_type": "Cross", "H_in_legend": "H", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Accumulation/Distribution", "Rate Of Change_study": "Rate Of Change", "Color 7_input": "Color 7", "Chop Zone_study": "Chop Zone", "Oscillator_input": "Oscillator", "yay Color 0_input": "yay Color 0", "CRSI_study": "CRSI", "Chande Kroll Stop_study": "Chande Kroll Stop", "Hours_interval": "Hours", "Money Flow_study": "Money Flow", "DEMA_input": "DEMA", "Linear Regression Curve_study": "Linear Regression Curve", "Symbol_input": "Symbol", "increment_input": "increment", "smoothD_input": "smoothD", "RSI Source_input": "RSI Source", "Ichimoku Cloud_study": "Ichimoku Cloud", "Mass Index_study": "Mass Index", "Smoothing_input": "Smoothing", "Color 3_input": "Color 3", "Jaw Length_input": "Jaw Length", "Keltner Channels_study": "Keltner Channels", "Bands style_input": "Bands style", "Momentum_study": "Momentum", "MF_input": "MF", "Fast length_input": "Fast length", "W_interval_short": "W", "Equality Line_input": "Equality Line", "Short_input": "Short", "Down fractals_input": "Down fractals", "smalen2_input": "smalen2", "isCentered_input": "isCentered", "Klinger Oscillator_study": "Klinger Oscillator", "SMI Ergodic Indicator/Oscillator_study": "SMI Ergodic Indicator/Oscillator", "No Overlapping Labels_scale_menu": "No Overlapping Labels", "Chande MO_input": "Chande MO", "jawLength_input": "jawLength", "TRIX_study": "TRIX", "RVGI_input": "RVGI", "signalLength_input": "signalLength", "d_dates": "d", "Source_compare": "Source", "Correlation Coefficient_study": "Correlation Coefficient", "lipsLength_input": "lipsLength", "Short Length_input": "Short Length", "teethLength_input": "teethLength", "Visible Range_study": "Visible Range", "Connors RSI_study": "Connors RSI", "MA Cross_study": "MA Cross", "Signal line period_input": "Signal line period", "Price Volume Trend_study": "Price Volume Trend", "F_data_mode_forbidden_letter": "F", "Long RoC Length_input": "Long RoC Length", "Length3_input": "Length3", "+DI_input": "+DI", "MACD_study": "MACD", "%s ago_time_range": "%s ago", "Level_input": "Level", "Commodity Channel Index_study": "Commodity Channel Index", "Elder's Force Index_input": "Elder's Force Index", "Aroon_study": "Aroon", "h_dates": "h", "SMALen1_input": "SMALen1", "P_input": "P", "SMALen3_input": "SMALen3", "Average Directional Index_study": "Average Directional Index", "Fr_day_of_week": "Fr", "D_input": "D", "p_input": "p", "orders_up to ... orders": "orders", "Dot_hotkey": "Dot", "Lead 2_input": "Lead 2", "Vortex Indicator_study": "Vortex Indicator", "Plots Background_study": "Plots Background", "Price Channel_study": "Price Channel", "R_data_mode_realtime_letter": "R", "Conversion Line_input": "Conversion Line", "Su_day_of_week": "Su", "Up fractals_input": "Up fractals", "Double EMA_study": "Double EMA", "Price Oscillator_study": "Price Oscillator", "Th_day_of_week": "Th", "Average True Range_study": "Average True Range", "Max value_input": "Max value", "MA Length_input": "MA Length", "in %s_time_range": "in %s", "UpperLimit_input": "UpperLimit", "sym_input": "sym", "DI Length_input": "DI Length", "SMI_input": "SMI", "Basis_input": "Basis", "Moving Average_study": "Moving Average", "lengthStoch_input": "lengthStoch", "Smoothed Moving Average_study": "Smoothed Moving Average", "Lower Band_input": "Lower Band", "VI +_input": "VI +", "Lead 1_input": "Lead 1", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "Simple ma(signal line)", "Color 6_input": "Color 6", "Value_input": "Value", "Chaikin Oscillator_study": "Chaikin Oscillator", "ASI_study": "ASI", "Awesome Oscillator_study": "Awesome Oscillator", "Bollinger Bands Width_input": "Bollinger Bands Width", "Signal Length_input": "Signal Length", "D_interval_short": "D", "Color 1_input": "Color 1", "Moving Average Weighted_study": "Moving Average Weighted", "Short period_input": "Short period", "Fisher_input": "Fisher", "Volume Oscillator_study": "Volume Oscillator", "S_data_mode_snapshot_letter": "S", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "Upper Deviation", "Accumulative Swing Index_study": "Accumulative Swing Index", "Move_input": "Move", "NV_input": "NV", "Choppiness Index_study": "Choppiness Index", "Length MA_input": "Length MA", "percent_input": "percent", "Length_input": "Length", "Accumulation/Distribution_input": "Accumulation/Distribution", "C_in_legend": "C", "Weeks_interval": "Weeks", "smoothK_input": "smoothK", "Percentage_scale_menu": "Percentage", "MOM_input": "MOM", "h_interval_short": "h", "TRIX_input": "TRIX", "Periods_input": "Periods", "Histogram_input": "Histogram", "StdDev_input": "StdDev", "EMA Cross_study": "EMA Cross", "Relative Strength Index_study": "Relative Strength Index", "-DI_input": "-DI", "short_input": "short", "RSI_input": "RSI", "Zig Zag_study": "Zig Zag", "Detrended Price Oscillator_input": "Detrended Price Oscillator", "length_input": "length", "roclen4_input": "roclen4", "Add Symbol_compare_or_add_symbol_dialog": "Add Symbol", "Slow length_input": "Slow length", "Conversion Line Periods_input": "Conversion Line Periods", "TEMA_input": "TEMA", "q_input": "q", "Advance/Decline_study": "Advance/Decline", "Ultimate Oscillator_study": "Ultimate Oscillator", "Growing_input": "Growing", "Plot_input": "Plot", "Color 8_input": "Color 8", "Bollinger Bands Width_study": "Bollinger Bands Width", "roclen3_input": "roclen3", "Overbought_input": "Overbought", "DPO_input": "DPO", "Relative Vigor Index_study": "Relative Vigor Index", "Tu_day_of_week": "Tu", "Period_input": "Period", "Trigger_input": "Trigger", "SigLen_input": "SigLen", "Color 2_input": "Color 2", "MA/EMA Cross_study": "MA/EMA Cross", "Williams Alligator_study": "Williams Alligator", "ROCLen1_input": "ROCLen1", "M_interval_short": "M", "Chaikin Oscillator_input": "Chaikin Oscillator", "Zero Line_input": "Zero Line", "Increment_input": "Increment", "Days_interval": "Days", "Net Volume_study": "Net Volume", "m_dates": "m", "length14_input": "length14", "Color 0_input": "Color 0", "maximum_input": "maximum", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "fastLength_input": "fastLength", "Historical Volatility_study": "Historical Volatility", "Use Lower Deviation_input": "Use Lower Deviation", "Falling_input": "Falling", "Divisor_input": "Divisor", "length7_input": "length7", "Window Size_input": "Window Size", "Long Length_input": "Long Length", "%R_input": "%R", "bars_margin": "bars", "Simple ma(oscillator)_input": "Simple ma(oscillator)", "Length1_input": "Length1", "x_input": "x", "Parabolic SAR_study": "Parabolic SAR", "UO_input": "UO", "Short RoC Length_input": "Short RoC Length", "Jaw_input": "Jaw", "Coppock Curve_study": "Coppock Curve", "longlen_input": "longlen", "Moving Average Exponential_study": "Moving Average Exponential", "s_dates": "s", "Balance of Power_study": "Balance of Power", "EOM_input": "EOM", "%D_input": "%D", "Offset_input": "Offset", "HV_input": "HV", "Start_input": "Start", "ROC_input": "ROC", "Color 4_input": "Color 4", "ADX Smoothing_input": "ADX Smoothing", "We_day_of_week": "We", "MA_input": "MA", "Length2_input": "Length2", "Multiplier_input": "Multiplier", "Session Volume_study": "Session Volume", "SMI Ergodic Oscillator_input": "SMI Ergodic Oscillator", "C_data_mode_connecting_letter": "C", "SMALen4_input": "SMALen4", "yay Color 1_input": "yay Color 1", "CHOP_input": "CHOP", "Middle_input": "Middle", "WMA Length_input": "WMA Length", "Stochastic_study": "Stochastic", "Closed_line_tool_position": "Closed", "On Balance Volume_study": "On Balance Volume", "Source_input": "Source", "%K_input": "%K", "Log Scale_scale_menu": "Log Scale", "len_input": "len", "RSI Length_input": "RSI Length", "Long length_input": "Long length", "Base Line Periods_input": "Base Line Periods", "siglen_input": "siglen", "Slash_hotkey": "Slash", "lengthRSI_input": "lengthRSI", "Indicator_input": "Indicator", "Q_input": "Q", "Envelope_study": "Envelope", "show MA_input": "show MA", "O_in_legend": "O", "useTrueRange_input": "useTrueRange", "Minutes_interval": "Minutes", "deviation_input": "deviation", "long_input": "long", "VWMA_study": "VWMA", "Displacement_input": "Displacement", "Chaikin Money Flow_study": "Chaikin Money Flow", "Ease Of Movement_study": "Ease Of Movement", "Oversold_input": "Oversold", "Williams %R_study": "Williams %R", "depth_input": "depth", "VWAP_study": "VWAP", "Long period_input": "Long period", "Mo_day_of_week": "Mo", "ROC Length_input": "ROC Length", "X_input": "X", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "Aroon Down", "Limit_input": "Limit", "smalen1_input": "smalen1", "Color based on previous close_input": "Color based on previous close", "Price_input": "Price", "Relative Volatility Index_study": "Relative Volatility Index", "PVT_input": "PVT", "Hull Moving Average_study": "Hull Moving Average", "Zero_input": "Zero", "Stochastic Length_input": "Stochastic Length", "mult_input": "mult", "Signal smoothing_input": "Signal smoothing", "E_data_mode_end_of_day_letter": "E", "Stochastic RSI_study": "Stochastic RSI", "K_input": "K", "ROCLen3_input": "ROCLen3", "Signal_input": "Signal", "Moving Average Channel_study": "Moving Average Channel", "Lower_input": "Lower", "Elder's Force Index_study": "Elder's Force Index", "Bollinger Bands %B_study": "Bollinger Bands %B", "Donchian Channels_study": "Donchian Channels", "Upper Band_input": "Upper Band", "start_input": "start", "Short length_input": "Short length", "Triple EMA_study": "Triple EMA", "Lagging Span 2 Periods_input": "Lagging Span 2 Periods", "Teeth_input": "Teeth", "exponential_input": "exponential", "Directional Movement_study": "Directional Movement", "roclen2_input": "roclen2", "Chande Momentum Oscillator_study": "Chande Momentum Oscillator", "Bollinger Bands %B_input": "Bollinger Bands %B", "Lips Length_input": "Lips Length", "Use Upper Deviation_input": "Use Upper Deviation", "L_in_legend": "L", "shortlen_input": "shortlen", "Exponential_input": "Exponential", "Long_input": "Long", "ADR_B_input": "ADR_B", "length28_input": "length28", "Arnaud Legoux Moving Average_study": "Arnaud Legoux Moving Average", "Least Squares Moving Average_study": "Least Squares Moving Average", "Hull MA_input": "Hull MA", "Median_input": "Median", "Correlation_input": "Correlation", "UpDown Length_input": "UpDown Length", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "slowLength", "Sa_day_of_week": "Sa", "RVI_input": "RVI", "Centered_input": "Centered", "True Strength Indicator_study": "True Strength Indicator", "smalen3_input": "smalen3", "Fisher Transform_study": "Fisher Transform", "Length EMA_input": "Length EMA", "Teeth Length_input": "Teeth Length", "MA with EMA Cross_study": "MA with EMA Cross", "ParabolicSAR_input": "ParabolicSAR", "MACD_input": "MACD", "Open_line_tool_position": "Open", "Lagging Span_input": "Lagging Span", "ADX smoothing_input": "ADX smoothing", "Detrended Price Oscillator_study": "Detrended Price Oscillator", "Color 5_input": "Color 5", "McGinley Dynamic_study": "McGinley Dynamic", "auto_scale": "auto", "VWMA_input": "VWMA", "Lower Deviation_input": "Lower Deviation", "ATR_input": "ATR", "Shapes_input": "Shapes", "ADX_input": "ADX", "Crosses_input": "Crosses", "KST_input": "KST", "LowerLimit_input": "LowerLimit", "Know Sure Thing_study": "Know Sure Thing", "Aroon Up_input": "Aroon Up", "Fixed Range_study": "Fixed Range", "Williams Fractal_study": "Williams Fractal"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/pl.json b/static/Kline/charting_library/static/localization/translations/pl.json new file mode 100644 index 0000000..74baac0 --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/pl.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "Oznaczenia", "Months_interval": "Miesiące", "Realtime": "Czas rzeczywisty", "Callout": "Objaśnienie", "Sync to all charts": "Synchronizuj wszystkie wykresy", "month": "miesiąc", "London": "Londyn", "roclen1_input": "roclen1", "Unmerge Down": "Cofnij Złączenie W Dół", "Percents": "Procenty", "Search Note": "Szukaj notatki", "Do you really want to delete Chart Layout '{0}' ?": "Czy na pewno chcesz usunąć układ graficzny '{0}'?", "Quotes are delayed by {0} min and updated every 30 seconds": "Notowania są opóźnione o {0} min i uaktualniane co 30 sekund.", "Magnet Mode": "Magnes", "Grand Supercycle": "Wielki supercykl", "OSC_input": "OSC", "Hide alert label line": "Ukryj zakładkę z alertami", "Volume_study": "Wolumen", "Lips_input": "Lips", "Show real prices on price scale (instead of Heikin-Ashi price)": "Pokaż rzeczywiste ceny w skali ceny (zamiast ceny Heikin-Ashi)", "Base Line_input": "Linia Bazowa", "Step": "Krok", "Insert Study Template": "Wstaw szablon testowy", "Fib Time Zone": "Strefa czasowa Fibonacciego", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "Wstęgi Bollingera", "Nov": "LIs", "Show/Hide": "Pokaż/Ukryj", "Upper_input": "Górna", "exponential_input": "wykładniczy", "Move Up": "Przenieś w Górę", "Symbol Info": "Informacje o Symbolu", "This indicator cannot be applied to another indicator": "Ten wskaźnik nie może być zastosowany do innego wskaźnika", "Scales Properties...": "Właściwości skali...", "Count_input": "Liczyć", "Full Circles": "Pełne kręgi", "Ashkhabad": "Aszchabad", "OnBalanceVolume_input": "OnBalanceVolume", "Cross_chart_type": "Krzyżyk", "H_in_legend": "Najwyzszy punkt", "a day": "dzień", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Akumulacja / dystrybucja", "Rate Of Change_study": "Tempo zmian", "in_dates": "w", "Clone": "Klonuj", "Color 7_input": "Kolor 7", "Chop Zone_study": "Strefa Chop", "Bar #": "Świeca #", "Scales Properties": "Właściwości skali", "Trend-Based Fib Time": "Czas Fib w oparciu o trendy", "Remove All Indicators": "Usuń Wszystkie Wskaźniki", "Oscillator_input": "Oscylator", "Last Modified": "Ostatnio zmieniane", "yay Color 0_input": "yay Kolor 0", "Labels": "Etykiety", "Chande Kroll Stop_study": "Chande Kroll Stop", "Hours_interval": "Godziny", "Allow up to": "Pozwala na", "Scale Right": "Skaluj w prawo", "Money Flow_study": "Przepływ pieniędzy", "siglen_input": "siglen", "Indicator Labels": "Etykiety wskaźników", "__specialSymbolOpen__Tomorrow at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__jutro o__specialSymbolClose____dayTime__", "Toggle Percentage": "Zmień na Procenty", "Remove All Drawing Tools": "Usuń Narzędzia Rysowania", "Remove all line tools for ": "Usuń wszystkie narzędzia linii ", "Linear Regression Curve_study": "Krzywa regresji liniowej", "Symbol_input": "Symbol", "increment_input": "przyrost", "Compare or Add Symbol...": "Porównaj lub Dodaj Symbol...", "__specialSymbolOpen__Last__specialSymbolClose__ __dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__ostatnio__specialSymbolClose__ __dayName__ __specialSymbolOpen__o__specialSymbolClose__ __dayTime__", "Save Chart Layout": "Zachowaj Wygląd Wykresu", "Number Of Line": "Liczba linii", "Label": "Etykieta", "Post Market": "Wprowadzenie do obrotu", "Change Hours To": "Zmień godziny na", "smoothD_input": "smoothD", "Falling_input": "Spadajacy", "X_input": "X", "Risk/Reward short": "krótkie Ryzyko/Zysk", "Donchian Channels_study": "Kanały Donchian", "Entry price:": "Cena wejścia", "Circles": "Koła", "Head": "Głowa", "Stop: {0} ({1}) {2}, Amount: {3}": "Stop: {0} ({1}) {2}, Kwota: {3}", "Mirrored": "Lustrzane Odbicie", "Ichimoku Cloud_study": "Chmura Ichimoku", "Signal smoothing_input": "Wygładzanie sygnału", "Toggle Log Scale": "Przełącz na skalę logarytmiczną", "Toggle Auto Scale": "Przełącz na skalę automatyczną", "Grid": "Siatka", "Triangle Down": "Trójkąt w dół", "Apply Elliot Wave Minor": "Zastosuj falę Elliota - cykl mniejszy", "Slippage": "Poślizg", "Smoothing_input": "Wygładzanie", "Color 3_input": "Kolor 3", "Jaw Length_input": "Długość Jaw", "Almaty": "Ałmaty", "Inside": "W środku", "Delete all drawing for this symbol": "Usuń cały rysunek dla tego symbolu", "Fundamentals": "Dane makroekonomiczne", "Keltner Channels_study": "Kanały Keltner'a", "Long Position": "Pozycja Długa", "Bands style_input": "Styl muzyki", "Undo {0}": "Cofnij {0}", "With Markers": "Ze znacznikami", "Momentum_study": "Momentum", "MF_input": "MF", "Gann Box": "Pudełko Ganna", "Switch to the next chart": "Przełącz się do następnego wykresu", "charts by TradingView": "wykresy TradingView", "Fast length_input": "Szybka długość", "Apply Elliot Wave": "Zastosuj fale Elliota", "Disjoint Angle": "Kąt rozłączenia", "W_interval_short": "W", "Show Only Future Events": "Pokaż Tylko Przyszłe Wydarzenia", "Log Scale": "Skala logarytmiczna", "Line - High": "Linia - Maksimum", "Zurich": "Zurych", "Equality Line_input": "Linia Równości", "Short_input": "Krótki", "Fib Wedge": "Klin Fibonacciego", "Line": "Linia", "Session": "Sesja", "Down fractals_input": "Dolne fraktale", "Fib Retracement": "Zniesienia Fibonacciego", "smalen2_input": "smalen2", "isCentered_input": "Jest wyśrodkowany", "Border": "Obramowanie", "Klinger Oscillator_study": "Oscylator Klingera", "Absolute": "Absolutny", "Tue": "Wto", "Style": "Styl", "Show Left Scale": "Pokaż lewą skalę", "SMI Ergodic Indicator/Oscillator_study": "Wskaźnik/Oscylator SMI Ergodic", "Aug": "Sie", "Last available bar": "Ostatnia dostępna świeczka", "Manage Drawings": "Zarządzaj Rysunkami", "Analyze Trade Setup": "Analizuj setup", "No drawings yet": "Brak rysunków", "SMI_input": "SMI", "Chande MO_input": "Chande MO", "jawLength_input": "jawLength", "TRIX_study": "TRIX", "Show Bars Range": "Pokaż Zasięg Słupków", "RVGI_input": "RVGI", "Last edited ": "Ostatnio edytowane ", "signalLength_input": "signalLength", "%s ago_time_range": "%s temu", "Reset Settings": "Resetuj ustawienia", "d_dates": "d", "Point & Figure": "Kropki i znaki", "August": "Sierpień", "Recalculate After Order filled": "Ponownie przelicz po zamówieniu", "Source_compare": "Źródło", "Down bars": "Słupki w dół", "Correlation Coefficient_study": "Współczynnik korelacji", "Delayed": "Opóźnienie", "Bottom Labels": "Dolne etykiety", "Text color": "Kolor tekstu", "Levels": "Poziomy", "Length_input": "Długość", "Short Length_input": "Krótka długość", "teethLength_input": "teethLength", "Visible Range_study": "Visible Range", "Open {{symbol}} Text Note": "Otwórz {{symbol}} Opis", "October": "Październik", "Lock All Drawing Tools": "Zablokuj Narzędzia Rysowania", "Long_input": "Długi", "Right End": "Prawy Koniec", "Show Symbol Last Value": "Pokaż ostatnią wartość symbolu", "Head & Shoulders": "Glowa i ramiona", "Do you really want to delete Study Template '{0}' ?": "Czy na pewno chcesz usunąć szablon testowy '{0}'?", "Favorite Drawings Toolbar": "Pasek ulubionych narzędzi rysujących", "Properties...": "Właściwości...", "Reset Scale": "Resetuj Skalę", "MA Cross_study": "Przekroczenie MA", "Trend Angle": "Kąt trendu", "Snapshot": "Miniatura", "Crosshair": "Krzyżyk", "Signal line period_input": "Okres linii sygnału", "Timezone/Sessions Properties...": "Właściwości Strefy Czasowej/Sesji", "Line Break": "Przełamanie linii", "Quantity": "Ilość", "Price Volume Trend_study": "Price Volume Trend", "Auto Scale": "Autoskalowanie", "Delete chart layout": "Usuń układ wykresu", "Text": "Tekst", "F_data_mode_forbidden_letter": "F", "Risk/Reward long": "długie Ryzyko/Zysk", "Apr": "Kwi", "Long RoC Length_input": "Długa Długość RoC", "Length3_input": "Długość3", "+DI_input": "+DI", "Madrid": "Madryt", "Use one color": "Użyj innego koloru", "Chart Properties": "Właściwości Wykresu", "No Overlapping Labels_scale_menu": "Brak nakładających się etykiet", "Exit Full Screen (ESC)": "Opuść tryb pełnoekranowy (ESC)", "MACD_study": "MACD", "Show Economic Events on Chart": "Pokaż Wydarzenia Ekonomiczne na Wykresie", "Moving Average_study": "Średnia krocząca", "Show Wave": "Pokarz Falę", "Failure back color": "Błędny kolor tła", "Below Bar": "Poniżej świeczki", "Time Scale": "Skala Czasu", "

Only D, W, M intervals are supported for this symbol/exchange. You will be automatically switched to a D interval. Intraday intervals are not available because of exchange policies.

": "

Tylko D, T, M interwały są wspierane dla tego symbolu/giełdy. Będziesz automatycznie przełączony na dzienny interwał. Dane intraday nie są dostępne z powody polityki giełdy.

", "Extend Left": "Rozciągnij w lewo", "Date Range": "Zakres Dat", "Min Move": "Minimalnie Przenieś", "Price format is invalid.": "Format ceny jest niepoprawny", "Show Price": "Pokaż Cenę", "Level_input": "Poziom", "Commodity Channel Index_study": "Indeks kanału towarowego", "Elder's Force Index_input": "Starszy Force Index", "Gann Square": "Kwadrat Ganna", "Currency": "Waluta", "Color bars based on previous close": "Kolor słupków na podstawie poprzedniego zamknięcia", "Change band background": "Zmień tło", "Target: {0} ({1}) {2}, Amount: {3}": "Cel: {0} ({1}) {2}, Kwota: {3}", "Zoom Out": "Oddal", "Anchored Text": "Zakotwiczony Tekst", "Long length_input": "Długa Długość", "Edit {0} Alert...": "Edytuj {0} Alert...", "Previous Close Price Line": "Linia Poprzedniej Ceny Zamknięcia", "Up Wave 5": "Maksymalny rzut 5", "Qty: {0}": "Ilość: {0}", "Aroon_study": "Aroon", "show MA_input": "Pokaż MA", "Industry": "Branża", "Lead 1_input": "Prowadzący 1", "Short Position": "Pozycja Krótka", "SMALen1_input": "SMALen1", "P_input": "P", "Apply Default": "Zastosuj domyślne", "SMALen3_input": "SMALen3", "Average Directional Index_study": "Wskaźnik ruchu kierunkowego", "Fr_day_of_week": "Pt", "Invite-only script. Contact the author for more information.": "Skrypt Prywatny. Skontaktuj się z autorem aby uzyskać więcej informacji", "Curve": "Krzywa", "a year": "rok", "Target Color:": "Docelowy Kolor:", "Bars Pattern": "Formacja Słupków", "D_input": "D", "Font Size": "Rozmiar tekstu", "Create Vertical Line": "Wstaw linię pionową", "p_input": "p", "Rotated Rectangle": "Obracający się Prostokąt", "Chart layout name": "Nazwa układu wykresu", "Fib Circles": "Kręgi Fibonacciego", "Apply Manual Decision Point": "Zastosuj wybrany punkt decyzyjny", "Dot": "Kropka", "Target back color": "Docelowy kolor tła", "All": "Wszystkie", "orders_up to ... orders": "zlecenia", "Dot_hotkey": "kropka", "Lead 2_input": "Prowadzący 2", "Save image": "Zapisz obrazek", "Move Down": "Przenieś w Dół", "Triangle Up": "Trójkąt w górę", "Box Size": "Rozmiar pudełka", "Navigation Buttons": "Klawisze Nawigacyjne", "Miniscule": "Malutkie", "Apply": "Zastosuj", "Down Wave 3": "Fala spadkowa 3", "Plots Background_study": "Tło wykresów", "Marketplace Add-ons": "Dodatki dla Rynku", "Sine Line": "Linia Sine", "Fill": "Wypełniać", "Hide": "Ukryj", "Toggle Maximize Chart": "Maksymalizuj wykres", "Target text color": "Docelowy kolor teksty", "Scale Left": "Skaluj w lewo", "Elliott Wave Subminuette": "Fala Elliotta - mikrocykl", "Color based on previous close_input": "Kolor na podstawie poprzedniego zamknięcia", "Down Wave C": "Fala spadkowa C", "Countdown": "Odliczanie", "UO_input": "UO", "Pyramiding": "Pyramid", "Source back color": "Źródło koloru tła", "Go to Date...": "Idź do daty...", "Text Alignment:": "Wyrównanie Tekstu:", "R_data_mode_realtime_letter": "R", "Extend Lines": "Rozszerz Linie", "Conversion Line_input": "Linia konwersji", "March": "Marzec", "Su_day_of_week": "Nd", "Exchange": "Giełda", "Arcs": "Łuki", "Regression Trend": "Trend regresji", "Short RoC Length_input": "Krótka długość RoC", "Fib Spiral": "Spirala Fibonacci", "Double EMA_study": "DEMA", "All Indicators And Drawing Tools": "Wszystkie wskaźniki i narzędzia graficzne", "Indicator Last Value": "Ostatnia wartość wskaźnika", "Sync drawings to all charts": "Synchronizuj rysunki na wszystkich wykresach", "Change Average HL value": "Zmień średnią wartość HL", "Stop Color:": "Ogranicz kolor:", "Stay in Drawing Mode": "Pozostań w Trybie Rysowania", "Bottom Margin": "Margines Dolny", "Save Chart Layout saves not just some particular chart, it saves all charts for all symbols and intervals which you are modifying while working with this Layout": "Save Chart Layout zapisuje nie tylko konkretny wykres, zapisuje wszystkie wykresy dla wszystkich symboli i interwałów, które modyfikujesz podczas pracy z tym układem", "Average True Range_study": "Średnia prawdziwego zakresu", "Max value_input": "Maksymalna wartość", "MA Length_input": "Długość MA", "Invite-Only Scripts": "Skrypty Prywatne", "in %s_time_range": "w %s", "UpperLimit_input": "Górna granica", "sym_input": "sym", "DI Length_input": "Długość DI", "Rome": "Rzym", "Scale": "Skala", "Periods_input": "Okresy", "Arrow": "Strzałka", "useTrueRange_input": "useTrueRange", "Basis_input": "Podstawa", "Arrow Mark Down": "Strzałka w dół", "lengthStoch_input": "długośćStoch", "Objects Tree": "Drzewo Obiektów", "Remove from favorites": "Usuń z ulubionych", "Show Symbol Previous Close Value": "Pokaż Poprzednią Wartość Zamknięcia dla Symbolu", "Scale Series Only": "Skaluj Tylko Serie", "Source text color": "Źródło koloru tekstu", "Simple": "Prosty", "Report a data issue": "Zgłoś problem z danymi", "Arnaud Legoux Moving Average_study": "Średnia krocząca Arnaud Legoux", "Smoothed Moving Average_study": "Wygładzona Średnia Krocząca", "Lower Band_input": "Dolna część", "Verify Price for Limit Orders": "Zweryfikuj cenę za zlecenie limitowe", "VI +_input": "VI +", "Line Width": "Szerokość Linii", "Contracts": "Kontrakty", "Always Show Stats": "Zawsze pokazuj statystyki", "Down Wave 4": "Fala spadkowa 4", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "Simple ma (linia sygnału)", "Change Interval...": "Zmień interwał...", "Public Library": "Biblioteka Publiczna", " Do you really want to delete Drawing Template '{0}' ?": " Czy naprawdę chcesz usunąć szablon rysowania '{0}' ?", "Sat": "Sob", "Left Shoulder": "Lewe ramię", "week": "tydzień", "CRSI_study": "CRSI", "Close message": "Zamknij wiadomość", "Jul": "Lip", "Base currency": "Waluta bazowa", "Show Drawings Toolbar": "Pokaż Pasek Rysowania", "Chaikin Oscillator_study": "Oscylator Chaikin", "Price Source": "Źródło cen", "Market Open": "Rynek Otwarty", "Color Theme": "Kolory motywu", "Projection up bars": "Projekcja słupków w górę", "Awesome Oscillator_study": "Niesamowity Oscylator", "Bollinger Bands Width_input": "Szerokość Wstęg Bollingera", "long_input": "długi", "Error occured while publishing": "Wystąpił błąd podczas publikacji", "Fisher_input": "Fisher", "Color 1_input": "Kolor 1", "Moving Average Weighted_study": "Ważona Średnia Krocząca", "Save": "Zapisz", "Type": "Typ", "Wick": "Cień", "Accumulative Swing Index_study": "Accumulative Swing Index", "Load Chart Layout": "Załaduj Wygląd Wykresu", "Show Values": "Pokaż Wartości", "Fib Speed Resistance Fan": "Wachlarz Fibonacciego - prędkość i opór", "Bollinger Bands Width_study": "Szerokość Wstęgi Bollingera", "This chart layout has more than 1000 drawings, which is a lot! This may negatively affect performance, storage and publishing. We recommend to remove some drawings to avoid potential performance issues.": "Ten układ wykresów zawiera ponad 1000 rysunków, a jest to dużo! Może to negatywnie wpłynąć na wydajność, przechowywanie i publikowanie. Zalecamy usunąć niektóre rysunki, aby uniknąć potencjalnych problemów z wydajnością.", "Left End": "Lewy Koniec", "Volume Oscillator_study": "Oscylator Volumenowy", "Always Visible": "Zawsze widoczne", "S_data_mode_snapshot_letter": "S", "Flag": "Flaga", "Elliott Wave Circle": "Okrąg fal Eliotta", "Earnings breaks": "Przerwa w zarobkach", "Change Minutes From": "Zmień minuty od", "Do not ask again": "Nie pytaj ponownie", "Displacement_input": "Przemieszczenie", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "Odchylenie górne", "XABCD Pattern": "Wzorzec XABCD", "Copied to clipboard": "Skopiowano do schowka", "HLC Bars": "Słupki HLC", "Flipped": "Odwrócone", "DEMA_input": "DEMA", "Move_input": "Ruch", "NV_input": "NV", "Choppiness Index_study": "Indeks Choppiness", "Study Template '{0}' already exists. Do you really want to replace it?": "Szablon badania '{0}' już istnieje. Naprawdę chcesz go zastąpić?", "Merge Down": "Połącz w Dół", " per contract": " na kontrakt", "Overlay the main chart": "Nałóż na główny wykres", "Screen (No Scale)": "Screen (Bez Skali )", "Delete": "Usuń", "Save Indicator Template As": "Zapisz Szablon Wskaźnika Jako", "Length MA_input": "Długość MA", "percent_input": "procent", "September": "Wrzesień", "{0} copy": "{0} kopia", "Avg HL in minticks": "Avg HL w minticks", "Accumulation/Distribution_input": "Akumulacja / dystrybucja", "Sync": "Synchronizuj", "C_in_legend": "zamkniecie", "Weeks_interval": "Tygodnie", "smoothK_input": "smoothK", "Percentage_scale_menu": "Procentowo", "Change Extended Hours": "Zmień godziny rozszerzone", "MOM_input": "MOM", "h_interval_short": "h", "Change Interval": "Zmień interwał", "Change area background": "Zmień tło obszaru", "Modified Schiff": "Zmodyfikowany Schiff", "Adelaide": "Adelajda", "Send Backward": "Cofnij wysyłanie", "Mexico City": "Meksyk", "TRIX_input": "TRIX", "Show Price Range": "Pokaż Zakres Cen", "Elliott Major Retracement": "Nadrzędna korekta Elliota", "ASI_study": "ASI", "Notification": "Powiadomienie", "Fri": "Pią", "just now": "właśnie teraz", "Forecast": "Prognoza", "Fraction part is invalid.": "Część frakcji jest nieprawidłowa.", "Connecting": "Podłączanie", "Ghost Feed": "Kanał Ghost", "Signal_input": "Sygnał", "Histogram_input": "Histogram", "The Extended Trading Hours feature is available only for intraday charts": "Funkcja Extended Trading Hours jest dostępna tylko dla wykresów", "Stop syncing": "Zatrzymaj synchronizację", "open": "otwarte", "StdDev_input": "StdDev", "EMA Cross_study": "Przecięcie EMA", "Conversion Line Periods_input": "Okresy linii konwersji", "Diamond": "Diament", "My Scripts": "Moje Skrypty", "Monday": "Poniedziałek", "Add Symbol_compare_or_add_symbol_dialog": "Add Symbol", "Williams %R_study": "Williams %R", "top": "góra", "a month": "miesiąc", "Precision": "Precyzja", "depth_input": "głębokość", "Go to": "Idź do...", "Please enter chart layout name": "Wstaw nazwę układu wykresu.", "VWAP_study": "VWAP", "Offset": "Wyprzedzenie", "Date": "Data", "Apply WPT Up Wave": "Zastosuj zasięg cenowy dla fali wzrostowej", "__dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__dayName____specialSymbolOpen__ o __specialSymbolClose____dayTime__", "Toggle Maximize Pane": "Maksymalizuj Okienko", "Search": "Szukaj", "Zig Zag_study": "Zig Zag", "Actual": "Aktualne", "SUCCESS": "SUKCES", "Long period_input": "Długi okres", "length_input": "długość", "roclen4_input": "roclen4", "Price Line": "Linia Ceny", "Area With Breaks": "Obszar z przerwami", "Median_input": "Mediana", "Stop Level. Ticks:": "Ogranicz poziom. Oznaczenie:", "Window Size_input": "Rozmiar okna", "Economy & Symbols": "Ekonomia i symbole", "Circle Lines": "Okrąg", "Visual Order": "Zlecenie wizualne", "__specialSymbolOpen__Yesterday at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__jutro o__specialSymbolClose____dayTime__", "Stop Background Color": "Ogranicz kolor tła", "1. Slide your finger to select location for first anchor
2. Tap anywhere to place the first anchor": "1. Przesuń palcem, żeby wybrać lokalizację dla pierwszej kotwicy
2. Stuknij w dowolnym miejscu, aby umieścić pierwszą kotwicę", "Sector": "Sektor", "powered by TradingView": "Powered by TradingView.com", "Text:": "Tekst:", "Stochastic_study": "Stochastic", "Sep": "Wrz", "TEMA_input": "TEMA", "Min Move 2": "Minimalnie Przenieś 2", "Extend Left End": "Wydłuż lewą stronę", "Projection down bars": "Projekcja słupków w dół", "Advance/Decline_study": "Postęp/Spadek", "New York": "Nowy Jork", "Flag Mark": "Oznaczenie flagą", "Drawings": "Rysunki", "Cancel": "Anuluj", "Compare or Add Symbol": "Porównaj lub Dodaj Symbol", "Redo": "Ponów", "Hide Drawings Toolbar": "Ukryj pasek z narzędziami do rysowania", "Ultimate Oscillator_study": "Ostateczny oscylator", "Vert Grid Lines": "Pionowe Linie Siatki", "Growing_input": "Rosnąca", "Angle": "Kąt", "Plot_input": "Wykres", "Color 8_input": "Kolor 8", "Indicators, Fundamentals, Economy and Add-ons": "Wskaźniki, Dane Makroekonomincze, Ekonomia i Dodatki", "h_dates": "h", "ROC Length_input": "Zakres wskaźnika ROC", "roclen3_input": "roclen3", "Overbought_input": "Przesycony", "DPO_input": "DPO", "Change Minutes To": "Zmień minuty do", "No study templates saved": "Nie zapisano wzorów szablonów", "Trend Line": "Linia Trendu", "TimeZone": "Strefa Czasowa", "Your chart is being saved, please wait a moment before you leave this page.": "Twój wykres został utworzony, poczekaj teraz chwilę zanim opuścisz stronę.", "Percentage": "Procentowo", "Tu_day_of_week": "Wt", "RSI Length_input": "Długość RSI", "Triangle": "Trójkąt", "Line With Breaks": "Linia z Przerwami", "Period_input": "Okres", "Watermark": "Znak Wodny", "Trigger_input": "Trigger", "SigLen_input": "SigLen", "Extend Right": "Rozszerz w prawo", "Color 2_input": "Kolor 2", "Show Prices": "Pokaż Ceny", "Unlock": "Odblokuj", "Copy": "Kopiuj", "Arc": "Łuk", "Edit Order": "Edytuj zlecenie", "January": "Styczeń", "Arrow Mark Right": "Strzałka w prawo", "Extend Alert Line": "Przeciągnij linie alertu", "Background color 1": "Kolor tła 1", "RSI Source_input": "Źródło RSI", "Close Position": "Zamknij pozycję", "Any Number": "Dowolna liczba", "Stop syncing drawing": "Zatrzymaj synchronizację rysowania", "Visible on Mouse Over": "Widoczne na myszce", "MA/EMA Cross_study": "Przecięcie MA/EMA", "Thu": "Czw", "Vortex Indicator_study": "Wskaźnik Vortex", "view-only chart by {user}": "Wykresy tylko do wglądu użytkownika {user}", "ROCLen1_input": "ROCLen1", "M_interval_short": "M", "Chaikin Oscillator_input": "Oscylator Chaikin", "Price Levels": "Poziomy Ceny", "Show Splits": "Pokaż podziały", "Zero Line_input": "Linia Zerowa", "__specialSymbolOpen__Today at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__dzisiaj o__specialSymbolClose____dayTime__", "Increment_input": "Przyrost", "Days_interval": "Dni", "Show Right Scale": "Pokaż Prawą Skalę", "Show Alert Labels": "Pokaż etykiety alertu", "Historical Volatility_study": "Zmienność historyczna", "Lock": "Zablokuj", "length14_input": "długość14", "High": "Maksimum", "Q_input": "Q", "Date and Price Range": "Data i przedział cenowy", "Polyline": "Polilinia", "Reconnect": "Połącz ponownie", "Lock/Unlock": "Zablokuj/Odblokuj", "Price Channel_study": "Kanał cenowy", "Label Down": "Etykieta w dół", "Saturday": "Sobota", "Symbol Last Value": "Ostatnia Wartość Symbolu", "Above Bar": "Ponad świeczką", "Studies": "Analizy", "Color 0_input": "Kolor 0", "Add Symbol": "Dodaj Symbol", "maximum_input": "maksymalny", "Wed": "Śro", "Paris": "Paryż", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "VWMA_study": "VWMA", "fastLength_input": "fastLength", "Time Levels": "Poziomy czasowe", "Width": "Szerokość", "Loading": "Ładowanie", "Template": "Szablon", "Use Lower Deviation_input": "Użyj niższego odchylenia", "Up Wave 3": "Maksymalny rzut 3", "Parallel Channel": "Kanał równoległy", "Time Cycles": "Cykle Czasu", "Second fraction part is invalid.": "Druga część frakcji jest nieważna.", "Divisor_input": "Dzielnik", "Down Wave 1 or A": "Fala spadkowa 1 lub A", "ROC_input": "ROC", "Dec": "Gru", "Ray": "Promień", "Extend": "Rozszerz", "length7_input": "długość7", "Bring Forward": "Przenieś poziom wyżej", "Bottom": "Dno", "Apply Elliot Wave Major": "Zastosuj falę Elliota - cykl podstawowy", "Undo": "Cofnij", "Original": "Oryginał", "Mon": "Pon", "Right Labels": "Prawe etykiety", "Long Length_input": "Długa Długość", "True Strength Indicator_study": "Prawdziwy wskaźnik siły", "%R_input": "%R", "There are no saved charts": "Brak zapisanych wykresów", "Instrument is not allowed": "Instrumenty nie są dostępne.", "bars_margin": "słupki", "Decimal Places": "Miejsca Dziesiętne", "Show Indicator Last Value": "Pokaż ostatnią wartość wskaźnika", "Initial capital": "Kapitał początkowy", "Show Angle": "Pokaż kąt", "Mass Index_study": "Wskaźnik Masy", "More features on tradingview.com": "Więcej funkcji na pl.tradingview.com", "Objects Tree...": "Drzewo Obiektów...", "Remove Drawing Tools & Indicators": "Usuń Narzędzia Rysowania i Wskaźniki", "Length1_input": "Długość1", "Always Invisible": "Zawsze niewidoczne", "Circle": "Okrąg", "Days": "Dni", "x_input": "x", "Save As...": "Zapisz Jako...", "Elliott Double Combo Wave (WXY)": "Kombinacja podwójna fal Elliotta (WXY)", "Parabolic SAR_study": "Paraboliczny SAR", "Any Symbol": "Dowolny symbol", "Variance": "Wariancja", "Stats Text Color": "Statystyki Kolor tekstu", "Minutes": "Minuty", "Williams Alligator_study": "Williams Alligator", "Projection": "Projekcja", "Custom color...": "Wybierz kolor...", "Jan": "Sty", "Jaw_input": "Jaw", "Right": "Prawy", "Help": "Pomoc", "Coppock Curve_study": "Krzywa Coppocka", "Reversal Amount": "Kwota odwrócenia.", "Reset Chart": "Resetuj Wykres", "Marker Color": "Kolor markera", "Sunday": "Niedziela", "Left Axis": "Oś lewa", "Open": "Otwarcie", "YES": "TAK", "longlen_input": "longlen", "Moving Average Exponential_study": "Wykładnicza średnia krocząca", "Source border color": "Źródło koloru obramowania", "Redo {0}": "Ponów {0}", "Cypher Pattern": "Formacja Cypher", "s_dates": "s", "Area": "Obszar", "Triangle Pattern": "Formacja Trójkąta", "Balance of Power_study": "Balans mocy", "EOM_input": "EOM", "Shapes_input": "Kształty", "Oversold_input": "Wyprzedany", "Apply Manual Risk/Reward": "Ręcznie dostosuj Ryzyko/Zysk", "Market Closed": "Rynek zamknięty", "Indicators": "Wskaźniki", "close": "Close", "q_input": "q", "You are notified": "Zostaniesz powiadomiony", "Font Icons": "Ikony Czcionek", "%D_input": "%D", "Border Color": "Kolor obramowania", "Offset_input": "Wyprzedzenie", "Risk": "Ryzyko", "Price Scale": "Skala cen", "HV_input": "HV", "Seconds": "Sekundy", "Start_input": "Start", "Elliott Impulse Wave (12345)": "Fala Elliotta - fala impulsu (12345)", "Hours": "Godziny", "Send to Back": "Cofnij", "Color 4_input": "Kolor 4", "Angles": "Kąty", "Prices": "Ceny", "Hollow Candles": "Puste Świece", "July": "Lipiec", "Create Horizontal Line": "Wstaw linię poziomą", "Minute": "Minuta", "Cycle": "Cykl", "ADX Smoothing_input": "Wygładzanie ADX", "One color for all lines": "Jeden kolor dla wszystkich linii", "m_dates": "m", "Settings": "Ustawienia", "Candles": "Świece", "We_day_of_week": "Śr", "Width (% of the Box)": "Szerokość (% ramki)", "Go to...": "Idź do...", "Pip Size": "Rozmiar Pip", "Wednesday": "Środa", "This drawing is used in alert. If you remove the drawing, the alert will be also removed. Do you want to remove the drawing anyway?": "Ten rysunek jest używany w ostrzeżeniu. Jeśli usuniesz rysunek, alert zostanie również usunięty. Czy pomimo to chcesz usunąć ten rysunek?", "Show Countdown": "Pokaż czas do końca", "Show alert label line": "Pokaż linię etykiet ostrzegawczych", "Down Wave 2 or B": "Fala spadkowa 2 lub B", "MA_input": "MA", "Length2_input": "Długość2", "not authorized": "brak autoryzacji", "Session Volume_study": "Session Volume", "Image URL": "URL Obrazka", "SMI Ergodic Oscillator_input": "Oscylator SMI Ergodic", "Show Objects Tree": "Pokaż Drzewo Obiektów", "Primary": "Główny", "Price:": "Cena:", "Bring to Front": "Przenieś na pierwszy plan", "Brush": "Pędzel", "Not Now": "Nie teraz", "Yes": "Tak", "C_data_mode_connecting_letter": "C", "SMALen4_input": "SMALen4", "Apply Default Drawing Template": "Zastosuj domyślny szablon rysowania", "Compact": "Kompaktowy", "Save As Default": "Zapisz jako domyślny", "Target border color": "Docelowy kolor obramowania", "Invalid Symbol": "Nieprawidłowy Symbol", "Inside Pitchfork": "Wewnątrz wskaźnika Pitchfork", "yay Color 1_input": "yay Kolor 1", "Quandl is a huge financial database that we have connected to TradingView. Most of its data is EOD and is not updated in real-time, however the information may be extremely useful for fundamental analysis.": "Quandl to ogromna baza danych finansowych, która jest połaczona z TradingView. Większość jej danych to EOD i nie jest aktualizowana w czasie rzeczywistym, jednak informacje mogą być niezwykle użyteczne dla podstawowej analizy.", "Hide Marks On Bars": "Ukryj znaki na świeczkach", "Cancel Order": "Anuluj zlecenie", "Hide All Drawing Tools": "Ukryj narzędzia do rysowania", "WMA Length_input": "Długość WMA", "Show Dividends on Chart": "Pokaż Dywidendy na wykresie", "Show Executions": "Pokaż egzekucje", "Borders": "Granice", "Remove Indicators": "Usuń Wskaźniki", "loading...": "ładowanie...", "Closed_line_tool_position": "Zamknięte", "Rectangle": "Prostokąt", "Change Resolution": "Zmień rozdzielczość", "Indicator Arguments": "Argumenty wskaźników", "Symbol Description": "Opis Symbolu", "Chande Momentum Oscillator_study": "Oscylator Momentum Chande", "Degree": "Stopień", " per order": " na transakcję", "Line - HL/2": "Linia - HL/2", "Supercycle": "Supercykl", "Jun": "Cze", "Least Squares Moving Average_study": "Średnia krocząca najmniejszych kwadratów", "Change Variance value": "Zmień wariancję", "powered by ": "Przygotowane przez ", "Source_input": "Źródło", "Change Seconds To": "Zmień sekundy do", "%K_input": "%K", "Scales Text": "Skaluj Tekst", "Please enter template name": "Wstaw nazwę szablonu", "Symbol Name": "Nazwa Symbolu", "Tokyo": "Tokio", "Events Breaks": "Przerwy na wydarzenia", "Study Templates": "Szablony badania", "Months": "Miesiące", "Symbol Info...": "Informacje o Symbolu...", "Elliott Wave Minor": "Fala Elliotta - cykl mniejszy", "Read our blog for more info!": "Przeczytaj nasz blog aby zdobyć więcej informacji!", "Measure (Shift + Click on the chart)": "Pomiar (Shift + Kliknij na wykres)", "Override Min Tick": "Zastąpienie Min Tick", "Show Positions": "Pokaż Pozycje", "Dialog": "Komunikat", "Add To Text Notes": "Dodaj notatkę", "Elliott Triple Combo Wave (WXYXZ)": "Kombinacja potrójna fal Elliotta (WXYXZ)", "Multiplier_input": "Mnożnik", "Risk/Reward": "Ryzyko/Nagroda", "Base Line Periods_input": "Okresy linii bazowych", "Show Dividends": "Pokaż Dywidendy", "Relative Strength Index_study": "(RSI) Wskaźnik Względnej Siły", "Modified Schiff Pitchfork": "Zmodyfikowany Schiff Pitchfork", "Top Labels": "Górne Etykiety", "Show Earnings": "Pokaż zyski", "Line - Open": "Linia - Otwarte", "Elliott Triangle Wave (ABCDE)": "Trójkątna fala Elliotta (ABCDE)", "Minuette": "Menuet", "Text Wrap": "Zawijanie tekstu", "Reverse Position": "Odwróć pozycje", "Elliott Minor Retracement": "Podrzędna korekta Elliota", "Th_day_of_week": "Czw", "Slash_hotkey": "ukośnik", "No symbols matched your criteria": "Brak symboli spełniających twoje kryteria", "Icon": "Ikona", "lengthRSI_input": "długośćRSI", "Tuesday": "Wtorek", "Teeth Length_input": "Długość Teeth", "Indicator_input": "Wskaźnik", "Open Interval Dialog": "Otwarte okno dialogowe przedziału", "Athens": "Ateny", "Fib Speed Resistance Arcs": "Łuki Fibonacciego - prędkość i opór", "Content": "Treść", "middle": "środek", "Lock Cursor In Time": "Zablokuj kursor w osi czasu", "Intermediate": "Pośredni", "Eraser": "Gumka", "Relative Vigor Index_study": "Relative Vigor Index", "Envelope_study": "Koperta", "Pre Market": "Pre-Market", "Horizontal Line": "Pozioma Linia", "O_in_legend": "Otwarcie", "Confirmation": "Potwierdzenie", "Lines:": "Linie:", "Hide Favorite Drawings Toolbar": "Ukryj pasek ulubionych narzędzi rysowania", "X Cross": "Krzyżyk X", "Profit Level. Ticks:": "Poziom zysku. Zaznaczone:", "Show Date/Time Range": "Pokaż Zasięg Daty/Czasu", "Level {0}": "Poziom {0}", "Favorites": "Ulubione", "Horz Grid Lines": "Poziome linie siatki", "-DI_input": "-DI", "Price Range": "Zakres Cen", "deviation_input": "odchylenie", "Account Size": "Rozmiar konta", "Value_input": "Wartość", "Time Interval": "Interwał czasowy", "Success text color": "Kolor tekstu w przypadku sukcesu", "ADX smoothing_input": "Wygładzanie ADX", "Order size": "Wielkość zamówienia", "Drawing Tools": "Narzędzia Rysowania", "Save Drawing Template As": "Zachowaj Szablon Rysowania Jako", "Traditional": "Tradycyjny", "Chaikin Money Flow_study": "Wskaźnik przepływów pieniężnych Chaikina", "Ease Of Movement_study": "Łatwość Ruchu", "Defaults": "Domyślne", "Percent_input": "Procent", "Interval is not applicable": "Interwał nie ma zastosowania", "short_input": "krótki", "Visual settings...": "Ustawienia wizualne ...", "RSI_input": "RSI", "Chatham Islands": "Wyspy Chatham", "Detrended Price Oscillator_input": "Detektor oscylatora cenowego", "Mo_day_of_week": "Pn", "Up Wave 4": "Maksymalny rzut 4", "center": "środek", "Vertical Line": "Linia Pionowa", "Show Splits on Chart": "Pokaż podziały na wykresie", "Sorry, the Copy Link button doesn't work in your browser. Please select the link and copy it manually.": "Przepraszamy, przycisk Kopiuj Link nie działa w Twojej przeglądarce. Proszę zaznaczyć link i skopiować go ręcznie.", "Levels Line": "Linia poziomów", "Events & Alerts": "Zdarzenia i alerty", "May": "Maj", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "Aroon Dolny", "Add To Watchlist": "Dodaj do Ulubionych", "Total": "Razem", "Price": "Cena", "left": "lewo", "Lock scale": "Zablokuj skalę", "Limit_input": "Limit", "Change Days To": "Zmień dni na", "Price Oscillator_study": "Oscylator cenowy", "smalen1_input": "smalen1", "Drawing Template '{0}' already exists. Do you really want to replace it?": "Szablon rysunku \"{0}\" już istnieje. Czy chcesz go zastąpić?", "Show Middle Point": "Pokaż Punkt Środkowy", "KST_input": "KST", "Extend Right End": "Wydłuż prawy koniec", "Fans": "Fani", "Line - Low": "Linia - Minimum", "Price_input": "Cena", "Gann Fan": "Wachlarz Ganna", "Weeks": "Tygodnie", "McGinley Dynamic_study": "McGinley Dynamic", "Relative Volatility Index_study": "Względny wskaźnik płynności", "Source Code...": "Kod źródłowy", "PVT_input": "PVT", "Show Hidden Tools": "Pokaż ukryte narzędzia", "Hull Moving Average_study": "Średnia krocząca Hull'a", "Symbol Prev. Close Value": "Poprz.Wartość Zamknięcia Symbolu", "{0} chart by TradingView": "{0} wykres od TradingView", "Right Shoulder": "Prawe ramię", "Remove Drawing Tools": "Usuń Narzędzia Rysowania", "Friday": "Piątek", "Zero_input": "Zero", "Company Comparison": "Porównanie Spółek", "Stochastic Length_input": "Długość Stochastic", "mult_input": "mult", "URL cannot be received": "Adres nieosiągalny", "Success back color": "Kolor tła w przypadku sukcesu", "E_data_mode_end_of_day_letter": "E", "Trend-Based Fib Extension": "Rozszerzenie Fib na podstawie trendów", "Top": "Szczyt", "Double Curve": "Podwójna krzywa", "Stochastic RSI_study": "Stochastic RSI", "Oops!": "Ups!", "Horizontal Ray": "Promień poziomy", "smalen3_input": "smalen3", "Symbol Labels": "Etykiety Symbolu", "Script Editor...": "Edytor skryptów...", "Are you sure?": "Jesteś pewien?", "Trades on Chart": "Transakcje na wykresie", "Listed Exchange": "Wymieniona Giełda", "Error:": "Błąd:", "Fullscreen mode": "Tryb pełnoekranowy", "Add Text Note For {0}": "Dodaj notatkę tekstową dla {0}", "K_input": "K", "Do you really want to delete Drawing Template '{0}' ?": "Czy na pewno chcesz usunąć szablon rysunku '{0}'?", "ROCLen3_input": "ROCLen3", "Micro": "Mikro", "Text Color": "Kolor Tekstu", "Rename Chart Layout": "Usuń Układ Wykresu", "Built-ins": "Wbudowane", "Background color 2": "Kolor tła 2", "Drawings Toolbar": "Pasek z narzędziami do rysowania", "New Zealand": "Nowa Zelandia", "CHOP_input": "CHOP", "Apply Defaults": "Zastosuj domyślne", "% of equity": "% kapitału", "Extended Alert Line": "Linia alertu powiększona", "Note": "Uwaga", "Moving Average Channel_study": "Kanał średnich kroczących", "Show": "Pokaż", "{0} bars": "{0} słupki", "Lower_input": "Dolny", "Created ": "Stworzone ", "Warning": "Ostrzeżenie", "Elder's Force Index_study": "Starszy Force Index", "Show Earnings on Chart": "Pokaż Zarobki na Wykresie", "ATR_input": "ATR", "Low": "Minimum", "Bollinger Bands %B_study": "Wstęgi Bollingera %B", "Time Zone": "Strefa Czasowa", "right": "prawo", "Wrong value": "Nieprawidłowa wartość", "Upper Band_input": "Górna część", "Sun": "Nie", "Rename...": "Zmień nazwę", "start_input": "start", "No indicators matched your criteria.": "Brak wskaźników spełniających twoje kryteria", "Commission": "Prowizja", "Down Color": "Kolor w dół", "Short length_input": "Krótka długość", "Kolkata": "Kalkuta", "Triple EMA_study": "Potrójne EMA", "Technical Analysis": "Analiza Techniczna", "Show Text": "Pokaż Tekst", "Channel": "Kanał", "FXCM CFD data is available only to FXCM account holders": "Dane FXCM CFD są dostępne tylko dla posiadaczy kont w FXCM", "Lagging Span 2 Periods_input": "Okresy spowolnienia długości 2", "Connecting Line": "Linia łącząca", "Seoul": "Seul", "bottom": "dół", "Teeth_input": "Teeth", "Sig_input": "Sig", "Open Manage Drawings": "Otwarte Zarządzanie Rysunkami", "Save New Chart Layout": "Zachowaj Nowy Wygląd Wykresu", "Fib Channel": "Kanał Fibonacciego", "Save Drawing Template As...": "Zachowaj Szablon Rysowania Jako...", "Minutes_interval": "Minuty", "Up Wave 2 or B": "Maksymalny rzut 2 lub B", "Columns": "Kolumny", "Directional Movement_study": "Ruch kierunkowy", "roclen2_input": "roclen2", "Apply WPT Down Wave": "Zastosuj zasięg cenowy dla fali spadkowej", "Not applicable": "Nie dotyczy", "Bollinger Bands %B_input": "Wstęgi Bollingera %B", "Default": "Domyślnie", "Template name": "Nazwa Szablonu", "Indicator Values": "Wartość wskaźnika", "Lips Length_input": "Długość Lips", "Use Upper Deviation_input": "Użyj górnego odchylenia", "L_in_legend": "najnizszy punkt", "Remove custom interval": "Usuń niestandardowy interwał", "shortlen_input": "shortlen", "Quotes are delayed by {0} min": "Cytowanie jest opóźnione o {0} min.", "Hide Events on Chart": "Ukryj zdarzenia na wykresie", "Cash": "Gotówka", "Profit Background Color": "Kolor Tła Zysku", "Bar's Style": "Styl Słupków", "Exponential_input": "Wykładniczy", "Down Wave 5": "Fala spadkowa 5", "Previous": "Poprzednie", "Stay In Drawing Mode": "Pozostań w Trybie Rysowania", "Comment": "Komentarz", "Connors RSI_study": "Connors RSI", "Bars": "Słupki", "Show Labels": "Pokaż Etykiety", "Flat Top/Bottom": "", "Symbol Type": "Typ Symbolu", "December": "Grudzień", "Lock drawings": "Zablokuj możliwość rysowania", "Border color": "Kolor obramowania", "Change Seconds From": "Zmień sekundy od", "Left Labels": "Lewe Etykiety", "Insert Indicator...": "Wstaw Wskaźnik...", "ADR_B_input": "ADR_B", "Paste %s": "Wklej %s", "Change Symbol...": "Zmień Symbol...", "Timezone": "Strefa czasowa", "Invite-only script. You have been granted access.": "Otrzymałeś dostęp do skryptu prywatnego", "Color 6_input": "Kolor 6", "Oct": "Paź", "ATR Length": "Długość ATR", "{0} financials by TradingView": "{0} dane finansowe TradingView", "Extend Lines Left": "Rozciągnij linie w lewo", "Feb": "Lut", "Transparency": "Przezroczystość", "No": "Nie", "June": "Czerwiec", "Cyclic Lines": "Linie cyklu.", "length28_input": "długość28", "ABCD Pattern": "Formacja ABCD", "When selecting this checkbox the study template will set \"__interval__\" interval on a chart": "Zaznaczając to pole wyboru, szablon testu ustawi interwał \"__interval__\" na wykresie", "Add": "Dodaj", "OC Bars": "Słupki OC", "Millennium": "Milenium", "On Balance Volume_study": "Waga woluminu", "Apply Indicator on {0} ...": "Wstaw wskaźnik na {0} ...", "NEW": "Nowy", "Chart Layout Name": "Nazwa układu wykresu", "Up bars": "Słupki w górę", "Hull MA_input": "Hull MA", "Lock Scale": "Zablokuj Skalę", "distance: {0}": "dystans: {0}", "Extended": "Rozszerzone", "Square": "Kwadrat", "Three Drives Pattern": "Formacja Trzech Indian", "NO": "NIE", "Top Margin": "Margines Górny", "Up fractals_input": "Górne fraktale", "Insert Drawing Tool": "Wstaw Narzędzie Rysowania", "OHLC Values": "Wartości OHLC", "Correlation_input": "Korelacja", "Session Breaks": "Przerwy w sesji", "Add {0} To Watchlist": "Dodaj {0} do Ulubionych", "Anchored Note": "Przyczepiona notatka", "lipsLength_input": "lipsLength", "low": "niski", "Apply Indicator on {0}": "Wstaw wskaźnik na {0}", "UpDown Length_input": "Zakres w dół", "Price Label": "Etykieta Ceny", "November": "Listopad", "Tehran": "Teheran", "Balloon": "Balon", "Track time": "Czas utworu", "Background Color": "Kolor Tła", "an hour": "godzina", "Right Axis": "Prawa oś", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "slowLength", "Click to set a point": "Kliknij, aby ustawić punkt", "Save Indicator Template As...": "Zapisz Szablon Wskaźnika Jako...", "Arrow Up": "Strzałka w górę", "n/a": "n.d.", "Indicator Titles": "Nazwa wskaźnika", "Failure text color": "Błędny kolor tekstu", "Sa_day_of_week": "So", "Net Volume_study": "Wolumen netto", "Error": "Błąd", "Edit Position": "Edytuj pozycję", "RVI_input": "RVI", "Centered_input": "Wyśrodkowany", "Recalculate On Every Tick": "Ponownie przelicz po każdym zaznaczeniu", "Left": "Lewo", "Simple ma(oscillator)_input": "Simple ma (oscylator)", "Compare": "Porównaj", "Fisher Transform_study": "Transformacja Fishera", "Show Orders": "Pokaż Zlecenia", "Zoom In": "Przybliż", "Length EMA_input": "Długość EMA", "Enter a new chart layout name": "Wprowadź nową nazwę dla tego układu wykresów", "Signal Length_input": "Długość sygnału", "FAILURE": "PORAŻKA", "Point Value": "Wartość punktowa", "D_interval_short": "D", "MA with EMA Cross_study": "Przecięcie MA z EMA", "Label Up": "Etykieta w górę", "Close": "Zamknięcie", "ParabolicSAR_input": "ParabolicSAR", "Log Scale_scale_menu": "Skala Logarytmiczna", "MACD_input": "MACD", "Do not show this message again": "Nie pokazuj ponownie tego komunikatu", "No Overlapping Labels": "Brak nakładających się etykiet", "Arrow Mark Left": "Strzałka w lewo", "Slow length_input": "Powolna długość", "Line - Close": "Linia - zamknięcia", "Confirm Inputs": "Potwierdź wprowadzone", "Open_line_tool_position": "Otwarte", "Lagging Span_input": "Spowolnienie długości", "Cross": "Krzyżyk", "Thursday": "Czwartek", "Arrow Down": "Strzałka w dół", "Elliott Correction Wave (ABC)": "Korekcyjna fala Elliotta (ABC)", "Error while trying to create snapshot.": "Podczas próby utworzenia zrzutu wystąpił błąd.", "Label Background": "Tło Etykiety", "Templates": "Szablony", "Please report the issue or click Reconnect.": "Proszę zgłosić problem lub kliknąć Połącz ponownie.", "Normal": "Normalny", "Signal Labels": "Etykiety sygnału", "Delete Text Note": "Usuń notatkę tekstową", "compiling...": "kompilacja...", "Detrended Price Oscillator_study": "Detektor oscylatora cenowego", "Color 5_input": "Kolor 5", "Fixed Range_study": "Fixed Range", "Up Wave 1 or A": "Maksymalny rzut 1 lub A", "Scale Price Chart Only": "Tylko wykres skali ceny", "Unmerge Up": "Cofnij Złączenie W Górę", "auto_scale": "auto", "Short period_input": "Krótki okres", "Background": "Tło", "Up Color": "Kolor w górę", "Apply Elliot Wave Intermediate": "Zastosuj falę Elliota - cykl średni", "VWMA_input": "VWMA", "Lower Deviation_input": "Dolne odchylenie", "Save Interval": "Zapisz interwał", "February": "Luty", "Reverse": "Odwróć", "Oops, something went wrong": "Oops, coś poszło nie tak", "Add to favorites": "Dodaj do ulubionych", "Median": "Mediana", "ADX_input": "ADX", "Remove": "Usuń", "len_input": "len", "Arrow Mark Up": "Strzałka w górę", "April": "Kwiecień", "Active Symbol": "Aktywny Symbol", "Extended Hours": "Rozszerzone godziny", "Crosses_input": "Krzyże", "Middle_input": "Środek", "Sync drawing to all charts": "Synchronizuj rysunek z wszystkimi wykresami", "LowerLimit_input": "Dolny limit", "Know Sure Thing_study": "Zyskaj pewność", "Copy Chart Layout": "Kopiuj Wygląd Wykresu", "Compare...": "Porównaj...", "1. Slide your finger to select location for next anchor
2. Tap anywhere to place the next anchor": "1. Przesuń palcem, żeby wybrać lokalizację dla następnej kotwicy
2. Stuknij w dowolnym miejscu, aby umieścić następną kotwicę", "Text Notes are available only on chart page. Please open a chart and then try again.": "Notatki tekstowe są dostępne tylko na stronie wykresu. Otwórz wykres i spróbuj podobnie.", "Color": "Kolor", "Aroon Up_input": "Aroon Górny", "Singapore": "Singapur", "Scales Lines": "Skaluj Linie", "Type the interval number for munute charts (i.e. 5 if it is going to be a five minute chart). Or number plus letter for H (Hourly), D (Daily), W (Weekly), M (Monthly) intervals (i.e. D or 2H)": "Wpisz numer interwału dla wykresów minut (tj. 5, jeśli ma to być wykres pięciu minut). Lub numer plus litera dla H (Godzinowo), D (dziennie), W (co tydzień), M (co miesiąc) (tzn. D lub 2H)", "Ellipse": "Elipsa", "Up Wave C": "Maksymalny rzut C", "Show Distance": "Pokaż dystans", "Risk/Reward Ratio: {0}": "Współczynnik Ryzyko/Zysk: {0}", "Restore Size": "Przywróć Rozmiar", "Williams Fractal_study": "Williams Fractal", "Merge Up": "Połącz w Górę", "Right Margin": "Prawy Margines", "Moscow": "Moskwa", "Warsaw": "Warszawa"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/pt.json b/static/Kline/charting_library/static/localization/translations/pt.json new file mode 100644 index 0000000..4d63fb7 --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/pt.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "mínima variação de preço", "Months_interval": "Meses", "Realtime": "Tempo real", "Callout": "Comentário", "Sync to all charts": "Sincronizar com todos os gráficos", "month": "mês", "London": "Londres", "roclen1_input": "roclen1", "Unmerge Down": "desmesclar para baixo", "Percents": "Porcentuais", "Search Note": "Procurar nota", "Minor": "Secundário", "Do you really want to delete Chart Layout '{0}' ?": "Você quer realmente deletar o leiaute do gráfico '{0}'?", "Quotes are delayed by {0} min and updated every 30 seconds": "As cotações são atrasadas {0} min e atualizadas em tempo real", "Magnet Mode": "Modo magnético", "OSC_input": "OSC", "Hide alert label line": "Ocultar a linha de descrição do alerta", "Volume_study": "Volume", "Lips_input": "Lábios", "Show real prices on price scale (instead of Heikin-Ashi price)": "Mostrar preços reais na escala de preços (em vez de preço de Heikin-Ashi)", "Histogram": "Histograma", "Base Line_input": "Linha de base", "Step": "Degraus", "Insert Study Template": "Inserir modelo de estudo", "Fib Time Zone": "Zona temporal de Fibonacci", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "Bandas de Bollinger", "Show/Hide": "Visualizar/Esconder", "Upper_input": "Superior", "exponential_input": "exponencial", "Move Up": "Mover para cima", "Symbol Info": "Sobre o instrumento", "This indicator cannot be applied to another indicator": "Este indicador não pode ser aplicado a outro indicador", "Scales Properties...": "Configurações da escala...", "Count_input": "Contagem", "Full Circles": "Círculos completos", "Industry": "Indústria", "OnBalanceVolume_input": "BalançodeVolume", "Cross_chart_type": "Cruz", "H_in_legend": "Máx.", "a day": "um dia", "Pitchfork": "Garfo", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Acúmulo/Distribuição", "Rate Of Change_study": "Taxa de Variação (ROC)", "in_dates": "em", "Clone": "Duplicar", "Color 7_input": "Cor 7", "Chop Zone_study": "Zona Lateralizada", "Bar #": "Barra nº", "Scales Properties": "Configurações da escala...", "Trend-Based Fib Time": "Tempo de Fibonacci Baseado na Tendência", "Remove All Indicators": "Remover todos os Indicadores", "Oscillator_input": "Oscilador", "Last Modified": "Última modificação", "yay Color 0_input": "yay Cor 0", "Labels": "Legendas", "Chande Kroll Stop_study": "Parada de Chande Kroll", "Hours_interval": "Horas", "Allow up to": "Permite até", "Scale Right": "Escala direita", "Money Flow_study": "Fluxo Monetário", "siglen_input": "siglen", "Indicator Labels": "Legendas do indicador", "__specialSymbolOpen__Tomorrow at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Amanhã em__specialSymbolClose____dayTime__", "Toggle Percentage": "Percentagem", "Remove All Drawing Tools": "Remover todas as ferramentas de desenho", "Remove all line tools for ": "Remover todas as ferramentas de linhas para ", "Linear Regression Curve_study": "Curva de Regressão Linear", "Symbol_input": "Símbolo", "Currency": "Moeda", "increment_input": "incremento", "Compare or Add Symbol...": "Comparar ou adicionar símbolo...", "__specialSymbolOpen__Last__specialSymbolClose__ __dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Último__specialSymbolClose____dayName____specialSymbolOpen__em__specialSymbolClose____dayTime__", "Save Chart Layout": "Salvar Layout do Gráfico", "Number Of Line": "Número da Linha", "Label": "Legenda", "Post Market": "Pós-Mercado", "second": "segundo", "Change Hours To": "Mudar horas para", "smoothD_input": "suaveD", "Falling_input": "Queda", "X_input": "X", "Risk/Reward short": "Risco/recompensa vendedor", "Donchian Channels_study": "Canais Donchian", "Entry price:": "Preço de entrada:", "Circles": "Círculos", "Head": "Cabeça", "Stop: {0} ({1}) {2}, Amount: {3}": "Stop: {0} ({1}) {2}, Quantidade: {3}", "Mirrored": "Refletido", "Ichimoku Cloud_study": "Nuvem Ichimoku", "Signal smoothing_input": "Suavização do sinal", "Use Upper Deviation_input": "Use o Desvio Superior", "Toggle Auto Scale": "Escala Automática", "Grid": "Grade", "Triangle Down": "Triângulo de Baixa", "Apply Elliot Wave Minor": "Aplicar a onda de Elliott menor", "Slippage": "Derrapagem", "Smoothing_input": "Suavização", "Color 3_input": "Cor 3", "Jaw Length_input": "Comprimento do maxilar", "Inside": "Interior", "Delete all drawing for this symbol": "Remover todos os desenhos para este símbolo", "Fundamentals": "Fundamentos", "Keltner Channels_study": "Canais Keltner", "Long Position": "Posição compradora", "Bands style_input": "Estilo de bandas", "Undo {0}": "Desfazer", "With Markers": "Com Marcadores", "Momentum_study": "Momentum", "MF_input": "MF", "Gann Box": "Caixa de Gann", "Switch to the next chart": "Mudar para o próximo gráfico", "charts by TradingView": "gráficos por TradingView", "Fast length_input": "Comprimento rápido", "Apply Elliot Wave": "Aplicar onda de Elliot", "Disjoint Angle": "Deslocamento de ângulo", "Supermillennium": "Supermilênio", "W_interval_short": "S", "Show Only Future Events": "Mostrar Somente Eventos Futuros", "Log Scale": "Escala logarítmica", "Line - High": "Linha - Máximo", "Zurich": "Zurique", "Equality Line_input": "Linha de Igualdade", "Short_input": "Venda", "Fib Wedge": "Cunha de Fibonacci", "Line": "Linha", "Session": "Sessão", "Down fractals_input": "Fractais Abaixo", "Fib Retracement": "Retração de Fibonacci", "smalen2_input": "smalen2", "isCentered_input": "Está centrado", "Border": "Contorno", "Klinger Oscillator_study": "Oscilador de Klinger", "Absolute": "Absoluto", "Tue": "Terça", "Style": "Estilo", "Show Left Scale": "Mostrar Escala à Esquerda", "SMI Ergodic Indicator/Oscillator_study": "Indicador/Oscilador SMI Ergodic", "Aug": "Аgo", "Last available bar": "Última barra disponível", "Manage Drawings": "Gerenciar desenhos", "Analyze Trade Setup": "Analisar configuração de negociação", "No drawings yet": "Ainda sem desenhos", "SMI_input": "SMI", "Chande MO_input": "Chande MO", "jawLength_input": "Largura da Mandíbula", "TRIX_study": "Média Móvel Tripla (TRIX)", "Show Bars Range": "Visualizar Intervalo de Barras", "RVGI_input": "RVGI", "Last edited ": "Editado por último ", "signalLength_input": "Período", "%s ago_time_range": "%s atrás", "Reset Settings": "Resetar as configurações", "PnF": "P&F", "d_dates": "d", "Point & Figure": "Ponto e Figura", "August": "Agosto", "Recalculate After Order filled": "Recalcular após preenchimento de ordem", "Source_compare": "Fonte", "Down bars": "Barras de baixo", "Correlation Coefficient_study": "Coeficiente de Correlação", "Delayed": "Com atraso", "Bottom Labels": "Legendas inferiores", "Text color": "Cor do texto", "Levels": "Níveis", "Length_input": "Período", "Short Length_input": "Comprimento curto", "teethLength_input": "comprimento do dente", "Visible Range_study": "Range Visível", "Delete": "Remover", "Text Alignment:": "Alinhamento do Texto:", "Open {{symbol}} Text Note": "Abrir anotações sobre {{symbol}}", "October": "Outubro", "Lock All Drawing Tools": "Bloquear todas as ferramentas gráficas", "Long_input": "COMPRA", "Right End": "Extremidade direita", "Show Symbol Last Value": "Mostrar Último Valor do Símbolo", "Head & Shoulders": "Cabeça e ombros", "Do you really want to delete Study Template '{0}' ?": "Você quer realmente deletar o modelo de estudo '{0}'?", "Favorite Drawings Toolbar": "Barra de ferramentas dos desenhos favoritos", "Properties...": "Propriedades...", "Reset Scale": "Resetar a escala", "MA Cross_study": "Cruzamento de MM", "Trend Angle": "Ângulo de Tendência", "Snapshot": "Captura", "Crosshair": "Mira", "Signal line period_input": "Período de linha de sinal", "Timezone/Sessions Properties...": "Fuso Horário/Sessão", "Line Break": "Quebra de linha", "Quantity": "Quantidade", "Price Volume Trend_study": "Tendência de Preço Volume (PVT)", "Auto Scale": "Escala automática", "hour": "hora", "Delete chart layout": "Remover layout de gráfico", "Text": "Texto", "F_data_mode_forbidden_letter": "F", "Risk/Reward long": "Risco/recompensa comprador", "Apr": "Аbr", "Long RoC Length_input": "RoC Comprimento Longo", "Length3_input": "Comprimento 3", "+DI_input": "+DI", "Madrid": "Маdrid", "Use one color": "Usar uma cor", "Chart Properties": "Propriedades do gráfico", "No Overlapping Labels_scale_menu": "Não há etiquetas sobrepostas", "Exit Full Screen (ESC)": "Sair do modo tela cheia (ESC)", "MACD_study": "MACD", "Show Economic Events on Chart": "Mostrar Eventos Econômicos no Gráfico", "Moving Average_study": "Média Móvel", "Show Wave": "Mostrar Onda", "Failure back color": "Falha de cor de fundo", "Below Bar": "Abaixo da barra", "Time Scale": "Escala de tempo", "

Only D, W, M intervals are supported for this symbol/exchange. You will be automatically switched to a D interval. Intraday intervals are not available because of exchange policies.

": "

Apenas os intervalos D, S, M são suportados para este símbolo / bolsa. Você será levado automaticamente para o intervalo D. Intervalos intradiários não estão disponíveis devido a políticas da bolsa.

", "Extend Left": "Estender para a esquerda", "Date Range": "Intervalo de tempo", "Min Move": "Mov. mínimo", "Price format is invalid.": "O formato do preço não é válido.", "Show Price": "Visualizar Preço", "Level_input": "Nível", "Commodity Channel Index_study": "Índice de Canal de Commodities (CCI)", "Elder's Force Index_input": "Índice de força antigo", "Gann Square": "Quadrado de Gann", "Format": "Formatar", "Color bars based on previous close": "Colorir barra de acordo com o fechamento anterior", "Change band background": "Mudar fundo da faixa", "Target: {0} ({1}) {2}, Amount: {3}": "Alvos: {0} ({1}) {2}, Quantidade: {3}", "Zoom Out": "Diminuir Zoom", "This chart layout has a lot of objects and can't be published! Please remove some drawings and/or studies from this chart layout and try to publish it again.": "Esse gráfico possui objetos demais e não pode ser publicado! Por favor remove alguns desenhos e/ou estudos desse gráfico e tente novamente.", "Anchored Text": "Texto ancorado", "Long length_input": "Comprimento longo", "Edit {0} Alert...": "Editar alerta {0}...", "Previous Close Price Line": "Linha de Preço do Fechamento Anterior", "Up Wave 5": "Onda de alta 5", "Qty: {0}": "Qtde: {0}", "Heikin Ashi": "Heiken Ashi", "Aroon_study": "Aroon", "show MA_input": "mostrar MA", "Lead 1_input": "Conduzir 1", "Short Position": "Posição Vendedora", "SMALen1_input": "SMALen1", "P_input": "P", "Apply Default": "Aplicar padrão", "SMALen3_input": "SMALen3", "Average Directional Index_study": "Índice Direcional Médio", "Fr_day_of_week": "Sexta", "Invite-only script. Contact the author for more information.": "Script sob convite.Contate o autor para mais informações.", "Curve": "Curva", "a year": "um ano", "Target Color:": "Cor do Objetivo:", "Bars Pattern": "Padrão de barras", "D_input": "D", "Font Size": "Tamanho da fonte", "Create Vertical Line": "Criar linha vertical", "p_input": "p", "Rotated Rectangle": "Retângulo girado", "Chart layout name": "Nome do layout do gráfico", "Fib Circles": "Círculos de Fibonacci", "Apply Manual Decision Point": "Aplicar ponto de decisão manual", "Dot": "Ponto", "Target back color": "Cor do fundo do objetivo", "All": "Todos", "orders_up to ... orders": "Ordens", "Dot_hotkey": "Ponto", "Lead 2_input": "Conduzir 2", "Save image": "Salvar Imagem", "Move Down": "Mover para baixo", "Triangle Up": "Triângulo de Alta", "Box Size": "Tamanho da caixa", "Navigation Buttons": "Botões de navegação", "Miniscule": "Minúsculo", "Apply": "Aplicar", "Down Wave 3": "Onda de baixa 3", "Plots Background_study": "Fundo", "Marketplace Add-ons": "Complementos do Marketplace", "Sine Line": "Senóide", "Fill": "Encher", "%d day": "%d dia", "Hide": "Ocultar", "Toggle Maximize Chart": "Alternar para Gráfico Maximizado", "Target text color": "Cor do texto do objetivo", "Scale Left": "Escala a esquerda", "Elliott Wave Subminuette": "Onda de Elliot de subminueto", "Color based on previous close_input": "Cor baseado no fechamento anterior", "Down Wave C": "Onda de baixa C", "Countdown": "Contagem regressiva", "UO_input": "UO", "Pyramiding": "Pirâmide", "Source back color": "Cor do fundo da base", "Go to Date...": "Ir para data...", "Sao Paulo": "São Paulo", "R_data_mode_realtime_letter": "R", "Extend Lines": "Estender linhas", "Conversion Line_input": "Linha de Conversão", "March": "Março", "Su_day_of_week": "Dom", "Exchange": "Bolsa", "Arcs": "Arcos", "Regression Trend": "Tendência de regressão", "Short RoC Length_input": "Comprimento RoC curto", "Fib Spiral": "Espiral de Fibonacci", "Double EMA_study": "Média Móvel Exponencial Dupla (Double EMA)", "minute": "minuto", "All Indicators And Drawing Tools": "Todos os indicadores e ferramentas gráficas", "Indicator Last Value": "Último valor do indicador", "Sync drawings to all charts": "Sincronizar desenhos em todos os gráficos", "Change Average HL value": "Mudança no valor médio de HL", "Stop Color:": "Cor do Stop:", "Stay in Drawing Mode": "Manter em Modo de Desenho", "Bottom Margin": "Margem Inferior", "Save Chart Layout saves not just some particular chart, it saves all charts for all symbols and intervals which you are modifying while working with this Layout": "Salvar Layout do Gráfico não salva apenas um gráfico em particular, salva todos os gráficos para todos os símbolos e intervalos que você esteja modificando enquanto trabalha com esse layout.", "Average True Range_study": "Média da Amplitude de Variação (ATR)", "Max value_input": "Valor máximo", "MA Length_input": "Comprimento MA", "Invite-Only Scripts": "Script sob convite", "in %s_time_range": "em %s", "UpperLimit_input": "Limite superior", "sym_input": "sym", "DI Length_input": "Comprimento DI", "Rome": "Roma", "Scale": "Escala", "Periods_input": "Períodos", "Arrow": "Seta", "useTrueRange_input": "UseFaixaVerdadeira", "Basis_input": "Base", "Arrow Mark Down": "Marca da seta para baixo", "lengthStoch_input": "EstocásticoComprimento", "Taipei": "Тaipé", "Objects Tree": "Lista de Objetos", "Remove from favorites": "Remover dos favoritos", "Show Symbol Previous Close Value": "Mostrar Valor de Fechamento anterior do Símbolo", "Scale Series Only": "Apenas a escala de preços", "Source text color": "Cor do texto da base", "Simple": "Simples", "Report a data issue": "Reportar um erro com os dados", "Arnaud Legoux Moving Average_study": "Arnaud Legoux Média Móvel", "Smoothed Moving Average_study": "Média Móvel Suavizada", "Lower Band_input": "Faixa mais baixa", "Verify Price for Limit Orders": "Verificar Preços para Ordens Limite", "VI +_input": "VI +", "Line Width": "Abrangênia da linha", "Contracts": "Contratos", "Always Show Stats": "Sempre mostrar estatísticas", "Down Wave 4": "Onda de baixa 4", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "MM Simples (linha de sinal)", "Change Interval...": "Alterar Intervalo...", "Public Library": "Biblioteca pública", " Do you really want to delete Drawing Template '{0}' ?": " Você quer realmente deletar o Modelo de Desenho '{0}'?", "Sat": "Sáb.", "Left Shoulder": "Ombro Esquerdo.", "week": "semana", "CRSI_study": "CRSI", "Close message": "Fechar mensagem", "Value_input": "Valor", "Show Drawings Toolbar": "Mostrar Ferramentas de Desenho", "Chaikin Oscillator_study": "Oscilador Chaikin", "Price Source": "Fonte de preço", "Market Open": "Mercado aberto", "Color Theme": "Padrão de cor", "Projection up bars": "Barras de projeção", "Awesome Oscillator_study": "Oscilador Awesome", "Bollinger Bands Width_input": "Largura das Bandas Bollinger", "long_input": "compra", "Error occured while publishing": "Ocorreu um erro ao publicar", "Fisher_input": "Fisher", "Color 1_input": "Cor 1", "Moving Average Weighted_study": "Média Móvel Ponderada", "Save": "Salvar", "Type": "Tipo", "Wick": "Pavio", "Accumulative Swing Index_study": "Índice Acumulativo de Swing", "Load Chart Layout": "Carregar o layout do gráfico", "Show Values": "Mostrar Valores", "Fib Speed Resistance Fan": "Leque de resistência a velocidade de Fibonacci", "Bollinger Bands Width_study": "Largura das Bandas de Bollinger", "This chart layout has more than 1000 drawings, which is a lot! This may negatively affect performance, storage and publishing. We recommend to remove some drawings to avoid potential performance issues.": "Este layout gráfico tem mais de 1000 desenhos, o que é muito! Isso pode afetar negativamente o desempenho, armazenamento e publicação. Recomendamos remover alguns desenhos para evitar potenciais problemas de desempenho.", "Left End": "Extrema esquerda", "%d year": "%d ano", "Always Visible": "Sempre visível", "S_data_mode_snapshot_letter": "S", "Flag": "Bandeira", "Elliott Wave Circle": "Ciclo de ondas de Elliot", "Earnings breaks": "Anúncios de rendimentos", "Change Minutes From": "Mudar minutos de", "Do not ask again": "Não pergunte novamente", "Displacement_input": "Deslocamento", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "Desvio superior", "(H + L)/2": "(Máx.+Mín.)/2", "XABCD Pattern": "Padrão XABCD", "Schiff Pitchfork": "Garfo de Schiff", "Copied to clipboard": "Copiado para a área de transferência", "HLC Bars": "Barras HLC", "Flipped": "Virado", "DEMA_input": "DEMA", "Move_input": "Movimento", "NV_input": "NV", "Choppiness Index_study": "Índice de Choppiness", "Study Template '{0}' already exists. Do you really want to replace it?": "Modelo de Estudo '{0}' já existe. Você deseja substituí-lo?", "Merge Down": "Agrupar para baixo", "Th_day_of_week": "Quinta", " per contract": "  conforme o contrato", "Overlay the main chart": "Sobrepor o gráfico principal", "Screen (No Scale)": "Tela (sem escala)", "Three Drives Pattern": "Padrão 3 Voltas", "Save Indicator Template As": "Salvar modelo de indicador como", "Length MA_input": "Período MM", "percent_input": "percentagem", "September": "Setembro", "{0} copy": "{0} copiar", "Avg HL in minticks": "HL médio em minticks", "Accumulation/Distribution_input": "Acumulação / Distribuição", "Sync": "Sincronizar", "C_in_legend": "Fch", "Weeks_interval": "Semanas", "smoothK_input": "suaveK", "Percentage_scale_menu": "Porcentagem", "Change Extended Hours": "Mudar horas estendidas", "MOM_input": "MOM", "h_interval_short": "h", "Change Interval": "Alterar Intervalo", "Change area background": "Mudar fundo da área", "Modified Schiff": "Schiff modificado", "top": "topo", "Custom color...": "Personalizar a cor...", "Send Backward": "Enviar a Trás", "Mexico City": "Cidade do México", "TRIX_input": "TRIX", "Show Price Range": "Visualizar Intervalo de Preços", "Elliott Major Retracement": "Correção de Elliot maior", "ASI_study": "IAS (ASI)", "Notification": "Notificação", "Fri": "Sexta", "just now": "agora mesmo", "Forecast": "Previsão", "Fraction part is invalid.": "Fração inválida.", "Connecting": "Conectando", "Ghost Feed": "Informações fantasma", "Signal_input": "sinal", "Histogram_input": "Histograma", "The Extended Trading Hours feature is available only for intraday charts": "A ferramenta de operação em horários estendidos está disponível somente em gráficos intraday.", "Stop syncing": "Parar sincronização", "open": "abertura", "StdDev_input": "StdDev", "EMA Cross_study": "Cruzamento de MME", "Conversion Line Periods_input": "Períodos da linha de conversão", "Diamond": "Diamante", "My Scripts": "Meus Scripts", "Monday": "Segunda", "Add Symbol_compare_or_add_symbol_dialog": "Adicionar Símbolo", "Williams %R_study": "Williams %R", "Symbol": "Símbolo", "a month": "por mês", "Precision": "Precisão", "depth_input": "profundidade", "Go to": "Ir para", "Please enter chart layout name": "Por favor, coloque o nome do layout do gráfico", "Mar": "Маr", "VWAP_study": "VWAP", "Offset": "Desvio", "Date": "Data", "Format...": "Formatar...", "__dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__dayName____specialSymbolOpen__em__specialSymbolClose____dayTime__", "Toggle Maximize Pane": "Habilitar Painel de Maximização", "Search": "Procurar", "Zig Zag_study": "Indicador Zig Zag", "Actual": "Real", "SUCCESS": "SUCESSO", "Long period_input": "Longo período", "length_input": "período", "roclen4_input": "roclen4", "Price Line": "Linha de preços", "Area With Breaks": "Área com quebras", "Median_input": "Mediana", "Stop Level. Ticks:": "Distância do Stop. Ticks:", "Economy & Symbols": "Economia e símbolos", "Circle Lines": "Linhas circulares", "Visual Order": "Ordem Visual", "__specialSymbolOpen__Yesterday at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Ontem em__specialSymbolClose____dayTime__", "Stop Background Color": "Cor do fundo do stop", "Slow length_input": "Comprimento lento", "Sector": "Setor", "powered by TradingView": "patrocinado por TradingView", "Text:": "Texto:", "Stochastic_study": "Oscilador Estocástico", "Sep": "Set", "TEMA_input": "TEMA", "Apply WPT Up Wave": "Aplicar onda WPT de alta", "Min Move 2": "Mov. mínimo 2", "Extend Left End": "Estender para a extremidade esquerda", "Projection down bars": "Projeção de barras para baixo", "Advance/Decline_study": "Avanço/Declínio", "New York": "Nova York", "Flag Mark": "Bandeira", "Drawings": "Desenhos", "Cancel": "Cancelar", "Compare or Add Symbol": "Comparar ou adicionar símbolo", "Redo": "Refazer", "Hide Drawings Toolbar": "Ocultar a barra de ferramentas de desenho", "Ultimate Oscillator_study": "Oscilador Final", "Vert Grid Lines": "Linhas de Grade Verticais", "Growing_input": "Crescendo", "Angle": "Ângulo", "Plot_input": "traçar mapa", "Color 8_input": "Cor 8", "Indicators, Fundamentals, Economy and Add-ons": "Indicadores, fundamentos, economia e extras", "h_dates": "H", "ROC Length_input": "Período ROC", "roclen3_input": "roclen3", "Overbought_input": "Sobrecomprado", "DPO_input": "DPO", "Change Minutes To": "Mudar minutos para", "No study templates saved": "Nenhum modelo de estudo salvo", "Trend Line": "Linha de Tendência", "TimeZone": "Fuso Horário", "Your chart is being saved, please wait a moment before you leave this page.": "Seu gráfico está sendo salvo, por favor espere um momento antes de sair desta página.", "Percentage": "Porcentagem", "Tu_day_of_week": "Terça", "RSI Length_input": "Comprimento do IFR", "Triangle": "Triângulo", "Line With Breaks": "Linha com quebras", "Period_input": "Período", "Watermark": "Marca d'Água", "Trigger_input": "Gatilho", "SigLen_input": "SigLen", "Extend Right": "Estender para a direita", "Color 2_input": "Cor 2", "Show Prices": "Visualizar Preços", "Unlock": "Desbloquear", "Copy": "Copiar", "high": "máxima", "Arc": "Arco", "Edit Order": "Editar ordem", "January": "Janeiro", "Arrow Mark Right": "Marca da seta para a direita", "Extend Alert Line": "Estender linha de alerta", "Background color 1": "Cor de fundo nº 1", "RSI Source_input": "Fonte do IFR", "Close Position": "Fechar posição", "Any Number": "Qualquer número", "Stop syncing drawing": "Para de sincronizar o gráfico", "Visible on Mouse Over": "Visível quando Mouse por Cima", "MA/EMA Cross_study": "Cruzamento MM/MME", "Thu": "Quinta", "Vortex Indicator_study": "Indicador Vortex", "view-only chart by {user}": "Ver apenas gráficos de {user}", "ROCLen1_input": "ROCLen1", "M_interval_short": "M", "Chaikin Oscillator_input": "Oscilador Chaikin", "Price Levels": "Níveis de preços", "Show Splits": "Mostrar Splits", "Zero Line_input": "Linha Zero", "Replay Mode": "Modo Replay", "__specialSymbolOpen__Today at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Hoje em__specialSymbolClose____dayTime__", "Increment_input": "Incremento", "Days_interval": "Dias", "Show Right Scale": "Mostrar Escala à Direita", "Show Alert Labels": "Exibir Etiquetas dos Alertas", "Historical Volatility_study": "Volatilidade Histórica", "Lock": "Bloquear", "length14_input": "Comprimento14", "High": "Мáxima", "Q_input": "Q", "Date and Price Range": "Variação de data e preço", "Polyline": "Linha segmentada", "Reconnect": "Reconectar", "Lock/Unlock": "Bloquear/Desbloquear", "Base Level": "Nível Base", "Label Down": "Rótulo para Baixo", "Saturday": "Sábado", "Symbol Last Value": "Último Valor do Símbolo", "Above Bar": "Acima da barra", "Studies": "Estudos", "Color 0_input": "Cor 0", "Add Symbol": "Adicionar Símbolo", "maximum_input": "máximo", "Wed": "Quarta", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "VWMA_study": "VWMA", "fastLength_input": "Período Rápido", "Time Levels": "Níveis de Tempo", "Width": "Largura", "Sunday": "Domingo", "Loading": "Carregando", "Template": "Modelo", "Use Lower Deviation_input": "Usar desvio inferior", "Up Wave 3": "Onda de alta 3", "Parallel Channel": "Canal paralelo", "Time Cycles": "Ciclos Temporais", "Second fraction part is invalid.": "A segunda parte da fração não é válida.", "Divisor_input": "Divisor", "Baseline": "Linha base", "Down Wave 1 or A": "Onda de baixa 1 ou A", "ROC_input": "ROC", "Dec": "Dez", "Ray": "Raio", "Extend": "Estender", "length7_input": "Comprimento7", "Bring Forward": "Trazer à frente", "Bottom": "Rodapé", "Berlin": "Bеrlim", "Undo": "Desfazer", "Window Size_input": "Tamanho da janela", "Mon": "Seg", "Right Labels": "Legendas a direita", "Long Length_input": "Comprimento longo", "True Strength Indicator_study": "Indicador de Força Real", "%R_input": "%R", "There are no saved charts": "Não existem gráficos salvos", "Instrument is not allowed": "Instrumento não permitido", "bars_margin": "barras", "Decimal Places": "Casas Decimais", "Show Indicator Last Value": "Mostrar Último Valor do Indicador", "Initial capital": "Capital inicial", "Show Angle": "Mostrar Ângulo", "Mass Index_study": "Índice de Massa", "More features on tradingview.com": "Mais funções no tradingview.com", "Objects Tree...": "Lista de Objetos...", "Remove Drawing Tools & Indicators": "Remover Desenhos e Indicadores", "Length1_input": "Comprimento 1", "Always Invisible": "Sempre invisível", "Circle": "Círculo", "Days": "Dias", "x_input": "x", "Save As...": "Salvar como...", "Elliott Double Combo Wave (WXY)": "Onda de Elliot combo dupla (WXY)", "Parabolic SAR_study": "SAR Parabólico", "Any Symbol": "Qualquer símbolo", "Variance": "Variação", "Stats Text Color": "Cor do Texto de Estatísticas", "Minutes": "Minutos", "Williams Alligator_study": "Indicador Alligator de Williams", "Projection": "Projeção", "Jaw_input": "Jaw", "Right": "Direito", "Help": "Ajuda", "Coppock Curve_study": "Curva Coppock", "Reversal Amount": "Quantidade de Reversão", "Reset Chart": "Resetar o gráfico", "Marker Color": "Cor do marcador", "Fans": "Leques", "Left Axis": "Escala à esquerda", "Open": "Abertura", "YES": "SIM", "longlen_input": "período longo", "Moving Average Exponential_study": "Média Móvel Exponencial", "Source border color": "Cor do contorno da base", "Redo {0}": "Refazer", "Cypher Pattern": "Padrão Cypher", "s_dates": "s", "Area": "Área", "Triangle Pattern": "Padrão Triangular", "Balance of Power_study": "Equilíbrio de Poder", "EOM_input": "EOM", "Shapes_input": "Formas", "Oversold_input": "Sobrevendido", "Apply Manual Risk/Reward": "Aplicar risco/ganho manual", "Market Closed": "Mercado Fechado", "Sydney": "Sidney", "Indicators": "Indicadores", "close": "fechamento", "q_input": "q", "You are notified": "Você foi advertido", "Font Icons": "Ícones de Fonte", "%D_input": "%D", "Border Color": "Cor do contorno", "Offset_input": "Deslocamento", "Risk": "Risco", "Price Scale": "Escala de preços", "HV_input": "HV", "Seconds": "Segundos", "Settings": "Configurações", "Start_input": "Início", "Elliott Impulse Wave (12345)": "Onda de impulso de Elliot (12345)", "Hours": "Horas", "Send to Back": "Enviar para Trás", "Color 4_input": "Cor 4", "Angles": "Ângulos", "Prices": "Preços", "Hollow Candles": "Candles Vazios", "July": "Julho", "Create Horizontal Line": "Criar linha horizontal", "Minute": "Minuto", "Cycle": "Ciclo", "ADX Smoothing_input": "ADX Suavizado", "One color for all lines": "Uma cor para todas as linhas", "m_dates": "Mês", "(H + L + C)/3": "(Máx.+Mín.+Fch.)/3", "Candles": "Velas", "We_day_of_week": "Quarta", "Width (% of the Box)": "Largura (% da Caixa)", "%d minute": "%d minuto", "Go to...": "Ir para...", "Pip Size": "Tamanho do Pip", "Wednesday": "Quarta", "This drawing is used in alert. If you remove the drawing, the alert will be also removed. Do you want to remove the drawing anyway?": "O desenho está sendo utilizado em um alerta. Se você remover o desenho, o alerta também será removido. Você quer remover o desenho assim mesmo?", "Show Countdown": "Visualizar Contagem", "Show alert label line": "Mostrar linha de descrição do alerta", "MA_input": "MA", "Length2_input": "Comprimento 2", "not authorized": "não autorizado", "Session Volume_study": "Volume da Sessão", "Image URL": "URL da imagem", "SMI Ergodic Oscillator_input": "Oscildaor SMI Ergodic", "Show Objects Tree": "Visualizar Lista de Objetos", "Primary": "Primária", "Price:": "Preço:", "Bring to Front": "Puxar para a frente", "Brush": "Pincel", "Not Now": "Agora não", "Yes": "Sim", "C_data_mode_connecting_letter": "C", "SMALen4_input": "SMALen4", "Apply Default Drawing Template": "Aplicar modelo gráfico padrão", "Compact": "Compacto", "Save As Default": "Salvar como padrão", "Target border color": "Cor do contorno do objetivo", "Invalid Symbol": "Símbolo inválido", "Inside Pitchfork": "Dentro do garfo", "yay Color 1_input": "yay Cor 1", "Quandl is a huge financial database that we have connected to TradingView. Most of its data is EOD and is not updated in real-time, however the information may be extremely useful for fundamental analysis.": "Quandl é um enorme banco de dados financeiro que temos conectado ao TradingView. A maioria dos seus dados é FDD e não é atualizada em tempo real, embora a informação possa ser extremamente útil para a análise fundamental.", "Hide Marks On Bars": "Ocultar marcas nas barras", "Cancel Order": "Cancelar ordem", "Hide All Drawing Tools": "Ocultar todas as ferramentas de desenho", "WMA Length_input": "Comprimento WMA", "Show Dividends on Chart": "Mostrar dividendos no gráfico", "Show Executions": "Mostrar Execuções", "Borders": "Contorno", "Remove Indicators": "Remover Indicadores", "loading...": "carregando...", "Closed_line_tool_position": "Fechado", "Rectangle": "Retângulo", "Change Resolution": "Mudar resolução", "Indicator Arguments": "Argumentos do indicador", "Symbol Description": "Descrição do instrumento", "Chande Momentum Oscillator_study": "Oscilador de Momento de Chande", "Degree": "Grau", " per order": " conforme a ordem", "Line - HL/2": "Linha - MáxMín/2", "Supercycle": "Superciclo", "Least Squares Moving Average_study": "Média Móvel de Mínimos Quadrados", "Change Variance value": "Mudar valor de variância", "powered by ": "Patrocinado por ", "Source_input": "Fonte", "Change Seconds To": "Mudar segundos para", "%K_input": "%K", "Scales Text": "Теxto da escala", "Toronto": "Тоronto", "Please enter template name": "Por favor, digite o nome do modelo", "Symbol Name": "Nome do Símbolo", "Tokyo": "Тóquio", "Events Breaks": "Anúncios de eventos", "San Salvador": "São Salvador", "Months": "Meses", "Symbol Info...": "Sobre o instrumento...", "Elliott Wave Minor": "Onda de Elliot menor", "Cross": "Cruz", "Measure (Shift + Click on the chart)": "Medição (Shift + clique no gráfico)", "Override Min Tick": "Alterar resolução mín.", "Show Positions": "Mostrar Posições", "Dialog": "Diálogo", "Add To Text Notes": "Adicionar às notas de texto", "Elliott Triple Combo Wave (WXYXZ)": "Onda de Elliot combo tripla (WXYXZ)", "Multiplier_input": "Multiplicador", "Risk/Reward": "Risco/Recompensa", "Base Line Periods_input": "Períodos da linha base", "Show Dividends": "Mostrar Dividendos", "Relative Strength Index_study": "Indice de Força Relativa", "Modified Schiff Pitchfork": "Garfo de Shiff modificado", "Top Labels": "Legendas Superiores", "Show Earnings": "Mostrar Balanços", "Line - Open": "Linha - Abertura", "Elliott Triangle Wave (ABCDE)": "Onda de Elliot triangular (ABCDE)", "Minuette": "Minueto", "Text Wrap": "Quebrar Texto", "Reverse Position": "Reverter posição", "Elliott Minor Retracement": "Correção de Elliot menor", "Pitchfan": "Leque de linhas", "Slash_hotkey": "Barra", "No symbols matched your criteria": "Não foram encontrados símbolos que correspondam à escolha selecionada", "Icon": "Ícone", "lengthRSI_input": "ComprimentoIFR", "Tuesday": "Terça", "Teeth Length_input": "Comprimento dos dentes", "Indicator_input": "Indicador", "Box size assignment method": "Método de Caixa", "Open Interval Dialog": "Abrir janela de intervalo", "Shanghai": "Shangai", "Athens": "Аtenas", "Fib Speed Resistance Arcs": "Arcos de resistência a velocidade de Fibonacci", "Content": "Conteúdo", "middle": "centro", "Lock Cursor In Time": "Fixar o cursor no tempo", "Intermediate": "Intermediária", "Eraser": "Borracha", "Relative Vigor Index_study": "Índice de Vigor Relativo (RVI)", "Envelope_study": "Médias Móveis Envelope", "Pre Market": "Pré-Mercado", "Horizontal Line": "Linha horizontal", "O_in_legend": "Abr", "Confirmation": "Confirmação", "HL Bars": "Barras máx./mín.", "Lines:": "Linhas", "Hide Favorite Drawings Toolbar": "Ocultar a barra de ferramentas de desenho favoritas", "X Cross": "X Cruz", "Profit Level. Ticks:": "Nível de lucros. ticks:", "Show Date/Time Range": "Visualizar Intervalo de Dia/Tempo", "Level {0}": "Nível {0}", "Favorites": "Favoritos", "Horz Grid Lines": "Linhas de grade horizontais", "-DI_input": "-DI", "Price Range": "Intervalo de preços", "day": "dia", "deviation_input": "desvio", "Account Size": "Tamanho da Conta", "UTC": "Horario Universal(UTC)", "Time Interval": "Intervalo de Tempo", "Success text color": "Cor do texto (SUCESSO)", "ADX smoothing_input": "ADX Suavizado", "%d hour": "%d hora", "Order size": "Tamanho da ordem", "Drawing Tools": "Ferramentas de desenho", "Save Drawing Template As": "Salvar modelo de desenho como", "Traditional": "Tradicional", "Chaikin Money Flow_study": "Fluxo Monetário de Chaikin", "Ease Of Movement_study": "Ease of Movement", "Defaults": "Padrões", "Percent_input": "percentagem", "Interval is not applicable": "O intervalo não pode ser aplicado", "short_input": "Venda", "Visual settings...": "Configurações Visuais...", "RSI_input": "IFR", "Chatham Islands": "Ilhas Chatham", "Detrended Price Oscillator_input": "Oscilador de Preço Ratificado", "Mo_day_of_week": "Seg", "Up Wave 4": "Onda de alta 4", "center": "centro", "Vertical Line": "Linha Vertical", "Bogota": "Bogotá", "Show Splits on Chart": "Mostrar divisões no gráfico", "Sorry, the Copy Link button doesn't work in your browser. Please select the link and copy it manually.": "Desculpe, o botão Copiar link não funciona no seu navegador. Selecione o link e copie-o manualmente.", "Levels Line": "Linhas de nível", "Events & Alerts": "Eventos e alertas", "May": "Мaio", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "Arron Abaixo", "Add To Watchlist": "Adicionar à lista de observação", "Price": "Preço", "left": "restantes", "Lock scale": "Bloquear escala", "Limit_input": "Limite", "Change Days To": "Mudar dias para", "Price Oscillator_study": "Oscilador de Preço", "smalen1_input": "smalen1", "Drawing Template '{0}' already exists. Do you really want to replace it?": "O modelo de desenho '{0}' já existe. Você quer realmente substituí-lo?", "Show Middle Point": "Mostrar Ponto Médio", "KST_input": "KST", "Extend Right End": "Estender para a extremidade direita", "Base currency": "Moeda de base", "Line - Low": "Linha - Mínimo", "Price_input": "Preço", "Gann Fan": "Leque de Gann", "Weeks": "Semanas", "McGinley Dynamic_study": "McGinley Dinâmico", "Relative Volatility Index_study": "Índice de Volatilidade Relativa", "Source Code...": "Código Fonte...", "PVT_input": "PVT", "Show Hidden Tools": "Mostrar Ferramentas Ocultas", "Hull Moving Average_study": "Média Móvel de Hull", "Symbol Prev. Close Value": "Valor de Fech. Anterior do Símbolo", "Istanbul": "Istambul", "{0} chart by TradingView": "Gráfico de {0} por TradingView", "Right Shoulder": "Ombro Direito.", "Remove Drawing Tools": "Remover Desenhos", "Friday": "Sexta", "Zero_input": "Zero", "Company Comparison": "Comparação da empresa", "Stochastic Length_input": "Comprimento estocástico", "mult_input": "mult", "URL cannot be received": "A URL não pode ser recebida", "Success back color": "Cor do fundo (SUCESSO)", "E_data_mode_end_of_day_letter": "E", "Trend-Based Fib Extension": "Extensão de Fibonacci Baseado na Tendência", "Top": "Topo", "Double Curve": "Curva dupla", "Stochastic RSI_study": "RSI Estocástico", "Oops!": "Ops!", "Horizontal Ray": "Raio horizontal", "smalen3_input": "smalen3", "Symbol Labels": "Legendas dos Símbolo", "Script Editor...": "Editor de scripts...", "Are you sure?": "Tem certeza?", "Trades on Chart": "Negociações no gráfico", "Listed Exchange": "Bolsa listada", "Error:": "Erro:", "Fullscreen mode": "Modo tela cheia", "Add Text Note For {0}": "Adicionar nota para {0}", "K_input": "K", "Do you really want to delete Drawing Template '{0}' ?": "Você quer realmente deletar o modelo de desenho '{0}'?", "ROCLen3_input": "ROCLen3", "Restore Size": "Restaurar tamanho", "Text Color": "Cor do Texto", "Rename Chart Layout": "Renomear gráfico", "Built-ins": "Incorporados", "Background color 2": "Cor de fundo nº 2", "Drawings Toolbar": "Barra de ferramentas de desenho", "New Zealand": "Nova Zelândia", "CHOP_input": "CHOP", "Apply Defaults": "Aplicar padrões", "% of equity": "% do capital", "Extended Alert Line": "Linha de alerta estendida", "Note": "Nota", "Moving Average Channel_study": "Canal de Média Móvel", "like": "Curtida", "Show": "Visualizar", "{0} bars": "barras: {0}", "Lower_input": "Mais baixo", "Created ": "Criado ", "Warning": "Aviso", "Elder's Force Index_study": "Índice de Força de Elders", "Show Earnings on Chart": "Mostrar ganhos no gráfico", "ATR_input": "ATR", "Low": "Мínima", "Bollinger Bands %B_study": "Bandas de Bollinger %B", "Time Zone": "Fuso Horário", "right": "direita", "%d month": "%d mês", "Wrong value": "Valor inválido", "Upper Band_input": "Banda superior", "Sun": "Dom", "Rename...": "Renomear...", "start_input": "Início", "No indicators matched your criteria.": "Não foram encontrados indicadores que correspondam à escolha selecionada.", "Commission": "Comissão", "Down Color": "Cor Abaixo", "Short length_input": "Comprimento curto", "Kolkata": "Calcuta", "Submillennium": "Sucmilênio", "Technical Analysis": "Análise Técnica", "Show Text": "Visualizar Texto", "Channel": "Canal", "FXCM CFD data is available only to FXCM account holders": "Dados CFD da FXCM só estão disponíveis para clientes da FXCM.", "Lagging Span 2 Periods_input": "2 Períodos de intervalo de atraso", "Connecting Line": "Linha conectora", "Seoul": "Seul", "bottom": "fundo", "Teeth_input": "Dentes", "Sig_input": "Sig", "Open Manage Drawings": "Abrir gerenciamento de desenhos", "Save New Chart Layout": "Salvar novo layout de gráfico", "Fib Channel": "Canal de Fibonacci", "Save Drawing Template As...": "Salvar modelo de desenho como...", "Minutes_interval": "Minutos", "Up Wave 2 or B": "Onda de alta 2 ou B", "Columns": "Colunas", "Directional Movement_study": "Movimento Direcional", "roclen2_input": "roclen2", "Apply WPT Down Wave": "Aplicar onda WPT de baixa", "Not applicable": "Não aplicável", "Bollinger Bands %B_input": "Bandas de Bollinger % B", "Default": "Padrão", "Singapore": "Singapura", "Template name": "Nome do modelo", "Indicator Values": "Valores do indicador", "Lips Length_input": "Comprimento dos lábios", "Toggle Log Scale": "Escala Logarítmica", "L_in_legend": "Min", "Remove custom interval": "Remover intervalo personalizado", "shortlen_input": "período curto", "Quotes are delayed by {0} min": "As cotações são atrasadas em {0} min", "Hide Events on Chart": "Ocultar eventos no gráfico", "Cash": "Dinheiro", "Profit Background Color": "Cor de fundo do lucro", "Bar's Style": "Estilos de Barra", "Exponential_input": "Exponencial", "Down Wave 5": "Onda de baixa 5", "Previous": "Anterior", "Stay In Drawing Mode": "Manter em Modo de Desenho", "Comment": "Comentário", "Connors RSI_study": "IFR de Connors", "Bars": "Barras", "Show Labels": "Visualizar Legendas", "Flat Top/Bottom": "Topo/Fundo plano", "Symbol Type": "Tipo de Símbolo", "December": "Dezembro", "Lock drawings": "Bloquear desenhos", "Border color": "Cor do contorno", "Change Seconds From": "Mudar segundos de", "Left Labels": "Legendas à esquerda", "Insert Indicator...": "Inserir indicador...", "ADR_B_input": "ADR_B", "Paste %s": "Colar %s", "Change Symbol...": "Mudar símbolo...", "Timezone": "Fuso horário", "Invite-only script. You have been granted access.": "Script sob convite. Você recebeu acesso.", "Color 6_input": "Cor 6", "Oct": "Оut", "ATR Length": "Período do ATR", "{0} financials by TradingView": "{0} Finanças por TradingView", "Extend Lines Left": "Estender linhas para a esquerda", "Feb": "Fev", "Transparency": "Transparência", "No": "Não", "June": "Junho", "Cyclic Lines": "Linhas cíclicas", "length28_input": "Comprimento28", "ABCD Pattern": "Padrão ABCD", "When selecting this checkbox the study template will set \"__interval__\" interval on a chart": "Ao selecionar esta caixa de seleção, o modelo de estudo definirá o intervalo \"__interval__\" em um gráfico", "Add": "Adicionar", "OC Bars": "Barras Abr/Fec", "Millennium": "Milênio", "On Balance Volume_study": "Saldo de Volume - On Balance Volume", "Apply Indicator on {0} ...": "Aplicar indicador em {0} ...", "NEW": "NOVO", "Chart Layout Name": "Nome do layout do gráfico", "Up bars": "Barras altas", "Hull MA_input": "MM de HULL", "Lock Scale": "Bloquear escala", "distance: {0}": "distância: {0}", "Extended": "Estendida", "Square": "Quadrado", "log": "Logarítmica", "NO": "NÃO", "Top Margin": "Margem Superior", "Up fractals_input": "Fractais acima", "Insert Drawing Tool": "Inserir desenho", "OHLC Values": "Valores Abertura/Alta/Baixa/Fechamento", "Correlation_input": "Correlação", "Session Breaks": "Divisão de Dias", "Add {0} To Watchlist": "Adicionar {0} à lista de observação", "Anchored Note": "Nota ancorada", "lipsLength_input": "ComprimentoLábios", "low": "minima", "Apply Indicator on {0}": "Aplicar indicador em {0}", "UpDown Length_input": "Largura de AltaBaixa", "Price Label": "Legenda de preços", "November": "Novembro", "Tehran": "Teerã", "Balloon": "Balão", "Track time": "Sincronizar Tempo", "Background Color": "Cor de fundo", "an hour": "uma hora", "Right Axis": "Eixo direito", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "Período Lento", "Click to set a point": "Clique para marcar um ponto", "Save Indicator Template As...": "Salvar modelo de indicador como...", "Arrow Up": "Seta para Cima", "n/a": "n/d", "Indicator Titles": "Títulos do indicador", "Failure text color": "Falha de cor do texto", "Sa_day_of_week": "Sáb.", "Net Volume_study": "Volume Líquido", "Error": "Erro", "Edit Position": "Editar posição", "RVI_input": "RVI", "Centered_input": "Centrado", "Recalculate On Every Tick": "Recalcular em cada tick", "Left": "Esquerda", "Simple ma(oscillator)_input": "MM Simples (oscilador)", "Compare": "Comparar", "Fisher Transform_study": "Transformada de Fisher", "Show Orders": "Mostrar Ordens", "Zoom In": "Aumentar Zoom", "Length EMA_input": "Período da MME", "Enter a new chart layout name": "Digite um novo nome de layout gráfico", "Signal Length_input": "Comprimento do sinal", "FAILURE": "FALHA", "Point Value": "Valor do Ponto", "D_interval_short": "D", "MA with EMA Cross_study": "Cruzamento de Média Móvel Simples e Exponencial", "Label Up": "Rótulo para Cima", "Price Channel_study": "Canal de Preço", "Close": "Fechar", "ParabolicSAR_input": "Parabólico SAR", "Log Scale_scale_menu": "Escala logarítmica", "MACD_input": "MACD", "Do not show this message again": "Não mostre essa mensagem novamente", "{0} P&L: {1}": "{0} L&P: {1}", "No Overlapping Labels": "Não há etiquetas sobrepostas", "Arrow Mark Left": "Marca da seta para a esquerda", "Down Wave 2 or B": "Onda de baixa 2 ou B", "Line - Close": "Linha - Fechamento", "(O + H + L + C)/4": "(Abr.+Máx.+Mín.+Fch.)/4", "Confirm Inputs": "Confirmar entradas", "Open_line_tool_position": "Aberto", "Lagging Span_input": "Intervalo de atraso", "Subminuette": "Sub-Minueto", "Thursday": "Quinta", "Arrow Down": "Seta para Baixo", "Triple EMA_study": "Média Móvel Exponencial Tripla", "Elliott Correction Wave (ABC)": "Onda de Elliot corretiva (ABC)", "Error while trying to create snapshot.": "Erro ao tentar criar uma captura de tela.", "Label Background": "Fundo da legenda", "Templates": "Modelos", "Please report the issue or click Reconnect.": "Por favor, informe o problema ou clique em Reconectar.", "1. Slide your finger to select location for first anchor
2. Tap anywhere to place the first anchor": "1. Defina o primeiro ponto arrastando a cruz com o dedo.
2. Toque em qualquer lugar para colocar o primeiro ponto.", "Signal Labels": "Legendas de Sinal", "Delete Text Note": "Deletar Nota de Texto", "compiling...": "compilando...", "Detrended Price Oscillator_study": "Oscilador de Preço sem Tendência", "Color 5_input": "Cor 5", "Fixed Range_study": "Range Fixo", "Up Wave 1 or A": "Onda de alta 1 ou A", "Scale Price Chart Only": "Apenas o gráfico de escala de preços", "Unmerge Up": "desmesclar para cima", "auto_scale": "auto", "Short period_input": "Período curto", "Background": "Fundo", "Study Templates": "Modelos de Estudo", "Up Color": "Cor Acima", "Apply Elliot Wave Intermediate": "Aplicar intermediário de onda de Elliot", "VWMA_input": "VWMA", "Lower Deviation_input": "Desvio Inferior", "Save Interval": "Salvar intervalo", "February": "Fevereiro", "Reverse": "Reverter", "Oops, something went wrong": "Ops, algo deu errado", "Add to favorites": "Adicionar aos favoritos", "Median": "Média", "ADX_input": "ADX", "Remove": "Remover", "len_input": "len", "Arrow Mark Up": "Marca da seta para cima", "April": "Abril", "Active Symbol": "Símbolo ativo", "Extended Hours": "Fora do horário regular", "Crosses_input": "Cruzamentos", "Middle_input": "centro", "Read our blog for more info!": "Leia nosso blog para maiores informações!", "Sync drawing to all charts": "Sincronizar desenhos em todos os gráficos", "LowerLimit_input": "Limite inferior", "Know Sure Thing_study": "Know Sure Thing (KST)", "Copy Chart Layout": "Copiar o layout do gráfico", "Compare...": "Comparar...", "1. Slide your finger to select location for next anchor
2. Tap anywhere to place the next anchor": "1. Deslize o dedo para selecionar o local para o próximo ponto.
2. Toque em qualquer lugar para colocar o próximo ponto.", "Text Notes are available only on chart page. Please open a chart and then try again.": "Notas estão disponíveis apenas na página de gráficos. Por favor abre um gráfico e tente novamente.", "Color": "Cor", "Aroon Up_input": "Arron Acima", "Apply Elliot Wave Major": "Aplicar a onda de Elliott maior", "Scales Lines": "Linhas da escala", "Type the interval number for munute charts (i.e. 5 if it is going to be a five minute chart). Or number plus letter for H (Hourly), D (Daily), W (Weekly), M (Monthly) intervals (i.e. D or 2H)": "Digite o número de intervalo para gráficos minute (ou seja, 5 se ele vai ser um gráfico de cinco minutos). Ou número mais letra para os intervalos H (Horário), D (Diário), S (Semanal), M (Mensal) (isto é, D ou 2H)", "Ellipse": "Elipse", "Up Wave C": "Onda de alta C", "Show Distance": "Visualizar Distância", "Risk/Reward Ratio: {0}": "Razão risco/recompensa: {0}", "Volume Oscillator_study": "Oscilador de Volume", "Williams Fractal_study": "Indicador Fractal de Williams", "Merge Up": "Agrupar para cima", "Right Margin": "Margem direita", "Moscow": "Моscou", "Warsaw": "Varsóvia"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/ro.json b/static/Kline/charting_library/static/localization/translations/ro.json new file mode 100644 index 0000000..e264d2f --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/ro.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "ticks", "Months_interval": "Months", "Percent_input": "Percent", "in_dates": "in", "roclen1_input": "roclen1", "OSC_input": "OSC", "Volume_study": "Volume", "Lips_input": "Lips", "Base Line_input": "Base Line", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "Bollinger Bands", "Upper_input": "Upper", "Sig_input": "Sig", "Count_input": "Count", "OnBalanceVolume_input": "OnBalanceVolume", "Cross_chart_type": "Cross", "H_in_legend": "H", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Accumulation/Distribution", "Rate Of Change_study": "Rate Of Change", "Color 7_input": "Color 7", "Chop Zone_study": "Chop Zone", "Oscillator_input": "Oscillator", "yay Color 0_input": "yay Color 0", "CRSI_study": "CRSI", "Chande Kroll Stop_study": "Chande Kroll Stop", "Hours_interval": "Hours", "Money Flow_study": "Money Flow", "DEMA_input": "DEMA", "Linear Regression Curve_study": "Linear Regression Curve", "Symbol_input": "Symbol", "increment_input": "increment", "smoothD_input": "smoothD", "RSI Source_input": "RSI Source", "Ichimoku Cloud_study": "Ichimoku Cloud", "Mass Index_study": "Mass Index", "Smoothing_input": "Smoothing", "Color 3_input": "Color 3", "Jaw Length_input": "Jaw Length", "Keltner Channels_study": "Keltner Channels", "Bands style_input": "Bands style", "Momentum_study": "Momentum", "MF_input": "MF", "Fast length_input": "Fast length", "W_interval_short": "W", "Equality Line_input": "Equality Line", "Short_input": "Short", "Down fractals_input": "Down fractals", "smalen2_input": "smalen2", "isCentered_input": "isCentered", "Klinger Oscillator_study": "Klinger Oscillator", "SMI Ergodic Indicator/Oscillator_study": "SMI Ergodic Indicator/Oscillator", "No Overlapping Labels_scale_menu": "No Overlapping Labels", "Chande MO_input": "Chande MO", "jawLength_input": "jawLength", "TRIX_study": "TRIX", "RVGI_input": "RVGI", "signalLength_input": "signalLength", "d_dates": "d", "Source_compare": "Source", "Correlation Coefficient_study": "Correlation Coefficient", "lipsLength_input": "lipsLength", "Short Length_input": "Short Length", "teethLength_input": "teethLength", "Visible Range_study": "Visible Range", "Connors RSI_study": "Connors RSI", "MA Cross_study": "MA Cross", "Signal line period_input": "Signal line period", "Price Volume Trend_study": "Price Volume Trend", "F_data_mode_forbidden_letter": "F", "Long RoC Length_input": "Long RoC Length", "Length3_input": "Length3", "+DI_input": "+DI", "MACD_study": "MACD", "%s ago_time_range": "%s ago", "Level_input": "Level", "Commodity Channel Index_study": "Commodity Channel Index", "Elder's Force Index_input": "Elder's Force Index", "Aroon_study": "Aroon", "h_dates": "h", "SMALen1_input": "SMALen1", "P_input": "P", "SMALen3_input": "SMALen3", "Average Directional Index_study": "Average Directional Index", "Fr_day_of_week": "Fr", "D_input": "D", "p_input": "p", "orders_up to ... orders": "orders", "Dot_hotkey": "Dot", "Lead 2_input": "Lead 2", "Vortex Indicator_study": "Vortex Indicator", "Plots Background_study": "Plots Background", "Price Channel_study": "Price Channel", "R_data_mode_realtime_letter": "R", "Conversion Line_input": "Conversion Line", "Su_day_of_week": "Su", "Up fractals_input": "Up fractals", "Double EMA_study": "Double EMA", "Price Oscillator_study": "Price Oscillator", "Th_day_of_week": "Th", "Average True Range_study": "Average True Range", "Max value_input": "Max value", "MA Length_input": "MA Length", "in %s_time_range": "in %s", "UpperLimit_input": "UpperLimit", "sym_input": "sym", "DI Length_input": "DI Length", "SMI_input": "SMI", "Basis_input": "Basis", "Moving Average_study": "Moving Average", "lengthStoch_input": "lengthStoch", "Smoothed Moving Average_study": "Smoothed Moving Average", "Lower Band_input": "Lower Band", "VI +_input": "VI +", "Lead 1_input": "Lead 1", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "Simple ma(signal line)", "Color 6_input": "Color 6", "Value_input": "Value", "Chaikin Oscillator_study": "Chaikin Oscillator", "ASI_study": "ASI", "Awesome Oscillator_study": "Awesome Oscillator", "Bollinger Bands Width_input": "Bollinger Bands Width", "Signal Length_input": "Signal Length", "D_interval_short": "D", "Color 1_input": "Color 1", "Moving Average Weighted_study": "Moving Average Weighted", "Short period_input": "Short period", "Fisher_input": "Fisher", "Volume Oscillator_study": "Volume Oscillator", "S_data_mode_snapshot_letter": "S", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "Upper Deviation", "Accumulative Swing Index_study": "Accumulative Swing Index", "Move_input": "Move", "NV_input": "NV", "Choppiness Index_study": "Choppiness Index", "Length MA_input": "Length MA", "percent_input": "percent", "Length_input": "Length", "Accumulation/Distribution_input": "Accumulation/Distribution", "C_in_legend": "C", "Weeks_interval": "Weeks", "smoothK_input": "smoothK", "Percentage_scale_menu": "Percentage", "MOM_input": "MOM", "h_interval_short": "h", "TRIX_input": "TRIX", "Periods_input": "Periods", "Histogram_input": "Histogram", "StdDev_input": "StdDev", "EMA Cross_study": "EMA Cross", "Relative Strength Index_study": "Relative Strength Index", "-DI_input": "-DI", "short_input": "short", "RSI_input": "RSI", "Zig Zag_study": "Zig Zag", "Detrended Price Oscillator_input": "Detrended Price Oscillator", "length_input": "length", "roclen4_input": "roclen4", "Add Symbol_compare_or_add_symbol_dialog": "Add Symbol", "Slow length_input": "Slow length", "Conversion Line Periods_input": "Conversion Line Periods", "TEMA_input": "TEMA", "q_input": "q", "Advance/Decline_study": "Advance/Decline", "Ultimate Oscillator_study": "Ultimate Oscillator", "Growing_input": "Growing", "Plot_input": "Plot", "Color 8_input": "Color 8", "Bollinger Bands Width_study": "Bollinger Bands Width", "roclen3_input": "roclen3", "Overbought_input": "Overbought", "DPO_input": "DPO", "Relative Vigor Index_study": "Relative Vigor Index", "Tu_day_of_week": "Tu", "Period_input": "Period", "Trigger_input": "Trigger", "SigLen_input": "SigLen", "Color 2_input": "Color 2", "MA/EMA Cross_study": "MA/EMA Cross", "Williams Alligator_study": "Williams Alligator", "ROCLen1_input": "ROCLen1", "M_interval_short": "M", "Chaikin Oscillator_input": "Chaikin Oscillator", "Zero Line_input": "Zero Line", "Increment_input": "Increment", "Days_interval": "Days", "Net Volume_study": "Net Volume", "m_dates": "m", "length14_input": "length14", "Color 0_input": "Color 0", "maximum_input": "maximum", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "fastLength_input": "fastLength", "Historical Volatility_study": "Historical Volatility", "Use Lower Deviation_input": "Use Lower Deviation", "Falling_input": "Falling", "Divisor_input": "Divisor", "length7_input": "length7", "Window Size_input": "Window Size", "Long Length_input": "Long Length", "%R_input": "%R", "bars_margin": "bars", "Simple ma(oscillator)_input": "Simple ma(oscillator)", "Length1_input": "Length1", "x_input": "x", "Parabolic SAR_study": "Parabolic SAR", "UO_input": "UO", "Short RoC Length_input": "Short RoC Length", "Jaw_input": "Jaw", "Coppock Curve_study": "Coppock Curve", "longlen_input": "longlen", "Moving Average Exponential_study": "Moving Average Exponential", "s_dates": "s", "Balance of Power_study": "Balance of Power", "EOM_input": "EOM", "%D_input": "%D", "Offset_input": "Offset", "HV_input": "HV", "Start_input": "Start", "ROC_input": "ROC", "Color 4_input": "Color 4", "ADX Smoothing_input": "ADX Smoothing", "We_day_of_week": "We", "MA_input": "MA", "Length2_input": "Length2", "Multiplier_input": "Multiplier", "Session Volume_study": "Session Volume", "SMI Ergodic Oscillator_input": "SMI Ergodic Oscillator", "C_data_mode_connecting_letter": "C", "SMALen4_input": "SMALen4", "yay Color 1_input": "yay Color 1", "CHOP_input": "CHOP", "Middle_input": "Middle", "WMA Length_input": "WMA Length", "Stochastic_study": "Stochastic", "Closed_line_tool_position": "Closed", "On Balance Volume_study": "On Balance Volume", "Source_input": "Source", "%K_input": "%K", "Log Scale_scale_menu": "Log Scale", "len_input": "len", "RSI Length_input": "RSI Length", "Long length_input": "Long length", "Base Line Periods_input": "Base Line Periods", "siglen_input": "siglen", "Slash_hotkey": "Slash", "lengthRSI_input": "lengthRSI", "Indicator_input": "Indicator", "Q_input": "Q", "Envelope_study": "Envelope", "show MA_input": "show MA", "O_in_legend": "O", "useTrueRange_input": "useTrueRange", "Minutes_interval": "Minutes", "deviation_input": "deviation", "long_input": "long", "VWMA_study": "VWMA", "Displacement_input": "Displacement", "Chaikin Money Flow_study": "Chaikin Money Flow", "Ease Of Movement_study": "Ease Of Movement", "Oversold_input": "Oversold", "Williams %R_study": "Williams %R", "depth_input": "depth", "VWAP_study": "VWAP", "Long period_input": "Long period", "Mo_day_of_week": "Mo", "ROC Length_input": "ROC Length", "X_input": "X", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "Aroon Down", "Limit_input": "Limit", "smalen1_input": "smalen1", "Color based on previous close_input": "Color based on previous close", "Price_input": "Price", "Relative Volatility Index_study": "Relative Volatility Index", "PVT_input": "PVT", "Hull Moving Average_study": "Hull Moving Average", "Zero_input": "Zero", "Stochastic Length_input": "Stochastic Length", "mult_input": "mult", "Signal smoothing_input": "Signal smoothing", "E_data_mode_end_of_day_letter": "E", "Stochastic RSI_study": "Stochastic RSI", "K_input": "K", "ROCLen3_input": "ROCLen3", "Signal_input": "Signal", "Moving Average Channel_study": "Moving Average Channel", "Lower_input": "Lower", "Elder's Force Index_study": "Elder's Force Index", "Bollinger Bands %B_study": "Bollinger Bands %B", "Donchian Channels_study": "Donchian Channels", "Upper Band_input": "Upper Band", "start_input": "start", "Short length_input": "Short length", "Triple EMA_study": "Triple EMA", "Lagging Span 2 Periods_input": "Lagging Span 2 Periods", "Teeth_input": "Teeth", "exponential_input": "exponential", "Directional Movement_study": "Directional Movement", "roclen2_input": "roclen2", "Chande Momentum Oscillator_study": "Chande Momentum Oscillator", "Bollinger Bands %B_input": "Bollinger Bands %B", "Lips Length_input": "Lips Length", "Use Upper Deviation_input": "Use Upper Deviation", "L_in_legend": "L", "shortlen_input": "shortlen", "Exponential_input": "Exponential", "Long_input": "Long", "ADR_B_input": "ADR_B", "length28_input": "length28", "Arnaud Legoux Moving Average_study": "Arnaud Legoux Moving Average", "Least Squares Moving Average_study": "Least Squares Moving Average", "Hull MA_input": "Hull MA", "Median_input": "Median", "Correlation_input": "Correlation", "UpDown Length_input": "UpDown Length", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "slowLength", "Sa_day_of_week": "Sa", "RVI_input": "RVI", "Centered_input": "Centered", "True Strength Indicator_study": "True Strength Indicator", "smalen3_input": "smalen3", "Fisher Transform_study": "Fisher Transform", "Length EMA_input": "Length EMA", "Teeth Length_input": "Teeth Length", "MA with EMA Cross_study": "MA with EMA Cross", "ParabolicSAR_input": "ParabolicSAR", "MACD_input": "MACD", "Open_line_tool_position": "Open", "Lagging Span_input": "Lagging Span", "ADX smoothing_input": "ADX smoothing", "Detrended Price Oscillator_study": "Detrended Price Oscillator", "Color 5_input": "Color 5", "McGinley Dynamic_study": "McGinley Dynamic", "auto_scale": "auto", "VWMA_input": "VWMA", "Lower Deviation_input": "Lower Deviation", "ATR_input": "ATR", "Shapes_input": "Shapes", "ADX_input": "ADX", "Crosses_input": "Crosses", "KST_input": "KST", "LowerLimit_input": "LowerLimit", "Know Sure Thing_study": "Know Sure Thing", "Aroon Up_input": "Aroon Up", "Fixed Range_study": "Fixed Range", "Williams Fractal_study": "Williams Fractal"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/ru.json b/static/Kline/charting_library/static/localization/translations/ru.json new file mode 100644 index 0000000..d2fac49 --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/ru.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "тики", "Months_interval": "Мес.", "Realtime": "Данные в реальном времени", "Callout": "Сноска", "Sync to all charts": "Синхронизировать на всех графиках", "month": "месяц", "London": "Лондон", "roclen1_input": "roclen1", "Unmerge Down": "Отсоединить вниз", "Percents": "Проценты", "Search Note": "Искать заметку", "Minor": "Второстепенные", "Do you really want to delete Chart Layout '{0}' ?": "Вы действительно хотите удалить сохранённый график '{0}'?", "Quotes are delayed by {0} min and updated every 30 seconds": "Котировки с задержкой {0} минут, обновляются каждые 30 секунд", "Magnet Mode": "Магнит", "Grand Supercycle": "Гранд Суперцикл", "OSC_input": "OSC", "Hide alert label line": "Спрятать линию метки оповещения", "Volume_study": "Объём", "Lips_input": "Lips", "Show real prices on price scale (instead of Heikin-Ashi price)": "Показывать реальные цены на ценовой шкале (вместо значений Хейкин Аши)", "Histogram": "Гистограмма", "Base Line_input": "Base Line", "Step": "Ступенчатая", "Insert Study Template": "Добавить шаблон индикаторов", "Fib Time Zone": "Временные периоды по Фибоначчи", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "Полосы Боллинджера", "Nov": "Ноя", "Show/Hide": "Показать/Скрыть", "Upper_input": "Upper", "exponential_input": "exponential", "Move Up": "Переместить вверх", "Symbol Info": "Информация по инструменту", "This indicator cannot be applied to another indicator": "Данный индикатор нельзя применить к другому индикатору", "Scales Properties...": "Свойства шкал...", "Count_input": "Count", "Full Circles": "Полные круги", "Ashkhabad": "Ашхабад", "OnBalanceVolume_input": "OnBalanceVolume", "Cross_chart_type": "Перекрестия", "H_in_legend": "МАКС", "a day": "день", "Pitchfork": "Вилы", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Накопление/Распределение", "Rate Of Change_study": "Индекс изменения", "Text Font": "Шрифт текста", "in_dates": "за", "Clone": "Клонировать", "Color 7_input": "Color 7", "Chop Zone_study": "Индикатор Chop Zone", "Bar #": "№ бара", "Scales Properties": "Свойства шкал", "Trend-Based Fib Time": "Периоды Фибоначчи, основанные на тренде", "Remove All Indicators": "Удалить все индикаторы", "Oscillator_input": "Oscillator", "Last Modified": "Изменен", "yay Color 0_input": "yay Color 0", "Labels": "Метки", "Chande Kroll Stop_study": "Chande Kroll Stop", "Hours_interval": "Час.", "Allow up to": "Разрешить размещение до", "Scale Right": "Правая шкала", "Money Flow_study": "Денежный поток", "siglen_input": "siglen", "Indicator Labels": "Отображать имя индикатора на шкале", "__specialSymbolOpen__Tomorrow at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Завтра на__specialSymbolClose__ __dayTime__", "Hide All Drawing Tools": "Скрыть все объекты рисования", "Toggle Percentage": "Процентная шкала вкл/выкл", "Remove All Drawing Tools": "Удалить все инструменты рисования", "Remove all line tools for ": "Убрать все инструменты рисования для ", "Linear Regression Curve_study": "Linear Regression Curve", "Symbol_input": "Инструмент", "Currency": "Валюта", "increment_input": "increment", "Compare or Add Symbol...": "Сравнить/Добавить инструмент...", "__specialSymbolOpen__Last__specialSymbolClose__ __dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Последний__specialSymbolClose__ __dayName__ __specialSymbolOpen__в__specialSymbolClose__ __dayTime__", "Save Chart Layout": "Сохранить график", "Number Of Line": "Количество линий", "Label": "Метка", "Post Market": "Вечерняя торговая сессия", "Change Hours To": "Изменить часы на", "smoothD_input": "smoothD", "Falling_input": "Falling", "X_input": "X", "Risk/Reward short": "Короткая позиция", "UpperLimit_input": "UpperLimit", "Donchian Channels_study": "Канал Дончана", "Entry price:": "Открытие позиции:", "Circles": "Точки", "Stop: {0} ({1}) {2}, Amount: {3}": "Стоп: {0} ({1}) {2}, Сумма: {3}", "Mirrored": "Отобразить по вертикали", "Ichimoku Cloud_study": "Облако Ишимоку", "Signal smoothing_input": "Signal smoothing", "Use Upper Deviation_input": "Use Upper Deviation", "Toggle Auto Scale": "Автоматический масштаб вкл/выкл", "Grid": "Сетка", "Apply Elliot Wave Minor": "Применить второстепенную волну Эллиотта", "Slippage": "Проскальзывание", "Smoothing_input": "Smoothing", "Color 3_input": "Color 3", "Jaw Length_input": "Jaw Length", "Almaty": "Алма-Ата", "Inside": "Внутрь", "Pitchfan": "Наклонный веер", "Fundamentals": "Финансовый анализ", "Keltner Channels_study": "Канал Кельтнера", "Long Position": "Длинная позиция", "Bands style_input": "Bands style", "Undo {0}": "Отменить {0}", "With Markers": "С точками", "Momentum_study": "Моментум (Momentum)", "MF_input": "MF", "Gann Box": "Коробка Ганна", "Switch to the next chart": "Перейти к следующему графику", "charts by TradingView": "графики от TradingView", "Fast length_input": "Fast length", "Apply Elliot Wave": "Применить волну Эллиота", "Disjoint Angle": "Расходящийся угол", "Supermillennium": "Супермиллениум", "W_interval_short": "Н", "Show Only Future Events": "Показывать только будущие события", "Log Scale": "Логарифмическая шкала", "Zurich": "Цюрих", "Equality Line_input": "Equality Line", "Short_input": "Short", "Fib Wedge": "Клин по Фибоначчи", "Line": "Линия", "Session": "Сессия", "Down fractals_input": "Down fractals", "Fib Retracement": "Коррекция по Фибоначчи", "smalen2_input": "smalen2", "isCentered_input": "isCentered", "Border": "Граница", "Klinger Oscillator_study": "Осциллятор Клингера", "Absolute": "Абсолютные значения", "Tue": "Вт", "Style": "Стиль", "Show Left Scale": "Показать левую шкалу", "SMI Ergodic Indicator/Oscillator_study": "SMI Ergodic Indicator/Oscillator", "Aug": "Авг", "Last available bar": "Последний доступный бар", "Manage Drawings": "Управление инструментами рисования", "Top": "Сверху", "No drawings yet": "Нет инструментов рисования", "SMI_input": "SMI", "Chande MO_input": "Chande MO", "jawLength_input": "jawLength", "TRIX_study": "Скользящее среднее (тройное эксп. сглаженное)", "Show Bars Range": "Отображать диапазон в барах", "RVGI_input": "RVGI", "Last edited ": "Последнее изменение ", "signalLength_input": "signalLength", "%s ago_time_range": "%s назад", "Reset Settings": "Сбросить настройки", "PnF": "Крестики-нолики", "Renko": "Ренко", "d_dates": "д", "Point & Figure": "Крестики-нолики", "August": "Август", "Recalculate After Order filled": "Пересчитывать после заполнения заявки", "Source_compare": "Отображать цену:", "Down bars": "Нисходящие бары", "Correlation Coefficient_study": "Коэффициент корреляции", "Delayed": "Данные с задержкой", "Bottom Labels": "Текст снизу", "Text color": "Цвет текста", "Levels": "Уровни", "Length_input": "Длина", "Short Length_input": "Short Length", "teethLength_input": "teethLength", "Visible Range_study": "Видимая область", "Delete": "Удалить", "Hong Kong": "Гонконг", "Text Alignment:": "Выравнивание текста:", "Open {{symbol}} Text Note": "Открыть заметку по {{symbol}}", "October": "Октябрь", "Lock All Drawing Tools": "Зафиксировать все объекты", "Long_input": "Long", "Right End": "Правый край", "Show Symbol Last Value": "Показывать последнюю котировку", "Head & Shoulders": "Голова и плечи", "Do you really want to delete Study Template '{0}' ?": "Вы действительно хотите удалить шаблон индикаторов '{0}'?", "Favorite Drawings Toolbar": "Панель избранных объектов", "Properties...": "Свойства...", "MA Cross_study": "Пересечение скользящих средних", "Trend Angle": "Угол тренда", "Snapshot": "Скриншот графика", "Crosshair": "Перекрестие", "Signal line period_input": "Signal line period", "Timezone/Sessions Properties...": "Часовой пояс и сессии...", "Line Break": "Линейный прорыв", "Quantity": "Количество", "Price Volume Trend_study": "Price Volume Trend", "Auto Scale": "Автоматический масштаб", "Delete chart layout": "Удалить график", "Text": "Текст", "F_data_mode_forbidden_letter": "F", "Risk/Reward long": "Длинная позиция", "Apr": "Апр", "Long RoC Length_input": "Long RoC Length", "Length3_input": "Length3", "+DI_input": "+DI", "Madrid": "Мадрид", "Use one color": "Использовать один цвет", "Chart Properties": "Свойства графика", "No Overlapping Labels_scale_menu": "Не перекрывать метки", "Exit Full Screen (ESC)": "Выйти из режима (ESC)", "MACD_study": "MACD", "Show Economic Events on Chart": "Показывать экономические события на графике", "Moving Average_study": "Скользящее среднее", "Show Wave": "Показывать волну", "Failure back color": "Заливка (неудача)", "Below Bar": "Бар ниже", "Time Scale": "Шкала времени", "

Only D, W, M intervals are supported for this symbol/exchange. You will be automatically switched to a D interval. Intraday intervals are not available because of exchange policies.

": "

Только Д, Н, М интервалы доступны для этого символа/биржи. Вы будете автоматически переключены на Д интервал. Внутридневные интервалы недоступны из-за политики конфиденциальности биржи.

", "Extend Left": "Продлить влево", "Date Range": "Диапазон дат", "Min Move": "Минимальный шаг", "Price format is invalid.": "Формат цены не поддерживается.", "Show Price": "Отображать цену", "Level_input": "Level", "Angles": "Углы", "Hide Favorite Drawings Toolbar": "Скрыть панель \"Избранные инструменты рисования\"", "Commodity Channel Index_study": "Индекс Товарного Канала", "Elder's Force Index_input": "Индекс силы Элдера", "Gann Square": "Квадрат Ганна", "Phoenix": "Финикс", "Format": "Формат", "Color bars based on previous close": "Цвет баров основан на цене предыдущего закрытия", "Change band background": "Изменить фон полосы", "Target: {0} ({1}) {2}, Amount: {3}": "Цель: {0} ({1}) {2}, Сумма: {3}", "This chart layout has a lot of objects and can't be published! Please remove some drawings and/or studies from this chart layout and try to publish it again.": "На данном графике слишком много объектов, его нельзя опубликовать! Удалите несколько объектов рисования и/или индикаторов/стратегий с графика и попробуйте опубликовать снова.", "Anchored Text": "Текст на экране", "Long length_input": "Long length", "Edit {0} Alert...": "Редактировать {0} оповещение...", "Previous Close Price Line": "Линия цены предыдущего закрытия", "Up Wave 5": "Восходящая волна 5", "Qty: {0}": "Кол-во: {0}", "Heikin Ashi": "Хейкин Аши", "Aroon_study": "Арун", "show MA_input": "show MA", "Industry": "Отрасль", "Lead 1_input": "Lead 1", "Short Position": "Короткая позиция", "SMALen1_input": "SMALen1", "P_input": "P", "Apply Default": "Сбросить изменения", "SMALen3_input": "SMALen3", "Average Directional Index_study": "Индикатор среднего направленного движения (ADX)", "Fr_day_of_week": "Пт", "Curve": "Кривая", "a year": "год", "Target Color:": "Цвет цели:", "Bars Pattern": "Шаблон из баров", "D_input": "D", "Font Size": "Размер шрифта", "Create Vertical Line": "Добавить вертикальную линию", "p_input": "p", "Rotated Rectangle": "Вращающийся прямоугольник", "Chart layout name": "Имя графика", "Fib Circles": "Окружности по Фибоначчи", "Dot": "Точка", "Target back color": "Заливка (цель)", "All": "Все", "orders_up to ... orders": "заявки", "Dot_hotkey": "(\"точка\" для быстр. доступа)", "Lead 2_input": "Lead 2", "Save image": "Сохраните изображение", "Move Down": "Переместить вниз", "Unlock": "Разблокировать", "Box Size": "Размер коробки", "Navigation Buttons": "Навигационные кнопки", "Miniscule": "Минускул", "Apply": "Применить", "Down Wave 3": "Нисходящая волна 3", "Plots Background_study": "Plots Background", "Marketplace Add-ons": "Магазин дополнений", "Sine Line": "Синусоида", "Fill": "Заливка", "Hide": "Скрыть", "Toggle Maximize Chart": "Переключить полноэкранный режим", "Target text color": "Текст (цель)", "Scale Left": "Левая шкала", "Elliott Wave Subminuette": "Сверхкороткая волна Эллиотта", "Down Wave C": "Нисходящая волна C", "Countdown": "Отображать обратный отсчет", "UO_input": "UO", "Pyramiding": "Пирамидинг", "Source back color": "Заливка (открытие)", "Go to Date...": "Перейти к дате...", "Sao Paulo": "Сан-Паулу", "R_data_mode_realtime_letter": "R", "Extend Lines": "Продолжить линии", "Conversion Line_input": "Conversion Line", "March": "Март", "Su_day_of_week": "Вс", "Exchange": "Биржа", "My Scripts": "Мои скрипты", "Arcs": "Дуги", "Regression Trend": "Направление регрессии", "Short RoC Length_input": "Short RoC Length", "Fib Spiral": "Спираль по Фибоначчи", "Double EMA_study": "Double EMA", "All Indicators And Drawing Tools": "Все индикаторы и инструменты рисования", "Indicator Last Value": "Маркер последнего значения индикатора", "Sync drawings to all charts": "Синхронизировать на всех графиках", "Stop Color:": "Цвет стоп-уровня:", "Stay in Drawing Mode": "Оставаться в режиме рисования", "Bottom Margin": "Отступ снизу", "Dubai": "Дубай", "Save Chart Layout saves not just some particular chart, it saves all charts for all symbols and intervals which you are modifying while working with this Layout": "Функция \"Сохранить рабочее пространство\" учитывает все изменения, которые вы сделали для разных инструментов или интервалов", "Average True Range_study": "Средний истинный диапазон", "Max value_input": "Max value", "MA Length_input": "MA Length", "Right Labels": "Текст справа", "in %s_time_range": "через %s", "Extend Bottom": "Продлить вниз", "sym_input": "sym", "DI Length_input": "DI Length", "Rome": "Рим", "Scale": "Шкала", "Periods_input": "Periods", "Arrow": "Стрелка", "Square": "Квадрат", "Basis_input": "Basis", "Arrow Mark Down": "Стрелка вниз", "lengthStoch_input": "lengthStoch", "Taipei": "Тайбей", "Objects Tree": "Дерево объектов", "Remove from favorites": "Удалить из предпочтений", "Show Symbol Previous Close Value": "Показывать цену предыдущего закрытия инструмента", "Scale Series Only": "Игнорировать шкалу индикаторов", "Source text color": "Текст (открытие)", "Simple": "Простая линия", "Report a data issue": "Сообщить о проблеме с данными", "Arnaud Legoux Moving Average_study": "Скользящее среднее Арно Легу", "Smoothed Moving Average_study": "Smoothed Moving Average", "Lower Band_input": "Нижняя полоса", "Verify Price for Limit Orders": "Проверка цены для исполнения лимитовых заявок", "VI +_input": "VI +", "Line Width": "Ширина линии", "Contracts": "Контракты", "Always Show Stats": "Всегда отображать текст", "Delete all drawing for this symbol": "Удалить все инструменты рисования для этого символа", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "Simple ma(signal line)", "Change Interval...": "Изменить интервал", "Public Library": "Публичные", " Do you really want to delete Drawing Template '{0}' ?": " Вы действительно хотите удалить шаблон '{0}'?", "Sat": "Сб", "week": "неделя", "CRSI_study": "CRSI", "Close message": "Закрыть сообщение", "Jul": "Июл", "Base currency": "Основная валюта", "Show Drawings Toolbar": "Показать панель графических инструментов", "Chaikin Oscillator_study": "Осциллятор Чайкина", "Price Source": "На основе", "Market Open": "Рынок открыт", "Color Theme": "Цветовая тема", "Projection up bars": "Проекция восходящего бара", "Awesome Oscillator_study": "Чудесный осциллятор Билла Вильямса", "Bollinger Bands Width_input": "Bollinger Bands Width", "Q_input": "Q", "long_input": "long", "Error occured while publishing": "Возникла ошибка при публикации", "Fisher_input": "Fisher", "Color 1_input": "Color 1", "Moving Average Weighted_study": "Moving Average Weighted", "Save": "Сохранить", "Type": "Тип", "Wick": "Фитиль", "Accumulative Swing Index_study": "Accumulative Swing Index", "Load Chart Layout": "Загрузить график", "Show Values": "Показать значения", "Fib Speed Resistance Fan": "Веерные линии сопротивления по Фибоначчи", "Bollinger Bands Width_study": "Ширина полос Боллинджера", "This chart layout has more than 1000 drawings, which is a lot! This may negatively affect performance, storage and publishing. We recommend to remove some drawings to avoid potential performance issues.": "Данный график содержит более 1000 элементов рисования - это слишком много и может негативно сказаться на производительности графика. Мы рекомендуем удалить некоторые объекты рисования, чтобы избежать возможных технических ошибок.", "Left End": "Левый край", "Volume Oscillator_study": "Осциллятор объема", "Always Visible": "Отображать всегда", "S_data_mode_snapshot_letter": "S", "Flag": "Флаг", "Elliott Wave Circle": "Волновой цикл Эллиотта", "Earnings breaks": "В виде разрыва", "Change Minutes From": "Изменить минуты с", "Do not ask again": "Больше не спрашивать", "Displacement_input": "Displacement", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "Upper Deviation", "(H + L)/2": "(МАКС+МИН)/2", "XABCD Pattern": "Шаблон XABCD", "Schiff Pitchfork": "Вилы Шифа", "Copied to clipboard": "Скопировано в буфер обмена", "hl2": "МаксМин2", "Flipped": "Отразить по горизонтали", "DEMA_input": "DEMA", "Move_input": "Move", "NV_input": "NV", "Choppiness Index_study": "Индекс Переменчивости", "Study Template '{0}' already exists. Do you really want to replace it?": "Шаблон индикаторов '{0}' уже существует. Вы действительно хотите заменить его?", "Merge Down": "Присоединить вниз", " per contract": " на контракт", "Overlay the main chart": "Поверх основной серии", "Screen (No Scale)": "Экран (нет шкалы)", "Three Drives Pattern": "Паттерн трёх движений", "Save Indicator Template As": "Сохранить шаблон индикаторов как", "Length MA_input": "Length MA", "percent_input": "percent", "September": "Сентябрь", "{0} copy": "{0} (копия)", "Median_input": "Median", "Accumulation/Distribution_input": "Накопление/Распределение", "Sync": "Синхронизировать", "C_in_legend": "ЗАКР", "Weeks_interval": "Нед.", "smoothK_input": "smoothK", "Percentage_scale_menu": "Процентная шкала", "Change Extended Hours": "Изменить расширенную сессию", "MOM_input": "MOM", "h_interval_short": "Ч", "Change Interval": "Изменить интервал", "Change area background": "Изменить фон области", "Modified Schiff": "Измененные Шифа", "top": "сверху", "Adelaide": "Аделаида", "Send Backward": "На один слой назад", "Mexico City": "Мехико", "TRIX_input": "TRIX", "Show Price Range": "Отображать диапазон цен", "Elliott Major Retracement": "Основная коррекция Эллиотта", "ASI_study": "ASI", "Notification": "Уведомление", "Fri": "Пт", "just now": "только что", "Forecast": "Прогноз", "Fraction part is invalid.": "Дробная часть неверна.", "Connecting": "Идет соединение", "Ghost Feed": "Проекция цены", "Signal_input": "Signal", "Histogram_input": "Histogram", "The Extended Trading Hours feature is available only for intraday charts": "Функция расширенных торговых часов доступна только для внутридневных графиков", "Stop syncing": "Отменить синхронизацию объектов", "open": "откр.", "StdDev_input": "StdDev", "EMA Cross_study": "EMA Cross", "Conversion Line Periods_input": "Conversion Line Periods", "Oversold_input": "Перепроданы", "Brisbane": "Брисбен", "Monday": "Понедельник", "Add Symbol_compare_or_add_symbol_dialog": "Добавить инструмент", "Williams %R_study": "Williams %R", "Symbol": "Инструмент", "a month": "месяц", "Precision": "Точность", "depth_input": "depth", "Go to": "Переход к дате", "Please enter chart layout name": "Укажите имя графика:", "Mar": "Мар", "VWAP_study": "VWAP", "Offset": "Смещение", "Date": "Дата", "Format...": "Свойства...", "__dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__dayName__ __specialSymbolOpen__в__specialSymbolClose__ __dayTime__", "Toggle Maximize Pane": "Развернуть", "Search": "Поиск", "Zig Zag_study": "ЗигЗаг", "Actual": "Факт", "SUCCESS": "УСПЕХ", "Long period_input": "Long period", "length_input": "length", "roclen4_input": "roclen4", "Price Line": "Линия цены", "Area With Breaks": "Область с разрывами", "Zoom Out": "Уменьшить масштаб", "Stop Level. Ticks:": "Стоп-уровень. Тики:", "Window Size_input": "Window Size", "Economy & Symbols": "Эконом.анализ и инструменты", "Circle Lines": "Линии окружности", "Visual Order": "Порядок слоев", "__specialSymbolOpen__Yesterday at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Вчера на__specialSymbolClose__ __dayTime__", "Stop Background Color": "Цвет заливки (остановка)", "1. Slide your finger to select location for first anchor
2. Tap anywhere to place the first anchor": "1. Определите первую точку, перетаскивая перекрестие пальцем.
2. После этого, сделайте тап в произвольном месте, чтобы установить её.", "Sector": "Сектор", "powered by TradingView": "технология TradingView", "Text:": "Текст:", "Stochastic_study": "Стохастический осциллятор", "Sep": "Сен", "TEMA_input": "TEMA", "Apply WPT Up Wave": "Применить WPT Up Wave", "Min Move 2": "Минимальный шаг 2", "Extend Left End": "Продолжить влево", "Projection down bars": "Проекция нисходящего бара", "Advance/Decline_study": "Рост/падение", "New York": "Нью-Йорк", "Flag Mark": "Флаг", "Drawings": "Инструменты рисования", "Cancel": "Отмена", "Compare or Add Symbol": "Сравнить/Добавить", "Redo": "Повторять", "Hide Drawings Toolbar": "Скрыть панель объектов", "Ultimate Oscillator_study": "Ultimate Oscillator", "Vert Grid Lines": "Верт. линии сетки", "Growing_input": "Growing", "Angle": "Угол", "Plot_input": "Plot", "Chicago": "Чикаго", "Color 8_input": "Color 8", "Indicators, Fundamentals, Economy and Add-ons": "Индикаторы, экономические данные, дополнения", "h_dates": "ч.", "ROC Length_input": "ROC Length", "roclen3_input": "roclen3", "Overbought_input": "Перекуплены", "Extend Top": "Продлить вверх", "Change Minutes To": "Изменить минуты на", "No study templates saved": "Нет сохраненных шаблонов индикаторов", "Trend Line": "Линия тренда", "TimeZone": "Часовой пояс", "Your chart is being saved, please wait a moment before you leave this page.": "Ваш график сохраняется, подождите немного, перед тем как перейти с этой страницы, или закрыть ее.", "Percentage": "Проценты", "Tu_day_of_week": "Вт", "RSI Length_input": "RSI Length", "Triangle": "Треугольник", "Line With Breaks": "Линия с разрывами", "Period_input": "Period", "Watermark": "Водяной знак", "Trigger_input": "Trigger", "SigLen_input": "SigLen", "Extend Right": "Продлить вправо", "Color 2_input": "Color 2", "Show Prices": "Отображать цены", "Copy": "Копировать", "high": "макс.", "Arc": "Дуга", "Edit Order": "Редактировать заявку", "January": "Январь", "Arrow Mark Right": "Стрелка вправо", "Extend Alert Line": "Продолжить линию оповещения", "Background color 1": "Цвет заливки №1", "RSI Source_input": "RSI Source", "Close Position": "Закрыть позицию", "Any Number": "Любое число", "Stop syncing drawing": "Отменить синхронизацию объектов", "Visible on Mouse Over": "Отображать при наведении курсора", "MA/EMA Cross_study": "MA/EMA Cross", "Thu": "Чт", "Vortex Indicator_study": "Vortex Indicator", "view-only chart by {user}": "график только для просмотра от {user}", "ROCLen1_input": "ROCLen1", "M_interval_short": "М", "Chaikin Oscillator_input": "Осциллятор Чайкина", "Price Levels": "Уровни цены", "Show Splits": "Отображать дробление акций", "Zero Line_input": "Zero Line", "__specialSymbolOpen__Today at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Сегодня на__specialSymbolClose__ __dayTime__", "Increment_input": "Increment", "Days_interval": "Дн.", "Show Right Scale": "Показать правую шкалу", "Show Alert Labels": "Отображать метки оповещений", "Historical Volatility_study": "Историческая волатильность", "Lock": "Заблокировать", "length14_input": "length14", "High": "Максимум", "ext": "расш", "Date and Price Range": "Диапазон цены и времени", "Polyline": "Ломаная линия", "Reconnect": "Переподключиться", "Lock/Unlock": "Блокировать/разблокировать", "HLC Bars": "Не отображать цену открытия", "Base Level": "Уровень базовой линии", "Saturday": "Суббота", "Symbol Last Value": "Маркер последнего значения инструмента", "Above Bar": "Бар выше", "Studies": "Скрипты", "Color 0_input": "Color 0", "Add Symbol": "Добавить", "maximum_input": "maximum", "Wed": "Ср", "Paris": "Париж", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "VWMA_study": "Скользящее среднее, взвешенное по объему", "fastLength_input": "fastLength", "Time Levels": "Уровни времени", "Width": "Ширина", "Loading": "Загрузка", "Template": "Шаблон", "Use Lower Deviation_input": "Use Lower Deviation", "Up Wave 3": "Восходящая волна 3", "Parallel Channel": "Параллельные каналы", "Time Cycles": "Временные циклы", "Second fraction part is invalid.": "Вторая дробная часть неверна.", "Divisor_input": "Divisor", "Baseline": "Базовая линия", "Down Wave 1 or A": "Нисходящая волна 1 или А", "ROC_input": "ROC", "Dec": "Дек", "Ray": "Луч", "Extend": "Продолжить", "length7_input": "length7", "Bottom": "Снизу", "Berlin": "Берлин", "Undo": "Отменить", "Original": "Обычные", "Mon": "Пн", "Reset Scale": "Сбросить состояние шкалы", "Long Length_input": "Long Length", "True Strength Indicator_study": "Индекс истинной силы", "%R_input": "%R", "There are no saved charts": "Нет сохранённых графиков", "Instrument is not allowed": "Инструмент не разрешён", "bars_margin": "баров", "Decimal Places": "Знаки после запятой", "Show Indicator Last Value": "Показывать последнее значение индикатора", "Initial capital": "Исходный капитал", "Show Angle": "Отображать угол", "Mass Index_study": "Индекс массы", "More features on tradingview.com": "Больше возможностей на tradingview.com", "Objects Tree...": "Дерево объектов...", "Remove Drawing Tools & Indicators": "Удалить графические инструменты и индикаторы", "Length1_input": "Length1", "Always Invisible": "Никогда не отображать", "Circle": "Круг", "Days": "Дни", "x_input": "x", "Save As...": "Сохранить как...", "Elliott Double Combo Wave (WXY)": "Двойная комбинация Эллиотта (WXY)", "Parabolic SAR_study": "Параболическая система времени/цены", "Any Symbol": "Любое имя инструмента", "Price Label": "Отметка на цене", "Stats Text Color": "Цвет текста", "Minutes": "Минуты", "Williams Alligator_study": "Аллигатор Билла Вильямса", "Projection": "Проекция", "Custom color...": "Выбрать цвет...", "Jan": "Янв", "Jaw_input": "Jaw", "Right": "Справа", "Help": "Справка", "Coppock Curve_study": "Кривая Коппока", "Reversal Amount": "Величина разворота", "Reset Chart": "Сбросить состояние графика", "Marker Color": "Цвет метки", "Sunday": "Воскресенье", "Left Axis": "Левая шкала", "Open": "Цена открытия", "YES": "Да", "longlen_input": "longlen", "Moving Average Exponential_study": "Скользящее среднее (эксп.)", "Source border color": "Граница (открытие)", "Redo {0}": "Повторять {0}", "Cypher Pattern": "Паттерн Cypher", "s_dates": "s", "Caracas": "Каракас", "Area": "Область", "Triangle Pattern": "Шаблон \"Треугольник\"", "Balance of Power_study": "Баланс силы", "EOM_input": "EOM", "Shapes_input": "Shapes", "Apply Manual Risk/Reward": "Применить ручную настройку риска/прибыли", "Market Closed": "Рынок закрыт", "Sydney": "Сидней", "Indicators": "Индикаторы", "close": "закр", "q_input": "q", "You are notified": "Вы уведомлены", "%D_input": "%D", "Border Color": "Цвет обводки", "Offset_input": "Offset", "Risk": "Риск", "Price Scale": "Ценовая шкала", "HV_input": "HV", "Seconds": "Секунды", "Settings": "Настройки", "Start_input": "Начать", "Elliott Impulse Wave (12345)": "Импульсная волна Эллиотта (12345)", "Hours": "Часы", "Send to Back": "Отправить назад", "Color 4_input": "Color 4", "Los Angeles": "Лос-Анджелес", "Prices": "Цены", "Hollow Candles": "Пустые свечи", "July": "Июль", "Create Horizontal Line": "Добавить горизонтальную линию", "Minute": "Минута", "Cycle": "Цикл", "ADX Smoothing_input": "ADX Smoothing", "One color for all lines": "Один цвет для всех линий", "m_dates": "м", "(H + L + C)/3": "(МАКС+МИН+ЗАКР)/3", "Candles": "Японские свечи", "We_day_of_week": "Ср", "Width (% of the Box)": "Ширина (% от прямоугольника)", "Go to...": "Перейти...", "Pip Size": "Объём пункта", "Wednesday": "Среда", "This drawing is used in alert. If you remove the drawing, the alert will be also removed. Do you want to remove the drawing anyway?": "Для инструмента рисования настроено оповещение. Если вы удалите объект, оповещение будет также удалено. Все равно хотите удалить объект?", "Show Countdown": "Отображать обратный отсчет", "Show alert label line": "Показывать метку оповещений", "Down Wave 2 or B": "Нисходящая волна 2 или B", "MA_input": "MA", "Length2_input": "Length2", "not authorized": "не авторизован", "Session Volume_study": "Объём за сессию", "Image URL": "Изображение", "Submicro": "Субмикро", "SMI Ergodic Oscillator_input": "SMI Ergodic Oscillator", "Show Objects Tree": "Дерево объектов", "Primary": "Первичный", "Price:": "Цена:", "Bring to Front": "Перенести поверх", "Brush": "Кисть", "Not Now": "Не сейчас", "Yes": "Да", "C_data_mode_connecting_letter": "C", "SMALen4_input": "SMALen4", "Apply Default Drawing Template": "Применить шаблон по умолчанию", "Compact": "Компактный вид", "Save As Default": "Сделать по умолчанию", "Target border color": "Граница (цель)", "Invalid Symbol": "Неизвестный инструмент", "Inside Pitchfork": "Вилы (внутрь)", "yay Color 1_input": "yay Color 1", "Quandl is a huge financial database that we have connected to TradingView. Most of its data is EOD and is not updated in real-time, however the information may be extremely useful for fundamental analysis.": "Quandl - это огромная финансовая база данных, которую мы подключили к TradingView. Большая часть данных является EOD-данными и не обновляется в реальном времени, однако данная информация может быть очень полезна для фундаментального анализа.", "Hide Marks On Bars": "Скрыть отметки на барах", "Cancel Order": "Отменить заявку", "Kagi": "Каги", "WMA Length_input": "WMA Length", "Show Dividends on Chart": "Отображать дивиденды на графике", "Show Executions": "Показывать исполненные заявки", "Borders": "Обводка", "Remove Indicators": "Удалить индикаторы", "loading...": "загрузка...", "Closed_line_tool_position": "Закрыта", "Rectangle": "Прямоугольник", "Change Resolution": "Изменить разрешение", "Indicator Arguments": "Параметры индикатора", "Symbol Description": "Описание инструмента", "Chande Momentum Oscillator_study": "Осциллятор темпа Чанде", "Degree": "Угол", " per order": " на заявку", "Supercycle": "Суперцикл", "Jun": "Июн", "Least Squares Moving Average_study": "Скользящее среднее (наименьшие квадраты)", "powered by ": "на платформе ", "Source_input": "Source", "Change Seconds To": "Заменить секунды на", "%K_input": "%K", "Scales Text": "Текст на шкалах", "Toronto": "Торонто", "Please enter template name": "Введите имя шаблона", "Symbol Name": "Имя инструмента", "Tokyo": "Токио", "Events Breaks": "Границы событий", "San Salvador": "Сан-Сальвадор", "Months": "Месяцы", "Symbol Info...": "Информация по инструменту...", "Elliott Wave Minor": "Второстепенная волна Эллиотта", "Cross": "Перекрестие", "Measure (Shift + Click on the chart)": "Измерение (Shift + клик на графике)", "Override Min Tick": "Минимальное
изменение цены", "Show Positions": "Показывать позиции", "Dialog": "Диалог", "Add To Text Notes": "Добавить к заметкам", "Elliott Triple Combo Wave (WXYXZ)": "Тройная комбинация Эллиотта (WXYXZ)", "Multiplier_input": "Multiplier", "Risk/Reward": "Риск/Прибыль", "Base Line Periods_input": "Base Line Periods", "Show Dividends": "Отображать дивиденды", "Relative Strength Index_study": "Индекс относительной силы", "Modified Schiff Pitchfork": "Видоизмененные вилы Шифа", "Top Labels": "Текст сверху", "Show Earnings": "Отображать доходы на акцию", "Elliott Triangle Wave (ABCDE)": "ABCDE волна (треугольник)", "Minuette": "Минуэт", "Text Wrap": "Перенос строк", "Reverse Position": "Перевернуть позицию", "Elliott Minor Retracement": "Второстепенная коррекция Эллиотта", "DPO_input": "DPO", "Th_day_of_week": "Чт", "Slash_hotkey": "(\"слэш\" для быстр. доступа)", "No symbols matched your criteria": "Подходящих инструментов не найдено", "Icon": "Значок", "lengthRSI_input": "lengthRSI", "Tuesday": "Вторник", "Teeth Length_input": "Teeth Length", "Indicator_input": "Indicator", "Box size assignment method": "Метод определения размера коробки", "Open Interval Dialog": "Открыть диалог интервалов", "Shanghai": "Шанхай", "Athens": "Афины", "Fib Speed Resistance Arcs": "Дуги сопротивления по Фибоначчи", "Content": "Контент", "middle": "по центру", "Lock Cursor In Time": "Зафиксировать курсор по времени", "Intermediate": "Промежуточный", "Eraser": "Ластик", "Relative Vigor Index_study": "Индекс относительной бодрости", "Envelope_study": "Конверт", "Symbol Labels": "Отображать инструмент на шкале", "Pre Market": "Предторговый период", "Horizontal Line": "Горизонтальная линия", "O_in_legend": "ОТКР", "Confirmation": "Подтвердите действие", "HL Bars": "МаксМин бары", "Lines:": "Линии", "hlc3": "МаксМинЗакр3", "Buenos Aires": "Буэнос-Айрес", "useTrueRange_input": "useTrueRange", "Bangkok": "Бангкок", "Profit Level. Ticks:": "Цель. Тики:", "Show Date/Time Range": "Отображать временной диапазон", "Level {0}": "Уровень {0}", "Favorites": "Избранное", "Horz Grid Lines": "Гор. линии сетки", "-DI_input": "-DI", "Price Range": "Диапазон цен", "deviation_input": "deviation", "Account Size": "Размер счёта", "Value_input": "Value", "Time Interval": "Интервал", "Success text color": "Текст (успех)", "ADX smoothing_input": "ADX smoothing", "Order size": "Объём заявки", "Drawing Tools": "Инструменты рисования", "Save Drawing Template As": "Сохранить шаблон графических инструментов как", "Tokelau": "Токелау", "ohlc4": "ОткрМаксМинЗакр4", "Traditional": "Традиционный", "Chaikin Money Flow_study": "Денежный поток Чайкина", "Ease Of Movement_study": "Лёгкость движения", "Defaults": "По умолчанию", "Percent_input": "Percent", "Interval is not applicable": "Интервал не поддерживается", "short_input": "short", "Visual settings...": "Настройки отображения...", "RSI_input": "RSI", "Chatham Islands": "Чатем", "Detrended Price Oscillator_input": "Detrended Price Oscillator", "Mo_day_of_week": "Пн", "center": "по центру", "Vertical Line": "Вертикальная линия", "Bogota": "Богота", "Show Splits on Chart": "Отображать разделители на графике", "Sorry, the Copy Link button doesn't work in your browser. Please select the link and copy it manually.": "К сожалению, кнопка \"Скопировать ссылку\" не работает в вашем браузере. Выделите ссылку и скопируйте её вручную.", "Levels Line": "Линии уровня", "Events & Alerts": "События и оповещения", "May": "Май", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "Арун вниз", "Add To Watchlist": "Добавить в Список котировок", "Total": "Итого", "Price": "Цена", "left": "слева", "Lock scale": "Зафиксировать шкалу", "Limit_input": "Limit", "Change Days To": "Изменить дни на", "Price Oscillator_study": "Осциллятор цены", "smalen1_input": "smalen1", "Drawing Template '{0}' already exists. Do you really want to replace it?": "Шаблон '{0}' уже существует. Вы действительно хотите заменить его?", "Show Middle Point": "Показывать среднюю точку", "KST_input": "KST", "Extend Right End": "Продолжить вправо", "Fans": "Линии", "Color based on previous close_input": "Цвет основан цене предыдущего закрытия", "Price_input": "Price", "Gann Fan": "Веер Ганна", "Weeks": "Недели", "McGinley Dynamic_study": "McGinley Dynamic", "Relative Volatility Index_study": "Относительный индекс волатильности", "Source Code...": "Исходный код...", "PVT_input": "PVT", "Show Hidden Tools": "Показать скрытые инструменты", "Hull Moving Average_study": "Скользящее среднее Хала", "Symbol Prev. Close Value": "Цена предыдущего закрытия", "Istanbul": "Стамбул", "{0} chart by TradingView": "{0} график на TradingView", "Bring Forward": "На один слой вперед", "Remove Drawing Tools": "Удалить графические инструменты", "Friday": "Пятница", "Zero_input": "Zero", "Company Comparison": "Инструмент для сравнения", "Stochastic Length_input": "Stochastic Length", "mult_input": "mult", "URL cannot be received": "URL не может быть получен", "Success back color": "Заливка (успех)", "E_data_mode_end_of_day_letter": "E", "Trend-Based Fib Extension": "Расширение Фибоначчи, основанное на тренде", "Double Curve": "Двойная кривая", "Stochastic RSI_study": "Стохастический индекс относительной силы", "Oops!": "Упс!", "Horizontal Ray": "Горизонтальный луч", "smalen3_input": "smalen3", "Ok": "Ок", "Script Editor...": "Редактор скриптов", "Are you sure?": "Вы уверены?", "Trades on Chart": "Сделки на графике", "Listed Exchange": "Биржа", "Error:": "Ошибка:", "Fullscreen mode": "Полноэкранный режим", "Add Text Note For {0}": "Добавить заметку для {0}", "K_input": "K", "Do you really want to delete Drawing Template '{0}' ?": "Вы действительно хотите удалить шаблон инструментов '{0}'?", "ROCLen3_input": "ROCLen3", "Micro": "Микро", "Text Color": "Цвет текста", "Rename Chart Layout": "Переименовать график", "Built-ins": "Встроенные", "Background color 2": "Цвет заливки №2", "Drawings Toolbar": "Показывать панель инструментов", "Moving Average Channel_study": "Moving Average Channel", "New Zealand": "Новая Зеландия", "CHOP_input": "CHOP", "Apply Defaults": "Применить по умолчанию", "% of equity": "% акционерного капитала", "Extended Alert Line": "Продлить линию оповещения", "Note": "Заметка", "OK": "ОК", "Show": "Показать", "{0} bars": "Бары: {0}", "Lower_input": "Lower", "Created ": "Создана ", "Warning": "Предупреждение", "Elder's Force Index_study": "Индекс силы Элдера", "Down Wave 4": "Нисходящая волна 4", "Show Earnings on Chart": "Отображать доходы на акцию на графике", "ATR_input": "ATR", "Low": "Минимум", "Bollinger Bands %B_study": "%B Полос Боллинджера", "Time Zone": "Часовой пояс", "right": "справа", "Schiff": "Шифа", "Wrong value": "Неправильное значение", "Upper Band_input": "Верхняя полоса", "Sun": "Вс", "Rename...": "Переименовать...", "start_input": "start", "No indicators matched your criteria.": "Нет индикаторов по вашему запросу", "Commission": "Комиссия", "Down Color": "Бар вниз", "Short length_input": "Short length", "Kolkata": "Калькутта", "Submillennium": "Субмиллениум", "Technical Analysis": "Технический анализ", "Show Text": "Отображать текст", "Channel": "Канал", "FXCM CFD data is available only to FXCM account holders": "CFD данные от FXCM доступны только для владельцев счетов FXCM.", "Lagging Span 2 Periods_input": "Lagging Span 2 Periods", "Connecting Line": "Соединяющая линия", "Seoul": "Сеул", "bottom": "снизу", "Teeth_input": "Teeth", "Sig_input": "Sig", "Open Manage Drawings": "Открыть настройки объектов рисования", "Save New Chart Layout": "Сохранить график", "Fib Channel": "Каналы по Фибоначчи", "Save Drawing Template As...": "Сохранить шаблон как...", "Minutes_interval": "Мин.", "Up Wave 2 or B": "Восходящая волна 2 или B", "Columns": "Столбцы", "Directional Movement_study": "Directional Movement", "roclen2_input": "roclen2", "Apply WPT Down Wave": "Применить WPT Down Wave", "Not applicable": "Не поддерживается", "Bollinger Bands %B_input": "Bollinger Bands %B", "Default": "Не задано", "Singapore": "Сингапур", "Template name": "Имя шаблона", "Indicator Values": "Значения индикатора", "Lips Length_input": "Lips Length", "Toggle Log Scale": "Логарифмическая шкала вкл/выкл", "L_in_legend": "МИН", "Remove custom interval": "Удалить пользовательский интервал", "shortlen_input": "shortlen", "Quotes are delayed by {0} min": "Данные с задержкой на {0} мин.", "Hide Events on Chart": "Скрыть события на графике", "Cash": "Валюта", "Bar's Style": "Стиль баров", "Exponential_input": "Exponential", "Down Wave 5": "Нисходящая волна 5", "Previous": "Предыдущий", "Stay In Drawing Mode": "Оставаться в режиме рисования", "Comment": "Комментарий", "Connors RSI_study": "Connors RSI", "Bars": "Бары", "Show Labels": "Отображать текстовые метки", "Flat Top/Bottom": "Плоский верх/низ", "Symbol Type": "Тип инструмента", "December": "Декабрь", "Lock drawings": "Зафиксировать элементы рисования", "Border color": "Цвет обводки", "Change Seconds From": "Заменить на секунды с", "Left Labels": "Текст слева", "Insert Indicator...": "Добавить индикатор...", "ADR_B_input": "ADR_B", "Paste %s": "Вставить %s", "Change Symbol...": "Сменить инструмент...", "Timezone": "Часовой пояс", "Color 6_input": "Color 6", "Oct": "Окт", "ATR Length": "Длина ATR", "{0} financials by TradingView": "Финансовые показатели {0} от TradingView", "Extend Lines Left": "Продолжить линии влево", "Feb": "Фев", "Transparency": "Прозрачность", "No": "Нет", "June": "Июнь", "Cyclic Lines": "Разделение циклов", "length28_input": "length28", "ABCD Pattern": "Шаблон ABCD", "When selecting this checkbox the study template will set \"__interval__\" interval on a chart": "Если эта опция включена, то шаблон индикаторов установит __interval__ интервал для графика", "Add": "ОК", "OC Bars": "ОткрЗакр бары", "Millennium": "Миллениум", "On Balance Volume_study": "Балансовый объем", "Apply Indicator on {0} ...": "Применить индикатор для {0} ...", "NEW": "новая", "Chart Layout Name": "Имя графика", "Up bars": "Восходящие бары", "Hull MA_input": "Hull MA", "Lock Scale": "Зафиксировать шкалу", "distance: {0}": "Расстояние: {0}", "Extended": "Прямая", "log": "лог", "NO": "Нет", "Top Margin": "Отступ сверху", "Up fractals_input": "Up fractals", "Insert Drawing Tool": "Добавить фигуру", "OHLC Values": "Значения ОТКР-МАКС-МИН-ЗАКР", "Correlation_input": "Correlation", "Session Breaks": "Границы сессий", "Add {0} To Watchlist": "Добавить {0} в Список котировок", "Anchored Note": "Заметка на экране", "lipsLength_input": "lipsLength", "low": "мин.", "Apply Indicator on {0}": "Применить индикатор для {0}", "UpDown Length_input": "UpDown Length", "November": "Ноябрь", "Tehran": "Тегеран", "Balloon": "Всплывающий текст", "Track time": "Отслеживать время", "Background Color": "Цвет заливки", "an hour": "один час", "Right Axis": "Правая шкала", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "slowLength", "Click to set a point": "Кликните, чтобы установить точку", "Save Indicator Template As...": "Сохранить шаблон инд. как...", "Arrow Up": "Стрелка вверх", "n/a": "н/д", "Indicator Titles": "Названия индикаторов", "Failure text color": "Текст (неудача)", "Sa_day_of_week": "Сб", "Net Volume_study": "Чистый объём", "Error": "Ошибка", "Edit Position": "Редактировать позицию", "RVI_input": "RVI", "Centered_input": "Centered", "Recalculate On Every Tick": "Пересчитывать на каждом тике", "Left": "Слева", "Simple ma(oscillator)_input": "Simple ma(oscillator)", "Compare": "Сравнить", "Fisher Transform_study": "Fisher Transform", "Show Orders": "Показывать заявки", "Zoom In": "Увеличить масштаб", "Length EMA_input": "Length EMA", "Enter a new chart layout name": "Укажите новое имя графика", "Signal Length_input": "Signal Length", "FAILURE": "НЕУДАЧА", "Point Value": "Значение", "D_interval_short": "Д", "MA with EMA Cross_study": "MA with EMA Cross", "Price Channel_study": "Price Channel", "Close": "Цена закрытия", "ParabolicSAR_input": "ParabolicSAR", "Log Scale_scale_menu": "Логарифмическая шкала", "MACD_input": "MACD", "Do not show this message again": "Больше не показывать это сообщение", "{0} P&L: {1}": "{0} ПР/УБ: {1}", "No Overlapping Labels": "Не перекрывать метки", "Arrow Mark Left": "Стрелка влево", "Slow length_input": "Slow length", "Up Wave 4": "Восходящая волна 4", "(O + H + L + C)/4": "(ОТКР+МАКС+МИН+ЗАКР)/4", "Confirm Inputs": "Подтвердить инпуты", "Open_line_tool_position": "Открыта", "Lagging Span_input": "Lagging Span", "Subminuette": "Субминуэт", "Thursday": "Четверг", "Vancouver": "Ванкувер", "Triple EMA_study": "Скользящее среднее (тройное эксп.)", "Elliott Correction Wave (ABC)": "Коррекционная волна Эллиотта (ABC)", "Error while trying to create snapshot.": "Ошибка при попытке создания скриншота", "Label Background": "Заливка текстовой метки", "Templates": "Шаблоны", "Please report the issue or click Reconnect.": "Пожалуйста, сообщите о проблеме, или кликните Переподключиться.", "Normal": "Обычный", "Signal Labels": "Метки сигнала", "Delete Text Note": "Удалить заметку", "compiling...": "компилируется...", "Detrended Price Oscillator_study": "Detrended Price Oscillator", "Color 5_input": "Color 5", "Fixed Range_study": "Фиксированный диапазон", "Up Wave 1 or A": "Восходящая волна 1 или А", "Scale Price Chart Only": "Игнорировать шкалу индикаторов", "Unmerge Up": "Отсоединить наверх", "auto_scale": "авто", "Short period_input": "Short period", "Background": "Заливка", "Study Templates": "Шаблоны индикаторов", "Up Color": "Бар вверх", "Apply Elliot Wave Intermediate": "Применить промежуточную волну", "VWMA_input": "VWMA", "Lower Deviation_input": "Lower Deviation", "Save Interval": "Сохранить интервал", "February": "Февраль", "Reverse": "Переворот", "Oops, something went wrong": "Упс, что-то пошло не так", "Add to favorites": "Добавить в избранное", "Median": "Средняя линия", "ADX_input": "ADX", "Remove": "Удалить", "len_input": "len", "Arrow Mark Up": "Стрелка вверх", "April": "Апрель", "Active Symbol": "Инструмент", "Extended Hours": "Расширенная сессия", "Crosses_input": "Crosses", "Middle_input": "Middle", "Read our blog for more info!": "Прочтите наш блог, чтобы узнать больше!", "Sync drawing to all charts": "Синхронизировать инструмент рисования со всеми графиками", "LowerLimit_input": "LowerLimit", "Know Sure Thing_study": "Знать наверняка", "Copy Chart Layout": "Копировать график", "Compare...": "Сравнить...", "1. Slide your finger to select location for next anchor
2. Tap anywhere to place the next anchor": "1. Определите точку, перетаскивая перекрестие пальцем.
2. После этого, сделайте тап в произвольном месте, чтобы установить её.", "Text Notes are available only on chart page. Please open a chart and then try again.": "Заметки доступны только на странице графика. Откройте график и попробуйте еще раз.", "Color": "Цвет", "Aroon Up_input": "Арун вверх", "Apply Elliot Wave Major": "Применить Elliot Wave Major", "Scales Lines": "Линии шкал", "Type the interval number for munute charts (i.e. 5 if it is going to be a five minute chart). Or number plus letter for H (Hourly), D (Daily), W (Weekly), M (Monthly) intervals (i.e. D or 2H)": "Введите нужное число для минутных графиков (например, 5 если нужен 5-минутный график), или число и букву для соответствующих интервалов: H (часы), D (дни), W (недели), M (месяцы), например, D или 2H", "Ellipse": "Эллипс", "Up Wave C": "Восходящая волна С", "Show Distance": "Отображать расстояние", "Risk/Reward Ratio: {0}": "Соотношение риск/прибыль: {0}", "Restore Size": "Восстановить размер", "Honolulu": "Гонолулу", "Williams Fractal_study": "Williams Fractal", "Merge Up": "Присоединить вверх", "Right Margin": "Отступ справа", "Moscow": "Москва", "Warsaw": "Варшава"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/sk_SK.json b/static/Kline/charting_library/static/localization/translations/sk_SK.json new file mode 100644 index 0000000..e264d2f --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/sk_SK.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "ticks", "Months_interval": "Months", "Percent_input": "Percent", "in_dates": "in", "roclen1_input": "roclen1", "OSC_input": "OSC", "Volume_study": "Volume", "Lips_input": "Lips", "Base Line_input": "Base Line", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "Bollinger Bands", "Upper_input": "Upper", "Sig_input": "Sig", "Count_input": "Count", "OnBalanceVolume_input": "OnBalanceVolume", "Cross_chart_type": "Cross", "H_in_legend": "H", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Accumulation/Distribution", "Rate Of Change_study": "Rate Of Change", "Color 7_input": "Color 7", "Chop Zone_study": "Chop Zone", "Oscillator_input": "Oscillator", "yay Color 0_input": "yay Color 0", "CRSI_study": "CRSI", "Chande Kroll Stop_study": "Chande Kroll Stop", "Hours_interval": "Hours", "Money Flow_study": "Money Flow", "DEMA_input": "DEMA", "Linear Regression Curve_study": "Linear Regression Curve", "Symbol_input": "Symbol", "increment_input": "increment", "smoothD_input": "smoothD", "RSI Source_input": "RSI Source", "Ichimoku Cloud_study": "Ichimoku Cloud", "Mass Index_study": "Mass Index", "Smoothing_input": "Smoothing", "Color 3_input": "Color 3", "Jaw Length_input": "Jaw Length", "Keltner Channels_study": "Keltner Channels", "Bands style_input": "Bands style", "Momentum_study": "Momentum", "MF_input": "MF", "Fast length_input": "Fast length", "W_interval_short": "W", "Equality Line_input": "Equality Line", "Short_input": "Short", "Down fractals_input": "Down fractals", "smalen2_input": "smalen2", "isCentered_input": "isCentered", "Klinger Oscillator_study": "Klinger Oscillator", "SMI Ergodic Indicator/Oscillator_study": "SMI Ergodic Indicator/Oscillator", "No Overlapping Labels_scale_menu": "No Overlapping Labels", "Chande MO_input": "Chande MO", "jawLength_input": "jawLength", "TRIX_study": "TRIX", "RVGI_input": "RVGI", "signalLength_input": "signalLength", "d_dates": "d", "Source_compare": "Source", "Correlation Coefficient_study": "Correlation Coefficient", "lipsLength_input": "lipsLength", "Short Length_input": "Short Length", "teethLength_input": "teethLength", "Visible Range_study": "Visible Range", "Connors RSI_study": "Connors RSI", "MA Cross_study": "MA Cross", "Signal line period_input": "Signal line period", "Price Volume Trend_study": "Price Volume Trend", "F_data_mode_forbidden_letter": "F", "Long RoC Length_input": "Long RoC Length", "Length3_input": "Length3", "+DI_input": "+DI", "MACD_study": "MACD", "%s ago_time_range": "%s ago", "Level_input": "Level", "Commodity Channel Index_study": "Commodity Channel Index", "Elder's Force Index_input": "Elder's Force Index", "Aroon_study": "Aroon", "h_dates": "h", "SMALen1_input": "SMALen1", "P_input": "P", "SMALen3_input": "SMALen3", "Average Directional Index_study": "Average Directional Index", "Fr_day_of_week": "Fr", "D_input": "D", "p_input": "p", "orders_up to ... orders": "orders", "Dot_hotkey": "Dot", "Lead 2_input": "Lead 2", "Vortex Indicator_study": "Vortex Indicator", "Plots Background_study": "Plots Background", "Price Channel_study": "Price Channel", "R_data_mode_realtime_letter": "R", "Conversion Line_input": "Conversion Line", "Su_day_of_week": "Su", "Up fractals_input": "Up fractals", "Double EMA_study": "Double EMA", "Price Oscillator_study": "Price Oscillator", "Th_day_of_week": "Th", "Average True Range_study": "Average True Range", "Max value_input": "Max value", "MA Length_input": "MA Length", "in %s_time_range": "in %s", "UpperLimit_input": "UpperLimit", "sym_input": "sym", "DI Length_input": "DI Length", "SMI_input": "SMI", "Basis_input": "Basis", "Moving Average_study": "Moving Average", "lengthStoch_input": "lengthStoch", "Smoothed Moving Average_study": "Smoothed Moving Average", "Lower Band_input": "Lower Band", "VI +_input": "VI +", "Lead 1_input": "Lead 1", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "Simple ma(signal line)", "Color 6_input": "Color 6", "Value_input": "Value", "Chaikin Oscillator_study": "Chaikin Oscillator", "ASI_study": "ASI", "Awesome Oscillator_study": "Awesome Oscillator", "Bollinger Bands Width_input": "Bollinger Bands Width", "Signal Length_input": "Signal Length", "D_interval_short": "D", "Color 1_input": "Color 1", "Moving Average Weighted_study": "Moving Average Weighted", "Short period_input": "Short period", "Fisher_input": "Fisher", "Volume Oscillator_study": "Volume Oscillator", "S_data_mode_snapshot_letter": "S", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "Upper Deviation", "Accumulative Swing Index_study": "Accumulative Swing Index", "Move_input": "Move", "NV_input": "NV", "Choppiness Index_study": "Choppiness Index", "Length MA_input": "Length MA", "percent_input": "percent", "Length_input": "Length", "Accumulation/Distribution_input": "Accumulation/Distribution", "C_in_legend": "C", "Weeks_interval": "Weeks", "smoothK_input": "smoothK", "Percentage_scale_menu": "Percentage", "MOM_input": "MOM", "h_interval_short": "h", "TRIX_input": "TRIX", "Periods_input": "Periods", "Histogram_input": "Histogram", "StdDev_input": "StdDev", "EMA Cross_study": "EMA Cross", "Relative Strength Index_study": "Relative Strength Index", "-DI_input": "-DI", "short_input": "short", "RSI_input": "RSI", "Zig Zag_study": "Zig Zag", "Detrended Price Oscillator_input": "Detrended Price Oscillator", "length_input": "length", "roclen4_input": "roclen4", "Add Symbol_compare_or_add_symbol_dialog": "Add Symbol", "Slow length_input": "Slow length", "Conversion Line Periods_input": "Conversion Line Periods", "TEMA_input": "TEMA", "q_input": "q", "Advance/Decline_study": "Advance/Decline", "Ultimate Oscillator_study": "Ultimate Oscillator", "Growing_input": "Growing", "Plot_input": "Plot", "Color 8_input": "Color 8", "Bollinger Bands Width_study": "Bollinger Bands Width", "roclen3_input": "roclen3", "Overbought_input": "Overbought", "DPO_input": "DPO", "Relative Vigor Index_study": "Relative Vigor Index", "Tu_day_of_week": "Tu", "Period_input": "Period", "Trigger_input": "Trigger", "SigLen_input": "SigLen", "Color 2_input": "Color 2", "MA/EMA Cross_study": "MA/EMA Cross", "Williams Alligator_study": "Williams Alligator", "ROCLen1_input": "ROCLen1", "M_interval_short": "M", "Chaikin Oscillator_input": "Chaikin Oscillator", "Zero Line_input": "Zero Line", "Increment_input": "Increment", "Days_interval": "Days", "Net Volume_study": "Net Volume", "m_dates": "m", "length14_input": "length14", "Color 0_input": "Color 0", "maximum_input": "maximum", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "fastLength_input": "fastLength", "Historical Volatility_study": "Historical Volatility", "Use Lower Deviation_input": "Use Lower Deviation", "Falling_input": "Falling", "Divisor_input": "Divisor", "length7_input": "length7", "Window Size_input": "Window Size", "Long Length_input": "Long Length", "%R_input": "%R", "bars_margin": "bars", "Simple ma(oscillator)_input": "Simple ma(oscillator)", "Length1_input": "Length1", "x_input": "x", "Parabolic SAR_study": "Parabolic SAR", "UO_input": "UO", "Short RoC Length_input": "Short RoC Length", "Jaw_input": "Jaw", "Coppock Curve_study": "Coppock Curve", "longlen_input": "longlen", "Moving Average Exponential_study": "Moving Average Exponential", "s_dates": "s", "Balance of Power_study": "Balance of Power", "EOM_input": "EOM", "%D_input": "%D", "Offset_input": "Offset", "HV_input": "HV", "Start_input": "Start", "ROC_input": "ROC", "Color 4_input": "Color 4", "ADX Smoothing_input": "ADX Smoothing", "We_day_of_week": "We", "MA_input": "MA", "Length2_input": "Length2", "Multiplier_input": "Multiplier", "Session Volume_study": "Session Volume", "SMI Ergodic Oscillator_input": "SMI Ergodic Oscillator", "C_data_mode_connecting_letter": "C", "SMALen4_input": "SMALen4", "yay Color 1_input": "yay Color 1", "CHOP_input": "CHOP", "Middle_input": "Middle", "WMA Length_input": "WMA Length", "Stochastic_study": "Stochastic", "Closed_line_tool_position": "Closed", "On Balance Volume_study": "On Balance Volume", "Source_input": "Source", "%K_input": "%K", "Log Scale_scale_menu": "Log Scale", "len_input": "len", "RSI Length_input": "RSI Length", "Long length_input": "Long length", "Base Line Periods_input": "Base Line Periods", "siglen_input": "siglen", "Slash_hotkey": "Slash", "lengthRSI_input": "lengthRSI", "Indicator_input": "Indicator", "Q_input": "Q", "Envelope_study": "Envelope", "show MA_input": "show MA", "O_in_legend": "O", "useTrueRange_input": "useTrueRange", "Minutes_interval": "Minutes", "deviation_input": "deviation", "long_input": "long", "VWMA_study": "VWMA", "Displacement_input": "Displacement", "Chaikin Money Flow_study": "Chaikin Money Flow", "Ease Of Movement_study": "Ease Of Movement", "Oversold_input": "Oversold", "Williams %R_study": "Williams %R", "depth_input": "depth", "VWAP_study": "VWAP", "Long period_input": "Long period", "Mo_day_of_week": "Mo", "ROC Length_input": "ROC Length", "X_input": "X", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "Aroon Down", "Limit_input": "Limit", "smalen1_input": "smalen1", "Color based on previous close_input": "Color based on previous close", "Price_input": "Price", "Relative Volatility Index_study": "Relative Volatility Index", "PVT_input": "PVT", "Hull Moving Average_study": "Hull Moving Average", "Zero_input": "Zero", "Stochastic Length_input": "Stochastic Length", "mult_input": "mult", "Signal smoothing_input": "Signal smoothing", "E_data_mode_end_of_day_letter": "E", "Stochastic RSI_study": "Stochastic RSI", "K_input": "K", "ROCLen3_input": "ROCLen3", "Signal_input": "Signal", "Moving Average Channel_study": "Moving Average Channel", "Lower_input": "Lower", "Elder's Force Index_study": "Elder's Force Index", "Bollinger Bands %B_study": "Bollinger Bands %B", "Donchian Channels_study": "Donchian Channels", "Upper Band_input": "Upper Band", "start_input": "start", "Short length_input": "Short length", "Triple EMA_study": "Triple EMA", "Lagging Span 2 Periods_input": "Lagging Span 2 Periods", "Teeth_input": "Teeth", "exponential_input": "exponential", "Directional Movement_study": "Directional Movement", "roclen2_input": "roclen2", "Chande Momentum Oscillator_study": "Chande Momentum Oscillator", "Bollinger Bands %B_input": "Bollinger Bands %B", "Lips Length_input": "Lips Length", "Use Upper Deviation_input": "Use Upper Deviation", "L_in_legend": "L", "shortlen_input": "shortlen", "Exponential_input": "Exponential", "Long_input": "Long", "ADR_B_input": "ADR_B", "length28_input": "length28", "Arnaud Legoux Moving Average_study": "Arnaud Legoux Moving Average", "Least Squares Moving Average_study": "Least Squares Moving Average", "Hull MA_input": "Hull MA", "Median_input": "Median", "Correlation_input": "Correlation", "UpDown Length_input": "UpDown Length", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "slowLength", "Sa_day_of_week": "Sa", "RVI_input": "RVI", "Centered_input": "Centered", "True Strength Indicator_study": "True Strength Indicator", "smalen3_input": "smalen3", "Fisher Transform_study": "Fisher Transform", "Length EMA_input": "Length EMA", "Teeth Length_input": "Teeth Length", "MA with EMA Cross_study": "MA with EMA Cross", "ParabolicSAR_input": "ParabolicSAR", "MACD_input": "MACD", "Open_line_tool_position": "Open", "Lagging Span_input": "Lagging Span", "ADX smoothing_input": "ADX smoothing", "Detrended Price Oscillator_study": "Detrended Price Oscillator", "Color 5_input": "Color 5", "McGinley Dynamic_study": "McGinley Dynamic", "auto_scale": "auto", "VWMA_input": "VWMA", "Lower Deviation_input": "Lower Deviation", "ATR_input": "ATR", "Shapes_input": "Shapes", "ADX_input": "ADX", "Crosses_input": "Crosses", "KST_input": "KST", "LowerLimit_input": "LowerLimit", "Know Sure Thing_study": "Know Sure Thing", "Aroon Up_input": "Aroon Up", "Fixed Range_study": "Fixed Range", "Williams Fractal_study": "Williams Fractal"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/sv.json b/static/Kline/charting_library/static/localization/translations/sv.json new file mode 100644 index 0000000..ca1ec0c --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/sv.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "ticks", "Months_interval": "Months", "Percent_input": "パーセント", "RSI Length_input": "RSI Length", "in_dates": "in", "roclen1_input": "roclen1", "OSC_input": "OSC", "Volume_study": "Volume", "Lips_input": "Lips", "Base Line_input": "Base Line", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "Bollinger Bands", "Upper_input": "Upper", "Sig_input": "Sig", "Count_input": "Count", "Industry": "Bransch", "OnBalanceVolume_input": "オンバランスボリューム", "Cross_chart_type": "Cross", "H_in_legend": "H", "R_data_mode_replay_letter": "R", "Value_input": "Value", "Accumulation/Distribution_study": "Accumulation/Distribution", "Rate Of Change_study": "Rate Of Change", "Color 7_input": "カラー7", "Chop Zone_study": "Chop Zone", "Oscillator_input": "オシレーター", "yay Color 0_input": "yay Color 0", "CRSI_study": "CRSI", "Chande Kroll Stop_study": "Chande Kroll Stop", "Hours_interval": "Hours", "Money Flow_study": "Money Flow", "DEMA_input": "DEMA", "Linear Regression Curve_study": "Linear Regression Curve", "Symbol_input": "シンボル", "increment_input": "increment", "Allow up to": "Tillåt upp till", "Contracts": "Kontrakt", "Any Number": "Godtycklig siffra", "smoothD_input": "smoothD", "Circle": "Cirkel", "Circles": "Cirklar", "Ichimoku Cloud_study": "Ichimoku Cloud", "Grid": "Rutnät", "Mass Index_study": "Mass Index", "Smoothing_input": "Smoothing", "Color 3_input": "カラー3", "Jaw Length_input": "Jaw Length", "Keltner Channels_study": "Keltner Channels", "Bands style_input": "バンドスタイル", "Momentum_study": "Momentum", "MF_input": "MF", "m_dates": "m", "Fast length_input": "Fast length", "W_interval_short": "W", "Equality Line_input": "Equality Line", "Short_input": "Short", "Down fractals_input": "Down fractals", "smalen2_input": "smalen2", "isCentered_input": "isCentered", "Border": "Kant", "Klinger Oscillator_study": "Klinger Oscillator", "Absolute": "Absolut", "SMI Ergodic Indicator/Oscillator_study": "SMI Ergodic Indicator/Oscillator", "No Overlapping Labels_scale_menu": "No Overlapping Labels", "Chande MO_input": "Chande MO", "jawLength_input": "jawLength", "TRIX_study": "TRIX", "RVGI_input": "RVGI", "signalLength_input": "signalLength", "d_dates": "d", "August": "Augusti", "Source_compare": "Source", "Correlation Coefficient_study": "Correlation Coefficient", "Delayed": "Försenad", "lipsLength_input": "lipsLength", "Short Length_input": "Short Length", "teethLength_input": "teethLength", "Visible Range_study": "Visible Range", "Hong Kong": "Hongkong", "October": "Oktober", "Long_input": "Long", "MA Cross_study": "MA Cross", "Signal line period_input": "Signal line period", "Line Break": "Radbrytning", "Price Volume Trend_study": "Price Volume Trend", "F_data_mode_forbidden_letter": "F", "Long RoC Length_input": "Long RoC Length", "Length3_input": "長さ3", "+DI_input": "+DI", "MACD_study": "MACD", "%s ago_time_range": "%s ago", "Level_input": "レベル", "Commodity Channel Index_study": "Commodity Channel Index", "Elder's Force Index_input": "Elder's Force Index", "Currency": "Valuta", "Fundamentals": "Fundamentalt", "Aroon_study": "Aroon", "Active Symbol": "Aktiv symbol", "Lead 1_input": "Lead 1", "SMALen1_input": "SMALen1", "P_input": "P", "SMALen3_input": "SMALen3", "Average Directional Index_study": "Average Directional Index", "Fr_day_of_week": "Fr", "Curve": "Kurva", "D_input": "D", "Change Interval": "Ändra intervall", "p_input": "p", "Dot": "Punkt", "All": "Alla", "orders_up to ... orders": "orders", "Dot_hotkey": "Dot", "Lead 2_input": "Lead 2", "Vortex Indicator_study": "Vortex Indicator", "Apply": "Verkställ", "Plots Background_study": "Plots Background", "Price Channel_study": "Price Channel", "Hide": "Dölj", "Bottom": "Botten", "Down Wave C": "Ned våg C", "R_data_mode_realtime_letter": "R", "Conversion Line_input": "Conversion Line", "March": "Mars", "Su_day_of_week": "Su", "Exchange": "Börs", "Double EMA_study": "Double EMA", "Detrended Price Oscillator_study": "Detrended Price Oscillator", "Th_day_of_week": "Th", "Average True Range_study": "Average True Range", "Max value_input": "Max value", "MA Length_input": "MA Length", "in %s_time_range": "in %s", "UpperLimit_input": "UpperLimit", "sym_input": "sym", "DI Length_input": "DI Length", "SMI_input": "SMI", "Arrow": "Pil", "Basis_input": "Basis", "Moving Average_study": "Moving Average", "h_dates": "h", "Created ": "Skapad ", "Arnaud Legoux Moving Average_study": "Arnaud Legoux Moving Average", "Smoothed Moving Average_study": "Smoothed Moving Average", "Lower Band_input": "ローワーバンド", "VI +_input": "VI +", "Always Show Stats": "Visa alltid statistik", "Down Wave 4": "Ned våg 4", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "Simple ma(signal line)", " Do you really want to delete Drawing Template '{0}' ?": " Vill du verkligen ta bort ritmall '{0}'?", "Color 6_input": "カラー6", "long_input": "long", "Chaikin Oscillator_study": "Chaikin Oscillator", "Balloon": "Ballong", "Color Theme": "Färgtema", "Awesome Oscillator_study": "Awesome Oscillator", "Bollinger Bands Width_input": "Bollinger Bands Width", "Signal Length_input": "Signal Length", "D_interval_short": "D", "Color 1_input": "カラー1", "Moving Average Weighted_study": "Moving Average Weighted", "Save": "Spara", "Type": "Typ", "Short period_input": "Short period", "Change Interval...": "Ändra intervall...", "Fisher_input": "Fisher", "Volume Oscillator_study": "Volume Oscillator", "Always Visible": "Alltid synlig", "S_data_mode_snapshot_letter": "S", "Change Minutes To": "Ändra minuter till", "Change Minutes From": "Ändra minuter från", "Do not ask again": "Fråga inte igen", "Drawing Tools": "Ritverktyg", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "上偏差", "Accumulative Swing Index_study": "Accumulative Swing Index", "Move_input": "Move", "NV_input": "NV", "Choppiness Index_study": "Choppiness Index", " per contract": " per kontrakt", "Delete": "Ta bort", "Length MA_input": "Length MA", "percent_input": "percent", "Length_input": "長さ", "Median_input": "Median", "Accumulation/Distribution_input": "アキューミレーション/ ディストリビューション", "C_in_legend": "C", "Weeks_interval": "Weeks", "smoothK_input": "smoothK", "Percentage_scale_menu": "Percentage", "MOM_input": "MOM", "h_interval_short": "h", "TRIX_input": "TRIX", "Periods_input": "Periods", "Connecting": "Ansluter", "Histogram_input": "Histogram", "StdDev_input": "StdDev", "EMA Cross_study": "EMA Cross", "Conversion Line Periods_input": "Conversion Line Periods", "-DI_input": "-DI", "short_input": "short", "RSI_input": "RSI", "Date": "Datum", "Search": "Sök", "Zig Zag_study": "Zig Zag", "Actual": "Egentligt värde", "Long period_input": "Long period", "length_input": "length", "roclen4_input": "roclen4", "Add Symbol_compare_or_add_symbol_dialog": "Add Symbol", "Above Bar": "Över candlestick", "Slow length_input": "Slow length", "Sector": "Sektor", "TEMA_input": "TEMA", "q_input": "q", "Advance/Decline_study": "Advance/Decline", "Cancel": "Avbryt", "Ultimate Oscillator_study": "Ultimate Oscillator", "Growing_input": "Growing", "Angle": "Vinkel", "Plot_input": "Plot", "Color 8_input": "カラー8", "Bollinger Bands Width_study": "Bollinger Bands Width", "roclen3_input": "roclen3", "Overbought_input": "買われすぎ", "DPO_input": "DPO", "Relative Vigor Index_study": "Relative Vigor Index", "Tu_day_of_week": "Tu", "Period_input": "Period", "Trigger_input": "Trigger", "SigLen_input": "SigLen", "Price": "Pris", "Color 2_input": "カラー2", "Edit Order": "Redigera order", "RSI Source_input": "RSI Source", "MA/EMA Cross_study": "MA/EMA Cross", "Williams Alligator_study": "Williams Alligator", "ROCLen1_input": "ROCLen1", "M_interval_short": "M", "Chaikin Oscillator_input": "チャイキン・オシレーター", "Zero Line_input": "Zero Line", "Increment_input": "Increment", "Days_interval": "Days", "Net Volume_study": "Net Volume", "Historical Volatility_study": "Historical Volatility", "length14_input": "length14", "High": "Högsta", "Add to favorites": "Lägg till som favorit", "Color 0_input": "カラー0", "maximum_input": "maximum", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "fastLength_input": "fastLength", "Width": "Bredd", "Use Lower Deviation_input": "Use Lower Deviation", "Falling_input": "Falling", "Divisor_input": "Divisor", "Down Wave 1 or A": "Ned våg 1 eller A", "length7_input": "length7", "Window Size_input": "Window Size", "Long Length_input": "Long Length", "%R_input": "%R", "Chart Properties": "Diagramegenskaper", "bars_margin": "bars", "Simple ma(oscillator)_input": "Simple ma(oscillator)", "Length1_input": "長さ1", "Always Invisible": "Alltid osynlig", "Days": "Dagar", "x_input": "x", "Parabolic SAR_study": "Parabolic SAR", "UO_input": "UO", "Short RoC Length_input": "Short RoC Length", "Jaw_input": "Jaw", "Coppock Curve_study": "Coppock Curve", "longlen_input": "longlen", "Moving Average Exponential_study": "Moving Average Exponential", "s_dates": "s", "Balance of Power_study": "Balance of Power", "EOM_input": "EOM", "Indicators": "Indikatorer", "%D_input": "%D", "Offset_input": "Offset", "HV_input": "HV", "Start_input": "Start", "ROC_input": "ROC", "Color 4_input": "カラー4", "Angles": "Vinklar", "Hollow Candles": "Ihåliga candlesticks", "July": "Juli", "lengthStoch_input": "lengthStoch", "ADX Smoothing_input": "ADX Smoothing", "Settings": "Inställningar", "Candles": "Candlesticks", "We_day_of_week": "We", "MA_input": "MA", "Length2_input": "長さ2", "Multiplier_input": "Multiplier", "Session Volume_study": "Session Volume", "Up fractals_input": "Up fractals", "Add Symbol": "Lägg till symbol", "C_data_mode_connecting_letter": "C", "SMALen4_input": "SMALen4", "yay Color 1_input": "yay Color 1", "CHOP_input": "CHOP", "Middle_input": "Middle", "WMA Length_input": "WMA Length", "Low": "Lägsta", "Closed_line_tool_position": "Closed", "Columns": "Kolumner", "Change Resolution": "Ändra upplösning", "Degree": "Grad", "On Balance Volume_study": "On Balance Volume", "Source_input": "Source", "Change Seconds To": "Ändra sekunder till", "%K_input": "%K", "Log Scale_scale_menu": "Log Scale", "Price Oscillator_study": "Price Oscillator", "len_input": "len", "Add To Text Notes": "Lägg till bland anteckningar", "Long length_input": "Long length", "Base Line Periods_input": "Base Line Periods", "Relative Strength Index_study": "Relative Strength Index", "siglen_input": "siglen", "Slash_hotkey": "Slash", "lengthRSI_input": "lengthRSI", "SMI Ergodic Oscillator_input": "SMI Ergodic Oscillator", "Indicator_input": "Indicator", "Athens": "Aten", "Q_input": "Q", "Content": "Innehåll", "Down Wave 2 or B": "Ned våg2 eller B", "Line": "Rad", "Envelope_study": "Envelope", "show MA_input": "show MA", "O_in_legend": "O", "useTrueRange_input": "useTrueRange", "Minutes_interval": "Minutes", "Copy": "Kopierad", "deviation_input": "偏差", "Base currency": "Basvaluta", "VWMA_study": "VWMA", "Displacement_input": "Displacement", "Chaikin Money Flow_study": "Chaikin Money Flow", "Ease Of Movement_study": "Ease Of Movement", "Oversold_input": "売られすぎ", "Williams %R_study": "Williams %R", "depth_input": "depth", "VWAP_study": "VWAP", "Detrended Price Oscillator_input": "Detrended Price Oscillator", "Mo_day_of_week": "Mo", "ROC Length_input": "ROC Length", "X_input": "X", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "アルーン・ダウン", "Add To Watchlist": "Lägg till i watchlist", "Total": "Totalt", "Clone": "Klona", "Limit_input": "Limit", "Change Days To": "Ändra dagar till", "smalen1_input": "smalen1", "Color based on previous close_input": "Color based on previous close", "Price_input": "Price", "Relative Volatility Index_study": "Relative Volatility Index", "PVT_input": "PVT", "Hull Moving Average_study": "Hull Moving Average", "Zero_input": "ゼロ", "Stochastic Length_input": "Stochastic Length", "mult_input": "mult", "Signal smoothing_input": "Signal smoothing", "E_data_mode_end_of_day_letter": "E", "Double Curve": "Dubbel kurva", "Stochastic RSI_study": "Stochastic RSI", "Error:": "Fel:", "Add Text Note For {0}": "Lägg till anteckning för {0}", "K_input": "K", "ROCLen3_input": "ROCLen3", "New Zealand": "Nya Zeeland", "Signal_input": "Signal", "Moving Average Channel_study": "Moving Average Channel", "Show": "Visa", "Lower_input": "低", "Arc": "Båge", "Elder's Force Index_study": "Elder's Force Index", "Stochastic_study": "Stochastic", "Bollinger Bands %B_study": "Bollinger Bands %B", "Donchian Channels_study": "Donchian Channels", "Upper Band_input": "アッパーバンド", "start_input": "スタート", "Short length_input": "Short length", "Triple EMA_study": "Triple EMA", "Technical Analysis": "Teknisk analys", "Channel": "Trendkanal", "Lagging Span 2 Periods_input": "Lagging Span 2 Periods", "Teeth_input": "Teeth", "exponential_input": "exponential", "Directional Movement_study": "Directional Movement", "roclen2_input": "roclen2", "Chande Momentum Oscillator_study": "Chande Momentum Oscillator", "Bollinger Bands %B_input": "ボリンジャーバンド%B", "Change Hours To": "Ändra timmar till", "Lips Length_input": "Lips Length", "Use Upper Deviation_input": "Use Upper Deviation", "L_in_legend": "L", "shortlen_input": "shortlen", "Copied to clipboard": "Koppierad till klippbricka", "Bar's Style": "Diagramtyp", "Exponential_input": "Exponential", "Down Wave 5": "Ned våg 5", "Comment": "Kommentera", "Connors RSI_study": "Connors RSI", "Bars": "Candlesticks", "Change Seconds From": "Ändra sekunder från", "ADR_B_input": "ADR_B", "Timezone": "Tidszon", "Down Wave 3": "Ned våg 3", "ATR Length": "Längd för ATR", "Change Symbol...": "Ändra tickersymbol...", "June": "Juni", "length28_input": "length28", "ABCD Pattern": "ABCD-mönster", "Add": "Lägg till", "Least Squares Moving Average_study": "Least Squares Moving Average", "Chart Layout Name": "Ändra layoutnamn", "Hull MA_input": "Hull MA ", "Arcs": "Bågar", "Correlation_input": "Correlation", "Add {0} To Watchlist": "Lägg till {0} i watchlist", "UpDown Length_input": "UpDown Length", "ASI_study": "ASI", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "slowLength", "January": "Januari", "Sa_day_of_week": "Sa", "Error": "Fel", "Edit Position": "Redigera position", "RVI_input": "RVI", "Centered_input": "Centered", "True Strength Indicator_study": "True Strength Indicator", "smalen3_input": "smalen3", "Compare": "Jämför", "Fisher Transform_study": "Fisher Transform", "Length EMA_input": "Length EMA", "Teeth Length_input": "Teeth Length", "MA with EMA Cross_study": "MA with EMA Cross", "Close": "Stäng", "ParabolicSAR_input": "パラボリックSAR", "MACD_input": "MACD", "Do not show this message again": "Visa inte meddelande igen", "Open_line_tool_position": "Open", "Lagging Span_input": "Lagging Span", "ADX smoothing_input": "ADX smoothing", "May": "Maj", "Are you sure?": "Är du säker?", "Color 5_input": "カラー5", "McGinley Dynamic_study": "McGinley Dynamic", "auto_scale": "auto", "Background": "Bakgrund", "% of equity": "% av kapital", "VWMA_input": "VWMA", "Lower Deviation_input": "低偏差", "ATR_input": "ATR", "February": "Februari", "Shapes_input": "Shapes", "ADX_input": "ADX", "Crosses_input": "Crosses", "KST_input": "KST", "LowerLimit_input": "LowerLimit", "Know Sure Thing_study": "Know Sure Thing", "Compare...": "Jämför...", "Color": "Färg", "Aroon Up_input": "アルーン・アップ", "Fixed Range_study": "Fixed Range", "Williams Fractal_study": "Williams Fractal"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/th.json b/static/Kline/charting_library/static/localization/translations/th.json new file mode 100644 index 0000000..67fc9ea --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/th.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "ticks", "Months_interval": "Months", "Percent_input": "Percent", "Callout": "กล่องคำพูด", "month": "เดือน", "London": "ลอนดอน", "roclen1_input": "roclen1", "Percents": "เปอร์เซ็น", "Currency": "เงินตรา", "Minor": "รอง", "Do you really want to delete Chart Layout '{0}' ?": "คุณต้องการลบชาทส์ '{0}' จริง ๆ หรือไม?", "Magnet Mode": "โหมดแม่เหล็ก", "OSC_input": "OSC", "Hide alert label line": "ซ่อนเส้นการแจ้งเตือน", "Volume_study": "ปริมาณการซื้อขาย", "Lips_input": "Lips", "Show real prices on price scale (instead of Heikin-Ashi price)": "แสดงราคาจริงบนสเกลราคา (แทนที่ราคาแบบ ไฮเก้น-อะชิ)", "Histogram": "แท่ง", "Base Line_input": "Base Line", "Step": "ขั้นบันได", "Insert Study Template": "แทรก Study Template", "Fib Time Zone": "โซนเวลาฟิโบนัชชี่", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "Bollinger Bands", "Nov": "พฤศจิกา", "Upper_input": "Upper", "exponential_input": "exponential", "Move Up": "เลื่อนขึ้น", "Scales Properties...": "ตั้งค่า Scale...", "Count_input": "Count", "Full Circles": "เต็มวงกลม", "Industry": "อุตสาหกรรม", "OnBalanceVolume_input": "OnBalanceVolume", "Cross_chart_type": "Cross", "H_in_legend": "H", "Pitchfork": "พิชฟอร์ค", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Accumulation/Distribution", "Rate Of Change_study": "Rate Of Change", "Text Font": "ขนาดตัวอักษร", "in_dates": "ใน", "Clone": "คัดลอก", "Color 7_input": "Color 7", "Chop Zone_study": "Chop Zone", "Scales Properties": "คุณสมบัติมาตราส่วน", "Remove All Indicators": "ลบดัชนีชี้วัด", "Oscillator_input": "Oscillator", "Last Modified": "แก้ไขล่าสุด", "yay Color 0_input": "yay Color 0", "CRSI_study": "CRSI", "Chande Kroll Stop_study": "Chande Kroll Stop", "Hours_interval": "Hours", "Allow up to": "อนุญาติให้ขึ้นถึง", "Scale Right": "Scale ขวา", "Money Flow_study": "Money Flow", "siglen_input": "siglen", "Indicator Labels": "ชื่ออินดิเคเตอร์", "Toggle Percentage": "สลับเป็นเปอร์เซ็นต์", "Remove All Drawing Tools": "ลบรูปวาดทั้งหมด", "Remove all line tools for ": "ลบเครื่องมือที่เกียวกับเส้นทั้งหมดเพื่อ ", "Linear Regression Curve_study": "Linear Regression Curve", "Symbol_input": "Symbol", "increment_input": "increment", "Compare or Add Symbol...": "เปรียบเทียบ หรือ เพิ่ม...", "Number Of Line": "จำนวนเส้น", "Contracts": "สัญญา", "second": "วินาที", "Change Hours To": "เปลี่ยนชั่วโมงเป็น", "smoothD_input": "smoothD", "Falling_input": "Falling", "X_input": "X", "Percentage": "เปอร์เซ็นต์", "UpperLimit_input": "UpperLimit", "Entry price:": "ราคาเข้าซื้อ", "Circles": "กลม", "Ichimoku Cloud_study": "Ichimoku Cloud", "Signal smoothing_input": "Signal smoothing", "Toggle Log Scale": "สลับเป็นมาตราแบบล๊อก", "Apply Elliot Wave Major": "ใช้คลื่นอีเลียดหลัก", "Grid": "ตาราง", "Apply Elliot Wave Minor": "ใช้คลื่นอีเลียดรอง", "Rename...": "เปลี่ยนชื่อ...", "Smoothing_input": "Smoothing", "Color 3_input": "Color 3", "Jaw Length_input": "Jaw Length", "Inside": "ภายใน", "Delete all drawing for this symbol": "ลบทั้งหมดของสัญลักษณ์นี้", "Fundamentals": "ข้อมูลพื้นฐานเศรษฐกิจ และ อื่นๆ", "Keltner Channels_study": "Keltner Channels", "Long Position": "สถานะ Long", "Bands style_input": "Bands style", "Undo {0}": "ย้อนกลับ", "With Markers": "แสดงจุด", "Momentum_study": "Momentum", "MF_input": "MF", "Switch to the next chart": "เปลี่ยนไปชาร์ตถัดไป", "charts by TradingView": "ชาร์ตโดยเทรดดิ้งวิว", "Fast length_input": "Fast length", "Apply Elliot Wave": "ใช้คลื่นอีเลียด", "W_interval_short": "W", "Show Only Future Events": "แสดงเฉพาะเหตุการณ์ในอนาคตเท่านั้น", "Log Scale": "สเกลแบบค่าLog", "Equality Line_input": "Equality Line", "Short_input": "Short", "Line": "เส้น", "Down fractals_input": "Down fractals", "Fib Retracement": "การปรับฐานฟิโบนัคชี", "smalen2_input": "smalen2", "isCentered_input": "isCentered", "Border": "เส้นขอบ", "Klinger Oscillator_study": "Klinger Oscillator", "Absolute": "แน่นอน", "Style": "รูปแบบ", "Show Left Scale": "แสดงสเกลด้านซ้าย", "SMI Ergodic Indicator/Oscillator_study": "SMI Ergodic Indicator/Oscillator", "Aug": "สิงหา", "Last available bar": "แท่งราคาสุดท้ายทีมีให้", "Manage Drawings": "จัดการรูปวาด", "Analyze Trade Setup": "ตั้งค่าวิเคราะห์การเทรด", "No drawings yet": "ไม่มีรูปวาด", "Chande MO_input": "Chande MO", "jawLength_input": "jawLength", "TRIX_study": "TRIX", "Show Bars Range": "แสดงช่วงราคา", "RVGI_input": "RVGI", "Last edited ": "แก้ไขครั้งก่อน ", "signalLength_input": "signalLength", "Reset Settings": "รีเซ็ทการตั้งค่าใหม่", "d_dates": "d", "Point & Figure": "พ้อยท์และฟิกเกอร์", "August": "สิงหาคม", "Copy": "คัดลอก", "Source_compare": "แหล่งข้อมูล", "Down bars": "แท่งเทียนลง", "Correlation Coefficient_study": "Correlation Coefficient", "Delayed": "ล่าช้า", "Bottom Labels": "สัญลักษณ์จุดต่ำสุด", "Text color": "สีตัวอักษร", "Levels": "ระดับ", "Length_input": "Length", "Short Length_input": "Short Length", "teethLength_input": "teethLength", "Visible Range_study": "ระยะที่มองเห็นได้", "Hong Kong": "ฮ่องกง", "October": "ตุลาคม", "Lock All Drawing Tools": "ล๊อครูปวาดทั้งหมด", "Long_input": "Long", "Default": "ค่าเริ่มต้น", "Show Symbol Last Value": "แสดงค่าสุดท้ายของสัญลักษณ์", "Head & Shoulders": "หัวและไหล่", "Do you really want to delete Study Template '{0}' ?": "คุณต้องการลบต้นแบบการเรียน'{0}'จริงๆ หรือไม่?", "Favorite Drawings Toolbar": "ทูลบาร์วาดเขียนที่ชอบ", "Properties...": "ตั้งค่า...", "MA Cross_study": "MA Cross", "Square": "สี่เหลี่ยม", "Snapshot": "บันทึกภาพปัจจุบัน", "Crosshair": "เส้นร่างตัดกัน", "Signal line period_input": "Signal line period", "Previous Close Price Line": "เส้นราคาปิดก่อนหน้า", "Line Break": "เส้นตัด", "Show/Hide": "แสดง/ซ่อน", "Price Volume Trend_study": "Price Volume Trend", "Auto Scale": "Scale แบบอัตโนมัติ", "hour": "ชั่วโมง", "Delete chart layout": "ลบชาทส์", "Text": "ตัวอักษร", "F_data_mode_forbidden_letter": "F", "Apr": "เมษา", "Long RoC Length_input": "Long RoC Length", "Length3_input": "Length3", "+DI_input": "+DI", "Madrid": "มาดริด", "Use one color": "ใช้สีเดียว", "Sig_input": "Sig", "Exit Full Screen (ESC)": "ออกจากโหมดเต็มหน้าจอ(ESC)", "MACD_study": "MACD", "Show Economic Events on Chart": "แสดงปฏิทินข่าวบนชาร์ต", "%s ago_time_range": "%s ที่แล้ว", "Show Wave": "แสดงคลื่น", "Failure back color": "สีพื้นหลังความไม่สำเร็จ", "Below Bar": "ใต้แท่งราคา", "Time Scale": "สเกลเวลา", "Extend Left": "ยืดออกทางซ้าย", "Date Range": "ช่วงวันที่", "Price format is invalid.": "รูปแบบราคาไม่ถูกต้อง", "Show Price": "แสดงราคา", "Level_input": "Level", "Angles": "มุม", "Commodity Channel Index_study": "Commodity Channel Index", "Elder's Force Index_input": "Elder's Force Index", "Format": "ตั้งค่า", "Color bars based on previous close": "ให้สีของ Bars อ้างอิงจากราคาปิดของวันก่อนหน้า", "Change band background": "เปลี่ยนแถบหลัง", "Anchored Text": "ลิงค์", "Edit {0} Alert...": "แก้ไขการแจ้งเตือน {0}...", "Text:": "ตัวอักษร:", "Aroon_study": "Aroon", "Active Symbol": "สัญลักษณ์เริ่ม", "Lead 1_input": "Lead 1", "Short Position": "สถานะชอร์ท", "SMALen1_input": "SMALen1", "P_input": "P", "Apply Default": "ตั้งให้เป็นค่าเบื้องต้น", "SMALen3_input": "SMALen3", "Average Directional Index_study": "Average Directional Index", "Fr_day_of_week": "Fr", "Curve": "ดัดโค้ง", "Bars Pattern": "รูปแบบแท่ง", "D_input": "D", "Font Size": "ขนาดตัวอักษร", "Create Vertical Line": "สร้างเส้นแนวตั้ง", "p_input": "p", "Rotated Rectangle": "สี่เหลี่ยม (หมุนได้)", "Chart layout name": "ชื่อชาส์ท", "Fib Circles": "วงกลม Fib", "Apply Manual Decision Point": "ใช้การตัดสินใจด้วยมนุษย์", "Dot": "จุด", "All": "ทั้งหมด", "orders_up to ... orders": "orders", "Dot_hotkey": "จุด", "Lead 2_input": "Lead 2", "Save image": "บันทึกรูปภาพ", "Move Down": "เลื่อนลง", "Unlock": "ปลดล๊อค", "Box Size": "ขนาดกล่อง", "Navigation Buttons": "ปุ่มนำทาง", "Apply": "บันทึก", "Down Wave 3": "ลงเวฟ 3", "Plots Background_study": "Plots Background", "Fill": "เติม", "%d day": "%d days", "Hide": "ซ่อน", "Toggle Maximize Chart": "สลับเป็นชาร์ตขนาดใหญ่ที่สุด", "Scale Left": "Scale ซ้าย", "smalen3_input": "smalen3", "Down Wave C": "ลงเวฟ C", "Countdown": "นับถอยหลัง", "UO_input": "UO", "Go to Date...": "ไปที่วันที่...", "R_data_mode_realtime_letter": "R", "Extend Lines": "เส้นที่ยืด", "Conversion Line_input": "Conversion Line", "March": "มีนาคม", "Su_day_of_week": "Su", "Exchange": "ตลาดหลักทรัพย์", "Symbol Description": "คำอธิบายของสัญลักษณ์", "Double EMA_study": "Double EMA", "minute": "นาที", "All Indicators And Drawing Tools": "อินดิเคเตอร์ทั้งหมดและเครื่องมือวาด", "Sync drawings to all charts": "ซิงค์เครื่องมือวาดเขียนไปทุกชาร์ท", "Th_day_of_week": "Th", "Stay in Drawing Mode": "อยู่ในโหมดการวาดเขียน", "Dubai": "ดูไบ", "Save Chart Layout saves not just some particular chart, it saves all charts for all symbols and intervals which you are modifying while working with this Layout": "การบันทึกชาร์ทจะไม่ใช่การบันทึกเฉพาะชาร์ทใดชาร์ทหนึ่งเท่านั้น แต่จะเป็นการบันทึกชาร์ทในทุกๆสัญลักษณ์และช่วงเวลาที่คุณกำลังทำการแก้ไข ในขณะที่คุณกำลังทำงานกับแผนผังนี้อยู่", "Average True Range_study": "Average True Range", "Max value_input": "Max value", "MA Length_input": "MA Length", "in %s_time_range": "in %s", "Extend Bottom": "ยืดส่วนล่างออก", "sym_input": "sym", "DI Length_input": "DI Length", "Rome": "โรม", "SMI_input": "SMI", "Arrow": "ลูกศร", "Basis_input": "Basis", "Arrow Mark Down": "ลูกศรลง", "lengthStoch_input": "lengthStoch", "Taipei": "ไทเป", "Remove from favorites": "ลบออกจากรายการโปรด", "Show Symbol Previous Close Value": "แสดงสัญลักษณ์ราคาปิดก่อนหน้า", "Scale Series Only": "มาตราส่วนชุดข้อมูลเท่านั้น", "Simple": "ปกติ", "Arnaud Legoux Moving Average_study": "Arnaud Legoux Moving Average", "Smoothed Moving Average_study": "Smoothed Moving Average", "Lower Band_input": "Lower Band", "Do you really want to delete Drawing Template '{0}' ?": "คุณต้องการลบแบบของต้นแบบ'{0}'จริงๆ หรือไม่?", "VI +_input": "VI +", "Line Width": "ความกว้างเส้น", "Always Show Stats": "แสดงสถานะไว้ตลอด", "Down Wave 4": "ลงเวฟ 4", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "Simple ma(signal line)", "Change Interval...": "เปลี่ยนช่วง", " Do you really want to delete Drawing Template '{0}' ?": " คุณต้องการลบวัตถุต้นแบบ '{0}' จริง ๆ หรือไม่?", "Color 6_input": "Color 6", "Close message": "ปิดข้อความ", "Base currency": "อัตราแลกเปลี่ยนฐาน", "Show Drawings Toolbar": "แสดงทูลบาร์วาดเขียน", "Chaikin Oscillator_study": "Chaikin Oscillator", "Price Source": "แหล่งราคา", "Market Open": "เปิดตลาด", "Color Theme": "โทนสี", "Awesome Oscillator_study": "Awesome Oscillator", "Bollinger Bands Width_input": "Bollinger Bands Width", "long_input": "long", "Error occured while publishing": "มีความผิดพลาดเกิดขึ้นขณะพิมพ์", "Color 1_input": "Color 1", "Moving Average Weighted_study": "Moving Average Weighted", "Save": "บันทึก", "Type": "ประเภท", "Wick": "ไส้เทียน", "Short period_input": "Short period", "Load Chart Layout": "โหลดชาท", "Fisher_input": "Fisher", "This chart layout has more than 1000 drawings, which is a lot! This may negatively affect performance, storage and publishing. We recommend to remove some drawings to avoid potential performance issues.": "แผนผังชาร์ตนี้มีเครื่องมือภาพวาดต่างๆ มากกว่า 1000 ชิ้น ซึ่งมากเกินไป ทำให้อาจมีผลกระทบในด้านประสิทธิภาพการใช้งาน พื้นที่การจัดเก็บ และการเผยแพร่ข้อมูล เราแนะนำให้ท่านทำการลบเครื่องมือภาพวาดบางส่วนออก เพื่อหลีกเลี่ยงปัญหาด้านประสิทธิภาพการใช้งานที่อาจเกิดขึ้น", "Left End": "ปลายซ้าย", "%d year": "%d years", "Always Visible": "แสดงไว้ตลอด", "S_data_mode_snapshot_letter": "S", "Elliott Wave Circle": "อีเลียตเวฟวงกลม", "Earnings breaks": "รายละเอียดผลประกอบการ", "Change Minutes From": "เปลี่ยนนาทีจาก", "Do not ask again": "ห้ามถามอีก", "Displacement_input": "Displacement", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "Upper Deviation", "(H + L)/2": "(ไฮ + โลว)/2", "Copied to clipboard": "คัดลอกไปยังคลิฟบอร์ด", "Accumulative Swing Index_study": "Accumulative Swing Index", "DEMA_input": "DEMA", "Move_input": "Move", "NV_input": "NV", "Choppiness Index_study": "Choppiness Index", "My Scripts": "ต้นฉบับของผม", "Merge Down": "รวมกับด้านล่าง", " per contract": " ต่อสัญญา", "Overlay the main chart": "เพิ่มลงบนกราฟหลัก", "Screen (No Scale)": "Screen (ไม่มี Scale)", "Delete": "ลบ", "Length MA_input": "ความยาว เอ็มเอ", "percent_input": "percent", "September": "กันยายน", "{0} copy": "{0} สำเนา", "Median_input": "Median", "Accumulation/Distribution_input": "Accumulation/Distribution", "C_in_legend": "C", "Weeks_interval": "Weeks", "smoothK_input": "smoothK", "Percentage_scale_menu": "เปอร์เซ็นต์", "Change Extended Hours": "เปลี่ยนส่วนขยายชั่วโมง", "MOM_input": "MOM", "h_interval_short": "h", "Change Interval": "เปลี่ยนระยะเวลา", "Change area background": "เปลี่ยนพื้นหลัง", "Send Backward": "นำไปไว้หลังสุด", "Custom color...": "สีกำหนดเอง...", "TRIX_input": "TRIX", "Show Price Range": "แสดงช่วงราคา", "Elliott Major Retracement": "การปรับฐานหลักของอีเลียตเวฟ", "ASI_study": "ASI", "Notification": "ข้อความบอกกร่าว", "Up Wave 1 or A": "ขึ้นเวฟ 1 หรือ A", "Periods_input": "Periods", "Forecast": "คาดการณ์", "Fraction part is invalid.": "ส่วนน้อยไม่ถูกต้อง", "Connecting": "กำลังเชื่อมต่อ", "Histogram_input": "Histogram", "The Extended Trading Hours feature is available only for intraday charts": "ฟีเจอร์ช่วงเวลาการเทรดเพิ่มเติม มีเฉพาะในชาร์ตระหว่างวันเท่านั้น", "StdDev_input": "StdDev", "EMA Cross_study": "รอยตัดอีเอ็มเอ", "Conversion Line Periods_input": "Conversion Line Periods", "Oversold_input": "Oversold", "Brisbane": "บริสเบน", "Monday": "วันจันทร์", "Add Symbol_compare_or_add_symbol_dialog": "เพิ่มสัญลักษณ์", "Williams %R_study": "Williams %R", "Symbol": "สัญลักษณ์", "Go to": "ไปที่", "Please enter chart layout name": "โปรดใส่ชื่อชาท", "Mar": "มีนา", "VWAP_study": "VWAP", "Offset": "สิ่งชดเชย", "Date": "วันที่", "Format...": "ตั้งค่า...", "Search": "ค้นหา", "Zig Zag_study": "Zig Zag", "Actual": "แท้จริง", "SUCCESS": "สำเร็จ", "Long period_input": "Long period", "length_input": "length", "roclen4_input": "roclen4", "Price Line": "เส้นราคา", "Zoom Out": "ขยายออก", "Stop Level. Ticks:": "ตัดขาดทุน", "Jul": "กรกฏา", "Circle Lines": "เส้นวงกลม", "Visual Order": "ลำดับการมองเห็น", "1. Slide your finger to select location for first anchor
2. Tap anywhere to place the first anchor": "1. เลื่อนนิ้วไปยังจุดที่ต้องการ
2. แตะหน้าจอหนึ่งครั้งเป็นการยืนยัน", "Sector": "ภาค", "powered by TradingView": "สนับสนุนโดยเทรดดิ้งวิว", "Stochastic_study": "Stochastic", "Sep": "กันยา", "TEMA_input": "TEMA", "Extend Left End": "ยืดออกทางซ้ายสุด", "Advance/Decline_study": "Advance/Decline", "New York": "นิวยอร์ค", "Flag Mark": "ธง", "Drawings": "รูปวาด", "Cancel": "ยกเลิก", "Bar #": "แท่งที่่ #", "Redo": "ย้อนกลับ", "Hide Drawings Toolbar": "ซ่อนทูลบาร์วาดเขียน", "Ultimate Oscillator_study": "Ultimate Oscillator", "Growing_input": "Growing", "Angle": "มุม", "Plot_input": "Plot", "Chicago": "ชิคาโก", "Color 8_input": "Color 8", "Indicators, Fundamentals, Economy and Add-ons": "ดัชนี้ชี้วัด, พื้นฐาน, ข้อมูลเศรษฐกิจ และ อื่นๆ", "h_dates": "h", "Bollinger Bands Width_study": "Bollinger Bands Width", "roclen3_input": "roclen3", "Overbought_input": "Overbought", "Extend Top": "ยืดส่วนบนออก", "Change Minutes To": "เปลี่ยนนาทีเป็น", "No study templates saved": "ไม่ได้บันทึกเทมเพลทการเรียนรู้", "Trend Line": "เส้นแนวโน้ม", "TimeZone": "เวลา", "Circle": "วงกลม", "Tu_day_of_week": "Tu", "RSI Length_input": "RSI Length", "Triangle": "สามเหลี่ยม", "Period_input": "Period", "Watermark": "ลายน้ำ", "Trigger_input": "Trigger", "SigLen_input": "SigLen", "Extend Right": "ยืดออกทางขวา", "Color 2_input": "Color 2", "Show Prices": "แสดงราคา", "{0} chart by TradingView": "{0} ชาร์ตโดนเทรดดิ้งวิว", "Arc": "เส้นโค้ง", "Edit Order": "แก้ไขคำสั่ง", "Arrow Mark Right": "ลูกศรขวา", "Extend Alert Line": "ยืดเส้นเตือนออก", "Background color 1": "สีพื้นหลัง 1", "RSI Source_input": "RSI Source", "Close Position": "ปิดสถานะ", "Any Number": "ตัวเลขใดๆ", "Stop syncing drawing": "หยุดการซิงค์เครื่องมือวาดเขียน", "Visible on Mouse Over": "แสดงเมื่อเม้าส์ชี้อยู่ด้านบน", "MA/EMA Cross_study": "เอ็มเอ/จุดตัดอีเอ็มเอ", "Vortex Indicator_study": "Vortex Indicator", "view-only chart by {user}": "ชาร์ท เฉพาะดูได้อย่างเดียว {user}", "ROCLen1_input": "ROCLen1", "M_interval_short": "M", "Chaikin Oscillator_input": "Chaikin Oscillator", "Price Levels": "ระดับราคา", "Show Splits": "แสดงตัวแยก", "Zero Line_input": "Zero Line", "Increment_input": "Increment", "Days_interval": "Days", "Show Right Scale": "แสดงสเกลด้านขวา", "Show Alert Labels": "แสดงป้ายการแจ้งเตือน", "Historical Volatility_study": "Historical Volatility", "Lock": "ล้อค", "length14_input": "length14", "High": "สูง", "Q_input": "Q", "Date and Price Range": "ช่วงวันที่และราคา", "Polyline": "กำหนดเอง", "Lock/Unlock": "ล๊อค/ปลดล๊อค", "Price Channel_study": "ช่องทางราคา", "Symbol Last Value": "ค่าสุดท้ายของสัญลักษณ์", "Above Bar": "เหนือแท่งราคา", "Studies": "การศึกษา", "Color 0_input": "Color 0", "Add Symbol": "เพิ่มสัญลักษณ์", "maximum_input": "maximum", "Paris": "ปารีส", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "VWMA_study": "VWMA", "fastLength_input": "fastLength", "Width": "กว้าง", "Loading": "กำลังโหลด", "Template": "ต้นแบบ", "Use Lower Deviation_input": "Use Lower Deviation", "Parallel Channel": "ช่องขนาน", "Time Cycles": "วงรอบเวลา", "Divisor_input": "Divisor", "Down Wave 1 or A": "ลงเวฟ 1 หรือ A", "ROC_input": "ROC", "Dec": "ธันวา", "Ray": "ลำแสง", "Extend": "ยืดออก", "length7_input": "length7", "Bottom": "ปุ่ม", "Berlin": "เบอร์ลิน", "Undo": "ย้อนกลับ", "Window Size_input": "Window Size", "Mon": "จ.", "Reset Scale": "รีเซ็ทขนาด", "Long Length_input": "Long Length", "True Strength Indicator_study": "True Strength Indicator", "%R_input": "%R", "There are no saved charts": "ไม่มีชาร์ทที่บันทึกไว้", "Chart Properties": "ตั้งค่ากราฟ", "bars_margin": "ช่อง", "Decimal Places": "ตำแหน่งทศนิยม", "Show Indicator Last Value": "แสดงค่าสุดท้ายของอินดิเคเตอร์", "Initial capital": "เงินทุนเริ่มแรก", "Mass Index_study": "Mass Index", "More features on tradingview.com": "ฟีเจอร์มากมาย บนเทรดดิ้งวิวดอทคอม", "Objects Tree...": "ข้อมูลบนกราฟ...", "Remove Drawing Tools & Indicators": "ลบเครื่องมือวาดรูปและอินดิเคเตอร์", "Length1_input": "Length1", "Always Invisible": "ซ่อนไว้ตลอด", "Days": "วัน", "x_input": "x", "Save As...": "บันทึกเป็น...", "Parabolic SAR_study": "Parabolic SAR", "Any Symbol": "สัญลักษณ์ใดๆ", "Price Label": "ราคาล่าสุด", "Minutes": "หลายนาที", "Short RoC Length_input": "Short RoC Length", "Projection": "การคาดคะเน", "Jan": "มกรา", "Jaw_input": "Jaw", "Right": "ขวา", "Help": "ช่วยเหลือ", "Coppock Curve_study": "Coppock Curve", "Reset Chart": "รีเซ็ทกราฟ", "Marker Color": "สี จุด", "Left Axis": "แกนซ้าย", "Open": "เปิด", "YES": "ใช่", "longlen_input": "longlen", "Moving Average Exponential_study": "Moving Average Exponential", "Redo {0}": "ย้อนกลับ", "s_dates": "s", "Area": "พื้นที่", "Triangle Pattern": "รูปแบบสามเหลี่ยม", "Balance of Power_study": "Balance of Power", "EOM_input": "EOM", "Shapes_input": "Shapes", "Apply Manual Risk/Reward": "ใช้ คนกำหนด ความเสียง/ผลตอบแทน", "Sydney": "ซิดนีย์", "Indicators": "อินดิเคเตอร์", "q_input": "q", "Font Icons": "ไอคอนรูปแบบตัวอักษร", "%D_input": "%D", "Border Color": "สีขอบ", "Offset_input": "Offset", "Price Scale": "สเกลราคา", "HV_input": "HV", "Settings": "ตั้งค่า", "Start_input": "Start", "Elliott Impulse Wave (12345)": "คลื่นอีเลียตอิมพัลซิฟเวฟ (12345)", "Hours": "ชั่วโมง", "Send to Back": "นำไปไว้ข้างหลัง", "Color 4_input": "Color 4", "Los Angeles": "ลอสแองเจลิส", "Prices": "ราคา", "Hollow Candles": "แท่งเทียนแบบกลวง", "July": "กรกฎาคม", "Create Horizontal Line": "สร้างเส้นแนวนอน", "Minute": "นาที", "Cycle": "รอบ", "ADX Smoothing_input": "ADX Smoothing", "One color for all lines": "หนึ่งสีสำหรับทั้งเส้น", "m_dates": "m", "(H + L + C)/3": "(ไฮ + โลว + ปิด)/3", "Candles": "แท่งเทียน", "We_day_of_week": "We", "%d minute": "%d minutes", "Go to...": "ไปที่...", "This drawing is used in alert. If you remove the drawing, the alert will be also removed. Do you want to remove the drawing anyway?": "เครื่องมือนี้มีการกำหนดการแจ้งเตือนไว้ ถ้าคุณทำการลบเครื่องมือนี้ออกไป การแจ้งเตือนจะถูกลบโดยอัตโนมัติ คุณต้องการลบเครื่องมือนี้ใช่หรือไม่?", "Show Countdown": "แสดงการนับถอยหลัง", "Show alert label line": "แสดงเส้นการแจ้งเตือน", "Down Wave 2 or B": "ลงเวฟ 2 หรือ B", "MA_input": "MA", "Length2_input": "Length2", "not authorized": "ไม่ได้รับการอนุญาต", "Session Volume_study": "Session Volume", "Image URL": "URL รูปภาพ", "SMI Ergodic Oscillator_input": "SMI Ergodic Oscillator", "Show Objects Tree": "แสดงข้อมูล", "Price:": "ราคา:", "Bring to Front": "ส่งมาหน้าสุด", "Brush": "พู่กัน", "Not Now": "ไม่ใช้ตอนนี้", "C_data_mode_connecting_letter": "C", "SMALen4_input": "SMALen4", "Apply Default Drawing Template": "ใช้แบบฟอร์มมาตรฐานของโปรแกรม", "Save As Default": "บันทึกเป็นฉบับร่าง", "Invalid Symbol": "ข้อมูลผิดผลาด", "yay Color 1_input": "yay Color 1", "Hide Marks On Bars": "ซ่อนเครื่องหมายบนแท่งราคา", "Cancel Order": "ยกเลิกคำสั่ง", "Hide All Drawing Tools": "ซ่อนรูปวาดทั้งหมด", "WMA Length_input": "WMA Length", "Show Dividends on Chart": "แสดงเงินปันผลบนชาร์ต", "Borders": "เส้นขอบ", "Remove Indicators": "ลบอินดิเคเตอร์", "loading...": "กำลังโหลด....", "Closed_line_tool_position": "ปิด", "Rectangle": "สี่เหลี่ยม", "Change Resolution": "เปลี่ยนความละเอียด", "Up Wave 5": "ขึ้นเวฟ 5", "Degree": "องศา", " per order": " ต่อออเดอร์", "Up Wave 4": "ขึ้นเวฟ 4", "Jun": "มิถุนา", "Least Squares Moving Average_study": "Least Squares Moving Average", "Change Variance value": "เปลี่ยนค่าความแปรปรวน", "powered by ": "สนับสนุนโดย ", "Source_input": "Source", "Change Seconds To": "เปลี่ยนวินาทีเป็น", "%K_input": "%K", "Log Scale_scale_menu": "Log Scale", "Toronto": "โตรอนโต", "Please enter template name": "โปรดใส่ชื่อต้นแบบ", "Tokyo": "โตเกียว", "Events Breaks": "แจกแจงเหตุการณ์", "Months": "เดือน", "Symbol Info...": "ข้อมูลสัญลักษณ์...", "Elliott Wave Minor": "อีเลียตเวฟย่อย", "Read our blog for more info!": "อ่านบล๊อกของเราเพื่อทราบข้อมูลเพิ่มเติม!", "Measure (Shift + Click on the chart)": "เครื่องมือวัด (Shift + คลิก ลงบนกราฟ)", "Show Positions": "แสดงโพซิชั่น", "Dialog": "บทสนทนา", "Add To Text Notes": "เพิ่มไปยังโน๊ต", "Long length_input": "Long length", "Multiplier_input": "Multiplier", "Risk/Reward": "ความเสี่ยง/ผลตอบแทน", "Base Line Periods_input": "Base Line Periods", "Show Dividends": "แสดงเงินปันผล", "Relative Strength Index_study": "Relative Strength Index", "Show Earnings": "แสดงกำไร", "Elliott Triangle Wave (ABCDE)": "อีเลียตเวฟรูปแบบสามเหลี่ยม (ABCDE)", "Text Wrap": "บังคับให้ตัวหนังสืออยู่ในขอบเขตที่กำหนด", "Elliott Minor Retracement": "การปรับฐานย่อยของอีเลียตเวฟ", "DPO_input": "DPO", "Pitchfan": "พิชแฟน", "Slash_hotkey": "ขีด", "No symbols matched your criteria": "ไม่พบสัญลักษณ์ตามเกณฑ์ที่คุณกำหนด", "Icon": "ไอคอน", "lengthRSI_input": "lengthRSI", "Teeth Length_input": "Teeth Length", "Indicator_input": "Indicator", "Box size assignment method": "วิธีการให้งานโดยขนาดของกล่อง", "Open Interval Dialog": "เปิดหน้าต่างช่วงเวลา", "Shanghai": "เซี่ยงไฮ้", "Athens": "เอเธนส์", "Timezone/Sessions Properties...": "คุณสมบัติ โซนเวลา/เซสชั่น", "Content": "เนื้อหา", "middle": "กึ่งกลาง", "Intermediate": "ระยะกลาง", "Eraser": "ยางลบ", "Relative Vigor Index_study": "Relative Vigor Index", "Envelope_study": "Envelope", "Symbol Labels": "ป้ายสัญลักษณ์", "show MA_input": "show MA", "Horizontal Line": "เส้นแนวนอน", "O_in_legend": "O", "Confirmation": "การยืนยัน", "Lines:": "เส้น", "Hide Favorite Drawings Toolbar": "ซ่อนทูลบาร์วาดเขียนที่ชอบ", "Buenos Aires": "บูโนสแอเรส", "useTrueRange_input": "useTrueRange", "Bangkok": "กรุงเทพ", "Profit Level. Ticks:": "จุดขาย", "Show Date/Time Range": "แสดงวันที่/เวลา", "Level {0}": "ระดับ{0}", "Horz Grid Lines": "เส้นร่างแนวนอน", "-DI_input": "-DI", "Price Range": "ช่วงราคา", "day": "วัน", "deviation_input": "deviation", "week": "สัปดาห์", "Value_input": "Value", "Time Interval": "ช่วงเวลา", "ADX smoothing_input": "ADX smoothing", "%d hour": "%d hours", "Order size": "ขนาดคำสั่ง", "Drawing Tools": "เครื่องมือวาดแบบ", "Traditional": "ดั้งเดิม", "Chaikin Money Flow_study": "Chaikin Money Flow", "Ease Of Movement_study": "Ease Of Movement", "Defaults": "ค่าเริ่มต้น", "Interval is not applicable": "ช่วงระหว่างไม่สามารถใช้ได้", "short_input": "short", "depth_input": "depth", "RSI_input": "RSI", "Detrended Price Oscillator_input": "Detrended Price Oscillator", "Mo_day_of_week": "Mo", "center": "กึ่งกลาง", "Vertical Line": "เส้นแนวตั้ง", "Bogota": "โบโกต้า", "Show Splits on Chart": "แสดงตัวแยกบนชาร์ต", "ROC Length_input": "ROC Length", "Levels Line": "เส้นระดับ", "Events & Alerts": "เหตุการณ์ & การแจ้งเตือน", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "Aroon Down", "Add To Watchlist": "เพิ่มในรายการด่วน", "Total": "ทั้งหมด", "Price": "ราคา", "left": "ชิดซ้าย", "Lock scale": "ล้อคสเกล", "Limit_input": "Limit", "Change Days To": "เปลี่ยนวันเป็น", "Price Oscillator_study": "Price Oscillator", "smalen1_input": "smalen1", "Drawing Template '{0}' already exists. Do you really want to replace it?": "ต้นแบบ '{0}'มีอยู่แล้ว คุณต้องการเปลี่ยนหรือไม่?", "KST_input": "KST", "Extend Right End": "ยืดออกทางขวาสุด", "Color based on previous close_input": "ขึ้นอยู่กับสีที่ราคาปิดครั้งก่อนหน้า", "Price_input": "Price", "Moving Average_study": "Moving Average", "McGinley Dynamic_study": "McGinley Dynamic", "Relative Volatility Index_study": "Relative Volatility Index", "Source Code...": "ซอร์สโค้ด...", "PVT_input": "PVT", "Show Hidden Tools": "แสดงเครื่องมือที่ซ่อนไว้", "Hull Moving Average_study": "Hull Moving Average", "Symbol Prev. Close Value": "สัญลักษณ์ราคาปิดก่อนหน้า", "Bring Forward": "ส่งมาด้านหน้า", "Remove Drawing Tools": "ลบเครื่องมือวาดรูป", "Friday": "วันศุกร์", "Zero_input": "Zero", "Company Comparison": "เปรียบเทียบหลักทรัพย์", "Stochastic Length_input": "Stochastic Length", "mult_input": "mult", "Scales Text": "อักษรเส้น Scale", "E_data_mode_end_of_day_letter": "E", "Top": "บน", "No Overlapping Labels_scale_menu": "No Overlapping Labels", "Stochastic RSI_study": "Stochastic RSI", "Oops!": "อุ๊ป!", "Horizontal Ray": "รังสีแนวนอน", "Ok": "ตกลง", "Script Editor...": "ตัวแก้ไขสคริปท์", "Are you sure?": "คุณแน่ใจ ?", "Signal_input": "Signal", "Error:": "เกิดความผิดพลาด", "Fullscreen mode": "โหมดเต็มหน้าจอ", "Add Text Note For {0}": "เพิ่มโน๊ตสำหรับ {0}", "K_input": "K", "ROCLen3_input": "ROCLen3", "Text Color": "สีตัวอักษร", "Rename Chart Layout": "ตั้งชื่อแผนผังชาร์ทใหม่", "Background color 2": "สีพื้นหลัง 2", "Drawings Toolbar": "ทูลบาร์วาดเขียน", "Moving Average Channel_study": "ช่องการเคลื่อนที่เฉลี่ย", "New Zealand": "นิวซีแลนด์", "CHOP_input": "CHOP", "Apply Defaults": "ตั้งให้เป็นค่าเบื้องต้น", "% of equity": "%ของ ส่วนทุน", "Extended Alert Line": "ยืดเส้นเตือนแล้ว", "Note": "บันทึกช่วยจำ", "OK": "ยืนยัน", "like": "likes", "Show": "แสดง", "{0} bars": "{0} ช่อง", "Lower_input": "Lower", "Created ": "สร้างสรรค์แล้ว ", "Warning": "คำเตือน", "Elder's Force Index_study": "Elder's Force Index", "Show Earnings on Chart": "แสดงกำไรบนชาร์ต", "Low": "ต่ำ", "Bollinger Bands %B_study": "Bollinger Bands %B", "Time Zone": "เขตเวลา", "right": "ชิดขวา", "%d month": "%d months", "Donchian Channels_study": "Donchian Channels", "Upper Band_input": "Upper Band", "start_input": "start", "No indicators matched your criteria.": "ไม่พบดัชนีชี้วัดที่ต้องการ", "Commission": "ค่าธรรมเนียม", "Down Color": "สีของแท่งลง", "Short length_input": "Short length", "Kolkata": "โคลคาต้า", "Triple EMA_study": "Triple EMA", "Technical Analysis": "ข้อมูลทางเทคนิค", "Show Text": "แสดงตัวหนังสือ", "Channel": "ช่อง", "Lagging Span 2 Periods_input": "Lagging Span 2 Periods", "Connecting Line": "การเชื่อมต่อเส้น", "Seoul": "โซว", "bottom": "ชิดล่าง", "Teeth_input": "Teeth", "Open Manage Drawings": "เปิดหน้าต่างตัวจัดการรูปวาด", "Save New Chart Layout": "บันทึกแผนผังชาร์ทใหม่", "Fib Channel": "ช่อง Fib", "Minutes_interval": "Minutes", "Up Wave 2 or B": "ขึ้นเวฟ 2 หรือ B", "Columns": "คอลัม", "Directional Movement_study": "Directional Movement", "roclen2_input": "roclen2", "Chande Momentum Oscillator_study": "Chande Momentum Oscillator", "Not applicable": "ไม่สามารถใช้ได้", "Bollinger Bands %B_input": "Bollinger Bands %B", "Save Chart Layout": "บันทึกการจัดวางชาร์ท", "Indicator Values": "ตัวแสดงมูลค่า", "Lips Length_input": "Lips Length", "Use Upper Deviation_input": "Use Upper Deviation", "L_in_legend": "L", "Remove custom interval": "ลบช่วงเวลาที่กำหนดเอง", "shortlen_input": "shortlen", "Hide Events on Chart": "ซ่อนเหตุการณ์บนชาทส์", "Williams Alligator_study": "Williams Alligator", "Profit Background Color": "สีพื้นหลังของกำไร", "Bar's Style": "รูปแบบบาร์", "Exponential_input": "Exponential", "Down Wave 5": "ลงเวฟ 5", "Stay In Drawing Mode": "จัดให้อยู่ในโหมดวาดรูป", "Comment": "ความคิดเห็น", "Connors RSI_study": "Connors RSI", "Bars": "บาร์", "Show Labels": "แสดงข้อความกำกับ", "December": "ธันวาคม", "Lock drawings": "ล้อคแบบ", "Border color": "สีขอบ", "Change Seconds From": "เปลี่ยนวินาทีจาก", "Left Labels": "สัญลักษณ์ทางซ้าย", "Insert Indicator...": "เพิ่มดัชนี...", "ADR_B_input": "ADR_B", "Paste %s": "วาง %s", "Change Symbol...": "เปลี่ยนสัญลักษณ์...", "Timezone": "เขตเวลา", "Previous": "ก่อนหน้า", "Oct": "ตุลา", "{0} financials by TradingView": "{0} ทางการเงินโดยเทรดดิ้งวิว", "Extend Lines Left": "เส้นที่ยืดด้านซ้าย", "Feb": "กุมภา", "Transparency": "โปร่งแสง", "No": "ไม่", "June": "มิถุนายน", "Cyclic Lines": "เส้นวัฏจักร", "length28_input": "length28", "ABCD Pattern": "แพทเทิร์น ABCD", "Objects Tree": "ข้อมูล", "Add": "เพิ่ม", "Scale": "มาตราส่วน", "On Balance Volume_study": "On Balance Volume", "Apply Indicator on {0} ...": "ใส่อิดิเคเตอร์บน {0}...", "NEW": "ใหม่", "Chart Layout Name": "ชื่อชาทส์", "Up bars": "แท่งเทียนขึ้น", "Hull MA_input": "Hull MA", "Lock Scale": "ล๊อค Scale", "distance: {0}": "ระยะ: {0}", "Extended": "ยืดออกแล้ว", "log": "ล๊อก", "NO": "ไม่", "Top Margin": "ระยะห่างทางด้านบน", "Up fractals_input": "Up fractals", "Insert Drawing Tool": "เพิ่มเครื่องมือวาด", "OHLC Values": "ราคา เปิด สูง ต่ำ และปิด OHLC ของแท่งเทียน", "Correlation_input": "Correlation", "Session Breaks": "เซสชั่นเบรค", "Add {0} To Watchlist": "เพิ่ม {0} ไปยังรายการด่วน", "Anchored Note": "ข้อความ", "lipsLength_input": "lipsLength", "Apply Indicator on {0}": "ใส่อิดิเคเตอร์บน {0}", "UpDown Length_input": "UpDown Length", "November": "พฤศจิกายน", "Balloon": "กล่องคำพูด", "Background Color": "สีพื้นหลัง", "Right Axis": "แกนขวา", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "slowLength", "Click to set a point": "คลิกเพื่อสร้างจุด", "January": "มกราคม", "Failure text color": "สีตัวอักษรความไม่สำเร็จ", "Sa_day_of_week": "Sa", "Net Volume_study": "Net Volume", "Error": "ผิดพลาด", "Edit Position": "แก้ไขสถานะ", "RVI_input": "RVI", "Centered_input": "Centered", "Original": "ต้นกำเหนิด", "Left": "ซ้าย", "Simple ma(oscillator)_input": "Simple ma(oscillator)", "Compare": "เปรียบเทียบ", "Fisher Transform_study": "Fisher Transform", "Show Orders": "แสดงออเดอร์", "Zoom In": "ขยายเข้า", "Length EMA_input": "ความยาว อีเอ็มเอ", "Enter a new chart layout name": "ใส่ชื่อชาทใหม่", "Signal Length_input": "Signal Length", "FAILURE": "ล้มเหลว", "D_interval_short": "D", "MA with EMA Cross_study": "เอ็มเอกับจุดตัดอีเอ็มเอ", "Close": "ปิด", "ParabolicSAR_input": "ParabolicSAR", "MACD_input": "MACD", "Do not show this message again": "ห้ามโชว์ข้อความนี้อีก", "Up Wave 3": "ขึ้นเวฟ 3", "Arrow Mark Left": "ลูกศรซ้าย", "Slow length_input": "Slow length", "Line - Close": "เส้น-ปิด", "(O + H + L + C)/4": "(เปิด + ไฮ + โลว + ปิด)/4", "Confirm Inputs": "ยืนยันป้อนค่า", "Open_line_tool_position": "เปิด", "Lagging Span_input": "Lagging Span", "Cross": "ตัดกัน", "Mirrored": "กระจกเงา", "Vancouver": "แวนคูเวอร์", "Elliott Correction Wave (ABC)": "คลื่นอีเลียตคอเรคชั่นเวฟ (ABC)", "Error while trying to create snapshot.": "เกิดความผิดพลาดขณะที่พยามสร้างภาพถ่ายสแนปช็อท", "Templates": "ต้นแบบ", "Please report the issue or click Reconnect.": "โปรดรายงานปัญหาหรือคลิก Reconnect", "Normal": "ปกติ", "May": "พฤษภา", "Detrended Price Oscillator_study": "Detrended Price Oscillator", "Color 5_input": "Color 5", "Fixed Range_study": "ระยะคงที่", "Scale Price Chart Only": "มาตราส่วนชาร์ตราคาเท่านั้น", "auto_scale": "อัตโนมัติ", "Background": "พื้นหลัง", "Up Color": "สีของแท่งขึ้น", "Apply Elliot Wave Intermediate": "ใช้คลื่นอีเลียดระยะกลาง", "VWMA_input": "VWMA", "Lower Deviation_input": "Lower Deviation", "ATR_input": "ATR", "February": "กุมภาพันธ์", "Oops, something went wrong": "อุ๊ป!มีบางสิ่งผิดปกติ", "Add to favorites": "เพิ่มลงรายการโปรด", "Median": "ค่าเฉลี่ย", "ADX_input": "ADX", "Remove": "ลบ", "len_input": "len", "Arrow Mark Up": "ลูกศรขึ้น", "April": "เมษายน", "Extended Hours": "ยืดชั่วโมงแล้ว", "Crosses_input": "Crosses", "Middle_input": "Middle", "Sync drawing to all charts": "ซิงค์ภาพวาดไปทุกชาร์ต", "LowerLimit_input": "LowerLimit", "Know Sure Thing_study": "Know Sure Thing", "Copy Chart Layout": "คัดลอกชาทส์", "Compare...": "เปรียบเทียบ...", "1. Slide your finger to select location for next anchor
2. Tap anywhere to place the next anchor": "1. เลื่อนนิ้วไปยังจุดที่ต้องการต่อไป
2. แตะหน้าจอหนึ่งครั้งเป็นการยืนยัน", "Compare or Add Symbol": "เปรียบเทียบ หรือ เพิ่ม", "Color": "สี", "Aroon Up_input": "Aroon Up", "Singapore": "สิงค์โปร์", "Scales Lines": "เส้น Scale", "Ellipse": "วงกลม", "Up Wave C": "ขึ้นเวฟ C", "Show Distance": "แสดงระยะ", "Risk/Reward Ratio: {0}": "ความเสี่ยง/ผลตอบแทน : {0}", "Volume Oscillator_study": "Volume Oscillator", "Williams Fractal_study": "Williams Fractal", "Merge Up": "รวมกับด้านบน", "Right Margin": "ระยะห่างด้านขวา", "Moscow": "มอสโก", "Warsaw": "วอซอร์"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/tr.json b/static/Kline/charting_library/static/localization/translations/tr.json new file mode 100644 index 0000000..2eec800 --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/tr.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "tickler", "Months_interval": "Aylar", "Realtime": "Canlı", "Callout": "Belirtme", "Sync to all charts": "Tüm grafiklere eşitle", "month": "ay", "London": "Londra", "roclen1_input": "rocuznlk1", "Unmerge Down": "Aşağıdan Ayrıştır", "Percents": "Yüzdeler", "Search Note": "Not ara", "Minor": "Minör", "Do you really want to delete Chart Layout '{0}' ?": "'{0}' isimli Grafik Yerleşimini silmek istediğinizden emin misiniz?", "Quotes are delayed by {0} min and updated every 30 seconds": "Fiyatlar {0} dakika gecikmeli ve her 30 saniye yenilenir", "Magnet Mode": "Mıknatıs Modu", "Grand Supercycle": "Birkaç On Yıllık", "OSC_input": "OSC", "Hide alert label line": "Alarm etiket çizgisini gizle", "Volume_study": "İşlem Hacmi", "Lips_input": "Dudaklar", "Show real prices on price scale (instead of Heikin-Ashi price)": "Fiyat ölçeklerde gerçek fiyatları göster (Heikin-Ashi fiyatları yerine)", "Base Line_input": "Temel Çizgi", "Step": "Önlem", "Insert Study Template": "Çalışma Şablonu Ekle", "Fib Time Zone": "Fib Saat Dilimi", "SMALen2_input": "BHOUzun2", "Bollinger Bands_study": "Bollinger Bantları", "Nov": "Kas", "Show/Hide": "Göster/Gizle", "Upper_input": "Üst", "exponential_input": "üstel", "Move Up": "Yukarı Taşı", "Symbol Info": "Sembol Bilgisi", "This indicator cannot be applied to another indicator": "Bu göstergeyi başka göstergeye uygulamazsınız", "Scales Properties...": "Ölçek Özellikleri...", "Count_input": "Sayım", "Full Circles": "Tam Daireler", "Ashkhabad": "Aşkabad", "OnBalanceVolume_input": "DengeİşlemHacmi", "Cross_chart_type": "Artı", "H_in_legend": "Y", "a day": "bir gün", "Pitchfork": "Dirgen", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Birikim/Dağıtım", "Rate Of Change_study": "Değişim Oranı", "Text Font": "Yazı Tipi", "in_dates": "za", "Clone": "Klonla", "Color 7_input": "Renk 7", "Chop Zone_study": "Kaşe Alanı", "Bar #": "Çubuk No.", "Scales Properties": "Ölçek Özellikleri", "Trend-Based Fib Time": "Trend-Temeli Fib Zamanı", "Remove All Indicators": "Tüm Göstergelerı Kaldır", "Oscillator_input": "Osilatör", "Last Modified": "Son Değiştirme:", "yay Color 0_input": "yay Renk 0", "Labels": "Etiketler", "Chande Kroll Stop_study": "Chande Kroll Durdurması", "Hours_interval": "Saat", "Allow up to": "İzin verilen adet", "Scale Right": "Sağa Ölçeklendir", "Money Flow_study": "Para Akışı", "siglen_input": "siglen", "Indicator Labels": "Gösterge Etiketleri", "__specialSymbolOpen__Tomorrow at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__ Yarın __specialSymbolClose__ __dayTime__'de", "Toggle Percentage": "Yüzde Olarak Değiştir", "Remove All Drawing Tools": "Tüm Çizim Araçlarını Kaldır", "Remove all line tools for ": "Tüm çizgi araçlarını kaldır ", "Linear Regression Curve_study": "Doğrusal Regresyon Eğrisi", "Symbol_input": "Sembol", "Currency": "Döviz", "increment_input": "artım", "Compare or Add Symbol...": "Kıyasla veya Sembol Ekle...", "__specialSymbolOpen__Last__specialSymbolClose__ __dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Son__specialSymbolClose__ __dayName__ __specialSymbolOpen__ __specialSymbolClose__ __dayTime__'de", "Save Chart Layout": "Grafik Yerleşimini Sakla", "Number Of Line": "Satır sayısı", "Label": "Etiket", "Post Market": "Kapanış Sonrası", "second": "saniye", "Change Hours To": "Saatleri Değiştir", "smoothD_input": "smoothD", "Falling_input": "Düşüş", "X_input": "X", "Risk/Reward short": "Risk/Ödül satış", "UpperLimit_input": "ÜstLimit", "Donchian Channels_study": "Donchian Kanalları", "Entry price:": "Giriş fiyatı:", "Circles": "Daireler", "Head": "Baş", "Stop: {0} ({1}) {2}, Amount: {3}": "Durdurma: {0} ({1}) {2}, Tutar: {3}", "Mirrored": "İkizlenmiş", "Ichimoku Cloud_study": "Ichimoku Bulutu", "Signal smoothing_input": "Sinyal belirginleştirme", "Use Upper Deviation_input": "Üst Sapma Kullan", "Toggle Auto Scale": "Otomatik Ölçek Aç/Kapa", "Grid": "Izgara", "Triangle Down": "Alçalan Üçgen", "Apply Elliot Wave Minor": "Elliott Minör Dalgası Uygula", "Slippage": "Kayma", "Smoothing_input": "Belirginleştirme", "Color 3_input": "Renk 3", "Jaw Length_input": "Çene Uzunluğu", "Almaty": "Alma-Ata", "Inside": "İçeri", "Delete all drawing for this symbol": "Bu sembol için tüm çizimleri sil", "Fundamentals": "Temel Veriler", "Keltner Channels_study": "Keltner Kanalları", "Long Position": "Alış Pozisyonu", "Bands style_input": "Bant stili", "Undo {0}": "{0} işlemini Geri al", "With Markers": "İşaretçiler İle", "Momentum_study": "Momentum", "MF_input": "HF", "Gann Box": "Gann Kutusu", "Switch to the next chart": "Sonraki grafiğe geç", "charts by TradingView": "grafik sağlayıcı TradingView", "Fast length_input": "Hızlı uzunluk", "Apply Elliot Wave": "Elliot Dalgası Uygula", "Disjoint Angle": "Dağılma Açısı", "Supermillennium": "Super-binyılık", "W_interval_short": "H", "Show Only Future Events": "Sadece Gelecek Olayları Göster", "Log Scale": "Logaritmik Ölçek", "Line - High": "Çizgi - Yüksek", "Zurich": "Zürih", "Equality Line_input": "Eşitlik Çizgisi", "Short_input": "Kısa", "Fib Wedge": "Fib Takozu", "Line": "Çizgi", "Session": "Seans", "Down fractals_input": "Aşağı fraktallar", "Fib Retracement": "Fib Düzelmesi", "smalen2_input": "bhoUznlk2", "isCentered_input": "Merkezde mi", "Border": "Kenar", "Klinger Oscillator_study": "Klinger Osilatörü", "Absolute": "Mutlak", "Tue": "Sal", "Style": "Stil", "Show Left Scale": "Sol Ölçeği Göster", "SMI Ergodic Indicator/Oscillator_study": "SMI Ergodik Gösterge/Osilatörü", "Aug": "Ağu", "Last available bar": "Son bulunan çubuk", "Manage Drawings": "Çizimleri Yönet", "Analyze Trade Setup": "İşlem Ayarlarını Analiz et", "No drawings yet": "Henüz çizim yok", "SMI_input": "SMI", "Chande MO_input": "Chande MO", "jawLength_input": "çeneUzunluğu", "TRIX_study": "TRIX", "Show Bars Range": "Çubuk Aralıklarını Göster", "RVGI_input": "RVGI", "Last edited ": "Son düzenleme ", "signalLength_input": "sinyalUzunluk", "%s ago_time_range": "%s önce", "Reset Settings": "Ayarları Sıfırla", "PnF": "NvŞ", "d_dates": "g", "Point & Figure": "Nokta ve Şekil", "August": "Ağustos", "Recalculate After Order filled": "Emir Doldurulduktan Sonra Yeniden Hesapla", "Source_compare": "Kaynak", "Down bars": "Düşüş Çubukları", "Correlation Coefficient_study": "Korelasyon Katsayısı", "Delayed": "Gecikmeli", "Bottom Labels": "Alt Etiketler", "Text color": "Metin rengi", "Levels": "Kademeler", "Length_input": "Uzunluk", "Short Length_input": "Kısa Uzunluk", "teethLength_input": "dişUzunluğu", "Visible Range_study": "Görünür Aralık", "Open {{symbol}} Text Note": "{{symbol}} Notu Aç", "October": "Ekim", "Lock All Drawing Tools": "Tüm Çizim Araçlarını Kilitle", "Long_input": "Uzun", "Right End": "Sağ Uç", "Show Symbol Last Value": "Sembolün Son Değerini Göster", "Head & Shoulders": "Omuz Baş Omuz", "Do you really want to delete Study Template '{0}' ?": "'{0}' Çalışma Şablonunu silmek istediğinizden emin misiniz?", "Favorite Drawings Toolbar": "Favori Çizimler Araç Çubuğu", "Properties...": "Özellikler...", "Reset Scale": "Ölçeği Sıfırla", "MA Cross_study": "HO Cross", "Trend Angle": "Trend Açısı", "Snapshot": "Şipşak", "Crosshair": "Artı gösterge", "Signal line period_input": "Sinyal çizgisi periyodu", "Timezone/Sessions Properties...": "Saat Dilimi/Seans Özellikleri...", "Line Break": "Çizgi Kesme", "Quantity": "Miktar", "Price Volume Trend_study": "Fiyat Hacmi Trendi", "Auto Scale": "Otomatik ölçek", "hour": "saat", "Delete chart layout": "Grafik yerleşimini sil", "Text": "Metin", "F_data_mode_forbidden_letter": "Y", "Risk/Reward long": "Risk/Ödül alış", "Apr": "Nis", "Long RoC Length_input": "Uzun KVE Uzunluğu", "Length3_input": "Uzunluk3", "+DI_input": "+DI", "Madrid": "", "Use one color": "Tek renk kullan", "Chart Properties": "Grafik Özellikleri", "No Overlapping Labels_scale_menu": "Örtüşen Etiketler Yok", "Exit Full Screen (ESC)": "Tam Ekrandan Çık (ESC)", "MACD_study": "MACD", "Show Economic Events on Chart": "Grafikte Ekonomik Olayları Göster", "Moving Average_study": "Hareketli Ortalama", "Show Wave": "Dalgayı Göster", "Failure back color": "Arka Plan Renginde Hata", "Below Bar": "Çubuğun Altında", "Time Scale": "Zaman Ölçeği", "

Only D, W, M intervals are supported for this symbol/exchange. You will be automatically switched to a D interval. Intraday intervals are not available because of exchange policies.

": "

Bu sembolde/borsada sadeceG, H, A aralıkları kullanılabilir. Otomatik olarak G aralığına geçeceksiniz. Gün içi aralıklar borsa politikaları nedeniyle kullanılabilir durumda değildir.

", "Extend Left": "Sola Uzat", "Date Range": "Tarih Aralığı", "Min Move": "Min Taşı", "Price format is invalid.": "Fiyat biçimi geçersiz.", "Show Price": "Fiyatı Göster", "Level_input": "Seviye", "Angles": "Açılar", "Commodity Channel Index_study": "Emtia Kanal Endeksi", "Elder's Force Index_input": "Elder Kuvvet Endeksi", "Gann Square": "Gann Karesi", "Format": "Biçim", "Color bars based on previous close": "Önceki kapanışa göre çubuk rengi", "Change band background": "Bant arkaplanını değiştir", "Target: {0} ({1}) {2}, Amount: {3}": "Hedef: {0} ({1}) {2}, Tutar: {3}", "Zoom Out": "Uzaklaş", "This chart layout has a lot of objects and can't be published! Please remove some drawings and/or studies from this chart layout and try to publish it again.": "Bu grafikte çok fazşa nesneler var ve bundan dolayı grafiği yayınlayamazsınız! Lütfen birkaç çizim ve/veya başka araçları kaldırın ve tekrar deneyin.", "Anchored Text": "Yapışık Metin", "Long length_input": "Uzun uznuluğu", "Edit {0} Alert...": "{0} Alarmını Değiştir...", "Previous Close Price Line": "Önceki Kapanış Fiyatın Çizgisi", "Up Wave 5": "Yükseliş Dalgası 5", "Qty: {0}": "Mik: {0}", "Aroon_study": "Aroon", "show MA_input": "HO göster", "Industry": "Endüstri", "Lead 1_input": "Öncü 1", "Short Position": "Satış Pozisyonu", "SMALen1_input": "BHOUzun1", "P_input": "P", "Apply Default": "Varsayılanı Uygula", "SMALen3_input": "BHOUzun3", "Average Directional Index_study": "Ortalama Yönsel Endeks", "Fr_day_of_week": "Cum", "Invite-only script. Contact the author for more information.": "Sadece-davetliler komutu. Daha fazla bilgi için yazarına ulaşın.", "Curve": "Eğri", "a year": "bir yıl", "Target Color:": "Hedef Rengi:", "Bars Pattern": "Çubuk Paterni", "D_input": "D", "Font Size": "Font Boyutu", "Create Vertical Line": "Dikey Çizgi Oluştur", "p_input": "p", "Rotated Rectangle": "Döndürülmüş Dikdörtgen", "Chart layout name": "Grafik yerleşimi adı", "Fib Circles": "Fib Çemberleri", "Apply Manual Decision Point": "Elle Karar Noktası Uygula", "Dot": "Nokta", "Target back color": "Hedef arkaplan rengi", "All": "Tümü", "orders_up to ... orders": "emirler", "Dot_hotkey": "Nokta", "Lead 2_input": "Öncü 2", "Save image": "Resmi sakla", "Move Down": "Aşağı Taşı", "Triangle Up": "Yükselen Üçgen", "Box Size": "Kutu Büyüklüğü", "Navigation Buttons": "Gezinti Düğmeleri", "Miniscule": "Ufacık", "Apply": "Uygula", "Down Wave 3": "Düşüş Dalgası 3", "Plots Background_study": "Arkaplan Çizimleri", "Marketplace Add-ons": "Marketplace Eklentileri", "Sine Line": "Sinüs Çizgisi", "Fill": "Doldur", "%d day": "%d gün", "Hide": "Gizle", "Toggle Maximize Chart": "Grafik Maksimize Değiştir", "Target text color": "Hedefin metin rengi", "Scale Left": "Sola Ölçeklendir", "Elliott Wave Subminuette": "Elliott Dalgası Birkaç Dakikalık", "Color based on previous close_input": "Önceki kapanışa göre çubuk rengi", "Down Wave C": "Düşüş Dalgası C", "Countdown": "Gerisayım", "UO_input": "UO", "Pyramiding": "Piramitleme", "Source back color": "Kaynak arkaplan rengi", "Go to Date...": "Tarihe Git...", "Text Alignment:": "Metin Hizalama:", "R_data_mode_realtime_letter": "C", "Extend Lines": "Çizgileri Uzat", "Conversion Line_input": "Dönüş Çizgisi", "March": "Mart", "Su_day_of_week": "Paz", "Exchange": "Borsa", "My Scripts": "Benim Komutlarım", "Arcs": "Yaylar", "Regression Trend": "Regresyon Trendi", "Short RoC Length_input": "Kısa RoC Uzunluğu", "Fib Spiral": "Fib Spiralı", "Double EMA_study": "Çifte EMA", "minute": "dakika", "All Indicators And Drawing Tools": "Tüm Göstergeler ve Çizim Araçlar", "Indicator Last Value": "Göstergenin Son Değeri", "Sync drawings to all charts": "Çizimleri tüm grafiklere eşitle", "Change Average HL value": "Ortalama HL değerini değiştir", "Stop Color:": "Durdurma Rengi:", "Stay in Drawing Mode": "Çizim Modunda Kal", "Bottom Margin": "Alt Marj", "Dubai": "", "Save Chart Layout saves not just some particular chart, it saves all charts for all symbols and intervals which you are modifying while working with this Layout": "\"Grafik Yerleşimini Sakla\" sadece bir belirli grafiği değil, bu şablon üzerinde çalışırken değiştirdiğiniz tüm grafik, sembol ve zaman aralıklarını da saklar.", "Average True Range_study": "Ortalama Gerçek Aralık", "Max value_input": "Max değer", "MA Length_input": "HO Uzunluğu", "Invite-Only Scripts": "Sadece-Davetliler Komutları", "in %s_time_range": "%s içinde", "Extend Bottom": "Altı Uzat", "sym_input": "smbl", "DI Length_input": "YG Uzunluğu", "Rome": "Roma", "Scale": "Ölçek", "Periods_input": "Periyotlar", "Arrow": "Ok İşareti", "useTrueRange_input": "TrueRangeKullan", "Basis_input": "Temel", "Arrow Mark Down": "Aşağı Ok İşareti", "lengthStoch_input": "uzunlukStok", "Objects Tree": "Nesnelerin Ağacı", "Remove from favorites": "Favorilerimden çıkar", "Show Symbol Previous Close Value": "Sembolün Önceki Kapanış Değerini Göster", "Scale Series Only": "Sadece Serileri Ölçeklendir", "Source text color": "Kaynak metin rengi", "Simple": "Basit", "Report a data issue": "Veri hatası bildir", "Arnaud Legoux Moving Average_study": "Arnaud Legoux Hareketli Ortalama", "Smoothed Moving Average_study": "Yuvarlatılmış Hareketli Ortalama", "Lower Band_input": "Alt Bant", "Verify Price for Limit Orders": "Limit emirleri için Fiyatı Doğrula", "VI +_input": "VI +", "Line Width": "Çizgi Genişliği", "Contracts": "Kontratlar", "Always Show Stats": "İstatistikleri Daima Göster", "Down Wave 4": "Düşüş Dalgası 4", "ROCLen2_input": "ROCUzun2", "Simple ma(signal line)_input": "Basit ort(sinyal çizgisi)", "Change Interval...": "Zaman Aralığını Değiştir...", "Public Library": "Halka Açık Kitaplık", " Do you really want to delete Drawing Template '{0}' ?": " '{0}' Çizim Şablonunu silmek istediğinizden emin misiniz?", "Sat": "Cmt", "Left Shoulder": "Sol Omuz", "week": "hafta", "CRSI_study": "CRSI", "Close message": "Mesajı kapat", "Jul": "Tem", "Value_input": "Değer", "Show Drawings Toolbar": "Çizim Araç Çubuğu Göster", "Chaikin Oscillator_study": "Chaikin Osilatörü", "Price Source": "Fiyatın Kaynağı", "Market Open": "Piyasa Açık", "Color Theme": "Renk Teması", "Projection up bars": "Projeksiyon yüksek çubuklar", "Awesome Oscillator_study": "Müthiş Osilatör", "Bollinger Bands Width_input": "Bollinger Bantları Genişliği", "Q_input": "Q", "long_input": "uzun", "Error occured while publishing": "Yayınlama esnasında hata oluştu", "Fisher_input": "Fisher", "Color 1_input": "Renk 1", "Moving Average Weighted_study": "Ağırlıklı Hareketli Ortalama", "Save": "Kaydet", "Type": "Tip", "Wick": "Fitil", "Accumulative Swing Index_study": "Biriktirici Sallanma Endeksi", "Load Chart Layout": "Grafik Yerleşimini Yükle", "Show Values": "Değerleri Göster", "Fib Speed Resistance Fan": "Fib Hız Direnç Fanı", "Bollinger Bands Width_study": "Bollinger Bantları Genişliği", "This chart layout has more than 1000 drawings, which is a lot! This may negatively affect performance, storage and publishing. We recommend to remove some drawings to avoid potential performance issues.": "Bu grafik yerleşiminde 1000'den fazla çizim var, gerçekten çok! Bu durum performansı, saklamayı ve yayınlamayı olumsuz etkileyebilir. Olası performans sorunlarından sakınmak için bazı çizimleri kaldırmanızı tavsiye ediyoruz.", "Left End": "Sol Sonu", "%d year": "%d yıl", "Always Visible": "Daima Görünür", "S_data_mode_snapshot_letter": "R", "Flag": "Bayrak", "Elliott Wave Circle": "Elliott Dalga Döngüsü", "Earnings breaks": "Kazanç araları", "Change Minutes From": "Dakikaları Değiştir", "Do not ask again": "Tekrar sorma", "Displacement_input": "Yerdeğişim", "smalen4_input": "bhoUznlk4", "CCI_input": "CCI", "Upper Deviation_input": "Üst Sapma", "(H + L)/2": "(Y + D)/2", "XABCD Pattern": "XABCD Formasyonu", "Schiff Pitchfork": "Schiff Dirgeni", "Copied to clipboard": "Panoya kopyalandı", "HLC Bars": "HLC Barları", "Flipped": "Ters dönmüş", "DEMA_input": "İÜHO", "Move_input": "Hareket", "NV_input": "NV", "Choppiness Index_study": "Dalgalılık Endeksi", "Study Template '{0}' already exists. Do you really want to replace it?": "'{0}' Çalışma Şablonu zaten var.Yenisiyle değiştirmek mi istiyorsunuz?", "Merge Down": "Aşağıya doğru Birleştir", "Th_day_of_week": "Per", " per contract": "kontrat başına", "Overlay the main chart": "Ana grafiğin üstüne yerleştir", "Screen (No Scale)": "Ekran (Ölçeksiz)", "Delete": "Sil", "Save Indicator Template As": "Gösterge Şablonu Farklı Kaydet", "Length MA_input": "HO Uzunluğu", "percent_input": "yüzde", "September": "Eylül", "{0} copy": "{0} kopyala", "Avg HL in minticks": "Mintiklerde ort. HL", "Accumulation/Distribution_input": "Birikim/Dağıtım", "Sync": "Eşitle", "C_in_legend": "K", "Weeks_interval": "Haftalar", "smoothK_input": "smoothK", "Percentage_scale_menu": "Yüzde", "Change Extended Hours": "Genişletilmiş Saatleri Değiştir", "MOM_input": "MOM", "h_interval_short": "s", "Change Interval": "Zaman Aralığını Değiştir", "Change area background": "Alan arkaplanını değiştir", "Modified Schiff": "Değiştirilmiş Schiff", "top": "üst", "Adelaide": "", "Send Backward": "Geriye Gönder", "Mexico City": "Meksiko", "TRIX_input": "TRIX", "Show Price Range": "Fiyat Aralığı Göster", "Elliott Major Retracement": "Elliott Büyük Düzelme", "ASI_study": "ASI", "Notification": "Bildirim", "Fri": "Cum", "just now": "şimdi", "Forecast": "Tahmin", "Fraction part is invalid.": "Ondalık kısmı geçerisiz.", "Connecting": "Bağlanıyor", "Ghost Feed": "Hayalet Çizgiler", "Signal_input": "Sinyal", "Histogram_input": "Histogram", "The Extended Trading Hours feature is available only for intraday charts": "Uzatılmış İşlem Saatleri özelliği sadece gün içi grafiklerde kullanılabilir.", "Stop syncing": "Eşitlemeyi durdur", "open": "açılış", "StdDev_input": "StdSapma", "EMA Cross_study": "ÜHO Kesişme", "Conversion Line Periods_input": "Dönüş Çizgisi Periyodu", "Diamond": "Elmas", "Brisbane": "", "Monday": "Pazartesi", "Add Symbol_compare_or_add_symbol_dialog": "Sembol Ekle", "Williams %R_study": "Williams %R", "Symbol": "Sembol", "a month": "bir ay", "Precision": "Hassasiyet", "depth_input": "derinlik", "Go to": "Tarihe git", "Please enter chart layout name": "Lütfen grafik yerleşiminin adını yazın", "VWAP_study": "HAOF", "Offset": "Ofset", "Date": "Tarih", "Format...": "Biçim...", "__dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__dayName__ __specialSymbolOpen__ __specialSymbolClose__ __dayTime__'de", "Toggle Maximize Pane": "Genişletme Panosu Aç/Kapa", "Search": "Ara", "Zig Zag_study": "Zig Zag", "Actual": "Güncel", "SUCCESS": "BAŞARILI", "Long period_input": "Uzun süre", "length_input": "uzunluk", "roclen4_input": "rocuznlk4", "Price Line": "Fiyat Çizgisi", "Area With Breaks": "Kesmeli Alan", "Median_input": "Medyan", "Stop Level. Ticks:": "Durdurma Seviyesi. Adımlar:", "Window Size_input": "Pencere Genişliği", "Economy & Symbols": "Ekonomi & Semboller", "Circle Lines": "Dairesel Çizgiler", "Visual Order": "Görsel Sıra", "__specialSymbolOpen__Yesterday at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__ Yarın __specialSymbolClose__ __dayTime__'de", "Stop Background Color": "Durdurma Arkaplan Rengi", "1. Slide your finger to select location for first anchor
2. Tap anywhere to place the first anchor": "1. Birinci çapanın
yerini seçmek için parmağınızı kaydırın 2. Birinci çapayı koymak için herhangi bir yere tıklayın", "Sector": "Sektör", "powered by TradingView": "grafiği sağlayan TradingView", "Text:": "Metin:", "Stochastic_study": "Stokastik", "Sep": "Eyl", "TEMA_input": "TEMA", "Apply WPT Up Wave": "WPT Yükseliş Dalgası Uygula", "Min Move 2": "Min Taşı 2", "Extend Left End": "Sol Sona Uzat", "Projection down bars": "Projeksiyon düşük çubuklar", "Advance/Decline_study": "İlerleme/Gerileme", "Any Number": "Herhangi bir Numara", "Flag Mark": "Bayrak", "Drawings": "Çizimler", "Cancel": "İptal", "Compare or Add Symbol": "Kıyasla veya Sembol Ekle", "Redo": "Yinele", "Hide Drawings Toolbar": "Çizim Araç Çubuğunu Gizle", "Ultimate Oscillator_study": "Nihai Osilatör", "Vert Grid Lines": "Dikey Kılavuz Çizgileri", "Growing_input": "Büyüyen", "Angle": "Açı", "Plot_input": "Çizim", "Chicago": "Çikago", "Color 8_input": "Renk 8", "Indicators, Fundamentals, Economy and Add-ons": "Göstergeler, Temel Veriler, Ekonomi ve Eklentiler", "h_dates": "s", "ROC Length_input": "RoC Uzunluğu", "roclen3_input": "rocuznlk3", "Overbought_input": "Fazla alınmış", "Extend Top": "Üstü Uzat", "Change Minutes To": "Dakikaları Değiştir", "No study templates saved": "Saklanmış çalışma şablon yok", "Trend Line": "Trend Çizgisi", "TimeZone": "Saat Dilimi", "Your chart is being saved, please wait a moment before you leave this page.": "Grafiğinizi saklanıyor, sayfayı terketmeden önce kısa bir süre bekleyin.", "Percentage": "Yüzde", "Tu_day_of_week": "Sal", "RSI Length_input": "RSI Uzunluğu", "Triangle": "Üçgen", "Line With Breaks": "Kesme Çizgi", "Period_input": "Periyot", "Watermark": "Filigran", "Trigger_input": "Tetik", "SigLen_input": "SinUzun", "Extend Right": "Sağa Uzat", "Color 2_input": "Renk 2", "Show Prices": "Fiyatları Göster", "Unlock": "Kilidi aç", "Copy": "Kopyala", "high": "yüksek", "Arc": "Yay", "Edit Order": "Emiri Düzenle", "January": "Ocak", "Arrow Mark Right": "Sağa Ok İşareti", "Extend Alert Line": "Alarm Çizgisini Uzat", "Background color 1": "Arkaplan rengi 1", "RSI Source_input": "RSI Kaynağı", "Close Position": "Pozisyonu Kapat", "Stop syncing drawing": "Çizim eşitlemeyi durdur", "Visible on Mouse Over": "Fare Geldiğinde Görünür", "MA/EMA Cross_study": "HO/ÜHO Kesişmesi", "Thu": "Per", "Vortex Indicator_study": "Vorteks Göstergesi", "view-only chart by {user}": "{user} kullanıcısı tarafından çizilen grafik", "ROCLen1_input": "ROCUzun1", "M_interval_short": "A", "Chaikin Oscillator_input": "Chaikin Osilatörü", "Price Levels": "Fiyatın Seviyeleri", "Show Splits": "Bölünmeleri Göster", "Zero Line_input": "Sıfır Çizgisi", "__specialSymbolOpen__Today at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Bugün__specialSymbolClose__ __dayTime__'de", "Increment_input": "Artış", "Days_interval": "Gün", "Show Right Scale": "Sağ Ölçeği Göster", "Show Alert Labels": "Alarm Etiketlerini Göster", "Historical Volatility_study": "Tarihi Volatilite", "Lock": "Kilitle", "length14_input": "uzunluk14", "High": "Yüksek", "ext": "ek", "Date and Price Range": "Tarih ve Fiyat Aralığı", "Polyline": "Çoklu çizgi", "Reconnect": "Tekrar Bağlan", "Lock/Unlock": "Kilitle/Kilidi aç", "Base Level": "Temel Seviye", "Label Down": "Aşağı Etiket", "Saturday": "Cumartesi", "Symbol Last Value": "Sembol Son Değeri", "Above Bar": "Çubuğun Üzerine", "Studies": "Çalışmalar", "Color 0_input": "Renk 0", "Add Symbol": "Sembol Ekle", "maximum_input": "maksimum", "Wed": "Çar", "Paris": "", "D_data_mode_delayed_letter": "G", "Sigma_input": "Sigma", "VWMA_study": "HAHO", "fastLength_input": "hızlıUzunluk", "Time Levels": "Zaman Kademeleri", "Width": "Genişlik", "Sunday": "Pazar", "Loading": "Yüklüyor", "Template": "Şablon", "Use Lower Deviation_input": "Alt Sapma Kullan", "Up Wave 3": "Yükseliş Dalgası 3", "Parallel Channel": "Paralel Kanal", "Time Cycles": "Zaman Döngüleri", "Second fraction part is invalid.": "İkinci ondalık kısmı geçersiz.", "Divisor_input": "Bölen", "Baseline": "Temel Çizgi", "Down Wave 1 or A": "Düşüş Dalgası 1 veya A", "ROC_input": "ROC", "Dec": "Ara", "Ray": "Işın", "Extend": "Uzat", "length7_input": "uzunluk7", "Bring Forward": "Öne getir", "Bottom": "Alt", "Berlin": "", "Undo": "Geri al", "Original": "Orjinal", "Mon": "Pzt", "Right Labels": "Sağ Etiketler", "Long Length_input": "Uzun Uzunluğu", "True Strength Indicator_study": "Gerçek Güç Göstergesi", "%R_input": "%R", "There are no saved charts": "Saklanmış grafikleriniz yoktur.", "Instrument is not allowed": "Bu araç kullanmaz", "bars_margin": "çubuklar", "Decimal Places": "Ondalık Basamaklar", "Show Indicator Last Value": "Gösterge Son Değerini Göster", "Initial capital": "ilk marj", "Show Angle": "Açıyı Göster", "Mass Index_study": "Kütle Endeksi", "More features on tradingview.com": "tradingview.com'da daha fazla özellik", "Objects Tree...": "Nesnelerin Ağacı...", "Remove Drawing Tools & Indicators": "Çizim Araçları ve Göstergeleri Kaldır", "Length1_input": "Uzunluk1", "Always Invisible": "Daima Görünmez", "Circle": "Daire", "Days": "Günler", "x_input": "x", "Save As...": "Yeni Adla Sakla...", "Elliott Double Combo Wave (WXY)": "Elliott İkili Kombo Dalgası (WXY)", "Parabolic SAR_study": "Parabolik SAR", "Any Symbol": "Herhangi bir Sembol", "Variance": "Varyans", "Stats Text Color": "İstatistik Metin Rengi", "Minutes": "Dakika", "Williams Alligator_study": "Williams Gator", "Projection": "Projeksiyon", "Custom color...": "Özel renk...", "Jan": "Oca", "Jaw_input": "Çene", "Right": "Sağ", "Help": "Yardım", "Coppock Curve_study": "Coppock Eğrisi", "Reversal Amount": "Ters Miktar", "Reset Chart": "Grafiği Sıfırla", "Marker Color": "İşaretçi Rengi", "Fans": "Fanlar", "Left Axis": "Sol Eksen", "Open": "Açılış", "YES": "EVET", "longlen_input": "longlen", "Moving Average Exponential_study": "Üstel Hareketli Ortalama", "Source border color": "Kaynak kenar rengi", "Redo {0}": "{0}. Yinele", "Cypher Pattern": "Açarsöz Formasyonu", "s_dates": "ler", "Caracas": "Karakas", "Area": "Alan", "Triangle Pattern": "Üçgen Formasyonu", "Balance of Power_study": "Güç Dengesi", "EOM_input": "EOM", "Shapes_input": "Şekiller", "Oversold_input": "Fazla satılmış", "Apply Manual Risk/Reward": "Elle Risk/Ödül Uygula", "Market Closed": "Piyasa Kapalı", "Sydney": "Sidney", "Indicators": "Göstergeler", "close": "kapat", "q_input": "q", "You are notified": "Bilgililendirilmişsiniz", "Font Icons": "Font Simgeleri", "%D_input": "%D", "Border Color": "Kenarlık Rengi", "Offset_input": "Uzantı", "Replay Mode": "Tekrar Çalma Modu", "Price Scale": "Fiyat Ölçeği", "HV_input": "HV", "Seconds": "Saniye", "Settings": "Ayarlar", "Start_input": "Başlat", "Elliott Impulse Wave (12345)": "Elliott Darbe Dalgası (12345)", "Hours": "Saatler", "Send to Back": "Arkaya Gönder", "Color 4_input": "Renk 4", "Los Angeles": "", "Prices": "Fiyatlar", "Hollow Candles": "İçi Boş Mumlar", "July": "Temmuz", "Create Horizontal Line": "Yatay Çizgi Oluştur", "Minute": "Birkaç Günlük", "Cycle": "Birkaç Yıllık", "ADX Smoothing_input": "ADX Düzleştirilmiş", "One color for all lines": "Tüm çizgilere tek renk", "m_dates": "a", "(H + L + C)/3": "(Y + D + K)/3", "Candles": "Mum Grafikler", "We_day_of_week": "Çar", "Width (% of the Box)": "Genişlik (Kutudan %)", "%d minute": "%d dakika", "Go to...": "Git...", "Pip Size": "Pip Miktarı", "Wednesday": "Çarşamba", "This drawing is used in alert. If you remove the drawing, the alert will be also removed. Do you want to remove the drawing anyway?": "Bu çizimi bir alarmda kullanılıyor. Eğer bu çizimi kaldırırsınız, alarm da kaldırılmış olur. Çizim yine de kaldırmak istiyor musunuz?", "Show Countdown": "Gerisayımı Göster", "Show alert label line": "Alarm etiket çizgisini göster", "Down Wave 2 or B": "Düşüş Dalgası 2 veya B", "MA_input": "HO", "Length2_input": "Uzunluk2", "not authorized": "yetkisiz", "Session Volume_study": "Seans Hacmi", "Image URL": "Resim URL'i", "Submicro": "", "SMI Ergodic Oscillator_input": "SMI Ergodic Osilatörü", "Show Objects Tree": "Nesnelerin Ağacını Göster", "Primary": "Birkaç Aylık", "Price:": "Fiyat:", "Bring to Front": "En öne getir", "Brush": "Fırça", "Not Now": "Şimdi Değil", "Yes": "Evet", "C_data_mode_connecting_letter": "K", "SMALen4_input": "BHOUzun4", "Apply Default Drawing Template": "Varsayılan Çizim Şablonunu Uygula", "Compact": "Kompakt", "Save As Default": "Varsayılan Olarak Sakla", "Target border color": "Hedef kenar rengi", "Invalid Symbol": "Geçersiz Sembol", "Inside Pitchfork": "Dirgen İçi", "yay Color 1_input": "yay Renk 1", "Quandl is a huge financial database that we have connected to TradingView. Most of its data is EOD and is not updated in real-time, however the information may be extremely useful for fundamental analysis.": "Quandl, TradingvView'e bağladığımız devasa bir finansal veritabanıdır. Quandl verilerin çoğu EOD'dir ve gerçek zamanlı güncellenmez, ama ilgili bilgiler temel analizlerinizde çok faydalı olabilirler.", "Hide Marks On Bars": "Çubuklardaki İşaretleri Gizle", "Cancel Order": "Emir İptal", "Hide All Drawing Tools": "Tüm Çizim Araçlarını Gizle", "WMA Length_input": "WMA Uzunluğu", "Show Dividends on Chart": "Grafikte Temettüleri Göster", "Show Executions": "İcraları Göster", "Borders": "Kenarlar", "Remove Indicators": "Göstergelerı Kaldır", "loading...": "yüklüyor...", "Closed_line_tool_position": "Kapalı", "Rectangle": "Dikdörtgen", "Change Resolution": "Çözünürlüğü Değiştir", "Indicator Arguments": "Gösterge Argümanları", "Symbol Description": "Sembol Açıklaması", "Chande Momentum Oscillator_study": "Chande Momentum Osilatörü", "Degree": "Derece", " per order": "emir başına", "Line - HL/2": "Çizgi - YD/2", "Supercycle": "Birkaç On Yıllık", "Jun": "Haz", "Least Squares Moving Average_study": "En Küçük Kareler Hareketli Ortalaması", "Change Variance value": "Varyans değerini değiştir", "powered by ": "veri sağlayan ", "Source_input": "Kaynak", "Change Seconds To": "Saniyeleri Değiştir", "%K_input": "%K", "Scales Text": "Ölçek Metni", "Toronto": "", "Please enter template name": "Lütfen şablon adı yazın", "Symbol Name": "Sembol Adı", "Tokyo": "", "Events Breaks": "Olaylar Kesmesi", "San Salvador": "", "Months": "Aylar", "Symbol Info...": "Sembol Bilgisi...", "Elliott Wave Minor": "Elliott Küçük Dalgası", "Cross": "Artı", "Measure (Shift + Click on the chart)": "Ölçüm yap (Shift + Grafiğin üstüne tıkla)", "Override Min Tick": "Fiyatın Min Adımı", "Show Positions": "Pozisyonları Göster", "Dialog": "Diyalog", "Add To Text Notes": "Notlara Ekle", "Elliott Triple Combo Wave (WXYXZ)": "Elliott Üçlü Kombo Dalgası (WXYXZ)", "Multiplier_input": "Çarpan", "Risk/Reward": "Risk/Ödül", "Base Line Periods_input": "Temel Çizgi Periyotları", "Show Dividends": "Temettüleri Göster", "Relative Strength Index_study": "Göreceli Güç Endeksi", "Modified Schiff Pitchfork": "Değiştirilmiş Schiff Dirgeni", "Top Labels": "Üst Etiketler", "Show Earnings": "Kazançları Göster", "Line - Open": "Çizgi - Açılış", "Elliott Triangle Wave (ABCDE)": "Elliott Üçgen Dalgası (ABCDE)", "Minuette": "Birkaç Saatlık", "Text Wrap": "Metin Kaydırma", "Reverse Position": "Karşıt Pozisyon", "Elliott Minor Retracement": "Elliott Küçük Düzelme", "DPO_input": "DFO", "Pitchfan": "Basamak Fanı", "Slash_hotkey": "Taksim İşareti", "No symbols matched your criteria": "Kriterinize uygun hiçbir sembol bulunamadı", "Icon": "İkon", "lengthRSI_input": "uzunlukRSI", "Tuesday": "Salı", "Teeth Length_input": "Diş Uzunluğu", "Indicator_input": "Gösterge", "Box size assignment method": "Kutu boyutlu atma yöntemi", "Open Interval Dialog": "Aralık Diyaloğunu Aç", "Shanghai": "Şangay", "Athens": "Atina", "Fib Speed Resistance Arcs": "Fib Hız Direnç Yayları", "Content": "İçerik", "middle": "orta", "Lock Cursor In Time": "Kürsörü Zamana Kilitle", "Intermediate": "Birkaç Hafta-Aylık", "Eraser": "Silici", "Relative Vigor Index_study": "Göreceli Vigor Endeksi", "Envelope_study": "Zarf", "Symbol Labels": "Sembol Etiketleri", "Pre Market": "Açılış Öncesi", "Horizontal Line": "Yatay Çizgi", "O_in_legend": "A", "Confirmation": "Onaylama", "HL Bars": "YD Çubukları", "Lines:": "Çizgiler:", "Hide Favorite Drawings Toolbar": "Favori Çizim Araç Çubuğunu Gizle", "Buenos Aires": "", "X Cross": "X Kesişim", "Bangkok": "", "Profit Level. Ticks:": "Kâr Seviyesi. Adımlar:", "Show Date/Time Range": "Tarih/Saat Aralığı Göster", "Level {0}": "{0}. Kademe", "Favorites": "Favoriler", "Horz Grid Lines": "Yatay Kılavuz Çizgileri", "-DI_input": "-DI", "Price Range": "Fiyat Aralığı", "day": "gün", "deviation_input": "sapma", "Account Size": "Hesap Boyutu", "UTC": "", "Time Interval": "Zaman Aralığı", "Success text color": "Başarı metin rengi", "ADX smoothing_input": "ADX düzleştirilmiş", "%d hour": "%d saat", "Order size": "Emir boyutu", "Drawing Tools": "Çizim Araçları", "Save Drawing Template As": "Çizim Şablonu Yeni Adla Sakla", "Tokelau": "", "Traditional": "Geleneksel", "Chaikin Money Flow_study": "Chaikin Para Akışı", "Ease Of Movement_study": "Hareket Kolaylığı", "Defaults": "Varsayılanlar", "Percent_input": "Yüzde", "Interval is not applicable": "Zaman aralığı uygulanabilir değil", "short_input": "kısa", "Visual settings...": "Görsel ayarlar...", "RSI_input": "RSI", "Chatham Islands": "Chatham Adaları", "Detrended Price Oscillator_input": "Karşılaştırılamayan Fiyat Osilatörü", "Mo_day_of_week": "Pzt", "Up Wave 4": "Yükseliş Dalgası 4", "center": "orta", "Vertical Line": "Dikey Çizgi", "Bogota": "", "Show Splits on Chart": "Grafikte Bölünmeleri Göster", "Sorry, the Copy Link button doesn't work in your browser. Please select the link and copy it manually.": "Üzgünüz, Linki Kopyala düğmesi sizin tarayıcınızda çalışmıyor. Lütfen linki elle seçerek kopyalayınız.", "Levels Line": "Kademeler Çizgisi", "Events & Alerts": "Olaylar ve Alarmlar", "ROCLen4_input": "ROCUzun4", "Aroon Down_input": "Aroon Düşüş", "Add To Watchlist": "İzleme Listesine Ekle", "Total": "Toplam", "Price": "Fiyat", "left": "sol", "Lock scale": "Ölçeği kilitle", "Limit_input": "Limit", "Change Days To": "Günleri Değiştir", "Price Oscillator_study": "Fiyat Osilatörü", "smalen1_input": "bhoUznlk1", "Drawing Template '{0}' already exists. Do you really want to replace it?": "'{0}' Çizim Şablonu zaten vard. Değiştirmek mi istiyorsunuz?", "Show Middle Point": "Orta Noktayı Göster", "KST_input": "KST", "Extend Right End": "Sağ Sona Uzat", "Base currency": "Temel kur", "Line - Low": "Çizgi - Düşük", "Price_input": "Fiyat", "Gann Fan": "Gann Fanı", "EOD": "GS", "Weeks": "Haftalar", "McGinley Dynamic_study": "McGinley Dinamik", "Relative Volatility Index_study": "Göreceli Volatilite Endeksi", "Source Code...": "Kaynak Kodu...", "PVT_input": "PVT", "Show Hidden Tools": "Gizli Araçları Göster", "Hull Moving Average_study": "Hull Hareketli Ortalaması", "Symbol Prev. Close Value": "Sembolün Önceki Kapanış Değeri", "{0} chart by TradingView": "{0} grafiğini sağlayan TradingView", "Right Shoulder": "Sağ Omuz", "Remove Drawing Tools": "Çizim Araçları Kaldır", "Friday": "Cuma", "Zero_input": "Sıfır", "Company Comparison": "Şirket Kıyaslama", "Stochastic Length_input": "Stokastik Uzunluk", "mult_input": "çarpan", "URL cannot be received": "URL alınamıyor", "Success back color": "Başarı arkaplan rengi", "E_data_mode_end_of_day_letter": "GS", "Trend-Based Fib Extension": "Trend-Temeli Fib Uzatma", "Top": "Üst", "Double Curve": "Çift Eğri", "Stochastic RSI_study": "Stokastik RSI", "Oops!": "Eyvah!", "Horizontal Ray": "Yatay Işın", "smalen3_input": "bhoUznlk3", "Ok": "Tamam", "Script Editor...": "Komut Düzenleyici...", "Are you sure?": "Emin misiniz?", "Trades on Chart": "Grafik üzeri İşlemler", "Listed Exchange": "Kayıtlı Borsa", "Error:": "Hata:", "Fullscreen mode": "Tam ekran modu", "Add Text Note For {0}": "{0} için Not Ekle", "K_input": "K", "Do you really want to delete Drawing Template '{0}' ?": "'{0}' Çizim Şablonunu silmek istediğinizden emin misiniz?", "ROCLen3_input": "ROCUzun3", "Micro": "", "Text Color": "Metin rengi", "Rename Chart Layout": "Grafik Yerleşimine Yeni Ad Ver", "Built-ins": "Gömülüler", "Background color 2": "Arkaplan rengi 2", "Drawings Toolbar": "Çizim Araç Çubuğu", "Moving Average Channel_study": "Hareketli Ortalama Kanalı", "New Zealand": "Yeni Zelanda", "CHOP_input": "CHOP", "Apply Defaults": "Varsayılanları Uygula", "% of equity": "Özkaynağın %", "Extended Alert Line": "Uzatılmış Alarm Çizgisi", "Note": "Not", "OK": "Tamam", "like": "beğendi", "Show": "Göster", "{0} bars": "{0} çubuklar", "Lower_input": "Alt", "Created ": "Oluşturma: ", "Warning": "Dikkat", "Elder's Force Index_study": "Elder Güç Endeksi", "Show Earnings on Chart": "Kazançları Grafikte Göster", "ATR_input": "ATR", "Low": "Düşük", "Bollinger Bands %B_study": "Bollinger Bantları %B", "Time Zone": "Saat Dilimi", "right": "sağ", "%d month": "%d ay", "Wrong value": "Yanlış değeri", "Upper Band_input": "Üst Bant", "Sun": "Paz", "Rename...": "Yeni Ad Ver...", "start_input": "başlangıç", "No indicators matched your criteria.": "Kriterinize uygun gösterge bulunamadı.", "Commission": "Komisyon", "Down Color": "Düşüş Rengi", "Short length_input": "Kısa uzunluk", "Kolkata": "", "Submillennium": "Sub-binyıllık", "Technical Analysis": "Teknik Analiz", "Show Text": "Metni Göster", "Channel": "Kanal", "FXCM CFD data is available only to FXCM account holders": "FXCM KFS verilerine sadece FXCM hesabı sahipleri erişebilir", "Lagging Span 2 Periods_input": "Gecikme Aralığı 2 Periyodu", "Connecting Line": "Bağlantı Çizgisi", "Seoul": "Seul", "bottom": "alt", "Teeth_input": "Diş", "Sig_input": "Sin", "Open Manage Drawings": "Çizim Yönetimini Aç", "Save New Chart Layout": "Yeni Grafik Yerleşimini Sakla", "Fib Channel": "Fib Kanalı", "Save Drawing Template As...": "Çizim Şablonu Yeni Adla Sakla...", "Minutes_interval": "Dakika", "Up Wave 2 or B": "Yükseliş Dalgası 2 veya B", "Columns": "Sütunlar", "Directional Movement_study": "Yönsel Hareket", "roclen2_input": "rocuznlk2", "Apply WPT Down Wave": "WPT Düşüş Dalgası Uygula", "Not applicable": "Uygun Değil", "Bollinger Bands %B_input": "Bollinger Bantları %B", "Default": "Varsayılan", "Singapore": "Singapur", "Template name": "Şablon adı", "Indicator Values": "Gösterge Değerleri", "Lips Length_input": "Dudak Uzunluğu", "Toggle Log Scale": "Logaritmik Ölçekle Değiştir", "L_in_legend": "D", "Remove custom interval": "Özel zaman aralığını kaldır", "shortlen_input": "shortlen", "Quotes are delayed by {0} min": "Fiyatlar {0} dakika gecikmeli", "Hide Events on Chart": "Grafikte Olayları Gizle", "Cash": "Nakit", "Profit Background Color": "Kâr Arkaplan Rengi", "Bar's Style": "Çubuk Türü", "Exponential_input": "Üstel", "Down Wave 5": "Düşüş Dalgası 5", "Previous": "Önceki", "Stay In Drawing Mode": "Çizim Modunda Kal", "Comment": "Yorum", "Connors RSI_study": "Connors RSI", "Bars": "Çubuk Grafikler", "Show Labels": "Etiketleri Göster", "Flat Top/Bottom": "Flat Üst/Alt", "Symbol Type": "Sembol Tipi", "December": "Aralık", "Lock drawings": "Çizimleri Kilitle", "Border color": "Kenarlık rengi", "Change Seconds From": "Saniyeleri Değiştir", "Left Labels": "Sol Etiketler", "Insert Indicator...": "Gösterge Ekle...", "ADR_B_input": "ADR_B", "Paste %s": "%s yapıştır", "Change Symbol...": "Sembolu Değiştir...", "Timezone": "Saat Dilimi", "Invite-only script. You have been granted access.": "Sadece-davetliler komutu. Erişim izni verildi.", "Color 6_input": "Renk 6", "Oct": "Eki", "ATR Length": "ATR Uzunluğu", "{0} financials by TradingView": "{0} finansal bilgilerini sağlayan TradingView", "Extend Lines Left": "Çizgileri Sola Uzat", "Feb": "Şub", "Transparency": "Şeffaflık", "No": "Hayır", "June": "Haziran", "Tweet": "Tweetle", "Cyclic Lines": "Periyodik Çizgiler", "length28_input": "uzunluk28", "ABCD Pattern": "ABCD Formasyonu", "When selecting this checkbox the study template will set \"__interval__\" interval on a chart": "Kutucuğu seçtiğinizde çalışma şablonunuzdaki grafikte zaman aralığı \"__interval__\" olarak ayarlanacak.", "Add": "Ekle", "OC Bars": "OC Çubuk Grafikler", "Millennium": "Binyıl", "On Balance Volume_study": "Denge İşlem Hacmi", "Apply Indicator on {0} ...": "{0} üzerinde Gösterge Uygula...", "NEW": "YENİ", "Chart Layout Name": "Grafik Yerleşimi Adı", "Up bars": "Artış çubukları", "Hull MA_input": "Hull HO", "Schiff": "", "Lock Scale": "Ölçeği Kilitle", "distance: {0}": "mesafe: {0}", "Extended": "Uzatılmış", "Square": "Kare", "Three Drives Pattern": "Üç Basamak Formasyonu", "NO": "HAYIR", "Top Margin": "Üst Marj", "Up fractals_input": "Yükselen fraktal", "Insert Drawing Tool": "Çizim Araçları Ekle", "OHLC Values": "OHLC Değerler", "Correlation_input": "Korelasyon", "Session Breaks": "Seans Araları", "Add {0} To Watchlist": "İzleme Listesine {0} Ekle", "Anchored Note": "Yapışık Not", "lipsLength_input": "dudakUzunluğu", "low": "düşük", "Apply Indicator on {0}": "{0} üzerine Gösterge Uygula", "UpDown Length_input": "UpDown Uzunluğu", "Price Label": "Fiyat Etiketi", "November": "Kasım", "Tehran": "Tahran", "Balloon": "Balon", "Track time": "Takip süresi", "Background Color": "Arkaplan rengi", "an hour": "bir saat", "Right Axis": "Sağ Eksen", "D_data_mode_delayed_streaming_letter": "G", "VI -_input": "VI -", "slowLength_input": "yavaşUzunluk", "Click to set a point": "Nokta belirlemek için tıkla", "Save Indicator Template As...": "Gösterge Şablonu Farklı Kaydet...", "Arrow Up": "Yukarı Ok", "n/a": "u/d", "Indicator Titles": "Göstergenin Adı", "Failure text color": "Metin Renginde Hata", "Sa_day_of_week": "Cmt", "Net Volume_study": "Net İşlem Hacmi", "Error": "Hata", "Edit Position": "Pozisyonu Değiştir", "RVI_input": "RVI", "Centered_input": "Ortalanmış", "Recalculate On Every Tick": "Her Adımda Yeniden Hesapla", "Left": "Sol", "Simple ma(oscillator)_input": "Basit ort(osilatör)", "Compare": "Kıyasla", "Fisher Transform_study": "Fisher Dönüşümü", "Show Orders": "Emirleri Göster", "Zoom In": "Yaklaş", "Length EMA_input": "ÜHO Uzunluğu", "Enter a new chart layout name": "Grafik yerleşiminin yeni adını yazın", "Signal Length_input": "Sinyal Uzunluğu", "FAILURE": "BAŞARISIZ", "Point Value": "Nokta Değeri", "D_interval_short": "G", "MA with EMA Cross_study": "HO ve ÜHO Kesişmesi", "Label Up": "Yukarı Etiket", "Price Channel_study": "Fiyat Kanalı", "Close": "Kapat", "ParabolicSAR_input": "ParabolicSAR", "Log Scale_scale_menu": "Logaritmik Ölçek", "MACD_input": "MACD", "Do not show this message again": "Bu mesajı tekrar gösterme", "{0} P&L: {1}": "{0} Kar&Zarar: {1}", "No Overlapping Labels": "Örtüşen Etiketler Yok", "Arrow Mark Left": "Sola Ok İşareti", "Slow length_input": "Yavaş uzunluk", "Line - Close": "Çizgi - Kapanış", "(O + H + L + C)/4": "(A + Y + D + K)/4", "Confirm Inputs": "Girişleri Onayla", "Open_line_tool_position": "Açık", "Lagging Span_input": "Gecikme Aralığı", "Subminuette": "Birkaç Dakikalık", "Thursday": "Perşembe", "Arrow Down": "Aşağı Ok", "Vancouver": "", "Triple EMA_study": "Üçlü ÜHO", "Elliott Correction Wave (ABC)": "Elliott Düzeltme Dalgası (ABC)", "Error while trying to create snapshot.": "Şipşak alırken hata oluştu.", "Label Background": "Etiket Arkaplanı", "Templates": "Şablonlar", "Please report the issue or click Reconnect.": "Lütfen hatayı bildirin ya da Tekrar Bağlan'ı tıklayın.", "Normal": "", "Signal Labels": "Sinyal Etiketler", "Delete Text Note": "Metin Notunu Sil", "compiling...": "derleniyor...", "Detrended Price Oscillator_study": "Trend Azaltma Fiyat Osilatörü", "Color 5_input": "Renk 5", "Fixed Range_study": "Sabit Aralık", "Up Wave 1 or A": "Yükseliş Dalgası 1 veya A", "Scale Price Chart Only": "Sadece Fiyat Grafiğini Ölçeklendir", "Unmerge Up": "Yukarıdan Ayrıştır", "auto_scale": "otomatik", "Short period_input": "Kısa periyot", "Background": "Arkaplan", "Study Templates": "Çalışma Şablonları", "Up Color": "Artış Rengi", "Apply Elliot Wave Intermediate": "Elliott Intermediate Dalgası Uygula", "VWMA_input": "VWMA", "Lower Deviation_input": "Alt Sapma", "Save Interval": "Zaman Aralığı Sakla", "February": "Şubat", "Reverse": "Karşıt", "Oops, something went wrong": "Eyvah, birşeyler ters gitti", "Add to favorites": "Favorilere ekle", "Median": "Medyan", "ADX_input": "ADX", "Remove": "Kaldır", "len_input": "uzn", "Arrow Mark Up": "Yukarı Ok İşareti", "April": "Nisan", "Active Symbol": "Aktif Sembol", "Extended Hours": "Genişletilmiş Saatler", "Crosses_input": "Kesişmeler", "Middle_input": "Orta", "Read our blog for more info!": "Daha fazla bilgi için blogumuzu okuyun!", "Sync drawing to all charts": "Çizimi tüm grafiklere eşitle", "LowerLimit_input": "AltLimit", "Know Sure Thing_study": "Know Sure Thing", "Copy Chart Layout": "Grafik Yerleşimini Kopyala", "Compare...": "Kıyasla...", "1. Slide your finger to select location for next anchor
2. Tap anywhere to place the next anchor": "1. Sonraki çapanın
yerini seçmek için parmağınızı kaydırın 2. Sonraki çapayı koymak için herhangi bir yere tıklayın", "Text Notes are available only on chart page. Please open a chart and then try again.": "Notlar sadece grafik penceresinde kullanılabilir. Lütfen bir grafik açın ve tekrar deneyin.", "Color": "Renk", "Aroon Up_input": "Aroon Yükseliş", "Apply Elliot Wave Major": "Elliott Majör Dalgası Uygula", "Scales Lines": "Ölçek Çizgileri", "Type the interval number for munute charts (i.e. 5 if it is going to be a five minute chart). Or number plus letter for H (Hourly), D (Daily), W (Weekly), M (Monthly) intervals (i.e. D or 2H)": "Dakikalık grafikler için sadece dakika aralığını yazın (örneğin beş dakikalık grafik istiyorsanız 5 yazın). Saatlik için rakam+H (Saatlık), D (Günlük), W (Haftalık), M (Aylık) gibi (örneğin D veya 2H)", "Ellipse": "Elips", "Up Wave C": "Yükseliş Dalgası C", "Show Distance": "Mesafeyi Göster", "Risk/Reward Ratio: {0}": "Risk/Ödül Oranı: {0}", "Restore Size": "Boyutu Yeniden Yükle", "Volume Oscillator_study": "İşlem Hacmi Osilatörü", "Honolulu": "", "Williams Fractal_study": "Williams Fraktalı", "Merge Up": "Yukarıya doğru Birleştir", "Right Margin": "Sağ Marj", "Moscow": "Moskova", "Warsaw": "Varşova"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/vi.json b/static/Kline/charting_library/static/localization/translations/vi.json new file mode 100644 index 0000000..834fb61 --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/vi.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "ticks", "Months_interval": "Tháng", "Realtime": "Thời gian thực", "Callout": "Chú thích", "Sync to all charts": "đồng bộ tất cả đồ thị", "month": "Tháng", "roclen1_input": "roclen1", "Unmerge Down": "Hủy sáp nhập xuống", "Search Note": "Tìm kiếm Ghi chú", "Minor": "Sóng nhỏ", "Do you really want to delete Chart Layout '{0}' ?": "Bạn có thực sự muốn xóa Bố cục Biểu đồ {0}?", "Quotes are delayed by {0} min and updated every 30 seconds": "Báo giá bị chậm trễ bởi {0} phút và cập nhật mỗi 30 giây", "Magnet Mode": "Chế độ nam châm", "OSC_input": "OSC", "Hide alert label line": "Ẩn đường nhãn cảnh báo", "Volume_study": "Khối lượng", "Lips_input": "Lips", "Show real prices on price scale (instead of Heikin-Ashi price)": "Hiển thị giá thực dựa trên thang giá (thay vì giá Heikin-Ashi)", "Histogram": "Biểu đồ tần suât", "Base Line_input": "Đường cơ sở", "Step": "Bước", "Insert Study Template": "Chèn mẫu nghiên cứu", "Fib Time Zone": "Fibonacci vùng thời gian", "SMALen2_input": "SMALen2", "Bollinger Bands_study": "Bollinger Bands", "Nov": "Tháng 11", "Show/Hide": "Hiển thị/ẩn", "Upper_input": "Upper", "exponential_input": "số mũ", "Move Up": "Di chuyển lên", "Symbol Info": "Thông tin mã giao dịch", "This indicator cannot be applied to another indicator": "Chỉ báo này không thể áp dụng cho chỉ báo khác", "Scales Properties...": "Đặc tính chia tỷ lệ", "Count_input": "Đếm", "Anchored Text": "Ký tự ghim", "Industry": "Công nghiệp", "OnBalanceVolume_input": "OnBalanceVolume", "Cross_chart_type": "Chéo nhau", "H_in_legend": "H", "a day": "một ngày", "Pitchfork": "Mô hình Pitchfork", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "Tích lũy / phân phối", "Rate Of Change_study": "Tỉ giá hối đoái", "Text Font": "Font chữ", "in_dates": "trong", "Clone": "Bản sao", "Color 7_input": "Mầu 7", "Chop Zone_study": "Chop Zone", "Bar #": "Các thanh #", "Scales Properties": "Đặc tính chia tỷ lệ", "Trend-Based Fib Time": "Fibonacci vùng thời gian dựa trên xu hướng", "Remove All Indicators": "Loại bỏ tất cả các chỉ số", "Oscillator_input": "Oscillator", "Last Modified": "Chỉnh sửa sau cùng", "yay Color 0_input": "yay Color 0", "Labels": "Các nhãn", "Chande Kroll Stop_study": "Chande Kroll Stop", "Hours_interval": "Giờ", "Allow up to": "Cho phép đến", "Scale Right": "Chia tỷ lệ theo bên phải", "Money Flow_study": "Dòng tiền", "siglen_input": "siglen", "Indicator Labels": "Các nhãn chỉ tiêu", "__specialSymbolOpen__Tomorrow at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Ngày mai tại__specialSymbolClose____dayTime__", "Toggle Percentage": "Chuyển đồi phần trăm", "Remove All Drawing Tools": "Loại bỏ tất cả công cụ vẽ", "Remove all line tools for ": "Loại bỏ tất cả các công cụ đường cho ", "Linear Regression Curve_study": "Đường cong Linear Regression", "Symbol_input": "Mã giao dịch", "Currency": "Tiền tệ", "increment_input": "Gia tăng", "Compare or Add Symbol...": "So sánh và thêm mã giao dịch...", "__specialSymbolOpen__Last__specialSymbolClose__ __dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__sau__specialSymbolClose____dayName____specialSymbolOpen__tại__specialSymbolClose____dayTime__", "Save Chart Layout": "Lưu bố cục biểu đồ", "Number Of Line": "Số lượng đường thẳng", "Label": "Nhãn", "Post Market": "Thị trường sau", "second": "thứ hai", "Any Number": "Số bất kỳ", "smoothD_input": "smoothD", "Falling_input": "Rơi", "Risk/Reward short": "Rủi ro/Lợi nhuận ở trạng thái bán", "UpperLimit_input": "UpperLimit", "Donchian Channels_study": "Chỉ số Kênh Donchian", "Entry price:": "Giá ban đầu:", "Circles": "Các vòng tròn", "Toggle Auto Scale": "Chuyển đổi tỷ lệ tự động", "Mirrored": "Nhân đôi", "Ichimoku Cloud_study": "Mây Ichimoku", "Signal smoothing_input": "Signal smoothing", "Toggle Log Scale": "Chuyển đổi Quy mô Đăng nhập", "Apply Elliot Wave Major": "Áp dụng Sóng Elliot mức chính", "Grid": "Lưới", "Triangle Down": "Triangle Xuống", "Apply Elliot Wave Minor": "Áp dụng Sóng Elliot mức phụ", "Slippage": "Trượt", "Smoothing_input": "Mượt", "Color 3_input": "Mầu 3", "Jaw Length_input": "Jaw Length", "Inside": "Bên trong", "Delete all drawing for this symbol": "Xóa bỏ tất cả các đường vẽ cho mã này", "Fundamentals": "Cơ bản", "Keltner Channels_study": "Kênh Keltner", "Long Position": "Vị trí mua", "Bands style_input": "Bands style", "Undo {0}": "Khôi phục {0}", "With Markers": "Với các dấu hiệu", "Momentum_study": "Momentum", "MF_input": "MF", "Gann Box": "Mô hình hộp Gann", "Switch to the next chart": "Chuyển sang biểu đồ tiếp theo", "charts by TradingView": "Biểu đồ được vẽ bởi TradingView", "Fast length_input": "Chiều dài nhanh", "Apply Elliot Wave": "Áp dụng Sóng Elliot", "Disjoint Angle": "Góc phân chia", "W_interval_short": "W", "Show Only Future Events": "Chỉ hiển thị các sự kiện tương lai", "Log Scale": "Tỷ lệ logarit", "Minuette": "Sóng rất nhỏ", "Equality Line_input": "Đường Bình đẳng", "Short_input": "Ngắn", "Fib Wedge": "Fibonacci hình cái nêm", "Line": "Đường thẳng", "Session": "Phiên", "Down fractals_input": "Down fractals", "Fib Retracement": "Fibonacci thoái lui", "smalen2_input": "smalen2", "isCentered_input": "isCentered", "Border": "Đường viền", "Klinger Oscillator_study": "Bộ dao động Klinger", "Absolute": "Tuyệt đối", "Tue": "Thứ 3", "Style": "Hình dạng", "Show Left Scale": "Hiển thị khu vực bên trái", "SMI Ergodic Indicator/Oscillator_study": "Chỉ báo SMI Ergodic", "Aug": "Tháng tám", "Last available bar": "Thanh có sẵn cuối cùng", "Manage Drawings": "Quản lý chức năng vẽ", "Analyze Trade Setup": "Phân tích thiết lập giao dịch", "No drawings yet": "Chưa có bản vẽ nào", "SMI_input": "SMI", "Chande MO_input": "Chande MO", "jawLength_input": "jawLength", "TRIX_study": "TRIX", "Show Bars Range": "Hiển thị phạm vi các thanh", "RVGI_input": "RVGI", "Last edited ": "Chỉnh sửa lần cuối ", "signalLength_input": "signalLength", "%s ago_time_range": "%s trước đây", "Reset Settings": "Thiết lập lại cài đặt", "d_dates": "d", "Point & Figure": "ĐIểm & Số liệu", "August": "Tháng Tám", "Recalculate After Order filled": "Tính lại sau khi đặt hàng", "Source_compare": "Nguồn", "Down bars": "Thanh dưới", "Correlation Coefficient_study": "Hệ số tương quan", "Delayed": "Trì hoãn", "Text color": "Màu văn bản", "Levels": "Các cấp độ", "Short Length_input": "Short Length", "teethLength_input": "teethLength", "Visible Range_study": "Dải hiển thị", "Delete": "Xóa", "Open {{symbol}} Text Note": "Mở {{symbol}} Ghi chú", "October": "Tháng mười", "Lock All Drawing Tools": "Khóa tất cả công cụ vẽ", "Long_input": "Long", "Unmerge Up": "Hủy sáp nhập lên", "Show Symbol Last Value": "Hiển thị giá trị cuối cùng của mã", "Head & Shoulders": "Mô hình Vai-Đầu-Vai", "Do you really want to delete Study Template '{0}' ?": "Bạn có thực sự muốn xóa Mẫu Nghiên cứu '{0}'?", "Favorite Drawings Toolbar": "Thanh công cụ vẽ hay dùng", "Properties...": "Đặc tính...", "MA Cross_study": "MA Cross", "Trend Angle": "Góc xu hướng", "Snapshot": "Ảnh chụp nhanh", "Crosshair": "Đường chữ thập", "Signal line period_input": "Chu kỳ dòng tín hiệu", "Timezone/Sessions Properties...": "Múi giờ/Tính năng phiên giao dịch...", "Line Break": "Đường ngắt", "Quantity": "Số lượng", "Price Volume Trend_study": "Xu hướng giá cả", "Auto Scale": "Tự động chia tỷ lệ", "hour": "giờ", "Delete chart layout": "Xóa bỏ định dạng biểu đồ", "Text": "Văn bản", "F_data_mode_forbidden_letter": "F", "Risk/Reward long": "Rủi ro/lợi nhuận ở trạng thái mua", "Apr": "Tháng tư", "Long RoC Length_input": "Long RoC Length", "Length3_input": "Length3", "+DI_input": "+DI", "Length_input": "Chiều dài", "Use one color": "Sử dụng một mầu", "Chart Properties": "Đặc tính biểu đồ", "No Overlapping Labels_scale_menu": "Không có Nhãn chồng chéo", "Exit Full Screen (ESC)": "Thoát toàn màn hình (ESC)", "MACD_study": "MACD", "Show Economic Events on Chart": "Hiển thị các sự kiện kinh tế trên biểu đồ", "Moving Average_study": "Di chuyển trung bình", "Show Wave": "Hiển thị sóng", "Failure back color": "Màu nền cho lệnh thất bại", "Below Bar": "Thanh dưới", "Time Scale": "Quy mô thời gian", "

Only D, W, M intervals are supported for this symbol/exchange. You will be automatically switched to a D interval. Intraday intervals are not available because of exchange policies.

": "

Chỉ chu kỳ D, W, M được hỗ trợ bởi Mã/Sàn này. Bạn sẽ được tự động chuyển qua chu kỳ D. Các chu kỳ trong ngày sẽ không có vì chính sách của Sàn giao dịch.

", "Extend Left": "Kéo dài phía trái", "Date Range": "Phạm vi ngày", "Price format is invalid.": "Định dạng giá không có giá trị", "Show Price": "Hiển thị giá", "Level_input": "Mức độ", "Commodity Channel Index_study": "Chỉ số Kênh hàng hóa", "Elder's Force Index_input": "Chỉ số Elder's Force", "Gann Square": "Mô hình Gann vuông", "Format": "Định dạng", "Color bars based on previous close": "Các thanh màu dựa trên đóng cửa phiên trước", "Change band background": "Thay đổi background của band", "Marketplace Add-ons": "Tiện ích trên Marketplace", "This chart layout has a lot of objects and can't be published! Please remove some drawings and/or studies from this chart layout and try to publish it again.": "Bố cục biểu đồ này có nhiều đối tượng và không thể được xuất bản! Vui lòng xóa một số bản vẽ và/hoặc trong biểu đồ này và thử xuất bản lại.", "Long length_input": "Long Length", "Edit {0} Alert...": "Chỉnh sửa {0} cảnh báo...", "Previous Close Price Line": "Giá phiên đóng cửa trước", "Up Wave 5": "Sóng trên 5", "Text:": "Văn bản:", "Heikin Ashi": "Mô hình Heikin Ashi", "Aroon_study": "Aroon", "show MA_input": "hiển thị MA", "Lead 1_input": "Lead 1", "Short Position": "Vị trí bán", "SMALen1_input": "SMALen1", "P_input": "P", "Apply Default": "Áp dụng Mặc định", "SMALen3_input": "SMALen3", "Average Directional Index_study": "Chỉ báo xu hướng trung bình", "Fr_day_of_week": "Fr", "Invite-only script. Contact the author for more information.": "Kịch bản chỉ hiển thị cho người được mời. Vui lòng liên hệ với tác giả để biết thêm thông tin.", "Curve": "Đường cong", "a year": "một năm", "Target Color:": "Màu mục tiêu:", "Bars Pattern": "Mẫu hình thanh", "D_input": "D", "Extended Hours": "Giờ được mở rộng", "Create Vertical Line": "Tạo đường chỉ dọc", "p_input": "p", "Rotated Rectangle": "Hình chữ nhật xoay chuyển", "Chart layout name": "Tên bố cục biểu đồ", "Fib Circles": "Các vòng Fibonacci", "Apply Manual Decision Point": "Áp dụng điểm quyết định thủ công", "Dot": "Dấu chấm", "Target back color": "Màu hình nền cho mục tiêu", "All": "Tất cả", "orders_up to ... orders": "đơn đặt hàng", "Dot_hotkey": "Chấm", "Lead 2_input": "Lead 2", "Save image": "Lưu ảnh", "Move Down": "Di chuyển xuống", "Triangle Up": "Triangle Lên", "Box Size": "Cỡ hộp", "Navigation Buttons": "Nút điều hướng", "Apply": "Áp dụng", "Down Wave 3": "Xuống sóng 3", "Plots Background_study": "Thông tin cơ bản", "Sine Line": "Đường Sine", "Fill": "Điền vào", "%d day": "%d ngày", "Hide": "Ẩn", "Toggle Maximize Chart": "Chuyển đổi Tối đa hoá Biểu đồ", "Target text color": "Màu văn bản của mục tiêu", "Scale Left": "Chia tỷ lệ theo bên trái", "Elliott Wave Subminuette": "Sóng Elliott cực nhỏ", "Down Wave C": "Xuống sóng C", "Countdown": "Đếm ngược", "UO_input": "UO", "Pyramiding": "Hình Kim tự tháp", "Source back color": "Màu hình nền nguồn dữ liệu", "Go to Date...": "Đến ngày...", "Text Alignment:": "Thẳng hàng chữ:", "R_data_mode_realtime_letter": "R", "Extend Lines": "Kéo dài các đường", "Conversion Line_input": "Đường chuyển đổi", "March": "Tháng ba", "Su_day_of_week": "Su", "Exchange": "Giao dịch", "Arcs": "Các vòng cung", "Regression Trend": "Xu hướng hồi quy", "Fib Spiral": "Fibonacci hình xoắn ốc", "Double EMA_study": "Double EMA", "minute": "phút", "All Indicators And Drawing Tools": "Tất cả các Chỉ báo và Công cụ vẽ", "Indicator Last Value": "Chỉ tiêu giá trị cuối cùng", "Sync drawings to all charts": "Đồng bộ các bước vẽ trên tất cả các biểu đồ", "Stop Color:": "Màu lệnh dừng lại:", "Stay in Drawing Mode": "Giữ nguyên chế độ vẽ", "Bottom Margin": "Lề dưới", "Save Chart Layout saves not just some particular chart, it saves all charts for all symbols and intervals which you are modifying while working with this Layout": "Lưu bố cục biểu đồ không chỉ một số biểu đồ cụ thể, nó lưu tất cả các biểu đồ cho tất cả các mã và khoảng thời gian mà bạn đang sửa đổi trong khi làm việc với bố cục này", "Average True Range_study": "Trung bình biên độ chính xác của giá", "Max value_input": "Giá trị lớn nhất", "MA Length_input": "MA Length", "Invite-Only Scripts": "Kịch bản chỉ hiển thị cho người được mời", "in %s_time_range": "in %s", "Extend Bottom": "Mở rộng đáy", "sym_input": "sym", "DI Length_input": "Chiều dài DI", "Periods_input": "Các chu kỳ", "Arrow": "Mũi tên", "useTrueRange_input": "useTrueRange", "Basis_input": "Cơ bản", "Arrow Mark Down": "Đánh dấu mũi tên xuống", "lengthStoch_input": "lengthStoch", "Objects Tree": "Danh sách đối tượng", "Remove from favorites": "Loại bỏ khỏi mục yêu thích", "Show Symbol Previous Close Value": "Hiển thị giá trị mã giao dịch phiên đóng cửa trước", "Scale Series Only": "Chia tỷ lệ theo số liệu", "Source text color": "Màu văn bản nguồn dữ liệu", "Simple": "Đơn giản", "Report a data issue": "Báo cáo vấn đề dữ liệu", "Arnaud Legoux Moving Average_study": "Arnaud Legoux Moving Average", "Smoothed Moving Average_study": "Dịch chuyển trung bình Smoothed", "Lower Band_input": "Lower Band", "Verify Price for Limit Orders": "Xác minh Giá cho Hạn mức Đơn hàng", "VI +_input": "VI +", "Line Width": "Độ rộng của đường", "Contracts": "Hợp đồng", "Always Show Stats": "Luôn hiện trạng thái", "Down Wave 4": "Xuống sóng 4", "ROCLen2_input": "ROCLen2", "Simple ma(signal line)_input": "Simple ma(signal line)", "Change Interval...": "Thay đổi khoảng thời gian...", "Public Library": "Thư viện công khai", " Do you really want to delete Drawing Template '{0}' ?": " Bạn có thực sự muốn xóa Bảng Vẽ Mẫu này không{0}?", "Sat": "Thứ 7", "CRSI_study": "CRSI", "Close message": "Đóng tin nhắn", "Jul": "Tháng 7", "Base currency": "Tiền tệ cơ bản", "Chaikin Oscillator_study": "Bộ dao động Chaikin", "Price Source": "Giá nguồn", "Market Open": "Thị trường mở cửa", "Color Theme": "Màu sắc chủ đề", "Projection up bars": "Chiều thanh lên", "Awesome Oscillator_study": "Chỉ báo Awesome Oscillator", "Bollinger Bands Width_input": "Bollinger Bands Width", "Q_input": "Q", "long_input": "long", "Error occured while publishing": "Đã xảy ra lỗi khi xuất bản", "Fisher_input": "Fisher", "Color 1_input": "Mầu 1", "Moving Average Weighted_study": "Di chuyển trung bình có trọng số", "Save": "Lưu", "Type": "Loại", "Wick": "Bóng nến", "Accumulative Swing Index_study": "Chỉ số Swing tích lũy", "Load Chart Layout": "Tải bố cục biểu đồ", "Show Values": "Hiển thị giá trị", "Fib Speed Resistance Fan": "Fibonacci kháng cự dạng quạt", "Bollinger Bands Width_study": "Dải Bollinger Bands", "This chart layout has more than 1000 drawings, which is a lot! This may negatively affect performance, storage and publishing. We recommend to remove some drawings to avoid potential performance issues.": "Bố cục biểu đồ này có hơn 1000 bản vẽ, điều này là quá nhiều! Điều này có thể ảnh hưởng tiêu cực đến hiệu suất, lưu trữ và xuất bản. Chúng tôi khuyên bạn nên xóa một số bản vẽ để tránh các vấn đề về tiềm ẩn về hiệu suất.", "Left End": "Phía cuối bên trái", "%d year": "%d năm", "Always Visible": "Luôn hiện", "S_data_mode_snapshot_letter": "S", "Elliott Wave Circle": "Sóng Elliott Vòng", "Earnings breaks": "Thu nhập đứt quãng", "Do not ask again": "Đừng hỏi lại", "MTPredictor": "Chỉ báo MTPredictor", "Displacement_input": "Dịch chuyển", "smalen4_input": "smalen4", "CCI_input": "CCI", "Upper Deviation_input": "Độ lệch cao hơn", "(H + L)/2": "(Cao nhất + Thấp nhất) / 2", "XABCD Pattern": "Mẫu hình XABCD", "Schiff Pitchfork": "Mô hình Schiff Pitchfork", "Copied to clipboard": "Đã sao chép ra clipboard", "Flipped": "Lật", "DEMA_input": "DEMA", "Move_input": "Di chuyển", "NV_input": "NV", "Choppiness Index_study": "Chỉ số Choppiness", "Study Template '{0}' already exists. Do you really want to replace it?": "Mẫu Nghiên cứu '{0}' đã tồn tại. Bạn có thực sự muốn thay thế nó?", "Merge Down": "Sáp nhập xuống", "Th_day_of_week": "Th", " per contract": " từng hợp đồng", "Overlay the main chart": "Chèn vào biểu đồ chính", "Screen (No Scale)": "Screen (Không chia tỷ lệ)", "Three Drives Pattern": "Ba mẫu dẫn dắt", "Save Indicator Template As": "Lưu Mẫu Chỉ Báo Là", "Length MA_input": "Length MA", "percent_input": "phần trăm", "September": "Tháng Chín", "{0} copy": "{0} sao chép", "Median_input": "Median", "Accumulation/Distribution_input": "Tích lũy / phân phối", "C_in_legend": "C", "Weeks_interval": "Tuần", "smoothK_input": "smoothK", "Percentage_scale_menu": "Phần trăm", "Change Extended Hours": "Thay đổi giờ mở rộng", "MOM_input": "MOM", "h_interval_short": "h", "Change Interval": "Thay đổi khoảng thời gian", "Change area background": "Thay đổi background của vùng", "Modified Schiff": "Mô hình Schiff biến đổi", "top": "Phía trên", "Send Backward": "Gửi ngược lại", "Custom color...": "Tùy chỉnh màu...", "TRIX_input": "TRIX", "Show Price Range": "Hiển thị phạm vi giá", "Elliott Major Retracement": "Sóng Elliott lớn thoái lui", "ASI_study": "ASI", "Notification": "Thông báo", "Fri": "Thứ 6", "just now": "ngay bây giờ", "Forecast": "Dự đoán", "Fraction part is invalid.": "Phần phân số không hợp lệ.", "Connecting": "Đang kết nối", "Ghost Feed": "Mô hình Ghost Feed", "Signal_input": "Tín hiệu", "Histogram_input": "Biểu đồ tần suât", "The Extended Trading Hours feature is available only for intraday charts": "Tính năng Thời gian Giao dịch Mở rộng chỉ có sẵn cho các biểu đồ trong ngày", "Stop syncing": "ngừng đồng bộ", "open": "mở cửa", "StdDev_input": "StdDev", "EMA Cross_study": "Đường chéo EMA", "Conversion Line Periods_input": "Khoảng thời gian quy đổi", "Diamond": "Kim cương", "My Scripts": "Kịch bản của tôi", "Monday": "Thứ hai", "Add Symbol_compare_or_add_symbol_dialog": "Thêm Mã", "Williams %R_study": "Williams %R", "Symbol": "Mã giao dịch", "a month": "một tháng", "Precision": "Độ chính xác", "depth_input": "Sâu", "Go to": "Đi tới", "Please enter chart layout name": "Vui lòng nhập tên bố cục biểu đồ", "Mar": "Tháng 3", "VWAP_study": "VWAP", "Offset": "Bù lại", "Date": "Ngày", "Format...": "Định dạng...", "__dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__dayName____specialSymbolOpen__tại__specialSymbolClose____dayTime__", "Toggle Maximize Pane": "Chuyển đổi phóng to khung", "Search": "Tìm kiếm", "Zig Zag_study": "Zig Zag", "Actual": "Thực tế", "SUCCESS": "THÀNH CÔNG", "Long period_input": "Thời kỳ Long", "length_input": "length", "roclen4_input": "roclen4", "Price Line": "Đường giá", "Area With Breaks": "Vùng gãy", "Zoom Out": "Thu nhỏ", "Stop Level. Ticks:": "Cấp độ dừng. Đánh dấu:", "Window Size_input": "Kích thước Cửa sổ", "Economy & Symbols": "Kinh tế & Mã", "Circle Lines": "Các đường vòng tròn", "Visual Order": "Thứ tự trực quan", "__specialSymbolOpen__Yesterday at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Ngày hôm qua tại__specialSymbolClose____dayTime__", "Stop Background Color": "Màu hình nền cho lệnh dừng lại", "1. Slide your finger to select location for first anchor
2. Tap anywhere to place the first anchor": "1.Trượt ngón tay của bạn để chọn vị trí cho mốc đầu tiên
2. Bấm vào bất kỳ điểm nào để đặt mốc đầu tiên", "Sector": "Khu vực", "powered by TradingView": "Được cung cấp bởi TradingView", "Stochastic_study": "Stochastic", "Sep": "Tháng 9", "TEMA_input": "TEMA", "Apply WPT Up Wave": "Áp dụng Sóng WPT Trên", "Extend Left End": "Kéo dài phía cuối trái", "Projection down bars": "Chiếu thanh xuống", "Advance/Decline_study": "Nâng cao/Từ chối", "Flag Mark": "Cờ đánh dấu", "Drawings": "Các hình vẽ", "Cancel": "Hủy bỏ", "Compare or Add Symbol": "So sánh và thêm mã giao dịch", "Redo": "Làm lại", "Ultimate Oscillator_study": "Ultimate Oscillator", "Vert Grid Lines": "Đường lưới dọc", "Growing_input": "Tăng trưởng", "Angle": "Góc", "Plot_input": "Plot", "Color 8_input": "Mầu 8", "Indicators, Fundamentals, Economy and Add-ons": "Các chỉ số, yếu tố cơ bản, cơ cấu sắp xếp và tiện ích", "h_dates": "h", "ROC Length_input": "Độ dài ROC", "roclen3_input": "roclen3", "Overbought_input": "Quá mua", "Extend Top": "Mở rộng đầu", "No study templates saved": "Không lưu mẫu nghiên cứu", "Trend Line": "Đường xu hướng", "TimeZone": "Múi giờ ", "Your chart is being saved, please wait a moment before you leave this page.": "Biểu đồ của bạn đang được lưu, vui lòng đợi một lát trước khi bạn rời khỏi trang này.", "Percentage": "Tỷ lệ phần trăm", "Tu_day_of_week": "Thứ 3", "RSI Length_input": "RSI Length", "Triangle": "Hình tam giác", "Line With Breaks": "Các đường gãy", "Period_input": "Chu kỳ", "Watermark": "Chữ mờ", "Trigger_input": "Trigger", "SigLen_input": "SigLen", "Extend Right": "Kéo dài phía phải", "Color 2_input": "Mầu 2", "Show Prices": "Hiển thị các mức giá", "Unlock": "Mở khóa", "Copy": "Sao chép", "high": "cao", "Arc": "Hình vòng cung", "Edit Order": "Chỉnh sửa đơn hàng", "January": "Tháng một", "Arrow Mark Right": "Đánh dấu mũi tên sang phải", "Extend Alert Line": "Kéo dài đường cảnh báo", "Background color 1": "Màu hình nền 1", "RSI Source_input": "RSI Nguồn", "Close Position": "Đóng Trạng thái", "Stop syncing drawing": "Dừng đồng bộ bản vẽ", "Visible on Mouse Over": "Hiển thị trên chuột", "MA/EMA Cross_study": "Đường chéo MA/EMA", "Thu": "Thứ 5", "Vortex Indicator_study": "Chỉ báo Vortex", "view-only chart by {user}": "Biểu đồ chỉ xem bởi {user}", "ROCLen1_input": "ROCLen1", "M_interval_short": "M", "Chaikin Oscillator_input": "Dao động Chaikin", "Price Levels": "Các cấp độ giá", "Show Splits": "Hiển thị vết cắt", "Zero Line_input": "Đường Zero", "Replay Mode": "Chế độ Phát lại", "__specialSymbolOpen__Today at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__Ngày hôm nay tại__specialSymbolClose____dayTime__", "Increment_input": "Gia tăng", "Days_interval": "Ngày", "Show Right Scale": "Hiển thị khu vực bên phải", "Show Alert Labels": "Hiển thị nhãn cảnh báo", "Historical Volatility_study": "Biến động lịch sử", "Lock": "Khóa", "length14_input": "length14", "High": "Cao", "ext": "Xa", "Date and Price Range": "Phạm vi ngày và giá", "Polyline": "Hình polyline", "Reconnect": "Kết nối lại", "Lock/Unlock": "Khóa/Mở khóa", "Base Level": "Cấp cơ sở", "Label Down": "Nhãn Xuống", "Saturday": "Thứ bảy", "Symbol Last Value": "Giá trị cuối cùng của mã", "Above Bar": "Thanh bên trên", "Color 0_input": "Mầu 0", "Add Symbol": "Thêm mã giao dịch", "maximum_input": "Tối đa", "Wed": "Thứ 4", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "VWMA_study": "VWMA", "fastLength_input": "fastLength", "Time Levels": "Các cấp độ thời gian", "Width": "Chiều rộng", "Loading": "Đang tải", "Template": "Bản mẫu", "Use Lower Deviation_input": "Sử dụng độ lệch thấp hơn", "Up Wave 3": "Sóng trên 3", "Parallel Channel": "Kênh song song", "Time Cycles": "Vòng thời gian", "Second fraction part is invalid.": "Phần phân đoạn thứ hai không hợp lệ.", "Divisor_input": "Phân chia", "Down Wave 1 or A": "Xuống sóng 1 hoặc A", "Dec": "Tháng mười hai", "Ray": "Tia", "Extend": "Kéo dài", "length7_input": "length7", "Bottom": "Đáy", "Undo": "Khôi phục", "Original": "Nguyên bản", "Mon": "Thứ 2", "Reset Scale": "Thiết lập lại chia tỷ lệ", "Long Length_input": "Long Length", "True Strength Indicator_study": "Chỉ số Strength True", "%R_input": "%R", "There are no saved charts": "Không có biểu đồ lưu nào", "Instrument is not allowed": "Dụng cụ không được phép", "bars_margin": "Thanh ", "Decimal Places": "Vị trí thập phân", "Show Indicator Last Value": "Hiển thị các chỉ số giá trị sau cùng", "Initial capital": "Vốn ban đầu", "Mass Index_study": "Chỉ số khối", "More features on tradingview.com": "Nhiều tính năng khác trên tradingview.com", "Objects Tree...": "Danh sách đối tượng...", "Remove Drawing Tools & Indicators": "Bỏ các công cụ vẽ & Chỉ số", "Length1_input": "Length1", "Always Invisible": "Luôn ẩn", "Circle": "Đường tròn", "Studies": "Nghiên cứu", "x_input": "x", "Save As...": "Lưu dưới dạng...", "Elliott Double Combo Wave (WXY)": "Sóng đôi kết hợp Elliott (WXY)", "Parabolic SAR_study": "Parabolic SAR", "Any Symbol": "Mã bất kỳ", "Price Label": "Nhãn giá", "Short RoC Length_input": "Short RoC Length", "Projection": "Phép chiếu", "Jan": "Tháng 1", "Jaw_input": "Jaw", "Right": "Phải", "Help": "Trợ giúp", "Coppock Curve_study": "Đường cong Coppock", "Reversal Amount": "Số tiền hoàn lại", "Reset Chart": "Thiết lập lại biểu đồ", "Sunday": "Chủ nhật", "Left Axis": "Trục trái", "Open": "Mở cửa", "YES": "CÓ", "longlen_input": "longlen", "Moving Average Exponential_study": "Di chuyển trung bình Exponential", "Source border color": "Màu viền nguồn dữ liệu", "Redo {0}": "Làm lại {0}", "Cypher Pattern": "Mẫu hình Cypher", "s_dates": "s", "Area": "Biểu đồ vùng", "Triangle Pattern": "Mẫu hình tam giác", "Balance of Power_study": "Cân bằng sức mạnh", "EOM_input": "EOM", "Shapes_input": "Hình", "Oversold_input": "Quá bán", "Apply Manual Risk/Reward": "Áp dụng Rủi ro/Phần thưởng thủ công", "Market Closed": "Thị trường đóng cửa", "Indicators": "Các chỉ báo", "close": "đóng cửa", "q_input": "q", "You are notified": "Bạn được thông báo", "Font Icons": "Các biểu tượng phông chữ", "%D_input": "%D", "Border Color": "Màu đường viền", "Offset_input": "Bù lại", "Risk": "Rủi ro", "Price Scale": "Phạm vi giá", "HV_input": "HV", "Settings": "Cài đặt", "Start_input": "Bắt đầu", "Oct": "Tháng 10", "ROC_input": "ROC", "Send to Back": "Gửi cho quay lại", "Color 4_input": "Mầu 4", "Angles": "Góc", "Prices": "Các mức giá", "Hollow Candles": "Biểu đồ nến Hollow", "July": "Tháng bảy", "Create Horizontal Line": "Tạo đường chỉ ngang", "Minute": "Sóng khá nhỏ", "Cycle": "Sóng chu kỳ", "ADX Smoothing_input": "ADX Smoothing", "m_dates": "m", "(H + L + C)/3": "(Cao nhất + Thấp nhất + Đóng cửa) / 3", "Candles": "Biểu đồ nến", "We_day_of_week": "T4", "Width (% of the Box)": "Chiều rộng (% của Hộp)", "%d minute": "%d phút", "Go to...": "Đi tới...", "Pip Size": "Cỡ Pip", "Wednesday": "Thứ tư", "This drawing is used in alert. If you remove the drawing, the alert will be also removed. Do you want to remove the drawing anyway?": "Bản vẽ này được sử dụng trong cảnh báo. Nếu bạn loại bỏ các bản vẽ, cảnh báo sẽ được gỡ bỏ. Bạn có muốn xóa bản vẽ này không?", "Show Countdown": "Hiển thị đếm ngược", "Show alert label line": "Hiển thị đường nhãn cảnh báo", "Down Wave 2 or B": "Xuống sóng 2 hoặc B", "MA_input": "MA", "Length2_input": "Length2", "not authorized": "Không được phép", "Session Volume_study": "Lượng Phiên", "Image URL": "URL của ảnh", "SMI Ergodic Oscillator_input": "Dao động SMI Ergodic", "Show Objects Tree": "Hiển thị danh sách đối tượng", "Primary": "Sóng sơ cấp", "Price:": "Giá:", "Bring to Front": "Đưa lên phía trước", "Brush": "Cọ vẽ", "Not Now": "Không phải bây giờ", "Yes": "Có", "C_data_mode_connecting_letter": "C", "SMALen4_input": "SMALen4", "Apply Default Drawing Template": "Áp dụng mẫu vẽ mặc định", "Save As Default": "Lưu mặc định", "Target border color": "Màu viền cho mục tiêu", "Invalid Symbol": "Mã giao dịch không hợp lệ", "Inside Pitchfork": "Mô hình Pitchfork mặt trong", "yay Color 1_input": "yay Color 1", "Quandl is a huge financial database that we have connected to TradingView. Most of its data is EOD and is not updated in real-time, however the information may be extremely useful for fundamental analysis.": "Quandl là một cơ sở dữ liệu tài chính khổng lồ mà chúng tôi đã kết nối với TradingView. Hầu hết dữ liệu của nó là EOD và không được cập nhật trong thời gian thực, tuy nhiên thông tin có thể rất hữu ích cho việc phân tích cơ bản.", "Hide Marks On Bars": "Ẩn các điểm trên thanh", "Cancel Order": "Hủy Order", "Hide All Drawing Tools": "Ấn tất cả công cụ vẽ", "WMA Length_input": "WMA Length", "Show Dividends on Chart": "Hiển thị Cổ tức trên biểu đồ", "Show Executions": "Hiển thị sự thực hiện", "Borders": "Đường viền", "Remove Indicators": "Bỏ đi các chỉ số", "loading...": "đang tải...", "Closed_line_tool_position": "Đóng cửa", "Rectangle": "Hình chữ nhật", "Change Resolution": "Thay đổi độ phân giải", "Indicator Arguments": "Các tham số chỉ tiêu", "Symbol Description": "Mô tả mã giao dịch", "Chande Momentum Oscillator_study": "Dao động Chande Momentum", "Degree": "Độ", " per order": " từng đơn đặt hàng", "Jun": "Tháng 6", "Least Squares Moving Average_study": "Dịch chuyển Trung bình Least Squares", "powered by ": "Cung cấp bởi ", "Source_input": "Nguồn", "%K_input": "%K", "Scales Text": "Văn bản tỷ lệ", "Please enter template name": "Vui lòng nhập tên của mẫu", "Symbol Name": "Tên mã giao dịch", "Events Breaks": "Các sự kiện ngắt", "Study Templates": "Mẫu Nghiên Cứu", "Price Oscillator_study": "Dao động giá", "Symbol Info...": "Thông tin mã giao dịch...", "Elliott Wave Minor": "Sóng Elliott nhỏ", "Cross": "Đường chéo", "Measure (Shift + Click on the chart)": "Đo lường (Shift + Click trên biểu đồ)", "Override Min Tick": "Điều chỉnh số thập phân", "Show Positions": "Hiển thị vị trí", "Dialog": "Hộp thoại", "Add To Text Notes": "Thêm ghi chú", "Elliott Triple Combo Wave (WXYXZ)": "Sóng Elliott kết hợp ba (WXYXZ)", "Multiplier_input": "Nhân", "Risk/Reward": "Rủi ro/Phần thưởng", "Base Line Periods_input": "Các khoảng thời gian gốc", "Show Dividends": "Hiển thị Cổ tức", "Relative Strength Index_study": "Chỉ số sức mạnh tương đối", "Modified Schiff Pitchfork": "Mô hình Schiff Pitchfork biến đổi", "Top Labels": "Các nhãn phía trên", "Show Earnings": "Hiển thị thu nhập", "Elliott Triangle Wave (ABCDE)": "Sóng Elliott Tam giác (ABCDE)", "Text Wrap": "Xuống dòng tự động", "Reverse Position": "Đảo ngược trạng thái", "Elliott Minor Retracement": "Sóng Elliott nhỏ thoái lui", "DPO_input": "DPO", "Pitchfan": "Mô hình Pitchfork dạng quạt", "Slash_hotkey": "Gạch ngang", "No symbols matched your criteria": "Không mã giao dịch nào khớp với tiêu chuẩn của bạn", "Icon": "Biểu tượng", "lengthRSI_input": "lengthRSI", "Tuesday": "Thứ ba", "Teeth Length_input": "Teeth Length", "Indicator_input": "Chỉ báo", "Box size assignment method": "Phương pháp Định kích thước hộp", "Open Interval Dialog": "Mở hộp thoại khoảng thời gian", "Fib Speed Resistance Arcs": "Fibonacci kháng cự vòng cung", "Content": "Nội dung", "middle": "khoảng giữa", "Lock Cursor In Time": "Khóa con trỏ trong thời gian", "Intermediate": "Sóng trung cấp", "Eraser": "Tẩy", "Relative Vigor Index_study": "Chỉ số Vigor tương đối", "Envelope_study": "Phong bì", "Pre Market": "Thị trường trước", "Horizontal Line": "Đường nằm ngang", "O_in_legend": "O", "Confirmation": "Xác nhận", "Lines:": "Các đường ", "Hide Favorite Drawings Toolbar": "Ẩn thanh công cụ hay dùng", "X Cross": "Đường chéo X", "Profit Level. Ticks:": "Cấp độ lợi nhuận. Đánh dấu:", "Show Date/Time Range": "Hiển thị phạm vi ngày/thời gian", "Level {0}": "Cấp độ {0}", "Favorites": "Yêu thích", "Horz Grid Lines": "Đường lưới ngang", "-DI_input": "-DI", "Price Range": "Khoảng giá", "day": "Ngày", "deviation_input": "độ lệch", "week": "Tuần", "Value_input": "Giá trị", "Time Interval": "Khoảng thời gian", "Success text color": "Màu chữ lệnh thành công", "ADX smoothing_input": "ADX smoothing", "%d hour": "%d giờ", "Order size": "Cỡ đơn hàng", "Drawing Tools": "Công cụ vẽ", "Traditional": "Truyền thống", "Chaikin Money Flow_study": "Dòng tiền Chaikin", "Ease Of Movement_study": "Ease Of Movement", "Defaults": "Các mặc định", "Percent_input": "Phần trăm", "%": "phần trăm", "Interval is not applicable": "Khoảng thời gian không áp dụng được", "short_input": "ngắn", "Visual settings...": "Cài đặt trực quan...", "RSI_input": "RSI", "Chatham Islands": "Đảo Chatham", "Detrended Price Oscillator_input": "Dao động Giá", "Mo_day_of_week": "Mo", "center": "trung tâm", "Vertical Line": "Đường thẳng đứng", "Show Splits on Chart": "Hiển thị vết cắt trên biểu đồ", "Sorry, the Copy Link button doesn't work in your browser. Please select the link and copy it manually.": "Rất tiếc, nút Sao chép Liên kết không hoạt động trong trình duyệt của bạn. Vui lòng chọn liên kết và sao chép nó theo cách thủ công.", "X_input": "X", "Events & Alerts": "Sự kiện & Cảnh báo", "May": "Tháng năm", "ROCLen4_input": "ROCLen4", "Aroon Down_input": "Aroon Down", "Add To Watchlist": "Thêm vào danh sách theo dõi", "Total": "Tổng", "Price": "Giá", "left": "Bên trái", "Lock scale": "Khóa chia tỷ lệ", "Limit_input": "Giới hạn", "Baseline": "Đường cơ sở", "smalen1_input": "smalen1", "KST_input": "KST", "Extend Right End": "Kéo dài phía cuối phải", "Fans": "Các cánh quạt", "Color based on previous close_input": "Dựa trên mầu của phiên đóng cửa trước đó", "Price_input": "Giá", "Gann Fan": "Quạt Gann", "McGinley Dynamic_study": "McGinley Dynamic", "Relative Volatility Index_study": "Chỉ số Volatility tương đối", "Elliott Impulse Wave (12345)": "Sóng đẩy Elliott (12345)", "PVT_input": "PVT", "Show Hidden Tools": "Hiển thị các công cụ ẩn", "Hull Moving Average_study": "Hull Moving Average", "Symbol Prev. Close Value": "Xem lại mã giao dịch. Giá trị sát nhất", "{0} chart by TradingView": "{0} biểu đồ bởi TradingView", "Bring Forward": "Đưa lên trên", "Remove Drawing Tools": "Bỏ công cụ vẽ", "Friday": "Thứ sáu", "Zero_input": "Zero", "Company Comparison": "So sánh các công ty", "Stochastic Length_input": "Stochastic Length", "mult_input": "mult", "URL cannot be received": "URL không thể nhận được", "Success back color": "Màu hình nền lệnh thành công", "E_data_mode_end_of_day_letter": "E", "Trend-Based Fib Extension": "Fibonacci mở rộng dựa trên xu hướng", "Top": "Trên đầu", "Double Curve": "Đường cong đôi", "Stochastic RSI_study": "Stochastic RSI", "Horizontal Ray": "Tia nằm ngang", "smalen3_input": "smalen3", "Symbol Labels": "Nhãn mã giao dịch", "Script Editor...": "Biên tập kịch bản...", "Are you sure?": "Bạn có chắc chắn không?", "Trades on Chart": "Các Giao dịch trên Biểu đồ", "Listed Exchange": "Danh sách giao dịch", "Error:": "Lỗi:", "Fullscreen mode": "Chế độ toàn màn hình", "Add Text Note For {0}": "Thêm ghi chú cho {0}", "K_input": "K", "ROCLen3_input": "ROCLen3", "Text Color": "Màu văn bản", "Rename Chart Layout": "Đổi tên bố cục biểu đồ", "Background color 2": "Màu hình nền 2", "Drawings Toolbar": "Thanh công cụ vẽ", "Moving Average Channel_study": "Kênh Moving Average", "Source Code...": "Mã nguồn...", "CHOP_input": "CHOP", "Apply Defaults": "Áp dụng nhiều mặc định", "% of equity": "% Vốn Cổ Phần", "Extended Alert Line": "Đường cảnh báo được kéo dài", "Note": "Ghi chú", "OK": "Đồng ý", "like": "thích", "Show": "Hiển thị", "{0} bars": "{0} thanh", "Lower_input": "Thấp hơn", "Created ": "Đã tạo ", "Warning": "Cảnh báo", "Elder's Force Index_study": "Chỉ báo Elder's Force", "Show Earnings on Chart": "Hiển thị thu nhập trên biểu đồ", "ATR_input": "ATR", "Low": "Thấp", "Bollinger Bands %B_study": "Bollinger Bands %B", "Time Zone": "Múi giờ ", "right": "phải", "%d month": "%d tháng", "Wrong value": "Sai giá trị", "Upper Band_input": "Upper Band", "Sun": "CN", "Rename...": "Đổi tên...", "start_input": "bắt đầu", "No indicators matched your criteria.": "Không có chỉ số nào khớp với tiêu chí của bạn", "Commission": "Hoa hồng", "Down Color": "Mầu xuống", "Short length_input": "Short length", "Triple EMA_study": "Triple EMA", "Technical Analysis": "Phân tích kĩ thuật", "Show Text": "Hiển thị văn bản", "Channel": "Kênh", "FXCM CFD data is available only to FXCM account holders": "Dữ liệu CFCM CFD chỉ có sẵn cho người có tài khoản của FXCM", "Lagging Span 2 Periods_input": "Giai đoạn Lagging Span 2", "Connecting Line": "Đường kết nối", "bottom": "phía dưới", "Teeth_input": "Teeth", "Sig_input": "Sig", "Open Manage Drawings": "Mở quản lý vẽ", "Save New Chart Layout": "Lưu lại bố cục biểu đồ mới", "Fib Channel": "Kênh Fibonacci", "Minutes_interval": "Phút", "Up Wave 2 or B": "Sóng trên 2 hoặc B", "Columns": "Các cột", "Directional Movement_study": "Hướng di chuyển", "roclen2_input": "roclen2", "Apply WPT Down Wave": "Áp dụng Sóng WPT Dưới", "Not applicable": "Không áp dụng được", "Bollinger Bands %B_input": "Bollinger Bands %B", "Default": "Mặc định", "Template name": "Tên Mẫu", "Indicator Values": "Chỉ tiêu giá trị", "Lips Length_input": "Lips Length", "Use Upper Deviation_input": "Sử dụng độ lệch cao hơn", "L_in_legend": "L", "Remove custom interval": "Loại bỏ các khoảng tùy chỉnh", "shortlen_input": "shortlen", "Quotes are delayed by {0} min": "Báo giá bị hoãn sau {0} phút", "Hide Events on Chart": "Ẩn các sự kiện trên biểu đồ", "Williams Alligator_study": "Williams Alligator", "Profit Background Color": "Màu hình nền phần lợi nhuận", "Bar's Style": "Định dạng thanh", "Exponential_input": "số mũ", "Down Wave 5": "Xuống sóng 5", "Previous": "Trước đó", "Stay In Drawing Mode": "Giữ nguyên chế độ vẽ", "Comment": "Bình luận", "Connors RSI_study": "Connors RSI", "Bars": "Hình Thanh", "Show Labels": "Hiển thị các nhãn", "Flat Top/Bottom": "Mặt phẳng đỉnh/đáy", "Symbol Type": "Loại Mã giao dịch", "December": "Tháng mười hai", "Lock drawings": "Khóa công cụ vẽ", "Border color": "Màu đường viền", "Left Labels": "Các nhãn bên trái", "Insert Indicator...": "Chèn chỉ số...", "ADR_B_input": "ADR_B", "Paste %s": "Dán %s", "Change Symbol...": "Đổi mã giao dịch...", "Timezone": "Múi giờ", "Invite-only script. You have been granted access.": "Kịch bản chỉ hiển thị cho người được mời. Bạn đã được cấp quyền truy cập", "Color 6_input": "Mầu 6", "ATR Length": "Độ dài ATR", "{0} financials by TradingView": "{0} tài chính bởi TradingView.", "Extend Lines Left": "Kéo dài đường bên trái", "Feb": "Tháng hai", "Transparency": "Độ minh bạch", "No": "Không", "June": "Tháng sáu", "Cyclic Lines": "Các đường chu kỳ", "length28_input": "length28", "ABCD Pattern": "Mẫu hình ABCD", "When selecting this checkbox the study template will set \"__interval__\" interval on a chart": "Khi chọn ô này, mẫu nghiên cứu sẽ đặt \"__interval__\" khoảng thời gian trên một biểu đồ", "Add": "Cộng Thêm", "Scale": "Tỷ lệ", "On Balance Volume_study": "Trên Cân Bằng Khối Lượng", "Apply Indicator on {0} ...": "Áp dụng chỉ báo cho {0} ...", "NEW": "MỚI", "Chart Layout Name": "Tên Bố cục Biểu đồ", "Up bars": "Thanh trên", "Hull MA_input": "Hull MA", "Lock Scale": "Khóa chia tỷ lệ", "distance: {0}": "Khoảng cách: {0}", "Extended": "Kéo dài", "Square": "Hình vuông", "log": "logarit", "NO": "KHÔNG", "Top Margin": "Lề trên", "Up fractals_input": "Up fractals", "Insert Drawing Tool": "Chèn công cụ vẽ", "OHLC Values": "Giá trị OHLC", "Correlation_input": "Tương quan", "Session Breaks": "Nghỉ giữa phiên", "Add {0} To Watchlist": "Thêm {0} vào Danh sách theo dõi", "Anchored Note": "Ghi chú được ghim", "lipsLength_input": "lipsLength", "low": "thấp", "Apply Indicator on {0}": "Áp dụng chỉ báo cho {0}", "UpDown Length_input": "Độ dài tối đa", "November": "Tháng mười một", "Balloon": "Bình luận", "Track time": "Theo dõi thời gian", "Background Color": "Màu hình nền ", "an hour": "một giờ", "Right Axis": "Trục phải", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "slowLength", "Click to set a point": "Nhấn để thiết lập một điểm", "Save Indicator Template As...": "Lưu Mẫu Chỉ Báo Là...", "Arrow Up": "Mũi tên Lên", "n/a": "Không có sẵn", "Indicator Titles": "Tiêu đề chỉ tiêu", "Failure text color": "Màu văn bản cho lệnh thất bại", "Sa_day_of_week": "Sa", "Net Volume_study": "Khối lượng ròng", "Error": "Lỗi", "RVI_input": "RVI", "Centered_input": "Trung tâm", "Recalculate On Every Tick": "Tính lại trên mỗi Tick", "Left": "Bên trái", "Simple ma(oscillator)_input": "Simple ma(oscillator)", "Compare": "So sánh", "Fisher Transform_study": "Fisher Transform", "Show Orders": "Hiển thị các đơn", "Zoom In": "Phóng to ", "Length EMA_input": "Length EMA", "Enter a new chart layout name": "Điền tên định dạng biểu đồ mới", "Signal Length_input": "Chiều dài tín hiệu", "FAILURE": "THẤT BẠI", "Point Value": "Giá trị điểm", "D_interval_short": "D", "MA with EMA Cross_study": "MA với đường chéo EMA", "Label Up": "Nhãn Lên", "Price Channel_study": "Kênh Giá", "Close": "Đóng cửa", "ParabolicSAR_input": "ParabolicSAR", "Log Scale_scale_menu": "Tỷ lệ logarit", "MACD_input": "MACD", "Do not show this message again": "Không hiển thị tin nhắn này lại nữa", "{0} P&L: {1}": "{0} Lợi nhuận & Thua lỗ: {1}", "No Overlapping Labels": "Không có Nhãn chồng chéo", "Arrow Mark Left": "Đánh dấu mũi tên sang trái", "Slow length_input": "Slow length", "Up Wave 4": "Sóng trên 4", "(O + H + L + C)/4": "(Mở cửa + Cao nhất + Thấp nhất + Đóng cửa) / 4", "Confirm Inputs": "Xác nhận đầu vào", "Open_line_tool_position": "Mở cửa", "Lagging Span_input": "Lagging Span", "Subminuette": "Sóng cực nhỏ", "Thursday": "Thứ năm", "Arrow Down": "Mũi tên Xuống", "Elliott Correction Wave (ABC)": "Sóng điều chỉnh Elliott (ABC)", "Error while trying to create snapshot.": "Lỗi khi cố gắng tạo ảnh chụp nhanh.", "Label Background": "Hình nền của nhãn", "Templates": "Biểu mẫu", "Please report the issue or click Reconnect.": "Vui lòng báo cáo sự cố hoặc nhấp vào Kết nối lại.", "Normal": "Bình thường", "Signal Labels": "Nhãn Tín hiệu", "Delete Text Note": "Xóa văn bản ghi nhớ", "compiling...": "biên soạn...", "Detrended Price Oscillator_study": "Dao động Giá", "Color 5_input": "Mầu 5", "Fixed Range_study": "Phạm vi cố định", "Up Wave 1 or A": "Sóng trên 1 hoặc A", "Scale Price Chart Only": "Chia tỷ lệ chỉ biểu đồ giá", "Right End": "Phía cuối bên phải", "auto_scale": "Tự động", "Short period_input": "Chu kỳ Ngắn", "Background": "Hình nền", "Up Color": "Mầu lên", "Apply Elliot Wave Intermediate": "Áp dụng Sóng Elliot mức trung bình", "VWMA_input": "VWMA", "Lower Deviation_input": "Độ lệch thấp hơn", "Save Interval": "Lưu khoảng thời gian", "February": "Tháng hai", "Reverse": "Đảo ngược", "Oops, something went wrong": "Oops, có lỗi xảy ra", "Add to favorites": "Thêm vào mục yêu thích", "Median": "Trung bình", "ADX_input": "ADX", "Remove": "Loại bỏ", "len_input": "len", "Arrow Mark Up": "Đánh dấu mũi tên lên", "April": "Tháng Tư", "Active Symbol": "Mã Hoạt động", "Crosses_input": "Đường chéo", "Middle_input": "khoảng giữa", "Read our blog for more info!": "Đọc Blog của chúng tôi để biết thêm thông tin!", "Sync drawing to all charts": "Đồng bộ hóa vẽ trên tất cả các biểu đồ", "LowerLimit_input": "LowerLimit", "Know Sure Thing_study": "Điều biết chắc chắn", "Copy Chart Layout": "Sao chép định dạng biểu đồ", "Compare...": "So sánh...", "1. Slide your finger to select location for next anchor
2. Tap anywhere to place the next anchor": "1.Trượt ngón tay của bạn để chọn vị trí cho mốc tiếp theo
2. Bấm vào bất kỳ vị trí nào nào để đặt mốc tiếp theo", "Text Notes are available only on chart page. Please open a chart and then try again.": "Ghi chú văn bản chỉ có trên trang biểu đồ. Vui lòng mở một biểu đồ và sau đó thử lại.", "Color": "Màu sắc", "Aroon Up_input": "Aroon Up", "Scales Lines": "Đường tỷ lệ", "Type the interval number for munute charts (i.e. 5 if it is going to be a five minute chart). Or number plus letter for H (Hourly), D (Daily), W (Weekly), M (Monthly) intervals (i.e. D or 2H)": "Nhập số khoảng thời gian cho biểu đồ phút (ví dụ 5 nếu đó là biểu đồ năm phút). Hoặc số cộng với chữ H (Hàng giờ), D (Hàng ngày), W (Hàng tuần), M (Hàng tháng) khoảng (ví dụ D hoặc 2H)", "HLC Bars": "Thanh HLC", "Up Wave C": "Sóng trên C", "Show Distance": "Hiển thị khoảng cách", "Risk/Reward Ratio: {0}": "Tỷ lệ Rủi ro/Lợi nhuận: {0}", "Volume Oscillator_study": "Khối lượng Dao động", "Williams Fractal_study": "Williams Fractal", "Merge Up": "Sáp nhập lên", "Right Margin": "Lề phải", "Ellipse": "Hình elip"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/widgets-copyrights.json b/static/Kline/charting_library/static/localization/translations/widgets-copyrights.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/widgets-copyrights.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/widgets-copyrights.json.example b/static/Kline/charting_library/static/localization/translations/widgets-copyrights.json.example new file mode 100644 index 0000000..5e868ea --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/widgets-copyrights.json.example @@ -0,0 +1,3 @@ +{ + "default": "by {0}" +} diff --git a/static/Kline/charting_library/static/localization/translations/zh.json b/static/Kline/charting_library/static/localization/translations/zh.json new file mode 100644 index 0000000..efdcdc2 --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/zh.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "标记号", "Months_interval": "月", "Realtime": "实时", "Callout": "标注", "Sync to all charts": "同步到所有图表", "month": "月", "London": "伦敦", "roclen1_input": "变化速率长度1", "Unmerge Down": "取消向下合并", "Percents": "百分比", "Search Note": "搜索笔记", "Minor": "次要", "Do you really want to delete Chart Layout '{0}' ?": "确定删除图表排版'{0}'?", "Quotes are delayed by {0} min and updated every 30 seconds": "报价延时 {0} 分钟,每30秒更新一次", "Magnet Mode": "磁铁模式", "Grand Supercycle": "超级大周期", "OSC_input": "OSC", "Hide alert label line": "隐藏警报标签线", "Volume_study": "成交量(Volume)", "Lips_input": "嘴唇", "Show real prices on price scale (instead of Heikin-Ashi price)": "在价格坐标上显示实际价格(而不是Heikin-Ashi价格)", "Histogram": "直方图", "Base Line_input": "基准线", "Step": "阶梯", "Insert Study Template": "插入指标模板", "Fib Time Zone": "斐波那契时间周期", "SMALen2_input": "简单移动平均长度2", "Bollinger Bands_study": "布林带(Bollinger Bands)", "Nov": "11月", "Show/Hide": "显示/隐藏", "Upper_input": "上限", "exponential_input": "指数化", "Move Up": "上涨", "Symbol Info": "商品信息", "This indicator cannot be applied to another indicator": "该指标无法运用到其他指标上", "Scales Properties...": "坐标属性...", "Count_input": "计数", "Full Circles": "完整圆圈", "Ashkhabad": "阿什哈巴德", "OnBalanceVolume_input": "能量潮指标(OBV)", "Cross_chart_type": "十字图", "H_in_legend": "高=", "a day": "一天", "Pitchfork": "分叉线", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "累积/派发线(Accumulation/Distribution)", "Rate Of Change_study": "变化速率(Rate Of Change)", "Text Font": "字体", "in_dates": "共", "Clone": "克隆", "Color 7_input": "颜色7", "Chop Zone_study": "波动区间(Chop Zone)", "Bar #": "K线#", "Scales Properties": "坐标属性", "Trend-Based Fib Time": "斐波那契趋势时间", "Remove All Indicators": "移除所有指标", "Oscillator_input": "震动指数", "Last Modified": "最后修改", "yay Color 0_input": "yay 颜色 0", "Labels": "标签", "Chande Kroll Stop_study": "钱德克罗止损(Chande Kroll Stop)", "Hours_interval": "小时", "Allow up to": "最多允许", "Scale Right": "缩放右边", "Money Flow_study": "资金流量(Money Flow)", "siglen_input": "Sigma 长度", "Indicator Labels": "指标标签", "__specialSymbolOpen__Tomorrow at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__明日在__specialSymbolClose__ __dayTime__", "Hide All Drawing Tools": "隐藏所有绘图工具", "Toggle Percentage": "切换为百分比坐标", "Remove All Drawing Tools": "移除所有绘图工具", "Remove all line tools for ": "移除所有画线工具 ", "Linear Regression Curve_study": "线性回归曲线(Linear Regression Curve)", "Symbol_input": "商品代码", "Currency": "货币", "increment_input": "增量", "Compare or Add Symbol...": "对比或叠加品种...", "__specialSymbolOpen__Last__specialSymbolClose__ __dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__最后__specialSymbolClose__ __dayName__ __specialSymbolOpen__在__specialSymbolClose__ __dayTime__", "Save Chart Layout": "保存图表排版", "Number Of Line": "线条数量", "Label": "标签", "Post Market": "后市场", "second": "秒", "Change Hours To": "修改小时为", "smoothD_input": "平滑D", "Falling_input": "下降", "X_input": "X指", "Risk/Reward short": "空头风险/回报比", "UpperLimit_input": "上限带", "Donchian Channels_study": "唐奇安通道(Donchian Channels)", "Entry price:": "进场价格:", "Circles": "圆点图", "Head": "头", "Stop: {0} ({1}) {2}, Amount: {3}": "止损:{0} ({1}) {2}, 账户: {3}", "Mirrored": "镜像", "Ichimoku Cloud_study": "一目均衡图(Ichimoku Cloud)", "Signal smoothing_input": "信号平滑", "Use Upper Deviation_input": "使用上偏差", "Toggle Auto Scale": "切换为自动缩放", "Grid": "网格", "Triangle Down": "下降三角形", "Apply Elliot Wave Minor": "应用艾略特小型浪", "Slippage": "滑点", "Smoothing_input": "平滑", "Color 3_input": "颜色3", "Jaw Length_input": "下颚长度", "Almaty": "阿拉木图", "Inside": "内部", "Delete all drawing for this symbol": "删除此代码中的所有绘图", "Fundamentals": "基本面", "Keltner Channels_study": "肯特纳通道(Keltner Channels)", "Long Position": "多头持仓", "Bands style_input": "带样式", "Undo {0}": "撤销", "With Markers": "带标记", "Momentum_study": "动量指标(Momentum)", "MF_input": "MF", "Gann Box": "江恩箱", "Switch to the next chart": "跳转到下一张图表", "charts by TradingView": "TradingView的图表", "Fast length_input": "快线长度", "Apply Elliot Wave": "应用艾略特波浪", "Disjoint Angle": "不相交角", "Supermillennium": "超千年", "W_interval_short": "W", "Show Only Future Events": "只显示未来事件", "Log Scale": "对数坐标", "Zurich": "苏黎世", "Equality Line_input": "等量线", "Short_input": "短期", "Fib Wedge": "斐波那契楔形", "Line": "线形图", "Session": "时段", "Down fractals_input": "向下分形", "Fib Retracement": "斐波那契回撤", "smalen2_input": "简单移动平均长度2", "isCentered_input": "居中", "Border": "边框", "Klinger Oscillator_study": "克林格成交量摆动指标(Klinger Oscillator)", "Absolute": "绝对位置", "Tue": "周二", "Style": "样式", "Show Left Scale": "显示左侧坐标", "SMI Ergodic Indicator/Oscillator_study": "SMI 遍历性指标(SMI Ergodic Indicator/Oscillator)", "Aug": "8月", "Last available bar": "最后一根可用的K线", "Manage Drawings": "管理绘图", "Analyze Trade Setup": "分析交易设定", "No drawings yet": "尚未绘图", "SMI_input": "SMI", "Chande MO_input": "钱德动量摆动指标(Chande MO)", "jawLength_input": "下颚长度", "TRIX_study": "三重指数平滑移动平均线(TRIX)", "Show Bars Range": "显示K线区间", "RVGI_input": "RVGI", "Last edited ": "上次编辑 ", "signalLength_input": "信号长度", "%s ago_time_range": "%s 前", "Reset Settings": "重置设置", "PnF": "点数图", "Renko": "砖形图", "d_dates": "天", "Point & Figure": "点数图", "August": "8月", "Recalculate After Order filled": "订单成交后重新计算", "Source_compare": "来源", "Down bars": "下跌K线", "Correlation Coefficient_study": "相关系数(Correlation Coefficient)", "Delayed": "延迟的", "Bottom Labels": "底标签", "Text color": "文字颜色", "Levels": "水平位", "Length_input": "长度", "Short Length_input": "短期长度", "teethLength_input": "齿距", "Visible Range_study": "可视范围", "Hong Kong": "香港", "Text Alignment:": "文字对齐:", "Open {{symbol}} Text Note": "打开{{symbol}}文本说明", "October": "10月", "Lock All Drawing Tools": "锁定所有绘图工具", "Long_input": "长线", "Right End": "右端", "Show Symbol Last Value": "显示商品当前价格", "Head & Shoulders": "头肩形", "Do you really want to delete Study Template '{0}' ?": "确定删除学习模板'{0}'?", "Favorite Drawings Toolbar": "收藏绘图工具列", "Properties...": "属性...", "Reset Scale": "重置坐标", "MA Cross_study": "移动揉搓线(MA Cross)", "Trend Angle": "趋势线角度", "Snapshot": "快照", "Crosshair": "十字线", "Signal line period_input": "信号线期", "Timezone/Sessions Properties...": "时区/交易时段属性...", "Line Break": "新价线", "Quantity": "数量", "Price Volume Trend_study": "价量趋势指标(Price Volume Trend)", "Auto Scale": "自动缩放", "hour": "小时", "Delete chart layout": "删除图表排版", "Text": "内容", "F_data_mode_forbidden_letter": "F", "Risk/Reward long": "多头盈亏比", "Apr": "4月", "Long RoC Length_input": "长线变量长度", "Length3_input": "长度3", "+DI_input": "+DI", "Madrid": "马德里", "Use one color": "使用一种颜色", "Chart Properties": "图表属性", "No Overlapping Labels_scale_menu": "无重叠标签", "Exit Full Screen (ESC)": "退出全屏(ESC)", "MACD_study": "MACD", "Show Economic Events on Chart": "在图上显示财经事件", "Moving Average_study": "移动平均线(Moving Average)", "Show Wave": "显示波形", "Failure back color": "失败背景颜色", "Below Bar": "Bar下方", "Time Scale": "时间坐标", "

Only D, W, M intervals are supported for this symbol/exchange. You will be automatically switched to a D interval. Intraday intervals are not available because of exchange policies.

": "

此商品/交易仅支持日,周,月周期。您的图表将自动切换到日周期图。基于交易政策,我们无法提供日内周期资料。

", "Extend Left": "向左延伸", "Date Range": "日期范围", "Min Move": "最小移动", "Price format is invalid.": "价格格式无效", "Show Price": "显示价格", "Level_input": "等级", "Angles": "角度", "Hide Favorite Drawings Toolbar": "隐藏常用绘图工具栏", "Commodity Channel Index_study": "商品路径指标(Commodity Channel Index)", "Elder's Force Index_input": "艾达尔强力指数(Elder's FI)", "Gann Square": "江恩正方", "Phoenix": "菲尼克斯", "Format": "设置", "Color bars based on previous close": "K线颜色基于前一个收盘价", "Change band background": "变更带背景", "Target: {0} ({1}) {2}, Amount: {3}": "目标: {0} ({1}) {2}, 账户: {3}", "Zoom Out": "缩小", "This chart layout has a lot of objects and can't be published! Please remove some drawings and/or studies from this chart layout and try to publish it again.": "本图表版面上有太多对象,无法发表!请从图上移除一些内容然后再尝试发表。", "Anchored Text": "锚点文字", "Long length_input": "长线长度", "Edit {0} Alert...": "编辑{0}警报...", "Previous Close Price Line": "上一个收盘价格线", "Up Wave 5": "上涨浪5", "Qty: {0}": "仓量:{0}", "Heikin Ashi": "平均K线图", "Aroon_study": "阿隆指标(Aroon)", "show MA_input": "显示移动平均", "Industry": "行业", "Lead 1_input": "前置1", "Short Position": "空头持仓", "SMALen1_input": "简单移动平均长度1", "P_input": "P指", "Apply Default": "应用默认", "SMALen3_input": "简单移动平均长度3", "Average Directional Index_study": "平均趋向指数(Average Directional Index)", "Fr_day_of_week": "星期五", "Invite-only script. Contact the author for more information.": "仅限邀请的脚本。请联系作者了解更多详情。", "Curve": "曲线", "a year": "一年", "Target Color:": "目标颜色:", "Bars Pattern": "复制K线", "D_input": "D", "Font Size": "字体大小", "Create Vertical Line": "建立垂直线", "p_input": "P指", "Rotated Rectangle": "旋转矩形", "Chart layout name": "图表排版名称", "Fib Circles": "斐波那契圆环", "Apply Manual Decision Point": "应用手动决策点", "Dot": "圆点", "Target back color": "终点背景颜色", "All": "全部", "orders_up to ... orders": "订单", "Dot_hotkey": "点", "Lead 2_input": "前置2", "Save image": "保存图片", "Move Down": "下跌", "Triangle Up": "上升三角形", "Box Size": "箱体大小", "Navigation Buttons": "导览按钮", "Miniscule": "极小的", "Apply": "应用", "Down Wave 3": "下跌浪3", "Plots Background_study": "绘制背景", "Marketplace Add-ons": "市场附加", "Sine Line": "正弦线", "Fill": "填充", "%d day": "%d日", "Hide": "隐藏", "Toggle Maximize Chart": "切换为最大化图表", "Target text color": "终点文字颜色", "Scale Left": "缩放左边", "Elliott Wave Subminuette": "艾略特次微浪", "Down Wave C": "下跌浪C", "Countdown": "倒计时", "UO_input": "终极震荡指标(UO)", "Pyramiding": "金字塔式", "Source back color": "起点背景颜色", "Go to Date...": "前往日期...", "Sao Paulo": "圣保罗", "R_data_mode_realtime_letter": "R", "Extend Lines": "延长线", "Conversion Line_input": "转换线(Conversion Line)", "March": "3月", "Su_day_of_week": "星期日", "Exchange": "交易所", "My Scripts": "我的脚本", "Arcs": "弧形", "Regression Trend": "回归趋势", "Short RoC Length_input": "短期变量长度", "Fib Spiral": "斐波那契螺旋", "Double EMA_study": "双指数移动平均线(Double EMA)", "minute": "分钟", "All Indicators And Drawing Tools": "所有指标和绘图工具", "Indicator Last Value": "指标最后值", "Sync drawings to all charts": "同步绘图到所有图表", "Change Average HL value": "变化HL值平均", "Stop Color:": "止损颜色:", "Stay in Drawing Mode": "保持绘图模式", "Bottom Margin": "下边距", "Dubai": "迪拜", "Save Chart Layout saves not just some particular chart, it saves all charts for all symbols and intervals which you are modifying while working with this Layout": "保存图表排版,不只是保存几个特定的图表,同时也保存了您在使用此版面期间修改的所有商品和周期设定。", "Average True Range_study": "真实波动幅度均值(Average True Range)", "Max value_input": "最大值", "MA Length_input": "MA 长度", "Invite-Only Scripts": "仅限邀请的脚本", "in %s_time_range": "在%s", "Extend Bottom": "向下延伸", "sym_input": "系统", "DI Length_input": "DI长度", "Rome": "罗马", "Periods_input": "阶段", "Arrow": "箭头", "useTrueRange_input": "使用真实范围", "Basis_input": "底部", "Arrow Mark Down": "向下箭头", "lengthStoch_input": "Stoch长度", "Taipei": "台北", "Objects Tree": "工具树状图", "Remove from favorites": "从收藏中移除", "Show Symbol Previous Close Value": "显示商品前一收盘价", "Scale Series Only": "仅缩放数据", "Source text color": "起点文字颜色", "Simple": "简单", "Report a data issue": "报告数据问题", "Arnaud Legoux Moving Average_study": "阿诺勒古移动平均线(Arnaud Legoux Moving Average)", "Smoothed Moving Average_study": "平滑移动平均线(Smoothed Moving Average)", "Lower Band_input": "下限", "Verify Price for Limit Orders": "为限价单核对价格", "VI +_input": "VI +", "Line Width": "线宽", "Contracts": "合约", "Always Show Stats": "总是显示统计资料", "Down Wave 4": "下跌浪4", "ROCLen2_input": "变化速率长度2", "Simple ma(signal line)_input": "简单移动平均(信号线)", "Change Interval...": "变更周期...", "Public Library": "公共指标库", " Do you really want to delete Drawing Template '{0}' ?": " 确定删除绘图模板'{0}'?", "Sat": "星期六", "Left Shoulder": "左肩", "week": "周", "CRSI_study": "康纳相对强弱指指数(CRSI)", "Close message": "关闭讯息", "Jul": "7月", "Value_input": "值", "Show Drawings Toolbar": "显示绘图工具栏", "Chaikin Oscillator_study": "蔡金资金流量震荡指标(Chaikin Oscillator)", "Price Source": "价格源", "Market Open": "盘中", "Color Theme": "主题颜色", "Projection up bars": "预测上涨线", "Awesome Oscillator_study": "动量震荡指标(Awesome Oscillator)", "Bollinger Bands Width_input": "布林带宽度", "long_input": "长线", "Error occured while publishing": "发表观点时发生错误", "Fisher_input": "费舍尔", "Color 1_input": "颜色1", "Moving Average Weighted_study": "加权移动平均线(Moving Average Weighted)", "Save": "保存", "Type": "类型", "Wick": "烛芯", "Accumulative Swing Index_study": "振动升降指标(ASI)", "Load Chart Layout": "加载图表排版", "Show Values": "显示值", "Fib Speed Resistance Fan": "斐波那契速度阻力扇", "Bollinger Bands Width_study": "布林带宽度(Bollinger Bands Width)", "This chart layout has more than 1000 drawings, which is a lot! This may negatively affect performance, storage and publishing. We recommend to remove some drawings to avoid potential performance issues.": "此图表排版中有超过1000个绘图,太多了!可能对性能、存储和发表产生负面影响。我们建议删除一些绘图,以避免潜在的性能问题。", "Left End": "左端", "%d year": "%d年", "Always Visible": "总是显示", "S_data_mode_snapshot_letter": "S", "Flag": "旗形", "Elliott Wave Circle": "艾略特循环浪", "Earnings breaks": "盈余突破", "Change Minutes From": "变更分钟自", "Do not ask again": "不要再问", "Displacement_input": "移位", "smalen4_input": "简单移动平均长度4", "CCI_input": "CCI", "Upper Deviation_input": "上偏差", "(H + L)/2": "(最高价+最低价)/2", "XABCD Pattern": "XABCD 形态", "Schiff Pitchfork": "希夫分叉线", "Copied to clipboard": "复制到剪贴板", "hl2": "高低2", "Flipped": "翻转", "DEMA_input": "DEMA", "Move_input": "Move", "NV_input": "NV", "Choppiness Index_study": "波动指数(Choppiness Index)", "Study Template '{0}' already exists. Do you really want to replace it?": "指标模板{0}已经存在。确定替换?", "Merge Down": "向下合并", "Th_day_of_week": "周四", " per contract": " 每份合约", "Overlay the main chart": "显示于主图上", "Screen (No Scale)": "界面(无缩放)", "Delete": "删除", "Save Indicator Template As": "保存指标模板为", "Length MA_input": "MA长度", "percent_input": "百分比", "September": "9月", "{0} copy": "{0} 复制", "Avg HL in minticks": "最小刻度的高低平均价", "Accumulation/Distribution_input": "累积/派发指标(Accumulation/Distribution)", "Sync": "同步", "C_in_legend": "收=", "Weeks_interval": "周", "smoothK_input": "平滑K", "Percentage_scale_menu": "百分比坐标", "Change Extended Hours": "变更延长交易时段", "MOM_input": "MOM", "h_interval_short": "h", "Change Interval": "变更周期", "Change area background": "变更区块背景", "Modified Schiff": "调整希夫", "top": "上", "Adelaide": "阿德莱德", "Send Backward": "下移一层", "Mexico City": "墨西哥城", "TRIX_input": "三重指数平滑平均线(TRIX)", "Show Price Range": "显示价格区间", "Elliott Major Retracement": "艾略特主波浪回撤", "ASI_study": "振动升降指标(ASI)", "Notification": "通知", "Fri": "星期五", "just now": "刚刚", "Forecast": "预测值", "Fraction part is invalid.": "小数部分无效", "Connecting": "正在连接", "Ghost Feed": "模拟K线", "Signal_input": "信号", "Histogram_input": "直方图", "The Extended Trading Hours feature is available only for intraday charts": "延时交易时间功能仅适用于日图表", "Stop syncing": "停止同步", "open": "开盘", "StdDev_input": "标准差", "EMA Cross_study": "EMA交叉", "Conversion Line Periods_input": "转换线周期(Conversion Line Periods)", "Diamond": "钻石", "Brisbane": "布里斯班", "Monday": "星期一", "Add Symbol_compare_or_add_symbol_dialog": "叠加品种", "Williams %R_study": "威廉姆斯指标(Williams %R)", "Symbol": "交易品种", "a month": "一个月", "Precision": "精确度", "depth_input": "深度", "Go to": "前往到", "Please enter chart layout name": "请输入图表排版名称", "Mar": "3月", "VWAP_study": "成交量加权平均价(VWAP)", "Offset": "偏移", "Date": "日期", "Format...": "设置...", "__dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__dayName__ __specialSymbolOpen__在__specialSymbolClose__ __dayTime__", "Toggle Maximize Pane": "切换到最大化窗口", "Search": "搜索", "Zig Zag_study": "之字转向(Zig Zag)", "Actual": "公布值", "SUCCESS": "成功", "Long period_input": "长周期", "length_input": "长度", "roclen4_input": "变化速率长度4", "Price Line": "价格线", "Area With Breaks": "中断面积图", "Median_input": "中线", "Stop Level. Ticks:": "止损位.点数:", "Window Size_input": "视窗大小", "Economy & Symbols": "经济 & 商品品种", "Circle Lines": "圆形线圈", "Visual Order": "视觉次序", "__specialSymbolOpen__Yesterday at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__昨日在__specialSymbolClose__ __dayTime__", "Stop Background Color": "止损背景颜色", "1. Slide your finger to select location for first anchor
2. Tap anywhere to place the first anchor": "1.请拖曳您的手指选择第一个游标的放置地点
2.点击任何一处即可定位", "Sector": "产业", "powered by TradingView": "由TradingView提供", "Text:": "文字:", "Stochastic_study": "随机指数(Stochastic)", "Sep": "9月", "TEMA_input": "TEMA", "Apply WPT Up Wave": "应用WPT Up波", "Min Move 2": "最小移动2", "Extend Left End": "左端延伸", "Projection down bars": "预测下涨线", "Advance/Decline_study": "涨跌比(Advance/Decline)", "New York": "纽约", "Flag Mark": "旗标", "Drawings": "绘图", "Cancel": "取消", "Compare or Add Symbol": "对比或叠加品种", "Redo": "重做", "Hide Drawings Toolbar": "隐藏绘图工具栏", "Ultimate Oscillator_study": "终极波动指标(Ultimate Oscillator)", "Vert Grid Lines": "垂直网格线", "Growing_input": "增长", "Angle": "角度", "Plot_input": "描写", "Chicago": "芝加哥", "Color 8_input": "颜色8", "Indicators, Fundamentals, Economy and Add-ons": "指标、基本面、经济和加载项", "h_dates": "小时", "ROC Length_input": "ROC Length", "roclen3_input": "变化速率长度3", "Overbought_input": "超买", "Extend Top": "向上延伸", "Change Minutes To": "变更分钟为", "No study templates saved": "无已保存的学习模板", "Trend Line": "趋势线", "TimeZone": "时区", "Your chart is being saved, please wait a moment before you leave this page.": "您的图表正在保存中,敬请稍等一会再离开此页。", "Percentage": "百分比坐标", "Tu_day_of_week": "周二", "RSI Length_input": "RSI 天数长度", "Triangle": "三角形", "Line With Breaks": "中断线", "Period_input": "阶段", "Watermark": "水印", "Trigger_input": "触发", "SigLen_input": "Sigma 长度", "Extend Right": "向右延伸", "Color 2_input": "颜色2", "Show Prices": "显示价格", "Unlock": "解锁", "Copy": "复制", "high": "最高", "Arc": "弧形", "Edit Order": "编辑订单", "January": "1月", "Arrow Mark Right": "向右箭头", "Extend Alert Line": "延长警报线", "Background color 1": "背景颜色1", "RSI Source_input": "RSI 来源", "Close Position": "平仓", "Any Number": "任一数字", "Stop syncing drawing": "停止同步绘图", "Visible on Mouse Over": "鼠标移动时可见", "MA/EMA Cross_study": "MA/EMA交叉", "Thu": "周四", "Vortex Indicator_study": "旋涡指标(Vortex Indicator)", "view-only chart by {user}": "来自{user}的仅供查看图表", "ROCLen1_input": "变化速率长度1", "M_interval_short": "M", "Chaikin Oscillator_input": "蔡金震荡指标(Chaikin Oscillator)", "Price Levels": "价格位", "Show Splits": "显示拆分", "Zero Line_input": "零线", "Replay Mode": "回放模式", "__specialSymbolOpen__Today at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__今日在__specialSymbolClose__ __dayTime__", "Increment_input": "增量", "Days_interval": "日", "Show Right Scale": "显示右侧坐标", "Show Alert Labels": "显示警报标签", "Historical Volatility_study": "历史波动率(Historical Volatility)", "Lock": "锁定", "length14_input": "长度14", "High": "最高价", "Q_input": "Q指", "Date and Price Range": "日期和价格范围", "Polyline": "多边形", "Reconnect": "重新连结", "Lock/Unlock": "锁定/解锁", "HLC Bars": "HLC 线", "Base Level": "基准位", "Label Down": "向下标签", "Saturday": "星期六", "Symbol Last Value": "商品当前价格", "Above Bar": "列上", "Studies": "技术分析", "Color 0_input": "颜色0", "Add Symbol": "添加品种", "maximum_input": "最大", "Wed": "周三", "Paris": "巴黎", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "VWMA_study": "成交量加权移动平均值(VWMA)", "fastLength_input": "快线长度", "Time Levels": "时间位", "Width": "线宽", "Sunday": "星期日", "Loading": "正在加载", "Template": "模板", "Use Lower Deviation_input": "使用下偏差", "Up Wave 3": "上涨浪3", "Parallel Channel": "平行通道", "Time Cycles": "时间周期", "Second fraction part is invalid.": "第二部分是无效的。", "Divisor_input": "因数", "Baseline": "基准线", "Down Wave 1 or A": "下跌浪1或A", "ROC_input": "变量", "Dec": "12月", "Ray": "射线", "Extend": "延伸", "length7_input": "长度7", "Bring Forward": "上移一层", "Bottom": "底部", "Berlin": "柏林", "Undo": "撤销", "Original": "原始", "Mon": "星期一", "Right Labels": "右标签", "Long Length_input": "长线长度", "True Strength Indicator_study": "真实强度指标(True Strength Indicator)", "%R_input": "%R", "There are no saved charts": "没有保存的图表", "Instrument is not allowed": "不允许使用仪器", "bars_margin": "根K线", "Decimal Places": "小数位", "Show Indicator Last Value": "显示最后的指标值", "Initial capital": "初始资金", "Show Angle": "显示角度", "Mass Index_study": "梅斯线(Mass Index)", "More features on tradingview.com": "tradingview.com上更多功能", "Objects Tree...": "工具树状图...", "Remove Drawing Tools & Indicators": "移除绘图工具和指标", "Length1_input": "长度1", "Always Invisible": "总是隐藏", "Circle": "圆", "Days": "日", "x_input": "X指", "Save As...": "保存为...", "Elliott Double Combo Wave (WXY)": "艾略特双重组合浪(WXY)", "Parabolic SAR_study": "抛物线转向指标(Parabolic SAR)", "Any Symbol": "任一代码", "Variance": "方差", "Stats Text Color": "文字颜色", "Minutes": "分钟", "Williams Alligator_study": "威廉姆斯鳄鱼线(Williams Alligator)", "Projection": "预测", "Custom color...": "自定义颜色...", "Jan": "1月", "Jaw_input": "下颚", "Right": "右", "Help": "帮助", "Coppock Curve_study": "估波曲线(Coppock Curve)", "Reversal Amount": "反转数量", "Reset Chart": "重置图表", "Marker Color": "马克笔颜色", "Fans": "扇形", "Left Axis": "左轴", "Open": "开盘价", "YES": "是", "longlen_input": "长线长度", "Moving Average Exponential_study": "指数移动平均线(Moving Average Exponential)", "Source border color": "起点边框颜色", "Redo {0}": "重做{0}", "Cypher Pattern": "Cypher 形态", "s_dates": "秒", "Caracas": "加拉加斯", "Area": "面积图", "Triangle Pattern": "三角形形态", "Balance of Power_study": "均势指标(Balance of Power)", "EOM_input": "EOM", "Shapes_input": "形态", "Oversold_input": "超卖", "Apply Manual Risk/Reward": "应用手动风险/回报", "Market Closed": "休市", "Sydney": "悉尼", "Indicators": "指标", "close": "收盘", "q_input": "Q指", "You are notified": "您会收到通知", "Font Icons": "字体图标", "%D_input": "%D", "Border Color": "边框颜色", "Offset_input": "偏移", "Risk": "风险", "Price Scale": "价格坐标", "HV_input": "HV", "Seconds": "秒", "Start_input": "开始", "Elliott Impulse Wave (12345)": "艾略特推动浪(12345)", "Hours": "小时", "Send to Back": "置于底层", "Color 4_input": "颜色4", "Los Angeles": "洛杉矶", "Prices": "价格", "Hollow Candles": "空心K线图", "July": "7月", "Create Horizontal Line": "创建水平线", "Minute": "分钟", "Cycle": "循环", "ADX Smoothing_input": "ADX平滑化", "One color for all lines": "所有直线一个颜色", "m_dates": "月", "Settings": "设置", "Candles": "K线图", "We_day_of_week": "我们", "Width (% of the Box)": "宽度(箱的%)", "%d minute": "%d 分钟", "Go to...": "前往到...", "Pip Size": "点值大小", "Wednesday": "周三", "This drawing is used in alert. If you remove the drawing, the alert will be also removed. Do you want to remove the drawing anyway?": "此图已用于一个警报中。如果移除此图,该警报将一并删除。确定要删除此图吗?", "Show Countdown": "显示倒计时", "Show alert label line": "显示警报标签线", "Down Wave 2 or B": "下跌浪2或B", "MA_input": "MA", "Length2_input": "长度2", "not authorized": "未经授权", "Session Volume_study": "时间段成交量", "Image URL": "图片URL", "Submicro": "亚微米级", "SMI Ergodic Oscillator_input": "SMI 遍历指标", "Show Objects Tree": "显示工具树状图", "Primary": "基本级", "Price:": "价格:", "Bring to Front": "置于顶层", "Brush": "笔刷", "Not Now": "不是现在", "Yes": "是", "C_data_mode_connecting_letter": "C", "SMALen4_input": "简单移动平均长度4", "Apply Default Drawing Template": "应用默认模板", "Compact": "紧凑", "Save As Default": "保存为默认", "Target border color": "终点边框颜色", "Invalid Symbol": "无效的代码", "Inside Pitchfork": "内部分叉线", "yay Color 1_input": "yay 颜色 1", "Quandl is a huge financial database that we have connected to TradingView. Most of its data is EOD and is not updated in real-time, however the information may be extremely useful for fundamental analysis.": "Quandl是一个巨大的金融数据资料库,我们已经将它连接到TradingView。它的大部分数据是EOD,非即时更新的,然而,这些资讯可能对基本面分析是非常有用的。", "Hide Marks On Bars": "隐藏Bar上的标记", "Cancel Order": "取消订单", "Kagi": "卡吉图", "WMA Length_input": "WMA 长度", "Show Dividends on Chart": "在图上显示股利", "Show Executions": "显示信号执行", "Borders": "边框", "Remove Indicators": "移除指标", "loading...": "载入中...", "Closed_line_tool_position": "已平仓", "Rectangle": "矩形", "Change Resolution": "变更解析度", "Indicator Arguments": "指标参数", "Symbol Description": "商品说明", "Chande Momentum Oscillator_study": "钱德动量摆动指标(Chande Momentum Oscillator)", "Degree": "级别", " per order": "每个订单_", "Supercycle": "超级周期", "Jun": "6月", "Least Squares Moving Average_study": "最小二乘移动平均线(Least Squares Moving Average)", "Change Variance value": "变更方差值", "powered by ": "本站由 ", "Source_input": "来源", "Change Seconds To": "变更秒为", "%K_input": "%K", "Scales Text": "坐标文字", "Toronto": "多伦多", "Please enter template name": "请输入模板名", "Symbol Name": "商品名称", "Tokyo": "东京", "Events Breaks": "突发事件", "San Salvador": "圣萨尔瓦多", "Months": "月", "Symbol Info...": "商品信息...", "Elliott Wave Minor": "艾略特小型浪", "Cross": "十字线", "Measure (Shift + Click on the chart)": "测量 (按住Shift键再点击图表)", "Override Min Tick": "显示最小刻度", "Show Positions": "显示持仓", "Dialog": "对话框", "Add To Text Notes": "添加到文本笔记", "Elliott Triple Combo Wave (WXYXZ)": "艾略特三重组合浪(WXYXZ)", "Multiplier_input": "多元", "Risk/Reward": "风险/报酬", "Base Line Periods_input": "基准线周期", "Show Dividends": "显示股利", "Relative Strength Index_study": "相对强弱指标(Relative Strength Index)", "Modified Schiff Pitchfork": "调整希夫分叉线", "Top Labels": "顶标签", "Show Earnings": "显示收益", "Elliott Triangle Wave (ABCDE)": "艾略特三角浪(ABCDE)", "Minuette": "微级", "Text Wrap": "自动换行", "Reverse Position": "平仓反向", "Elliott Minor Retracement": "艾略特小波浪回撤", "DPO_input": "DPO", "Pitchfan": "倾斜扇形", "Slash_hotkey": "斜线", "No symbols matched your criteria": "没有符合您搜索条件的品种代码.", "Icon": "图标", "lengthRSI_input": "RSI天数长度", "Tuesday": "星期二", "Teeth Length_input": "齿距", "Indicator_input": "指标", "Box size assignment method": "箱子尺寸分配方法", "Open Interval Dialog": "打开周期设置框", "Shanghai": "上海", "Athens": "雅典", "Fib Speed Resistance Arcs": "斐波那契速度阻力弧", "Content": "内容", "middle": "中", "Lock Cursor In Time": "锁定时间游标", "Intermediate": "中级", "Eraser": "橡皮擦", "Relative Vigor Index_study": "相对能量指数(Relative Vigor Index)", "Envelope_study": "包络线(Envelope)", "Symbol Labels": "商品标签", "Pre Market": "上市前", "Horizontal Line": "水平线", "O_in_legend": "开=", "Confirmation": "确认", "Lines:": "线条", "hlc3": "高低3", "Buenos Aires": "布宜诺斯艾利斯", "X Cross": "X 交叉", "Bangkok": "曼谷", "Profit Level. Ticks:": "止盈位.点数:", "Show Date/Time Range": "显示日期/时间区间", "Level {0}": "等级{0}", "Favorites": "收藏", "Horz Grid Lines": "水平网格线", "-DI_input": "-DI", "Price Range": "价格范围", "day": "日", "deviation_input": "偏离", "Account Size": "账户规模", "UTC": "世界统一时间", "Time Interval": "时间周期", "Success text color": "成功文字颜色", "ADX smoothing_input": "ADX平滑化", "%d hour": "%d 小时", "Order size": "订单数量", "Drawing Tools": "绘图工具", "Save Drawing Template As": "保存模板为", "Tokelau": "托克劳群岛", "ohlc4": "开高低收4", "Traditional": "传统", "Chaikin Money Flow_study": "蔡金资金流量(Chaikin Money Flow)", "Ease Of Movement_study": "简易波动指标(Ease Of Movement)", "Defaults": "系统预设", "Percent_input": "百分比", "Interval is not applicable": "周期不适用", "short_input": "短期", "Visual settings...": "视觉设置...", "RSI_input": "RSI", "Chatham Islands": "查塔姆群岛", "Detrended Price Oscillator_input": "区间震荡线", "Mo_day_of_week": "星期一", "center": "中", "Vertical Line": "垂直线", "Bogota": "波哥大", "Show Splits on Chart": "在图上显示拆分", "Sorry, the Copy Link button doesn't work in your browser. Please select the link and copy it manually.": "抱歉,复制链接的按钮在浏览器中无法使用。 请选择链接并手动复制。", "Levels Line": "水平线", "Events & Alerts": "事件 & 警报", "May": "5月", "ROCLen4_input": "变化速率长度4", "Aroon Down_input": "阿隆向下(Aroon Down)", "Add To Watchlist": "添加到自选表", "Total": "总计", "Price": "价格", "left": "左", "Lock scale": "锁定坐标", "Limit_input": "限价", "Change Days To": "变更日线为", "Price Oscillator_study": "价格摆动指标(Price Oscillator)", "smalen1_input": "简单移动平均长度1", "Drawing Template '{0}' already exists. Do you really want to replace it?": "绘图模板'{0}'已经存在。您真的要替换它?", "Show Middle Point": "显示中间点", "KST_input": "应用确定指标", "Extend Right End": "右端延伸", "Base currency": "基币", "Color based on previous close_input": "K线颜色基于前一个收盘价", "Price_input": "价格", "Gann Fan": "江恩角度线", "EOD": "当日有效", "Weeks": "周", "McGinley Dynamic_study": "金利动态指标(McGinley Dynamic)", "Relative Volatility Index_study": "相对离散指数(Relative Volatility Index)", "Source Code...": "原始码...", "PVT_input": "价量趋势指标", "Show Hidden Tools": "显示隐藏的工具", "Hull Moving Average_study": "船体移动平均线(Hull Moving Average)", "Symbol Prev. Close Value": "商品前一收盘价", "Istanbul": "伊斯坦布尔", "{0} chart by TradingView": "TradingView的图表{0}", "Right Shoulder": "右肩", "Remove Drawing Tools": "移除绘图工具", "Friday": "星期五", "Zero_input": "零", "Company Comparison": "对比商品代码", "Stochastic Length_input": "随机指标长度", "mult_input": "多元", "URL cannot be received": "无法接收URL", "Success back color": "成功背景颜色", "E_data_mode_end_of_day_letter": "E", "Trend-Based Fib Extension": "斐波那契趋势扩展", "Top": "顶部", "Double Curve": "双曲线", "Stochastic RSI_study": "随机相对强弱指数(Stoch RSI)", "Oops!": "哎呀!", "Horizontal Ray": "水平射线", "smalen3_input": "简单移动平均长度3", "Ok": "确认", "Script Editor...": "脚本编辑器...", "Are you sure?": "确定?", "Trades on Chart": "图表上的交易", "Listed Exchange": "上市交易所", "Error:": "错误:", "Fullscreen mode": "全屏模式", "Add Text Note For {0}": "为{0}添加文本笔记", "K_input": "K", "Do you really want to delete Drawing Template '{0}' ?": "确定删除绘图模板'{0}'?", "ROCLen3_input": "变化速率长度3", "Micro": "微", "Text Color": "文字颜色", "Rename Chart Layout": "重命名图表排版", "Built-ins": "内嵌指标", "Background color 2": "背景颜色2", "Drawings Toolbar": "绘图工具栏", "Moving Average Channel_study": "移动平均线通道(Moving Average Channel)", "New Zealand": "新西兰", "CHOP_input": "CHOP", "Apply Defaults": "应用默认", "% of equity": "% 权益", "Extended Alert Line": "警报线", "Note": "注释", "OK": "确认", "like": "个赞", "Show": "显示", "{0} bars": "{0}根K线", "Lower_input": "更低点", "Created ": "已建立 ", "Warning": "警告", "Elder's Force Index_study": "艾达尔强力指数(Elder's Force Index)", "Show Earnings on Chart": "在图上显示收益", "ATR_input": "ATR", "Low": "最低价", "Bollinger Bands %B_study": "布林带 %B(Bollinger Bands %B)", "Time Zone": "时区", "right": "右", "%d month": "%d 个月", "Wrong value": "错误值", "Upper Band_input": "上限", "Sun": "星期日", "Rename...": "重命名...", "start_input": "开始", "No indicators matched your criteria.": "没有符合您搜索条件的指标.", "Commission": "手续费", "Down Color": "下跌颜色", "Short length_input": "短期长度", "Kolkata": "加尔各答", "Submillennium": "子千年", "Technical Analysis": "技术分析", "Show Text": "显示文字", "Channel": "通道", "FXCM CFD data is available only to FXCM account holders": "FXCM CFD数据仅供拥有FXCM账户者使用", "Lagging Span 2 Periods_input": "迟行带2个时期", "Connecting Line": "连接线", "Seoul": "首尔", "bottom": "下", "Teeth_input": "牙齿", "Sig_input": "Sig", "Open Manage Drawings": "打开绘图管理", "Save New Chart Layout": "保存新的图表版面", "Fib Channel": "斐波那契通道", "Save Drawing Template As...": "保存模板为...", "Minutes_interval": "分钟", "Up Wave 2 or B": "上涨浪2或B", "Columns": "柱状图", "Directional Movement_study": "动向指标(Directional Movement)", "roclen2_input": "变化速率长度2", "Apply WPT Down Wave": "应用WPT Down波", "Not applicable": "不适用", "Bollinger Bands %B_input": "布林带 %B", "Default": "系统预设", "Singapore": "新加坡", "Template name": "模板名称", "Indicator Values": "指标值", "Lips Length_input": "嘴唇长度", "Toggle Log Scale": "切换为对数坐标", "L_in_legend": "低=", "Remove custom interval": "移除自定区间", "shortlen_input": "短期长度", "Quotes are delayed by {0} min": "报价延时 {0} 分钟", "Hide Events on Chart": "隐藏图中的事件", "Cash": "现金", "Profit Background Color": "利润背景颜色", "Bar's Style": "图表样式", "Exponential_input": "指数化", "Down Wave 5": "下跌浪5", "Previous": "上一个", "Stay In Drawing Mode": "保持绘图模式", "Comment": "评论", "Connors RSI_study": "康纳相对强弱指指数(CRSI)", "Bars": "美国线", "Show Labels": "显示标签", "Flat Top/Bottom": "平滑顶/底", "Symbol Type": "品种类型", "December": "12月", "Lock drawings": "锁定绘图", "Border color": "边框颜色", "Change Seconds From": "变更秒自", "Left Labels": "左标签", "Insert Indicator...": "插入指标...", "ADR_B_input": "ADR_B", "Paste %s": "粘贴%s", "Change Symbol...": "变更代码...", "Timezone": "时区", "Invite-only script. You have been granted access.": "仅限邀请的脚本。您已被授予访问权限。", "Color 6_input": "颜色6", "Oct": "10月", "ATR Length": "平均真实波幅长度", "{0} financials by TradingView": "{0}财务资料由TradingView提供", "Extend Lines Left": "左侧延长线", "Feb": "2月", "Transparency": "透明度", "No": "否", "June": "6月", "Cyclic Lines": "循环线", "length28_input": "长度28", "ABCD Pattern": "ABCD 形态", "When selecting this checkbox the study template will set \"__interval__\" interval on a chart": "勾选此选项,研究范本将设定图表周期为\"__interval__\"", "Add": "添加", "Scale": "坐标", "Millennium": "一千年", "On Balance Volume_study": "能量潮指标(On Balance Volume)", "Apply Indicator on {0} ...": "在{0}..上使用指标", "NEW": "新建", "Chart Layout Name": "图表排版名称", "Up bars": "上涨k线", "Hull MA_input": "Hull MA", "Schiff": "希夫", "Lock Scale": "锁定坐标", "distance: {0}": "距离: {0}", "Extended": "延长线", "Square": "方形", "Three Drives Pattern": "三推动形态", "NO": "否", "Top Margin": "上边距", "Up fractals_input": "向上分形", "Insert Drawing Tool": "插入绘图工具", "OHLC Values": "开高低收", "Correlation_input": "相关系数", "Session Breaks": "收盘时中断", "Add {0} To Watchlist": "添加{0}到自选表", "Anchored Note": "锚点注释", "lipsLength_input": "唇长", "low": "最低", "Apply Indicator on {0}": "在{0}上使用指标", "UpDown Length_input": "UpDown Length", "Price Label": "价格标签", "November": "11月", "Tehran": "德黑兰", "Balloon": "泡泡注释", "Track time": "追踪时间", "Background Color": "背景颜色", "an hour": "1小时", "Right Axis": "右轴", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "慢线长度", "Click to set a point": "点击以设定", "Save Indicator Template As...": "保存指标模板为...", "Arrow Up": "向上箭头", "Indicator Titles": "指标名称", "Failure text color": "失败文字颜色", "Sa_day_of_week": "周六", "Net Volume_study": "净成交量(Net Volume)", "Error": "错误", "Edit Position": "编辑持仓", "RVI_input": "RVI", "Centered_input": "居中", "Recalculate On Every Tick": "每笔数据重新计算", "Left": "左", "Simple ma(oscillator)_input": "简单移动平均(振荡器)", "Compare": "对比", "Fisher Transform_study": "费舍尔转换(Fisher Transform)", "Show Orders": "显示订单", "Zoom In": "放大", "Length EMA_input": "EMA长度", "Enter a new chart layout name": "输入新图表排版名称", "Signal Length_input": "信号长度", "FAILURE": "失败", "Point Value": "点值", "D_interval_short": "D", "MA with EMA Cross_study": "MA与EAM交叉", "Label Up": "向上标签", "Price Channel_study": "价格通道(Price Channel)", "Close": "收盘价", "ParabolicSAR_input": "抛物线转向指标(PSAR)", "Log Scale_scale_menu": "对数坐标", "MACD_input": "MACD", "Do not show this message again": "不再显示此消息", "{0} P&L: {1}": "{0} 盈利&亏损: {1}", "No Overlapping Labels": "无重叠标签", "Arrow Mark Left": "向左箭头", "Slow length_input": "慢线长度", "Up Wave 4": "上涨浪4", "Confirm Inputs": "确认参数", "Open_line_tool_position": "开仓", "Lagging Span_input": "迟行带", "Subminuette": "次微级", "Thursday": "周四", "Arrow Down": "向下箭头", "Vancouver": "温哥华", "Triple EMA_study": "三重指数平滑平均线(Triple EMA)", "Elliott Correction Wave (ABC)": "艾略特调整浪(ABC)", "Error while trying to create snapshot.": "建立快照时发生错误。", "Label Background": "标签背景", "Templates": "模板", "Please report the issue or click Reconnect.": "请回报问题或点击重新连结", "Normal": "正常", "Signal Labels": "信号标签", "Delete Text Note": "删除文字笔记", "compiling...": "编译中...", "Detrended Price Oscillator_study": "非趋势价格摆动指标(Detrended Price Oscillator)", "Color 5_input": "颜色5", "Fixed Range_study": "固定范围", "Up Wave 1 or A": "上涨浪1或A", "Scale Price Chart Only": "仅缩放价格图表", "Unmerge Up": "取消向上合并", "auto_scale": "auto", "Short period_input": "短周期", "Background": "背景", "Study Templates": "指标模板", "Up Color": "上涨颜色", "Apply Elliot Wave Intermediate": "应用艾略特中型浪", "VWMA_input": "VWMA", "Lower Deviation_input": "下偏差", "Save Interval": "保存周期", "February": "2月", "Reverse": "反向", "Oops, something went wrong": "哎呀,有错误发生", "Add to favorites": "加入收藏", "Median": "中线", "ADX_input": "ADX", "Remove": "移除", "len_input": "长度", "Arrow Mark Up": "向上箭头", "April": "4月", "Active Symbol": "活跃品种代码", "Extended Hours": "延长时间", "Crosses_input": "交叉", "Middle_input": "中间", "Read our blog for more info!": "获得更多信息请查阅我们的博客!", "Sync drawing to all charts": "同步绘图到所有图表", "LowerLimit_input": "下限带", "Know Sure Thing_study": "加权总和变动率(Know Sure Thing)", "Copy Chart Layout": "复制图表排版", "Compare...": "比较...", "1. Slide your finger to select location for next anchor
2. Tap anywhere to place the next anchor": "1.请拖曳您的手指选择下一个游标的放置地点
2.点击任何一处即可定位", "Text Notes are available only on chart page. Please open a chart and then try again.": "文本笔记仅能在图表页面上使用。请打开图表再试一次。", "Color": "颜色", "Aroon Up_input": "阿隆向上(Aroon Up)", "Apply Elliot Wave Major": "应用艾略特大型浪", "Scales Lines": "坐标线", "Type the interval number for munute charts (i.e. 5 if it is going to be a five minute chart). Or number plus letter for H (Hourly), D (Daily), W (Weekly), M (Monthly) intervals (i.e. D or 2H)": "输入分钟图表的周期数(若为5分钟图表则输入5)。 或数字加字母H(小时),D(日),W(周),M(月)周期(比如D或2H)", "Ellipse": "椭圆形", "Up Wave C": "上涨浪C", "Show Distance": "显示距离", "Risk/Reward Ratio: {0}": "盈亏比: {0}", "Restore Size": "还原尺寸", "Volume Oscillator_study": "成交量摆动指标(Volume Oscillator)", "Honolulu": "檀香山", "Williams Fractal_study": "威廉姆斯分形指标(Williams Fractal)", "Merge Up": "向上合并", "Right Margin": "右边距", "Moscow": "莫斯科", "Warsaw": "华沙"} \ No newline at end of file diff --git a/static/Kline/charting_library/static/localization/translations/zh_TW.json b/static/Kline/charting_library/static/localization/translations/zh_TW.json new file mode 100644 index 0000000..6960655 --- /dev/null +++ b/static/Kline/charting_library/static/localization/translations/zh_TW.json @@ -0,0 +1 @@ +{"ticks_slippage ... ticks": "ticks", "Months_interval": "月", "Realtime": "實時", "Callout": "標註", "Sync to all charts": "同步到所有圖表", "month": "月", "London": "倫敦", "roclen1_input": "變化速率長度1", "Unmerge Down": "取消向下合併", "Percents": "百分比", "Search Note": "搜尋筆記", "Minor": "次要", "Do you really want to delete Chart Layout '{0}' ?": "確定刪除圖表版面「{0}」?", "Quotes are delayed by {0} min and updated every 30 seconds": "報價延遲 {0} 分鐘,每30秒更新一次", "Magnet Mode": "磁鐵模式", "Grand Supercycle": "超級大週期", "OSC_input": "OSC", "Hide alert label line": "隱藏快訊標籤線", "Volume_study": "成交量", "Lips_input": "嘴唇", "Show real prices on price scale (instead of Heikin-Ashi price)": "在價格刻度上顯示實際價格(而不是Heikin-Ashi價格)", "Histogram": "直方圖", "Base Line_input": "基準線", "Step": "階梯", "Insert Study Template": "插入研究模板", "Fib Time Zone": "費波那契時間週期", "SMALen2_input": "簡單移動平均長度2", "Bollinger Bands_study": "布林線", "Nov": "十一月", "Show/Hide": "顯示/隱藏", "Upper_input": "上限", "exponential_input": "指數的", "Move Up": "上漲", "Symbol Info": "代碼資訊", "This indicator cannot be applied to another indicator": "該指標無法運用到其他指標上", "Scales Properties...": "刻度屬性...", "Count_input": "計數", "Full Circles": "完整圓圈", "Ashkhabad": "阿什哈巴德", "OnBalanceVolume_input": "能量潮指標(OBV)", "Cross_chart_type": "十字圖", "H_in_legend": "高=", "a day": "一天", "Pitchfork": "分岔線", "R_data_mode_replay_letter": "R", "Accumulation/Distribution_study": "累積/分配線", "Rate Of Change_study": "變化速率", "in_dates": "內", "Clone": "複製", "Color 7_input": "顏色7", "Chop Zone_study": "波動區域", "Bar #": "K線#", "Scales Properties": "刻度屬性", "Trend-Based Fib Time": "斐波那契趨勢時間", "Remove All Indicators": "移除所有指標", "Oscillator_input": "震動指數", "Last Modified": "最後修改", "yay Color 0_input": "yay 顏色 0", "Labels": "標籤", "Chande Kroll Stop_study": "錢德克羅止損", "Hours_interval": "小時", "Allow up to": "最多允許", "Scale Right": "縮放右邊", "Money Flow_study": "資金流量", "siglen_input": "Sigma 長度", "Indicator Labels": "指標標籤", "__specialSymbolOpen__Tomorrow at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__明日在__specialSymbolClose__ __dayTime__", "Hide All Drawing Tools": "隱藏所有繪圖工具", "Toggle Percentage": "切換為百分比", "Remove All Drawing Tools": "移除所有繪圖", "Remove all line tools for ": "移除所有劃線工具 ", "Linear Regression Curve_study": "線性回歸曲線", "Symbol_input": "代碼", "Currency": "貨幣", "increment_input": "增量", "Compare or Add Symbol...": "比較/增加代碼...", "__specialSymbolOpen__Last__specialSymbolClose__ __dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__最後__specialSymbolClose__ __dayName__ __specialSymbolOpen__在__specialSymbolClose__ __dayTime__", "Save Chart Layout": "儲存圖表版面", "Number Of Line": "線條數量", "Label": "標籤", "Post Market": "後期市場", "second": "秒", "Change Hours To": "變更小時為", "smoothD_input": "平滑D", "Falling_input": "下降", "X_input": "X值", "Risk/Reward short": "空頭風險/報酬", "UpperLimit_input": "上限帶", "Donchian Channels_study": "唐奇安通道", "Entry price:": "進場價:", "Circles": "圓", "Head": "頭", "Stop: {0} ({1}) {2}, Amount: {3}": "停損:{0} ({1}) {2}, 賬戶:{3}", "Mirrored": "鏡像", "Ichimoku Cloud_study": "一目均衡表", "Signal smoothing_input": "信號平滑", "Use Upper Deviation_input": "使用上偏差", "Toggle Auto Scale": "切換為自動縮放", "Grid": "格線", "Triangle Down": "下降三角形", "Apply Elliot Wave Minor": "套用艾略特小型波", "Slippage": "滑點", "Smoothing_input": "平滑", "Color 3_input": "顏色3", "Jaw Length_input": "下顎長度", "Almaty": "阿拉木圖", "Inside": "内部", "Delete all drawing for this symbol": "删除此代碼中的所有繪圖", "Fundamentals": "基本面", "Keltner Channels_study": "肯特纳通道", "Long Position": "多頭部位", "Bands style_input": "帶樣式", "Undo {0}": "撤銷 {0}", "With Markers": "帶標記", "Momentum_study": "動量", "MF_input": "MF", "Gann Box": "江恩箱", "Switch to the next chart": "切換至下一個圖表", "charts by TradingView": "TradingView圖表", "Fast length_input": "快線長度", "Apply Elliot Wave": "套用艾略特波", "Disjoint Angle": "不相交的角", "Supermillennium": "超千年", "W_interval_short": "週", "Show Only Future Events": "僅顯示未來事件", "Log Scale": "對數刻度", "Line - High": "線 - 最高價", "Zurich": "蘇黎世", "Equality Line_input": "等量線", "Short_input": "短期", "Fib Wedge": "斐波那契楔形", "Line": "線形圖", "Session": "session", "Down fractals_input": "向下分形", "Fib Retracement": "費波那契回撤", "smalen2_input": "簡單移動平均長度2", "isCentered_input": "居中", "Border": "框線", "Klinger Oscillator_study": "克林格成交量擺動指標", "Absolute": "絕對位置", "Tue": "週二", "Style": "樣式", "Show Left Scale": "顯示左側刻度", "SMI Ergodic Indicator/Oscillator_study": "遍歷性指數", "Aug": "八月", "Last available bar": "最後一根可用的K線", "Manage Drawings": "管理繪圖", "Analyze Trade Setup": "分析交易設定", "No drawings yet": "尚無任何繪圖", "SMI_input": "SMI", "Chande MO_input": "錢德動量擺動指標(Chande MO)", "jawLength_input": "下顎長度", "TRIX_study": "三重平滑均線", "Show Bars Range": "顯示K線區間", "RVGI_input": "相對能量指數", "Last edited ": "上次編輯 ", "signalLength_input": "信號長度", "%s ago_time_range": "%s 前", "Reset Settings": "重設設定", "PnF": "OX圖", "Renko": "磚形圖", "d_dates": "日", "Point & Figure": "OX圖", "August": "八月", "Recalculate After Order filled": "報單成交後重新計算", "Source_compare": "來源", "Down bars": "下跌K棒", "Correlation Coefficient_study": "相關係數", "Delayed": "延遲的", "Bottom Labels": "底部標籤", "Text color": "文字顏色", "Levels": "等級", "Length_input": "長度", "Short Length_input": "短期長度", "teethLength_input": "齒距", "Visible Range_study": "可視範圍", "Delete": "删除", "Hong Kong": "香港", "Text Alignment:": "文字對齊:", "Open {{symbol}} Text Note": "打開 {{symbol}} 文本說明", "October": "十月", "Lock All Drawing Tools": "鎖定所有繪圖工具", "Long_input": "長線", "Right End": "右端", "Show Symbol Last Value": "顯示商品代碼最後價格", "Head & Shoulders": "頭肩頂", "Do you really want to delete Study Template '{0}' ?": "確定刪除研究模板'{0}'?", "Favorite Drawings Toolbar": "最愛繪圖工具列", "Properties...": "屬性...", "Reset Scale": "重設刻度", "MA Cross_study": "移动揉搓線", "Trend Angle": "趨勢線角度", "Snapshot": "快照", "Crosshair": "十字", "Signal line period_input": "信號線週期", "Timezone/Sessions Properties...": "時區/交易時段屬性...", "Line Break": "新價線", "Quantity": "數量", "Price Volume Trend_study": "價量趨勢指標", "Auto Scale": "自動縮放", "hour": "小時", "Delete chart layout": "刪除圖表版面", "Text": "文本", "F_data_mode_forbidden_letter": "F", "Risk/Reward long": "多頭風險/報酬", "Apr": "四月", "Long RoC Length_input": "長期變量長度", "Length3_input": "長度3", "+DI_input": "+DI", "Madrid": "馬德里", "Use one color": "使用一個顏色", "Chart Properties": "圖表屬性", "No Overlapping Labels_scale_menu": "無重疊標籤", "Exit Full Screen (ESC)": "退出全螢幕(ESC)", "MACD_study": "指數平滑異同移動平均線", "Show Economic Events on Chart": "在圖表上顯示經濟事件", "Moving Average_study": "移動平均", "Show Wave": "顯示波形", "Failure back color": "失敗的背景顏色", "Below Bar": "Bar下方", "Time Scale": "時間刻度", "

Only D, W, M intervals are supported for this symbol/exchange. You will be automatically switched to a D interval. Intraday intervals are not available because of exchange policies.

": "

此商品/交易僅支援日、週、月週期。您的圖表將自動切換到日週期圖。基於交易政策,我們無法提供日內週期資料。

", "Extend Left": "向左延伸", "Date Range": "日期範圍", "Min Move": "最小移動", "Price format is invalid.": "價格格式無效", "Show Price": "顯示價格", "Level_input": "水平", "Angles": "角度", "Hide Favorite Drawings Toolbar": "隱藏最愛繪圖工具列", "Commodity Channel Index_study": "順勢指標", "Elder's Force Index_input": "艾達爾強力指數(EFI)", "Gann Square": "江恩正方", "Phoenix": "菲尼克斯", "Format": "設置", "Color bars based on previous close": "bar顏色基於前一個收盤價", "Change band background": "變更帶背景", "Target: {0} ({1}) {2}, Amount: {3}": "目標:{0} ({1}) {2}, 賬戶:{3}", "Zoom Out": "縮小", "This chart layout has a lot of objects and can't be published! Please remove some drawings and/or studies from this chart layout and try to publish it again.": "此圖表版面有太多物件而無法發布!請刪除一些繪圖和/或研究,並嘗試重新發布。", "Anchored Text": "錨點文本", "Long length_input": "長線長度", "Edit {0} Alert...": "編輯{0}快訊...", "Previous Close Price Line": "上一個收盤價格線", "Up Wave 5": "上漲波5", "Qty: {0}": "數量:{0}", "Heikin Ashi": "平均K線", "Aroon_study": "阿隆指標", "show MA_input": "顯示移動平均", "Industry": "產業", "Lead 1_input": "前置1", "Short Position": "空頭部位", "SMALen1_input": "簡單移動平均長度1", "P_input": "P指", "Apply Default": "套用預設值", "SMALen3_input": "簡單移動平均長度3", "Average Directional Index_study": "平均定向指數", "Fr_day_of_week": "星期五", "Invite-only script. Contact the author for more information.": "僅限邀請的腳本,請聯繫作者了解更多資訊。", "Curve": "曲線", "a year": "一年", "Target Color:": "獲利顏色:", "Bars Pattern": "豎條模型", "D_input": "D", "Font Size": "字體大小", "Create Vertical Line": "建立垂直線", "p_input": "P值", "Rotated Rectangle": "旋轉矩形", "Chart layout name": "圖表版面名稱", "Fib Circles": "費波那契圈", "Apply Manual Decision Point": "套用手動決策點", "Dot": "點點", "Target back color": "終點背景顏色", "All": "全部", "orders_up to ... orders": "訂單", "Dot_hotkey": "點", "Lead 2_input": "前置2", "Save image": "儲存圖片", "Move Down": "下跌", "Triangle Up": "上升三角形", "Box Size": "欄位大小", "Navigation Buttons": "導覽按鈕", "Miniscule": "極小", "Apply": "應用", "Down Wave 3": "下跌波3", "Plots Background_study": "繪圖背景", "Marketplace Add-ons": "商店附加元件", "Sine Line": "正弦線", "Fill": "填充", "%d day": "%d 天", "Hide": "隱藏", "Toggle Maximize Chart": "切換最大化圖表", "Target text color": "獲利文字顏色", "Scale Left": "縮放左邊", "Elliott Wave Subminuette": "艾略特次微波", "Down Wave C": "下跌波C", "Countdown": "倒數", "UO_input": "終極震盪指標", "Pyramiding": "金字塔式", "Source back color": "原始背景顏色", "Go to Date...": "前往日期...", "Sao Paulo": "聖保羅", "R_data_mode_realtime_letter": "R", "Extend Lines": "延長線", "Conversion Line_input": "轉換線(Conversion Line)", "March": "三月", "Su_day_of_week": "週日", "Exchange": "證券交易所", "My Scripts": "我的腳本", "Arcs": "弧形", "Regression Trend": "回歸趨勢", "Short RoC Length_input": "短期變量長度", "Fib Spiral": "費波那契螺旋", "Double EMA_study": "雙指數移動平均", "minute": "分鐘", "All Indicators And Drawing Tools": "所有指標和繪圖工具", "Indicator Last Value": "指標最後值", "Sync drawings to all charts": "同步繪圖到所有圖表", "Change Average HL value": "變更HL值平均", "Stop Color:": "止損顏色:", "Stay in Drawing Mode": "保持繪圖模式", "Bottom Margin": "下邊距", "Dubai": "杜拜", "Save Chart Layout saves not just some particular chart, it saves all charts for all symbols and intervals which you are modifying while working with this Layout": "保存圖表版面,不只是保存幾個特定的圖表,同時也保存了您在使用此版面期間修改的所有商品代號和週期設定。", "Average True Range_study": "真實波動幅度均值", "Max value_input": "最大值", "MA Length_input": "MA長度", "Invite-Only Scripts": "僅限邀請的腳本", "in %s_time_range": "在%s", "Extend Bottom": "延伸底部", "sym_input": "系統", "DI Length_input": "DI長度", "Rome": "羅馬", "Scale": "刻度", "Periods_input": "階段", "Arrow": "箭頭", "useTrueRange_input": "使用真實範圍", "Basis_input": "底部", "Arrow Mark Down": "向下箭頭", "lengthStoch_input": "Stoch長度", "Taipei": "台北", "Objects Tree": "管理設定", "Remove from favorites": "從最愛移除", "Show Symbol Previous Close Value": "顯示此商品代碼的上一個收盤值", "Scale Series Only": "僅縮放數據系列", "Source text color": "原始文字顏色", "Simple": "簡單", "Report a data issue": "回報數據問題", "Arnaud Legoux Moving Average_study": "Arnaud Legoux移動平均", "Smoothed Moving Average_study": "平滑移動平均", "Lower Band_input": "下限", "Verify Price for Limit Orders": "為限價單核對價格", "VI +_input": "VI +", "Line Width": "線寬", "Contracts": "合約", "Always Show Stats": "總是顯示統計資料", "Down Wave 4": "下跌波4", "ROCLen2_input": "變化速率長度2", "Simple ma(signal line)_input": "簡單移動平均(信號線)", "Change Interval...": "變更週期...", "Public Library": "公共資料庫", " Do you really want to delete Drawing Template '{0}' ?": " 確定要刪除繪圖範本「{0}」嗎?", "Sat": "星期六", "Left Shoulder": "左肩", "week": "週", "CRSI_study": "CRSI", "Close message": "關閉訊息", "Jul": "七月", "Value_input": "值", "Show Drawings Toolbar": "顯示繪圖工具列", "Chaikin Oscillator_study": "蔡金擺動指標", "Price Source": "價格來源", "Market Open": "盤中", "Color Theme": "主題顏色", "Projection up bars": "預測上漲線", "Awesome Oscillator_study": "動量震盪指標", "Bollinger Bands Width_input": "布林通道寬度", "Q_input": "Q指", "long_input": "長線", "Error occured while publishing": "發表想法時發生錯誤", "Fisher_input": "費雪", "Color 1_input": "顏色1", "Moving Average Weighted_study": "移動加權", "Save": "儲存", "Type": "種類", "Wick": "燭芯", "Accumulative Swing Index_study": "振動升降指標(ASI)", "Load Chart Layout": "載入圖表版面", "Show Values": "顯示值", "Fib Speed Resistance Fan": "費波那契速度阻力扇", "Bollinger Bands Width_study": "布林線帶寬", "This chart layout has more than 1000 drawings, which is a lot! This may negatively affect performance, storage and publishing. We recommend to remove some drawings to avoid potential performance issues.": "此圖表版面中有超過1000個繪圖,太多了!可能對性能,存儲和發表產生負面影響。我們建議刪除一些繪圖,以避免潛在的性能問題。", "Left End": "左端", "%d year": "%d 年", "Always Visible": "總是顯示", "S_data_mode_snapshot_letter": "S", "Flag": "旗形", "Elliott Wave Circle": "艾略特波浪圈", "Earnings breaks": "盈餘突破", "Change Minutes From": "變更分鐘自", "Do not ask again": "不要再問", "Displacement_input": "移位", "smalen4_input": "簡單移動平均長度4", "CCI_input": "CCI", "Upper Deviation_input": "上偏差", "(H + L)/2": "(最高 + 最低)/2", "XABCD Pattern": "XABCD 型態", "Schiff Pitchfork": "希夫分叉線", "Copied to clipboard": "複製到剪貼簿", "hl2": "高低2", "Flipped": "水平翻轉", "DEMA_input": "DEMA", "Move_input": "移動", "NV_input": "NV", "Choppiness Index_study": "波動指數", "Study Template '{0}' already exists. Do you really want to replace it?": "研究模板'{0}'已經存在,確定替換?", "Merge Down": "向下合併", "Th_day_of_week": "週四", " per contract": " 根據合約", "Overlay the main chart": "顯示於主圖上", "Screen (No Scale)": "螢幕(無縮放)", "Three Drives Pattern": "三驅模式", "Save Indicator Template As": "儲存指標範本為...", "Length MA_input": "MA 長度", "percent_input": "百分比", "September": "九月", "{0} copy": "{0} 複製", "Avg HL in minticks": "最小刻度的高低平均價", "Accumulation/Distribution_input": "累積/派發指標(Accumulation/Distribution)", "Sync": "同步", "C_in_legend": "收=", "Weeks_interval": "週", "smoothK_input": "平滑K", "Percentage_scale_menu": "百分比刻度", "Change Extended Hours": "變更延長交易時段", "MOM_input": "動量", "h_interval_short": "小時", "Change Interval": "變更週期", "Change area background": "變更區塊背景", "Modified Schiff": "調整希夫", "top": "頂部", "Adelaide": "阿德萊德", "Send Backward": "傳送回去", "Mexico City": "墨西哥城", "TRIX_input": "三重平滑均線", "Show Price Range": "顯示價格區間", "Elliott Major Retracement": "艾略特主波浪回撤", "ASI_study": "振動升降指標(ASI)", "Notification": "通知", "Fri": "星期五", "just now": "剛剛", "Forecast": "預測", "Connecting": "正在連接", "Ghost Feed": "映像種子", "Signal_input": "信號", "Histogram_input": "直方圖", "The Extended Trading Hours feature is available only for intraday charts": "延期交易時間功能僅適用於日圖表", "Stop syncing": "停止同步", "open": "開盤", "StdDev_input": "標準差", "EMA Cross_study": "EMA 交叉", "Conversion Line Periods_input": "轉換線週期(Conversion Line Periods)", "Oversold_input": "賣超", "Brisbane": "布里斯班", "Monday": "星期一", "Add Symbol_compare_or_add_symbol_dialog": "新增代碼", "Williams %R_study": "威廉姆指數", "Symbol": "代碼", "a month": "一個月", "Precision": "精確度", "depth_input": "深度", "Go to": "前往到", "Please enter chart layout name": "請輸入圖表版面名稱", "Mar": "三月", "VWAP_study": "成交量加權平均價(VWAP)", "Offset": "偏移", "Date": "日期", "Format...": "設置...", "__dayName__ __specialSymbolOpen__at__specialSymbolClose__ __dayTime__": "__dayName__ __specialSymbolOpen__在__specialSymbolClose__ __dayTime__", "Toggle Maximize Pane": "切換最大化窗格", "Search": "搜尋", "Zig Zag_study": "拋物線轉向", "Actual": "實際", "SUCCESS": "成功", "Long period_input": "長周期", "length_input": "長度", "roclen4_input": "變化速率長度4", "Price Line": "價格線", "Area With Breaks": "中斷區塊", "Median_input": "中線", "Stop Level. Ticks:": "止損。最小刻度數:", "Window Size_input": "視窗大小", "Economy & Symbols": "經濟 & 商品代碼", "Circle Lines": "圓形線圈", "Visual Order": "視覺排序", "__specialSymbolOpen__Yesterday at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__昨日在__specialSymbolClose__ __dayTime__", "Stop Background Color": "止損背景顏色", "1. Slide your finger to select location for first anchor
2. Tap anywhere to place the first anchor": "1. 請拖曳您的手指選擇第一個游標的放置地點
2. 點擊任何一處即可定位", "Sector": "產業", "powered by TradingView": "由TradingView提供", "Text:": "文字:", "Stochastic_study": "隨機指數", "Sep": "九月", "TEMA_input": "TEMA", "Apply WPT Up Wave": "套用WPT Up波", "Min Move 2": "最小移動 2", "Extend Left End": "左端延伸", "Projection down bars": "預測下跌線", "Advance/Decline_study": "價格漲落線", "New York": "紐約", "Flag Mark": "旗號", "Drawings": "繪圖", "Cancel": "取消", "Compare or Add Symbol": "比較/增加代碼", "Redo": "重做", "Hide Drawings Toolbar": "隱藏繪圖工具列", "Ultimate Oscillator_study": "終極震盪指標", "Vert Grid Lines": "垂直網格線", "Growing_input": "增長", "Angle": "角度", "Plot_input": "描寫", "Chicago": "芝加哥", "Color 8_input": "顏色8", "Indicators, Fundamentals, Economy and Add-ons": "指標、基本面、經濟數據和附加項目", "h_dates": "小時", "ROC Length_input": "ROC 長度", "roclen3_input": "變化速率長度3", "Overbought_input": "買超", "Extend Top": "延伸頂部", "Change Minutes To": "變更分鐘為", "No study templates saved": "無儲存研究範本", "Trend Line": "趨勢線", "TimeZone": "時區", "Your chart is being saved, please wait a moment before you leave this page.": "您的圖表正在儲存中,敬請稍待一會再離開此頁。", "Percentage": "百分比", "Tu_day_of_week": "週二", "RSI Length_input": "RSI 天數長度", "Triangle": "三角形", "Line With Breaks": "中斷線", "Period_input": "階段", "Watermark": "浮水印", "Trigger_input": "觸發", "SigLen_input": "Sigma 長度", "Extend Right": "向右延伸", "Color 2_input": "顏色2", "Show Prices": "顯示價格", "Unlock": "解鎖", "Copy": "複製", "high": "高點", "Arc": "弧形", "Edit Order": "編輯報單", "January": "一月", "Arrow Mark Right": "向右箭頭", "Extend Alert Line": "延長快訊線", "Background color 1": "背景顏色1", "RSI Source_input": "RSI來源", "Close Position": "平倉", "Any Number": "任一數字", "Stop syncing drawing": "停止同步繪圖", "Visible on Mouse Over": "游標移動時可見", "MA/EMA Cross_study": "MA/EAM交叉", "Thu": "週四", "Vortex Indicator_study": "渦流指標", "view-only chart by {user}": "{user}提供之僅供查看圖表", "ROCLen1_input": "變化速率長度1", "M_interval_short": "月", "Chaikin Oscillator_input": "蔡金震盪指標(Chaikin Oscillator)", "Price Levels": "價格等級", "Show Splits": "顯示分割", "Zero Line_input": "零線", "Replay Mode": "重播模式", "__specialSymbolOpen__Today at__specialSymbolClose__ __dayTime__": "__specialSymbolOpen__本日在__specialSymbolClose__ __dayTime__", "Increment_input": "增量", "Days_interval": "日", "Show Right Scale": "顯示右側刻度", "Show Alert Labels": "顯示快訊標籤", "Historical Volatility_study": "歷史波動率", "Lock": "鎖定", "length14_input": "長度14", "High": "最高價", "ext": "延時", "Date and Price Range": "日期和價格範圍", "Polyline": "多邊形", "Reconnect": "重新連結", "Lock/Unlock": "鎖定/解鎖", "HLC Bars": "HLC 線", "Base Level": "基準水位", "Label Down": "向下標籤", "Saturday": "星期六", "Symbol Last Value": "商品代碼最後價格", "Above Bar": "列上", "Studies": "技術分析", "Color 0_input": "顏色0", "Add Symbol": "新增代碼", "maximum_input": "最大", "Wed": "週三", "Paris": "巴黎", "D_data_mode_delayed_letter": "D", "Sigma_input": "Sigma", "VWMA_study": "交易量加權移動平均", "fastLength_input": "快線長度", "Time Levels": "時間等級", "Width": "寬度", "Sunday": "星期日", "Loading": "載入", "Template": "範本", "Use Lower Deviation_input": "使用下偏差", "Up Wave 3": "上漲波3", "Parallel Channel": "平行通道", "Time Cycles": "時間週期", "Divisor_input": "因數", "Baseline": "基準線", "Down Wave 1 or A": "下跌波1或A", "ROC_input": "變量", "Dec": "十二月", "Ray": "射線", "Extend": "延伸", "length7_input": "長度7", "Bring Forward": "向上移動", "Bottom": "底部", "Berlin": "柏林", "Undo": "撤銷", "Original": "原型", "Mon": "星期一", "Right Labels": "右邊標籤", "Long Length_input": "長線長度", "True Strength Indicator_study": "真實強度指標", "%R_input": "%R", "There are no saved charts": "沒有已儲存的圖表", "Instrument is not allowed": "不允許使用此工具", "bars_margin": "根K线", "Decimal Places": "小數位", "Show Indicator Last Value": "顯示最後的指標值", "Initial capital": "初始資金", "Show Angle": "顯示角度", "Mass Index_study": "梅斯線", "More features on tradingview.com": "tradingview.com上有更多功能", "Objects Tree...": "管理設定...", "Remove Drawing Tools & Indicators": "移除繪圖工具與技術指標", "Length1_input": "長度1", "Always Invisible": "總是隱藏", "Circle": "圓", "Days": "日", "x_input": "X值", "Save As...": "另存為...", "Elliott Double Combo Wave (WXY)": "艾略特双组合波浪(WXY)", "Parabolic SAR_study": "拋物線", "Any Symbol": "任一代碼", "Variance": "方差", "Stats Text Color": "統計文字顏色", "Minutes": "分鐘", "Williams Alligator_study": "威廉姆鱷魚", "Projection": "預測", "Custom color...": "自訂顏色...", "Jan": "一月", "Jaw_input": "下顎", "Right": "右", "Help": "支援", "Coppock Curve_study": "估波曲線", "Reversal Amount": "反轉數量", "Reset Chart": "重設圖表", "Marker Color": "馬克筆顏色", "Fans": "扇形", "Left Axis": "左軸", "Open": "開盤", "YES": "是", "longlen_input": "長線長度", "Moving Average Exponential_study": "指數移動平均", "Source border color": "原始邊框顏色", "Redo {0}": "重做{0}", "Cypher Pattern": "Cypher 型態", "s_dates": "s", "Caracas": "卡拉卡斯", "Area": "區域圖", "Triangle Pattern": "三角型態", "Balance of Power_study": "均勢", "EOM_input": "EOM", "Shapes_input": "形狀", "Apply Manual Risk/Reward": "套用手動風險/回報", "Market Closed": "市場關閉", "Sydney": "雪梨", "Indicators": "技術指標", "close": "收盤", "q_input": "Q指", "You are notified": "您已被通知", "Font Icons": "字體圖標", "%D_input": "%D", "Border Color": "邊框顏色", "Offset_input": "偏移", "Risk": "風險", "Price Scale": "價格刻度", "HV_input": "HV", "Seconds": "秒", "Settings": "設定", "Start_input": "開始", "Elliott Impulse Wave (12345)": "艾略特脈衝波浪(12345)", "Hours": "小時", "Send to Back": "傳送回去", "Color 4_input": "顏色4", "Los Angeles": "洛杉磯", "Prices": "價格", "Hollow Candles": "空心蠟燭線", "July": "七月", "Create Horizontal Line": "建立水平線", "Minute": "細級", "Cycle": "循環", "ADX Smoothing_input": "ADX平滑化", "One color for all lines": "所有直線一個顏色", "m_dates": "分", "(H + L + C)/3": "(最高 + 最低 + 收盤)/3", "Candles": "K線", "We_day_of_week": "我們", "Width (% of the Box)": "寬度(箱子的%)", "%d minute": "%d 分", "Go to...": "前往到...", "Pip Size": "Pip 大小", "Wednesday": "週三", "This drawing is used in alert. If you remove the drawing, the alert will be also removed. Do you want to remove the drawing anyway?": "此圖已用於一個快訊中。如果移除此圖,該快訊將一併移除。確定要移除此圖嗎?", "Show Countdown": "顯示時間倒數", "Show alert label line": "顯示快訊標籤線", "Down Wave 2 or B": "下跌波2或B", "MA_input": "MA", "Length2_input": "長度2", "not authorized": "未經授權", "Session Volume_study": "交易時段成交量", "Image URL": "圖片URL", "Submicro": "亞微米級", "SMI Ergodic Oscillator_input": "SMI 遍歷指標", "Show Objects Tree": "顯示物件樹狀結構", "Primary": "基本級", "Price:": "價格:", "Bring to Front": "置於頂層", "Brush": "筆刷", "Not Now": "不是現在", "Yes": "是", "C_data_mode_connecting_letter": "C", "SMALen4_input": "簡單移動平均長度4", "Apply Default Drawing Template": "套用預設繪圖範本", "Compact": "緊湊", "Save As Default": "存為系統預設", "Target border color": "終點邊框顏色", "Invalid Symbol": "無效的代碼", "Inside Pitchfork": "內部分岔線", "yay Color 1_input": "yay 顏色 1", "Quandl is a huge financial database that we have connected to TradingView. Most of its data is EOD and is not updated in real-time, however the information may be extremely useful for fundamental analysis.": "Quandl是一個巨大的金融數據資料庫,我們已經將它連接到TradingView。它的大部分數據是EOD,非即時更新的,然而,這些資訊可能對基本面分析是非常有用的。", "Hide Marks On Bars": "隱藏Bar上的標記", "Cancel Order": "取消報單", "Kagi": "卡吉圖", "WMA Length_input": "WMA 長度", "Show Dividends on Chart": "在圖表上顯示股息", "Show Executions": "顯示信號執行", "Borders": "邊框", "Remove Indicators": "移除技術指標", "loading...": "載入中...", "Closed_line_tool_position": "已平倉", "Rectangle": "矩形", "Change Resolution": "變更解析度", "Indicator Arguments": "指標參數", "Symbol Description": "商品代碼描述", "Chande Momentum Oscillator_study": "錢德動量擺動指標", "Degree": "級別", " per order": " 根據訂單", "Line - HL/2": "線 - HL/2", "Supercycle": "超級週期", "Jun": "六月", "Least Squares Moving Average_study": "最小平方移動平均線", "Change Variance value": "變更方差值", "powered by ": "提供者 ", "Source_input": "來源", "Change Seconds To": "變更秒為", "%K_input": "%K", "Scales Text": "刻度文字", "Toronto": "多倫多", "Please enter template name": "請輸入範本名", "Symbol Name": "代碼名稱", "Tokyo": "東京", "Events Breaks": "經濟事件分隔線", "San Salvador": "聖撒爾瓦多", "Months": "月", "Symbol Info...": "商品代碼資訊...", "Elliott Wave Minor": "艾略特小型波", "Cross": "十字指針", "Measure (Shift + Click on the chart)": "測量(按住Shift 鍵再點圖表)", "Override Min Tick": "顯示最小刻度", "Show Positions": "顯示部位", "Dialog": "對話框", "Add To Text Notes": "新增到文字筆記", "Elliott Triple Combo Wave (WXYXZ)": "艾略特三重组合波浪(WXYXZ)", "Multiplier_input": "乘數", "Risk/Reward": "風險/報酬", "Base Line Periods_input": "基準線週期", "Show Dividends": "顯示股息", "Relative Strength Index_study": "相對強弱指數", "Modified Schiff Pitchfork": "調整希夫分岔線", "Top Labels": "熱門標籤", "Show Earnings": "顯示收益", "Line - Open": "線 - 開盤價", "Elliott Triangle Wave (ABCDE)": "艾略特三角波浪(ABCDE)", "Minuette": "微級", "Text Wrap": "自動換行", "Reverse Position": "平倉反向", "Elliott Minor Retracement": "艾略特小波浪回撤", "DPO_input": "區間震盪", "Pitchfan": "傾斜扇形", "Slash_hotkey": "", "No symbols matched your criteria": "無代碼符合您的搜尋條件", "Icon": "圖示", "lengthRSI_input": "RSI長度", "Tuesday": "星期二", "Teeth Length_input": "齒距", "Indicator_input": "指標", "Box size assignment method": "箱子尺寸分配方法", "Open Interval Dialog": "開啟週期設置", "Shanghai": "上海", "Athens": "雅典", "Fib Speed Resistance Arcs": "費波那契速度阻力弧線", "Content": "内容", "middle": "中間", "Lock Cursor In Time": "鎖定時間游標", "Intermediate": "中級", "Eraser": "清除", "Relative Vigor Index_study": "相對能量指數", "Envelope_study": "包路線", "Symbol Labels": "商品代碼標籤", "Pre Market": "前市場", "Horizontal Line": "水平線", "O_in_legend": "開=", "Confirmation": "確認", "Lines:": "線條:", "hlc3": "高低3", "Buenos Aires": "布宜諾斯艾利斯", "X Cross": "X 交叉", "Bangkok": "曼谷", "Profit Level. Ticks:": "獲利。最小刻度數:", "Show Date/Time Range": "顯示日期/時間區間", "Level {0}": "等級{0}", "Favorites": "收藏", "Horz Grid Lines": "水平網格線", "-DI_input": "-DI", "Price Range": "價格範圍", "day": "天", "deviation_input": "偏差", "Account Size": "賬戶規模", "UTC": "世界統一時間", "Time Interval": "時間間隔", "Success text color": "成功的文字顏色", "ADX smoothing_input": "ADX平滑化", "%d hour": "%d 小時", "Order size": "報單數量", "Drawing Tools": "繪圖工具", "Save Drawing Template As": "儲存繪圖模板為", "Tokelau": "托克勞群島", "ohlc4": "開高低收4", "Traditional": "傳統", "Chaikin Money Flow_study": "蔡金資金流量", "Ease Of Movement_study": "簡易波動指標", "Defaults": "預設值", "Percent_input": "百分比", "Interval is not applicable": "週期不適用", "short_input": "短期", "Visual settings...": "視覺設置...", "RSI_input": "RSI", "Chatham Islands": "查塔姆群島", "Detrended Price Oscillator_input": "區間震蕩線(Detrended Price Oscillator)", "Mo_day_of_week": "週一", "Up Wave 4": "上漲波4", "center": "中心", "Vertical Line": "垂直線", "Bogota": "波哥大", "Show Splits on Chart": "在圖表上顯示股票分割", "Sorry, the Copy Link button doesn't work in your browser. Please select the link and copy it manually.": "抱歉,複製鏈接按鈕在您的瀏覽器無法使用,請選擇鏈接並手動複製。", "Levels Line": "等級線", "Events & Alerts": "事件 & 快訊", "May": "五月", "ROCLen4_input": "變化速率長度4", "Aroon Down_input": "阿隆向下(Aroon Down)", "Add To Watchlist": "新增到觀察清單", "Total": "總計", "Price": "價格", "left": "左邊", "Lock scale": "鎖定刻度", "Limit_input": "限價", "Change Days To": "變更日線為", "Price Oscillator_study": "價格震盪", "smalen1_input": "簡單移動平均長度1", "Drawing Template '{0}' already exists. Do you really want to replace it?": "繪圖模板'{0}'已經存在,確定要取代它?", "Show Middle Point": "顯示中間點", "KST_input": "應用確定指標", "Extend Right End": "右端延伸", "Base currency": "基幣", "Color based on previous close_input": "K線顏色基於前一個收盤價", "Price_input": "價格", "Gann Fan": "江恩扇", "EOD": "一天的結束", "Weeks": "週", "McGinley Dynamic_study": "McGinley 動態指標", "Relative Volatility Index_study": "相對離散指數", "Source Code...": "原始碼...", "PVT_input": "價量趨勢指標", "Show Hidden Tools": "顯示隱藏的工具", "Hull Moving Average_study": "船體移動平均線", "Symbol Prev. Close Value": "商品代碼的上一個收盤值", "Istanbul": "伊斯坦堡", "{0} chart by TradingView": "{0} 圖表由TradingView提供", "Right Shoulder": "右肩", "Remove Drawing Tools": "移除繪圖工具", "Friday": "星期五", "Zero_input": "零", "Company Comparison": "請輸入對比商品", "Stochastic Length_input": "隨機指標長度", "mult_input": "多元", "URL cannot be received": "無法接收URL", "Success back color": "成功的背景顏色", "E_data_mode_end_of_day_letter": "E", "Trend-Based Fib Extension": "斐波那契趨勢擴展", "Top": "頂部", "Double Curve": "雙曲線", "Stochastic RSI_study": "隨機相對擺盪", "Oops!": "哎呀!", "Horizontal Ray": "水平射線", "smalen3_input": "簡單移動平均長度3", "Ok": "確認", "Script Editor...": "腳本編輯器...", "Are you sure?": "您確定嗎?", "Trades on Chart": "圖表上的交易", "Listed Exchange": "列表交易所", "Error:": "錯誤:", "Fullscreen mode": "全螢幕模式", "Add Text Note For {0}": "新增 {0} 的文字筆記", "K_input": "K", "Do you really want to delete Drawing Template '{0}' ?": "確定刪除繪圖模「{0}」?", "ROCLen3_input": "變化速率長度3", "Micro": "微", "Text Color": "文字顏色", "Rename Chart Layout": "重新命名圖表版面", "Built-ins": "內嵌指標", "Background color 2": "背景顏色2", "Drawings Toolbar": "繪圖工具列", "Moving Average Channel_study": "移動平均線通道(Moving Average Channel)", "New Zealand": "紐西蘭", "CHOP_input": "CHOP", "Apply Defaults": "套用預設值", "% of equity": "% 權益", "Extended Alert Line": "延長快訊線", "Note": "註釋", "OK": "確認", "like": "個讚", "Show": "顯示", "{0} bars": "{0}根K线", "Lower_input": "更低", "Created ": "已建立 ", "Warning": "警告", "Elder's Force Index_study": "艾達爾強力指數(EFI)", "Show Earnings on Chart": "在圖表上顯示盈餘", "ATR_input": "ATR", "Low": "最低價", "Bollinger Bands %B_study": "布林線 %B", "Time Zone": "時區", "right": "右邊", "%d month": "%d 月", "Wrong value": "錯誤值", "Upper Band_input": "上限", "Sun": "星期日", "Rename...": "重新命名...", "start_input": "開始", "No indicators matched your criteria.": "沒有指標符合您的搜尋條件。", "Commission": "佣金", "Down Color": "下跌顏色", "Short length_input": "短期長度", "Kolkata": "加爾各答", "Submillennium": "子千年", "Technical Analysis": "技術分析", "Show Text": "顯示文字", "Channel": "管道", "FXCM CFD data is available only to FXCM account holders": "FXCM CFD 數據資料僅限 FXCM 帳號持有人可用", "Lagging Span 2 Periods_input": "遲行帶2個時期", "Connecting Line": "連接線", "Seoul": "首爾", "bottom": "底部", "Teeth_input": "齒", "Sig_input": "Sig", "Open Manage Drawings": "開啟繪圖管理", "Save New Chart Layout": "儲存新圖表版面", "Fib Channel": "費波那契通道", "Save Drawing Template As...": "儲存繪圖範本為...", "Minutes_interval": "分鐘", "Up Wave 2 or B": "上漲波2或B", "Columns": "柱狀圖", "Directional Movement_study": "動向指標", "roclen2_input": "變化速率長度2", "Apply WPT Down Wave": "套用WPT Down波", "Not applicable": "不適用", "Bollinger Bands %B_input": "布林通道 %B", "Default": "系統預設", "Singapore": "新加坡", "Template name": "範本名稱", "Indicator Values": "指標值", "Lips Length_input": "嘴唇長度", "Toggle Log Scale": "切換為對數縮放", "L_in_legend": "低=", "Remove custom interval": "移除自訂區間", "shortlen_input": "短期長度", "Quotes are delayed by {0} min": "報價延遲 {0} 分鐘", "Hide Events on Chart": "隱藏圖表中的事件", "Cash": "現金", "Profit Background Color": "利潤背景顏色", "Bar's Style": "圖表樣式", "Exponential_input": "指數化", "Down Wave 5": "下跌波5", "Previous": "上一個", "Stay In Drawing Mode": "保持繪圖模式", "Comment": "評論", "Connors RSI_study": "Connors RSI(CRSI)", "Bars": "美國線", "Show Labels": "顯示標籤", "Flat Top/Bottom": "平滑頂部/底部", "Symbol Type": "代碼類型", "December": "十二月", "Lock drawings": "鎖定繪圖", "Border color": "邊框顏色", "Change Seconds From": "變更秒自", "Left Labels": "左標籤", "Insert Indicator...": "插入指標...", "ADR_B_input": "ADR_B", "Paste %s": "貼上 %s", "Change Symbol...": "變更代碼...", "Timezone": "時區", "Invite-only script. You have been granted access.": "僅限邀請的腳本,您已被授予存取權限。", "Color 6_input": "顏色6", "Oct": "十月", "ATR Length": "平均真實波幅長度", "{0} financials by TradingView": "{0} 財務資料由TradingView提供", "Extend Lines Left": "左側延長線", "Feb": "二月", "Transparency": "透明度", "No": "否", "June": "六月", "Tweet": "推文", "Cyclic Lines": "循環線", "length28_input": "長度28", "ABCD Pattern": "ABCD 趨勢", "When selecting this checkbox the study template will set \"__interval__\" interval on a chart": "勾選此選項,研究範本將設定表格週期為「__interval__」", "Add": "增加", "Line - Low": "線 - 最低價", "Millennium": "千年", "On Balance Volume_study": "能量潮", "Apply Indicator on {0} ...": "在{0}上使用指標...", "NEW": "新", "Chart Layout Name": "圖表版面名稱", "Up bars": "上漲K棒", "Hull MA_input": "Hull MA", "Schiff": "希夫", "Lock Scale": "鎖定刻度", "distance: {0}": "距離:{0}", "Extended": "延長線", "Square": "方形", "log": "對數刻度", "NO": "否", "Top Margin": "上邊距", "Up fractals_input": "向上分形", "Insert Drawing Tool": "插入繪圖工具", "OHLC Values": "開高低收", "Correlation_input": "相關係數", "Session Breaks": "收盤時中斷", "Add {0} To Watchlist": "新增 {0} 到觀察清單", "Anchored Note": "錨點註釋", "lipsLength_input": "lipsLength", "low": "低點", "Apply Indicator on {0}": "在{0}上使用指標", "UpDown Length_input": "UpDown 長度", "Price Label": "價格標籤", "November": "十一月", "Tehran": "德黑蘭", "Balloon": "泡泡註解", "Track time": "追踪時間", "Background Color": "背景顏色", "an hour": "1小時", "Right Axis": "右軸", "D_data_mode_delayed_streaming_letter": "D", "VI -_input": "VI -", "slowLength_input": "慢線長度", "Click to set a point": "點擊以設點", "Save Indicator Template As...": "儲存指標範本為...", "Arrow Up": "向上箭頭", "n/a": "不適用", "Indicator Titles": "指標名稱", "Failure text color": "失敗的文字顏色", "Sa_day_of_week": "週六", "Net Volume_study": "淨量", "Error": "錯誤", "Edit Position": "編輯持倉", "RVI_input": "RVI", "Centered_input": "居中", "Recalculate On Every Tick": "每筆數據重新計算", "Left": "左", "Simple ma(oscillator)_input": "簡單移動平均(振盪器)", "Compare": "比較", "Fisher Transform_study": "弗雪變換", "Show Orders": "顯示訂單", "Zoom In": "放大", "Length EMA_input": "EMA 長度", "Enter a new chart layout name": "輸入新圖表版面名稱", "Signal Length_input": "信號長度", "FAILURE": "失敗", "Point Value": "點值", "D_interval_short": "天", "MA with EMA Cross_study": "MA與EAM交叉", "Label Up": "向上標籤", "Price Channel_study": "價格通道(Price Channel)", "Close": "收盤", "ParabolicSAR_input": "拋物線轉向指標(PSAR)", "Log Scale_scale_menu": "對數刻度", "MACD_input": "MACD", "Do not show this message again": "不再顯示此訊息", "{0} P&L: {1}": "{0}獲利&止損:{1}", "No Overlapping Labels": "無重疊標籤", "Arrow Mark Left": "向左箭頭", "Slow length_input": "慢線長度", "Line - Close": "線 - 收盤價", "(O + H + L + C)/4": "(開盤 + 最高 + 最低 + 收盤)/4", "Confirm Inputs": "確認參數", "Open_line_tool_position": "未平倉", "Lagging Span_input": "遲行帶", "Subminuette": "次微級", "Thursday": "星期四", "Arrow Down": "向下箭頭", "Vancouver": "溫哥華", "Triple EMA_study": "三重指數平滑平均線", "Elliott Correction Wave (ABC)": "艾略特校正波浪(ABC)", "Error while trying to create snapshot.": "建立快照時發生錯誤。", "Label Background": "標籤背景顏色", "Templates": "模板", "Please report the issue or click Reconnect.": "請回報問題或點擊重新連結。", "Normal": "一般", "Signal Labels": "信號標籤", "Delete Text Note": "刪除文字筆記", "compiling...": "編譯中...", "Detrended Price Oscillator_study": "區間震蕩線(Detrended Price Oscillator)", "Color 5_input": "顏色5", "Fixed Range_study": "固定範圍", "Up Wave 1 or A": "上漲波1或A", "Scale Price Chart Only": "僅縮放價格圖表", "Unmerge Up": "取消向上合併", "auto_scale": "自動", "Short period_input": "短周期", "Background": "背景", "Study Templates": "指標模板", "Up Color": "上漲顏色", "Apply Elliot Wave Intermediate": "套用艾略特中型波", "VWMA_input": "成交量加權移動均線(VWMA)", "Lower Deviation_input": "下偏差", "Save Interval": "儲存週期", "February": "二月", "Reverse": "反向", "Oops, something went wrong": "Oops,發生了錯誤", "Add to favorites": "加入收藏", "Median": "中線", "ADX_input": "ADX", "Remove": "移除", "len_input": "長度", "Arrow Mark Up": "向上箭頭", "April": "四月", "Active Symbol": "活躍代碼", "Extended Hours": "延長時間", "Crosses_input": "交叉", "Middle_input": "中間", "Read our blog for more info!": "閱覽我們的部落格,了解更多!", "Sync drawing to all charts": "同步繪圖到所有圖表", "LowerLimit_input": "下限帶", "Know Sure Thing_study": "應用確定指標", "Copy Chart Layout": "複製圖表版面", "Compare...": "比較...", "1. Slide your finger to select location for next anchor
2. Tap anywhere to place the next anchor": "1. 請拖曳您的手指選擇下一個游標的放置地點
2. 點擊任何一處即可定位", "Text Notes are available only on chart page. Please open a chart and then try again.": "文字筆記僅能在表格頁面上使用。請打開圖表再試一次。", "Color": "顏色", "Aroon Up_input": "阿隆向上(Aroon Up)", "Apply Elliot Wave Major": "套用艾略特主要波", "Scales Lines": "刻度線", "Type the interval number for munute charts (i.e. 5 if it is going to be a five minute chart). Or number plus letter for H (Hourly), D (Daily), W (Weekly), M (Monthly) intervals (i.e. D or 2H)": "鍵入分鐘圖表的間隔數(若為五分鐘圖表則輸入5)。 或數字加字母H(小時),D(每日),W(每週),M(每月)間隔(如D或2H)", "Ellipse": "橢圓形", "Up Wave C": "上漲波C", "Show Distance": "顯示距離", "Risk/Reward Ratio: {0}": "風險/報酬比:{0}", "Restore Size": "復原尺寸", "Volume Oscillator_study": "交易量擺盪", "Honolulu": "檀香山", "Williams Fractal_study": "威廉姆分型", "Merge Up": "向上合併", "Right Margin": "右邊距", "Moscow": "莫斯科", "Warsaw": "華沙"} diff --git a/static/Kline/charting_library/static/tv-chart.630b704a2b9d0eaf1593.html b/static/Kline/charting_library/static/tv-chart.630b704a2b9d0eaf1593.html new file mode 100644 index 0000000..5b5fff9 --- /dev/null +++ b/static/Kline/charting_library/static/tv-chart.630b704a2b9d0eaf1593.html @@ -0,0 +1,91 @@ + + + + + + + + + + +
+ + + + + + + diff --git a/static/Kline/datafeeds/README.md b/static/Kline/datafeeds/README.md new file mode 100644 index 0000000..cc8ed3f --- /dev/null +++ b/static/Kline/datafeeds/README.md @@ -0,0 +1,3 @@ +# Charting Library Datafeeds + +This folder contains implementation of Charting Library Datafeeds. diff --git a/static/Kline/datafeeds/socket/datafees.js b/static/Kline/datafeeds/socket/datafees.js new file mode 100644 index 0000000..921a0c3 --- /dev/null +++ b/static/Kline/datafeeds/socket/datafees.js @@ -0,0 +1,174 @@ +'use strict'; + +var _dataUpdater2 = _interopRequireDefault(updater); + +var LastLength; + +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : {default: obj}; +} + +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +/** + * JS API + */ +var datafeeds = function () { + + /** + * JS API + * @param {*Object} vue vue实例 + */ + function datafeeds(vue) { + _classCallCheck(this, datafeeds); + + this.self = vue; + this.barsUpdater = new _dataUpdater2.default(this); + } + + /** + * @param {*Function} callback 回调函数 + * `onReady` should return result asynchronously. + */ + + + datafeeds.prototype.onReady = function onReady(callback) { + var _this = this; + + return new Promise(function (resolve, reject) { + var configuration = _this.defaultConfiguration(); + if (_this.self.getConfig) { + configuration = Object.assign(_this.defaultConfiguration(), _this.self.getConfig()); + } + resolve(configuration); + }).then(function (data) { + return callback(data); + }); + }; + + /** + * @param {*String} symbolName 商品名称或ticker + * @param {*Function} onSymbolResolvedCallback 成功回调 + * @param {*Function} onResolveErrorCallback 失败回调 + * `resolveSymbol` should return result asynchronously. + */ + + + datafeeds.prototype.resolveSymbol = function resolveSymbol(symbolName, onSymbolResolvedCallback, onResolveErrorCallback) { + var _this2 = this; + + return new Promise(function (resolve, reject) { + var symbolInfo = _this2.defaultSymbol(); + if (_this2.self.getSymbol) { + symbolInfo = Object.assign(_this2.defaultSymbol(), _this2.self.getSymbol()); + } + resolve(symbolInfo); + }).then(function (data) { + return onSymbolResolvedCallback(data); + }).catch(function (err) { + return onResolveErrorCallback(err); + }); + }; + + /** + * @param {*Object} symbolInfo 商品信息对象 + * @param {*String} resolution 分辨率 + * @param {*Number} rangeStartDate 时间戳、最左边请求的K线时间 + * @param {*Number} rangeEndDate 时间戳、最右边请求的K线时间 + * @param {*Function} onDataCallback 回调函数 + * @param {*Function} onErrorCallback 回调函数 + */ + + + datafeeds.prototype.getBars = function getBars(symbolInfo, resolution, rangeStartDate, rangeEndDate, onDataCallback, onErrorCallback) { + var onLoadedCallback = function onLoadedCallback(data) { + if (data && data.length) { + onDataCallback(data, {noData: false}); + } else { + onDataCallback([], {noData: true}); + } + LastLength = data.length; + //或者可以这样写: + // data && data.length ? onDataCallback(data, { noData: true }) : onDataCallback([], { noData: true }); + }; + this.self.getBars(symbolInfo, resolution, rangeStartDate, rangeEndDate, onLoadedCallback); + }; + + /** + * 订阅K线数据。图表库将调用onRealtimeCallback方法以更新实时数据 + * @param {*Object} symbolInfo 商品信息 + * @param {*String} resolution 分辨率 + * @param {*Function} onRealtimeCallback 回调函数 + * @param {*String} subscriberUID 监听的唯一标识符 + * @param {*Function} onResetCacheNeededCallback (从1.7开始): 将在bars数据发生变化时执行 + */ + + + datafeeds.prototype.subscribeBars = function subscribeBars(symbolInfo, resolution, onRealtimeCallback, subscriberUID, onResetCacheNeededCallback) { + this.barsUpdater.subscribeBars(symbolInfo, resolution, onRealtimeCallback, subscriberUID, onResetCacheNeededCallback); + }; + + /** + * 取消订阅K线数据 + * @param {*String} subscriberUID 监听的唯一标识符 + */ + + + datafeeds.prototype.unsubscribeBars = function unsubscribeBars(subscriberUID) { + this.barsUpdater.unsubscribeBars(subscriberUID); + }; + + /** + * 默认配置 + */ + + + datafeeds.prototype.defaultConfiguration = function defaultConfiguration() { + //设置默认配置 + return { + supports_search: false, + supports_group_request: false, + supported_resolutions: ['1', '5', '15', '30', '60', '1D', '1W', '1M'], + supports_marks: true, + supports_timescale_marks: true, + supports_time: true + }; + }; + + /** + * 默认商品信息 + */ + + + datafeeds.prototype.defaultSymbol = function defaultSymbol() { + // alert(this.self.pricescale) + return { + 'name': this.self.symbol.toLocaleUpperCase(), + // 'timezone': 'Asia/Shanghai', + timezone: "America/Toronto", + 'minmov': 1, + 'minmov2': 0, + 'pointvalue': 1, + 'fractional': false, + //设置周期 + 'session': '24x7', + 'has_intraday': true, + 'has_no_volume': false, + //设置是否支持周月线 + "has_daily": true, + //设置是否支持周月线 + "has_weekly_and_monthly": true, + 'description': this.self.symbol.toLocaleUpperCase(), + //设置精度 100表示保留两位小数 1000三位 10000四位 + 'pricescale': Number(this.self.pricescale), + 'ticker': this.self.symbol.toLocaleUpperCase(), + 'supported_resolutions': ['1', '5', '15', '30', '60', '240', '1D', '5D', '1W', '1M'] + }; + }; + + return datafeeds; +}(); diff --git a/static/Kline/datafeeds/socket/socket.js b/static/Kline/datafeeds/socket/socket.js new file mode 100644 index 0000000..24755e4 --- /dev/null +++ b/static/Kline/datafeeds/socket/socket.js @@ -0,0 +1,134 @@ +'use strict'; + +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +var socket = function () { + + function socket() { + var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'wss://virgox.com/websocket'; + //var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'wss://test.virgox.com/websocket'; + var options = arguments[1]; + + _classCallCheck(this, socket); + + this.heartBeatTimer = null; + this.options = options; + this.messageMap = {}; + this.connState = 0; + this.socket = null; + this.url = url; + } + + socket.prototype.doOpen = function doOpen() { + var _this = this; + if (this.connState) return; + this.connState = 1; + this.afterOpenEmit = []; + var BrowserWebSocket = window.WebSocket || window.MozWebSocket; + var socket = new BrowserWebSocket(this.url); + socket.binaryType = 'arraybuffer'; + socket.onopen = function (evt) { + return _this.onOpen(evt); + }; + socket.onclose = function (evt) { + return _this.onClose(evt); + }; + socket.onmessage = function (evt) { + return _this.onMessage(evt.data); + }; + socket.onerror = function (err) { + return _this.onError(err); + }; + this.socket = socket; + }; + + socket.prototype.onOpen = function onOpen(evt) { + this.connState = 2; + this.heartBeatTimer = setInterval(this.checkHeartbeat.bind(this), 20000); + this.onReceiver({Event: 'open'}); + }; + + socket.prototype.checkOpen = function checkOpen() { + return this.connState === 2; + }; + + socket.prototype.onClose = function onClose() { + this.connState = 0; + if (this.connState) { + this.onReceiver({Event: 'close'}); + } + }; + + socket.prototype.send = function send(data) { + if (this.socket.readyState != 1) { + // console.log('readyState', this.socket.readyState) + setTimeout(function () { + this.send(data); + }.bind(this), 100); + } else { + this.socket.send(JSON.stringify(data)); + } + + }; + + socket.prototype.emit = function emit(data) { + var _this2 = this; + return new Promise(function (resolve) { + _this2.socket.send(JSON.stringify(data)); + _this2.on('message', function (data) { + resolve(data); + }); + }); + }; + + socket.prototype.onMessage = function onMessage(message) { + try { + var data = JSON.parse(message); + this.onReceiver({Event: 'message', Data: data}); + } catch (err) { + console.error(' >> Data parsing error:', err); + } + }; + + socket.prototype.checkHeartbeat = function checkHeartbeat() { + var data = { + 'cmd': 'ping', + 'time': [Date.parse(new Date())], + }; + this.send(data); + }; + + socket.prototype.onError = function onError(err) { + }; + + socket.prototype.onReceiver = function onReceiver(data) { + var callback = this.messageMap[data.Event]; + if (callback) callback(data.Data); + }; + + socket.prototype.on = function on(name, handler) { + this.messageMap[name] = handler; + }; + + socket.prototype.doClose = function doClose() { + this.socket.close(); + }; + + socket.prototype.destroy = function destroy() { + if (this.heartBeatTimer) { + clearInterval(this, this.heartBeatTimer); + this.heartBeatTimer = null; + } + this.doClose(); + this.messageMap = {}; + this.connState = 0; + this.socket = null; + }; + + return socket; + +}(); \ No newline at end of file diff --git a/static/Kline/datafeeds/socket/updater.js b/static/Kline/datafeeds/socket/updater.js new file mode 100644 index 0000000..b2b0757 --- /dev/null +++ b/static/Kline/datafeeds/socket/updater.js @@ -0,0 +1,100 @@ +'use strict'; + +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +/** + * 数据更新器 + * 通过更新器触发datafeeds的getBars实时更新图表数据 + */ +var updater = function () { + function dataUpdater(datafeeds) { + _classCallCheck(this, dataUpdater); + + this.subscribers = {}; + this.requestsPending = 0; + this.historyProvider = datafeeds; + } + + dataUpdater.prototype.subscribeBars = function subscribeBars(symbolInfo, resolution, newDataCallback, listenerGuid) { + this.subscribers[listenerGuid] = { + lastBarTime: null, + listener: newDataCallback, + resolution: resolution, + symbolInfo: symbolInfo + }; + }; + + dataUpdater.prototype.unsubscribeBars = function unsubscribeBars(listenerGuid) { + delete this.subscribers[listenerGuid]; + }; + + dataUpdater.prototype.updateData = function updateData() { + var _this = this; + + if (this.requestsPending) return; + this.requestsPending = 0; + for (var listenerGuid in this.subscribers) { + this.requestsPending++; + this.updateDataForSubscriber(listenerGuid).then(function () { + return _this.requestsPending--; + }).catch(function () { + return _this.requestsPending--; + }); + } + }; + + dataUpdater.prototype.updateDataForSubscriber = function updateDataForSubscriber(listenerGuid) { + var _this2 = this; + + return new Promise(function (resolve, reject) { + var subscriptionRecord = _this2.subscribers[listenerGuid]; + var rangeEndTime = parseInt((Date.now() / 1000).toString()); + var rangeStartTime = rangeEndTime - _this2.periodLengthSeconds(subscriptionRecord.resolution, 10); + _this2.historyProvider.getBars(subscriptionRecord.symbolInfo, subscriptionRecord.resolution, rangeStartTime, rangeEndTime, function (bars) { + _this2.onSubscriberDataReceived(listenerGuid, bars); + resolve(); + }, function () { + reject(); + }); + }); + }; + + dataUpdater.prototype.onSubscriberDataReceived = function onSubscriberDataReceived(listenerGuid, bars) { + if (!this.subscribers.hasOwnProperty(listenerGuid)) return; + if (!bars.length) return; + var lastBar = bars[bars.length - 1]; + var subscriptionRecord = this.subscribers[listenerGuid]; + if (subscriptionRecord.lastBarTime !== null && lastBar.time < subscriptionRecord.lastBarTime) return; + var isNewBar = subscriptionRecord.lastBarTime !== null && lastBar.time > subscriptionRecord.lastBarTime; + if (isNewBar) { + if (bars.length < 2) { + throw new Error('Not enough bars in history for proper pulse update. Need at least 2.'); + } + var previousBar = bars[bars.length - 2]; + subscriptionRecord.listener(previousBar); + } + + subscriptionRecord.lastBarTime = lastBar.time; + subscriptionRecord.listener(lastBar); + }; + + dataUpdater.prototype.periodLengthSeconds = function periodLengthSeconds(resolution, requiredPeriodsCount) { + var daysCount = 0; + if (resolution === 'D' || resolution === '1D') { + daysCount = requiredPeriodsCount; + } else if (resolution === 'M' || resolution === '1M') { + daysCount = 31 * requiredPeriodsCount; + } else if (resolution === 'W' || resolution === '1W') { + daysCount = 7 * requiredPeriodsCount; + } else { + daysCount = requiredPeriodsCount * parseInt(resolution) / (24 * 60); + } + return daysCount * 24 * 60 * 60; + }; + + return dataUpdater; +}(); \ No newline at end of file diff --git a/static/Kline/datafeeds/socket/wsconfig.js b/static/Kline/datafeeds/socket/wsconfig.js new file mode 100644 index 0000000..1e135c8 --- /dev/null +++ b/static/Kline/datafeeds/socket/wsconfig.js @@ -0,0 +1,638 @@ +var Wsconfig = (function () { + + var WsConfig = function (symbolId, symbolName, symbolType, priceDecimal) { + // var urls = 'wss://virgox.com/websocket'; + var urls = 'wss://test.virgox.com/websocket'; + this.widgets = null; + this.socket = new socket(urls); + this.datafeeds = new datafeeds(this); + this.symbol = symbolName || "btc/usdt"; // 初始化默认交易对 + this.symbolId = symbolId; + this.symbolType = symbolType; + this.interval = localStorage.getItem('tradingview.resolution') || '15'; + this.cacheData = {}; + this.lastTime = null; + this.pricescale = priceDecimal; + this.getBarTimer = null; + this.isLoading = true; + var that = this; + this.socket.doOpen() + this.socket.on('open', function () { + if (symbolType == 1) { + if (that.interval <= 43200) { // 1D 以内 + that.socket.send({ + request: "history_kline_" + symbolId + "_" + that.interval, + sub: "dynamic_kline_" + symbolId + "_" + that.interval, + }) + } else if (that.interval == "1D") { // 按钮将interval值设为1D + that.socket.send({ + request: "history_kline_" + symbolId + "_1440", + sub: "dynamic_kline_" + symbolId + "_1440", + }) + } else if (that.interval == "1W") { + that.socket.send({ + request: "history_kline_" + symbolId + "_10080", + sub: "dynamic_kline_" + symbolId + "_10080", + }) + } else if (that.interval == "1M") { + that.socket.send({ + request: "history_kline_" + symbolId + "_43200", + sub: "dynamic_kline_" + symbolId + "_43200", + }) + } + } else if (symbolType == 2) { + if (that.interval <= 43200) { + that.socket.send({ + request: "futures_history_kline_" + symbolId + "_" + that.interval, + sub: "futures_dynamic_kline_" + symbolId + "_" + that.interval, + }) + } else if (that.interval == "1D") { + that.socket.send({ + request: "futures_history_kline_" + symbolId + "_1440", + sub: "futures_dynamic_kline_" + symbolId + "_1440", + }) + } else if (that.interval == "1W") { + that.socket.send({ + request: "futures_history_kline_" + symbolId + "_10080", + sub: "futures_dynamic_kline_" + symbolId + "_10080", + }) + } else if (that.interval == "1M") { + that.socket.send({ + request: "futures_history_kline_" + symbolId + "_43200", + sub: "futures_dynamic_kline_" + symbolId + "_43200", + }) + } + } + }) + this.socket.on('message', that.onMessage.bind(this)) + this.socket.on('close', that.onClose.bind(this)) + }; + + WsConfig.prototype.init = function () { + var resolution = this.interval; + var chartType = (localStorage.getItem('tradingview.chartType') || '1') * 1; + + var symbol = this.symbol; + + var locale = 'en'; // + + var timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; + + var skin = localStorage.getItem('tradingViewTheme') || 'black'; + + + if (!this.widgets) { + this.widgets = new TradingView.widget({ + autosize: true, + fullscreen: true, + + symbol: symbol, + interval: resolution, + container_id: 'tv_chart_container', + datafeed: this.datafeeds, + library_path: './charting_library/', + enabled_features: [], + timezone: timezone, + custom_css_url: './css/tradingview_' + skin + '.css', + locale: locale, + debug: false, + disabled_features: [ + // "fullscreen", + // "autosize", + "header_symbol_search", + "use_localstorage_for_settings", + "header_fullscreen_button", + "header_saveload", + "header_screenshot", + "header_chart_type", + "header_compare", + "header_undo_redo", + "timeframes_toolbar", + "volume_force_overlay", + "header_resolutions", + ], + //设置初始化样式配置 + overrides: this.getOverrides(skin), + studies_overrides: this.getStudiesOverrides(skin), + + //设置初始化加载条样式 + loading_screen: { + "backgroundColor": "#181328", + "foregroundColor": "#5d7d93" + }, + }) + + var thats = this.widgets; + thats.onChartReady(function () { + createStudy(); + createButton(buttons); + thats.chart().setChartType(chartType); + toggleStudy(chartType); + }) + + // 提交按钮 + var buttons = [ + { title: 'Time', resolution: '1', chartType: 3 }, // 1,2,3几种类型 + { title: '1min', resolution: '1', chartType: 1 }, + { title: '5min', resolution: '5', chartType: 1 }, + { title: '15min', resolution: '15', chartType: 1 }, + { title: '30min', resolution: '30', chartType: 1 }, + { title: '1hour', resolution: '60', chartType: 1 }, + { title: '1day', resolution: '1D', chartType: 1 }, + { title: '1week', resolution: '1W', chartType: 1 }, + { title: '1month', resolution: '1M', chartType: 1 }, + ]; + var studies = []; + + function createButton(buttons) { + for (var i = 0; i < buttons.length; i++) { + (function (button) { + thats.createButton() + .attr('title', button.title).addClass("mydate") + .text(button.title) + .on('click', function (e) { + if (this.parentNode.className.search('active') > -1) { + return false; + } + localStorage.setItem('tradingview.resolution', button.resolution); + localStorage.setItem('tradingview.chartType', button.chartType); + var $active = this.parentNode.parentNode.querySelector('.active'); + $active.className = $active.className.replace(/(\sactive|active\s)/, ''); + this.parentNode.className += ' active'; + thats.chart().setResolution(button.resolution, function onReadyCallback() { + }); + if (button.chartType != thats.chart().chartType()) { + thats.chart().setChartType(button.chartType); + toggleStudy(button.chartType); + } + }).parent().addClass('my-group' + (button.resolution == resolution && button.chartType == chartType ? ' active' : '')); + })(buttons[i]); + } + } + + function createStudy() { + var id = thats.chart().createStudy('Moving Average', false, false, [15], null, { 'Plot.color': 'rgb(150, 95, 196)' }); + studies.push(id); + id = thats.chart().createStudy('Moving Average', false, false, [30], null, { "plot.color": "rgb(118,32,99)" }); + studies.push(id); + id = thats.chart().createStudy('Moving Average', false, false, [60], null, { 'Plot.color': 'rgb(116,149,187)' }); + studies.push(id); + } + + function toggleStudy(chartType) { + var state = chartType == 3 ? 0 : 1; + for (var i = 0; i < studies.length; i++) { + thats.chart().getStudyById(studies[i]).setVisible(state); + } + } + } + }; + + WsConfig.prototype.sendMessage = function (data) { + var that = this; + //console.log("这是要发送的数据:" + JSON.stringify(data)) + if (this.socket.checkOpen()) { + this.socket.send(data) + } else { + this.socket.on('open', function () { + that.socket.send(data) + }) + } + }; + + WsConfig.prototype.unSubscribe = function (interval) { + var thats = this; + //停止订阅,删除过期缓存、缓存时间、缓存状态 + var ticker = this.symbol + "-" + interval; + var tickertime = ticker + "load"; + var tickerstate = ticker + "state"; + var tickerCallback = ticker + "Callback"; + delete thats.cacheData[ticker]; + delete thats.cacheData[tickertime]; + delete thats.cacheData[tickerstate]; + delete thats.cacheData[tickerCallback]; + if (this.symbolId == 1) { + if (interval <= 43200) { + this.sendMessage({ + unsub: "dynamic_kline_" + this.symbolId + "_" + interval, + }) + } else if (interval == "1D") { + this.sendMessage({ + unsub: "dynamic_kline_" + this.symbolId + "_1440", + }) + } else if (interval == "1W") { + this.sendMessage({ + unsub: "dynamic_kline_" + this.symbolId + "_10080", + }) + } else if (interval == "1M") { + this.sendMessage({ + unsub: "dynamic_kline_" + this.symbolId + "_43200", + }) + } + } else if (this.symbolId == 2) { + if (interval <= 43200) { + this.sendMessage({ + unsub: "futures_dynamic_kline_" + this.symbolId + "_" + interval, + }) + } else if (interval == "1D") { + this.sendMessage({ + unsub: "futures_dynamic_kline_" + this.symbolId + "_1440", + }) + } else if (interval == "1W") { + this.sendMessage({ + unsub: "futures_dynamic_kline_" + this.symbolId + "_10080", + }) + } else if (interval == "1M") { + this.sendMessage({ + unsub: "futures_dynamic_kline_" + this.symbolId + "_43200", + }) + } + } + + }; + + + WsConfig.prototype.subscribe = function () { + if (this.symbolType == 1) { + if (this.interval <= 43200) { + this.sendMessage({ + sub: "dynamic_kline_" + this.symbolId + "_" + this.interval, + }) + } else if (this.interval == "1D") { + this.sendMessage({ + sub: "dynamic_kline_" + this.symbolId + "_1440", + }) + } else if (this.interval == "1W") { + this.sendMessage({ + sub: "dynamic_kline_" + this.symbolId + "_10080", + }) + } else if (this.interval == "1M") { + this.sendMessage({ + sub: "dynamic_kline_" + this.symbolId + "_43200", + }) + } + } else if (this.symbolType == 2) { + if (this.interval <= 43200) { + this.sendMessage({ + sub: "futures_dynamic_kline_" + this.symbolId + "_" + this.interval, + }) + } else if (this.interval == "1D") { + this.sendMessage({ + sub: "futures_dynamic_kline_" + this.symbolId + "_1440", + }) + } else if (this.interval == "1W") { + this.sendMessage({ + sub: "futures_dynamic_kline_" + this.symbolId + "_10080", + }) + } else if (this.interval == "1M") { + this.sendMessage({ + sub: "futures_dynamic_kline_" + this.symbolId + "_43200", + }) + } + } + }; + + WsConfig.prototype.onMessage = function (data) { + var thats = this; + + var isFuture = data.sub.startsWith('futures') ? 'futures_' : ''; + var interval = thats.interval; + switch (interval.toLowerCase()) { + case "1d": + interval = "1440"; + break; + case "1w": + interval = "10080"; + break; + case "1m": + interval = "43200" + break; + } + + if (data.data && data.sub == `${isFuture}history_kline_${thats.symbolId}_${interval}`) { + + //websocket返回的值,数组代表时间段历史数据,不是增量 + var list = [] + var ticker = thats.symbol + "-" + thats.interval; + var tickerstate = ticker + "state"; + var tickerCallback = ticker + "Callback"; + var onLoadedCallback = thats.cacheData[tickerCallback]; + + //var that = thats; + //遍历数组,构造缓存数据 + data.data.forEach(function (element) { + list.push({ + time: element.createTime * 1, + open: element.open, + high: element.high, + low: element.low, + close: element.close, + volume: element.qty, + }) + }, thats); + //如果没有缓存数据,则直接填充,发起订阅 + if (!thats.cacheData[ticker]) { + thats.cacheData[ticker] = list; + thats.subscribe() + } + //新数据即当前时间段需要的数据,直接喂给图表插件 + if (onLoadedCallback) { + onLoadedCallback(list); + delete thats.cacheData[tickerCallback]; + } + //请求完成,设置状态为false + thats.cacheData[tickerstate] = !1; + //记录当前缓存时间,即数组最后一位的时间 + thats.lastTime = thats.cacheData[ticker][thats.cacheData[ticker].length - 1].time + } + + if (data.data && data.sub == `${isFuture}dynamic_kline_${thats.symbolId}_${thats.interval}`) { + + // data带有type,即返回的是订阅数据, + //缓存的key + var ticker = thats.symbol + "-" + thats.interval; + //构造增量更新数据 + var barsData = { + time: data.data.createTime * 1, + open: data.data.open, + high: data.data.high, + low: data.data.low, + close: data.data.close, + volume: data.data.qty + }; + + if (barsData.time >= thats.lastTime && thats.cacheData[ticker] && thats.cacheData[ticker].length) { + if (thats.cacheData[ticker][thats.cacheData[ticker].length - 1].time == barsData.time) { + thats.cacheData[ticker][thats.cacheData[ticker].length - 1] = barsData; + thats.lastTime = barsData.time + } else { + thats.cacheData[ticker].push(barsData); + } + } + // 通知图表插件,可以开始增量更新的渲染了 + thats.datafeeds.barsUpdater.updateData() + } else if (data.status) { + var ticker = thats.symbol + "-" + thats.interval; + var tickerCallback = ticker + "Callback"; + var onLoadedCallback = thats.cacheData[tickerCallback]; + if (onLoadedCallback) { + onLoadedCallback([]); + delete thats.cacheData[tickerCallback]; + } + } + }; + WsConfig.prototype.onClose = function () { + var thats = this; + console.log(' >> : 连接已断开... 正在重连') + thats.socket.doOpen() + thats.socket.on('open', function () { + console.log(' >> : 已重连') + thats.subscribe() + }); + }; + + WsConfig.prototype.initMessage = function (symbolInfo, resolution, rangeStartDate, rangeEndDate, onLoadedCallback) { + var that = this; + //保留当前回调 + var tickerCallback = this.symbol + "-" + resolution + "Callback"; + that.cacheData[tickerCallback] = onLoadedCallback; + //获取需要请求的数据数目 + //商品名 + var symbol = that.symbol; + //如果当前时间节点已经改变,停止上一个时间节点的订阅,修改时间节点值 + if (that.interval !== resolution) { + that.unSubscribe(that.interval) + that.interval = resolution; + } + //获取当前时间段的数据,在onMessage中执行回调onLoadedCallback + if (this.symbolType == 1) { + if (that.interval <= 43200) { + that.socket.send({ + request: "history_kline_" + this.symbolId + "_" + that.interval, + sub: "dynamic_kline_" + this.symbolId + "_" + that.interval, + }) + } else if (that.interval == "1D") { + that.socket.send({ + request: "history_kline_" + this.symbolId + "_1440", + sub: "dynamic_kline_" + this.symbolId + "_1440", + }) + } else if (that.interval == "1W") { + that.socket.send({ + request: "history_kline_" + this.symbolId + "_10080", + sub: "dynamic_kline_" + this.symbolId + "_10080", + }) + } else if (that.interval == "1M") { + that.socket.send({ + request: "history_kline_" + this.symbolId + "_43200", + sub: "dynamic_kline_" + this.symbolId + "_43200", + }) + } + } else if (this.symbolType == 2) { + if (that.interval <= 43200) { + that.socket.send({ + request: "futures_history_kline_" + this.symbolId + "_" + that.interval, + sub: "futures_dynamic_kline_" + this.symbolId + "_" + that.interval, + }) + } else if (that.interval == "1D") { + that.socket.send({ + request: "futures_history_kline_" + this.symbolId + "_1440", + sub: "futures_dynamic_kline_" + this.symbolId + "_1440", + }) + } else if (that.interval == "1W") { + that.socket.send({ + request: "futures_history_kline_" + this.symbolId + "_10080", + sub: "futures_dynamic_kline_" + this.symbolId + "_10080", + }) + } else if (that.interval == "1M") { + that.socket.send({ + request: "futures_history_kline_" + this.symbolId + "_43200", + sub: "futures_dynamic_kline_" + this.symbolId + "_43200", + }) + } + } + + }; + + WsConfig.prototype.getBars = function (symbolInfo, resolution, rangeStartDate, rangeEndDate, onLoadedCallback) { + //console.log(' >> :', rangeStartDate, rangeEndDate) + + var ticker = this.symbol + "-" + resolution; + var tickerload = ticker + "load"; + var tickerstate = ticker + "state"; + + if (!this.cacheData[ticker] && !this.cacheData[tickerstate]) { + //如果缓存没有数据,而且未发出请求,记录当前节点开始时间 + this.cacheData[tickerload] = rangeStartDate; + //发起请求,从websocket获取当前时间段的数据 + this.initMessage(symbolInfo, resolution, rangeStartDate, rangeEndDate, onLoadedCallback); + //设置状态为true + this.cacheData[tickerstate] = !0; + return false; + } + + if (this.cacheData[tickerstate]) { + //正在从websocket获取数据,禁止一切操作 + return false; + } + ticker = this.symbol + "-" + this.interval; + if (this.cacheData[ticker] && this.cacheData[ticker].length) { + this.isLoading = false; + var newBars = [] + this.cacheData[ticker].forEach(function (item) { + if (item.time >= rangeStartDate * 1000 && item.time <= rangeEndDate * 1000) { + newBars.push(item) + } + }); + onLoadedCallback(newBars) + } else { + var self = this + this.getBarTimer = setTimeout(function () { + self.getBars(symbolInfo, resolution, rangeStartDate, rangeEndDate, onLoadedCallback) + }, 100) + } + }; + + WsConfig.prototype.getOverrides = function (theme) { + var themes = { + "white": { + up: "#03c087", + down: "#ff5959", + bg: "#ffffff", + grid: "#f7f8fa", + cross: "#23283D", + border: "#9194a4", + text: "#9194a4", + areatop: "rgba(71, 78, 112, 0.1)", + areadown: "rgba(71, 78, 112, 0.02)", + line: "#737375" + }, + "black": { + up: "#25bc67", + down: "#ff5959", + bg: "#181328", + grid: "#1f2943", + cross: "#9194A3", + border: "#4e5b85", + text: "#61688A", + areatop: "rgba(122, 152, 247, .1)", + areadown: "rgba(122, 152, 247, .02)", + line: "#737375" + }, + "mobile": { + up: "#03C087", + down: "#E76D42", + bg: "#ffffff", + grid: "#f7f8fa", + cross: "#23283D", + border: "#C5CFD5", + text: "#8C9FAD", + areatop: "rgba(71, 78, 112, 0.1)", + areadown: "rgba(71, 78, 112, 0.02)", + showLegend: !0 + } + }; + var t = themes[theme]; + return { + "volumePaneSize": "medium", + "scalesProperties.lineColor": t.text, + "scalesProperties.textColor": "#ffffff", + "paneProperties.background": t.bg, + "paneProperties.vertGridProperties.color": t.grid, + "paneProperties.horzGridProperties.color": t.grid, + "paneProperties.crossHairProperties.color": t.cross, + "paneProperties.legendProperties.showLegend": !!t.showLegend, + "paneProperties.legendProperties.showStudyArguments": !0, + "paneProperties.legendProperties.showStudyTitles": !0, + "paneProperties.legendProperties.showStudyValues": !0, + "paneProperties.legendProperties.showSeriesTitle": !0, + "paneProperties.legendProperties.showSeriesOHLC": !0, + "mainSeriesProperties.candleStyle.upColor": t.up, + "mainSeriesProperties.candleStyle.downColor": t.down, + "mainSeriesProperties.candleStyle.drawWick": !0, + "mainSeriesProperties.candleStyle.drawBorder": !0, + "mainSeriesProperties.candleStyle.borderColor": t.border, + "mainSeriesProperties.candleStyle.borderUpColor": t.up, + "mainSeriesProperties.candleStyle.borderDownColor": t.down, + "mainSeriesProperties.candleStyle.wickUpColor": t.up, + "mainSeriesProperties.candleStyle.wickDownColor": t.down, + "mainSeriesProperties.candleStyle.barColorsOnPrevClose": !1, + "mainSeriesProperties.hollowCandleStyle.upColor": t.up, + "mainSeriesProperties.hollowCandleStyle.downColor": t.down, + "mainSeriesProperties.hollowCandleStyle.drawWick": !0, + "mainSeriesProperties.hollowCandleStyle.drawBorder": !0, + "mainSeriesProperties.hollowCandleStyle.borderColor": t.border, + "mainSeriesProperties.hollowCandleStyle.borderUpColor": t.up, + "mainSeriesProperties.hollowCandleStyle.borderDownColor": t.down, + "mainSeriesProperties.hollowCandleStyle.wickColor": t.line, + "mainSeriesProperties.haStyle.upColor": t.up, + "mainSeriesProperties.haStyle.downColor": t.down, + "mainSeriesProperties.haStyle.drawWick": !0, + "mainSeriesProperties.haStyle.drawBorder": !0, + "mainSeriesProperties.haStyle.borderColor": t.border, + "mainSeriesProperties.haStyle.borderUpColor": t.up, + "mainSeriesProperties.haStyle.borderDownColor": t.down, + "mainSeriesProperties.haStyle.wickColor": t.border, + "mainSeriesProperties.haStyle.barColorsOnPrevClose": !1, + "mainSeriesProperties.barStyle.upColor": t.up, + "mainSeriesProperties.barStyle.downColor": t.down, + "mainSeriesProperties.barStyle.barColorsOnPrevClose": !1, + "mainSeriesProperties.barStyle.dontDrawOpen": !1, + "mainSeriesProperties.lineStyle.color": t.border, + "mainSeriesProperties.lineStyle.linewidth": 1, + "mainSeriesProperties.lineStyle.priceSource": "close", + "mainSeriesProperties.areaStyle.color1": t.areatop, + "mainSeriesProperties.areaStyle.color2": t.areadown, + "mainSeriesProperties.areaStyle.linecolor": t.border, + "mainSeriesProperties.areaStyle.linewidth": 1, + "mainSeriesProperties.areaStyle.priceSource": "close" + } + }; + + WsConfig.prototype.getStudiesOverrides = function (theme) { + var themes = { + "white": { + c0: "#eb4d5c", + c1: "#53b987", + t: 70, + v: !1 + }, + "black": { + c0: "#D82B2B", + c1: "#25BC67", + t: 70, + v: !1 + } + }; + var t = themes[theme]; + return { + "volume.volume.color.0": t.c0, + "volume.volume.color.1": t.c1, + "volume.volume.transparency": t.t, + "volume.options.showStudyArguments": t.v + } + }; + + WsConfig.prototype.resetTheme = function (skin) { + this.widgets.addCustomCSSFile('./tradingview_' + skin + '.css'); + this.widgets.applyOverrides(this.getOverrides(skin)); + this.widgets.applyStudiesOverrides(this.getStudiesOverrides(skin)); + }; + + WsConfig.prototype.formatt = function (time) { + if (isNaN(time)) { + return time; + } + var date = new Date(time); + var Y = date.getFullYear(); + var m = this._formatt(date.getMonth()); + var d = this._formatt(date.getDate()); + var H = this._formatt(date.getHours()); + var i = this._formatt(date.getMinutes()); + var s = this._formatt(date.getSeconds()); + return Y + '-' + m + '-' + d + ' ' + H + ':' + i + ':' + s; + }; + WsConfig.prototype._formatt = function (num) { + return num >= 10 ? num : '0' + num; + }; + return WsConfig; +})(); diff --git a/static/Kline/datafeeds/udf/.npmrc b/static/Kline/datafeeds/udf/.npmrc new file mode 100644 index 0000000..43c97e7 --- /dev/null +++ b/static/Kline/datafeeds/udf/.npmrc @@ -0,0 +1 @@ +package-lock=false diff --git a/static/Kline/datafeeds/udf/README.md b/static/Kline/datafeeds/udf/README.md new file mode 100644 index 0000000..34cfdb1 --- /dev/null +++ b/static/Kline/datafeeds/udf/README.md @@ -0,0 +1,46 @@ +# UDF Compatible Datafeed + +This folder contains [UDF](https://github.com/tradingview/charting_library/wiki/UDF) datafeed adapter. It implements [JS API](https://github.com/tradingview/charting_library/wiki/JS%20API) and makes HTTP requests using [UDF](https://github.com/tradingview/charting_library/wiki/UDF) protocol. + +You can use this datafeed adapter to plug your data if you implement [UDF](https://github.com/tradingview/charting_library/wiki/UDF) on your server. You can also scrutinize how it works before writing your own adapter. + +This datafeed is implemented in [TypeScript](https://github.com/Microsoft/TypeScript/). + +## Folders content + +- `./src` folder contains the source code in TypeScript. + +- `./lib` folder contains transpiled in es5 code. So, if you do not know how to use TypeScript - you can modify these files to change the result bundle later. + +- `./dist` folder contains bundled JavaScript files which can be inlined into a page and used in the Widget Constructor. + +## Build & bundle + +Before building or bundling your code you need to run `npm install` to install dependencies. + +`package.json` contains some handy scripts to build or generate the bundle: + +- `npm run compile` to compile TypeScript source code into JavaScript files (output will be in `./lib` folder) +- `npm run bundle-js` to bundle multiple JavaScript files into one bundle (it also bundle polyfills) +- `npm run build` to compile and bundle (it is a combination of all above commands) + +NOTE: if you want to minify the bundle code, you need to set `ENV` environment variable to a value different from `development`. + +For example: + +```bash +export ENV=prod +npm run bundle-js # or npm run build +``` + +or + +```bash +ENV=prod npm run bundle-js +``` + +or + +```bash +ENV=prod npm run build +``` diff --git a/static/Kline/datafeeds/udf/lib/data-pulse-provider.js b/static/Kline/datafeeds/udf/lib/data-pulse-provider.js new file mode 100644 index 0000000..9a4945c --- /dev/null +++ b/static/Kline/datafeeds/udf/lib/data-pulse-provider.js @@ -0,0 +1,107 @@ +import { getErrorMessage, logMessage, } from './helpers'; +var DataPulseProvider = /** @class */ (function () { + function DataPulseProvider(historyProvider, updateFrequency) { + this._subscribers = {}; + this._requestsPending = 0; + this._historyProvider = historyProvider; + setInterval(this._updateData.bind(this), updateFrequency); + } + DataPulseProvider.prototype.subscribeBars = function (symbolInfo, resolution, newDataCallback, listenerGuid) { + if (this._subscribers.hasOwnProperty(listenerGuid)) { + logMessage("DataPulseProvider: already has subscriber with id=" + listenerGuid); + return; + } + this._subscribers[listenerGuid] = { + lastBarTime: null, + listener: newDataCallback, + resolution: resolution, + symbolInfo: symbolInfo, + }; + logMessage("DataPulseProvider: subscribed for #" + listenerGuid + " - {" + symbolInfo.name + ", " + resolution + "}"); + }; + DataPulseProvider.prototype.unsubscribeBars = function (listenerGuid) { + delete this._subscribers[listenerGuid]; + logMessage("DataPulseProvider: unsubscribed for #" + listenerGuid); + }; + DataPulseProvider.prototype._updateData = function () { + var _this = this; + if (this._requestsPending > 0) { + return; + } + this._requestsPending = 0; + var _loop_1 = function (listenerGuid) { + this_1._requestsPending += 1; + this_1._updateDataForSubscriber(listenerGuid) + .then(function () { + _this._requestsPending -= 1; + logMessage("DataPulseProvider: data for #" + listenerGuid + " updated successfully, pending=" + _this._requestsPending); + }) + .catch(function (reason) { + _this._requestsPending -= 1; + logMessage("DataPulseProvider: data for #" + listenerGuid + " updated with error=" + getErrorMessage(reason) + ", pending=" + _this._requestsPending); + }); + }; + var this_1 = this; + for (var listenerGuid in this._subscribers) { + _loop_1(listenerGuid); + } + }; + DataPulseProvider.prototype._updateDataForSubscriber = function (listenerGuid) { + var _this = this; + var subscriptionRecord = this._subscribers[listenerGuid]; + var rangeEndTime = parseInt((Date.now() / 1000).toString()); + // BEWARE: please note we really need 2 bars, not the only last one + // see the explanation below. `10` is the `large enough` value to work around holidays + var rangeStartTime = rangeEndTime - periodLengthSeconds(subscriptionRecord.resolution, 10); + return this._historyProvider.getBars(subscriptionRecord.symbolInfo, subscriptionRecord.resolution, rangeStartTime, rangeEndTime) + .then(function (result) { + _this._onSubscriberDataReceived(listenerGuid, result); + }); + }; + DataPulseProvider.prototype._onSubscriberDataReceived = function (listenerGuid, result) { + // means the subscription was cancelled while waiting for data + if (!this._subscribers.hasOwnProperty(listenerGuid)) { + logMessage("DataPulseProvider: Data comes for already unsubscribed subscription #" + listenerGuid); + return; + } + var bars = result.bars; + if (bars.length === 0) { + return; + } + var lastBar = bars[bars.length - 1]; + var subscriptionRecord = this._subscribers[listenerGuid]; + if (subscriptionRecord.lastBarTime !== null && lastBar.time < subscriptionRecord.lastBarTime) { + return; + } + var isNewBar = subscriptionRecord.lastBarTime !== null && lastBar.time > subscriptionRecord.lastBarTime; + // Pulse updating may miss some trades data (ie, if pulse period = 10 secods and new bar is started 5 seconds later after the last update, the + // old bar's last 5 seconds trades will be lost). Thus, at fist we should broadcast old bar updates when it's ready. + if (isNewBar) { + if (bars.length < 2) { + throw new Error('Not enough bars in history for proper pulse update. Need at least 2.'); + } + var previousBar = bars[bars.length - 2]; + subscriptionRecord.listener(previousBar); + } + subscriptionRecord.lastBarTime = lastBar.time; + subscriptionRecord.listener(lastBar); + }; + return DataPulseProvider; +}()); +export { DataPulseProvider }; +function periodLengthSeconds(resolution, requiredPeriodsCount) { + var daysCount = 0; + if (resolution === 'D' || resolution === '1D') { + daysCount = requiredPeriodsCount; + } + else if (resolution === 'M' || resolution === '1M') { + daysCount = 31 * requiredPeriodsCount; + } + else if (resolution === 'W' || resolution === '1W') { + daysCount = 7 * requiredPeriodsCount; + } + else { + daysCount = requiredPeriodsCount * parseInt(resolution) / (24 * 60); + } + return daysCount * 24 * 60 * 60; +} diff --git a/static/Kline/datafeeds/udf/lib/helpers.js b/static/Kline/datafeeds/udf/lib/helpers.js new file mode 100644 index 0000000..47904ec --- /dev/null +++ b/static/Kline/datafeeds/udf/lib/helpers.js @@ -0,0 +1,19 @@ +/** + * If you want to enable logs from datafeed set it to `true` + */ +var isLoggingEnabled = false; +export function logMessage(message) { + if (isLoggingEnabled) { + var now = new Date(); + console.log(now.toLocaleTimeString() + "." + now.getMilliseconds() + "> " + message); + } +} +export function getErrorMessage(error) { + if (error === undefined) { + return ''; + } + else if (typeof error === 'string') { + return error; + } + return error.message; +} diff --git a/static/Kline/datafeeds/udf/lib/history-provider.js b/static/Kline/datafeeds/udf/lib/history-provider.js new file mode 100644 index 0000000..4214ab6 --- /dev/null +++ b/static/Kline/datafeeds/udf/lib/history-provider.js @@ -0,0 +1,66 @@ +import { getErrorMessage, } from './helpers'; +var HistoryProvider = /** @class */ (function () { + function HistoryProvider(datafeedUrl, requester) { + this._datafeedUrl = datafeedUrl; + this._requester = requester; + } + HistoryProvider.prototype.getBars = function (symbolInfo, resolution, rangeStartDate, rangeEndDate) { + var _this = this; + var requestParams = { + symbol: symbolInfo.ticker || '', + resolution: resolution, + from: rangeStartDate, + to: rangeEndDate, + }; + return new Promise(function (resolve, reject) { + _this._requester.sendRequest(_this._datafeedUrl, 'history', requestParams) + .then(function (response) { + if (response.s !== 'ok' && response.s !== 'no_data') { + reject(response.errmsg); + return; + } + var bars = []; + var meta = { + noData: false, + }; + if (response.s === 'no_data') { + meta.noData = true; + meta.nextTime = response.nextTime; + } + else { + var volumePresent = response.v !== undefined; + var ohlPresent = response.o !== undefined; + for (var i = 0; i < response.t.length; ++i) { + var barValue = { + time: response.t[i] * 1000, + close: Number(response.c[i]), + open: Number(response.c[i]), + high: Number(response.c[i]), + low: Number(response.c[i]), + }; + if (ohlPresent) { + barValue.open = Number(response.o[i]); + barValue.high = Number(response.h[i]); + barValue.low = Number(response.l[i]); + } + if (volumePresent) { + barValue.volume = Number(response.v[i]); + } + bars.push(barValue); + } + } + resolve({ + bars: bars, + meta: meta, + }); + }) + .catch(function (reason) { + var reasonString = getErrorMessage(reason); + console.warn("HistoryProvider: getBars() failed, error=" + reasonString); + reject(reasonString); + }); + }); + }; + return HistoryProvider; +}()); +export { HistoryProvider }; diff --git a/static/Kline/datafeeds/udf/lib/iquotes-provider.js b/static/Kline/datafeeds/udf/lib/iquotes-provider.js new file mode 100644 index 0000000..e69de29 diff --git a/static/Kline/datafeeds/udf/lib/quotes-provider.js b/static/Kline/datafeeds/udf/lib/quotes-provider.js new file mode 100644 index 0000000..1cdde2c --- /dev/null +++ b/static/Kline/datafeeds/udf/lib/quotes-provider.js @@ -0,0 +1,28 @@ +import { getErrorMessage, logMessage, } from './helpers'; +var QuotesProvider = /** @class */ (function () { + function QuotesProvider(datafeedUrl, requester) { + this._datafeedUrl = datafeedUrl; + this._requester = requester; + } + QuotesProvider.prototype.getQuotes = function (symbols) { + var _this = this; + return new Promise(function (resolve, reject) { + _this._requester.sendRequest(_this._datafeedUrl, 'quotes', { symbols: symbols }) + .then(function (response) { + if (response.s === 'ok') { + resolve(response.d); + } + else { + reject(response.errmsg); + } + }) + .catch(function (error) { + var errorMessage = getErrorMessage(error); + logMessage("QuotesProvider: getQuotes failed, error=" + errorMessage); + reject("network error: " + errorMessage); + }); + }); + }; + return QuotesProvider; +}()); +export { QuotesProvider }; diff --git a/static/Kline/datafeeds/udf/lib/quotes-pulse-provider.js b/static/Kline/datafeeds/udf/lib/quotes-pulse-provider.js new file mode 100644 index 0000000..25ab79d --- /dev/null +++ b/static/Kline/datafeeds/udf/lib/quotes-pulse-provider.js @@ -0,0 +1,51 @@ +import { getErrorMessage, logMessage, } from './helpers'; +var QuotesPulseProvider = /** @class */ (function () { + function QuotesPulseProvider(quotesProvider) { + this._subscribers = {}; + this._requestsPending = 0; + this._quotesProvider = quotesProvider; + setInterval(this._updateQuotes.bind(this, 1 /* Fast */), 10000 /* Fast */); + setInterval(this._updateQuotes.bind(this, 0 /* General */), 60000 /* General */); + } + QuotesPulseProvider.prototype.subscribeQuotes = function (symbols, fastSymbols, onRealtimeCallback, listenerGuid) { + this._subscribers[listenerGuid] = { + symbols: symbols, + fastSymbols: fastSymbols, + listener: onRealtimeCallback, + }; + logMessage("QuotesPulseProvider: subscribed quotes with #" + listenerGuid); + }; + QuotesPulseProvider.prototype.unsubscribeQuotes = function (listenerGuid) { + delete this._subscribers[listenerGuid]; + logMessage("QuotesPulseProvider: unsubscribed quotes with #" + listenerGuid); + }; + QuotesPulseProvider.prototype._updateQuotes = function (updateType) { + var _this = this; + if (this._requestsPending > 0) { + return; + } + var _loop_1 = function (listenerGuid) { + this_1._requestsPending++; + var subscriptionRecord = this_1._subscribers[listenerGuid]; + this_1._quotesProvider.getQuotes(updateType === 1 /* Fast */ ? subscriptionRecord.fastSymbols : subscriptionRecord.symbols) + .then(function (data) { + _this._requestsPending--; + if (!_this._subscribers.hasOwnProperty(listenerGuid)) { + return; + } + subscriptionRecord.listener(data); + logMessage("QuotesPulseProvider: data for #" + listenerGuid + " (" + updateType + ") updated successfully, pending=" + _this._requestsPending); + }) + .catch(function (reason) { + _this._requestsPending--; + logMessage("QuotesPulseProvider: data for #" + listenerGuid + " (" + updateType + ") updated with error=" + getErrorMessage(reason) + ", pending=" + _this._requestsPending); + }); + }; + var this_1 = this; + for (var listenerGuid in this._subscribers) { + _loop_1(listenerGuid); + } + }; + return QuotesPulseProvider; +}()); +export { QuotesPulseProvider }; diff --git a/static/Kline/datafeeds/udf/lib/requester.js b/static/Kline/datafeeds/udf/lib/requester.js new file mode 100644 index 0000000..891adc1 --- /dev/null +++ b/static/Kline/datafeeds/udf/lib/requester.js @@ -0,0 +1,30 @@ +import { logMessage } from './helpers'; +var Requester = /** @class */ (function () { + function Requester(headers) { + if (headers) { + this._headers = headers; + } + } + Requester.prototype.sendRequest = function (datafeedUrl, urlPath, params) { + if (params !== undefined) { + var paramKeys = Object.keys(params); + if (paramKeys.length !== 0) { + urlPath += '?'; + } + urlPath += paramKeys.map(function (key) { + return encodeURIComponent(key) + "=" + encodeURIComponent(params[key].toString()); + }).join('&'); + } + logMessage('New request: ' + urlPath); + // Send user cookies if the URL is on the same origin as the calling script. + var options = { credentials: 'same-origin' }; + if (this._headers !== undefined) { + options.headers = this._headers; + } + return fetch(datafeedUrl + "/" + urlPath, options) + .then(function (response) { return response.text(); }) + .then(function (responseTest) { return JSON.parse(responseTest); }); + }; + return Requester; +}()); +export { Requester }; diff --git a/static/Kline/datafeeds/udf/lib/symbols-storage.js b/static/Kline/datafeeds/udf/lib/symbols-storage.js new file mode 100644 index 0000000..aad2390 --- /dev/null +++ b/static/Kline/datafeeds/udf/lib/symbols-storage.js @@ -0,0 +1,172 @@ +import { getErrorMessage, logMessage, } from './helpers'; +function extractField(data, field, arrayIndex, valueIsArray) { + var value = data[field]; + if (Array.isArray(value) && (!valueIsArray || Array.isArray(value[0]))) { + return value[arrayIndex]; + } + return value; +} +var SymbolsStorage = /** @class */ (function () { + function SymbolsStorage(datafeedUrl, datafeedSupportedResolutions, requester) { + this._exchangesList = ['NYSE', 'FOREX', 'AMEX']; + this._symbolsInfo = {}; + this._symbolsList = []; + this._datafeedUrl = datafeedUrl; + this._datafeedSupportedResolutions = datafeedSupportedResolutions; + this._requester = requester; + this._readyPromise = this._init(); + this._readyPromise.catch(function (error) { + // seems it is impossible + console.error("SymbolsStorage: Cannot init, error=" + error.toString()); + }); + } + // BEWARE: this function does not consider symbol's exchange + SymbolsStorage.prototype.resolveSymbol = function (symbolName) { + var _this = this; + return this._readyPromise.then(function () { + var symbolInfo = _this._symbolsInfo[symbolName]; + if (symbolInfo === undefined) { + return Promise.reject('invalid symbol'); + } + return Promise.resolve(symbolInfo); + }); + }; + SymbolsStorage.prototype.searchSymbols = function (searchString, exchange, symbolType, maxSearchResults) { + var _this = this; + return this._readyPromise.then(function () { + var weightedResult = []; + var queryIsEmpty = searchString.length === 0; + searchString = searchString.toUpperCase(); + var _loop_1 = function (symbolName) { + var symbolInfo = _this._symbolsInfo[symbolName]; + if (symbolInfo === undefined) { + return "continue"; + } + if (symbolType.length > 0 && symbolInfo.type !== symbolType) { + return "continue"; + } + if (exchange && exchange.length > 0 && symbolInfo.exchange !== exchange) { + return "continue"; + } + var positionInName = symbolInfo.name.toUpperCase().indexOf(searchString); + var positionInDescription = symbolInfo.description.toUpperCase().indexOf(searchString); + if (queryIsEmpty || positionInName >= 0 || positionInDescription >= 0) { + var alreadyExists = weightedResult.some(function (item) { return item.symbolInfo === symbolInfo; }); + if (!alreadyExists) { + var weight = positionInName >= 0 ? positionInName : 8000 + positionInDescription; + weightedResult.push({ symbolInfo: symbolInfo, weight: weight }); + } + } + }; + for (var _i = 0, _a = _this._symbolsList; _i < _a.length; _i++) { + var symbolName = _a[_i]; + _loop_1(symbolName); + } + var result = weightedResult + .sort(function (item1, item2) { return item1.weight - item2.weight; }) + .slice(0, maxSearchResults) + .map(function (item) { + var symbolInfo = item.symbolInfo; + return { + symbol: symbolInfo.name, + full_name: symbolInfo.full_name, + description: symbolInfo.description, + exchange: symbolInfo.exchange, + params: [], + type: symbolInfo.type, + ticker: symbolInfo.name, + }; + }); + return Promise.resolve(result); + }); + }; + SymbolsStorage.prototype._init = function () { + var _this = this; + var promises = []; + var alreadyRequestedExchanges = {}; + for (var _i = 0, _a = this._exchangesList; _i < _a.length; _i++) { + var exchange = _a[_i]; + if (alreadyRequestedExchanges[exchange]) { + continue; + } + alreadyRequestedExchanges[exchange] = true; + promises.push(this._requestExchangeData(exchange)); + } + return Promise.all(promises) + .then(function () { + _this._symbolsList.sort(); + logMessage('SymbolsStorage: All exchanges data loaded'); + }); + }; + SymbolsStorage.prototype._requestExchangeData = function (exchange) { + var _this = this; + return new Promise(function (resolve, reject) { + _this._requester.sendRequest(_this._datafeedUrl, 'symbol_info', { group: exchange }) + .then(function (response) { + try { + _this._onExchangeDataReceived(exchange, response); + } + catch (error) { + reject(error); + return; + } + resolve(); + }) + .catch(function (reason) { + logMessage("SymbolsStorage: Request data for exchange '" + exchange + "' failed, reason=" + getErrorMessage(reason)); + resolve(); + }); + }); + }; + SymbolsStorage.prototype._onExchangeDataReceived = function (exchange, data) { + var symbolIndex = 0; + try { + var symbolsCount = data.symbol.length; + var tickerPresent = data.ticker !== undefined; + for (; symbolIndex < symbolsCount; ++symbolIndex) { + var symbolName = data.symbol[symbolIndex]; + var listedExchange = extractField(data, 'exchange-listed', symbolIndex); + var tradedExchange = extractField(data, 'exchange-traded', symbolIndex); + var fullName = tradedExchange + ':' + symbolName; + var ticker = tickerPresent ? extractField(data, 'ticker', symbolIndex) : symbolName; + var symbolInfo = { + ticker: ticker, + name: symbolName, + base_name: [listedExchange + ':' + symbolName], + full_name: fullName, + listed_exchange: listedExchange, + exchange: tradedExchange, + description: extractField(data, 'description', symbolIndex), + has_intraday: definedValueOrDefault(extractField(data, 'has-intraday', symbolIndex), false), + has_no_volume: definedValueOrDefault(extractField(data, 'has-no-volume', symbolIndex), false), + minmov: extractField(data, 'minmovement', symbolIndex) || extractField(data, 'minmov', symbolIndex) || 0, + minmove2: extractField(data, 'minmove2', symbolIndex) || extractField(data, 'minmov2', symbolIndex), + fractional: extractField(data, 'fractional', symbolIndex), + pricescale: extractField(data, 'pricescale', symbolIndex), + type: extractField(data, 'type', symbolIndex), + session: extractField(data, 'session-regular', symbolIndex), + timezone: extractField(data, 'timezone', symbolIndex), + supported_resolutions: definedValueOrDefault(extractField(data, 'supported-resolutions', symbolIndex, true), this._datafeedSupportedResolutions), + force_session_rebuild: extractField(data, 'force-session-rebuild', symbolIndex), + has_daily: definedValueOrDefault(extractField(data, 'has-daily', symbolIndex), true), + intraday_multipliers: definedValueOrDefault(extractField(data, 'intraday-multipliers', symbolIndex, true), ['1', '5', '15', '30', '60']), + has_weekly_and_monthly: extractField(data, 'has-weekly-and-monthly', symbolIndex), + has_empty_bars: extractField(data, 'has-empty-bars', symbolIndex), + volume_precision: definedValueOrDefault(extractField(data, 'volume-precision', symbolIndex), 0), + }; + this._symbolsInfo[ticker] = symbolInfo; + this._symbolsInfo[symbolName] = symbolInfo; + this._symbolsInfo[fullName] = symbolInfo; + this._symbolsList.push(symbolName); + } + } + catch (error) { + throw new Error("SymbolsStorage: API error when processing exchange " + exchange + " symbol #" + symbolIndex + " (" + data.symbol[symbolIndex] + "): " + error.message); + } + }; + return SymbolsStorage; +}()); +export { SymbolsStorage }; +function definedValueOrDefault(value, defaultValue) { + return value !== undefined ? value : defaultValue; +} diff --git a/static/Kline/datafeeds/udf/lib/udf-compatible-datafeed-base.js b/static/Kline/datafeeds/udf/lib/udf-compatible-datafeed-base.js new file mode 100644 index 0000000..909d713 --- /dev/null +++ b/static/Kline/datafeeds/udf/lib/udf-compatible-datafeed-base.js @@ -0,0 +1,243 @@ +import { getErrorMessage, logMessage, } from './helpers'; +import { HistoryProvider, } from './history-provider'; +import { DataPulseProvider } from './data-pulse-provider'; +import { QuotesPulseProvider } from './quotes-pulse-provider'; +import { SymbolsStorage } from './symbols-storage'; +function extractField(data, field, arrayIndex) { + var value = data[field]; + return Array.isArray(value) ? value[arrayIndex] : value; +} +/** + * This class implements interaction with UDF-compatible datafeed. + * See UDF protocol reference at https://github.com/tradingview/charting_library/wiki/UDF + */ +var UDFCompatibleDatafeedBase = /** @class */ (function () { + function UDFCompatibleDatafeedBase(datafeedURL, quotesProvider, requester, updateFrequency) { + if (updateFrequency === void 0) { updateFrequency = 10 * 1000; } + var _this = this; + this._configuration = defaultConfiguration(); + this._symbolsStorage = null; + this._datafeedURL = datafeedURL; + this._requester = requester; + this._historyProvider = new HistoryProvider(datafeedURL, this._requester); + this._quotesProvider = quotesProvider; + this._dataPulseProvider = new DataPulseProvider(this._historyProvider, updateFrequency); + this._quotesPulseProvider = new QuotesPulseProvider(this._quotesProvider); + this._configurationReadyPromise = this._requestConfiguration() + .then(function (configuration) { + if (configuration === null) { + configuration = defaultConfiguration(); + } + _this._setupWithConfiguration(configuration); + }); + } + UDFCompatibleDatafeedBase.prototype.onReady = function (callback) { + var _this = this; + this._configurationReadyPromise.then(function () { + callback(_this._configuration); + }); + }; + UDFCompatibleDatafeedBase.prototype.getQuotes = function (symbols, onDataCallback, onErrorCallback) { + this._quotesProvider.getQuotes(symbols).then(onDataCallback).catch(onErrorCallback); + }; + UDFCompatibleDatafeedBase.prototype.subscribeQuotes = function (symbols, fastSymbols, onRealtimeCallback, listenerGuid) { + this._quotesPulseProvider.subscribeQuotes(symbols, fastSymbols, onRealtimeCallback, listenerGuid); + }; + UDFCompatibleDatafeedBase.prototype.unsubscribeQuotes = function (listenerGuid) { + this._quotesPulseProvider.unsubscribeQuotes(listenerGuid); + }; + UDFCompatibleDatafeedBase.prototype.calculateHistoryDepth = function (resolution, resolutionBack, intervalBack) { + return undefined; + }; + UDFCompatibleDatafeedBase.prototype.getMarks = function (symbolInfo, from, to, onDataCallback, resolution) { + if (!this._configuration.supports_marks) { + return; + } + var requestParams = { + symbol: symbolInfo.ticker || '', + from: from, + to: to, + resolution: resolution, + }; + this._send('marks', requestParams) + .then(function (response) { + if (!Array.isArray(response)) { + var result = []; + for (var i = 0; i < response.id.length; ++i) { + result.push({ + id: extractField(response, 'id', i), + time: extractField(response, 'time', i), + color: extractField(response, 'color', i), + text: extractField(response, 'text', i), + label: extractField(response, 'label', i), + labelFontColor: extractField(response, 'labelFontColor', i), + minSize: extractField(response, 'minSize', i), + }); + } + response = result; + } + onDataCallback(response); + }) + .catch(function (error) { + logMessage("UdfCompatibleDatafeed: Request marks failed: " + getErrorMessage(error)); + onDataCallback([]); + }); + }; + UDFCompatibleDatafeedBase.prototype.getTimescaleMarks = function (symbolInfo, from, to, onDataCallback, resolution) { + if (!this._configuration.supports_timescale_marks) { + return; + } + var requestParams = { + symbol: symbolInfo.ticker || '', + from: from, + to: to, + resolution: resolution, + }; + this._send('timescale_marks', requestParams) + .then(function (response) { + if (!Array.isArray(response)) { + var result = []; + for (var i = 0; i < response.id.length; ++i) { + result.push({ + id: extractField(response, 'id', i), + time: extractField(response, 'time', i), + color: extractField(response, 'color', i), + label: extractField(response, 'label', i), + tooltip: extractField(response, 'tooltip', i), + }); + } + response = result; + } + onDataCallback(response); + }) + .catch(function (error) { + logMessage("UdfCompatibleDatafeed: Request timescale marks failed: " + getErrorMessage(error)); + onDataCallback([]); + }); + }; + UDFCompatibleDatafeedBase.prototype.getServerTime = function (callback) { + if (!this._configuration.supports_time) { + return; + } + this._send('time') + .then(function (response) { + var time = parseInt(response); + if (!isNaN(time)) { + callback(time); + } + }) + .catch(function (error) { + logMessage("UdfCompatibleDatafeed: Fail to load server time, error=" + getErrorMessage(error)); + }); + }; + UDFCompatibleDatafeedBase.prototype.searchSymbols = function (userInput, exchange, symbolType, onResult) { + if (this._configuration.supports_search) { + var params = { + limit: 30 /* SearchItemsLimit */, + query: userInput.toUpperCase(), + type: symbolType, + exchange: exchange, + }; + this._send('search', params) + .then(function (response) { + if (response.s !== undefined) { + logMessage("UdfCompatibleDatafeed: search symbols error=" + response.errmsg); + onResult([]); + return; + } + onResult(response); + }) + .catch(function (reason) { + logMessage("UdfCompatibleDatafeed: Search symbols for '" + userInput + "' failed. Error=" + getErrorMessage(reason)); + onResult([]); + }); + } + else { + if (this._symbolsStorage === null) { + throw new Error('UdfCompatibleDatafeed: inconsistent configuration (symbols storage)'); + } + this._symbolsStorage.searchSymbols(userInput, exchange, symbolType, 30 /* SearchItemsLimit */) + .then(onResult) + .catch(onResult.bind(null, [])); + } + }; + UDFCompatibleDatafeedBase.prototype.resolveSymbol = function (symbolName, onResolve, onError) { + logMessage('Resolve requested'); + var resolveRequestStartTime = Date.now(); + function onResultReady(symbolInfo) { + logMessage("Symbol resolved: " + (Date.now() - resolveRequestStartTime) + "ms"); + onResolve(symbolInfo); + } + if (!this._configuration.supports_group_request) { + var params = { + symbol: symbolName, + }; + this._send('symbols', params) + .then(function (response) { + if (response.s !== undefined) { + onError('unknown_symbol'); + } + else { + onResultReady(response); + } + }) + .catch(function (reason) { + logMessage("UdfCompatibleDatafeed: Error resolving symbol: " + getErrorMessage(reason)); + onError('unknown_symbol'); + }); + } + else { + if (this._symbolsStorage === null) { + throw new Error('UdfCompatibleDatafeed: inconsistent configuration (symbols storage)'); + } + this._symbolsStorage.resolveSymbol(symbolName).then(onResultReady).catch(onError); + } + }; + UDFCompatibleDatafeedBase.prototype.getBars = function (symbolInfo, resolution, rangeStartDate, rangeEndDate, onResult, onError) { + this._historyProvider.getBars(symbolInfo, resolution, rangeStartDate, rangeEndDate) + .then(function (result) { + onResult(result.bars, result.meta); + }) + .catch(onError); + }; + UDFCompatibleDatafeedBase.prototype.subscribeBars = function (symbolInfo, resolution, onTick, listenerGuid, onResetCacheNeededCallback) { + this._dataPulseProvider.subscribeBars(symbolInfo, resolution, onTick, listenerGuid); + }; + UDFCompatibleDatafeedBase.prototype.unsubscribeBars = function (listenerGuid) { + this._dataPulseProvider.unsubscribeBars(listenerGuid); + }; + UDFCompatibleDatafeedBase.prototype._requestConfiguration = function () { + return this._send('config') + .catch(function (reason) { + logMessage("UdfCompatibleDatafeed: Cannot get datafeed configuration - use default, error=" + getErrorMessage(reason)); + return null; + }); + }; + UDFCompatibleDatafeedBase.prototype._send = function (urlPath, params) { + return this._requester.sendRequest(this._datafeedURL, urlPath, params); + }; + UDFCompatibleDatafeedBase.prototype._setupWithConfiguration = function (configurationData) { + this._configuration = configurationData; + if (configurationData.exchanges === undefined) { + configurationData.exchanges = []; + } + if (!configurationData.supports_search && !configurationData.supports_group_request) { + throw new Error('Unsupported datafeed configuration. Must either support search, or support group request'); + } + if (configurationData.supports_group_request || !configurationData.supports_search) { + this._symbolsStorage = new SymbolsStorage(this._datafeedURL, configurationData.supported_resolutions || [], this._requester); + } + logMessage("UdfCompatibleDatafeed: Initialized with " + JSON.stringify(configurationData)); + }; + return UDFCompatibleDatafeedBase; +}()); +export { UDFCompatibleDatafeedBase }; +function defaultConfiguration() { + return { + supports_search: false, + supports_group_request: true, + supported_resolutions: ['1', '5', '15', '30', '60', '1D', '1W', '1M'], + supports_marks: false, + supports_timescale_marks: false, + }; +} diff --git a/static/Kline/datafeeds/udf/lib/udf-compatible-datafeed.js b/static/Kline/datafeeds/udf/lib/udf-compatible-datafeed.js new file mode 100644 index 0000000..9df87d6 --- /dev/null +++ b/static/Kline/datafeeds/udf/lib/udf-compatible-datafeed.js @@ -0,0 +1,17 @@ +import * as tslib_1 from "tslib"; +import { UDFCompatibleDatafeedBase } from './udf-compatible-datafeed-base'; +import { QuotesProvider } from './quotes-provider'; +import { Requester } from './requester'; +var UDFCompatibleDatafeed = /** @class */ (function (_super) { + tslib_1.__extends(UDFCompatibleDatafeed, _super); + function UDFCompatibleDatafeed(datafeedURL, updateFrequency) { + if (updateFrequency === void 0) { updateFrequency = 10 * 1000; } + var _this = this; + var requester = new Requester(); + var quotesProvider = new QuotesProvider(datafeedURL, requester); + _this = _super.call(this, datafeedURL, quotesProvider, requester, updateFrequency) || this; + return _this; + } + return UDFCompatibleDatafeed; +}(UDFCompatibleDatafeedBase)); +export { UDFCompatibleDatafeed }; diff --git a/static/Kline/datafeeds/udf/package.json b/static/Kline/datafeeds/udf/package.json new file mode 100644 index 0000000..d30aaac --- /dev/null +++ b/static/Kline/datafeeds/udf/package.json @@ -0,0 +1,20 @@ +{ + "private": true, + "dependencies": { + "promise-polyfill": "6.0.2", + "tslib": "1.7.1", + "whatwg-fetch": "2.0.3" + }, + "devDependencies": { + "rollup": "0.49.2", + "rollup-plugin-buble": "0.15.0", + "rollup-plugin-node-resolve": "3.0.0", + "rollup-plugin-uglify": "2.0.1", + "typescript": "3.0.1" + }, + "scripts": { + "compile": "tsc", + "bundle-js": "rollup -c rollup.config.js", + "build": "npm run compile && npm run bundle-js" + } +} diff --git a/static/Kline/datafeeds/udf/rollup.config.js b/static/Kline/datafeeds/udf/rollup.config.js new file mode 100644 index 0000000..4b958dd --- /dev/null +++ b/static/Kline/datafeeds/udf/rollup.config.js @@ -0,0 +1,39 @@ +/* globals process */ + +var buble = require('rollup-plugin-buble'); +var uglify = require('rollup-plugin-uglify'); +var nodeResolve = require('rollup-plugin-node-resolve'); + +var environment = process.env.ENV || 'development'; +var isDevelopmentEnv = (environment === 'development'); + +module.exports = [ + { + input: 'lib/udf-compatible-datafeed.js', + name: 'Datafeeds', + sourceMap: false, + output: { + format: 'umd', + file: 'dist/bundle.js', + }, + plugins: [ + nodeResolve({ jsnext: true, main: true }), + buble(), + !isDevelopmentEnv && uglify({ output: { inline_script: true } }), + ], + }, + { + input: 'src/polyfills.es6', + sourceMap: false, + context: 'window', + output: { + format: 'iife', + file: 'dist/polyfills.js', + }, + plugins: [ + nodeResolve({ jsnext: true, main: true }), + buble(), + uglify({ output: { inline_script: true } }), + ], + }, +]; diff --git a/static/Kline/datafeeds/udf/src/data-pulse-provider.js b/static/Kline/datafeeds/udf/src/data-pulse-provider.js new file mode 100644 index 0000000..9a4945c --- /dev/null +++ b/static/Kline/datafeeds/udf/src/data-pulse-provider.js @@ -0,0 +1,107 @@ +import { getErrorMessage, logMessage, } from './helpers'; +var DataPulseProvider = /** @class */ (function () { + function DataPulseProvider(historyProvider, updateFrequency) { + this._subscribers = {}; + this._requestsPending = 0; + this._historyProvider = historyProvider; + setInterval(this._updateData.bind(this), updateFrequency); + } + DataPulseProvider.prototype.subscribeBars = function (symbolInfo, resolution, newDataCallback, listenerGuid) { + if (this._subscribers.hasOwnProperty(listenerGuid)) { + logMessage("DataPulseProvider: already has subscriber with id=" + listenerGuid); + return; + } + this._subscribers[listenerGuid] = { + lastBarTime: null, + listener: newDataCallback, + resolution: resolution, + symbolInfo: symbolInfo, + }; + logMessage("DataPulseProvider: subscribed for #" + listenerGuid + " - {" + symbolInfo.name + ", " + resolution + "}"); + }; + DataPulseProvider.prototype.unsubscribeBars = function (listenerGuid) { + delete this._subscribers[listenerGuid]; + logMessage("DataPulseProvider: unsubscribed for #" + listenerGuid); + }; + DataPulseProvider.prototype._updateData = function () { + var _this = this; + if (this._requestsPending > 0) { + return; + } + this._requestsPending = 0; + var _loop_1 = function (listenerGuid) { + this_1._requestsPending += 1; + this_1._updateDataForSubscriber(listenerGuid) + .then(function () { + _this._requestsPending -= 1; + logMessage("DataPulseProvider: data for #" + listenerGuid + " updated successfully, pending=" + _this._requestsPending); + }) + .catch(function (reason) { + _this._requestsPending -= 1; + logMessage("DataPulseProvider: data for #" + listenerGuid + " updated with error=" + getErrorMessage(reason) + ", pending=" + _this._requestsPending); + }); + }; + var this_1 = this; + for (var listenerGuid in this._subscribers) { + _loop_1(listenerGuid); + } + }; + DataPulseProvider.prototype._updateDataForSubscriber = function (listenerGuid) { + var _this = this; + var subscriptionRecord = this._subscribers[listenerGuid]; + var rangeEndTime = parseInt((Date.now() / 1000).toString()); + // BEWARE: please note we really need 2 bars, not the only last one + // see the explanation below. `10` is the `large enough` value to work around holidays + var rangeStartTime = rangeEndTime - periodLengthSeconds(subscriptionRecord.resolution, 10); + return this._historyProvider.getBars(subscriptionRecord.symbolInfo, subscriptionRecord.resolution, rangeStartTime, rangeEndTime) + .then(function (result) { + _this._onSubscriberDataReceived(listenerGuid, result); + }); + }; + DataPulseProvider.prototype._onSubscriberDataReceived = function (listenerGuid, result) { + // means the subscription was cancelled while waiting for data + if (!this._subscribers.hasOwnProperty(listenerGuid)) { + logMessage("DataPulseProvider: Data comes for already unsubscribed subscription #" + listenerGuid); + return; + } + var bars = result.bars; + if (bars.length === 0) { + return; + } + var lastBar = bars[bars.length - 1]; + var subscriptionRecord = this._subscribers[listenerGuid]; + if (subscriptionRecord.lastBarTime !== null && lastBar.time < subscriptionRecord.lastBarTime) { + return; + } + var isNewBar = subscriptionRecord.lastBarTime !== null && lastBar.time > subscriptionRecord.lastBarTime; + // Pulse updating may miss some trades data (ie, if pulse period = 10 secods and new bar is started 5 seconds later after the last update, the + // old bar's last 5 seconds trades will be lost). Thus, at fist we should broadcast old bar updates when it's ready. + if (isNewBar) { + if (bars.length < 2) { + throw new Error('Not enough bars in history for proper pulse update. Need at least 2.'); + } + var previousBar = bars[bars.length - 2]; + subscriptionRecord.listener(previousBar); + } + subscriptionRecord.lastBarTime = lastBar.time; + subscriptionRecord.listener(lastBar); + }; + return DataPulseProvider; +}()); +export { DataPulseProvider }; +function periodLengthSeconds(resolution, requiredPeriodsCount) { + var daysCount = 0; + if (resolution === 'D' || resolution === '1D') { + daysCount = requiredPeriodsCount; + } + else if (resolution === 'M' || resolution === '1M') { + daysCount = 31 * requiredPeriodsCount; + } + else if (resolution === 'W' || resolution === '1W') { + daysCount = 7 * requiredPeriodsCount; + } + else { + daysCount = requiredPeriodsCount * parseInt(resolution) / (24 * 60); + } + return daysCount * 24 * 60 * 60; +} diff --git a/static/Kline/datafeeds/udf/src/data-pulse-provider.ts b/static/Kline/datafeeds/udf/src/data-pulse-provider.ts new file mode 100644 index 0000000..73ea4b4 --- /dev/null +++ b/static/Kline/datafeeds/udf/src/data-pulse-provider.ts @@ -0,0 +1,144 @@ +import { + LibrarySymbolInfo, + SubscribeBarsCallback, +} from '../../../charting_library/datafeed-api'; + +import { + GetBarsResult, + HistoryProvider, +} from './history-provider'; + +import { + getErrorMessage, + logMessage, +} from './helpers'; + +interface DataSubscriber { + symbolInfo: LibrarySymbolInfo; + resolution: string; + lastBarTime: number | null; + listener: SubscribeBarsCallback; +} + +interface DataSubscribers { + [guid: string]: DataSubscriber; +} + +export class DataPulseProvider { + private readonly _subscribers: DataSubscribers = {}; + private _requestsPending: number = 0; + private readonly _historyProvider: HistoryProvider; + + public constructor(historyProvider: HistoryProvider, updateFrequency: number) { + this._historyProvider = historyProvider; + setInterval(this._updateData.bind(this), updateFrequency); + } + + public subscribeBars(symbolInfo: LibrarySymbolInfo, resolution: string, newDataCallback: SubscribeBarsCallback, listenerGuid: string): void { + if (this._subscribers.hasOwnProperty(listenerGuid)) { + logMessage(`DataPulseProvider: already has subscriber with id=${listenerGuid}`); + return; + } + + this._subscribers[listenerGuid] = { + lastBarTime: null, + listener: newDataCallback, + resolution: resolution, + symbolInfo: symbolInfo, + }; + + logMessage(`DataPulseProvider: subscribed for #${listenerGuid} - {${symbolInfo.name}, ${resolution}}`); + } + + public unsubscribeBars(listenerGuid: string): void { + delete this._subscribers[listenerGuid]; + logMessage(`DataPulseProvider: unsubscribed for #${listenerGuid}`); + } + + private _updateData(): void { + if (this._requestsPending > 0) { + return; + } + + this._requestsPending = 0; + for (const listenerGuid in this._subscribers) { // tslint:disable-line:forin + this._requestsPending += 1; + this._updateDataForSubscriber(listenerGuid) + .then(() => { + this._requestsPending -= 1; + logMessage(`DataPulseProvider: data for #${listenerGuid} updated successfully, pending=${this._requestsPending}`); + }) + .catch((reason?: string | Error) => { + this._requestsPending -= 1; + logMessage(`DataPulseProvider: data for #${listenerGuid} updated with error=${getErrorMessage(reason)}, pending=${this._requestsPending}`); + }); + } + } + + private _updateDataForSubscriber(listenerGuid: string): Promise { + const subscriptionRecord = this._subscribers[listenerGuid]; + + const rangeEndTime = parseInt((Date.now() / 1000).toString()); + + // BEWARE: please note we really need 2 bars, not the only last one + // see the explanation below. `10` is the `large enough` value to work around holidays + const rangeStartTime = rangeEndTime - periodLengthSeconds(subscriptionRecord.resolution, 10); + + return this._historyProvider.getBars(subscriptionRecord.symbolInfo, subscriptionRecord.resolution, rangeStartTime, rangeEndTime) + .then((result: GetBarsResult) => { + this._onSubscriberDataReceived(listenerGuid, result); + }); + } + + private _onSubscriberDataReceived(listenerGuid: string, result: GetBarsResult): void { + // means the subscription was cancelled while waiting for data + if (!this._subscribers.hasOwnProperty(listenerGuid)) { + logMessage(`DataPulseProvider: Data comes for already unsubscribed subscription #${listenerGuid}`); + return; + } + + const bars = result.bars; + if (bars.length === 0) { + return; + } + + const lastBar = bars[bars.length - 1]; + const subscriptionRecord = this._subscribers[listenerGuid]; + + if (subscriptionRecord.lastBarTime !== null && lastBar.time < subscriptionRecord.lastBarTime) { + return; + } + + const isNewBar = subscriptionRecord.lastBarTime !== null && lastBar.time > subscriptionRecord.lastBarTime; + + // Pulse updating may miss some trades data (ie, if pulse period = 10 secods and new bar is started 5 seconds later after the last update, the + // old bar's last 5 seconds trades will be lost). Thus, at fist we should broadcast old bar updates when it's ready. + if (isNewBar) { + if (bars.length < 2) { + throw new Error('Not enough bars in history for proper pulse update. Need at least 2.'); + } + + const previousBar = bars[bars.length - 2]; + subscriptionRecord.listener(previousBar); + } + + subscriptionRecord.lastBarTime = lastBar.time; + subscriptionRecord.listener(lastBar); + } +} + +function periodLengthSeconds(resolution: string, requiredPeriodsCount: number): number { + let daysCount = 0; + + if (resolution === 'D' || resolution === '1D') { + daysCount = requiredPeriodsCount; + } else if (resolution === 'M' || resolution === '1M') { + daysCount = 31 * requiredPeriodsCount; + } else if (resolution === 'W' || resolution === '1W') { + daysCount = 7 * requiredPeriodsCount; + } else { + daysCount = requiredPeriodsCount * parseInt(resolution) / (24 * 60); + } + + return daysCount * 24 * 60 * 60; +} diff --git a/static/Kline/datafeeds/udf/src/helpers.js b/static/Kline/datafeeds/udf/src/helpers.js new file mode 100644 index 0000000..47904ec --- /dev/null +++ b/static/Kline/datafeeds/udf/src/helpers.js @@ -0,0 +1,19 @@ +/** + * If you want to enable logs from datafeed set it to `true` + */ +var isLoggingEnabled = false; +export function logMessage(message) { + if (isLoggingEnabled) { + var now = new Date(); + console.log(now.toLocaleTimeString() + "." + now.getMilliseconds() + "> " + message); + } +} +export function getErrorMessage(error) { + if (error === undefined) { + return ''; + } + else if (typeof error === 'string') { + return error; + } + return error.message; +} diff --git a/static/Kline/datafeeds/udf/src/helpers.ts b/static/Kline/datafeeds/udf/src/helpers.ts new file mode 100644 index 0000000..c5fb4f8 --- /dev/null +++ b/static/Kline/datafeeds/udf/src/helpers.ts @@ -0,0 +1,37 @@ +export interface RequestParams { + [paramName: string]: string | string[] | number; +} + +export interface UdfResponse { + s: string; +} + +export interface UdfOkResponse extends UdfResponse { + s: 'ok'; +} + +export interface UdfErrorResponse { + s: 'error'; + errmsg: string; +} + +/** + * If you want to enable logs from datafeed set it to `true` + */ +const isLoggingEnabled = false; +export function logMessage(message: string): void { + if (isLoggingEnabled) { + const now = new Date(); + console.log(`${now.toLocaleTimeString()}.${now.getMilliseconds()}> ${message}`); + } +} + +export function getErrorMessage(error: string | Error | undefined): string { + if (error === undefined) { + return ''; + } else if (typeof error === 'string') { + return error; + } + + return error.message; +} diff --git a/static/Kline/datafeeds/udf/src/history-provider.js b/static/Kline/datafeeds/udf/src/history-provider.js new file mode 100644 index 0000000..4214ab6 --- /dev/null +++ b/static/Kline/datafeeds/udf/src/history-provider.js @@ -0,0 +1,66 @@ +import { getErrorMessage, } from './helpers'; +var HistoryProvider = /** @class */ (function () { + function HistoryProvider(datafeedUrl, requester) { + this._datafeedUrl = datafeedUrl; + this._requester = requester; + } + HistoryProvider.prototype.getBars = function (symbolInfo, resolution, rangeStartDate, rangeEndDate) { + var _this = this; + var requestParams = { + symbol: symbolInfo.ticker || '', + resolution: resolution, + from: rangeStartDate, + to: rangeEndDate, + }; + return new Promise(function (resolve, reject) { + _this._requester.sendRequest(_this._datafeedUrl, 'history', requestParams) + .then(function (response) { + if (response.s !== 'ok' && response.s !== 'no_data') { + reject(response.errmsg); + return; + } + var bars = []; + var meta = { + noData: false, + }; + if (response.s === 'no_data') { + meta.noData = true; + meta.nextTime = response.nextTime; + } + else { + var volumePresent = response.v !== undefined; + var ohlPresent = response.o !== undefined; + for (var i = 0; i < response.t.length; ++i) { + var barValue = { + time: response.t[i] * 1000, + close: Number(response.c[i]), + open: Number(response.c[i]), + high: Number(response.c[i]), + low: Number(response.c[i]), + }; + if (ohlPresent) { + barValue.open = Number(response.o[i]); + barValue.high = Number(response.h[i]); + barValue.low = Number(response.l[i]); + } + if (volumePresent) { + barValue.volume = Number(response.v[i]); + } + bars.push(barValue); + } + } + resolve({ + bars: bars, + meta: meta, + }); + }) + .catch(function (reason) { + var reasonString = getErrorMessage(reason); + console.warn("HistoryProvider: getBars() failed, error=" + reasonString); + reject(reasonString); + }); + }); + }; + return HistoryProvider; +}()); +export { HistoryProvider }; diff --git a/static/Kline/datafeeds/udf/src/history-provider.ts b/static/Kline/datafeeds/udf/src/history-provider.ts new file mode 100644 index 0000000..791ef36 --- /dev/null +++ b/static/Kline/datafeeds/udf/src/history-provider.ts @@ -0,0 +1,119 @@ +import { + Bar, + HistoryMetadata, + LibrarySymbolInfo, +} from '../../../charting_library/datafeed-api'; + +import { + getErrorMessage, + RequestParams, + UdfErrorResponse, + UdfOkResponse, + UdfResponse, +} from './helpers'; + +import { Requester } from './requester'; + +interface HistoryPartialDataResponse extends UdfOkResponse { + t: number[]; + c: number[]; + o?: never; + h?: never; + l?: never; + v?: never; +} + +interface HistoryFullDataResponse extends UdfOkResponse { + t: number[]; + c: number[]; + o: number[]; + h: number[]; + l: number[]; + v: number[]; +} + +interface HistoryNoDataResponse extends UdfResponse { + s: 'no_data'; + nextTime?: number; +} + +type HistoryResponse = HistoryFullDataResponse | HistoryPartialDataResponse | HistoryNoDataResponse; + +export interface GetBarsResult { + bars: Bar[]; + meta: HistoryMetadata; +} + +export class HistoryProvider { + private _datafeedUrl: string; + private readonly _requester: Requester; + + public constructor(datafeedUrl: string, requester: Requester) { + this._datafeedUrl = datafeedUrl; + this._requester = requester; + } + + public getBars(symbolInfo: LibrarySymbolInfo, resolution: string, rangeStartDate: number, rangeEndDate: number): Promise { + const requestParams: RequestParams = { + symbol: symbolInfo.ticker || '', + resolution: resolution, + from: rangeStartDate, + to: rangeEndDate, + }; + + return new Promise((resolve: (result: GetBarsResult) => void, reject: (reason: string) => void) => { + this._requester.sendRequest(this._datafeedUrl, 'history', requestParams) + .then((response: HistoryResponse | UdfErrorResponse) => { + if (response.s !== 'ok' && response.s !== 'no_data') { + reject(response.errmsg); + return; + } + + const bars: Bar[] = []; + const meta: HistoryMetadata = { + noData: false, + }; + + if (response.s === 'no_data') { + meta.noData = true; + meta.nextTime = response.nextTime; + } else { + const volumePresent = response.v !== undefined; + const ohlPresent = response.o !== undefined; + + for (let i = 0; i < response.t.length; ++i) { + const barValue: Bar = { + time: response.t[i] * 1000, + close: Number(response.c[i]), + open: Number(response.c[i]), + high: Number(response.c[i]), + low: Number(response.c[i]), + }; + + if (ohlPresent) { + barValue.open = Number((response as HistoryFullDataResponse).o[i]); + barValue.high = Number((response as HistoryFullDataResponse).h[i]); + barValue.low = Number((response as HistoryFullDataResponse).l[i]); + } + + if (volumePresent) { + barValue.volume = Number((response as HistoryFullDataResponse).v[i]); + } + + bars.push(barValue); + } + } + + resolve({ + bars: bars, + meta: meta, + }); + }) + .catch((reason?: string | Error) => { + const reasonString = getErrorMessage(reason); + console.warn(`HistoryProvider: getBars() failed, error=${reasonString}`); + reject(reasonString); + }); + }); + } +} diff --git a/static/Kline/datafeeds/udf/src/iquotes-provider.js b/static/Kline/datafeeds/udf/src/iquotes-provider.js new file mode 100644 index 0000000..e69de29 diff --git a/static/Kline/datafeeds/udf/src/iquotes-provider.ts b/static/Kline/datafeeds/udf/src/iquotes-provider.ts new file mode 100644 index 0000000..23702f1 --- /dev/null +++ b/static/Kline/datafeeds/udf/src/iquotes-provider.ts @@ -0,0 +1,14 @@ +import { QuoteData } from '../../../charting_library/datafeed-api'; + +import { + UdfOkResponse, +} from './helpers'; + +export interface UdfQuotesResponse extends UdfOkResponse { + d: QuoteData[]; +} + +export interface IQuotesProvider { + // tslint:disable-next-line:variable-name tv-variable-name + getQuotes(symbols: string[]): Promise; +} diff --git a/static/Kline/datafeeds/udf/src/polyfills.es6 b/static/Kline/datafeeds/udf/src/polyfills.es6 new file mode 100644 index 0000000..471a156 --- /dev/null +++ b/static/Kline/datafeeds/udf/src/polyfills.es6 @@ -0,0 +1,2 @@ +import 'promise-polyfill'; +import 'whatwg-fetch'; diff --git a/static/Kline/datafeeds/udf/src/quotes-provider.js b/static/Kline/datafeeds/udf/src/quotes-provider.js new file mode 100644 index 0000000..1cdde2c --- /dev/null +++ b/static/Kline/datafeeds/udf/src/quotes-provider.js @@ -0,0 +1,28 @@ +import { getErrorMessage, logMessage, } from './helpers'; +var QuotesProvider = /** @class */ (function () { + function QuotesProvider(datafeedUrl, requester) { + this._datafeedUrl = datafeedUrl; + this._requester = requester; + } + QuotesProvider.prototype.getQuotes = function (symbols) { + var _this = this; + return new Promise(function (resolve, reject) { + _this._requester.sendRequest(_this._datafeedUrl, 'quotes', { symbols: symbols }) + .then(function (response) { + if (response.s === 'ok') { + resolve(response.d); + } + else { + reject(response.errmsg); + } + }) + .catch(function (error) { + var errorMessage = getErrorMessage(error); + logMessage("QuotesProvider: getQuotes failed, error=" + errorMessage); + reject("network error: " + errorMessage); + }); + }); + }; + return QuotesProvider; +}()); +export { QuotesProvider }; diff --git a/static/Kline/datafeeds/udf/src/quotes-provider.ts b/static/Kline/datafeeds/udf/src/quotes-provider.ts new file mode 100644 index 0000000..6e07070 --- /dev/null +++ b/static/Kline/datafeeds/udf/src/quotes-provider.ts @@ -0,0 +1,37 @@ +import { UdfQuotesResponse, IQuotesProvider } from './iquotes-provider'; +import { QuoteData } from '../../../charting_library/datafeed-api'; + +import { + getErrorMessage, + logMessage, + UdfErrorResponse, +} from './helpers'; +import { Requester } from './requester'; + +export class QuotesProvider implements IQuotesProvider { + private readonly _datafeedUrl: string; + private readonly _requester: Requester; + + public constructor(datafeedUrl: string, requester: Requester) { + this._datafeedUrl = datafeedUrl; + this._requester = requester; + } + + public getQuotes(symbols: string[]): Promise { + return new Promise((resolve: (data: QuoteData[]) => void, reject: (reason: string) => void) => { + this._requester.sendRequest(this._datafeedUrl, 'quotes', { symbols: symbols }) + .then((response: UdfQuotesResponse | UdfErrorResponse) => { + if (response.s === 'ok') { + resolve(response.d); + } else { + reject(response.errmsg); + } + }) + .catch((error?: string | Error) => { + const errorMessage = getErrorMessage(error); + logMessage(`QuotesProvider: getQuotes failed, error=${errorMessage}`); + reject(`network error: ${errorMessage}`); + }); + }); + } +} diff --git a/static/Kline/datafeeds/udf/src/quotes-pulse-provider.js b/static/Kline/datafeeds/udf/src/quotes-pulse-provider.js new file mode 100644 index 0000000..25ab79d --- /dev/null +++ b/static/Kline/datafeeds/udf/src/quotes-pulse-provider.js @@ -0,0 +1,51 @@ +import { getErrorMessage, logMessage, } from './helpers'; +var QuotesPulseProvider = /** @class */ (function () { + function QuotesPulseProvider(quotesProvider) { + this._subscribers = {}; + this._requestsPending = 0; + this._quotesProvider = quotesProvider; + setInterval(this._updateQuotes.bind(this, 1 /* Fast */), 10000 /* Fast */); + setInterval(this._updateQuotes.bind(this, 0 /* General */), 60000 /* General */); + } + QuotesPulseProvider.prototype.subscribeQuotes = function (symbols, fastSymbols, onRealtimeCallback, listenerGuid) { + this._subscribers[listenerGuid] = { + symbols: symbols, + fastSymbols: fastSymbols, + listener: onRealtimeCallback, + }; + logMessage("QuotesPulseProvider: subscribed quotes with #" + listenerGuid); + }; + QuotesPulseProvider.prototype.unsubscribeQuotes = function (listenerGuid) { + delete this._subscribers[listenerGuid]; + logMessage("QuotesPulseProvider: unsubscribed quotes with #" + listenerGuid); + }; + QuotesPulseProvider.prototype._updateQuotes = function (updateType) { + var _this = this; + if (this._requestsPending > 0) { + return; + } + var _loop_1 = function (listenerGuid) { + this_1._requestsPending++; + var subscriptionRecord = this_1._subscribers[listenerGuid]; + this_1._quotesProvider.getQuotes(updateType === 1 /* Fast */ ? subscriptionRecord.fastSymbols : subscriptionRecord.symbols) + .then(function (data) { + _this._requestsPending--; + if (!_this._subscribers.hasOwnProperty(listenerGuid)) { + return; + } + subscriptionRecord.listener(data); + logMessage("QuotesPulseProvider: data for #" + listenerGuid + " (" + updateType + ") updated successfully, pending=" + _this._requestsPending); + }) + .catch(function (reason) { + _this._requestsPending--; + logMessage("QuotesPulseProvider: data for #" + listenerGuid + " (" + updateType + ") updated with error=" + getErrorMessage(reason) + ", pending=" + _this._requestsPending); + }); + }; + var this_1 = this; + for (var listenerGuid in this._subscribers) { + _loop_1(listenerGuid); + } + }; + return QuotesPulseProvider; +}()); +export { QuotesPulseProvider }; diff --git a/static/Kline/datafeeds/udf/src/quotes-pulse-provider.ts b/static/Kline/datafeeds/udf/src/quotes-pulse-provider.ts new file mode 100644 index 0000000..2f5581a --- /dev/null +++ b/static/Kline/datafeeds/udf/src/quotes-pulse-provider.ts @@ -0,0 +1,85 @@ +import { + QuoteData, + QuotesCallback, +} from '../../../charting_library/datafeed-api'; + +import { + getErrorMessage, + logMessage, +} from './helpers'; + +import { IQuotesProvider } from './iquotes-provider'; + +interface QuoteSubscriber { + symbols: string[]; + fastSymbols: string[]; + listener: QuotesCallback; +} + +interface QuoteSubscribers { + [listenerId: string]: QuoteSubscriber; +} + +const enum SymbolsType { + General, + Fast, +} + +const enum UpdateTimeouts { + Fast = 10 * 1000, + General = 60 * 1000, +} + +export class QuotesPulseProvider { + private readonly _quotesProvider: IQuotesProvider; + private readonly _subscribers: QuoteSubscribers = {}; + private _requestsPending: number = 0; + + public constructor(quotesProvider: IQuotesProvider) { + this._quotesProvider = quotesProvider; + + setInterval(this._updateQuotes.bind(this, SymbolsType.Fast), UpdateTimeouts.Fast); + setInterval(this._updateQuotes.bind(this, SymbolsType.General), UpdateTimeouts.General); + } + + public subscribeQuotes(symbols: string[], fastSymbols: string[], onRealtimeCallback: QuotesCallback, listenerGuid: string): void { + this._subscribers[listenerGuid] = { + symbols: symbols, + fastSymbols: fastSymbols, + listener: onRealtimeCallback, + }; + + logMessage(`QuotesPulseProvider: subscribed quotes with #${listenerGuid}`); + } + + public unsubscribeQuotes(listenerGuid: string): void { + delete this._subscribers[listenerGuid]; + logMessage(`QuotesPulseProvider: unsubscribed quotes with #${listenerGuid}`); + } + + private _updateQuotes(updateType: SymbolsType): void { + if (this._requestsPending > 0) { + return; + } + + for (const listenerGuid in this._subscribers) { // tslint:disable-line:forin + this._requestsPending++; + + const subscriptionRecord = this._subscribers[listenerGuid]; + this._quotesProvider.getQuotes(updateType === SymbolsType.Fast ? subscriptionRecord.fastSymbols : subscriptionRecord.symbols) + .then((data: QuoteData[]) => { + this._requestsPending--; + if (!this._subscribers.hasOwnProperty(listenerGuid)) { + return; + } + + subscriptionRecord.listener(data); + logMessage(`QuotesPulseProvider: data for #${listenerGuid} (${updateType}) updated successfully, pending=${this._requestsPending}`); + }) + .catch((reason?: string | Error) => { + this._requestsPending--; + logMessage(`QuotesPulseProvider: data for #${listenerGuid} (${updateType}) updated with error=${getErrorMessage(reason)}, pending=${this._requestsPending}`); + }); + } + } +} diff --git a/static/Kline/datafeeds/udf/src/requester.js b/static/Kline/datafeeds/udf/src/requester.js new file mode 100644 index 0000000..891adc1 --- /dev/null +++ b/static/Kline/datafeeds/udf/src/requester.js @@ -0,0 +1,30 @@ +import { logMessage } from './helpers'; +var Requester = /** @class */ (function () { + function Requester(headers) { + if (headers) { + this._headers = headers; + } + } + Requester.prototype.sendRequest = function (datafeedUrl, urlPath, params) { + if (params !== undefined) { + var paramKeys = Object.keys(params); + if (paramKeys.length !== 0) { + urlPath += '?'; + } + urlPath += paramKeys.map(function (key) { + return encodeURIComponent(key) + "=" + encodeURIComponent(params[key].toString()); + }).join('&'); + } + logMessage('New request: ' + urlPath); + // Send user cookies if the URL is on the same origin as the calling script. + var options = { credentials: 'same-origin' }; + if (this._headers !== undefined) { + options.headers = this._headers; + } + return fetch(datafeedUrl + "/" + urlPath, options) + .then(function (response) { return response.text(); }) + .then(function (responseTest) { return JSON.parse(responseTest); }); + }; + return Requester; +}()); +export { Requester }; diff --git a/static/Kline/datafeeds/udf/src/requester.ts b/static/Kline/datafeeds/udf/src/requester.ts new file mode 100644 index 0000000..f6fc737 --- /dev/null +++ b/static/Kline/datafeeds/udf/src/requester.ts @@ -0,0 +1,39 @@ +import { RequestParams, UdfResponse, UdfErrorResponse, logMessage } from './helpers'; + +export class Requester { + private _headers: HeadersInit | undefined; + + public constructor(headers?: HeadersInit) { + if (headers) { + this._headers = headers; + } + } + + public sendRequest(datafeedUrl: string, urlPath: string, params?: RequestParams): Promise; + public sendRequest(datafeedUrl: string, urlPath: string, params?: RequestParams): Promise; + public sendRequest(datafeedUrl: string, urlPath: string, params?: RequestParams): Promise { + if (params !== undefined) { + const paramKeys = Object.keys(params); + if (paramKeys.length !== 0) { + urlPath += '?'; + } + + urlPath += paramKeys.map((key: string) => { + return `${encodeURIComponent(key)}=${encodeURIComponent(params[key].toString())}`; + }).join('&'); + } + + logMessage('New request: ' + urlPath); + + // Send user cookies if the URL is on the same origin as the calling script. + const options: RequestInit = { credentials: 'same-origin' }; + + if (this._headers !== undefined) { + options.headers = this._headers; + } + + return fetch(`${datafeedUrl}/${urlPath}`, options) + .then((response: Response) => response.text()) + .then((responseTest: string) => JSON.parse(responseTest)); + } +} diff --git a/static/Kline/datafeeds/udf/src/symbols-storage.js b/static/Kline/datafeeds/udf/src/symbols-storage.js new file mode 100644 index 0000000..aad2390 --- /dev/null +++ b/static/Kline/datafeeds/udf/src/symbols-storage.js @@ -0,0 +1,172 @@ +import { getErrorMessage, logMessage, } from './helpers'; +function extractField(data, field, arrayIndex, valueIsArray) { + var value = data[field]; + if (Array.isArray(value) && (!valueIsArray || Array.isArray(value[0]))) { + return value[arrayIndex]; + } + return value; +} +var SymbolsStorage = /** @class */ (function () { + function SymbolsStorage(datafeedUrl, datafeedSupportedResolutions, requester) { + this._exchangesList = ['NYSE', 'FOREX', 'AMEX']; + this._symbolsInfo = {}; + this._symbolsList = []; + this._datafeedUrl = datafeedUrl; + this._datafeedSupportedResolutions = datafeedSupportedResolutions; + this._requester = requester; + this._readyPromise = this._init(); + this._readyPromise.catch(function (error) { + // seems it is impossible + console.error("SymbolsStorage: Cannot init, error=" + error.toString()); + }); + } + // BEWARE: this function does not consider symbol's exchange + SymbolsStorage.prototype.resolveSymbol = function (symbolName) { + var _this = this; + return this._readyPromise.then(function () { + var symbolInfo = _this._symbolsInfo[symbolName]; + if (symbolInfo === undefined) { + return Promise.reject('invalid symbol'); + } + return Promise.resolve(symbolInfo); + }); + }; + SymbolsStorage.prototype.searchSymbols = function (searchString, exchange, symbolType, maxSearchResults) { + var _this = this; + return this._readyPromise.then(function () { + var weightedResult = []; + var queryIsEmpty = searchString.length === 0; + searchString = searchString.toUpperCase(); + var _loop_1 = function (symbolName) { + var symbolInfo = _this._symbolsInfo[symbolName]; + if (symbolInfo === undefined) { + return "continue"; + } + if (symbolType.length > 0 && symbolInfo.type !== symbolType) { + return "continue"; + } + if (exchange && exchange.length > 0 && symbolInfo.exchange !== exchange) { + return "continue"; + } + var positionInName = symbolInfo.name.toUpperCase().indexOf(searchString); + var positionInDescription = symbolInfo.description.toUpperCase().indexOf(searchString); + if (queryIsEmpty || positionInName >= 0 || positionInDescription >= 0) { + var alreadyExists = weightedResult.some(function (item) { return item.symbolInfo === symbolInfo; }); + if (!alreadyExists) { + var weight = positionInName >= 0 ? positionInName : 8000 + positionInDescription; + weightedResult.push({ symbolInfo: symbolInfo, weight: weight }); + } + } + }; + for (var _i = 0, _a = _this._symbolsList; _i < _a.length; _i++) { + var symbolName = _a[_i]; + _loop_1(symbolName); + } + var result = weightedResult + .sort(function (item1, item2) { return item1.weight - item2.weight; }) + .slice(0, maxSearchResults) + .map(function (item) { + var symbolInfo = item.symbolInfo; + return { + symbol: symbolInfo.name, + full_name: symbolInfo.full_name, + description: symbolInfo.description, + exchange: symbolInfo.exchange, + params: [], + type: symbolInfo.type, + ticker: symbolInfo.name, + }; + }); + return Promise.resolve(result); + }); + }; + SymbolsStorage.prototype._init = function () { + var _this = this; + var promises = []; + var alreadyRequestedExchanges = {}; + for (var _i = 0, _a = this._exchangesList; _i < _a.length; _i++) { + var exchange = _a[_i]; + if (alreadyRequestedExchanges[exchange]) { + continue; + } + alreadyRequestedExchanges[exchange] = true; + promises.push(this._requestExchangeData(exchange)); + } + return Promise.all(promises) + .then(function () { + _this._symbolsList.sort(); + logMessage('SymbolsStorage: All exchanges data loaded'); + }); + }; + SymbolsStorage.prototype._requestExchangeData = function (exchange) { + var _this = this; + return new Promise(function (resolve, reject) { + _this._requester.sendRequest(_this._datafeedUrl, 'symbol_info', { group: exchange }) + .then(function (response) { + try { + _this._onExchangeDataReceived(exchange, response); + } + catch (error) { + reject(error); + return; + } + resolve(); + }) + .catch(function (reason) { + logMessage("SymbolsStorage: Request data for exchange '" + exchange + "' failed, reason=" + getErrorMessage(reason)); + resolve(); + }); + }); + }; + SymbolsStorage.prototype._onExchangeDataReceived = function (exchange, data) { + var symbolIndex = 0; + try { + var symbolsCount = data.symbol.length; + var tickerPresent = data.ticker !== undefined; + for (; symbolIndex < symbolsCount; ++symbolIndex) { + var symbolName = data.symbol[symbolIndex]; + var listedExchange = extractField(data, 'exchange-listed', symbolIndex); + var tradedExchange = extractField(data, 'exchange-traded', symbolIndex); + var fullName = tradedExchange + ':' + symbolName; + var ticker = tickerPresent ? extractField(data, 'ticker', symbolIndex) : symbolName; + var symbolInfo = { + ticker: ticker, + name: symbolName, + base_name: [listedExchange + ':' + symbolName], + full_name: fullName, + listed_exchange: listedExchange, + exchange: tradedExchange, + description: extractField(data, 'description', symbolIndex), + has_intraday: definedValueOrDefault(extractField(data, 'has-intraday', symbolIndex), false), + has_no_volume: definedValueOrDefault(extractField(data, 'has-no-volume', symbolIndex), false), + minmov: extractField(data, 'minmovement', symbolIndex) || extractField(data, 'minmov', symbolIndex) || 0, + minmove2: extractField(data, 'minmove2', symbolIndex) || extractField(data, 'minmov2', symbolIndex), + fractional: extractField(data, 'fractional', symbolIndex), + pricescale: extractField(data, 'pricescale', symbolIndex), + type: extractField(data, 'type', symbolIndex), + session: extractField(data, 'session-regular', symbolIndex), + timezone: extractField(data, 'timezone', symbolIndex), + supported_resolutions: definedValueOrDefault(extractField(data, 'supported-resolutions', symbolIndex, true), this._datafeedSupportedResolutions), + force_session_rebuild: extractField(data, 'force-session-rebuild', symbolIndex), + has_daily: definedValueOrDefault(extractField(data, 'has-daily', symbolIndex), true), + intraday_multipliers: definedValueOrDefault(extractField(data, 'intraday-multipliers', symbolIndex, true), ['1', '5', '15', '30', '60']), + has_weekly_and_monthly: extractField(data, 'has-weekly-and-monthly', symbolIndex), + has_empty_bars: extractField(data, 'has-empty-bars', symbolIndex), + volume_precision: definedValueOrDefault(extractField(data, 'volume-precision', symbolIndex), 0), + }; + this._symbolsInfo[ticker] = symbolInfo; + this._symbolsInfo[symbolName] = symbolInfo; + this._symbolsInfo[fullName] = symbolInfo; + this._symbolsList.push(symbolName); + } + } + catch (error) { + throw new Error("SymbolsStorage: API error when processing exchange " + exchange + " symbol #" + symbolIndex + " (" + data.symbol[symbolIndex] + "): " + error.message); + } + }; + return SymbolsStorage; +}()); +export { SymbolsStorage }; +function definedValueOrDefault(value, defaultValue) { + return value !== undefined ? value : defaultValue; +} diff --git a/static/Kline/datafeeds/udf/src/symbols-storage.ts b/static/Kline/datafeeds/udf/src/symbols-storage.ts new file mode 100644 index 0000000..d6fa82a --- /dev/null +++ b/static/Kline/datafeeds/udf/src/symbols-storage.ts @@ -0,0 +1,272 @@ +import { + LibrarySymbolInfo, + SearchSymbolResultItem, +} from '../../../charting_library/datafeed-api'; + +import { + getErrorMessage, + logMessage, +} from './helpers'; + +import { Requester } from './requester'; + +interface SymbolInfoMap { + [symbol: string]: LibrarySymbolInfo | undefined; +} + +interface ExchangeDataResponseSymbolData { + 'type': string; + 'timezone': LibrarySymbolInfo['timezone']; + 'description': string; + + 'exchange-listed': string; + 'exchange-traded': string; + + 'session-regular': string; + + 'fractional': boolean; + + 'pricescale': number; + + 'ticker'?: string; + + 'minmov2'?: number; + 'minmove2'?: number; + + 'minmov'?: number; + 'minmovement'?: number; + + 'force-session-rebuild'?: boolean; + + 'supported-resolutions'?: string[]; + 'intraday-multipliers'?: string[]; + + 'has-intraday'?: boolean; + 'has-daily'?: boolean; + 'has-weekly-and-monthly'?: boolean; + 'has-empty-bars'?: boolean; + 'has-no-volume'?: boolean; + + 'volume-precision'?: number; +} + +// Here is some black magic with types to get compile-time checks of names and types +type PickArrayedObjectFields = Pick extends any[] ? K : never; +}[keyof T]>; + +type ExchangeDataResponseArrayedSymbolData = PickArrayedObjectFields; +type ExchangeDataResponseNonArrayedSymbolData = Pick>; + +type ExchangeDataResponse = + { + symbol: string[]; + } & + { + [K in keyof ExchangeDataResponseSymbolData]: ExchangeDataResponseSymbolData[K] | NonNullable[]; + }; + +function extractField(data: ExchangeDataResponse, field: Field, arrayIndex: number): ExchangeDataResponseNonArrayedSymbolData[Field]; +function extractField(data: ExchangeDataResponse, field: Field, arrayIndex: number, valueIsArray: true): ExchangeDataResponseArrayedSymbolData[Field]; +function extractField(data: ExchangeDataResponse, field: Field, arrayIndex: number, valueIsArray?: boolean): ExchangeDataResponseSymbolData[Field] { + const value: ExchangeDataResponse[keyof ExchangeDataResponseSymbolData] = data[field]; + + if (Array.isArray(value) && (!valueIsArray || Array.isArray(value[0]))) { + return value[arrayIndex]; + } + + return value as ExchangeDataResponseSymbolData[Field]; +} + +export class SymbolsStorage { + private readonly _exchangesList: string[] = ['NYSE', 'FOREX', 'AMEX']; + private readonly _symbolsInfo: SymbolInfoMap = {}; + private readonly _symbolsList: string[] = []; + private readonly _datafeedUrl: string; + private readonly _readyPromise: Promise; + private readonly _datafeedSupportedResolutions: string[]; + private readonly _requester: Requester; + + public constructor(datafeedUrl: string, datafeedSupportedResolutions: string[], requester: Requester) { + this._datafeedUrl = datafeedUrl; + this._datafeedSupportedResolutions = datafeedSupportedResolutions; + this._requester = requester; + this._readyPromise = this._init(); + this._readyPromise.catch((error: Error) => { + // seems it is impossible + console.error(`SymbolsStorage: Cannot init, error=${error.toString()}`); + }); + } + + // BEWARE: this function does not consider symbol's exchange + public resolveSymbol(symbolName: string): Promise { + return this._readyPromise.then(() => { + const symbolInfo = this._symbolsInfo[symbolName]; + if (symbolInfo === undefined) { + return Promise.reject('invalid symbol'); + } + + return Promise.resolve(symbolInfo); + }); + } + + public searchSymbols(searchString: string, exchange: string, symbolType: string, maxSearchResults: number): Promise { + interface WeightedItem { + symbolInfo: LibrarySymbolInfo; + weight: number; + } + + return this._readyPromise.then(() => { + const weightedResult: WeightedItem[] = []; + const queryIsEmpty = searchString.length === 0; + + searchString = searchString.toUpperCase(); + + for (const symbolName of this._symbolsList) { + const symbolInfo = this._symbolsInfo[symbolName]; + + if (symbolInfo === undefined) { + continue; + } + + if (symbolType.length > 0 && symbolInfo.type !== symbolType) { + continue; + } + + if (exchange && exchange.length > 0 && symbolInfo.exchange !== exchange) { + continue; + } + + const positionInName = symbolInfo.name.toUpperCase().indexOf(searchString); + const positionInDescription = symbolInfo.description.toUpperCase().indexOf(searchString); + + if (queryIsEmpty || positionInName >= 0 || positionInDescription >= 0) { + const alreadyExists = weightedResult.some((item: WeightedItem) => item.symbolInfo === symbolInfo); + if (!alreadyExists) { + const weight = positionInName >= 0 ? positionInName : 8000 + positionInDescription; + weightedResult.push({ symbolInfo: symbolInfo, weight: weight }); + } + } + } + + const result = weightedResult + .sort((item1: WeightedItem, item2: WeightedItem) => item1.weight - item2.weight) + .slice(0, maxSearchResults) + .map((item: WeightedItem) => { + const symbolInfo = item.symbolInfo; + return { + symbol: symbolInfo.name, + full_name: symbolInfo.full_name, + description: symbolInfo.description, + exchange: symbolInfo.exchange, + params: [], + type: symbolInfo.type, + ticker: symbolInfo.name, + }; + }); + + return Promise.resolve(result); + }); + } + + private _init(): Promise { + interface BooleanMap { + [key: string]: boolean | undefined; + } + + const promises: Promise[] = []; + const alreadyRequestedExchanges: BooleanMap = {}; + + for (const exchange of this._exchangesList) { + if (alreadyRequestedExchanges[exchange]) { + continue; + } + + alreadyRequestedExchanges[exchange] = true; + promises.push(this._requestExchangeData(exchange)); + } + + return Promise.all(promises) + .then(() => { + this._symbolsList.sort(); + logMessage('SymbolsStorage: All exchanges data loaded'); + }); + } + + private _requestExchangeData(exchange: string): Promise { + return new Promise((resolve: () => void, reject: (error: Error) => void) => { + this._requester.sendRequest(this._datafeedUrl, 'symbol_info', { group: exchange }) + .then((response: ExchangeDataResponse) => { + try { + this._onExchangeDataReceived(exchange, response); + } catch (error) { + reject(error); + return; + } + + resolve(); + }) + .catch((reason?: string | Error) => { + logMessage(`SymbolsStorage: Request data for exchange '${exchange}' failed, reason=${getErrorMessage(reason)}`); + resolve(); + }); + }); + } + + private _onExchangeDataReceived(exchange: string, data: ExchangeDataResponse): void { + let symbolIndex = 0; + + try { + const symbolsCount = data.symbol.length; + const tickerPresent = data.ticker !== undefined; + + for (; symbolIndex < symbolsCount; ++symbolIndex) { + const symbolName = data.symbol[symbolIndex]; + const listedExchange = extractField(data, 'exchange-listed', symbolIndex); + const tradedExchange = extractField(data, 'exchange-traded', symbolIndex); + const fullName = tradedExchange + ':' + symbolName; + + const ticker = tickerPresent ? (extractField(data, 'ticker', symbolIndex) as string) : symbolName; + + const symbolInfo: LibrarySymbolInfo = { + ticker: ticker, + name: symbolName, + base_name: [listedExchange + ':' + symbolName], + full_name: fullName, + listed_exchange: listedExchange, + exchange: tradedExchange, + description: extractField(data, 'description', symbolIndex), + has_intraday: definedValueOrDefault(extractField(data, 'has-intraday', symbolIndex), false), + has_no_volume: definedValueOrDefault(extractField(data, 'has-no-volume', symbolIndex), false), + minmov: extractField(data, 'minmovement', symbolIndex) || extractField(data, 'minmov', symbolIndex) || 0, + minmove2: extractField(data, 'minmove2', symbolIndex) || extractField(data, 'minmov2', symbolIndex), + fractional: extractField(data, 'fractional', symbolIndex), + pricescale: extractField(data, 'pricescale', symbolIndex), + type: extractField(data, 'type', symbolIndex), + session: extractField(data, 'session-regular', symbolIndex), + timezone: extractField(data, 'timezone', symbolIndex), + supported_resolutions: definedValueOrDefault(extractField(data, 'supported-resolutions', symbolIndex, true), this._datafeedSupportedResolutions), + force_session_rebuild: extractField(data, 'force-session-rebuild', symbolIndex), + has_daily: definedValueOrDefault(extractField(data, 'has-daily', symbolIndex), true), + intraday_multipliers: definedValueOrDefault(extractField(data, 'intraday-multipliers', symbolIndex, true), ['1', '5', '15', '30', '60']), + has_weekly_and_monthly: extractField(data, 'has-weekly-and-monthly', symbolIndex), + has_empty_bars: extractField(data, 'has-empty-bars', symbolIndex), + volume_precision: definedValueOrDefault(extractField(data, 'volume-precision', symbolIndex), 0), + }; + + this._symbolsInfo[ticker] = symbolInfo; + this._symbolsInfo[symbolName] = symbolInfo; + this._symbolsInfo[fullName] = symbolInfo; + + this._symbolsList.push(symbolName); + } + } catch (error) { + throw new Error(`SymbolsStorage: API error when processing exchange ${exchange} symbol #${symbolIndex} (${data.symbol[symbolIndex]}): ${error.message}`); + } + } +} + +function definedValueOrDefault(value: T | undefined, defaultValue: T): T { + return value !== undefined ? value : defaultValue; +} diff --git a/static/Kline/datafeeds/udf/src/udf-compatible-datafeed-base.js b/static/Kline/datafeeds/udf/src/udf-compatible-datafeed-base.js new file mode 100644 index 0000000..909d713 --- /dev/null +++ b/static/Kline/datafeeds/udf/src/udf-compatible-datafeed-base.js @@ -0,0 +1,243 @@ +import { getErrorMessage, logMessage, } from './helpers'; +import { HistoryProvider, } from './history-provider'; +import { DataPulseProvider } from './data-pulse-provider'; +import { QuotesPulseProvider } from './quotes-pulse-provider'; +import { SymbolsStorage } from './symbols-storage'; +function extractField(data, field, arrayIndex) { + var value = data[field]; + return Array.isArray(value) ? value[arrayIndex] : value; +} +/** + * This class implements interaction with UDF-compatible datafeed. + * See UDF protocol reference at https://github.com/tradingview/charting_library/wiki/UDF + */ +var UDFCompatibleDatafeedBase = /** @class */ (function () { + function UDFCompatibleDatafeedBase(datafeedURL, quotesProvider, requester, updateFrequency) { + if (updateFrequency === void 0) { updateFrequency = 10 * 1000; } + var _this = this; + this._configuration = defaultConfiguration(); + this._symbolsStorage = null; + this._datafeedURL = datafeedURL; + this._requester = requester; + this._historyProvider = new HistoryProvider(datafeedURL, this._requester); + this._quotesProvider = quotesProvider; + this._dataPulseProvider = new DataPulseProvider(this._historyProvider, updateFrequency); + this._quotesPulseProvider = new QuotesPulseProvider(this._quotesProvider); + this._configurationReadyPromise = this._requestConfiguration() + .then(function (configuration) { + if (configuration === null) { + configuration = defaultConfiguration(); + } + _this._setupWithConfiguration(configuration); + }); + } + UDFCompatibleDatafeedBase.prototype.onReady = function (callback) { + var _this = this; + this._configurationReadyPromise.then(function () { + callback(_this._configuration); + }); + }; + UDFCompatibleDatafeedBase.prototype.getQuotes = function (symbols, onDataCallback, onErrorCallback) { + this._quotesProvider.getQuotes(symbols).then(onDataCallback).catch(onErrorCallback); + }; + UDFCompatibleDatafeedBase.prototype.subscribeQuotes = function (symbols, fastSymbols, onRealtimeCallback, listenerGuid) { + this._quotesPulseProvider.subscribeQuotes(symbols, fastSymbols, onRealtimeCallback, listenerGuid); + }; + UDFCompatibleDatafeedBase.prototype.unsubscribeQuotes = function (listenerGuid) { + this._quotesPulseProvider.unsubscribeQuotes(listenerGuid); + }; + UDFCompatibleDatafeedBase.prototype.calculateHistoryDepth = function (resolution, resolutionBack, intervalBack) { + return undefined; + }; + UDFCompatibleDatafeedBase.prototype.getMarks = function (symbolInfo, from, to, onDataCallback, resolution) { + if (!this._configuration.supports_marks) { + return; + } + var requestParams = { + symbol: symbolInfo.ticker || '', + from: from, + to: to, + resolution: resolution, + }; + this._send('marks', requestParams) + .then(function (response) { + if (!Array.isArray(response)) { + var result = []; + for (var i = 0; i < response.id.length; ++i) { + result.push({ + id: extractField(response, 'id', i), + time: extractField(response, 'time', i), + color: extractField(response, 'color', i), + text: extractField(response, 'text', i), + label: extractField(response, 'label', i), + labelFontColor: extractField(response, 'labelFontColor', i), + minSize: extractField(response, 'minSize', i), + }); + } + response = result; + } + onDataCallback(response); + }) + .catch(function (error) { + logMessage("UdfCompatibleDatafeed: Request marks failed: " + getErrorMessage(error)); + onDataCallback([]); + }); + }; + UDFCompatibleDatafeedBase.prototype.getTimescaleMarks = function (symbolInfo, from, to, onDataCallback, resolution) { + if (!this._configuration.supports_timescale_marks) { + return; + } + var requestParams = { + symbol: symbolInfo.ticker || '', + from: from, + to: to, + resolution: resolution, + }; + this._send('timescale_marks', requestParams) + .then(function (response) { + if (!Array.isArray(response)) { + var result = []; + for (var i = 0; i < response.id.length; ++i) { + result.push({ + id: extractField(response, 'id', i), + time: extractField(response, 'time', i), + color: extractField(response, 'color', i), + label: extractField(response, 'label', i), + tooltip: extractField(response, 'tooltip', i), + }); + } + response = result; + } + onDataCallback(response); + }) + .catch(function (error) { + logMessage("UdfCompatibleDatafeed: Request timescale marks failed: " + getErrorMessage(error)); + onDataCallback([]); + }); + }; + UDFCompatibleDatafeedBase.prototype.getServerTime = function (callback) { + if (!this._configuration.supports_time) { + return; + } + this._send('time') + .then(function (response) { + var time = parseInt(response); + if (!isNaN(time)) { + callback(time); + } + }) + .catch(function (error) { + logMessage("UdfCompatibleDatafeed: Fail to load server time, error=" + getErrorMessage(error)); + }); + }; + UDFCompatibleDatafeedBase.prototype.searchSymbols = function (userInput, exchange, symbolType, onResult) { + if (this._configuration.supports_search) { + var params = { + limit: 30 /* SearchItemsLimit */, + query: userInput.toUpperCase(), + type: symbolType, + exchange: exchange, + }; + this._send('search', params) + .then(function (response) { + if (response.s !== undefined) { + logMessage("UdfCompatibleDatafeed: search symbols error=" + response.errmsg); + onResult([]); + return; + } + onResult(response); + }) + .catch(function (reason) { + logMessage("UdfCompatibleDatafeed: Search symbols for '" + userInput + "' failed. Error=" + getErrorMessage(reason)); + onResult([]); + }); + } + else { + if (this._symbolsStorage === null) { + throw new Error('UdfCompatibleDatafeed: inconsistent configuration (symbols storage)'); + } + this._symbolsStorage.searchSymbols(userInput, exchange, symbolType, 30 /* SearchItemsLimit */) + .then(onResult) + .catch(onResult.bind(null, [])); + } + }; + UDFCompatibleDatafeedBase.prototype.resolveSymbol = function (symbolName, onResolve, onError) { + logMessage('Resolve requested'); + var resolveRequestStartTime = Date.now(); + function onResultReady(symbolInfo) { + logMessage("Symbol resolved: " + (Date.now() - resolveRequestStartTime) + "ms"); + onResolve(symbolInfo); + } + if (!this._configuration.supports_group_request) { + var params = { + symbol: symbolName, + }; + this._send('symbols', params) + .then(function (response) { + if (response.s !== undefined) { + onError('unknown_symbol'); + } + else { + onResultReady(response); + } + }) + .catch(function (reason) { + logMessage("UdfCompatibleDatafeed: Error resolving symbol: " + getErrorMessage(reason)); + onError('unknown_symbol'); + }); + } + else { + if (this._symbolsStorage === null) { + throw new Error('UdfCompatibleDatafeed: inconsistent configuration (symbols storage)'); + } + this._symbolsStorage.resolveSymbol(symbolName).then(onResultReady).catch(onError); + } + }; + UDFCompatibleDatafeedBase.prototype.getBars = function (symbolInfo, resolution, rangeStartDate, rangeEndDate, onResult, onError) { + this._historyProvider.getBars(symbolInfo, resolution, rangeStartDate, rangeEndDate) + .then(function (result) { + onResult(result.bars, result.meta); + }) + .catch(onError); + }; + UDFCompatibleDatafeedBase.prototype.subscribeBars = function (symbolInfo, resolution, onTick, listenerGuid, onResetCacheNeededCallback) { + this._dataPulseProvider.subscribeBars(symbolInfo, resolution, onTick, listenerGuid); + }; + UDFCompatibleDatafeedBase.prototype.unsubscribeBars = function (listenerGuid) { + this._dataPulseProvider.unsubscribeBars(listenerGuid); + }; + UDFCompatibleDatafeedBase.prototype._requestConfiguration = function () { + return this._send('config') + .catch(function (reason) { + logMessage("UdfCompatibleDatafeed: Cannot get datafeed configuration - use default, error=" + getErrorMessage(reason)); + return null; + }); + }; + UDFCompatibleDatafeedBase.prototype._send = function (urlPath, params) { + return this._requester.sendRequest(this._datafeedURL, urlPath, params); + }; + UDFCompatibleDatafeedBase.prototype._setupWithConfiguration = function (configurationData) { + this._configuration = configurationData; + if (configurationData.exchanges === undefined) { + configurationData.exchanges = []; + } + if (!configurationData.supports_search && !configurationData.supports_group_request) { + throw new Error('Unsupported datafeed configuration. Must either support search, or support group request'); + } + if (configurationData.supports_group_request || !configurationData.supports_search) { + this._symbolsStorage = new SymbolsStorage(this._datafeedURL, configurationData.supported_resolutions || [], this._requester); + } + logMessage("UdfCompatibleDatafeed: Initialized with " + JSON.stringify(configurationData)); + }; + return UDFCompatibleDatafeedBase; +}()); +export { UDFCompatibleDatafeedBase }; +function defaultConfiguration() { + return { + supports_search: false, + supports_group_request: true, + supported_resolutions: ['1', '5', '15', '30', '60', '1D', '1W', '1M'], + supports_marks: false, + supports_timescale_marks: false, + }; +} diff --git a/static/Kline/datafeeds/udf/src/udf-compatible-datafeed-base.ts b/static/Kline/datafeeds/udf/src/udf-compatible-datafeed-base.ts new file mode 100644 index 0000000..2f8b515 --- /dev/null +++ b/static/Kline/datafeeds/udf/src/udf-compatible-datafeed-base.ts @@ -0,0 +1,355 @@ +import { + DatafeedConfiguration, + ErrorCallback, + GetMarksCallback, + HistoryCallback, + HistoryDepth, + IDatafeedChartApi, + IDatafeedQuotesApi, + IExternalDatafeed, + LibrarySymbolInfo, + Mark, + OnReadyCallback, + QuotesCallback, + ResolutionBackValues, + ResolutionString, + ResolveCallback, + SearchSymbolResultItem, + SearchSymbolsCallback, + ServerTimeCallback, + SubscribeBarsCallback, + TimescaleMark, +} from '../../../charting_library/datafeed-api'; + +import { + getErrorMessage, + logMessage, + RequestParams, + UdfErrorResponse, +} from './helpers'; + +import { + GetBarsResult, + HistoryProvider, +} from './history-provider'; + +import { IQuotesProvider } from './iquotes-provider'; +import { DataPulseProvider } from './data-pulse-provider'; +import { QuotesPulseProvider } from './quotes-pulse-provider'; +import { SymbolsStorage } from './symbols-storage'; +import { Requester } from './requester'; + +export interface UdfCompatibleConfiguration extends DatafeedConfiguration { + // tslint:disable:tv-variable-name + supports_search?: boolean; + supports_group_request?: boolean; + // tslint:enable:tv-variable-name +} + +export interface ResolveSymbolResponse extends LibrarySymbolInfo { + s: undefined; +} + +// it is hack to let's TypeScript make code flow analysis +export interface UdfSearchSymbolsResponse extends Array { + s?: undefined; +} + +export const enum Constants { + SearchItemsLimit = 30, +} + +type UdfDatafeedMarkType = { + [K in keyof T]: T[K] | T[K][]; +} & { + id: (string | number)[]; +}; + +type UdfDatafeedMark = UdfDatafeedMarkType; +type UdfDatafeedTimescaleMark = UdfDatafeedMarkType; + +function extractField(data: UdfDatafeedMark, field: Field, arrayIndex: number): Mark[Field]; +function extractField(data: UdfDatafeedTimescaleMark, field: Field, arrayIndex: number): TimescaleMark[Field]; +function extractField(data: UdfDatafeedMark | UdfDatafeedTimescaleMark, field: Field, arrayIndex: number): (TimescaleMark | Mark)[Field] { + const value = data[field]; + return Array.isArray(value) ? value[arrayIndex] : value; +} + +/** + * This class implements interaction with UDF-compatible datafeed. + * See UDF protocol reference at https://github.com/tradingview/charting_library/wiki/UDF + */ +export class UDFCompatibleDatafeedBase implements IExternalDatafeed, IDatafeedQuotesApi, IDatafeedChartApi { + protected _configuration: UdfCompatibleConfiguration = defaultConfiguration(); + private readonly _datafeedURL: string; + private readonly _configurationReadyPromise: Promise; + + private _symbolsStorage: SymbolsStorage | null = null; + + private readonly _historyProvider: HistoryProvider; + private readonly _dataPulseProvider: DataPulseProvider; + + private readonly _quotesProvider: IQuotesProvider; + private readonly _quotesPulseProvider: QuotesPulseProvider; + + private readonly _requester: Requester; + + protected constructor(datafeedURL: string, quotesProvider: IQuotesProvider, requester: Requester, updateFrequency: number = 10 * 1000) { + this._datafeedURL = datafeedURL; + this._requester = requester; + this._historyProvider = new HistoryProvider(datafeedURL, this._requester); + this._quotesProvider = quotesProvider; + + this._dataPulseProvider = new DataPulseProvider(this._historyProvider, updateFrequency); + this._quotesPulseProvider = new QuotesPulseProvider(this._quotesProvider); + + this._configurationReadyPromise = this._requestConfiguration() + .then((configuration: UdfCompatibleConfiguration | null) => { + if (configuration === null) { + configuration = defaultConfiguration(); + } + + this._setupWithConfiguration(configuration); + }); + } + + public onReady(callback: OnReadyCallback): void { + this._configurationReadyPromise.then(() => { + callback(this._configuration); + }); + } + + public getQuotes(symbols: string[], onDataCallback: QuotesCallback, onErrorCallback: (msg: string) => void): void { + this._quotesProvider.getQuotes(symbols).then(onDataCallback).catch(onErrorCallback); + } + + public subscribeQuotes(symbols: string[], fastSymbols: string[], onRealtimeCallback: QuotesCallback, listenerGuid: string): void { + this._quotesPulseProvider.subscribeQuotes(symbols, fastSymbols, onRealtimeCallback, listenerGuid); + } + + public unsubscribeQuotes(listenerGuid: string): void { + this._quotesPulseProvider.unsubscribeQuotes(listenerGuid); + } + + public calculateHistoryDepth(resolution: ResolutionString, resolutionBack: ResolutionBackValues, intervalBack: number): HistoryDepth | undefined { + return undefined; + } + + public getMarks(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void { + if (!this._configuration.supports_marks) { + return; + } + + const requestParams: RequestParams = { + symbol: symbolInfo.ticker || '', + from: from, + to: to, + resolution: resolution, + }; + + this._send('marks', requestParams) + .then((response: Mark[] | UdfDatafeedMark) => { + if (!Array.isArray(response)) { + const result: Mark[] = []; + for (let i = 0; i < response.id.length; ++i) { + result.push({ + id: extractField(response, 'id', i), + time: extractField(response, 'time', i), + color: extractField(response, 'color', i), + text: extractField(response, 'text', i), + label: extractField(response, 'label', i), + labelFontColor: extractField(response, 'labelFontColor', i), + minSize: extractField(response, 'minSize', i), + }); + } + + response = result; + } + + onDataCallback(response); + }) + .catch((error?: string | Error) => { + logMessage(`UdfCompatibleDatafeed: Request marks failed: ${getErrorMessage(error)}`); + onDataCallback([]); + }); + } + + public getTimescaleMarks(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void { + if (!this._configuration.supports_timescale_marks) { + return; + } + + const requestParams: RequestParams = { + symbol: symbolInfo.ticker || '', + from: from, + to: to, + resolution: resolution, + }; + + this._send('timescale_marks', requestParams) + .then((response: TimescaleMark[] | UdfDatafeedTimescaleMark) => { + if (!Array.isArray(response)) { + const result: TimescaleMark[] = []; + for (let i = 0; i < response.id.length; ++i) { + result.push({ + id: extractField(response, 'id', i), + time: extractField(response, 'time', i), + color: extractField(response, 'color', i), + label: extractField(response, 'label', i), + tooltip: extractField(response, 'tooltip', i), + }); + } + + response = result; + } + + onDataCallback(response); + }) + .catch((error?: string | Error) => { + logMessage(`UdfCompatibleDatafeed: Request timescale marks failed: ${getErrorMessage(error)}`); + onDataCallback([]); + }); + } + + public getServerTime(callback: ServerTimeCallback): void { + if (!this._configuration.supports_time) { + return; + } + + this._send('time') + .then((response: string) => { + const time = parseInt(response); + if (!isNaN(time)) { + callback(time); + } + }) + .catch((error?: string | Error) => { + logMessage(`UdfCompatibleDatafeed: Fail to load server time, error=${getErrorMessage(error)}`); + }); + } + + public searchSymbols(userInput: string, exchange: string, symbolType: string, onResult: SearchSymbolsCallback): void { + if (this._configuration.supports_search) { + const params: RequestParams = { + limit: Constants.SearchItemsLimit, + query: userInput.toUpperCase(), + type: symbolType, + exchange: exchange, + }; + + this._send('search', params) + .then((response: UdfSearchSymbolsResponse | UdfErrorResponse) => { + if (response.s !== undefined) { + logMessage(`UdfCompatibleDatafeed: search symbols error=${response.errmsg}`); + onResult([]); + return; + } + + onResult(response); + }) + .catch((reason?: string | Error) => { + logMessage(`UdfCompatibleDatafeed: Search symbols for '${userInput}' failed. Error=${getErrorMessage(reason)}`); + onResult([]); + }); + } else { + if (this._symbolsStorage === null) { + throw new Error('UdfCompatibleDatafeed: inconsistent configuration (symbols storage)'); + } + + this._symbolsStorage.searchSymbols(userInput, exchange, symbolType, Constants.SearchItemsLimit) + .then(onResult) + .catch(onResult.bind(null, [])); + } + } + + public resolveSymbol(symbolName: string, onResolve: ResolveCallback, onError: ErrorCallback): void { + logMessage('Resolve requested'); + + const resolveRequestStartTime = Date.now(); + function onResultReady(symbolInfo: LibrarySymbolInfo): void { + logMessage(`Symbol resolved: ${Date.now() - resolveRequestStartTime}ms`); + onResolve(symbolInfo); + } + + if (!this._configuration.supports_group_request) { + const params: RequestParams = { + symbol: symbolName, + }; + + this._send('symbols', params) + .then((response: ResolveSymbolResponse | UdfErrorResponse) => { + if (response.s !== undefined) { + onError('unknown_symbol'); + } else { + onResultReady(response); + } + }) + .catch((reason?: string | Error) => { + logMessage(`UdfCompatibleDatafeed: Error resolving symbol: ${getErrorMessage(reason)}`); + onError('unknown_symbol'); + }); + } else { + if (this._symbolsStorage === null) { + throw new Error('UdfCompatibleDatafeed: inconsistent configuration (symbols storage)'); + } + + this._symbolsStorage.resolveSymbol(symbolName).then(onResultReady).catch(onError); + } + } + + public getBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, rangeStartDate: number, rangeEndDate: number, onResult: HistoryCallback, onError: ErrorCallback): void { + this._historyProvider.getBars(symbolInfo, resolution, rangeStartDate, rangeEndDate) + .then((result: GetBarsResult) => { + onResult(result.bars, result.meta); + }) + .catch(onError); + } + + public subscribeBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, onTick: SubscribeBarsCallback, listenerGuid: string, onResetCacheNeededCallback: () => void): void { + this._dataPulseProvider.subscribeBars(symbolInfo, resolution, onTick, listenerGuid); + } + + public unsubscribeBars(listenerGuid: string): void { + this._dataPulseProvider.unsubscribeBars(listenerGuid); + } + + protected _requestConfiguration(): Promise { + return this._send('config') + .catch((reason?: string | Error) => { + logMessage(`UdfCompatibleDatafeed: Cannot get datafeed configuration - use default, error=${getErrorMessage(reason)}`); + return null; + }); + } + + private _send(urlPath: string, params?: RequestParams): Promise { + return this._requester.sendRequest(this._datafeedURL, urlPath, params); + } + + private _setupWithConfiguration(configurationData: UdfCompatibleConfiguration): void { + this._configuration = configurationData; + + if (configurationData.exchanges === undefined) { + configurationData.exchanges = []; + } + + if (!configurationData.supports_search && !configurationData.supports_group_request) { + throw new Error('Unsupported datafeed configuration. Must either support search, or support group request'); + } + + if (configurationData.supports_group_request || !configurationData.supports_search) { + this._symbolsStorage = new SymbolsStorage(this._datafeedURL, configurationData.supported_resolutions || [], this._requester); + } + + logMessage(`UdfCompatibleDatafeed: Initialized with ${JSON.stringify(configurationData)}`); + } +} + +function defaultConfiguration(): UdfCompatibleConfiguration { + return { + supports_search: false, + supports_group_request: true, + supported_resolutions: ['1', '5', '15', '30', '60', '1D', '1W', '1M'], + supports_marks: false, + supports_timescale_marks: false, + }; +} diff --git a/static/Kline/datafeeds/udf/src/udf-compatible-datafeed.js b/static/Kline/datafeeds/udf/src/udf-compatible-datafeed.js new file mode 100644 index 0000000..9df87d6 --- /dev/null +++ b/static/Kline/datafeeds/udf/src/udf-compatible-datafeed.js @@ -0,0 +1,17 @@ +import * as tslib_1 from "tslib"; +import { UDFCompatibleDatafeedBase } from './udf-compatible-datafeed-base'; +import { QuotesProvider } from './quotes-provider'; +import { Requester } from './requester'; +var UDFCompatibleDatafeed = /** @class */ (function (_super) { + tslib_1.__extends(UDFCompatibleDatafeed, _super); + function UDFCompatibleDatafeed(datafeedURL, updateFrequency) { + if (updateFrequency === void 0) { updateFrequency = 10 * 1000; } + var _this = this; + var requester = new Requester(); + var quotesProvider = new QuotesProvider(datafeedURL, requester); + _this = _super.call(this, datafeedURL, quotesProvider, requester, updateFrequency) || this; + return _this; + } + return UDFCompatibleDatafeed; +}(UDFCompatibleDatafeedBase)); +export { UDFCompatibleDatafeed }; diff --git a/static/Kline/datafeeds/udf/src/udf-compatible-datafeed.ts b/static/Kline/datafeeds/udf/src/udf-compatible-datafeed.ts new file mode 100644 index 0000000..f13c589 --- /dev/null +++ b/static/Kline/datafeeds/udf/src/udf-compatible-datafeed.ts @@ -0,0 +1,11 @@ +import { UDFCompatibleDatafeedBase } from './udf-compatible-datafeed-base'; +import { QuotesProvider } from './quotes-provider'; +import { Requester } from './requester'; + +export class UDFCompatibleDatafeed extends UDFCompatibleDatafeedBase { + public constructor(datafeedURL: string, updateFrequency: number = 10 * 1000) { + const requester = new Requester(); + const quotesProvider = new QuotesProvider(datafeedURL, requester); + super(datafeedURL, quotesProvider, requester, updateFrequency); + } +} diff --git a/static/Kline/datafeeds/udf/tsconfig.json b/static/Kline/datafeeds/udf/tsconfig.json new file mode 100644 index 0000000..58c7322 --- /dev/null +++ b/static/Kline/datafeeds/udf/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "baseUrl": "./src", + "importHelpers": true, + "lib": [ + "dom", + "es2015.promise", + "es2015.symbol.wellknown", + "es5" + ], + "module": "es6", + "moduleResolution": "node", + "noEmitOnError": true, + "noFallthroughCasesInSwitch": true, + "noImplicitReturns": true, + "noUnusedLocals": true, + "outDir": "./lib/", + "sourceMap": false, + "strict": true, + "target": "es5" + }, + "include": [ + "./src/**/*.ts" + ] +} diff --git a/static/Kline/exchange.html b/static/Kline/exchange.html new file mode 100644 index 0000000..7858f46 --- /dev/null +++ b/static/Kline/exchange.html @@ -0,0 +1,41 @@ + + + + + + + Document + + + + + + + + \ No newline at end of file diff --git a/static/Kline/heat-map.html b/static/Kline/heat-map.html new file mode 100644 index 0000000..4983e54 --- /dev/null +++ b/static/Kline/heat-map.html @@ -0,0 +1,37 @@ + + + + + + + Document + + + + + + + \ No newline at end of file diff --git a/static/Kline/index.html b/static/Kline/index.html new file mode 100644 index 0000000..7841d69 --- /dev/null +++ b/static/Kline/index.html @@ -0,0 +1,79 @@ + + + + + + + + + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/static/Kline/jquery.min.js b/static/Kline/jquery.min.js new file mode 100644 index 0000000..a1c07fd --- /dev/null +++ b/static/Kline/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0code { + color: inherit +} + +kbd { + padding: .2rem .4rem; + font-size: 87.5%; + color: #fff; + background-color: #212529; + border-radius: .2rem +} + +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700 +} + +pre { + display: block; + font-size: 87.5%; + color: #212529 +} + +pre code { + font-size: inherit; + color: inherit; + word-break: normal +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll +} + +.container { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto +} + +@media (min-width:576px) { + .container { + max-width: 540px + } +} + +@media (min-width:768px) { + .container { + max-width: 720px + } +} + +@media (min-width:992px) { + .container { + max-width: 960px + } +} + +@media (min-width:1200px) { + .container { + max-width: 1140px + } +} + +.container-fluid, +.container-lg, +.container-md, +.container-sm, +.container-xl { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto +} + +@media (min-width:576px) { + .container, + .container-sm { + max-width: 540px + } +} + +@media (min-width:768px) { + .container, + .container-md, + .container-sm { + max-width: 720px + } +} + +@media (min-width:992px) { + .container, + .container-lg, + .container-md, + .container-sm { + max-width: 960px + } +} + +@media (min-width:1200px) { + .container, + .container-lg, + .container-md, + .container-sm, + .container-xl { + max-width: 1140px + } +} + +.row { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -15px; + margin-left: -15px +} + +.no-gutters { + margin-right: 0; + margin-left: 0 +} + +.no-gutters>.col, +.no-gutters>[class*=col-] { + padding-right: 0; + padding-left: 0 +} + +.col, +.col-1, +.col-10, +.col-11, +.col-12, +.col-2, +.col-3, +.col-4, +.col-5, +.col-6, +.col-7, +.col-8, +.col-9, +.col-auto, +.col-lg, +.col-lg-1, +.col-lg-10, +.col-lg-11, +.col-lg-12, +.col-lg-2, +.col-lg-3, +.col-lg-4, +.col-lg-5, +.col-lg-6, +.col-lg-7, +.col-lg-8, +.col-lg-9, +.col-lg-auto, +.col-md, +.col-md-1, +.col-md-10, +.col-md-11, +.col-md-12, +.col-md-2, +.col-md-3, +.col-md-4, +.col-md-5, +.col-md-6, +.col-md-7, +.col-md-8, +.col-md-9, +.col-md-auto, +.col-sm, +.col-sm-1, +.col-sm-10, +.col-sm-11, +.col-sm-12, +.col-sm-2, +.col-sm-3, +.col-sm-4, +.col-sm-5, +.col-sm-6, +.col-sm-7, +.col-sm-8, +.col-sm-9, +.col-sm-auto, +.col-xl, +.col-xl-1, +.col-xl-10, +.col-xl-11, +.col-xl-12, +.col-xl-2, +.col-xl-3, +.col-xl-4, +.col-xl-5, +.col-xl-6, +.col-xl-7, +.col-xl-8, +.col-xl-9, +.col-xl-auto { + position: relative; + width: 100%; + padding-right: 15px; + padding-left: 15px +} + +.col { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100% +} + +.row-cols-1>* { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% +} + +.row-cols-2>* { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% +} + +.row-cols-3>* { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333% +} + +.row-cols-4>* { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% +} + +.row-cols-5>* { + -ms-flex: 0 0 20%; + flex: 0 0 20%; + max-width: 20% +} + +.row-cols-6>* { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667% +} + +.col-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100% +} + +.col-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333% +} + +.col-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667% +} + +.col-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% +} + +.col-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333% +} + +.col-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667% +} + +.col-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% +} + +.col-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333% +} + +.col-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667% +} + +.col-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75% +} + +.col-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333% +} + +.col-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667% +} + +.col-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% +} + +.order-first { + -ms-flex-order: -1; + order: -1 +} + +.order-last { + -ms-flex-order: 13; + order: 13 +} + +.order-0 { + -ms-flex-order: 0; + order: 0 +} + +.order-1 { + -ms-flex-order: 1; + order: 1 +} + +.order-2 { + -ms-flex-order: 2; + order: 2 +} + +.order-3 { + -ms-flex-order: 3; + order: 3 +} + +.order-4 { + -ms-flex-order: 4; + order: 4 +} + +.order-5 { + -ms-flex-order: 5; + order: 5 +} + +.order-6 { + -ms-flex-order: 6; + order: 6 +} + +.order-7 { + -ms-flex-order: 7; + order: 7 +} + +.order-8 { + -ms-flex-order: 8; + order: 8 +} + +.order-9 { + -ms-flex-order: 9; + order: 9 +} + +.order-10 { + -ms-flex-order: 10; + order: 10 +} + +.order-11 { + -ms-flex-order: 11; + order: 11 +} + +.order-12 { + -ms-flex-order: 12; + order: 12 +} + +.offset-1 { + margin-left: 8.333333% +} + +.offset-2 { + margin-left: 16.666667% +} + +.offset-3 { + margin-left: 25% +} + +.offset-4 { + margin-left: 33.333333% +} + +.offset-5 { + margin-left: 41.666667% +} + +.offset-6 { + margin-left: 50% +} + +.offset-7 { + margin-left: 58.333333% +} + +.offset-8 { + margin-left: 66.666667% +} + +.offset-9 { + margin-left: 75% +} + +.offset-10 { + margin-left: 83.333333% +} + +.offset-11 { + margin-left: 91.666667% +} + +@media (min-width:576px) { + .col-sm { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100% + } + .row-cols-sm-1>* { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% + } + .row-cols-sm-2>* { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% + } + .row-cols-sm-3>* { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333% + } + .row-cols-sm-4>* { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% + } + .row-cols-sm-5>* { + -ms-flex: 0 0 20%; + flex: 0 0 20%; + max-width: 20% + } + .row-cols-sm-6>* { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667% + } + .col-sm-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100% + } + .col-sm-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333% + } + .col-sm-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667% + } + .col-sm-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% + } + .col-sm-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333% + } + .col-sm-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667% + } + .col-sm-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% + } + .col-sm-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333% + } + .col-sm-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667% + } + .col-sm-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75% + } + .col-sm-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333% + } + .col-sm-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667% + } + .col-sm-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% + } + .order-sm-first { + -ms-flex-order: -1; + order: -1 + } + .order-sm-last { + -ms-flex-order: 13; + order: 13 + } + .order-sm-0 { + -ms-flex-order: 0; + order: 0 + } + .order-sm-1 { + -ms-flex-order: 1; + order: 1 + } + .order-sm-2 { + -ms-flex-order: 2; + order: 2 + } + .order-sm-3 { + -ms-flex-order: 3; + order: 3 + } + .order-sm-4 { + -ms-flex-order: 4; + order: 4 + } + .order-sm-5 { + -ms-flex-order: 5; + order: 5 + } + .order-sm-6 { + -ms-flex-order: 6; + order: 6 + } + .order-sm-7 { + -ms-flex-order: 7; + order: 7 + } + .order-sm-8 { + -ms-flex-order: 8; + order: 8 + } + .order-sm-9 { + -ms-flex-order: 9; + order: 9 + } + .order-sm-10 { + -ms-flex-order: 10; + order: 10 + } + .order-sm-11 { + -ms-flex-order: 11; + order: 11 + } + .order-sm-12 { + -ms-flex-order: 12; + order: 12 + } + .offset-sm-0 { + margin-left: 0 + } + .offset-sm-1 { + margin-left: 8.333333% + } + .offset-sm-2 { + margin-left: 16.666667% + } + .offset-sm-3 { + margin-left: 25% + } + .offset-sm-4 { + margin-left: 33.333333% + } + .offset-sm-5 { + margin-left: 41.666667% + } + .offset-sm-6 { + margin-left: 50% + } + .offset-sm-7 { + margin-left: 58.333333% + } + .offset-sm-8 { + margin-left: 66.666667% + } + .offset-sm-9 { + margin-left: 75% + } + .offset-sm-10 { + margin-left: 83.333333% + } + .offset-sm-11 { + margin-left: 91.666667% + } +} + +@media (min-width:768px) { + .col-md { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100% + } + .row-cols-md-1>* { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% + } + .row-cols-md-2>* { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% + } + .row-cols-md-3>* { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333% + } + .row-cols-md-4>* { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% + } + .row-cols-md-5>* { + -ms-flex: 0 0 20%; + flex: 0 0 20%; + max-width: 20% + } + .row-cols-md-6>* { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667% + } + .col-md-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100% + } + .col-md-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333% + } + .col-md-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667% + } + .col-md-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% + } + .col-md-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333% + } + .col-md-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667% + } + .col-md-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% + } + .col-md-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333% + } + .col-md-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667% + } + .col-md-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75% + } + .col-md-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333% + } + .col-md-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667% + } + .col-md-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% + } + .order-md-first { + -ms-flex-order: -1; + order: -1 + } + .order-md-last { + -ms-flex-order: 13; + order: 13 + } + .order-md-0 { + -ms-flex-order: 0; + order: 0 + } + .order-md-1 { + -ms-flex-order: 1; + order: 1 + } + .order-md-2 { + -ms-flex-order: 2; + order: 2 + } + .order-md-3 { + -ms-flex-order: 3; + order: 3 + } + .order-md-4 { + -ms-flex-order: 4; + order: 4 + } + .order-md-5 { + -ms-flex-order: 5; + order: 5 + } + .order-md-6 { + -ms-flex-order: 6; + order: 6 + } + .order-md-7 { + -ms-flex-order: 7; + order: 7 + } + .order-md-8 { + -ms-flex-order: 8; + order: 8 + } + .order-md-9 { + -ms-flex-order: 9; + order: 9 + } + .order-md-10 { + -ms-flex-order: 10; + order: 10 + } + .order-md-11 { + -ms-flex-order: 11; + order: 11 + } + .order-md-12 { + -ms-flex-order: 12; + order: 12 + } + .offset-md-0 { + margin-left: 0 + } + .offset-md-1 { + margin-left: 8.333333% + } + .offset-md-2 { + margin-left: 16.666667% + } + .offset-md-3 { + margin-left: 25% + } + .offset-md-4 { + margin-left: 33.333333% + } + .offset-md-5 { + margin-left: 41.666667% + } + .offset-md-6 { + margin-left: 50% + } + .offset-md-7 { + margin-left: 58.333333% + } + .offset-md-8 { + margin-left: 66.666667% + } + .offset-md-9 { + margin-left: 75% + } + .offset-md-10 { + margin-left: 83.333333% + } + .offset-md-11 { + margin-left: 91.666667% + } +} + +@media (min-width:992px) { + .col-lg { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100% + } + .row-cols-lg-1>* { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% + } + .row-cols-lg-2>* { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% + } + .row-cols-lg-3>* { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333% + } + .row-cols-lg-4>* { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% + } + .row-cols-lg-5>* { + -ms-flex: 0 0 20%; + flex: 0 0 20%; + max-width: 20% + } + .row-cols-lg-6>* { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667% + } + .col-lg-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100% + } + .col-lg-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333% + } + .col-lg-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667% + } + .col-lg-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% + } + .col-lg-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333% + } + .col-lg-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667% + } + .col-lg-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% + } + .col-lg-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333% + } + .col-lg-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667% + } + .col-lg-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75% + } + .col-lg-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333% + } + .col-lg-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667% + } + .col-lg-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% + } + .order-lg-first { + -ms-flex-order: -1; + order: -1 + } + .order-lg-last { + -ms-flex-order: 13; + order: 13 + } + .order-lg-0 { + -ms-flex-order: 0; + order: 0 + } + .order-lg-1 { + -ms-flex-order: 1; + order: 1 + } + .order-lg-2 { + -ms-flex-order: 2; + order: 2 + } + .order-lg-3 { + -ms-flex-order: 3; + order: 3 + } + .order-lg-4 { + -ms-flex-order: 4; + order: 4 + } + .order-lg-5 { + -ms-flex-order: 5; + order: 5 + } + .order-lg-6 { + -ms-flex-order: 6; + order: 6 + } + .order-lg-7 { + -ms-flex-order: 7; + order: 7 + } + .order-lg-8 { + -ms-flex-order: 8; + order: 8 + } + .order-lg-9 { + -ms-flex-order: 9; + order: 9 + } + .order-lg-10 { + -ms-flex-order: 10; + order: 10 + } + .order-lg-11 { + -ms-flex-order: 11; + order: 11 + } + .order-lg-12 { + -ms-flex-order: 12; + order: 12 + } + .offset-lg-0 { + margin-left: 0 + } + .offset-lg-1 { + margin-left: 8.333333% + } + .offset-lg-2 { + margin-left: 16.666667% + } + .offset-lg-3 { + margin-left: 25% + } + .offset-lg-4 { + margin-left: 33.333333% + } + .offset-lg-5 { + margin-left: 41.666667% + } + .offset-lg-6 { + margin-left: 50% + } + .offset-lg-7 { + margin-left: 58.333333% + } + .offset-lg-8 { + margin-left: 66.666667% + } + .offset-lg-9 { + margin-left: 75% + } + .offset-lg-10 { + margin-left: 83.333333% + } + .offset-lg-11 { + margin-left: 91.666667% + } +} + +@media (min-width:1200px) { + .col-xl { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100% + } + .row-cols-xl-1>* { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% + } + .row-cols-xl-2>* { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% + } + .row-cols-xl-3>* { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333% + } + .row-cols-xl-4>* { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% + } + .row-cols-xl-5>* { + -ms-flex: 0 0 20%; + flex: 0 0 20%; + max-width: 20% + } + .row-cols-xl-6>* { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667% + } + .col-xl-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100% + } + .col-xl-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333% + } + .col-xl-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667% + } + .col-xl-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% + } + .col-xl-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333% + } + .col-xl-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667% + } + .col-xl-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% + } + .col-xl-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333% + } + .col-xl-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667% + } + .col-xl-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75% + } + .col-xl-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333% + } + .col-xl-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667% + } + .col-xl-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% + } + .order-xl-first { + -ms-flex-order: -1; + order: -1 + } + .order-xl-last { + -ms-flex-order: 13; + order: 13 + } + .order-xl-0 { + -ms-flex-order: 0; + order: 0 + } + .order-xl-1 { + -ms-flex-order: 1; + order: 1 + } + .order-xl-2 { + -ms-flex-order: 2; + order: 2 + } + .order-xl-3 { + -ms-flex-order: 3; + order: 3 + } + .order-xl-4 { + -ms-flex-order: 4; + order: 4 + } + .order-xl-5 { + -ms-flex-order: 5; + order: 5 + } + .order-xl-6 { + -ms-flex-order: 6; + order: 6 + } + .order-xl-7 { + -ms-flex-order: 7; + order: 7 + } + .order-xl-8 { + -ms-flex-order: 8; + order: 8 + } + .order-xl-9 { + -ms-flex-order: 9; + order: 9 + } + .order-xl-10 { + -ms-flex-order: 10; + order: 10 + } + .order-xl-11 { + -ms-flex-order: 11; + order: 11 + } + .order-xl-12 { + -ms-flex-order: 12; + order: 12 + } + .offset-xl-0 { + margin-left: 0 + } + .offset-xl-1 { + margin-left: 8.333333% + } + .offset-xl-2 { + margin-left: 16.666667% + } + .offset-xl-3 { + margin-left: 25% + } + .offset-xl-4 { + margin-left: 33.333333% + } + .offset-xl-5 { + margin-left: 41.666667% + } + .offset-xl-6 { + margin-left: 50% + } + .offset-xl-7 { + margin-left: 58.333333% + } + .offset-xl-8 { + margin-left: 66.666667% + } + .offset-xl-9 { + margin-left: 75% + } + .offset-xl-10 { + margin-left: 83.333333% + } + .offset-xl-11 { + margin-left: 91.666667% + } +} + +.table { + width: 100%; + margin-bottom: 1rem; + color: #212529 +} + +.table td, +.table th { + padding: .75rem; + vertical-align: top; + border-top: 1px solid #dee2e6 +} + +.table thead th { + vertical-align: bottom; + border-bottom: 2px solid #dee2e6 +} + +.table tbody+tbody { + border-top: 2px solid #dee2e6 +} + +.table-sm td, +.table-sm th { + padding: .3rem +} + +.table-bordered { + border: 1px solid #dee2e6 +} + +.table-bordered td, +.table-bordered th { + border: 1px solid #dee2e6 +} + +.table-bordered thead td, +.table-bordered thead th { + border-bottom-width: 2px +} + +.table-borderless tbody+tbody, +.table-borderless td, +.table-borderless th, +.table-borderless thead th { + border: 0 +} + +.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(0, 0, 0, .05) +} + +.table-hover tbody tr:hover { + color: #212529; + background-color: rgba(0, 0, 0, .075) +} + +.table-primary, +.table-primary>td, +.table-primary>th { + background-color: #b8daff +} + +.table-primary tbody+tbody, +.table-primary td, +.table-primary th, +.table-primary thead th { + border-color: #7abaff +} + +.table-hover .table-primary:hover { + background-color: #9fcdff +} + +.table-hover .table-primary:hover>td, +.table-hover .table-primary:hover>th { + background-color: #9fcdff +} + +.table-secondary, +.table-secondary>td, +.table-secondary>th { + background-color: #d6d8db +} + +.table-secondary tbody+tbody, +.table-secondary td, +.table-secondary th, +.table-secondary thead th { + border-color: #b3b7bb +} + +.table-hover .table-secondary:hover { + background-color: #c8cbcf +} + +.table-hover .table-secondary:hover>td, +.table-hover .table-secondary:hover>th { + background-color: #c8cbcf +} + +.table-success, +.table-success>td, +.table-success>th { + background-color: #c3e6cb +} + +.table-success tbody+tbody, +.table-success td, +.table-success th, +.table-success thead th { + border-color: #8fd19e +} + +.table-hover .table-success:hover { + background-color: #b1dfbb +} + +.table-hover .table-success:hover>td, +.table-hover .table-success:hover>th { + background-color: #b1dfbb +} + +.table-info, +.table-info>td, +.table-info>th { + background-color: #bee5eb +} + +.table-info tbody+tbody, +.table-info td, +.table-info th, +.table-info thead th { + border-color: #86cfda +} + +.table-hover .table-info:hover { + background-color: #abdde5 +} + +.table-hover .table-info:hover>td, +.table-hover .table-info:hover>th { + background-color: #abdde5 +} + +.table-warning, +.table-warning>td, +.table-warning>th { + background-color: #ffeeba +} + +.table-warning tbody+tbody, +.table-warning td, +.table-warning th, +.table-warning thead th { + border-color: #ffdf7e +} + +.table-hover .table-warning:hover { + background-color: #ffe8a1 +} + +.table-hover .table-warning:hover>td, +.table-hover .table-warning:hover>th { + background-color: #ffe8a1 +} + +.table-danger, +.table-danger>td, +.table-danger>th { + background-color: #f5c6cb +} + +.table-danger tbody+tbody, +.table-danger td, +.table-danger th, +.table-danger thead th { + border-color: #ed969e +} + +.table-hover .table-danger:hover { + background-color: #f1b0b7 +} + +.table-hover .table-danger:hover>td, +.table-hover .table-danger:hover>th { + background-color: #f1b0b7 +} + +.table-light, +.table-light>td, +.table-light>th { + background-color: #fdfdfe +} + +.table-light tbody+tbody, +.table-light td, +.table-light th, +.table-light thead th { + border-color: #fbfcfc +} + +.table-hover .table-light:hover { + background-color: #ececf6 +} + +.table-hover .table-light:hover>td, +.table-hover .table-light:hover>th { + background-color: #ececf6 +} + +.table-dark, +.table-dark>td, +.table-dark>th { + background-color: #c6c8ca +} + +.table-dark tbody+tbody, +.table-dark td, +.table-dark th, +.table-dark thead th { + border-color: #95999c +} + +.table-hover .table-dark:hover { + background-color: #b9bbbe +} + +.table-hover .table-dark:hover>td, +.table-hover .table-dark:hover>th { + background-color: #b9bbbe +} + +.table-active, +.table-active>td, +.table-active>th { + background-color: rgba(0, 0, 0, .075) +} + +.table-hover .table-active:hover { + background-color: rgba(0, 0, 0, .075) +} + +.table-hover .table-active:hover>td, +.table-hover .table-active:hover>th { + background-color: rgba(0, 0, 0, .075) +} + +.table .thead-dark th { + color: #fff; + background-color: #343a40; + border-color: #454d55 +} + +.table .thead-light th { + color: #495057; + background-color: #e9ecef; + border-color: #dee2e6 +} + +.table-dark { + color: #fff; + background-color: #343a40 +} + +.table-dark td, +.table-dark th, +.table-dark thead th { + border-color: #454d55 +} + +.table-dark.table-bordered { + border: 0 +} + +.table-dark.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(255, 255, 255, .05) +} + +.table-dark.table-hover tbody tr:hover { + color: #fff; + background-color: rgba(255, 255, 255, .075) +} + +@media (max-width:575.98px) { + .table-responsive-sm { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch + } + .table-responsive-sm>.table-bordered { + border: 0 + } +} + +@media (max-width:767.98px) { + .table-responsive-md { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch + } + .table-responsive-md>.table-bordered { + border: 0 + } +} + +@media (max-width:991.98px) { + .table-responsive-lg { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch + } + .table-responsive-lg>.table-bordered { + border: 0 + } +} + +@media (max-width:1199.98px) { + .table-responsive-xl { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch + } + .table-responsive-xl>.table-bordered { + border: 0 + } +} + +.table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch +} + +.table-responsive>.table-bordered { + border: 0 +} + +.form-control { + display: block; + width: 100%; + height: calc(1.5em + .75rem + 2px); + padding: .375rem .75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ced4da; + border-radius: .25rem; + transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out +} + +@media (prefers-reduced-motion:reduce) { + .form-control { + transition: none + } +} + +.form-control::-ms-expand { + background-color: transparent; + border: 0 +} + +.form-control:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #495057 +} + +.form-control:focus { + color: #495057; + background-color: #fff; + border-color: #80bdff; + outline: 0; + box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25) +} + +.form-control::-webkit-input-placeholder { + color: #6c757d; + opacity: 1 +} + +.form-control::-moz-placeholder { + color: #6c757d; + opacity: 1 +} + +.form-control:-ms-input-placeholder { + color: #6c757d; + opacity: 1 +} + +.form-control::-ms-input-placeholder { + color: #6c757d; + opacity: 1 +} + +.form-control::placeholder { + color: #6c757d; + opacity: 1 +} + +.form-control:disabled, +.form-control[readonly] { + background-color: #e9ecef; + opacity: 1 +} + +select.form-control:focus::-ms-value { + color: #495057; + background-color: #fff +} + +.form-control-file, +.form-control-range { + display: block; + width: 100% +} + +.col-form-label { + padding-top: calc(.375rem + 1px); + padding-bottom: calc(.375rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5 +} + +.col-form-label-lg { + padding-top: calc(.5rem + 1px); + padding-bottom: calc(.5rem + 1px); + font-size: 1.25rem; + line-height: 1.5 +} + +.col-form-label-sm { + padding-top: calc(.25rem + 1px); + padding-bottom: calc(.25rem + 1px); + font-size: .875rem; + line-height: 1.5 +} + +.form-control-plaintext { + display: block; + width: 100%; + padding: .375rem 0; + margin-bottom: 0; + font-size: 1rem; + line-height: 1.5; + color: #212529; + background-color: transparent; + border: solid transparent; + border-width: 1px 0 +} + +.form-control-plaintext.form-control-lg, +.form-control-plaintext.form-control-sm { + padding-right: 0; + padding-left: 0 +} + +.form-control-sm { + height: calc(1.5em + .5rem + 2px); + padding: .25rem .5rem; + font-size: .875rem; + line-height: 1.5; + border-radius: .2rem +} + +.form-control-lg { + height: calc(1.5em + 1rem + 2px); + padding: .5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: .3rem +} + +select.form-control[multiple], +select.form-control[size] { + height: auto +} + +textarea.form-control { + height: auto +} + +.form-group { + margin-bottom: 1rem +} + +.form-text { + display: block; + margin-top: .25rem +} + +.form-row { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -5px; + margin-left: -5px +} + +.form-row>.col, +.form-row>[class*=col-] { + padding-right: 5px; + padding-left: 5px +} + +.form-check { + position: relative; + display: block; + padding-left: 1.25rem +} + +.form-check-input { + position: absolute; + margin-top: .3rem; + margin-left: -1.25rem +} + +.form-check-input:disabled~.form-check-label, +.form-check-input[disabled]~.form-check-label { + color: #6c757d +} + +.form-check-label { + margin-bottom: 0 +} + +.form-check-inline { + display: -ms-inline-flexbox; + display: inline-flex; + -ms-flex-align: center; + align-items: center; + padding-left: 0; + margin-right: .75rem +} + +.form-check-inline .form-check-input { + position: static; + margin-top: 0; + margin-right: .3125rem; + margin-left: 0 +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: .25rem; + font-size: 80%; + color: #28a745 +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: .25rem .5rem; + margin-top: .1rem; + font-size: .875rem; + line-height: 1.5; + color: #fff; + background-color: rgba(40, 167, 69, .9); + border-radius: .25rem +} + +.is-valid~.valid-feedback, +.is-valid~.valid-tooltip, +.was-validated :valid~.valid-feedback, +.was-validated :valid~.valid-tooltip { + display: block +} + +.form-control.is-valid, +.was-validated .form-control:valid { + border-color: #28a745; + padding-right: calc(1.5em + .75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(.375em + .1875rem) center; + background-size: calc(.75em + .375rem) calc(.75em + .375rem) +} + +.form-control.is-valid:focus, +.was-validated .form-control:valid:focus { + border-color: #28a745; + box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25) +} + +.was-validated textarea.form-control:valid, +textarea.form-control.is-valid { + padding-right: calc(1.5em + .75rem); + background-position: top calc(.375em + .1875rem) right calc(.375em + .1875rem) +} + +.custom-select.is-valid, +.was-validated .custom-select:valid { + border-color: #28a745; + padding-right: calc(.75em + 2.3125rem); + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) +} + +.custom-select.is-valid:focus, +.was-validated .custom-select:valid:focus { + border-color: #28a745; + box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25) +} + +.form-check-input.is-valid~.form-check-label, +.was-validated .form-check-input:valid~.form-check-label { + color: #28a745 +} + +.form-check-input.is-valid~.valid-feedback, +.form-check-input.is-valid~.valid-tooltip, +.was-validated .form-check-input:valid~.valid-feedback, +.was-validated .form-check-input:valid~.valid-tooltip { + display: block +} + +.custom-control-input.is-valid~.custom-control-label, +.was-validated .custom-control-input:valid~.custom-control-label { + color: #28a745 +} + +.custom-control-input.is-valid~.custom-control-label::before, +.was-validated .custom-control-input:valid~.custom-control-label::before { + border-color: #28a745 +} + +.custom-control-input.is-valid:checked~.custom-control-label::before, +.was-validated .custom-control-input:valid:checked~.custom-control-label::before { + border-color: #34ce57; + background-color: #34ce57 +} + +.custom-control-input.is-valid:focus~.custom-control-label::before, +.was-validated .custom-control-input:valid:focus~.custom-control-label::before { + box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25) +} + +.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before, +.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before { + border-color: #28a745 +} + +.custom-file-input.is-valid~.custom-file-label, +.was-validated .custom-file-input:valid~.custom-file-label { + border-color: #28a745 +} + +.custom-file-input.is-valid:focus~.custom-file-label, +.was-validated .custom-file-input:valid:focus~.custom-file-label { + border-color: #28a745; + box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25) +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: .25rem; + font-size: 80%; + color: #dc3545 +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: .25rem .5rem; + margin-top: .1rem; + font-size: .875rem; + line-height: 1.5; + color: #fff; + background-color: rgba(220, 53, 69, .9); + border-radius: .25rem +} + +.is-invalid~.invalid-feedback, +.is-invalid~.invalid-tooltip, +.was-validated :invalid~.invalid-feedback, +.was-validated :invalid~.invalid-tooltip { + display: block +} + +.form-control.is-invalid, +.was-validated .form-control:invalid { + border-color: #dc3545; + padding-right: calc(1.5em + .75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(.375em + .1875rem) center; + background-size: calc(.75em + .375rem) calc(.75em + .375rem) +} + +.form-control.is-invalid:focus, +.was-validated .form-control:invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25) +} + +.was-validated textarea.form-control:invalid, +textarea.form-control.is-invalid { + padding-right: calc(1.5em + .75rem); + background-position: top calc(.375em + .1875rem) right calc(.375em + .1875rem) +} + +.custom-select.is-invalid, +.was-validated .custom-select:invalid { + border-color: #dc3545; + padding-right: calc(.75em + 2.3125rem); + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) +} + +.custom-select.is-invalid:focus, +.was-validated .custom-select:invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25) +} + +.form-check-input.is-invalid~.form-check-label, +.was-validated .form-check-input:invalid~.form-check-label { + color: #dc3545 +} + +.form-check-input.is-invalid~.invalid-feedback, +.form-check-input.is-invalid~.invalid-tooltip, +.was-validated .form-check-input:invalid~.invalid-feedback, +.was-validated .form-check-input:invalid~.invalid-tooltip { + display: block +} + +.custom-control-input.is-invalid~.custom-control-label, +.was-validated .custom-control-input:invalid~.custom-control-label { + color: #dc3545 +} + +.custom-control-input.is-invalid~.custom-control-label::before, +.was-validated .custom-control-input:invalid~.custom-control-label::before { + border-color: #dc3545 +} + +.custom-control-input.is-invalid:checked~.custom-control-label::before, +.was-validated .custom-control-input:invalid:checked~.custom-control-label::before { + border-color: #e4606d; + background-color: #e4606d +} + +.custom-control-input.is-invalid:focus~.custom-control-label::before, +.was-validated .custom-control-input:invalid:focus~.custom-control-label::before { + box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25) +} + +.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before, +.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before { + border-color: #dc3545 +} + +.custom-file-input.is-invalid~.custom-file-label, +.was-validated .custom-file-input:invalid~.custom-file-label { + border-color: #dc3545 +} + +.custom-file-input.is-invalid:focus~.custom-file-label, +.was-validated .custom-file-input:invalid:focus~.custom-file-label { + border-color: #dc3545; + box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25) +} + +.form-inline { + display: -ms-flexbox; + display: flex; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -ms-flex-align: center; + align-items: center +} + +.form-inline .form-check { + width: 100% +} + +@media (min-width:576px) { + .form-inline label { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + margin-bottom: 0 + } + .form-inline .form-group { + display: -ms-flexbox; + display: flex; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -ms-flex-align: center; + align-items: center; + margin-bottom: 0 + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle + } + .form-inline .form-control-plaintext { + display: inline-block + } + .form-inline .custom-select, + .form-inline .input-group { + width: auto + } + .form-inline .form-check { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + width: auto; + padding-left: 0 + } + .form-inline .form-check-input { + position: relative; + -ms-flex-negative: 0; + flex-shrink: 0; + margin-top: 0; + margin-right: .25rem; + margin-left: 0 + } + .form-inline .custom-control { + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center + } + .form-inline .custom-control-label { + margin-bottom: 0 + } +} + +.btn { + display: inline-block; + font-weight: 400; + color: #212529; + text-align: center; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: transparent; + border: 1px solid transparent; + padding: .375rem .75rem; + font-size: 1rem; + line-height: 1.5; + border-radius: .25rem; + transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out +} + +@media (prefers-reduced-motion:reduce) { + .btn { + transition: none + } +} + +.btn:hover { + color: #212529; + text-decoration: none +} + +.btn.focus, +.btn:focus { + outline: 0; + box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25) +} + +.btn.disabled, +.btn:disabled { + opacity: .65 +} + +a.btn.disabled, +fieldset:disabled a.btn { + pointer-events: none +} + +.btn-primary { + color: #fff; + background-color: #007bff; + border-color: #007bff +} + +.btn-primary:hover { + color: #fff; + background-color: #0069d9; + border-color: #0062cc +} + +.btn-primary.focus, +.btn-primary:focus { + color: #fff; + background-color: #0069d9; + border-color: #0062cc; + box-shadow: 0 0 0 .2rem rgba(38, 143, 255, .5) +} + +.btn-primary.disabled, +.btn-primary:disabled { + color: #fff; + background-color: #007bff; + border-color: #007bff +} + +.btn-primary:not(:disabled):not(.disabled).active, +.btn-primary:not(:disabled):not(.disabled):active, +.show>.btn-primary.dropdown-toggle { + color: #fff; + background-color: #0062cc; + border-color: #005cbf +} + +.btn-primary:not(:disabled):not(.disabled).active:focus, +.btn-primary:not(:disabled):not(.disabled):active:focus, +.show>.btn-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 .2rem rgba(38, 143, 255, .5) +} + +.btn-secondary { + color: #fff; + background-color: #6c757d; + border-color: #6c757d +} + +.btn-secondary:hover { + color: #fff; + background-color: #5a6268; + border-color: #545b62 +} + +.btn-secondary.focus, +.btn-secondary:focus { + color: #fff; + background-color: #5a6268; + border-color: #545b62; + box-shadow: 0 0 0 .2rem rgba(130, 138, 145, .5) +} + +.btn-secondary.disabled, +.btn-secondary:disabled { + color: #fff; + background-color: #6c757d; + border-color: #6c757d +} + +.btn-secondary:not(:disabled):not(.disabled).active, +.btn-secondary:not(:disabled):not(.disabled):active, +.show>.btn-secondary.dropdown-toggle { + color: #fff; + background-color: #545b62; + border-color: #4e555b +} + +.btn-secondary:not(:disabled):not(.disabled).active:focus, +.btn-secondary:not(:disabled):not(.disabled):active:focus, +.show>.btn-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 .2rem rgba(130, 138, 145, .5) +} + +.btn-success { + color: #fff; + background-color: #28a745; + border-color: #28a745 +} + +.btn-success:hover { + color: #fff; + background-color: #218838; + border-color: #1e7e34 +} + +.btn-success.focus, +.btn-success:focus { + color: #fff; + background-color: #218838; + border-color: #1e7e34; + box-shadow: 0 0 0 .2rem rgba(72, 180, 97, .5) +} + +.btn-success.disabled, +.btn-success:disabled { + color: #fff; + background-color: #28a745; + border-color: #28a745 +} + +.btn-success:not(:disabled):not(.disabled).active, +.btn-success:not(:disabled):not(.disabled):active, +.show>.btn-success.dropdown-toggle { + color: #fff; + background-color: #1e7e34; + border-color: #1c7430 +} + +.btn-success:not(:disabled):not(.disabled).active:focus, +.btn-success:not(:disabled):not(.disabled):active:focus, +.show>.btn-success.dropdown-toggle:focus { + box-shadow: 0 0 0 .2rem rgba(72, 180, 97, .5) +} + +.btn-info { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8 +} + +.btn-info:hover { + color: #fff; + background-color: #138496; + border-color: #117a8b +} + +.btn-info.focus, +.btn-info:focus { + color: #fff; + background-color: #138496; + border-color: #117a8b; + box-shadow: 0 0 0 .2rem rgba(58, 176, 195, .5) +} + +.btn-info.disabled, +.btn-info:disabled { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8 +} + +.btn-info:not(:disabled):not(.disabled).active, +.btn-info:not(:disabled):not(.disabled):active, +.show>.btn-info.dropdown-toggle { + color: #fff; + background-color: #117a8b; + border-color: #10707f +} + +.btn-info:not(:disabled):not(.disabled).active:focus, +.btn-info:not(:disabled):not(.disabled):active:focus, +.show>.btn-info.dropdown-toggle:focus { + box-shadow: 0 0 0 .2rem rgba(58, 176, 195, .5) +} + +.btn-warning { + color: #212529; + background-color: #ffc107; + border-color: #ffc107 +} + +.btn-warning:hover { + color: #212529; + background-color: #e0a800; + border-color: #d39e00 +} + +.btn-warning.focus, +.btn-warning:focus { + color: #212529; + background-color: #e0a800; + border-color: #d39e00; + box-shadow: 0 0 0 .2rem rgba(222, 170, 12, .5) +} + +.btn-warning.disabled, +.btn-warning:disabled { + color: #212529; + background-color: #ffc107; + border-color: #ffc107 +} + +.btn-warning:not(:disabled):not(.disabled).active, +.btn-warning:not(:disabled):not(.disabled):active, +.show>.btn-warning.dropdown-toggle { + color: #212529; + background-color: #d39e00; + border-color: #c69500 +} + +.btn-warning:not(:disabled):not(.disabled).active:focus, +.btn-warning:not(:disabled):not(.disabled):active:focus, +.show>.btn-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 .2rem rgba(222, 170, 12, .5) +} + +.btn-danger { + color: #fff; + background-color: #dc3545; + border-color: #dc3545 +} + +.btn-danger:hover { + color: #fff; + background-color: #c82333; + border-color: #bd2130 +} + +.btn-danger.focus, +.btn-danger:focus { + color: #fff; + background-color: #c82333; + border-color: #bd2130; + box-shadow: 0 0 0 .2rem rgba(225, 83, 97, .5) +} + +.btn-danger.disabled, +.btn-danger:disabled { + color: #fff; + background-color: #dc3545; + border-color: #dc3545 +} + +.btn-danger:not(:disabled):not(.disabled).active, +.btn-danger:not(:disabled):not(.disabled):active, +.show>.btn-danger.dropdown-toggle { + color: #fff; + background-color: #bd2130; + border-color: #b21f2d +} + +.btn-danger:not(:disabled):not(.disabled).active:focus, +.btn-danger:not(:disabled):not(.disabled):active:focus, +.show>.btn-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 .2rem rgba(225, 83, 97, .5) +} + +.btn-light { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa +} + +.btn-light:hover { + color: #212529; + background-color: #e2e6ea; + border-color: #dae0e5 +} + +.btn-light.focus, +.btn-light:focus { + color: #212529; + background-color: #e2e6ea; + border-color: #dae0e5; + box-shadow: 0 0 0 .2rem rgba(216, 217, 219, .5) +} + +.btn-light.disabled, +.btn-light:disabled { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa +} + +.btn-light:not(:disabled):not(.disabled).active, +.btn-light:not(:disabled):not(.disabled):active, +.show>.btn-light.dropdown-toggle { + color: #212529; + background-color: #dae0e5; + border-color: #d3d9df +} + +.btn-light:not(:disabled):not(.disabled).active:focus, +.btn-light:not(:disabled):not(.disabled):active:focus, +.show>.btn-light.dropdown-toggle:focus { + box-shadow: 0 0 0 .2rem rgba(216, 217, 219, .5) +} + +.btn-dark { + color: #fff; + background-color: #343a40; + border-color: #343a40 +} + +.btn-dark:hover { + color: #fff; + background-color: #23272b; + border-color: #1d2124 +} + +.btn-dark.focus, +.btn-dark:focus { + color: #fff; + background-color: #23272b; + border-color: #1d2124; + box-shadow: 0 0 0 .2rem rgba(82, 88, 93, .5) +} + +.btn-dark.disabled, +.btn-dark:disabled { + color: #fff; + background-color: #343a40; + border-color: #343a40 +} + +.btn-dark:not(:disabled):not(.disabled).active, +.btn-dark:not(:disabled):not(.disabled):active, +.show>.btn-dark.dropdown-toggle { + color: #fff; + background-color: #1d2124; + border-color: #171a1d +} + +.btn-dark:not(:disabled):not(.disabled).active:focus, +.btn-dark:not(:disabled):not(.disabled):active:focus, +.show>.btn-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 .2rem rgba(82, 88, 93, .5) +} + +.btn-outline-primary { + color: #007bff; + border-color: #007bff +} + +.btn-outline-primary:hover { + color: #fff; + background-color: #007bff; + border-color: #007bff +} + +.btn-outline-primary.focus, +.btn-outline-primary:focus { + box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .5) +} + +.btn-outline-primary.disabled, +.btn-outline-primary:disabled { + color: #007bff; + background-color: transparent +} + +.btn-outline-primary:not(:disabled):not(.disabled).active, +.btn-outline-primary:not(:disabled):not(.disabled):active, +.show>.btn-outline-primary.dropdown-toggle { + color: #fff; + background-color: #007bff; + border-color: #007bff +} + +.btn-outline-primary:not(:disabled):not(.disabled).active:focus, +.btn-outline-primary:not(:disabled):not(.disabled):active:focus, +.show>.btn-outline-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .5) +} + +.btn-outline-secondary { + color: #6c757d; + border-color: #6c757d +} + +.btn-outline-secondary:hover { + color: #fff; + background-color: #6c757d; + border-color: #6c757d +} + +.btn-outline-secondary.focus, +.btn-outline-secondary:focus { + box-shadow: 0 0 0 .2rem rgba(108, 117, 125, .5) +} + +.btn-outline-secondary.disabled, +.btn-outline-secondary:disabled { + color: #6c757d; + background-color: transparent +} + +.btn-outline-secondary:not(:disabled):not(.disabled).active, +.btn-outline-secondary:not(:disabled):not(.disabled):active, +.show>.btn-outline-secondary.dropdown-toggle { + color: #fff; + background-color: #6c757d; + border-color: #6c757d +} + +.btn-outline-secondary:not(:disabled):not(.disabled).active:focus, +.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, +.show>.btn-outline-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 .2rem rgba(108, 117, 125, .5) +} + +.btn-outline-success { + color: #28a745; + border-color: #28a745 +} + +.btn-outline-success:hover { + color: #fff; + background-color: #28a745; + border-color: #28a745 +} + +.btn-outline-success.focus, +.btn-outline-success:focus { + box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .5) +} + +.btn-outline-success.disabled, +.btn-outline-success:disabled { + color: #28a745; + background-color: transparent +} + +.btn-outline-success:not(:disabled):not(.disabled).active, +.btn-outline-success:not(:disabled):not(.disabled):active, +.show>.btn-outline-success.dropdown-toggle { + color: #fff; + background-color: #28a745; + border-color: #28a745 +} + +.btn-outline-success:not(:disabled):not(.disabled).active:focus, +.btn-outline-success:not(:disabled):not(.disabled):active:focus, +.show>.btn-outline-success.dropdown-toggle:focus { + box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .5) +} + +.btn-outline-info { + color: #17a2b8; + border-color: #17a2b8 +} + +.btn-outline-info:hover { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8 +} + +.btn-outline-info.focus, +.btn-outline-info:focus { + box-shadow: 0 0 0 .2rem rgba(23, 162, 184, .5) +} + +.btn-outline-info.disabled, +.btn-outline-info:disabled { + color: #17a2b8; + background-color: transparent +} + +.btn-outline-info:not(:disabled):not(.disabled).active, +.btn-outline-info:not(:disabled):not(.disabled):active, +.show>.btn-outline-info.dropdown-toggle { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8 +} + +.btn-outline-info:not(:disabled):not(.disabled).active:focus, +.btn-outline-info:not(:disabled):not(.disabled):active:focus, +.show>.btn-outline-info.dropdown-toggle:focus { + box-shadow: 0 0 0 .2rem rgba(23, 162, 184, .5) +} + +.btn-outline-warning { + color: #ffc107; + border-color: #ffc107 +} + +.btn-outline-warning:hover { + color: #212529; + background-color: #ffc107; + border-color: #ffc107 +} + +.btn-outline-warning.focus, +.btn-outline-warning:focus { + box-shadow: 0 0 0 .2rem rgba(255, 193, 7, .5) +} + +.btn-outline-warning.disabled, +.btn-outline-warning:disabled { + color: #ffc107; + background-color: transparent +} + +.btn-outline-warning:not(:disabled):not(.disabled).active, +.btn-outline-warning:not(:disabled):not(.disabled):active, +.show>.btn-outline-warning.dropdown-toggle { + color: #212529; + background-color: #ffc107; + border-color: #ffc107 +} + +.btn-outline-warning:not(:disabled):not(.disabled).active:focus, +.btn-outline-warning:not(:disabled):not(.disabled):active:focus, +.show>.btn-outline-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 .2rem rgba(255, 193, 7, .5) +} + +.btn-outline-danger { + color: #dc3545; + border-color: #dc3545 +} + +.btn-outline-danger:hover { + color: #fff; + background-color: #dc3545; + border-color: #dc3545 +} + +.btn-outline-danger.focus, +.btn-outline-danger:focus { + box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .5) +} + +.btn-outline-danger.disabled, +.btn-outline-danger:disabled { + color: #dc3545; + background-color: transparent +} + +.btn-outline-danger:not(:disabled):not(.disabled).active, +.btn-outline-danger:not(:disabled):not(.disabled):active, +.show>.btn-outline-danger.dropdown-toggle { + color: #fff; + background-color: #dc3545; + border-color: #dc3545 +} + +.btn-outline-danger:not(:disabled):not(.disabled).active:focus, +.btn-outline-danger:not(:disabled):not(.disabled):active:focus, +.show>.btn-outline-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .5) +} + +.btn-outline-light { + color: #f8f9fa; + border-color: #f8f9fa +} + +.btn-outline-light:hover { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa +} + +.btn-outline-light.focus, +.btn-outline-light:focus { + box-shadow: 0 0 0 .2rem rgba(248, 249, 250, .5) +} + +.btn-outline-light.disabled, +.btn-outline-light:disabled { + color: #f8f9fa; + background-color: transparent +} + +.btn-outline-light:not(:disabled):not(.disabled).active, +.btn-outline-light:not(:disabled):not(.disabled):active, +.show>.btn-outline-light.dropdown-toggle { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa +} + +.btn-outline-light:not(:disabled):not(.disabled).active:focus, +.btn-outline-light:not(:disabled):not(.disabled):active:focus, +.show>.btn-outline-light.dropdown-toggle:focus { + box-shadow: 0 0 0 .2rem rgba(248, 249, 250, .5) +} + +.btn-outline-dark { + color: #343a40; + border-color: #343a40 +} + +.btn-outline-dark:hover { + color: #fff; + background-color: #343a40; + border-color: #343a40 +} + +.btn-outline-dark.focus, +.btn-outline-dark:focus { + box-shadow: 0 0 0 .2rem rgba(52, 58, 64, .5) +} + +.btn-outline-dark.disabled, +.btn-outline-dark:disabled { + color: #343a40; + background-color: transparent +} + +.btn-outline-dark:not(:disabled):not(.disabled).active, +.btn-outline-dark:not(:disabled):not(.disabled):active, +.show>.btn-outline-dark.dropdown-toggle { + color: #fff; + background-color: #343a40; + border-color: #343a40 +} + +.btn-outline-dark:not(:disabled):not(.disabled).active:focus, +.btn-outline-dark:not(:disabled):not(.disabled):active:focus, +.show>.btn-outline-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 .2rem rgba(52, 58, 64, .5) +} + +.btn-link { + font-weight: 400; + color: #007bff; + text-decoration: none +} + +.btn-link:hover { + color: #0056b3; + text-decoration: underline +} + +.btn-link.focus, +.btn-link:focus { + text-decoration: underline; + box-shadow: none +} + +.btn-link.disabled, +.btn-link:disabled { + color: #6c757d; + pointer-events: none +} + +.btn-group-lg>.btn, +.btn-lg { + padding: .5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: .3rem +} + +.btn-group-sm>.btn, +.btn-sm { + padding: .25rem .5rem; + font-size: .875rem; + line-height: 1.5; + border-radius: .2rem +} + +.btn-block { + display: block; + width: 100% +} + +.btn-block+.btn-block { + margin-top: .5rem +} + +input[type=button].btn-block, +input[type=reset].btn-block, +input[type=submit].btn-block { + width: 100% +} + +.fade { + transition: opacity .15s linear +} + +@media (prefers-reduced-motion:reduce) { + .fade { + transition: none + } +} + +.fade:not(.show) { + opacity: 0 +} + +.collapse:not(.show) { + display: none +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + transition: height .35s ease +} + +@media (prefers-reduced-motion:reduce) { + .collapsing { + transition: none + } +} + +.dropdown, +.dropleft, +.dropright, +.dropup { + position: relative +} + +.dropdown-toggle { + white-space: nowrap +} + +.dropdown-toggle::after { + display: inline-block; + margin-left: .255em; + vertical-align: .255em; + content: ""; + border-top: .3em solid; + border-right: .3em solid transparent; + border-bottom: 0; + border-left: .3em solid transparent +} + +.dropdown-toggle:empty::after { + margin-left: 0 +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 10rem; + padding: .5rem 0; + margin: .125rem 0 0; + font-size: 1rem; + color: #212529; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: .25rem +} + +.dropdown-menu-left { + right: auto; + left: 0 +} + +.dropdown-menu-right { + right: 0; + left: auto +} + +@media (min-width:576px) { + .dropdown-menu-sm-left { + right: auto; + left: 0 + } + .dropdown-menu-sm-right { + right: 0; + left: auto + } +} + +@media (min-width:768px) { + .dropdown-menu-md-left { + right: auto; + left: 0 + } + .dropdown-menu-md-right { + right: 0; + left: auto + } +} + +@media (min-width:992px) { + .dropdown-menu-lg-left { + right: auto; + left: 0 + } + .dropdown-menu-lg-right { + right: 0; + left: auto + } +} + +@media (min-width:1200px) { + .dropdown-menu-xl-left { + right: auto; + left: 0 + } + .dropdown-menu-xl-right { + right: 0; + left: auto + } +} + +.dropup .dropdown-menu { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: .125rem +} + +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: .255em; + vertical-align: .255em; + content: ""; + border-top: 0; + border-right: .3em solid transparent; + border-bottom: .3em solid; + border-left: .3em solid transparent +} + +.dropup .dropdown-toggle:empty::after { + margin-left: 0 +} + +.dropright .dropdown-menu { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: .125rem +} + +.dropright .dropdown-toggle::after { + display: inline-block; + margin-left: .255em; + vertical-align: .255em; + content: ""; + border-top: .3em solid transparent; + border-right: 0; + border-bottom: .3em solid transparent; + border-left: .3em solid +} + +.dropright .dropdown-toggle:empty::after { + margin-left: 0 +} + +.dropright .dropdown-toggle::after { + vertical-align: 0 +} + +.dropleft .dropdown-menu { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: .125rem +} + +.dropleft .dropdown-toggle::after { + display: inline-block; + margin-left: .255em; + vertical-align: .255em; + content: "" +} + +.dropleft .dropdown-toggle::after { + display: none +} + +.dropleft .dropdown-toggle::before { + display: inline-block; + margin-right: .255em; + vertical-align: .255em; + content: ""; + border-top: .3em solid transparent; + border-right: .3em solid; + border-bottom: .3em solid transparent +} + +.dropleft .dropdown-toggle:empty::after { + margin-left: 0 +} + +.dropleft .dropdown-toggle::before { + vertical-align: 0 +} + +.dropdown-menu[x-placement^=bottom], +.dropdown-menu[x-placement^=left], +.dropdown-menu[x-placement^=right], +.dropdown-menu[x-placement^=top] { + right: auto; + bottom: auto +} + +.dropdown-divider { + height: 0; + margin: .5rem 0; + overflow: hidden; + border-top: 1px solid #e9ecef +} + +.dropdown-item { + display: block; + width: 100%; + padding: .25rem 1.5rem; + clear: both; + font-weight: 400; + color: #212529; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0 +} + +.dropdown-item:focus, +.dropdown-item:hover { + color: #16181b; + text-decoration: none; + background-color: #f8f9fa +} + +.dropdown-item.active, +.dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #007bff +} + +.dropdown-item.disabled, +.dropdown-item:disabled { + color: #6c757d; + pointer-events: none; + background-color: transparent +} + +.dropdown-menu.show { + display: block +} + +.dropdown-header { + display: block; + padding: .5rem 1.5rem; + margin-bottom: 0; + font-size: .875rem; + color: #6c757d; + white-space: nowrap +} + +.dropdown-item-text { + display: block; + padding: .25rem 1.5rem; + color: #212529 +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: -ms-inline-flexbox; + display: inline-flex; + vertical-align: middle +} + +.btn-group-vertical>.btn, +.btn-group>.btn { + position: relative; + -ms-flex: 1 1 auto; + flex: 1 1 auto +} + +.btn-group-vertical>.btn:hover, +.btn-group>.btn:hover { + z-index: 1 +} + +.btn-group-vertical>.btn.active, +.btn-group-vertical>.btn:active, +.btn-group-vertical>.btn:focus, +.btn-group>.btn.active, +.btn-group>.btn:active, +.btn-group>.btn:focus { + z-index: 1 +} + +.btn-toolbar { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-pack: start; + justify-content: flex-start +} + +.btn-toolbar .input-group { + width: auto +} + +.btn-group>.btn-group:not(:first-child), +.btn-group>.btn:not(:first-child) { + margin-left: -1px +} + +.btn-group>.btn-group:not(:last-child)>.btn, +.btn-group>.btn:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.btn-group>.btn-group:not(:first-child)>.btn, +.btn-group>.btn:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.dropdown-toggle-split { + padding-right: .5625rem; + padding-left: .5625rem +} + +.dropdown-toggle-split::after, +.dropright .dropdown-toggle-split::after, +.dropup .dropdown-toggle-split::after { + margin-left: 0 +} + +.dropleft .dropdown-toggle-split::before { + margin-right: 0 +} + +.btn-group-sm>.btn+.dropdown-toggle-split, +.btn-sm+.dropdown-toggle-split { + padding-right: .375rem; + padding-left: .375rem +} + +.btn-group-lg>.btn+.dropdown-toggle-split, +.btn-lg+.dropdown-toggle-split { + padding-right: .75rem; + padding-left: .75rem +} + +.btn-group-vertical { + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: start; + align-items: flex-start; + -ms-flex-pack: center; + justify-content: center +} + +.btn-group-vertical>.btn, +.btn-group-vertical>.btn-group { + width: 100% +} + +.btn-group-vertical>.btn-group:not(:first-child), +.btn-group-vertical>.btn:not(:first-child) { + margin-top: -1px +} + +.btn-group-vertical>.btn-group:not(:last-child)>.btn, +.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle) { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0 +} + +.btn-group-vertical>.btn-group:not(:first-child)>.btn, +.btn-group-vertical>.btn:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0 +} + +.btn-group-toggle>.btn, +.btn-group-toggle>.btn-group>.btn { + margin-bottom: 0 +} + +.btn-group-toggle>.btn input[type=checkbox], +.btn-group-toggle>.btn input[type=radio], +.btn-group-toggle>.btn-group>.btn input[type=checkbox], +.btn-group-toggle>.btn-group>.btn input[type=radio] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none +} + +.input-group { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: stretch; + align-items: stretch; + width: 100% +} + +.input-group>.custom-file, +.input-group>.custom-select, +.input-group>.form-control, +.input-group>.form-control-plaintext { + position: relative; + -ms-flex: 1 1 0%; + flex: 1 1 0%; + min-width: 0; + margin-bottom: 0 +} + +.input-group>.custom-file+.custom-file, +.input-group>.custom-file+.custom-select, +.input-group>.custom-file+.form-control, +.input-group>.custom-select+.custom-file, +.input-group>.custom-select+.custom-select, +.input-group>.custom-select+.form-control, +.input-group>.form-control+.custom-file, +.input-group>.form-control+.custom-select, +.input-group>.form-control+.form-control, +.input-group>.form-control-plaintext+.custom-file, +.input-group>.form-control-plaintext+.custom-select, +.input-group>.form-control-plaintext+.form-control { + margin-left: -1px +} + +.input-group>.custom-file .custom-file-input:focus~.custom-file-label, +.input-group>.custom-select:focus, +.input-group>.form-control:focus { + z-index: 3 +} + +.input-group>.custom-file .custom-file-input:focus { + z-index: 4 +} + +.input-group>.custom-select:not(:last-child), +.input-group>.form-control:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.input-group>.custom-select:not(:first-child), +.input-group>.form-control:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.input-group>.custom-file { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center +} + +.input-group>.custom-file:not(:last-child) .custom-file-label, +.input-group>.custom-file:not(:last-child) .custom-file-label::after { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.input-group>.custom-file:not(:first-child) .custom-file-label { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.input-group-append, +.input-group-prepend { + display: -ms-flexbox; + display: flex +} + +.input-group-append .btn, +.input-group-prepend .btn { + position: relative; + z-index: 2 +} + +.input-group-append .btn:focus, +.input-group-prepend .btn:focus { + z-index: 3 +} + +.input-group-append .btn+.btn, +.input-group-append .btn+.input-group-text, +.input-group-append .input-group-text+.btn, +.input-group-append .input-group-text+.input-group-text, +.input-group-prepend .btn+.btn, +.input-group-prepend .btn+.input-group-text, +.input-group-prepend .input-group-text+.btn, +.input-group-prepend .input-group-text+.input-group-text { + margin-left: -1px +} + +.input-group-prepend { + margin-right: -1px +} + +.input-group-append { + margin-left: -1px +} + +.input-group-text { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + padding: .375rem .75rem; + margin-bottom: 0; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + text-align: center; + white-space: nowrap; + background-color: #e9ecef; + border: 1px solid #ced4da; + border-radius: .25rem +} + +.input-group-text input[type=checkbox], +.input-group-text input[type=radio] { + margin-top: 0 +} + +.input-group-lg>.custom-select, +.input-group-lg>.form-control:not(textarea) { + height: calc(1.5em + 1rem + 2px) +} + +.input-group-lg>.custom-select, +.input-group-lg>.form-control, +.input-group-lg>.input-group-append>.btn, +.input-group-lg>.input-group-append>.input-group-text, +.input-group-lg>.input-group-prepend>.btn, +.input-group-lg>.input-group-prepend>.input-group-text { + padding: .5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: .3rem +} + +.input-group-sm>.custom-select, +.input-group-sm>.form-control:not(textarea) { + height: calc(1.5em + .5rem + 2px) +} + +.input-group-sm>.custom-select, +.input-group-sm>.form-control, +.input-group-sm>.input-group-append>.btn, +.input-group-sm>.input-group-append>.input-group-text, +.input-group-sm>.input-group-prepend>.btn, +.input-group-sm>.input-group-prepend>.input-group-text { + padding: .25rem .5rem; + font-size: .875rem; + line-height: 1.5; + border-radius: .2rem +} + +.input-group-lg>.custom-select, +.input-group-sm>.custom-select { + padding-right: 1.75rem +} + +.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle), +.input-group>.input-group-append:last-child>.input-group-text:not(:last-child), +.input-group>.input-group-append:not(:last-child)>.btn, +.input-group>.input-group-append:not(:last-child)>.input-group-text, +.input-group>.input-group-prepend>.btn, +.input-group>.input-group-prepend>.input-group-text { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.input-group>.input-group-append>.btn, +.input-group>.input-group-append>.input-group-text, +.input-group>.input-group-prepend:first-child>.btn:not(:first-child), +.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child), +.input-group>.input-group-prepend:not(:first-child)>.btn, +.input-group>.input-group-prepend:not(:first-child)>.input-group-text { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-control { + position: relative; + display: block; + min-height: 1.5rem; + padding-left: 1.5rem +} + +.custom-control-inline { + display: -ms-inline-flexbox; + display: inline-flex; + margin-right: 1rem +} + +.custom-control-input { + position: absolute; + left: 0; + z-index: -1; + width: 1rem; + height: 1.25rem; + opacity: 0 +} + +.custom-control-input:checked~.custom-control-label::before { + color: #fff; + border-color: #007bff; + background-color: #007bff +} + +.custom-control-input:focus~.custom-control-label::before { + box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25) +} + +.custom-control-input:focus:not(:checked)~.custom-control-label::before { + border-color: #80bdff +} + +.custom-control-input:not(:disabled):active~.custom-control-label::before { + color: #fff; + background-color: #b3d7ff; + border-color: #b3d7ff +} + +.custom-control-input:disabled~.custom-control-label, +.custom-control-input[disabled]~.custom-control-label { + color: #6c757d +} + +.custom-control-input:disabled~.custom-control-label::before, +.custom-control-input[disabled]~.custom-control-label::before { + background-color: #e9ecef +} + +.custom-control-label { + position: relative; + margin-bottom: 0; + vertical-align: top +} + +.custom-control-label::before { + position: absolute; + top: .25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + content: ""; + background-color: #fff; + border: #adb5bd solid 1px +} + +.custom-control-label::after { + position: absolute; + top: .25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + content: ""; + background: no-repeat 50%/50% 50% +} + +.custom-checkbox .custom-control-label::before { + border-radius: .25rem +} + +.custom-checkbox .custom-control-input:checked~.custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e") +} + +.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before { + border-color: #007bff; + background-color: #007bff +} + +.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e") +} + +.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before { + background-color: rgba(0, 123, 255, .5) +} + +.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before { + background-color: rgba(0, 123, 255, .5) +} + +.custom-radio .custom-control-label::before { + border-radius: 50% +} + +.custom-radio .custom-control-input:checked~.custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e") +} + +.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before { + background-color: rgba(0, 123, 255, .5) +} + +.custom-switch { + padding-left: 2.25rem +} + +.custom-switch .custom-control-label::before { + left: -2.25rem; + width: 1.75rem; + pointer-events: all; + border-radius: .5rem +} + +.custom-switch .custom-control-label::after { + top: calc(.25rem + 2px); + left: calc(-2.25rem + 2px); + width: calc(1rem - 4px); + height: calc(1rem - 4px); + background-color: #adb5bd; + border-radius: .5rem; + transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, -webkit-transform .15s ease-in-out; + transition: transform .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; + transition: transform .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, -webkit-transform .15s ease-in-out +} + +@media (prefers-reduced-motion:reduce) { + .custom-switch .custom-control-label::after { + transition: none + } +} + +.custom-switch .custom-control-input:checked~.custom-control-label::after { + background-color: #fff; + -webkit-transform: translateX(.75rem); + transform: translateX(.75rem) +} + +.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before { + background-color: rgba(0, 123, 255, .5) +} + +.custom-select { + display: inline-block; + width: 100%; + height: calc(1.5em + .75rem + 2px); + padding: .375rem 1.75rem .375rem .75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + vertical-align: middle; + background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px; + border: 1px solid #ced4da; + border-radius: .25rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none +} + +.custom-select:focus { + border-color: #80bdff; + outline: 0; + box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25) +} + +.custom-select:focus::-ms-value { + color: #495057; + background-color: #fff +} + +.custom-select[multiple], +.custom-select[size]:not([size="1"]) { + height: auto; + padding-right: .75rem; + background-image: none +} + +.custom-select:disabled { + color: #6c757d; + background-color: #e9ecef +} + +.custom-select::-ms-expand { + display: none +} + +.custom-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #495057 +} + +.custom-select-sm { + height: calc(1.5em + .5rem + 2px); + padding-top: .25rem; + padding-bottom: .25rem; + padding-left: .5rem; + font-size: .875rem +} + +.custom-select-lg { + height: calc(1.5em + 1rem + 2px); + padding-top: .5rem; + padding-bottom: .5rem; + padding-left: 1rem; + font-size: 1.25rem +} + +.custom-file { + position: relative; + display: inline-block; + width: 100%; + height: calc(1.5em + .75rem + 2px); + margin-bottom: 0 +} + +.custom-file-input { + position: relative; + z-index: 2; + width: 100%; + height: calc(1.5em + .75rem + 2px); + margin: 0; + opacity: 0 +} + +.custom-file-input:focus~.custom-file-label { + border-color: #80bdff; + box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25) +} + +.custom-file-input:disabled~.custom-file-label, +.custom-file-input[disabled]~.custom-file-label { + background-color: #e9ecef +} + +.custom-file-input:lang(en)~.custom-file-label::after { + content: "Browse" +} + +.custom-file-input~.custom-file-label[data-browse]::after { + content: attr(data-browse) +} + +.custom-file-label { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 1; + height: calc(1.5em + .75rem + 2px); + padding: .375rem .75rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + background-color: #fff; + border: 1px solid #ced4da; + border-radius: .25rem +} + +.custom-file-label::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + z-index: 3; + display: block; + height: calc(1.5em + .75rem); + padding: .375rem .75rem; + line-height: 1.5; + color: #495057; + content: "Browse"; + background-color: #e9ecef; + border-left: inherit; + border-radius: 0 .25rem .25rem 0 +} + +.custom-range { + width: 100%; + height: 1.4rem; + padding: 0; + background-color: transparent; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none +} + +.custom-range:focus { + outline: 0 +} + +.custom-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 .2rem rgba(0, 123, 255, .25) +} + +.custom-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 .2rem rgba(0, 123, 255, .25) +} + +.custom-range:focus::-ms-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 .2rem rgba(0, 123, 255, .25) +} + +.custom-range::-moz-focus-outer { + border: 0 +} + +.custom-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -.25rem; + background-color: #007bff; + border: 0; + border-radius: 1rem; + -webkit-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; + transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; + -webkit-appearance: none; + appearance: none +} + +@media (prefers-reduced-motion:reduce) { + .custom-range::-webkit-slider-thumb { + -webkit-transition: none; + transition: none + } +} + +.custom-range::-webkit-slider-thumb:active { + background-color: #b3d7ff +} + +.custom-range::-webkit-slider-runnable-track { + width: 100%; + height: .5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem +} + +.custom-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #007bff; + border: 0; + border-radius: 1rem; + -moz-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; + transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; + -moz-appearance: none; + appearance: none +} + +@media (prefers-reduced-motion:reduce) { + .custom-range::-moz-range-thumb { + -moz-transition: none; + transition: none + } +} + +.custom-range::-moz-range-thumb:active { + background-color: #b3d7ff +} + +.custom-range::-moz-range-track { + width: 100%; + height: .5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem +} + +.custom-range::-ms-thumb { + width: 1rem; + height: 1rem; + margin-top: 0; + margin-right: .2rem; + margin-left: .2rem; + background-color: #007bff; + border: 0; + border-radius: 1rem; + -ms-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; + transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; + appearance: none +} + +@media (prefers-reduced-motion:reduce) { + .custom-range::-ms-thumb { + -ms-transition: none; + transition: none + } +} + +.custom-range::-ms-thumb:active { + background-color: #b3d7ff +} + +.custom-range::-ms-track { + width: 100%; + height: .5rem; + color: transparent; + cursor: pointer; + background-color: transparent; + border-color: transparent; + border-width: .5rem +} + +.custom-range::-ms-fill-lower { + background-color: #dee2e6; + border-radius: 1rem +} + +.custom-range::-ms-fill-upper { + margin-right: 15px; + background-color: #dee2e6; + border-radius: 1rem +} + +.custom-range:disabled::-webkit-slider-thumb { + background-color: #adb5bd +} + +.custom-range:disabled::-webkit-slider-runnable-track { + cursor: default +} + +.custom-range:disabled::-moz-range-thumb { + background-color: #adb5bd +} + +.custom-range:disabled::-moz-range-track { + cursor: default +} + +.custom-range:disabled::-ms-thumb { + background-color: #adb5bd +} + +.custom-control-label::before, +.custom-file-label, +.custom-select { + transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out +} + +@media (prefers-reduced-motion:reduce) { + .custom-control-label::before, + .custom-file-label, + .custom-select { + transition: none + } +} + +.nav { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none +} + +.nav-link { + display: block; + padding: .5rem 1rem +} + +.nav-link:focus, +.nav-link:hover { + text-decoration: none +} + +.nav-link.disabled { + color: #6c757d; + pointer-events: none; + cursor: default +} + +.nav-tabs { + border-bottom: 1px solid #dee2e6 +} + +.nav-tabs .nav-item { + margin-bottom: -1px +} + +.nav-tabs .nav-link { + border: 1px solid transparent; + border-top-left-radius: .25rem; + border-top-right-radius: .25rem +} + +.nav-tabs .nav-link:focus, +.nav-tabs .nav-link:hover { + border-color: #e9ecef #e9ecef #dee2e6 +} + +.nav-tabs .nav-link.disabled { + color: #6c757d; + background-color: transparent; + border-color: transparent +} + +.nav-tabs .nav-item.show .nav-link, +.nav-tabs .nav-link.active { + color: #495057; + background-color: #fff; + border-color: #dee2e6 #dee2e6 #fff +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0 +} + +.nav-pills .nav-link { + border-radius: .25rem +} + +.nav-pills .nav-link.active, +.nav-pills .show>.nav-link { + color: #fff; + background-color: #007bff +} + +.nav-fill .nav-item { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + text-align: center +} + +.nav-justified .nav-item { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + text-align: center +} + +.tab-content>.tab-pane { + display: none +} + +.tab-content>.active { + display: block +} + +.navbar { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between; + padding: .5rem 1rem +} + +.navbar .container, +.navbar .container-fluid, +.navbar .container-lg, +.navbar .container-md, +.navbar .container-sm, +.navbar .container-xl { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between +} + +.navbar-brand { + display: inline-block; + padding-top: .3125rem; + padding-bottom: .3125rem; + margin-right: 1rem; + font-size: 1.25rem; + line-height: inherit; + white-space: nowrap +} + +.navbar-brand:focus, +.navbar-brand:hover { + text-decoration: none +} + +.navbar-nav { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none +} + +.navbar-nav .nav-link { + padding-right: 0; + padding-left: 0 +} + +.navbar-nav .dropdown-menu { + position: static; + float: none +} + +.navbar-text { + display: inline-block; + padding-top: .5rem; + padding-bottom: .5rem +} + +.navbar-collapse { + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + -ms-flex-positive: 1; + flex-grow: 1; + -ms-flex-align: center; + align-items: center +} + +.navbar-toggler { + padding: .25rem .75rem; + font-size: 1.25rem; + line-height: 1; + background-color: transparent; + border: 1px solid transparent; + border-radius: .25rem +} + +.navbar-toggler:focus, +.navbar-toggler:hover { + text-decoration: none +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + content: ""; + background: no-repeat center center; + background-size: 100% 100% +} + +@media (max-width:575.98px) { + .navbar-expand-sm>.container, + .navbar-expand-sm>.container-fluid, + .navbar-expand-sm>.container-lg, + .navbar-expand-sm>.container-md, + .navbar-expand-sm>.container-sm, + .navbar-expand-sm>.container-xl { + padding-right: 0; + padding-left: 0 + } +} + +@media (min-width:576px) { + .navbar-expand-sm { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start + } + .navbar-expand-sm .navbar-nav { + -ms-flex-direction: row; + flex-direction: row + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem + } + .navbar-expand-sm>.container, + .navbar-expand-sm>.container-fluid, + .navbar-expand-sm>.container-lg, + .navbar-expand-sm>.container-md, + .navbar-expand-sm>.container-sm, + .navbar-expand-sm>.container-xl { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap + } + .navbar-expand-sm .navbar-collapse { + display: -ms-flexbox!important; + display: flex!important; + -ms-flex-preferred-size: auto; + flex-basis: auto + } + .navbar-expand-sm .navbar-toggler { + display: none + } +} + +@media (max-width:767.98px) { + .navbar-expand-md>.container, + .navbar-expand-md>.container-fluid, + .navbar-expand-md>.container-lg, + .navbar-expand-md>.container-md, + .navbar-expand-md>.container-sm, + .navbar-expand-md>.container-xl { + padding-right: 0; + padding-left: 0 + } +} + +@media (min-width:768px) { + .navbar-expand-md { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start + } + .navbar-expand-md .navbar-nav { + -ms-flex-direction: row; + flex-direction: row + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem + } + .navbar-expand-md>.container, + .navbar-expand-md>.container-fluid, + .navbar-expand-md>.container-lg, + .navbar-expand-md>.container-md, + .navbar-expand-md>.container-sm, + .navbar-expand-md>.container-xl { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap + } + .navbar-expand-md .navbar-collapse { + display: -ms-flexbox!important; + display: flex!important; + -ms-flex-preferred-size: auto; + flex-basis: auto + } + .navbar-expand-md .navbar-toggler { + display: none + } +} + +@media (max-width:991.98px) { + .navbar-expand-lg>.container, + .navbar-expand-lg>.container-fluid, + .navbar-expand-lg>.container-lg, + .navbar-expand-lg>.container-md, + .navbar-expand-lg>.container-sm, + .navbar-expand-lg>.container-xl { + padding-right: 0; + padding-left: 0 + } +} + +@media (min-width:992px) { + .navbar-expand-lg { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start + } + .navbar-expand-lg .navbar-nav { + -ms-flex-direction: row; + flex-direction: row + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem + } + .navbar-expand-lg>.container, + .navbar-expand-lg>.container-fluid, + .navbar-expand-lg>.container-lg, + .navbar-expand-lg>.container-md, + .navbar-expand-lg>.container-sm, + .navbar-expand-lg>.container-xl { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap + } + .navbar-expand-lg .navbar-collapse { + display: -ms-flexbox!important; + display: flex!important; + -ms-flex-preferred-size: auto; + flex-basis: auto + } + .navbar-expand-lg .navbar-toggler { + display: none + } +} + +@media (max-width:1199.98px) { + .navbar-expand-xl>.container, + .navbar-expand-xl>.container-fluid, + .navbar-expand-xl>.container-lg, + .navbar-expand-xl>.container-md, + .navbar-expand-xl>.container-sm, + .navbar-expand-xl>.container-xl { + padding-right: 0; + padding-left: 0 + } +} + +@media (min-width:1200px) { + .navbar-expand-xl { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start + } + .navbar-expand-xl .navbar-nav { + -ms-flex-direction: row; + flex-direction: row + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem + } + .navbar-expand-xl>.container, + .navbar-expand-xl>.container-fluid, + .navbar-expand-xl>.container-lg, + .navbar-expand-xl>.container-md, + .navbar-expand-xl>.container-sm, + .navbar-expand-xl>.container-xl { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap + } + .navbar-expand-xl .navbar-collapse { + display: -ms-flexbox!important; + display: flex!important; + -ms-flex-preferred-size: auto; + flex-basis: auto + } + .navbar-expand-xl .navbar-toggler { + display: none + } +} + +.navbar-expand { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start +} + +.navbar-expand>.container, +.navbar-expand>.container-fluid, +.navbar-expand>.container-lg, +.navbar-expand>.container-md, +.navbar-expand>.container-sm, +.navbar-expand>.container-xl { + padding-right: 0; + padding-left: 0 +} + +.navbar-expand .navbar-nav { + -ms-flex-direction: row; + flex-direction: row +} + +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute +} + +.navbar-expand .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem +} + +.navbar-expand>.container, +.navbar-expand>.container-fluid, +.navbar-expand>.container-lg, +.navbar-expand>.container-md, +.navbar-expand>.container-sm, +.navbar-expand>.container-xl { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap +} + +.navbar-expand .navbar-collapse { + display: -ms-flexbox!important; + display: flex!important; + -ms-flex-preferred-size: auto; + flex-basis: auto +} + +.navbar-expand .navbar-toggler { + display: none +} + +.navbar-light .navbar-brand { + color: rgba(0, 0, 0, .9) +} + +.navbar-light .navbar-brand:focus, +.navbar-light .navbar-brand:hover { + color: rgba(0, 0, 0, .9) +} + +.navbar-light .navbar-nav .nav-link { + color: rgba(0, 0, 0, .5) +} + +.navbar-light .navbar-nav .nav-link:focus, +.navbar-light .navbar-nav .nav-link:hover { + color: rgba(0, 0, 0, .7) +} + +.navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, .3) +} + +.navbar-light .navbar-nav .active>.nav-link, +.navbar-light .navbar-nav .nav-link.active, +.navbar-light .navbar-nav .nav-link.show, +.navbar-light .navbar-nav .show>.nav-link { + color: rgba(0, 0, 0, .9) +} + +.navbar-light .navbar-toggler { + color: rgba(0, 0, 0, .5); + border-color: rgba(0, 0, 0, .1) +} + +.navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") +} + +.navbar-light .navbar-text { + color: rgba(0, 0, 0, .5) +} + +.navbar-light .navbar-text a { + color: rgba(0, 0, 0, .9) +} + +.navbar-light .navbar-text a:focus, +.navbar-light .navbar-text a:hover { + color: rgba(0, 0, 0, .9) +} + +.navbar-dark .navbar-brand { + color: #fff +} + +.navbar-dark .navbar-brand:focus, +.navbar-dark .navbar-brand:hover { + color: #fff +} + +.navbar-dark .navbar-nav .nav-link { + color: rgba(255, 255, 255, .5) +} + +.navbar-dark .navbar-nav .nav-link:focus, +.navbar-dark .navbar-nav .nav-link:hover { + color: rgba(255, 255, 255, .75) +} + +.navbar-dark .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, .25) +} + +.navbar-dark .navbar-nav .active>.nav-link, +.navbar-dark .navbar-nav .nav-link.active, +.navbar-dark .navbar-nav .nav-link.show, +.navbar-dark .navbar-nav .show>.nav-link { + color: #fff +} + +.navbar-dark .navbar-toggler { + color: rgba(255, 255, 255, .5); + border-color: rgba(255, 255, 255, .1) +} + +.navbar-dark .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") +} + +.navbar-dark .navbar-text { + color: rgba(255, 255, 255, .5) +} + +.navbar-dark .navbar-text a { + color: #fff +} + +.navbar-dark .navbar-text a:focus, +.navbar-dark .navbar-text a:hover { + color: #fff +} + +.card { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + background-color: #fff; + background-clip: border-box; + border: 1px solid rgba(0, 0, 0, .125); + border-radius: .25rem +} + +.card>hr { + margin-right: 0; + margin-left: 0 +} + +.card>.list-group:first-child .list-group-item:first-child { + border-top-left-radius: .25rem; + border-top-right-radius: .25rem +} + +.card>.list-group:last-child .list-group-item:last-child { + border-bottom-right-radius: .25rem; + border-bottom-left-radius: .25rem +} + +.card-body { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + min-height: 1px; + padding: 1.25rem +} + +.card-title { + margin-bottom: .75rem +} + +.card-subtitle { + margin-top: -.375rem; + margin-bottom: 0 +} + +.card-text:last-child { + margin-bottom: 0 +} + +.card-link:hover { + text-decoration: none +} + +.card-link+.card-link { + margin-left: 1.25rem +} + +.card-header { + padding: .75rem 1.25rem; + margin-bottom: 0; + background-color: rgba(0, 0, 0, .03); + border-bottom: 1px solid rgba(0, 0, 0, .125) +} + +.card-header:first-child { + border-radius: calc(.25rem - 1px) calc(.25rem - 1px) 0 0 +} + +.card-header+.list-group .list-group-item:first-child { + border-top: 0 +} + +.card-footer { + padding: .75rem 1.25rem; + background-color: rgba(0, 0, 0, .03); + border-top: 1px solid rgba(0, 0, 0, .125) +} + +.card-footer:last-child { + border-radius: 0 0 calc(.25rem - 1px) calc(.25rem - 1px) +} + +.card-header-tabs { + margin-right: -.625rem; + margin-bottom: -.75rem; + margin-left: -.625rem; + border-bottom: 0 +} + +.card-header-pills { + margin-right: -.625rem; + margin-left: -.625rem +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1.25rem +} + +.card-img, +.card-img-bottom, +.card-img-top { + -ms-flex-negative: 0; + flex-shrink: 0; + width: 100% +} + +.card-img, +.card-img-top { + border-top-left-radius: calc(.25rem - 1px); + border-top-right-radius: calc(.25rem - 1px) +} + +.card-img, +.card-img-bottom { + border-bottom-right-radius: calc(.25rem - 1px); + border-bottom-left-radius: calc(.25rem - 1px) +} + +.card-deck .card { + margin-bottom: 15px +} + +@media (min-width:576px) { + .card-deck { + display: -ms-flexbox; + display: flex; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + margin-right: -15px; + margin-left: -15px + } + .card-deck .card { + -ms-flex: 1 0 0%; + flex: 1 0 0%; + margin-right: 15px; + margin-bottom: 0; + margin-left: 15px + } +} + +.card-group>.card { + margin-bottom: 15px +} + +@media (min-width:576px) { + .card-group { + display: -ms-flexbox; + display: flex; + -ms-flex-flow: row wrap; + flex-flow: row wrap + } + .card-group>.card { + -ms-flex: 1 0 0%; + flex: 1 0 0%; + margin-bottom: 0 + } + .card-group>.card+.card { + margin-left: 0; + border-left: 0 + } + .card-group>.card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0 + } + .card-group>.card:not(:last-child) .card-header, + .card-group>.card:not(:last-child) .card-img-top { + border-top-right-radius: 0 + } + .card-group>.card:not(:last-child) .card-footer, + .card-group>.card:not(:last-child) .card-img-bottom { + border-bottom-right-radius: 0 + } + .card-group>.card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0 + } + .card-group>.card:not(:first-child) .card-header, + .card-group>.card:not(:first-child) .card-img-top { + border-top-left-radius: 0 + } + .card-group>.card:not(:first-child) .card-footer, + .card-group>.card:not(:first-child) .card-img-bottom { + border-bottom-left-radius: 0 + } +} + +.card-columns .card { + margin-bottom: .75rem +} + +@media (min-width:576px) { + .card-columns { + -webkit-column-count: 3; + -moz-column-count: 3; + column-count: 3; + -webkit-column-gap: 1.25rem; + -moz-column-gap: 1.25rem; + column-gap: 1.25rem; + orphans: 1; + widows: 1 + } + .card-columns .card { + display: inline-block; + width: 100% + } +} + +.accordion>.card { + overflow: hidden +} + +.accordion>.card:not(:last-of-type) { + border-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0 +} + +.accordion>.card:not(:first-of-type) { + border-top-left-radius: 0; + border-top-right-radius: 0 +} + +.accordion>.card>.card-header { + border-radius: 0; + margin-bottom: -1px +} + +.breadcrumb { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding: .75rem 1rem; + margin-bottom: 1rem; + list-style: none; + background-color: #e9ecef; + border-radius: .25rem +} + +.breadcrumb-item+.breadcrumb-item { + padding-left: .5rem +} + +.breadcrumb-item+.breadcrumb-item::before { + display: inline-block; + padding-right: .5rem; + color: #6c757d; + content: "/" +} + +.breadcrumb-item+.breadcrumb-item:hover::before { + text-decoration: underline +} + +.breadcrumb-item+.breadcrumb-item:hover::before { + text-decoration: none +} + +.breadcrumb-item.active { + color: #6c757d +} + +.pagination { + display: -ms-flexbox; + display: flex; + padding-left: 0; + list-style: none; + border-radius: .25rem +} + +.page-link { + position: relative; + display: block; + padding: .5rem .75rem; + margin-left: -1px; + line-height: 1.25; + color: #007bff; + background-color: #fff; + border: 1px solid #dee2e6 +} + +.page-link:hover { + z-index: 2; + color: #0056b3; + text-decoration: none; + background-color: #e9ecef; + border-color: #dee2e6 +} + +.page-link:focus { + z-index: 3; + outline: 0; + box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25) +} + +.page-item:first-child .page-link { + margin-left: 0; + border-top-left-radius: .25rem; + border-bottom-left-radius: .25rem +} + +.page-item:last-child .page-link { + border-top-right-radius: .25rem; + border-bottom-right-radius: .25rem +} + +.page-item.active .page-link { + z-index: 3; + color: #fff; + background-color: #007bff; + border-color: #007bff +} + +.page-item.disabled .page-link { + color: #6c757d; + pointer-events: none; + cursor: auto; + background-color: #fff; + border-color: #dee2e6 +} + +.pagination-lg .page-link { + padding: .75rem 1.5rem; + font-size: 1.25rem; + line-height: 1.5 +} + +.pagination-lg .page-item:first-child .page-link { + border-top-left-radius: .3rem; + border-bottom-left-radius: .3rem +} + +.pagination-lg .page-item:last-child .page-link { + border-top-right-radius: .3rem; + border-bottom-right-radius: .3rem +} + +.pagination-sm .page-link { + padding: .25rem .5rem; + font-size: .875rem; + line-height: 1.5 +} + +.pagination-sm .page-item:first-child .page-link { + border-top-left-radius: .2rem; + border-bottom-left-radius: .2rem +} + +.pagination-sm .page-item:last-child .page-link { + border-top-right-radius: .2rem; + border-bottom-right-radius: .2rem +} + +.badge { + display: inline-block; + padding: .25em .4em; + font-size: 75%; + font-weight: 700; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25rem; + transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out +} + +@media (prefers-reduced-motion:reduce) { + .badge { + transition: none + } +} + +a.badge:focus, +a.badge:hover { + text-decoration: none +} + +.badge:empty { + display: none +} + +.btn .badge { + position: relative; + top: -1px +} + +.badge-pill { + padding-right: .6em; + padding-left: .6em; + border-radius: 10rem +} + +.badge-primary { + color: #fff; + background-color: #007bff +} + +a.badge-primary:focus, +a.badge-primary:hover { + color: #fff; + background-color: #0062cc +} + +a.badge-primary.focus, +a.badge-primary:focus { + outline: 0; + box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .5) +} + +.badge-secondary { + color: #fff; + background-color: #6c757d +} + +a.badge-secondary:focus, +a.badge-secondary:hover { + color: #fff; + background-color: #545b62 +} + +a.badge-secondary.focus, +a.badge-secondary:focus { + outline: 0; + box-shadow: 0 0 0 .2rem rgba(108, 117, 125, .5) +} + +.badge-success { + color: #fff; + background-color: #28a745 +} + +a.badge-success:focus, +a.badge-success:hover { + color: #fff; + background-color: #1e7e34 +} + +a.badge-success.focus, +a.badge-success:focus { + outline: 0; + box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .5) +} + +.badge-info { + color: #fff; + background-color: #17a2b8 +} + +a.badge-info:focus, +a.badge-info:hover { + color: #fff; + background-color: #117a8b +} + +a.badge-info.focus, +a.badge-info:focus { + outline: 0; + box-shadow: 0 0 0 .2rem rgba(23, 162, 184, .5) +} + +.badge-warning { + color: #212529; + background-color: #ffc107 +} + +a.badge-warning:focus, +a.badge-warning:hover { + color: #212529; + background-color: #d39e00 +} + +a.badge-warning.focus, +a.badge-warning:focus { + outline: 0; + box-shadow: 0 0 0 .2rem rgba(255, 193, 7, .5) +} + +.badge-danger { + color: #fff; + background-color: #dc3545 +} + +a.badge-danger:focus, +a.badge-danger:hover { + color: #fff; + background-color: #bd2130 +} + +a.badge-danger.focus, +a.badge-danger:focus { + outline: 0; + box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .5) +} + +.badge-light { + color: #212529; + background-color: #f8f9fa +} + +a.badge-light:focus, +a.badge-light:hover { + color: #212529; + background-color: #dae0e5 +} + +a.badge-light.focus, +a.badge-light:focus { + outline: 0; + box-shadow: 0 0 0 .2rem rgba(248, 249, 250, .5) +} + +.badge-dark { + color: #fff; + background-color: #343a40 +} + +a.badge-dark:focus, +a.badge-dark:hover { + color: #fff; + background-color: #1d2124 +} + +a.badge-dark.focus, +a.badge-dark:focus { + outline: 0; + box-shadow: 0 0 0 .2rem rgba(52, 58, 64, .5) +} + +.jumbotron { + padding: 2rem 1rem; + margin-bottom: 2rem; + background-color: #e9ecef; + border-radius: .3rem +} + +@media (min-width:576px) { + .jumbotron { + padding: 4rem 2rem + } +} + +.jumbotron-fluid { + padding-right: 0; + padding-left: 0; + border-radius: 0 +} + +.alert { + position: relative; + padding: .75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: .25rem +} + +.alert-heading { + color: inherit +} + +.alert-link { + font-weight: 700 +} + +.alert-dismissible { + padding-right: 4rem +} + +.alert-dismissible .close { + position: absolute; + top: 0; + right: 0; + padding: .75rem 1.25rem; + color: inherit +} + +.alert-primary { + color: #004085; + background-color: #cce5ff; + border-color: #b8daff +} + +.alert-primary hr { + border-top-color: #9fcdff +} + +.alert-primary .alert-link { + color: #002752 +} + +.alert-secondary { + color: #383d41; + background-color: #e2e3e5; + border-color: #d6d8db +} + +.alert-secondary hr { + border-top-color: #c8cbcf +} + +.alert-secondary .alert-link { + color: #202326 +} + +.alert-success { + color: #155724; + background-color: #d4edda; + border-color: #c3e6cb +} + +.alert-success hr { + border-top-color: #b1dfbb +} + +.alert-success .alert-link { + color: #0b2e13 +} + +.alert-info { + color: #0c5460; + background-color: #d1ecf1; + border-color: #bee5eb +} + +.alert-info hr { + border-top-color: #abdde5 +} + +.alert-info .alert-link { + color: #062c33 +} + +.alert-warning { + color: #856404; + background-color: #fff3cd; + border-color: #ffeeba +} + +.alert-warning hr { + border-top-color: #ffe8a1 +} + +.alert-warning .alert-link { + color: #533f03 +} + +.alert-danger { + color: #721c24; + background-color: #f8d7da; + border-color: #f5c6cb +} + +.alert-danger hr { + border-top-color: #f1b0b7 +} + +.alert-danger .alert-link { + color: #491217 +} + +.alert-light { + color: #818182; + background-color: #fefefe; + border-color: #fdfdfe +} + +.alert-light hr { + border-top-color: #ececf6 +} + +.alert-light .alert-link { + color: #686868 +} + +.alert-dark { + color: #1b1e21; + background-color: #d6d8d9; + border-color: #c6c8ca +} + +.alert-dark hr { + border-top-color: #b9bbbe +} + +.alert-dark .alert-link { + color: #040505 +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 1rem 0 + } + to { + background-position: 0 0 + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 1rem 0 + } + to { + background-position: 0 0 + } +} + +.progress { + display: -ms-flexbox; + display: flex; + height: 1rem; + overflow: hidden; + font-size: .75rem; + background-color: #e9ecef; + border-radius: .25rem +} + +.progress-bar { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + overflow: hidden; + color: #fff; + text-align: center; + white-space: nowrap; + background-color: #007bff; + transition: width .6s ease +} + +@media (prefers-reduced-motion:reduce) { + .progress-bar { + transition: none + } +} + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-size: 1rem 1rem +} + +.progress-bar-animated { + -webkit-animation: progress-bar-stripes 1s linear infinite; + animation: progress-bar-stripes 1s linear infinite +} + +@media (prefers-reduced-motion:reduce) { + .progress-bar-animated { + -webkit-animation: none; + animation: none + } +} + +.media { + display: -ms-flexbox; + display: flex; + -ms-flex-align: start; + align-items: flex-start +} + +.media-body { + -ms-flex: 1; + flex: 1 +} + +.list-group { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0 +} + +.list-group-item-action { + width: 100%; + color: #495057; + text-align: inherit +} + +.list-group-item-action:focus, +.list-group-item-action:hover { + z-index: 1; + color: #495057; + text-decoration: none; + background-color: #f8f9fa +} + +.list-group-item-action:active { + color: #212529; + background-color: #e9ecef +} + +.list-group-item { + position: relative; + display: block; + padding: .75rem 1.25rem; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, .125) +} + +.list-group-item:first-child { + border-top-left-radius: .25rem; + border-top-right-radius: .25rem +} + +.list-group-item:last-child { + border-bottom-right-radius: .25rem; + border-bottom-left-radius: .25rem +} + +.list-group-item.disabled, +.list-group-item:disabled { + color: #6c757d; + pointer-events: none; + background-color: #fff +} + +.list-group-item.active { + z-index: 2; + color: #fff; + background-color: #007bff; + border-color: #007bff +} + +.list-group-item+.list-group-item { + border-top-width: 0 +} + +.list-group-item+.list-group-item.active { + margin-top: -1px; + border-top-width: 1px +} + +.list-group-horizontal { + -ms-flex-direction: row; + flex-direction: row +} + +.list-group-horizontal .list-group-item:first-child { + border-bottom-left-radius: .25rem; + border-top-right-radius: 0 +} + +.list-group-horizontal .list-group-item:last-child { + border-top-right-radius: .25rem; + border-bottom-left-radius: 0 +} + +.list-group-horizontal .list-group-item.active { + margin-top: 0 +} + +.list-group-horizontal .list-group-item+.list-group-item { + border-top-width: 1px; + border-left-width: 0 +} + +.list-group-horizontal .list-group-item+.list-group-item.active { + margin-left: -1px; + border-left-width: 1px +} + +@media (min-width:576px) { + .list-group-horizontal-sm { + -ms-flex-direction: row; + flex-direction: row + } + .list-group-horizontal-sm .list-group-item:first-child { + border-bottom-left-radius: .25rem; + border-top-right-radius: 0 + } + .list-group-horizontal-sm .list-group-item:last-child { + border-top-right-radius: .25rem; + border-bottom-left-radius: 0 + } + .list-group-horizontal-sm .list-group-item.active { + margin-top: 0 + } + .list-group-horizontal-sm .list-group-item+.list-group-item { + border-top-width: 1px; + border-left-width: 0 + } + .list-group-horizontal-sm .list-group-item+.list-group-item.active { + margin-left: -1px; + border-left-width: 1px + } +} + +@media (min-width:768px) { + .list-group-horizontal-md { + -ms-flex-direction: row; + flex-direction: row + } + .list-group-horizontal-md .list-group-item:first-child { + border-bottom-left-radius: .25rem; + border-top-right-radius: 0 + } + .list-group-horizontal-md .list-group-item:last-child { + border-top-right-radius: .25rem; + border-bottom-left-radius: 0 + } + .list-group-horizontal-md .list-group-item.active { + margin-top: 0 + } + .list-group-horizontal-md .list-group-item+.list-group-item { + border-top-width: 1px; + border-left-width: 0 + } + .list-group-horizontal-md .list-group-item+.list-group-item.active { + margin-left: -1px; + border-left-width: 1px + } +} + +@media (min-width:992px) { + .list-group-horizontal-lg { + -ms-flex-direction: row; + flex-direction: row + } + .list-group-horizontal-lg .list-group-item:first-child { + border-bottom-left-radius: .25rem; + border-top-right-radius: 0 + } + .list-group-horizontal-lg .list-group-item:last-child { + border-top-right-radius: .25rem; + border-bottom-left-radius: 0 + } + .list-group-horizontal-lg .list-group-item.active { + margin-top: 0 + } + .list-group-horizontal-lg .list-group-item+.list-group-item { + border-top-width: 1px; + border-left-width: 0 + } + .list-group-horizontal-lg .list-group-item+.list-group-item.active { + margin-left: -1px; + border-left-width: 1px + } +} + +@media (min-width:1200px) { + .list-group-horizontal-xl { + -ms-flex-direction: row; + flex-direction: row + } + .list-group-horizontal-xl .list-group-item:first-child { + border-bottom-left-radius: .25rem; + border-top-right-radius: 0 + } + .list-group-horizontal-xl .list-group-item:last-child { + border-top-right-radius: .25rem; + border-bottom-left-radius: 0 + } + .list-group-horizontal-xl .list-group-item.active { + margin-top: 0 + } + .list-group-horizontal-xl .list-group-item+.list-group-item { + border-top-width: 1px; + border-left-width: 0 + } + .list-group-horizontal-xl .list-group-item+.list-group-item.active { + margin-left: -1px; + border-left-width: 1px + } +} + +.list-group-flush .list-group-item { + border-right-width: 0; + border-left-width: 0; + border-radius: 0 +} + +.list-group-flush .list-group-item:first-child { + border-top-width: 0 +} + +.list-group-flush:last-child .list-group-item:last-child { + border-bottom-width: 0 +} + +.list-group-item-primary { + color: #004085; + background-color: #b8daff +} + +.list-group-item-primary.list-group-item-action:focus, +.list-group-item-primary.list-group-item-action:hover { + color: #004085; + background-color: #9fcdff +} + +.list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #004085; + border-color: #004085 +} + +.list-group-item-secondary { + color: #383d41; + background-color: #d6d8db +} + +.list-group-item-secondary.list-group-item-action:focus, +.list-group-item-secondary.list-group-item-action:hover { + color: #383d41; + background-color: #c8cbcf +} + +.list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #383d41; + border-color: #383d41 +} + +.list-group-item-success { + color: #155724; + background-color: #c3e6cb +} + +.list-group-item-success.list-group-item-action:focus, +.list-group-item-success.list-group-item-action:hover { + color: #155724; + background-color: #b1dfbb +} + +.list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #155724; + border-color: #155724 +} + +.list-group-item-info { + color: #0c5460; + background-color: #bee5eb +} + +.list-group-item-info.list-group-item-action:focus, +.list-group-item-info.list-group-item-action:hover { + color: #0c5460; + background-color: #abdde5 +} + +.list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #0c5460; + border-color: #0c5460 +} + +.list-group-item-warning { + color: #856404; + background-color: #ffeeba +} + +.list-group-item-warning.list-group-item-action:focus, +.list-group-item-warning.list-group-item-action:hover { + color: #856404; + background-color: #ffe8a1 +} + +.list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #856404; + border-color: #856404 +} + +.list-group-item-danger { + color: #721c24; + background-color: #f5c6cb +} + +.list-group-item-danger.list-group-item-action:focus, +.list-group-item-danger.list-group-item-action:hover { + color: #721c24; + background-color: #f1b0b7 +} + +.list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #721c24; + border-color: #721c24 +} + +.list-group-item-light { + color: #818182; + background-color: #fdfdfe +} + +.list-group-item-light.list-group-item-action:focus, +.list-group-item-light.list-group-item-action:hover { + color: #818182; + background-color: #ececf6 +} + +.list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #818182; + border-color: #818182 +} + +.list-group-item-dark { + color: #1b1e21; + background-color: #c6c8ca +} + +.list-group-item-dark.list-group-item-action:focus, +.list-group-item-dark.list-group-item-action:hover { + color: #1b1e21; + background-color: #b9bbbe +} + +.list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #1b1e21; + border-color: #1b1e21 +} + +.close { + float: right; + font-size: 1.5rem; + font-weight: 700; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: .5 +} + +.close:hover { + color: #000; + text-decoration: none +} + +.close:not(:disabled):not(.disabled):focus, +.close:not(:disabled):not(.disabled):hover { + opacity: .75 +} + +button.close { + padding: 0; + background-color: transparent; + border: 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none +} + +a.close.disabled { + pointer-events: none +} + +.toast { + max-width: 350px; + overflow: hidden; + font-size: .875rem; + background-color: rgba(255, 255, 255, .85); + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, .1); + box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .1); + -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(10px); + opacity: 0; + border-radius: .25rem +} + +.toast:not(:last-child) { + margin-bottom: .75rem +} + +.toast.showing { + opacity: 1 +} + +.toast.show { + display: block; + opacity: 1 +} + +.toast.hide { + display: none +} + +.toast-header { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + padding: .25rem .75rem; + color: #6c757d; + background-color: rgba(255, 255, 255, .85); + background-clip: padding-box; + border-bottom: 1px solid rgba(0, 0, 0, .05) +} + +.toast-body { + padding: .75rem +} + +.modal-open { + overflow: hidden +} + +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto +} + +.modal { + position: fixed; + top: 0; + left: 0; + z-index: 1050; + display: none; + width: 100%; + height: 100%; + overflow: hidden; + outline: 0 +} + +.modal-dialog { + position: relative; + width: auto; + margin: .5rem; + pointer-events: none +} + +.modal.fade .modal-dialog { + transition: -webkit-transform .3s ease-out; + transition: transform .3s ease-out; + transition: transform .3s ease-out, -webkit-transform .3s ease-out; + -webkit-transform: translate(0, -50px); + transform: translate(0, -50px) +} + +@media (prefers-reduced-motion:reduce) { + .modal.fade .modal-dialog { + transition: none + } +} + +.modal.show .modal-dialog { + -webkit-transform: none; + transform: none +} + +.modal.modal-static .modal-dialog { + -webkit-transform: scale(1.02); + transform: scale(1.02) +} + +.modal-dialog-scrollable { + display: -ms-flexbox; + display: flex; + max-height: calc(100% - 1rem) +} + +.modal-dialog-scrollable .modal-content { + max-height: calc(100vh - 1rem); + overflow: hidden +} + +.modal-dialog-scrollable .modal-footer, +.modal-dialog-scrollable .modal-header { + -ms-flex-negative: 0; + flex-shrink: 0 +} + +.modal-dialog-scrollable .modal-body { + overflow-y: auto +} + +.modal-dialog-centered { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + min-height: calc(100% - 1rem) +} + +.modal-dialog-centered::before { + display: block; + height: calc(100vh - 1rem); + content: "" +} + +.modal-dialog-centered.modal-dialog-scrollable { + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + height: 100% +} + +.modal-dialog-centered.modal-dialog-scrollable .modal-content { + max-height: none +} + +.modal-dialog-centered.modal-dialog-scrollable::before { + content: none +} + +.modal-content { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + width: 100%; + pointer-events: auto; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: .3rem; + outline: 0 +} + +.modal-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000 +} + +.modal-backdrop.fade { + opacity: 0 +} + +.modal-backdrop.show { + opacity: .5 +} + +.modal-header { + display: -ms-flexbox; + display: flex; + -ms-flex-align: start; + align-items: flex-start; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 1rem 1rem; + border-bottom: 1px solid #dee2e6; + border-top-left-radius: calc(.3rem - 1px); + border-top-right-radius: calc(.3rem - 1px) +} + +.modal-header .close { + padding: 1rem 1rem; + margin: -1rem -1rem -1rem auto +} + +.modal-title { + margin-bottom: 0; + line-height: 1.5 +} + +.modal-body { + position: relative; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 1rem +} + +.modal-footer { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: end; + justify-content: flex-end; + padding: .75rem; + border-top: 1px solid #dee2e6; + border-bottom-right-radius: calc(.3rem - 1px); + border-bottom-left-radius: calc(.3rem - 1px) +} + +.modal-footer>* { + margin: .25rem +} + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll +} + +@media (min-width:576px) { + .modal-dialog { + max-width: 500px; + margin: 1.75rem auto + } + .modal-dialog-scrollable { + max-height: calc(100% - 3.5rem) + } + .modal-dialog-scrollable .modal-content { + max-height: calc(100vh - 3.5rem) + } + .modal-dialog-centered { + min-height: calc(100% - 3.5rem) + } + .modal-dialog-centered::before { + height: calc(100vh - 3.5rem) + } + .modal-sm { + max-width: 300px + } +} + +@media (min-width:992px) { + .modal-lg, + .modal-xl { + max-width: 800px + } +} + +@media (min-width:1200px) { + .modal-xl { + max-width: 1140px + } +} + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: .875rem; + word-wrap: break-word; + opacity: 0 +} + +.tooltip.show { + opacity: .9 +} + +.tooltip .arrow { + position: absolute; + display: block; + width: .8rem; + height: .4rem +} + +.tooltip .arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid +} + +.bs-tooltip-auto[x-placement^=top], +.bs-tooltip-top { + padding: .4rem 0 +} + +.bs-tooltip-auto[x-placement^=top] .arrow, +.bs-tooltip-top .arrow { + bottom: 0 +} + +.bs-tooltip-auto[x-placement^=top] .arrow::before, +.bs-tooltip-top .arrow::before { + top: 0; + border-width: .4rem .4rem 0; + border-top-color: #000 +} + +.bs-tooltip-auto[x-placement^=right], +.bs-tooltip-right { + padding: 0 .4rem +} + +.bs-tooltip-auto[x-placement^=right] .arrow, +.bs-tooltip-right .arrow { + left: 0; + width: .4rem; + height: .8rem +} + +.bs-tooltip-auto[x-placement^=right] .arrow::before, +.bs-tooltip-right .arrow::before { + right: 0; + border-width: .4rem .4rem .4rem 0; + border-right-color: #000 +} + +.bs-tooltip-auto[x-placement^=bottom], +.bs-tooltip-bottom { + padding: .4rem 0 +} + +.bs-tooltip-auto[x-placement^=bottom] .arrow, +.bs-tooltip-bottom .arrow { + top: 0 +} + +.bs-tooltip-auto[x-placement^=bottom] .arrow::before, +.bs-tooltip-bottom .arrow::before { + bottom: 0; + border-width: 0 .4rem .4rem; + border-bottom-color: #000 +} + +.bs-tooltip-auto[x-placement^=left], +.bs-tooltip-left { + padding: 0 .4rem +} + +.bs-tooltip-auto[x-placement^=left] .arrow, +.bs-tooltip-left .arrow { + right: 0; + width: .4rem; + height: .8rem +} + +.bs-tooltip-auto[x-placement^=left] .arrow::before, +.bs-tooltip-left .arrow::before { + left: 0; + border-width: .4rem 0 .4rem .4rem; + border-left-color: #000 +} + +.tooltip-inner { + max-width: 200px; + padding: .25rem .5rem; + color: #fff; + text-align: center; + background-color: #000; + border-radius: .25rem +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: block; + max-width: 276px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: .875rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: .3rem +} + +.popover .arrow { + position: absolute; + display: block; + width: 1rem; + height: .5rem; + margin: 0 .3rem +} + +.popover .arrow::after, +.popover .arrow::before { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid +} + +.bs-popover-auto[x-placement^=top], +.bs-popover-top { + margin-bottom: .5rem +} + +.bs-popover-auto[x-placement^=top]>.arrow, +.bs-popover-top>.arrow { + bottom: calc(-.5rem - 1px) +} + +.bs-popover-auto[x-placement^=top]>.arrow::before, +.bs-popover-top>.arrow::before { + bottom: 0; + border-width: .5rem .5rem 0; + border-top-color: rgba(0, 0, 0, .25) +} + +.bs-popover-auto[x-placement^=top]>.arrow::after, +.bs-popover-top>.arrow::after { + bottom: 1px; + border-width: .5rem .5rem 0; + border-top-color: #fff +} + +.bs-popover-auto[x-placement^=right], +.bs-popover-right { + margin-left: .5rem +} + +.bs-popover-auto[x-placement^=right]>.arrow, +.bs-popover-right>.arrow { + left: calc(-.5rem - 1px); + width: .5rem; + height: 1rem; + margin: .3rem 0 +} + +.bs-popover-auto[x-placement^=right]>.arrow::before, +.bs-popover-right>.arrow::before { + left: 0; + border-width: .5rem .5rem .5rem 0; + border-right-color: rgba(0, 0, 0, .25) +} + +.bs-popover-auto[x-placement^=right]>.arrow::after, +.bs-popover-right>.arrow::after { + left: 1px; + border-width: .5rem .5rem .5rem 0; + border-right-color: #fff +} + +.bs-popover-auto[x-placement^=bottom], +.bs-popover-bottom { + margin-top: .5rem +} + +.bs-popover-auto[x-placement^=bottom]>.arrow, +.bs-popover-bottom>.arrow { + top: calc(-.5rem - 1px) +} + +.bs-popover-auto[x-placement^=bottom]>.arrow::before, +.bs-popover-bottom>.arrow::before { + top: 0; + border-width: 0 .5rem .5rem .5rem; + border-bottom-color: rgba(0, 0, 0, .25) +} + +.bs-popover-auto[x-placement^=bottom]>.arrow::after, +.bs-popover-bottom>.arrow::after { + top: 1px; + border-width: 0 .5rem .5rem .5rem; + border-bottom-color: #fff +} + +.bs-popover-auto[x-placement^=bottom] .popover-header::before, +.bs-popover-bottom .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 1rem; + margin-left: -.5rem; + content: ""; + border-bottom: 1px solid #f7f7f7 +} + +.bs-popover-auto[x-placement^=left], +.bs-popover-left { + margin-right: .5rem +} + +.bs-popover-auto[x-placement^=left]>.arrow, +.bs-popover-left>.arrow { + right: calc(-.5rem - 1px); + width: .5rem; + height: 1rem; + margin: .3rem 0 +} + +.bs-popover-auto[x-placement^=left]>.arrow::before, +.bs-popover-left>.arrow::before { + right: 0; + border-width: .5rem 0 .5rem .5rem; + border-left-color: rgba(0, 0, 0, .25) +} + +.bs-popover-auto[x-placement^=left]>.arrow::after, +.bs-popover-left>.arrow::after { + right: 1px; + border-width: .5rem 0 .5rem .5rem; + border-left-color: #fff +} + +.popover-header { + padding: .5rem .75rem; + margin-bottom: 0; + font-size: 1rem; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-top-left-radius: calc(.3rem - 1px); + border-top-right-radius: calc(.3rem - 1px) +} + +.popover-header:empty { + display: none +} + +.popover-body { + padding: .5rem .75rem; + color: #212529 +} + +.carousel { + position: relative +} + +.carousel.pointer-event { + -ms-touch-action: pan-y; + touch-action: pan-y +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden +} + +.carousel-inner::after { + display: block; + clear: both; + content: "" +} + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transition: -webkit-transform .6s ease-in-out; + transition: transform .6s ease-in-out; + transition: transform .6s ease-in-out, -webkit-transform .6s ease-in-out +} + +@media (prefers-reduced-motion:reduce) { + .carousel-item { + transition: none + } +} + +.carousel-item-next, +.carousel-item-prev, +.carousel-item.active { + display: block +} + +.active.carousel-item-right, +.carousel-item-next:not(.carousel-item-left) { + -webkit-transform: translateX(100%); + transform: translateX(100%) +} + +.active.carousel-item-left, +.carousel-item-prev:not(.carousel-item-right) { + -webkit-transform: translateX(-100%); + transform: translateX(-100%) +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + -webkit-transform: none; + transform: none +} + +.carousel-fade .carousel-item-next.carousel-item-left, +.carousel-fade .carousel-item-prev.carousel-item-right, +.carousel-fade .carousel-item.active { + z-index: 1; + opacity: 1 +} + +.carousel-fade .active.carousel-item-left, +.carousel-fade .active.carousel-item-right { + z-index: 0; + opacity: 0; + transition: opacity 0s .6s +} + +@media (prefers-reduced-motion:reduce) { + .carousel-fade .active.carousel-item-left, + .carousel-fade .active.carousel-item-right { + transition: none + } +} + +.carousel-control-next, +.carousel-control-prev { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + width: 15%; + color: #fff; + text-align: center; + opacity: .5; + transition: opacity .15s ease +} + +@media (prefers-reduced-motion:reduce) { + .carousel-control-next, + .carousel-control-prev { + transition: none + } +} + +.carousel-control-next:focus, +.carousel-control-next:hover, +.carousel-control-prev:focus, +.carousel-control-prev:hover { + color: #fff; + text-decoration: none; + outline: 0; + opacity: .9 +} + +.carousel-control-prev { + left: 0 +} + +.carousel-control-next { + right: 0 +} + +.carousel-control-next-icon, +.carousel-control-prev-icon { + display: inline-block; + width: 20px; + height: 20px; + background: no-repeat 50%/100% 100% +} + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e") +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e") +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 15; + display: -ms-flexbox; + display: flex; + -ms-flex-pack: center; + justify-content: center; + padding-left: 0; + margin-right: 15%; + margin-left: 15%; + list-style: none +} + +.carousel-indicators li { + box-sizing: content-box; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + width: 30px; + height: 3px; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: .5; + transition: opacity .6s ease +} + +@media (prefers-reduced-motion:reduce) { + .carousel-indicators li { + transition: none + } +} + +.carousel-indicators .active { + opacity: 1 +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center +} + +@-webkit-keyframes spinner-border { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg) + } +} + +@keyframes spinner-border { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg) + } +} + +.spinner-border { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + border: .25em solid currentColor; + border-right-color: transparent; + border-radius: 50%; + -webkit-animation: spinner-border .75s linear infinite; + animation: spinner-border .75s linear infinite +} + +.spinner-border-sm { + width: 1rem; + height: 1rem; + border-width: .2em +} + +@-webkit-keyframes spinner-grow { + 0% { + -webkit-transform: scale(0); + transform: scale(0) + } + 50% { + opacity: 1 + } +} + +@keyframes spinner-grow { + 0% { + -webkit-transform: scale(0); + transform: scale(0) + } + 50% { + opacity: 1 + } +} + +.spinner-grow { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + background-color: currentColor; + border-radius: 50%; + opacity: 0; + -webkit-animation: spinner-grow .75s linear infinite; + animation: spinner-grow .75s linear infinite +} + +.spinner-grow-sm { + width: 1rem; + height: 1rem +} + +.align-baseline { + vertical-align: baseline!important +} + +.align-top { + vertical-align: top!important +} + +.align-middle { + vertical-align: middle!important +} + +.align-bottom { + vertical-align: bottom!important +} + +.align-text-bottom { + vertical-align: text-bottom!important +} + +.align-text-top { + vertical-align: text-top!important +} + +.bg-primary { + background-color: #007bff!important +} + +a.bg-primary:focus, +a.bg-primary:hover, +button.bg-primary:focus, +button.bg-primary:hover { + background-color: #0062cc!important +} + +.bg-secondary { + background-color: #6c757d!important +} + +a.bg-secondary:focus, +a.bg-secondary:hover, +button.bg-secondary:focus, +button.bg-secondary:hover { + background-color: #545b62!important +} + +.bg-success { + background-color: #28a745!important +} + +a.bg-success:focus, +a.bg-success:hover, +button.bg-success:focus, +button.bg-success:hover { + background-color: #1e7e34!important +} + +.bg-info { + background-color: #17a2b8!important +} + +a.bg-info:focus, +a.bg-info:hover, +button.bg-info:focus, +button.bg-info:hover { + background-color: #117a8b!important +} + +.bg-warning { + background-color: #ffc107!important +} + +a.bg-warning:focus, +a.bg-warning:hover, +button.bg-warning:focus, +button.bg-warning:hover { + background-color: #d39e00!important +} + +.bg-danger { + background-color: #dc3545!important +} + +a.bg-danger:focus, +a.bg-danger:hover, +button.bg-danger:focus, +button.bg-danger:hover { + background-color: #bd2130!important +} + +.bg-light { + background-color: #f8f9fa!important +} + +a.bg-light:focus, +a.bg-light:hover, +button.bg-light:focus, +button.bg-light:hover { + background-color: #dae0e5!important +} + +.bg-dark { + background-color: #343a40!important +} + +a.bg-dark:focus, +a.bg-dark:hover, +button.bg-dark:focus, +button.bg-dark:hover { + background-color: #1d2124!important +} + +.bg-white { + background-color: #fff!important +} + +.bg-transparent { + background-color: transparent!important +} + +.border { + border: 1px solid #dee2e6!important +} + +.border-top { + border-top: 1px solid #dee2e6!important +} + +.border-right { + border-right: 1px solid #dee2e6!important +} + +.border-bottom { + border-bottom: 1px solid #dee2e6!important +} + +.border-left { + border-left: 1px solid #dee2e6!important +} + +.border-0 { + border: 0!important +} + +.border-top-0 { + border-top: 0!important +} + +.border-right-0 { + border-right: 0!important +} + +.border-bottom-0 { + border-bottom: 0!important +} + +.border-left-0 { + border-left: 0!important +} + +.border-primary { + border-color: #007bff!important +} + +.border-secondary { + border-color: #6c757d!important +} + +.border-success { + border-color: #28a745!important +} + +.border-info { + border-color: #17a2b8!important +} + +.border-warning { + border-color: #ffc107!important +} + +.border-danger { + border-color: #dc3545!important +} + +.border-light { + border-color: #f8f9fa!important +} + +.border-dark { + border-color: #343a40!important +} + +.border-white { + border-color: #fff!important +} + +.rounded-sm { + border-radius: .2rem!important +} + +.rounded { + border-radius: .25rem!important +} + +.rounded-top { + border-top-left-radius: .25rem!important; + border-top-right-radius: .25rem!important +} + +.rounded-right { + border-top-right-radius: .25rem!important; + border-bottom-right-radius: .25rem!important +} + +.rounded-bottom { + border-bottom-right-radius: .25rem!important; + border-bottom-left-radius: .25rem!important +} + +.rounded-left { + border-top-left-radius: .25rem!important; + border-bottom-left-radius: .25rem!important +} + +.rounded-lg { + border-radius: .3rem!important +} + +.rounded-circle { + border-radius: 50%!important +} + +.rounded-pill { + border-radius: 50rem!important +} + +.rounded-0 { + border-radius: 0!important +} + +.clearfix::after { + display: block; + clear: both; + content: "" +} + +.d-none { + display: none!important +} + +.d-inline { + display: inline!important +} + +.d-inline-block { + display: inline-block!important +} + +.d-block { + display: block!important +} + +.d-table { + display: table!important +} + +.d-table-row { + display: table-row!important +} + +.d-table-cell { + display: table-cell!important +} + +.d-flex { + display: -ms-flexbox!important; + display: flex!important +} + +.d-inline-flex { + display: -ms-inline-flexbox!important; + display: inline-flex!important +} + +@media (min-width:576px) { + .d-sm-none { + display: none!important + } + .d-sm-inline { + display: inline!important + } + .d-sm-inline-block { + display: inline-block!important + } + .d-sm-block { + display: block!important + } + .d-sm-table { + display: table!important + } + .d-sm-table-row { + display: table-row!important + } + .d-sm-table-cell { + display: table-cell!important + } + .d-sm-flex { + display: -ms-flexbox!important; + display: flex!important + } + .d-sm-inline-flex { + display: -ms-inline-flexbox!important; + display: inline-flex!important + } +} + +@media (min-width:768px) { + .d-md-none { + display: none!important + } + .d-md-inline { + display: inline!important + } + .d-md-inline-block { + display: inline-block!important + } + .d-md-block { + display: block!important + } + .d-md-table { + display: table!important + } + .d-md-table-row { + display: table-row!important + } + .d-md-table-cell { + display: table-cell!important + } + .d-md-flex { + display: -ms-flexbox!important; + display: flex!important + } + .d-md-inline-flex { + display: -ms-inline-flexbox!important; + display: inline-flex!important + } +} + +@media (min-width:992px) { + .d-lg-none { + display: none!important + } + .d-lg-inline { + display: inline!important + } + .d-lg-inline-block { + display: inline-block!important + } + .d-lg-block { + display: block!important + } + .d-lg-table { + display: table!important + } + .d-lg-table-row { + display: table-row!important + } + .d-lg-table-cell { + display: table-cell!important + } + .d-lg-flex { + display: -ms-flexbox!important; + display: flex!important + } + .d-lg-inline-flex { + display: -ms-inline-flexbox!important; + display: inline-flex!important + } +} + +@media (min-width:1200px) { + .d-xl-none { + display: none!important + } + .d-xl-inline { + display: inline!important + } + .d-xl-inline-block { + display: inline-block!important + } + .d-xl-block { + display: block!important + } + .d-xl-table { + display: table!important + } + .d-xl-table-row { + display: table-row!important + } + .d-xl-table-cell { + display: table-cell!important + } + .d-xl-flex { + display: -ms-flexbox!important; + display: flex!important + } + .d-xl-inline-flex { + display: -ms-inline-flexbox!important; + display: inline-flex!important + } +} + +@media print { + .d-print-none { + display: none!important + } + .d-print-inline { + display: inline!important + } + .d-print-inline-block { + display: inline-block!important + } + .d-print-block { + display: block!important + } + .d-print-table { + display: table!important + } + .d-print-table-row { + display: table-row!important + } + .d-print-table-cell { + display: table-cell!important + } + .d-print-flex { + display: -ms-flexbox!important; + display: flex!important + } + .d-print-inline-flex { + display: -ms-inline-flexbox!important; + display: inline-flex!important + } +} + +.embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden +} + +.embed-responsive::before { + display: block; + content: "" +} + +.embed-responsive .embed-responsive-item, +.embed-responsive embed, +.embed-responsive iframe, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0 +} + +.embed-responsive-21by9::before { + padding-top: 42.857143% +} + +.embed-responsive-16by9::before { + padding-top: 56.25% +} + +.embed-responsive-4by3::before { + padding-top: 75% +} + +.embed-responsive-1by1::before { + padding-top: 100% +} + +.flex-row { + -ms-flex-direction: row!important; + flex-direction: row!important +} + +.flex-column { + -ms-flex-direction: column!important; + flex-direction: column!important +} + +.flex-row-reverse { + -ms-flex-direction: row-reverse!important; + flex-direction: row-reverse!important +} + +.flex-column-reverse { + -ms-flex-direction: column-reverse!important; + flex-direction: column-reverse!important +} + +.flex-wrap { + -ms-flex-wrap: wrap!important; + flex-wrap: wrap!important +} + +.flex-nowrap { + -ms-flex-wrap: nowrap!important; + flex-wrap: nowrap!important +} + +.flex-wrap-reverse { + -ms-flex-wrap: wrap-reverse!important; + flex-wrap: wrap-reverse!important +} + +.flex-fill { + -ms-flex: 1 1 auto!important; + flex: 1 1 auto!important +} + +.flex-grow-0 { + -ms-flex-positive: 0!important; + flex-grow: 0!important +} + +.flex-grow-1 { + -ms-flex-positive: 1!important; + flex-grow: 1!important +} + +.flex-shrink-0 { + -ms-flex-negative: 0!important; + flex-shrink: 0!important +} + +.flex-shrink-1 { + -ms-flex-negative: 1!important; + flex-shrink: 1!important +} + +.justify-content-start { + -ms-flex-pack: start!important; + justify-content: flex-start!important +} + +.justify-content-end { + -ms-flex-pack: end!important; + justify-content: flex-end!important +} + +.justify-content-center { + -ms-flex-pack: center!important; + justify-content: center!important +} + +.justify-content-between { + -ms-flex-pack: justify!important; + justify-content: space-between!important +} + +.justify-content-around { + -ms-flex-pack: distribute!important; + justify-content: space-around!important +} + +.align-items-start { + -ms-flex-align: start!important; + align-items: flex-start!important +} + +.align-items-end { + -ms-flex-align: end!important; + align-items: flex-end!important +} + +.align-items-center { + -ms-flex-align: center!important; + align-items: center!important +} + +.align-items-baseline { + -ms-flex-align: baseline!important; + align-items: baseline!important +} + +.align-items-stretch { + -ms-flex-align: stretch!important; + align-items: stretch!important +} + +.align-content-start { + -ms-flex-line-pack: start!important; + align-content: flex-start!important +} + +.align-content-end { + -ms-flex-line-pack: end!important; + align-content: flex-end!important +} + +.align-content-center { + -ms-flex-line-pack: center!important; + align-content: center!important +} + +.align-content-between { + -ms-flex-line-pack: justify!important; + align-content: space-between!important +} + +.align-content-around { + -ms-flex-line-pack: distribute!important; + align-content: space-around!important +} + +.align-content-stretch { + -ms-flex-line-pack: stretch!important; + align-content: stretch!important +} + +.align-self-auto { + -ms-flex-item-align: auto!important; + align-self: auto!important +} + +.align-self-start { + -ms-flex-item-align: start!important; + align-self: flex-start!important +} + +.align-self-end { + -ms-flex-item-align: end!important; + align-self: flex-end!important +} + +.align-self-center { + -ms-flex-item-align: center!important; + align-self: center!important +} + +.align-self-baseline { + -ms-flex-item-align: baseline!important; + align-self: baseline!important +} + +.align-self-stretch { + -ms-flex-item-align: stretch!important; + align-self: stretch!important +} + +@media (min-width:576px) { + .flex-sm-row { + -ms-flex-direction: row!important; + flex-direction: row!important + } + .flex-sm-column { + -ms-flex-direction: column!important; + flex-direction: column!important + } + .flex-sm-row-reverse { + -ms-flex-direction: row-reverse!important; + flex-direction: row-reverse!important + } + .flex-sm-column-reverse { + -ms-flex-direction: column-reverse!important; + flex-direction: column-reverse!important + } + .flex-sm-wrap { + -ms-flex-wrap: wrap!important; + flex-wrap: wrap!important + } + .flex-sm-nowrap { + -ms-flex-wrap: nowrap!important; + flex-wrap: nowrap!important + } + .flex-sm-wrap-reverse { + -ms-flex-wrap: wrap-reverse!important; + flex-wrap: wrap-reverse!important + } + .flex-sm-fill { + -ms-flex: 1 1 auto!important; + flex: 1 1 auto!important + } + .flex-sm-grow-0 { + -ms-flex-positive: 0!important; + flex-grow: 0!important + } + .flex-sm-grow-1 { + -ms-flex-positive: 1!important; + flex-grow: 1!important + } + .flex-sm-shrink-0 { + -ms-flex-negative: 0!important; + flex-shrink: 0!important + } + .flex-sm-shrink-1 { + -ms-flex-negative: 1!important; + flex-shrink: 1!important + } + .justify-content-sm-start { + -ms-flex-pack: start!important; + justify-content: flex-start!important + } + .justify-content-sm-end { + -ms-flex-pack: end!important; + justify-content: flex-end!important + } + .justify-content-sm-center { + -ms-flex-pack: center!important; + justify-content: center!important + } + .justify-content-sm-between { + -ms-flex-pack: justify!important; + justify-content: space-between!important + } + .justify-content-sm-around { + -ms-flex-pack: distribute!important; + justify-content: space-around!important + } + .align-items-sm-start { + -ms-flex-align: start!important; + align-items: flex-start!important + } + .align-items-sm-end { + -ms-flex-align: end!important; + align-items: flex-end!important + } + .align-items-sm-center { + -ms-flex-align: center!important; + align-items: center!important + } + .align-items-sm-baseline { + -ms-flex-align: baseline!important; + align-items: baseline!important + } + .align-items-sm-stretch { + -ms-flex-align: stretch!important; + align-items: stretch!important + } + .align-content-sm-start { + -ms-flex-line-pack: start!important; + align-content: flex-start!important + } + .align-content-sm-end { + -ms-flex-line-pack: end!important; + align-content: flex-end!important + } + .align-content-sm-center { + -ms-flex-line-pack: center!important; + align-content: center!important + } + .align-content-sm-between { + -ms-flex-line-pack: justify!important; + align-content: space-between!important + } + .align-content-sm-around { + -ms-flex-line-pack: distribute!important; + align-content: space-around!important + } + .align-content-sm-stretch { + -ms-flex-line-pack: stretch!important; + align-content: stretch!important + } + .align-self-sm-auto { + -ms-flex-item-align: auto!important; + align-self: auto!important + } + .align-self-sm-start { + -ms-flex-item-align: start!important; + align-self: flex-start!important + } + .align-self-sm-end { + -ms-flex-item-align: end!important; + align-self: flex-end!important + } + .align-self-sm-center { + -ms-flex-item-align: center!important; + align-self: center!important + } + .align-self-sm-baseline { + -ms-flex-item-align: baseline!important; + align-self: baseline!important + } + .align-self-sm-stretch { + -ms-flex-item-align: stretch!important; + align-self: stretch!important + } +} + +@media (min-width:768px) { + .flex-md-row { + -ms-flex-direction: row!important; + flex-direction: row!important + } + .flex-md-column { + -ms-flex-direction: column!important; + flex-direction: column!important + } + .flex-md-row-reverse { + -ms-flex-direction: row-reverse!important; + flex-direction: row-reverse!important + } + .flex-md-column-reverse { + -ms-flex-direction: column-reverse!important; + flex-direction: column-reverse!important + } + .flex-md-wrap { + -ms-flex-wrap: wrap!important; + flex-wrap: wrap!important + } + .flex-md-nowrap { + -ms-flex-wrap: nowrap!important; + flex-wrap: nowrap!important + } + .flex-md-wrap-reverse { + -ms-flex-wrap: wrap-reverse!important; + flex-wrap: wrap-reverse!important + } + .flex-md-fill { + -ms-flex: 1 1 auto!important; + flex: 1 1 auto!important + } + .flex-md-grow-0 { + -ms-flex-positive: 0!important; + flex-grow: 0!important + } + .flex-md-grow-1 { + -ms-flex-positive: 1!important; + flex-grow: 1!important + } + .flex-md-shrink-0 { + -ms-flex-negative: 0!important; + flex-shrink: 0!important + } + .flex-md-shrink-1 { + -ms-flex-negative: 1!important; + flex-shrink: 1!important + } + .justify-content-md-start { + -ms-flex-pack: start!important; + justify-content: flex-start!important + } + .justify-content-md-end { + -ms-flex-pack: end!important; + justify-content: flex-end!important + } + .justify-content-md-center { + -ms-flex-pack: center!important; + justify-content: center!important + } + .justify-content-md-between { + -ms-flex-pack: justify!important; + justify-content: space-between!important + } + .justify-content-md-around { + -ms-flex-pack: distribute!important; + justify-content: space-around!important + } + .align-items-md-start { + -ms-flex-align: start!important; + align-items: flex-start!important + } + .align-items-md-end { + -ms-flex-align: end!important; + align-items: flex-end!important + } + .align-items-md-center { + -ms-flex-align: center!important; + align-items: center!important + } + .align-items-md-baseline { + -ms-flex-align: baseline!important; + align-items: baseline!important + } + .align-items-md-stretch { + -ms-flex-align: stretch!important; + align-items: stretch!important + } + .align-content-md-start { + -ms-flex-line-pack: start!important; + align-content: flex-start!important + } + .align-content-md-end { + -ms-flex-line-pack: end!important; + align-content: flex-end!important + } + .align-content-md-center { + -ms-flex-line-pack: center!important; + align-content: center!important + } + .align-content-md-between { + -ms-flex-line-pack: justify!important; + align-content: space-between!important + } + .align-content-md-around { + -ms-flex-line-pack: distribute!important; + align-content: space-around!important + } + .align-content-md-stretch { + -ms-flex-line-pack: stretch!important; + align-content: stretch!important + } + .align-self-md-auto { + -ms-flex-item-align: auto!important; + align-self: auto!important + } + .align-self-md-start { + -ms-flex-item-align: start!important; + align-self: flex-start!important + } + .align-self-md-end { + -ms-flex-item-align: end!important; + align-self: flex-end!important + } + .align-self-md-center { + -ms-flex-item-align: center!important; + align-self: center!important + } + .align-self-md-baseline { + -ms-flex-item-align: baseline!important; + align-self: baseline!important + } + .align-self-md-stretch { + -ms-flex-item-align: stretch!important; + align-self: stretch!important + } +} + +@media (min-width:992px) { + .flex-lg-row { + -ms-flex-direction: row!important; + flex-direction: row!important + } + .flex-lg-column { + -ms-flex-direction: column!important; + flex-direction: column!important + } + .flex-lg-row-reverse { + -ms-flex-direction: row-reverse!important; + flex-direction: row-reverse!important + } + .flex-lg-column-reverse { + -ms-flex-direction: column-reverse!important; + flex-direction: column-reverse!important + } + .flex-lg-wrap { + -ms-flex-wrap: wrap!important; + flex-wrap: wrap!important + } + .flex-lg-nowrap { + -ms-flex-wrap: nowrap!important; + flex-wrap: nowrap!important + } + .flex-lg-wrap-reverse { + -ms-flex-wrap: wrap-reverse!important; + flex-wrap: wrap-reverse!important + } + .flex-lg-fill { + -ms-flex: 1 1 auto!important; + flex: 1 1 auto!important + } + .flex-lg-grow-0 { + -ms-flex-positive: 0!important; + flex-grow: 0!important + } + .flex-lg-grow-1 { + -ms-flex-positive: 1!important; + flex-grow: 1!important + } + .flex-lg-shrink-0 { + -ms-flex-negative: 0!important; + flex-shrink: 0!important + } + .flex-lg-shrink-1 { + -ms-flex-negative: 1!important; + flex-shrink: 1!important + } + .justify-content-lg-start { + -ms-flex-pack: start!important; + justify-content: flex-start!important + } + .justify-content-lg-end { + -ms-flex-pack: end!important; + justify-content: flex-end!important + } + .justify-content-lg-center { + -ms-flex-pack: center!important; + justify-content: center!important + } + .justify-content-lg-between { + -ms-flex-pack: justify!important; + justify-content: space-between!important + } + .justify-content-lg-around { + -ms-flex-pack: distribute!important; + justify-content: space-around!important + } + .align-items-lg-start { + -ms-flex-align: start!important; + align-items: flex-start!important + } + .align-items-lg-end { + -ms-flex-align: end!important; + align-items: flex-end!important + } + .align-items-lg-center { + -ms-flex-align: center!important; + align-items: center!important + } + .align-items-lg-baseline { + -ms-flex-align: baseline!important; + align-items: baseline!important + } + .align-items-lg-stretch { + -ms-flex-align: stretch!important; + align-items: stretch!important + } + .align-content-lg-start { + -ms-flex-line-pack: start!important; + align-content: flex-start!important + } + .align-content-lg-end { + -ms-flex-line-pack: end!important; + align-content: flex-end!important + } + .align-content-lg-center { + -ms-flex-line-pack: center!important; + align-content: center!important + } + .align-content-lg-between { + -ms-flex-line-pack: justify!important; + align-content: space-between!important + } + .align-content-lg-around { + -ms-flex-line-pack: distribute!important; + align-content: space-around!important + } + .align-content-lg-stretch { + -ms-flex-line-pack: stretch!important; + align-content: stretch!important + } + .align-self-lg-auto { + -ms-flex-item-align: auto!important; + align-self: auto!important + } + .align-self-lg-start { + -ms-flex-item-align: start!important; + align-self: flex-start!important + } + .align-self-lg-end { + -ms-flex-item-align: end!important; + align-self: flex-end!important + } + .align-self-lg-center { + -ms-flex-item-align: center!important; + align-self: center!important + } + .align-self-lg-baseline { + -ms-flex-item-align: baseline!important; + align-self: baseline!important + } + .align-self-lg-stretch { + -ms-flex-item-align: stretch!important; + align-self: stretch!important + } +} + +@media (min-width:1200px) { + .flex-xl-row { + -ms-flex-direction: row!important; + flex-direction: row!important + } + .flex-xl-column { + -ms-flex-direction: column!important; + flex-direction: column!important + } + .flex-xl-row-reverse { + -ms-flex-direction: row-reverse!important; + flex-direction: row-reverse!important + } + .flex-xl-column-reverse { + -ms-flex-direction: column-reverse!important; + flex-direction: column-reverse!important + } + .flex-xl-wrap { + -ms-flex-wrap: wrap!important; + flex-wrap: wrap!important + } + .flex-xl-nowrap { + -ms-flex-wrap: nowrap!important; + flex-wrap: nowrap!important + } + .flex-xl-wrap-reverse { + -ms-flex-wrap: wrap-reverse!important; + flex-wrap: wrap-reverse!important + } + .flex-xl-fill { + -ms-flex: 1 1 auto!important; + flex: 1 1 auto!important + } + .flex-xl-grow-0 { + -ms-flex-positive: 0!important; + flex-grow: 0!important + } + .flex-xl-grow-1 { + -ms-flex-positive: 1!important; + flex-grow: 1!important + } + .flex-xl-shrink-0 { + -ms-flex-negative: 0!important; + flex-shrink: 0!important + } + .flex-xl-shrink-1 { + -ms-flex-negative: 1!important; + flex-shrink: 1!important + } + .justify-content-xl-start { + -ms-flex-pack: start!important; + justify-content: flex-start!important + } + .justify-content-xl-end { + -ms-flex-pack: end!important; + justify-content: flex-end!important + } + .justify-content-xl-center { + -ms-flex-pack: center!important; + justify-content: center!important + } + .justify-content-xl-between { + -ms-flex-pack: justify!important; + justify-content: space-between!important + } + .justify-content-xl-around { + -ms-flex-pack: distribute!important; + justify-content: space-around!important + } + .align-items-xl-start { + -ms-flex-align: start!important; + align-items: flex-start!important + } + .align-items-xl-end { + -ms-flex-align: end!important; + align-items: flex-end!important + } + .align-items-xl-center { + -ms-flex-align: center!important; + align-items: center!important + } + .align-items-xl-baseline { + -ms-flex-align: baseline!important; + align-items: baseline!important + } + .align-items-xl-stretch { + -ms-flex-align: stretch!important; + align-items: stretch!important + } + .align-content-xl-start { + -ms-flex-line-pack: start!important; + align-content: flex-start!important + } + .align-content-xl-end { + -ms-flex-line-pack: end!important; + align-content: flex-end!important + } + .align-content-xl-center { + -ms-flex-line-pack: center!important; + align-content: center!important + } + .align-content-xl-between { + -ms-flex-line-pack: justify!important; + align-content: space-between!important + } + .align-content-xl-around { + -ms-flex-line-pack: distribute!important; + align-content: space-around!important + } + .align-content-xl-stretch { + -ms-flex-line-pack: stretch!important; + align-content: stretch!important + } + .align-self-xl-auto { + -ms-flex-item-align: auto!important; + align-self: auto!important + } + .align-self-xl-start { + -ms-flex-item-align: start!important; + align-self: flex-start!important + } + .align-self-xl-end { + -ms-flex-item-align: end!important; + align-self: flex-end!important + } + .align-self-xl-center { + -ms-flex-item-align: center!important; + align-self: center!important + } + .align-self-xl-baseline { + -ms-flex-item-align: baseline!important; + align-self: baseline!important + } + .align-self-xl-stretch { + -ms-flex-item-align: stretch!important; + align-self: stretch!important + } +} + +.float-left { + float: left!important +} + +.float-right { + float: right!important +} + +.float-none { + float: none!important +} + +@media (min-width:576px) { + .float-sm-left { + float: left!important + } + .float-sm-right { + float: right!important + } + .float-sm-none { + float: none!important + } +} + +@media (min-width:768px) { + .float-md-left { + float: left!important + } + .float-md-right { + float: right!important + } + .float-md-none { + float: none!important + } +} + +@media (min-width:992px) { + .float-lg-left { + float: left!important + } + .float-lg-right { + float: right!important + } + .float-lg-none { + float: none!important + } +} + +@media (min-width:1200px) { + .float-xl-left { + float: left!important + } + .float-xl-right { + float: right!important + } + .float-xl-none { + float: none!important + } +} + +.overflow-auto { + overflow: auto!important +} + +.overflow-hidden { + overflow: hidden!important +} + +.position-static { + position: static!important +} + +.position-relative { + position: relative!important +} + +.position-absolute { + position: absolute!important +} + +.position-fixed { + position: fixed!important +} + +.position-sticky { + position: -webkit-sticky!important; + position: sticky!important +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030 +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030 +} + +@supports ((position:-webkit-sticky) or (position:sticky)) { + .sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020 + } +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0 +} + +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal +} + +.shadow-sm { + box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .075)!important +} + +.shadow { + box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15)!important +} + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, .175)!important +} + +.shadow-none { + box-shadow: none!important +} + +.w-25 { + width: 25%!important +} + +.w-50 { + width: 50%!important +} + +.w-75 { + width: 75%!important +} + +.w-100 { + width: 100%!important +} + +.w-auto { + width: auto!important +} + +.h-25 { + height: 25%!important +} + +.h-50 { + height: 50%!important +} + +.h-75 { + height: 75%!important +} + +.h-100 { + height: 100%!important +} + +.h-auto { + height: auto!important +} + +.mw-100 { + max-width: 100%!important +} + +.mh-100 { + max-height: 100%!important +} + +.min-vw-100 { + min-width: 100vw!important +} + +.min-vh-100 { + min-height: 100vh!important +} + +.vw-100 { + width: 100vw!important +} + +.vh-100 { + height: 100vh!important +} + +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + pointer-events: auto; + content: ""; + background-color: rgba(0, 0, 0, 0) +} + +.m-0 { + margin: 0!important +} + +.mt-0, +.my-0 { + margin-top: 0!important +} + +.mr-0, +.mx-0 { + margin-right: 0!important +} + +.mb-0, +.my-0 { + margin-bottom: 0!important +} + +.ml-0, +.mx-0 { + margin-left: 0!important +} + +.m-1 { + margin: .25rem!important +} + +.mt-1, +.my-1 { + margin-top: .25rem!important +} + +.mr-1, +.mx-1 { + margin-right: .25rem!important +} + +.mb-1, +.my-1 { + margin-bottom: .25rem!important +} + +.ml-1, +.mx-1 { + margin-left: .25rem!important +} + +.m-2 { + margin: .5rem!important +} + +.mt-2, +.my-2 { + margin-top: .5rem!important +} + +.mr-2, +.mx-2 { + margin-right: .5rem!important +} + +.mb-2, +.my-2 { + margin-bottom: .5rem!important +} + +.ml-2, +.mx-2 { + margin-left: .5rem!important +} + +.m-3 { + margin: 1rem!important +} + +.mt-3, +.my-3 { + margin-top: 1rem!important +} + +.mr-3, +.mx-3 { + margin-right: 1rem!important +} + +.mb-3, +.my-3 { + margin-bottom: 1rem!important +} + +.ml-3, +.mx-3 { + margin-left: 1rem!important +} + +.m-4 { + margin: 1.5rem!important +} + +.mt-4, +.my-4 { + margin-top: 1.5rem!important +} + +.mr-4, +.mx-4 { + margin-right: 1.5rem!important +} + +.mb-4, +.my-4 { + margin-bottom: 1.5rem!important +} + +.ml-4, +.mx-4 { + margin-left: 1.5rem!important +} + +.m-5 { + margin: 3rem!important +} + +.mt-5, +.my-5 { + margin-top: 3rem!important +} + +.mr-5, +.mx-5 { + margin-right: 3rem!important +} + +.mb-5, +.my-5 { + margin-bottom: 3rem!important +} + +.ml-5, +.mx-5 { + margin-left: 3rem!important +} + +.p-0 { + padding: 0!important +} + +.pt-0, +.py-0 { + padding-top: 0!important +} + +.pr-0, +.px-0 { + padding-right: 0!important +} + +.pb-0, +.py-0 { + padding-bottom: 0!important +} + +.pl-0, +.px-0 { + padding-left: 0!important +} + +.p-1 { + padding: .25rem!important +} + +.pt-1, +.py-1 { + padding-top: .25rem!important +} + +.pr-1, +.px-1 { + padding-right: .25rem!important +} + +.pb-1, +.py-1 { + padding-bottom: .25rem!important +} + +.pl-1, +.px-1 { + padding-left: .25rem!important +} + +.p-2 { + padding: .5rem!important +} + +.pt-2, +.py-2 { + padding-top: .5rem!important +} + +.pr-2, +.px-2 { + padding-right: .5rem!important +} + +.pb-2, +.py-2 { + padding-bottom: .5rem!important +} + +.pl-2, +.px-2 { + padding-left: .5rem!important +} + +.p-3 { + padding: 1rem!important +} + +.pt-3, +.py-3 { + padding-top: 1rem!important +} + +.pr-3, +.px-3 { + padding-right: 1rem!important +} + +.pb-3, +.py-3 { + padding-bottom: 1rem!important +} + +.pl-3, +.px-3 { + padding-left: 1rem!important +} + +.p-4 { + padding: 1.5rem!important +} + +.pt-4, +.py-4 { + padding-top: 1.5rem!important +} + +.pr-4, +.px-4 { + padding-right: 1.5rem!important +} + +.pb-4, +.py-4 { + padding-bottom: 1.5rem!important +} + +.pl-4, +.px-4 { + padding-left: 1.5rem!important +} + +.p-5 { + padding: 3rem!important +} + +.pt-5, +.py-5 { + padding-top: 3rem!important +} + +.pr-5, +.px-5 { + padding-right: 3rem!important +} + +.pb-5, +.py-5 { + padding-bottom: 3rem!important +} + +.pl-5, +.px-5 { + padding-left: 3rem!important +} + +.m-n1 { + margin: -.25rem!important +} + +.mt-n1, +.my-n1 { + margin-top: -.25rem!important +} + +.mr-n1, +.mx-n1 { + margin-right: -.25rem!important +} + +.mb-n1, +.my-n1 { + margin-bottom: -.25rem!important +} + +.ml-n1, +.mx-n1 { + margin-left: -.25rem!important +} + +.m-n2 { + margin: -.5rem!important +} + +.mt-n2, +.my-n2 { + margin-top: -.5rem!important +} + +.mr-n2, +.mx-n2 { + margin-right: -.5rem!important +} + +.mb-n2, +.my-n2 { + margin-bottom: -.5rem!important +} + +.ml-n2, +.mx-n2 { + margin-left: -.5rem!important +} + +.m-n3 { + margin: -1rem!important +} + +.mt-n3, +.my-n3 { + margin-top: -1rem!important +} + +.mr-n3, +.mx-n3 { + margin-right: -1rem!important +} + +.mb-n3, +.my-n3 { + margin-bottom: -1rem!important +} + +.ml-n3, +.mx-n3 { + margin-left: -1rem!important +} + +.m-n4 { + margin: -1.5rem!important +} + +.mt-n4, +.my-n4 { + margin-top: -1.5rem!important +} + +.mr-n4, +.mx-n4 { + margin-right: -1.5rem!important +} + +.mb-n4, +.my-n4 { + margin-bottom: -1.5rem!important +} + +.ml-n4, +.mx-n4 { + margin-left: -1.5rem!important +} + +.m-n5 { + margin: -3rem!important +} + +.mt-n5, +.my-n5 { + margin-top: -3rem!important +} + +.mr-n5, +.mx-n5 { + margin-right: -3rem!important +} + +.mb-n5, +.my-n5 { + margin-bottom: -3rem!important +} + +.ml-n5, +.mx-n5 { + margin-left: -3rem!important +} + +.m-auto { + margin: auto!important +} + +.mt-auto, +.my-auto { + margin-top: auto!important +} + +.mr-auto, +.mx-auto { + margin-right: auto!important +} + +.mb-auto, +.my-auto { + margin-bottom: auto!important +} + +.ml-auto, +.mx-auto { + margin-left: auto!important +} + +@media (min-width:576px) { + .m-sm-0 { + margin: 0!important + } + .mt-sm-0, + .my-sm-0 { + margin-top: 0!important + } + .mr-sm-0, + .mx-sm-0 { + margin-right: 0!important + } + .mb-sm-0, + .my-sm-0 { + margin-bottom: 0!important + } + .ml-sm-0, + .mx-sm-0 { + margin-left: 0!important + } + .m-sm-1 { + margin: .25rem!important + } + .mt-sm-1, + .my-sm-1 { + margin-top: .25rem!important + } + .mr-sm-1, + .mx-sm-1 { + margin-right: .25rem!important + } + .mb-sm-1, + .my-sm-1 { + margin-bottom: .25rem!important + } + .ml-sm-1, + .mx-sm-1 { + margin-left: .25rem!important + } + .m-sm-2 { + margin: .5rem!important + } + .mt-sm-2, + .my-sm-2 { + margin-top: .5rem!important + } + .mr-sm-2, + .mx-sm-2 { + margin-right: .5rem!important + } + .mb-sm-2, + .my-sm-2 { + margin-bottom: .5rem!important + } + .ml-sm-2, + .mx-sm-2 { + margin-left: .5rem!important + } + .m-sm-3 { + margin: 1rem!important + } + .mt-sm-3, + .my-sm-3 { + margin-top: 1rem!important + } + .mr-sm-3, + .mx-sm-3 { + margin-right: 1rem!important + } + .mb-sm-3, + .my-sm-3 { + margin-bottom: 1rem!important + } + .ml-sm-3, + .mx-sm-3 { + margin-left: 1rem!important + } + .m-sm-4 { + margin: 1.5rem!important + } + .mt-sm-4, + .my-sm-4 { + margin-top: 1.5rem!important + } + .mr-sm-4, + .mx-sm-4 { + margin-right: 1.5rem!important + } + .mb-sm-4, + .my-sm-4 { + margin-bottom: 1.5rem!important + } + .ml-sm-4, + .mx-sm-4 { + margin-left: 1.5rem!important + } + .m-sm-5 { + margin: 3rem!important + } + .mt-sm-5, + .my-sm-5 { + margin-top: 3rem!important + } + .mr-sm-5, + .mx-sm-5 { + margin-right: 3rem!important + } + .mb-sm-5, + .my-sm-5 { + margin-bottom: 3rem!important + } + .ml-sm-5, + .mx-sm-5 { + margin-left: 3rem!important + } + .p-sm-0 { + padding: 0!important + } + .pt-sm-0, + .py-sm-0 { + padding-top: 0!important + } + .pr-sm-0, + .px-sm-0 { + padding-right: 0!important + } + .pb-sm-0, + .py-sm-0 { + padding-bottom: 0!important + } + .pl-sm-0, + .px-sm-0 { + padding-left: 0!important + } + .p-sm-1 { + padding: .25rem!important + } + .pt-sm-1, + .py-sm-1 { + padding-top: .25rem!important + } + .pr-sm-1, + .px-sm-1 { + padding-right: .25rem!important + } + .pb-sm-1, + .py-sm-1 { + padding-bottom: .25rem!important + } + .pl-sm-1, + .px-sm-1 { + padding-left: .25rem!important + } + .p-sm-2 { + padding: .5rem!important + } + .pt-sm-2, + .py-sm-2 { + padding-top: .5rem!important + } + .pr-sm-2, + .px-sm-2 { + padding-right: .5rem!important + } + .pb-sm-2, + .py-sm-2 { + padding-bottom: .5rem!important + } + .pl-sm-2, + .px-sm-2 { + padding-left: .5rem!important + } + .p-sm-3 { + padding: 1rem!important + } + .pt-sm-3, + .py-sm-3 { + padding-top: 1rem!important + } + .pr-sm-3, + .px-sm-3 { + padding-right: 1rem!important + } + .pb-sm-3, + .py-sm-3 { + padding-bottom: 1rem!important + } + .pl-sm-3, + .px-sm-3 { + padding-left: 1rem!important + } + .p-sm-4 { + padding: 1.5rem!important + } + .pt-sm-4, + .py-sm-4 { + padding-top: 1.5rem!important + } + .pr-sm-4, + .px-sm-4 { + padding-right: 1.5rem!important + } + .pb-sm-4, + .py-sm-4 { + padding-bottom: 1.5rem!important + } + .pl-sm-4, + .px-sm-4 { + padding-left: 1.5rem!important + } + .p-sm-5 { + padding: 3rem!important + } + .pt-sm-5, + .py-sm-5 { + padding-top: 3rem!important + } + .pr-sm-5, + .px-sm-5 { + padding-right: 3rem!important + } + .pb-sm-5, + .py-sm-5 { + padding-bottom: 3rem!important + } + .pl-sm-5, + .px-sm-5 { + padding-left: 3rem!important + } + .m-sm-n1 { + margin: -.25rem!important + } + .mt-sm-n1, + .my-sm-n1 { + margin-top: -.25rem!important + } + .mr-sm-n1, + .mx-sm-n1 { + margin-right: -.25rem!important + } + .mb-sm-n1, + .my-sm-n1 { + margin-bottom: -.25rem!important + } + .ml-sm-n1, + .mx-sm-n1 { + margin-left: -.25rem!important + } + .m-sm-n2 { + margin: -.5rem!important + } + .mt-sm-n2, + .my-sm-n2 { + margin-top: -.5rem!important + } + .mr-sm-n2, + .mx-sm-n2 { + margin-right: -.5rem!important + } + .mb-sm-n2, + .my-sm-n2 { + margin-bottom: -.5rem!important + } + .ml-sm-n2, + .mx-sm-n2 { + margin-left: -.5rem!important + } + .m-sm-n3 { + margin: -1rem!important + } + .mt-sm-n3, + .my-sm-n3 { + margin-top: -1rem!important + } + .mr-sm-n3, + .mx-sm-n3 { + margin-right: -1rem!important + } + .mb-sm-n3, + .my-sm-n3 { + margin-bottom: -1rem!important + } + .ml-sm-n3, + .mx-sm-n3 { + margin-left: -1rem!important + } + .m-sm-n4 { + margin: -1.5rem!important + } + .mt-sm-n4, + .my-sm-n4 { + margin-top: -1.5rem!important + } + .mr-sm-n4, + .mx-sm-n4 { + margin-right: -1.5rem!important + } + .mb-sm-n4, + .my-sm-n4 { + margin-bottom: -1.5rem!important + } + .ml-sm-n4, + .mx-sm-n4 { + margin-left: -1.5rem!important + } + .m-sm-n5 { + margin: -3rem!important + } + .mt-sm-n5, + .my-sm-n5 { + margin-top: -3rem!important + } + .mr-sm-n5, + .mx-sm-n5 { + margin-right: -3rem!important + } + .mb-sm-n5, + .my-sm-n5 { + margin-bottom: -3rem!important + } + .ml-sm-n5, + .mx-sm-n5 { + margin-left: -3rem!important + } + .m-sm-auto { + margin: auto!important + } + .mt-sm-auto, + .my-sm-auto { + margin-top: auto!important + } + .mr-sm-auto, + .mx-sm-auto { + margin-right: auto!important + } + .mb-sm-auto, + .my-sm-auto { + margin-bottom: auto!important + } + .ml-sm-auto, + .mx-sm-auto { + margin-left: auto!important + } +} + +@media (min-width:768px) { + .m-md-0 { + margin: 0!important + } + .mt-md-0, + .my-md-0 { + margin-top: 0!important + } + .mr-md-0, + .mx-md-0 { + margin-right: 0!important + } + .mb-md-0, + .my-md-0 { + margin-bottom: 0!important + } + .ml-md-0, + .mx-md-0 { + margin-left: 0!important + } + .m-md-1 { + margin: .25rem!important + } + .mt-md-1, + .my-md-1 { + margin-top: .25rem!important + } + .mr-md-1, + .mx-md-1 { + margin-right: .25rem!important + } + .mb-md-1, + .my-md-1 { + margin-bottom: .25rem!important + } + .ml-md-1, + .mx-md-1 { + margin-left: .25rem!important + } + .m-md-2 { + margin: .5rem!important + } + .mt-md-2, + .my-md-2 { + margin-top: .5rem!important + } + .mr-md-2, + .mx-md-2 { + margin-right: .5rem!important + } + .mb-md-2, + .my-md-2 { + margin-bottom: .5rem!important + } + .ml-md-2, + .mx-md-2 { + margin-left: .5rem!important + } + .m-md-3 { + margin: 1rem!important + } + .mt-md-3, + .my-md-3 { + margin-top: 1rem!important + } + .mr-md-3, + .mx-md-3 { + margin-right: 1rem!important + } + .mb-md-3, + .my-md-3 { + margin-bottom: 1rem!important + } + .ml-md-3, + .mx-md-3 { + margin-left: 1rem!important + } + .m-md-4 { + margin: 1.5rem!important + } + .mt-md-4, + .my-md-4 { + margin-top: 1.5rem!important + } + .mr-md-4, + .mx-md-4 { + margin-right: 1.5rem!important + } + .mb-md-4, + .my-md-4 { + margin-bottom: 1.5rem!important + } + .ml-md-4, + .mx-md-4 { + margin-left: 1.5rem!important + } + .m-md-5 { + margin: 3rem!important + } + .mt-md-5, + .my-md-5 { + margin-top: 3rem!important + } + .mr-md-5, + .mx-md-5 { + margin-right: 3rem!important + } + .mb-md-5, + .my-md-5 { + margin-bottom: 3rem!important + } + .ml-md-5, + .mx-md-5 { + margin-left: 3rem!important + } + .p-md-0 { + padding: 0!important + } + .pt-md-0, + .py-md-0 { + padding-top: 0!important + } + .pr-md-0, + .px-md-0 { + padding-right: 0!important + } + .pb-md-0, + .py-md-0 { + padding-bottom: 0!important + } + .pl-md-0, + .px-md-0 { + padding-left: 0!important + } + .p-md-1 { + padding: .25rem!important + } + .pt-md-1, + .py-md-1 { + padding-top: .25rem!important + } + .pr-md-1, + .px-md-1 { + padding-right: .25rem!important + } + .pb-md-1, + .py-md-1 { + padding-bottom: .25rem!important + } + .pl-md-1, + .px-md-1 { + padding-left: .25rem!important + } + .p-md-2 { + padding: .5rem!important + } + .pt-md-2, + .py-md-2 { + padding-top: .5rem!important + } + .pr-md-2, + .px-md-2 { + padding-right: .5rem!important + } + .pb-md-2, + .py-md-2 { + padding-bottom: .5rem!important + } + .pl-md-2, + .px-md-2 { + padding-left: .5rem!important + } + .p-md-3 { + padding: 1rem!important + } + .pt-md-3, + .py-md-3 { + padding-top: 1rem!important + } + .pr-md-3, + .px-md-3 { + padding-right: 1rem!important + } + .pb-md-3, + .py-md-3 { + padding-bottom: 1rem!important + } + .pl-md-3, + .px-md-3 { + padding-left: 1rem!important + } + .p-md-4 { + padding: 1.5rem!important + } + .pt-md-4, + .py-md-4 { + padding-top: 1.5rem!important + } + .pr-md-4, + .px-md-4 { + padding-right: 1.5rem!important + } + .pb-md-4, + .py-md-4 { + padding-bottom: 1.5rem!important + } + .pl-md-4, + .px-md-4 { + padding-left: 1.5rem!important + } + .p-md-5 { + padding: 3rem!important + } + .pt-md-5, + .py-md-5 { + padding-top: 3rem!important + } + .pr-md-5, + .px-md-5 { + padding-right: 3rem!important + } + .pb-md-5, + .py-md-5 { + padding-bottom: 3rem!important + } + .pl-md-5, + .px-md-5 { + padding-left: 3rem!important + } + .m-md-n1 { + margin: -.25rem!important + } + .mt-md-n1, + .my-md-n1 { + margin-top: -.25rem!important + } + .mr-md-n1, + .mx-md-n1 { + margin-right: -.25rem!important + } + .mb-md-n1, + .my-md-n1 { + margin-bottom: -.25rem!important + } + .ml-md-n1, + .mx-md-n1 { + margin-left: -.25rem!important + } + .m-md-n2 { + margin: -.5rem!important + } + .mt-md-n2, + .my-md-n2 { + margin-top: -.5rem!important + } + .mr-md-n2, + .mx-md-n2 { + margin-right: -.5rem!important + } + .mb-md-n2, + .my-md-n2 { + margin-bottom: -.5rem!important + } + .ml-md-n2, + .mx-md-n2 { + margin-left: -.5rem!important + } + .m-md-n3 { + margin: -1rem!important + } + .mt-md-n3, + .my-md-n3 { + margin-top: -1rem!important + } + .mr-md-n3, + .mx-md-n3 { + margin-right: -1rem!important + } + .mb-md-n3, + .my-md-n3 { + margin-bottom: -1rem!important + } + .ml-md-n3, + .mx-md-n3 { + margin-left: -1rem!important + } + .m-md-n4 { + margin: -1.5rem!important + } + .mt-md-n4, + .my-md-n4 { + margin-top: -1.5rem!important + } + .mr-md-n4, + .mx-md-n4 { + margin-right: -1.5rem!important + } + .mb-md-n4, + .my-md-n4 { + margin-bottom: -1.5rem!important + } + .ml-md-n4, + .mx-md-n4 { + margin-left: -1.5rem!important + } + .m-md-n5 { + margin: -3rem!important + } + .mt-md-n5, + .my-md-n5 { + margin-top: -3rem!important + } + .mr-md-n5, + .mx-md-n5 { + margin-right: -3rem!important + } + .mb-md-n5, + .my-md-n5 { + margin-bottom: -3rem!important + } + .ml-md-n5, + .mx-md-n5 { + margin-left: -3rem!important + } + .m-md-auto { + margin: auto!important + } + .mt-md-auto, + .my-md-auto { + margin-top: auto!important + } + .mr-md-auto, + .mx-md-auto { + margin-right: auto!important + } + .mb-md-auto, + .my-md-auto { + margin-bottom: auto!important + } + .ml-md-auto, + .mx-md-auto { + margin-left: auto!important + } +} + +@media (min-width:992px) { + .m-lg-0 { + margin: 0!important + } + .mt-lg-0, + .my-lg-0 { + margin-top: 0!important + } + .mr-lg-0, + .mx-lg-0 { + margin-right: 0!important + } + .mb-lg-0, + .my-lg-0 { + margin-bottom: 0!important + } + .ml-lg-0, + .mx-lg-0 { + margin-left: 0!important + } + .m-lg-1 { + margin: .25rem!important + } + .mt-lg-1, + .my-lg-1 { + margin-top: .25rem!important + } + .mr-lg-1, + .mx-lg-1 { + margin-right: .25rem!important + } + .mb-lg-1, + .my-lg-1 { + margin-bottom: .25rem!important + } + .ml-lg-1, + .mx-lg-1 { + margin-left: .25rem!important + } + .m-lg-2 { + margin: .5rem!important + } + .mt-lg-2, + .my-lg-2 { + margin-top: .5rem!important + } + .mr-lg-2, + .mx-lg-2 { + margin-right: .5rem!important + } + .mb-lg-2, + .my-lg-2 { + margin-bottom: .5rem!important + } + .ml-lg-2, + .mx-lg-2 { + margin-left: .5rem!important + } + .m-lg-3 { + margin: 1rem!important + } + .mt-lg-3, + .my-lg-3 { + margin-top: 1rem!important + } + .mr-lg-3, + .mx-lg-3 { + margin-right: 1rem!important + } + .mb-lg-3, + .my-lg-3 { + margin-bottom: 1rem!important + } + .ml-lg-3, + .mx-lg-3 { + margin-left: 1rem!important + } + .m-lg-4 { + margin: 1.5rem!important + } + .mt-lg-4, + .my-lg-4 { + margin-top: 1.5rem!important + } + .mr-lg-4, + .mx-lg-4 { + margin-right: 1.5rem!important + } + .mb-lg-4, + .my-lg-4 { + margin-bottom: 1.5rem!important + } + .ml-lg-4, + .mx-lg-4 { + margin-left: 1.5rem!important + } + .m-lg-5 { + margin: 3rem!important + } + .mt-lg-5, + .my-lg-5 { + margin-top: 3rem!important + } + .mr-lg-5, + .mx-lg-5 { + margin-right: 3rem!important + } + .mb-lg-5, + .my-lg-5 { + margin-bottom: 3rem!important + } + .ml-lg-5, + .mx-lg-5 { + margin-left: 3rem!important + } + .p-lg-0 { + padding: 0!important + } + .pt-lg-0, + .py-lg-0 { + padding-top: 0!important + } + .pr-lg-0, + .px-lg-0 { + padding-right: 0!important + } + .pb-lg-0, + .py-lg-0 { + padding-bottom: 0!important + } + .pl-lg-0, + .px-lg-0 { + padding-left: 0!important + } + .p-lg-1 { + padding: .25rem!important + } + .pt-lg-1, + .py-lg-1 { + padding-top: .25rem!important + } + .pr-lg-1, + .px-lg-1 { + padding-right: .25rem!important + } + .pb-lg-1, + .py-lg-1 { + padding-bottom: .25rem!important + } + .pl-lg-1, + .px-lg-1 { + padding-left: .25rem!important + } + .p-lg-2 { + padding: .5rem!important + } + .pt-lg-2, + .py-lg-2 { + padding-top: .5rem!important + } + .pr-lg-2, + .px-lg-2 { + padding-right: .5rem!important + } + .pb-lg-2, + .py-lg-2 { + padding-bottom: .5rem!important + } + .pl-lg-2, + .px-lg-2 { + padding-left: .5rem!important + } + .p-lg-3 { + padding: 1rem!important + } + .pt-lg-3, + .py-lg-3 { + padding-top: 1rem!important + } + .pr-lg-3, + .px-lg-3 { + padding-right: 1rem!important + } + .pb-lg-3, + .py-lg-3 { + padding-bottom: 1rem!important + } + .pl-lg-3, + .px-lg-3 { + padding-left: 1rem!important + } + .p-lg-4 { + padding: 1.5rem!important + } + .pt-lg-4, + .py-lg-4 { + padding-top: 1.5rem!important + } + .pr-lg-4, + .px-lg-4 { + padding-right: 1.5rem!important + } + .pb-lg-4, + .py-lg-4 { + padding-bottom: 1.5rem!important + } + .pl-lg-4, + .px-lg-4 { + padding-left: 1.5rem!important + } + .p-lg-5 { + padding: 3rem!important + } + .pt-lg-5, + .py-lg-5 { + padding-top: 3rem!important + } + .pr-lg-5, + .px-lg-5 { + padding-right: 3rem!important + } + .pb-lg-5, + .py-lg-5 { + padding-bottom: 3rem!important + } + .pl-lg-5, + .px-lg-5 { + padding-left: 3rem!important + } + .m-lg-n1 { + margin: -.25rem!important + } + .mt-lg-n1, + .my-lg-n1 { + margin-top: -.25rem!important + } + .mr-lg-n1, + .mx-lg-n1 { + margin-right: -.25rem!important + } + .mb-lg-n1, + .my-lg-n1 { + margin-bottom: -.25rem!important + } + .ml-lg-n1, + .mx-lg-n1 { + margin-left: -.25rem!important + } + .m-lg-n2 { + margin: -.5rem!important + } + .mt-lg-n2, + .my-lg-n2 { + margin-top: -.5rem!important + } + .mr-lg-n2, + .mx-lg-n2 { + margin-right: -.5rem!important + } + .mb-lg-n2, + .my-lg-n2 { + margin-bottom: -.5rem!important + } + .ml-lg-n2, + .mx-lg-n2 { + margin-left: -.5rem!important + } + .m-lg-n3 { + margin: -1rem!important + } + .mt-lg-n3, + .my-lg-n3 { + margin-top: -1rem!important + } + .mr-lg-n3, + .mx-lg-n3 { + margin-right: -1rem!important + } + .mb-lg-n3, + .my-lg-n3 { + margin-bottom: -1rem!important + } + .ml-lg-n3, + .mx-lg-n3 { + margin-left: -1rem!important + } + .m-lg-n4 { + margin: -1.5rem!important + } + .mt-lg-n4, + .my-lg-n4 { + margin-top: -1.5rem!important + } + .mr-lg-n4, + .mx-lg-n4 { + margin-right: -1.5rem!important + } + .mb-lg-n4, + .my-lg-n4 { + margin-bottom: -1.5rem!important + } + .ml-lg-n4, + .mx-lg-n4 { + margin-left: -1.5rem!important + } + .m-lg-n5 { + margin: -3rem!important + } + .mt-lg-n5, + .my-lg-n5 { + margin-top: -3rem!important + } + .mr-lg-n5, + .mx-lg-n5 { + margin-right: -3rem!important + } + .mb-lg-n5, + .my-lg-n5 { + margin-bottom: -3rem!important + } + .ml-lg-n5, + .mx-lg-n5 { + margin-left: -3rem!important + } + .m-lg-auto { + margin: auto!important + } + .mt-lg-auto, + .my-lg-auto { + margin-top: auto!important + } + .mr-lg-auto, + .mx-lg-auto { + margin-right: auto!important + } + .mb-lg-auto, + .my-lg-auto { + margin-bottom: auto!important + } + .ml-lg-auto, + .mx-lg-auto { + margin-left: auto!important + } +} + +@media (min-width:1200px) { + .m-xl-0 { + margin: 0!important + } + .mt-xl-0, + .my-xl-0 { + margin-top: 0!important + } + .mr-xl-0, + .mx-xl-0 { + margin-right: 0!important + } + .mb-xl-0, + .my-xl-0 { + margin-bottom: 0!important + } + .ml-xl-0, + .mx-xl-0 { + margin-left: 0!important + } + .m-xl-1 { + margin: .25rem!important + } + .mt-xl-1, + .my-xl-1 { + margin-top: .25rem!important + } + .mr-xl-1, + .mx-xl-1 { + margin-right: .25rem!important + } + .mb-xl-1, + .my-xl-1 { + margin-bottom: .25rem!important + } + .ml-xl-1, + .mx-xl-1 { + margin-left: .25rem!important + } + .m-xl-2 { + margin: .5rem!important + } + .mt-xl-2, + .my-xl-2 { + margin-top: .5rem!important + } + .mr-xl-2, + .mx-xl-2 { + margin-right: .5rem!important + } + .mb-xl-2, + .my-xl-2 { + margin-bottom: .5rem!important + } + .ml-xl-2, + .mx-xl-2 { + margin-left: .5rem!important + } + .m-xl-3 { + margin: 1rem!important + } + .mt-xl-3, + .my-xl-3 { + margin-top: 1rem!important + } + .mr-xl-3, + .mx-xl-3 { + margin-right: 1rem!important + } + .mb-xl-3, + .my-xl-3 { + margin-bottom: 1rem!important + } + .ml-xl-3, + .mx-xl-3 { + margin-left: 1rem!important + } + .m-xl-4 { + margin: 1.5rem!important + } + .mt-xl-4, + .my-xl-4 { + margin-top: 1.5rem!important + } + .mr-xl-4, + .mx-xl-4 { + margin-right: 1.5rem!important + } + .mb-xl-4, + .my-xl-4 { + margin-bottom: 1.5rem!important + } + .ml-xl-4, + .mx-xl-4 { + margin-left: 1.5rem!important + } + .m-xl-5 { + margin: 3rem!important + } + .mt-xl-5, + .my-xl-5 { + margin-top: 3rem!important + } + .mr-xl-5, + .mx-xl-5 { + margin-right: 3rem!important + } + .mb-xl-5, + .my-xl-5 { + margin-bottom: 3rem!important + } + .ml-xl-5, + .mx-xl-5 { + margin-left: 3rem!important + } + .p-xl-0 { + padding: 0!important + } + .pt-xl-0, + .py-xl-0 { + padding-top: 0!important + } + .pr-xl-0, + .px-xl-0 { + padding-right: 0!important + } + .pb-xl-0, + .py-xl-0 { + padding-bottom: 0!important + } + .pl-xl-0, + .px-xl-0 { + padding-left: 0!important + } + .p-xl-1 { + padding: .25rem!important + } + .pt-xl-1, + .py-xl-1 { + padding-top: .25rem!important + } + .pr-xl-1, + .px-xl-1 { + padding-right: .25rem!important + } + .pb-xl-1, + .py-xl-1 { + padding-bottom: .25rem!important + } + .pl-xl-1, + .px-xl-1 { + padding-left: .25rem!important + } + .p-xl-2 { + padding: .5rem!important + } + .pt-xl-2, + .py-xl-2 { + padding-top: .5rem!important + } + .pr-xl-2, + .px-xl-2 { + padding-right: .5rem!important + } + .pb-xl-2, + .py-xl-2 { + padding-bottom: .5rem!important + } + .pl-xl-2, + .px-xl-2 { + padding-left: .5rem!important + } + .p-xl-3 { + padding: 1rem!important + } + .pt-xl-3, + .py-xl-3 { + padding-top: 1rem!important + } + .pr-xl-3, + .px-xl-3 { + padding-right: 1rem!important + } + .pb-xl-3, + .py-xl-3 { + padding-bottom: 1rem!important + } + .pl-xl-3, + .px-xl-3 { + padding-left: 1rem!important + } + .p-xl-4 { + padding: 1.5rem!important + } + .pt-xl-4, + .py-xl-4 { + padding-top: 1.5rem!important + } + .pr-xl-4, + .px-xl-4 { + padding-right: 1.5rem!important + } + .pb-xl-4, + .py-xl-4 { + padding-bottom: 1.5rem!important + } + .pl-xl-4, + .px-xl-4 { + padding-left: 1.5rem!important + } + .p-xl-5 { + padding: 3rem!important + } + .pt-xl-5, + .py-xl-5 { + padding-top: 3rem!important + } + .pr-xl-5, + .px-xl-5 { + padding-right: 3rem!important + } + .pb-xl-5, + .py-xl-5 { + padding-bottom: 3rem!important + } + .pl-xl-5, + .px-xl-5 { + padding-left: 3rem!important + } + .m-xl-n1 { + margin: -.25rem!important + } + .mt-xl-n1, + .my-xl-n1 { + margin-top: -.25rem!important + } + .mr-xl-n1, + .mx-xl-n1 { + margin-right: -.25rem!important + } + .mb-xl-n1, + .my-xl-n1 { + margin-bottom: -.25rem!important + } + .ml-xl-n1, + .mx-xl-n1 { + margin-left: -.25rem!important + } + .m-xl-n2 { + margin: -.5rem!important + } + .mt-xl-n2, + .my-xl-n2 { + margin-top: -.5rem!important + } + .mr-xl-n2, + .mx-xl-n2 { + margin-right: -.5rem!important + } + .mb-xl-n2, + .my-xl-n2 { + margin-bottom: -.5rem!important + } + .ml-xl-n2, + .mx-xl-n2 { + margin-left: -.5rem!important + } + .m-xl-n3 { + margin: -1rem!important + } + .mt-xl-n3, + .my-xl-n3 { + margin-top: -1rem!important + } + .mr-xl-n3, + .mx-xl-n3 { + margin-right: -1rem!important + } + .mb-xl-n3, + .my-xl-n3 { + margin-bottom: -1rem!important + } + .ml-xl-n3, + .mx-xl-n3 { + margin-left: -1rem!important + } + .m-xl-n4 { + margin: -1.5rem!important + } + .mt-xl-n4, + .my-xl-n4 { + margin-top: -1.5rem!important + } + .mr-xl-n4, + .mx-xl-n4 { + margin-right: -1.5rem!important + } + .mb-xl-n4, + .my-xl-n4 { + margin-bottom: -1.5rem!important + } + .ml-xl-n4, + .mx-xl-n4 { + margin-left: -1.5rem!important + } + .m-xl-n5 { + margin: -3rem!important + } + .mt-xl-n5, + .my-xl-n5 { + margin-top: -3rem!important + } + .mr-xl-n5, + .mx-xl-n5 { + margin-right: -3rem!important + } + .mb-xl-n5, + .my-xl-n5 { + margin-bottom: -3rem!important + } + .ml-xl-n5, + .mx-xl-n5 { + margin-left: -3rem!important + } + .m-xl-auto { + margin: auto!important + } + .mt-xl-auto, + .my-xl-auto { + margin-top: auto!important + } + .mr-xl-auto, + .mx-xl-auto { + margin-right: auto!important + } + .mb-xl-auto, + .my-xl-auto { + margin-bottom: auto!important + } + .ml-xl-auto, + .mx-xl-auto { + margin-left: auto!important + } +} + +.text-monospace { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace!important +} + +.text-justify { + text-align: justify!important +} + +.text-wrap { + white-space: normal!important +} + +.text-nowrap { + white-space: nowrap!important +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap +} + +.text-left { + text-align: left!important +} + +.text-right { + text-align: right!important +} + +.text-center { + text-align: center!important +} + +@media (min-width:576px) { + .text-sm-left { + text-align: left!important + } + .text-sm-right { + text-align: right!important + } + .text-sm-center { + text-align: center!important + } +} + +@media (min-width:768px) { + .text-md-left { + text-align: left!important + } + .text-md-right { + text-align: right!important + } + .text-md-center { + text-align: center!important + } +} + +@media (min-width:992px) { + .text-lg-left { + text-align: left!important + } + .text-lg-right { + text-align: right!important + } + .text-lg-center { + text-align: center!important + } +} + +@media (min-width:1200px) { + .text-xl-left { + text-align: left!important + } + .text-xl-right { + text-align: right!important + } + .text-xl-center { + text-align: center!important + } +} + +.text-lowercase { + text-transform: lowercase!important +} + +.text-uppercase { + text-transform: uppercase!important +} + +.text-capitalize { + text-transform: capitalize!important +} + +.font-weight-light { + font-weight: 300!important +} + +.font-weight-lighter { + font-weight: lighter!important +} + +.font-weight-normal { + font-weight: 400!important +} + +.font-weight-bold { + font-weight: 700!important +} + +.font-weight-bolder { + font-weight: bolder!important +} + +.font-italic { + font-style: italic!important +} + +.text-white { + color: #fff!important +} + +.text-primary { + color: #007bff!important +} + +a.text-primary:focus, +a.text-primary:hover { + color: #0056b3!important +} + +.text-secondary { + color: #6c757d!important +} + +a.text-secondary:focus, +a.text-secondary:hover { + color: #494f54!important +} + +.text-success { + color: #28a745!important +} + +a.text-success:focus, +a.text-success:hover { + color: #19692c!important +} + +.text-info { + color: #17a2b8!important +} + +a.text-info:focus, +a.text-info:hover { + color: #0f6674!important +} + +.text-warning { + color: #ffc107!important +} + +a.text-warning:focus, +a.text-warning:hover { + color: #ba8b00!important +} + +.text-danger { + color: #dc3545!important +} + +a.text-danger:focus, +a.text-danger:hover { + color: #a71d2a!important +} + +.text-light { + color: #f8f9fa!important +} + +a.text-light:focus, +a.text-light:hover { + color: #cbd3da!important +} + +.text-dark { + color: #343a40!important +} + +a.text-dark:focus, +a.text-dark:hover { + color: #121416!important +} + +.text-body { + color: #212529!important +} + +.text-muted { + color: #6c757d!important +} + +.text-black-50 { + color: rgba(0, 0, 0, .5)!important +} + +.text-white-50 { + color: rgba(255, 255, 255, .5)!important +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0 +} + +.text-decoration-none { + text-decoration: none!important +} + +.text-break { + word-break: break-word!important; + overflow-wrap: break-word!important +} + +.text-reset { + color: inherit!important +} + +.visible { + visibility: visible!important +} + +.invisible { + visibility: hidden!important +} + +@media print { + *, + ::after, + ::before { + text-shadow: none!important; + box-shadow: none!important + } + a:not(.btn) { + text-decoration: underline + } + abbr[title]::after { + content: " (" attr(title) ")" + } + pre { + white-space: pre-wrap!important + } + blockquote, + pre { + border: 1px solid #adb5bd; + page-break-inside: avoid + } + thead { + display: table-header-group + } + img, + tr { + page-break-inside: avoid + } + h2, + h3, + p { + orphans: 3; + widows: 3 + } + h2, + h3 { + page-break-after: avoid + } + @page { + size: a3 + } + body { + min-width: 992px!important + } + .container { + min-width: 992px!important + } + .navbar { + display: none + } + .badge { + border: 1px solid #000 + } + .table { + border-collapse: collapse!important + } + .table td, + .table th { + background-color: #fff!important + } + .table-bordered td, + .table-bordered th { + border: 1px solid #dee2e6!important + } + .table-dark { + color: inherit + } + .table-dark tbody+tbody, + .table-dark td, + .table-dark th, + .table-dark thead th { + border-color: #dee2e6 + } + .table .thead-dark th { + color: inherit; + border-color: #dee2e6 + } +} \ No newline at end of file diff --git a/static/css/ionicons.min.css b/static/css/ionicons.min.css new file mode 100644 index 0000000..fde8597 --- /dev/null +++ b/static/css/ionicons.min.css @@ -0,0 +1,11 @@ +/*! + Ionicons, v4.5.9-1 + Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ + https://twitter.com/benjsperry https://twitter.com/ionicframework + MIT License: https://github.com/driftyco/ionicons + + Android-style icons originally built by Google’s + Material Design Icons: https://github.com/google/material-design-icons + used under CC BY http://creativecommons.org/licenses/by/4.0/ + Modified icons to fit ionicon’s grid from original. + */@font-face{font-family:"Ionicons";src:url("../fonts/ionicons.eot?v=4.5.9-1");src:url("../fonts/ionicons.eot?v=4.5.9-1#iefix") format("embedded-opentype"),url("../fonts/ionicons.woff2?v=4.5.9-1") format("woff2"),url("../fonts/ionicons.woff?v=4.5.9-1") format("woff"),url("../fonts/ionicons.ttf?v=4.5.9-1") format("truetype"),url("../fonts/ionicons.svg?v=4.5.9-1#Ionicons") format("svg");font-weight:normal;font-style:normal}.ion,.ionicons,.ion-ios-add:before,.ion-ios-add-circle:before,.ion-ios-add-circle-outline:before,.ion-ios-airplane:before,.ion-ios-alarm:before,.ion-ios-albums:before,.ion-ios-alert:before,.ion-ios-american-football:before,.ion-ios-analytics:before,.ion-ios-aperture:before,.ion-ios-apps:before,.ion-ios-appstore:before,.ion-ios-archive:before,.ion-ios-arrow-back:before,.ion-ios-arrow-down:before,.ion-ios-arrow-dropdown:before,.ion-ios-arrow-dropdown-circle:before,.ion-ios-arrow-dropleft:before,.ion-ios-arrow-dropleft-circle:before,.ion-ios-arrow-dropright:before,.ion-ios-arrow-dropright-circle:before,.ion-ios-arrow-dropup:before,.ion-ios-arrow-dropup-circle:before,.ion-ios-arrow-forward:before,.ion-ios-arrow-round-back:before,.ion-ios-arrow-round-down:before,.ion-ios-arrow-round-forward:before,.ion-ios-arrow-round-up:before,.ion-ios-arrow-up:before,.ion-ios-at:before,.ion-ios-attach:before,.ion-ios-backspace:before,.ion-ios-barcode:before,.ion-ios-baseball:before,.ion-ios-basket:before,.ion-ios-basketball:before,.ion-ios-battery-charging:before,.ion-ios-battery-dead:before,.ion-ios-battery-full:before,.ion-ios-beaker:before,.ion-ios-bed:before,.ion-ios-beer:before,.ion-ios-bicycle:before,.ion-ios-bluetooth:before,.ion-ios-boat:before,.ion-ios-body:before,.ion-ios-bonfire:before,.ion-ios-book:before,.ion-ios-bookmark:before,.ion-ios-bookmarks:before,.ion-ios-bowtie:before,.ion-ios-briefcase:before,.ion-ios-browsers:before,.ion-ios-brush:before,.ion-ios-bug:before,.ion-ios-build:before,.ion-ios-bulb:before,.ion-ios-bus:before,.ion-ios-business:before,.ion-ios-cafe:before,.ion-ios-calculator:before,.ion-ios-calendar:before,.ion-ios-call:before,.ion-ios-camera:before,.ion-ios-car:before,.ion-ios-card:before,.ion-ios-cart:before,.ion-ios-cash:before,.ion-ios-cellular:before,.ion-ios-chatboxes:before,.ion-ios-chatbubbles:before,.ion-ios-checkbox:before,.ion-ios-checkbox-outline:before,.ion-ios-checkmark:before,.ion-ios-checkmark-circle:before,.ion-ios-checkmark-circle-outline:before,.ion-ios-clipboard:before,.ion-ios-clock:before,.ion-ios-close:before,.ion-ios-close-circle:before,.ion-ios-close-circle-outline:before,.ion-ios-cloud:before,.ion-ios-cloud-circle:before,.ion-ios-cloud-done:before,.ion-ios-cloud-download:before,.ion-ios-cloud-outline:before,.ion-ios-cloud-upload:before,.ion-ios-cloudy:before,.ion-ios-cloudy-night:before,.ion-ios-code:before,.ion-ios-code-download:before,.ion-ios-code-working:before,.ion-ios-cog:before,.ion-ios-color-fill:before,.ion-ios-color-filter:before,.ion-ios-color-palette:before,.ion-ios-color-wand:before,.ion-ios-compass:before,.ion-ios-construct:before,.ion-ios-contact:before,.ion-ios-contacts:before,.ion-ios-contract:before,.ion-ios-contrast:before,.ion-ios-copy:before,.ion-ios-create:before,.ion-ios-crop:before,.ion-ios-cube:before,.ion-ios-cut:before,.ion-ios-desktop:before,.ion-ios-disc:before,.ion-ios-document:before,.ion-ios-done-all:before,.ion-ios-download:before,.ion-ios-easel:before,.ion-ios-egg:before,.ion-ios-exit:before,.ion-ios-expand:before,.ion-ios-eye:before,.ion-ios-eye-off:before,.ion-ios-fastforward:before,.ion-ios-female:before,.ion-ios-filing:before,.ion-ios-film:before,.ion-ios-finger-print:before,.ion-ios-fitness:before,.ion-ios-flag:before,.ion-ios-flame:before,.ion-ios-flash:before,.ion-ios-flash-off:before,.ion-ios-flashlight:before,.ion-ios-flask:before,.ion-ios-flower:before,.ion-ios-folder:before,.ion-ios-folder-open:before,.ion-ios-football:before,.ion-ios-funnel:before,.ion-ios-gift:before,.ion-ios-git-branch:before,.ion-ios-git-commit:before,.ion-ios-git-compare:before,.ion-ios-git-merge:before,.ion-ios-git-network:before,.ion-ios-git-pull-request:before,.ion-ios-glasses:before,.ion-ios-globe:before,.ion-ios-grid:before,.ion-ios-hammer:before,.ion-ios-hand:before,.ion-ios-happy:before,.ion-ios-headset:before,.ion-ios-heart:before,.ion-ios-heart-dislike:before,.ion-ios-heart-empty:before,.ion-ios-heart-half:before,.ion-ios-help:before,.ion-ios-help-buoy:before,.ion-ios-help-circle:before,.ion-ios-help-circle-outline:before,.ion-ios-home:before,.ion-ios-hourglass:before,.ion-ios-ice-cream:before,.ion-ios-image:before,.ion-ios-images:before,.ion-ios-infinite:before,.ion-ios-information:before,.ion-ios-information-circle:before,.ion-ios-information-circle-outline:before,.ion-ios-jet:before,.ion-ios-journal:before,.ion-ios-key:before,.ion-ios-keypad:before,.ion-ios-laptop:before,.ion-ios-leaf:before,.ion-ios-link:before,.ion-ios-list:before,.ion-ios-list-box:before,.ion-ios-locate:before,.ion-ios-lock:before,.ion-ios-log-in:before,.ion-ios-log-out:before,.ion-ios-magnet:before,.ion-ios-mail:before,.ion-ios-mail-open:before,.ion-ios-mail-unread:before,.ion-ios-male:before,.ion-ios-man:before,.ion-ios-map:before,.ion-ios-medal:before,.ion-ios-medical:before,.ion-ios-medkit:before,.ion-ios-megaphone:before,.ion-ios-menu:before,.ion-ios-mic:before,.ion-ios-mic-off:before,.ion-ios-microphone:before,.ion-ios-moon:before,.ion-ios-more:before,.ion-ios-move:before,.ion-ios-musical-note:before,.ion-ios-musical-notes:before,.ion-ios-navigate:before,.ion-ios-notifications:before,.ion-ios-notifications-off:before,.ion-ios-notifications-outline:before,.ion-ios-nuclear:before,.ion-ios-nutrition:before,.ion-ios-open:before,.ion-ios-options:before,.ion-ios-outlet:before,.ion-ios-paper:before,.ion-ios-paper-plane:before,.ion-ios-partly-sunny:before,.ion-ios-pause:before,.ion-ios-paw:before,.ion-ios-people:before,.ion-ios-person:before,.ion-ios-person-add:before,.ion-ios-phone-landscape:before,.ion-ios-phone-portrait:before,.ion-ios-photos:before,.ion-ios-pie:before,.ion-ios-pin:before,.ion-ios-pint:before,.ion-ios-pizza:before,.ion-ios-planet:before,.ion-ios-play:before,.ion-ios-play-circle:before,.ion-ios-podium:before,.ion-ios-power:before,.ion-ios-pricetag:before,.ion-ios-pricetags:before,.ion-ios-print:before,.ion-ios-pulse:before,.ion-ios-qr-scanner:before,.ion-ios-quote:before,.ion-ios-radio:before,.ion-ios-radio-button-off:before,.ion-ios-radio-button-on:before,.ion-ios-rainy:before,.ion-ios-recording:before,.ion-ios-redo:before,.ion-ios-refresh:before,.ion-ios-refresh-circle:before,.ion-ios-remove:before,.ion-ios-remove-circle:before,.ion-ios-remove-circle-outline:before,.ion-ios-reorder:before,.ion-ios-repeat:before,.ion-ios-resize:before,.ion-ios-restaurant:before,.ion-ios-return-left:before,.ion-ios-return-right:before,.ion-ios-reverse-camera:before,.ion-ios-rewind:before,.ion-ios-ribbon:before,.ion-ios-rocket:before,.ion-ios-rose:before,.ion-ios-sad:before,.ion-ios-save:before,.ion-ios-school:before,.ion-ios-search:before,.ion-ios-send:before,.ion-ios-settings:before,.ion-ios-share:before,.ion-ios-share-alt:before,.ion-ios-shirt:before,.ion-ios-shuffle:before,.ion-ios-skip-backward:before,.ion-ios-skip-forward:before,.ion-ios-snow:before,.ion-ios-speedometer:before,.ion-ios-square:before,.ion-ios-square-outline:before,.ion-ios-star:before,.ion-ios-star-half:before,.ion-ios-star-outline:before,.ion-ios-stats:before,.ion-ios-stopwatch:before,.ion-ios-subway:before,.ion-ios-sunny:before,.ion-ios-swap:before,.ion-ios-switch:before,.ion-ios-sync:before,.ion-ios-tablet-landscape:before,.ion-ios-tablet-portrait:before,.ion-ios-tennisball:before,.ion-ios-text:before,.ion-ios-thermometer:before,.ion-ios-thumbs-down:before,.ion-ios-thumbs-up:before,.ion-ios-thunderstorm:before,.ion-ios-time:before,.ion-ios-timer:before,.ion-ios-today:before,.ion-ios-train:before,.ion-ios-transgender:before,.ion-ios-trash:before,.ion-ios-trending-down:before,.ion-ios-trending-up:before,.ion-ios-trophy:before,.ion-ios-tv:before,.ion-ios-umbrella:before,.ion-ios-undo:before,.ion-ios-unlock:before,.ion-ios-videocam:before,.ion-ios-volume-high:before,.ion-ios-volume-low:before,.ion-ios-volume-mute:before,.ion-ios-volume-off:before,.ion-ios-walk:before,.ion-ios-wallet:before,.ion-ios-warning:before,.ion-ios-watch:before,.ion-ios-water:before,.ion-ios-wifi:before,.ion-ios-wine:before,.ion-ios-woman:before,.ion-logo-android:before,.ion-logo-angular:before,.ion-logo-apple:before,.ion-logo-bitbucket:before,.ion-logo-bitcoin:before,.ion-logo-buffer:before,.ion-logo-chrome:before,.ion-logo-closed-captioning:before,.ion-logo-codepen:before,.ion-logo-css3:before,.ion-logo-designernews:before,.ion-logo-dribbble:before,.ion-logo-dropbox:before,.ion-logo-euro:before,.ion-logo-facebook:before,.ion-logo-flickr:before,.ion-logo-foursquare:before,.ion-logo-freebsd-devil:before,.ion-logo-game-controller-a:before,.ion-logo-game-controller-b:before,.ion-logo-github:before,.ion-logo-google:before,.ion-logo-googleplus:before,.ion-logo-hackernews:before,.ion-logo-html5:before,.ion-logo-instagram:before,.ion-logo-ionic:before,.ion-logo-ionitron:before,.ion-logo-javascript:before,.ion-logo-linkedin:before,.ion-logo-markdown:before,.ion-logo-model-s:before,.ion-logo-no-smoking:before,.ion-logo-nodejs:before,.ion-logo-npm:before,.ion-logo-octocat:before,.ion-logo-pinterest:before,.ion-logo-playstation:before,.ion-logo-polymer:before,.ion-logo-python:before,.ion-logo-reddit:before,.ion-logo-rss:before,.ion-logo-sass:before,.ion-logo-skype:before,.ion-logo-slack:before,.ion-logo-snapchat:before,.ion-logo-steam:before,.ion-logo-tumblr:before,.ion-logo-tux:before,.ion-logo-twitch:before,.ion-logo-twitter:before,.ion-logo-usd:before,.ion-logo-vimeo:before,.ion-logo-vk:before,.ion-logo-whatsapp:before,.ion-logo-windows:before,.ion-logo-wordpress:before,.ion-logo-xbox:before,.ion-logo-xing:before,.ion-logo-yahoo:before,.ion-logo-yen:before,.ion-logo-youtube:before,.ion-md-add:before,.ion-md-add-circle:before,.ion-md-add-circle-outline:before,.ion-md-airplane:before,.ion-md-alarm:before,.ion-md-albums:before,.ion-md-alert:before,.ion-md-american-football:before,.ion-md-analytics:before,.ion-md-aperture:before,.ion-md-apps:before,.ion-md-appstore:before,.ion-md-archive:before,.ion-md-arrow-back:before,.ion-md-arrow-down:before,.ion-md-arrow-dropdown:before,.ion-md-arrow-dropdown-circle:before,.ion-md-arrow-dropleft:before,.ion-md-arrow-dropleft-circle:before,.ion-md-arrow-dropright:before,.ion-md-arrow-dropright-circle:before,.ion-md-arrow-dropup:before,.ion-md-arrow-dropup-circle:before,.ion-md-arrow-forward:before,.ion-md-arrow-round-back:before,.ion-md-arrow-round-down:before,.ion-md-arrow-round-forward:before,.ion-md-arrow-round-up:before,.ion-md-arrow-up:before,.ion-md-at:before,.ion-md-attach:before,.ion-md-backspace:before,.ion-md-barcode:before,.ion-md-baseball:before,.ion-md-basket:before,.ion-md-basketball:before,.ion-md-battery-charging:before,.ion-md-battery-dead:before,.ion-md-battery-full:before,.ion-md-beaker:before,.ion-md-bed:before,.ion-md-beer:before,.ion-md-bicycle:before,.ion-md-bluetooth:before,.ion-md-boat:before,.ion-md-body:before,.ion-md-bonfire:before,.ion-md-book:before,.ion-md-bookmark:before,.ion-md-bookmarks:before,.ion-md-bowtie:before,.ion-md-briefcase:before,.ion-md-browsers:before,.ion-md-brush:before,.ion-md-bug:before,.ion-md-build:before,.ion-md-bulb:before,.ion-md-bus:before,.ion-md-business:before,.ion-md-cafe:before,.ion-md-calculator:before,.ion-md-calendar:before,.ion-md-call:before,.ion-md-camera:before,.ion-md-car:before,.ion-md-card:before,.ion-md-cart:before,.ion-md-cash:before,.ion-md-cellular:before,.ion-md-chatboxes:before,.ion-md-chatbubbles:before,.ion-md-checkbox:before,.ion-md-checkbox-outline:before,.ion-md-checkmark:before,.ion-md-checkmark-circle:before,.ion-md-checkmark-circle-outline:before,.ion-md-clipboard:before,.ion-md-clock:before,.ion-md-close:before,.ion-md-close-circle:before,.ion-md-close-circle-outline:before,.ion-md-cloud:before,.ion-md-cloud-circle:before,.ion-md-cloud-done:before,.ion-md-cloud-download:before,.ion-md-cloud-outline:before,.ion-md-cloud-upload:before,.ion-md-cloudy:before,.ion-md-cloudy-night:before,.ion-md-code:before,.ion-md-code-download:before,.ion-md-code-working:before,.ion-md-cog:before,.ion-md-color-fill:before,.ion-md-color-filter:before,.ion-md-color-palette:before,.ion-md-color-wand:before,.ion-md-compass:before,.ion-md-construct:before,.ion-md-contact:before,.ion-md-contacts:before,.ion-md-contract:before,.ion-md-contrast:before,.ion-md-copy:before,.ion-md-create:before,.ion-md-crop:before,.ion-md-cube:before,.ion-md-cut:before,.ion-md-desktop:before,.ion-md-disc:before,.ion-md-document:before,.ion-md-done-all:before,.ion-md-download:before,.ion-md-easel:before,.ion-md-egg:before,.ion-md-exit:before,.ion-md-expand:before,.ion-md-eye:before,.ion-md-eye-off:before,.ion-md-fastforward:before,.ion-md-female:before,.ion-md-filing:before,.ion-md-film:before,.ion-md-finger-print:before,.ion-md-fitness:before,.ion-md-flag:before,.ion-md-flame:before,.ion-md-flash:before,.ion-md-flash-off:before,.ion-md-flashlight:before,.ion-md-flask:before,.ion-md-flower:before,.ion-md-folder:before,.ion-md-folder-open:before,.ion-md-football:before,.ion-md-funnel:before,.ion-md-gift:before,.ion-md-git-branch:before,.ion-md-git-commit:before,.ion-md-git-compare:before,.ion-md-git-merge:before,.ion-md-git-network:before,.ion-md-git-pull-request:before,.ion-md-glasses:before,.ion-md-globe:before,.ion-md-grid:before,.ion-md-hammer:before,.ion-md-hand:before,.ion-md-happy:before,.ion-md-headset:before,.ion-md-heart:before,.ion-md-heart-dislike:before,.ion-md-heart-empty:before,.ion-md-heart-half:before,.ion-md-help:before,.ion-md-help-buoy:before,.ion-md-help-circle:before,.ion-md-help-circle-outline:before,.ion-md-home:before,.ion-md-hourglass:before,.ion-md-ice-cream:before,.ion-md-image:before,.ion-md-images:before,.ion-md-infinite:before,.ion-md-information:before,.ion-md-information-circle:before,.ion-md-information-circle-outline:before,.ion-md-jet:before,.ion-md-journal:before,.ion-md-key:before,.ion-md-keypad:before,.ion-md-laptop:before,.ion-md-leaf:before,.ion-md-link:before,.ion-md-list:before,.ion-md-list-box:before,.ion-md-locate:before,.ion-md-lock:before,.ion-md-log-in:before,.ion-md-log-out:before,.ion-md-magnet:before,.ion-md-mail:before,.ion-md-mail-open:before,.ion-md-mail-unread:before,.ion-md-male:before,.ion-md-man:before,.ion-md-map:before,.ion-md-medal:before,.ion-md-medical:before,.ion-md-medkit:before,.ion-md-megaphone:before,.ion-md-menu:before,.ion-md-mic:before,.ion-md-mic-off:before,.ion-md-microphone:before,.ion-md-moon:before,.ion-md-more:before,.ion-md-move:before,.ion-md-musical-note:before,.ion-md-musical-notes:before,.ion-md-navigate:before,.ion-md-notifications:before,.ion-md-notifications-off:before,.ion-md-notifications-outline:before,.ion-md-nuclear:before,.ion-md-nutrition:before,.ion-md-open:before,.ion-md-options:before,.ion-md-outlet:before,.ion-md-paper:before,.ion-md-paper-plane:before,.ion-md-partly-sunny:before,.ion-md-pause:before,.ion-md-paw:before,.ion-md-people:before,.ion-md-person:before,.ion-md-person-add:before,.ion-md-phone-landscape:before,.ion-md-phone-portrait:before,.ion-md-photos:before,.ion-md-pie:before,.ion-md-pin:before,.ion-md-pint:before,.ion-md-pizza:before,.ion-md-planet:before,.ion-md-play:before,.ion-md-play-circle:before,.ion-md-podium:before,.ion-md-power:before,.ion-md-pricetag:before,.ion-md-pricetags:before,.ion-md-print:before,.ion-md-pulse:before,.ion-md-qr-scanner:before,.ion-md-quote:before,.ion-md-radio:before,.ion-md-radio-button-off:before,.ion-md-radio-button-on:before,.ion-md-rainy:before,.ion-md-recording:before,.ion-md-redo:before,.ion-md-refresh:before,.ion-md-refresh-circle:before,.ion-md-remove:before,.ion-md-remove-circle:before,.ion-md-remove-circle-outline:before,.ion-md-reorder:before,.ion-md-repeat:before,.ion-md-resize:before,.ion-md-restaurant:before,.ion-md-return-left:before,.ion-md-return-right:before,.ion-md-reverse-camera:before,.ion-md-rewind:before,.ion-md-ribbon:before,.ion-md-rocket:before,.ion-md-rose:before,.ion-md-sad:before,.ion-md-save:before,.ion-md-school:before,.ion-md-search:before,.ion-md-send:before,.ion-md-settings:before,.ion-md-share:before,.ion-md-share-alt:before,.ion-md-shirt:before,.ion-md-shuffle:before,.ion-md-skip-backward:before,.ion-md-skip-forward:before,.ion-md-snow:before,.ion-md-speedometer:before,.ion-md-square:before,.ion-md-square-outline:before,.ion-md-star:before,.ion-md-star-half:before,.ion-md-star-outline:before,.ion-md-stats:before,.ion-md-stopwatch:before,.ion-md-subway:before,.ion-md-sunny:before,.ion-md-swap:before,.ion-md-switch:before,.ion-md-sync:before,.ion-md-tablet-landscape:before,.ion-md-tablet-portrait:before,.ion-md-tennisball:before,.ion-md-text:before,.ion-md-thermometer:before,.ion-md-thumbs-down:before,.ion-md-thumbs-up:before,.ion-md-thunderstorm:before,.ion-md-time:before,.ion-md-timer:before,.ion-md-today:before,.ion-md-train:before,.ion-md-transgender:before,.ion-md-trash:before,.ion-md-trending-down:before,.ion-md-trending-up:before,.ion-md-trophy:before,.ion-md-tv:before,.ion-md-umbrella:before,.ion-md-undo:before,.ion-md-unlock:before,.ion-md-videocam:before,.ion-md-volume-high:before,.ion-md-volume-low:before,.ion-md-volume-mute:before,.ion-md-volume-off:before,.ion-md-walk:before,.ion-md-wallet:before,.ion-md-warning:before,.ion-md-watch:before,.ion-md-water:before,.ion-md-wifi:before,.ion-md-wine:before,.ion-md-woman:before{display:inline-block;font-family:"Ionicons";speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ion-ios-add:before{content:""}.ion-ios-add-circle:before{content:""}.ion-ios-add-circle-outline:before{content:""}.ion-ios-airplane:before{content:""}.ion-ios-alarm:before{content:""}.ion-ios-albums:before{content:""}.ion-ios-alert:before{content:""}.ion-ios-american-football:before{content:""}.ion-ios-analytics:before{content:""}.ion-ios-aperture:before{content:""}.ion-ios-apps:before{content:""}.ion-ios-appstore:before{content:""}.ion-ios-archive:before{content:""}.ion-ios-arrow-back:before{content:""}.ion-ios-arrow-down:before{content:""}.ion-ios-arrow-dropdown:before{content:""}.ion-ios-arrow-dropdown-circle:before{content:""}.ion-ios-arrow-dropleft:before{content:""}.ion-ios-arrow-dropleft-circle:before{content:""}.ion-ios-arrow-dropright:before{content:""}.ion-ios-arrow-dropright-circle:before{content:""}.ion-ios-arrow-dropup:before{content:""}.ion-ios-arrow-dropup-circle:before{content:""}.ion-ios-arrow-forward:before{content:""}.ion-ios-arrow-round-back:before{content:""}.ion-ios-arrow-round-down:before{content:""}.ion-ios-arrow-round-forward:before{content:""}.ion-ios-arrow-round-up:before{content:""}.ion-ios-arrow-up:before{content:""}.ion-ios-at:before{content:""}.ion-ios-attach:before{content:""}.ion-ios-backspace:before{content:""}.ion-ios-barcode:before{content:""}.ion-ios-baseball:before{content:""}.ion-ios-basket:before{content:""}.ion-ios-basketball:before{content:""}.ion-ios-battery-charging:before{content:""}.ion-ios-battery-dead:before{content:""}.ion-ios-battery-full:before{content:""}.ion-ios-beaker:before{content:""}.ion-ios-bed:before{content:""}.ion-ios-beer:before{content:""}.ion-ios-bicycle:before{content:""}.ion-ios-bluetooth:before{content:""}.ion-ios-boat:before{content:""}.ion-ios-body:before{content:""}.ion-ios-bonfire:before{content:""}.ion-ios-book:before{content:""}.ion-ios-bookmark:before{content:""}.ion-ios-bookmarks:before{content:""}.ion-ios-bowtie:before{content:""}.ion-ios-briefcase:before{content:""}.ion-ios-browsers:before{content:""}.ion-ios-brush:before{content:""}.ion-ios-bug:before{content:""}.ion-ios-build:before{content:""}.ion-ios-bulb:before{content:""}.ion-ios-bus:before{content:""}.ion-ios-business:before{content:""}.ion-ios-cafe:before{content:""}.ion-ios-calculator:before{content:""}.ion-ios-calendar:before{content:""}.ion-ios-call:before{content:""}.ion-ios-camera:before{content:""}.ion-ios-car:before{content:""}.ion-ios-card:before{content:""}.ion-ios-cart:before{content:""}.ion-ios-cash:before{content:""}.ion-ios-cellular:before{content:""}.ion-ios-chatboxes:before{content:""}.ion-ios-chatbubbles:before{content:""}.ion-ios-checkbox:before{content:""}.ion-ios-checkbox-outline:before{content:""}.ion-ios-checkmark:before{content:""}.ion-ios-checkmark-circle:before{content:""}.ion-ios-checkmark-circle-outline:before{content:""}.ion-ios-clipboard:before{content:""}.ion-ios-clock:before{content:""}.ion-ios-close:before{content:""}.ion-ios-close-circle:before{content:""}.ion-ios-close-circle-outline:before{content:""}.ion-ios-cloud:before{content:""}.ion-ios-cloud-circle:before{content:""}.ion-ios-cloud-done:before{content:""}.ion-ios-cloud-download:before{content:""}.ion-ios-cloud-outline:before{content:""}.ion-ios-cloud-upload:before{content:""}.ion-ios-cloudy:before{content:""}.ion-ios-cloudy-night:before{content:""}.ion-ios-code:before{content:""}.ion-ios-code-download:before{content:""}.ion-ios-code-working:before{content:""}.ion-ios-cog:before{content:""}.ion-ios-color-fill:before{content:""}.ion-ios-color-filter:before{content:""}.ion-ios-color-palette:before{content:""}.ion-ios-color-wand:before{content:""}.ion-ios-compass:before{content:""}.ion-ios-construct:before{content:""}.ion-ios-contact:before{content:""}.ion-ios-contacts:before{content:""}.ion-ios-contract:before{content:""}.ion-ios-contrast:before{content:""}.ion-ios-copy:before{content:""}.ion-ios-create:before{content:""}.ion-ios-crop:before{content:""}.ion-ios-cube:before{content:""}.ion-ios-cut:before{content:""}.ion-ios-desktop:before{content:""}.ion-ios-disc:before{content:""}.ion-ios-document:before{content:""}.ion-ios-done-all:before{content:""}.ion-ios-download:before{content:""}.ion-ios-easel:before{content:""}.ion-ios-egg:before{content:""}.ion-ios-exit:before{content:""}.ion-ios-expand:before{content:""}.ion-ios-eye:before{content:""}.ion-ios-eye-off:before{content:""}.ion-ios-fastforward:before{content:""}.ion-ios-female:before{content:""}.ion-ios-filing:before{content:""}.ion-ios-film:before{content:""}.ion-ios-finger-print:before{content:""}.ion-ios-fitness:before{content:""}.ion-ios-flag:before{content:""}.ion-ios-flame:before{content:""}.ion-ios-flash:before{content:""}.ion-ios-flash-off:before{content:""}.ion-ios-flashlight:before{content:""}.ion-ios-flask:before{content:""}.ion-ios-flower:before{content:""}.ion-ios-folder:before{content:""}.ion-ios-folder-open:before{content:""}.ion-ios-football:before{content:""}.ion-ios-funnel:before{content:""}.ion-ios-gift:before{content:""}.ion-ios-git-branch:before{content:""}.ion-ios-git-commit:before{content:""}.ion-ios-git-compare:before{content:""}.ion-ios-git-merge:before{content:""}.ion-ios-git-network:before{content:""}.ion-ios-git-pull-request:before{content:""}.ion-ios-glasses:before{content:""}.ion-ios-globe:before{content:""}.ion-ios-grid:before{content:""}.ion-ios-hammer:before{content:""}.ion-ios-hand:before{content:""}.ion-ios-happy:before{content:""}.ion-ios-headset:before{content:""}.ion-ios-heart:before{content:""}.ion-ios-heart-dislike:before{content:""}.ion-ios-heart-empty:before{content:""}.ion-ios-heart-half:before{content:""}.ion-ios-help:before{content:""}.ion-ios-help-buoy:before{content:""}.ion-ios-help-circle:before{content:""}.ion-ios-help-circle-outline:before{content:""}.ion-ios-home:before{content:""}.ion-ios-hourglass:before{content:""}.ion-ios-ice-cream:before{content:""}.ion-ios-image:before{content:""}.ion-ios-images:before{content:""}.ion-ios-infinite:before{content:""}.ion-ios-information:before{content:""}.ion-ios-information-circle:before{content:""}.ion-ios-information-circle-outline:before{content:""}.ion-ios-jet:before{content:""}.ion-ios-journal:before{content:""}.ion-ios-key:before{content:""}.ion-ios-keypad:before{content:""}.ion-ios-laptop:before{content:""}.ion-ios-leaf:before{content:""}.ion-ios-link:before{content:""}.ion-ios-list:before{content:""}.ion-ios-list-box:before{content:""}.ion-ios-locate:before{content:""}.ion-ios-lock:before{content:""}.ion-ios-log-in:before{content:""}.ion-ios-log-out:before{content:""}.ion-ios-magnet:before{content:""}.ion-ios-mail:before{content:""}.ion-ios-mail-open:before{content:""}.ion-ios-mail-unread:before{content:""}.ion-ios-male:before{content:""}.ion-ios-man:before{content:""}.ion-ios-map:before{content:""}.ion-ios-medal:before{content:""}.ion-ios-medical:before{content:""}.ion-ios-medkit:before{content:""}.ion-ios-megaphone:before{content:""}.ion-ios-menu:before{content:""}.ion-ios-mic:before{content:""}.ion-ios-mic-off:before{content:""}.ion-ios-microphone:before{content:""}.ion-ios-moon:before{content:""}.ion-ios-more:before{content:""}.ion-ios-move:before{content:""}.ion-ios-musical-note:before{content:""}.ion-ios-musical-notes:before{content:""}.ion-ios-navigate:before{content:""}.ion-ios-notifications:before{content:""}.ion-ios-notifications-off:before{content:""}.ion-ios-notifications-outline:before{content:""}.ion-ios-nuclear:before{content:""}.ion-ios-nutrition:before{content:""}.ion-ios-open:before{content:""}.ion-ios-options:before{content:""}.ion-ios-outlet:before{content:""}.ion-ios-paper:before{content:""}.ion-ios-paper-plane:before{content:""}.ion-ios-partly-sunny:before{content:""}.ion-ios-pause:before{content:""}.ion-ios-paw:before{content:""}.ion-ios-people:before{content:""}.ion-ios-person:before{content:""}.ion-ios-person-add:before{content:""}.ion-ios-phone-landscape:before{content:""}.ion-ios-phone-portrait:before{content:""}.ion-ios-photos:before{content:""}.ion-ios-pie:before{content:""}.ion-ios-pin:before{content:""}.ion-ios-pint:before{content:""}.ion-ios-pizza:before{content:""}.ion-ios-planet:before{content:""}.ion-ios-play:before{content:""}.ion-ios-play-circle:before{content:""}.ion-ios-podium:before{content:""}.ion-ios-power:before{content:""}.ion-ios-pricetag:before{content:""}.ion-ios-pricetags:before{content:""}.ion-ios-print:before{content:""}.ion-ios-pulse:before{content:""}.ion-ios-qr-scanner:before{content:""}.ion-ios-quote:before{content:""}.ion-ios-radio:before{content:""}.ion-ios-radio-button-off:before{content:""}.ion-ios-radio-button-on:before{content:""}.ion-ios-rainy:before{content:""}.ion-ios-recording:before{content:""}.ion-ios-redo:before{content:""}.ion-ios-refresh:before{content:""}.ion-ios-refresh-circle:before{content:""}.ion-ios-remove:before{content:""}.ion-ios-remove-circle:before{content:""}.ion-ios-remove-circle-outline:before{content:""}.ion-ios-reorder:before{content:""}.ion-ios-repeat:before{content:""}.ion-ios-resize:before{content:""}.ion-ios-restaurant:before{content:""}.ion-ios-return-left:before{content:""}.ion-ios-return-right:before{content:""}.ion-ios-reverse-camera:before{content:""}.ion-ios-rewind:before{content:""}.ion-ios-ribbon:before{content:""}.ion-ios-rocket:before{content:""}.ion-ios-rose:before{content:""}.ion-ios-sad:before{content:""}.ion-ios-save:before{content:""}.ion-ios-school:before{content:""}.ion-ios-search:before{content:""}.ion-ios-send:before{content:""}.ion-ios-settings:before{content:""}.ion-ios-share:before{content:""}.ion-ios-share-alt:before{content:""}.ion-ios-shirt:before{content:""}.ion-ios-shuffle:before{content:""}.ion-ios-skip-backward:before{content:""}.ion-ios-skip-forward:before{content:""}.ion-ios-snow:before{content:""}.ion-ios-speedometer:before{content:""}.ion-ios-square:before{content:""}.ion-ios-square-outline:before{content:""}.ion-ios-star:before{content:""}.ion-ios-star-half:before{content:""}.ion-ios-star-outline:before{content:""}.ion-ios-stats:before{content:""}.ion-ios-stopwatch:before{content:""}.ion-ios-subway:before{content:""}.ion-ios-sunny:before{content:""}.ion-ios-swap:before{content:""}.ion-ios-switch:before{content:""}.ion-ios-sync:before{content:""}.ion-ios-tablet-landscape:before{content:""}.ion-ios-tablet-portrait:before{content:""}.ion-ios-tennisball:before{content:""}.ion-ios-text:before{content:""}.ion-ios-thermometer:before{content:""}.ion-ios-thumbs-down:before{content:""}.ion-ios-thumbs-up:before{content:""}.ion-ios-thunderstorm:before{content:""}.ion-ios-time:before{content:""}.ion-ios-timer:before{content:""}.ion-ios-today:before{content:""}.ion-ios-train:before{content:""}.ion-ios-transgender:before{content:""}.ion-ios-trash:before{content:""}.ion-ios-trending-down:before{content:""}.ion-ios-trending-up:before{content:""}.ion-ios-trophy:before{content:""}.ion-ios-tv:before{content:""}.ion-ios-umbrella:before{content:""}.ion-ios-undo:before{content:""}.ion-ios-unlock:before{content:""}.ion-ios-videocam:before{content:""}.ion-ios-volume-high:before{content:""}.ion-ios-volume-low:before{content:""}.ion-ios-volume-mute:before{content:""}.ion-ios-volume-off:before{content:""}.ion-ios-walk:before{content:""}.ion-ios-wallet:before{content:""}.ion-ios-warning:before{content:""}.ion-ios-watch:before{content:""}.ion-ios-water:before{content:""}.ion-ios-wifi:before{content:""}.ion-ios-wine:before{content:""}.ion-ios-woman:before{content:""}.ion-logo-android:before{content:""}.ion-logo-angular:before{content:""}.ion-logo-apple:before{content:""}.ion-logo-bitbucket:before{content:""}.ion-logo-bitcoin:before{content:""}.ion-logo-buffer:before{content:""}.ion-logo-chrome:before{content:""}.ion-logo-closed-captioning:before{content:""}.ion-logo-codepen:before{content:""}.ion-logo-css3:before{content:""}.ion-logo-designernews:before{content:""}.ion-logo-dribbble:before{content:""}.ion-logo-dropbox:before{content:""}.ion-logo-euro:before{content:""}.ion-logo-facebook:before{content:""}.ion-logo-flickr:before{content:""}.ion-logo-foursquare:before{content:""}.ion-logo-freebsd-devil:before{content:""}.ion-logo-game-controller-a:before{content:""}.ion-logo-game-controller-b:before{content:""}.ion-logo-github:before{content:""}.ion-logo-google:before{content:""}.ion-logo-googleplus:before{content:""}.ion-logo-hackernews:before{content:""}.ion-logo-html5:before{content:""}.ion-logo-instagram:before{content:""}.ion-logo-ionic:before{content:""}.ion-logo-ionitron:before{content:""}.ion-logo-javascript:before{content:""}.ion-logo-linkedin:before{content:""}.ion-logo-markdown:before{content:""}.ion-logo-model-s:before{content:""}.ion-logo-no-smoking:before{content:""}.ion-logo-nodejs:before{content:""}.ion-logo-npm:before{content:""}.ion-logo-octocat:before{content:""}.ion-logo-pinterest:before{content:""}.ion-logo-playstation:before{content:""}.ion-logo-polymer:before{content:""}.ion-logo-python:before{content:""}.ion-logo-reddit:before{content:""}.ion-logo-rss:before{content:""}.ion-logo-sass:before{content:""}.ion-logo-skype:before{content:""}.ion-logo-slack:before{content:""}.ion-logo-snapchat:before{content:""}.ion-logo-steam:before{content:""}.ion-logo-tumblr:before{content:""}.ion-logo-tux:before{content:""}.ion-logo-twitch:before{content:""}.ion-logo-twitter:before{content:""}.ion-logo-usd:before{content:""}.ion-logo-vimeo:before{content:""}.ion-logo-vk:before{content:""}.ion-logo-whatsapp:before{content:""}.ion-logo-windows:before{content:""}.ion-logo-wordpress:before{content:""}.ion-logo-xbox:before{content:""}.ion-logo-xing:before{content:""}.ion-logo-yahoo:before{content:""}.ion-logo-yen:before{content:""}.ion-logo-youtube:before{content:""}.ion-md-add:before{content:""}.ion-md-add-circle:before{content:""}.ion-md-add-circle-outline:before{content:""}.ion-md-airplane:before{content:""}.ion-md-alarm:before{content:""}.ion-md-albums:before{content:""}.ion-md-alert:before{content:""}.ion-md-american-football:before{content:""}.ion-md-analytics:before{content:""}.ion-md-aperture:before{content:""}.ion-md-apps:before{content:""}.ion-md-appstore:before{content:""}.ion-md-archive:before{content:""}.ion-md-arrow-back:before{content:""}.ion-md-arrow-down:before{content:""}.ion-md-arrow-dropdown:before{content:""}.ion-md-arrow-dropdown-circle:before{content:""}.ion-md-arrow-dropleft:before{content:""}.ion-md-arrow-dropleft-circle:before{content:""}.ion-md-arrow-dropright:before{content:""}.ion-md-arrow-dropright-circle:before{content:""}.ion-md-arrow-dropup:before{content:""}.ion-md-arrow-dropup-circle:before{content:""}.ion-md-arrow-forward:before{content:""}.ion-md-arrow-round-back:before{content:""}.ion-md-arrow-round-down:before{content:""}.ion-md-arrow-round-forward:before{content:""}.ion-md-arrow-round-up:before{content:""}.ion-md-arrow-up:before{content:""}.ion-md-at:before{content:""}.ion-md-attach:before{content:""}.ion-md-backspace:before{content:""}.ion-md-barcode:before{content:""}.ion-md-baseball:before{content:""}.ion-md-basket:before{content:""}.ion-md-basketball:before{content:""}.ion-md-battery-charging:before{content:""}.ion-md-battery-dead:before{content:""}.ion-md-battery-full:before{content:""}.ion-md-beaker:before{content:""}.ion-md-bed:before{content:""}.ion-md-beer:before{content:""}.ion-md-bicycle:before{content:""}.ion-md-bluetooth:before{content:""}.ion-md-boat:before{content:""}.ion-md-body:before{content:""}.ion-md-bonfire:before{content:""}.ion-md-book:before{content:""}.ion-md-bookmark:before{content:""}.ion-md-bookmarks:before{content:""}.ion-md-bowtie:before{content:""}.ion-md-briefcase:before{content:""}.ion-md-browsers:before{content:""}.ion-md-brush:before{content:""}.ion-md-bug:before{content:""}.ion-md-build:before{content:""}.ion-md-bulb:before{content:""}.ion-md-bus:before{content:""}.ion-md-business:before{content:""}.ion-md-cafe:before{content:""}.ion-md-calculator:before{content:""}.ion-md-calendar:before{content:""}.ion-md-call:before{content:""}.ion-md-camera:before{content:""}.ion-md-car:before{content:""}.ion-md-card:before{content:""}.ion-md-cart:before{content:""}.ion-md-cash:before{content:""}.ion-md-cellular:before{content:""}.ion-md-chatboxes:before{content:""}.ion-md-chatbubbles:before{content:""}.ion-md-checkbox:before{content:""}.ion-md-checkbox-outline:before{content:""}.ion-md-checkmark:before{content:""}.ion-md-checkmark-circle:before{content:""}.ion-md-checkmark-circle-outline:before{content:""}.ion-md-clipboard:before{content:""}.ion-md-clock:before{content:""}.ion-md-close:before{content:""}.ion-md-close-circle:before{content:""}.ion-md-close-circle-outline:before{content:""}.ion-md-cloud:before{content:""}.ion-md-cloud-circle:before{content:""}.ion-md-cloud-done:before{content:""}.ion-md-cloud-download:before{content:""}.ion-md-cloud-outline:before{content:""}.ion-md-cloud-upload:before{content:""}.ion-md-cloudy:before{content:""}.ion-md-cloudy-night:before{content:""}.ion-md-code:before{content:""}.ion-md-code-download:before{content:""}.ion-md-code-working:before{content:""}.ion-md-cog:before{content:""}.ion-md-color-fill:before{content:""}.ion-md-color-filter:before{content:""}.ion-md-color-palette:before{content:""}.ion-md-color-wand:before{content:""}.ion-md-compass:before{content:""}.ion-md-construct:before{content:""}.ion-md-contact:before{content:""}.ion-md-contacts:before{content:""}.ion-md-contract:before{content:""}.ion-md-contrast:before{content:""}.ion-md-copy:before{content:""}.ion-md-create:before{content:""}.ion-md-crop:before{content:""}.ion-md-cube:before{content:""}.ion-md-cut:before{content:""}.ion-md-desktop:before{content:""}.ion-md-disc:before{content:""}.ion-md-document:before{content:""}.ion-md-done-all:before{content:""}.ion-md-download:before{content:""}.ion-md-easel:before{content:""}.ion-md-egg:before{content:""}.ion-md-exit:before{content:""}.ion-md-expand:before{content:""}.ion-md-eye:before{content:""}.ion-md-eye-off:before{content:""}.ion-md-fastforward:before{content:""}.ion-md-female:before{content:""}.ion-md-filing:before{content:""}.ion-md-film:before{content:""}.ion-md-finger-print:before{content:""}.ion-md-fitness:before{content:""}.ion-md-flag:before{content:""}.ion-md-flame:before{content:""}.ion-md-flash:before{content:""}.ion-md-flash-off:before{content:""}.ion-md-flashlight:before{content:""}.ion-md-flask:before{content:""}.ion-md-flower:before{content:""}.ion-md-folder:before{content:""}.ion-md-folder-open:before{content:""}.ion-md-football:before{content:""}.ion-md-funnel:before{content:""}.ion-md-gift:before{content:""}.ion-md-git-branch:before{content:""}.ion-md-git-commit:before{content:""}.ion-md-git-compare:before{content:""}.ion-md-git-merge:before{content:""}.ion-md-git-network:before{content:""}.ion-md-git-pull-request:before{content:""}.ion-md-glasses:before{content:""}.ion-md-globe:before{content:""}.ion-md-grid:before{content:""}.ion-md-hammer:before{content:""}.ion-md-hand:before{content:""}.ion-md-happy:before{content:""}.ion-md-headset:before{content:""}.ion-md-heart:before{content:""}.ion-md-heart-dislike:before{content:""}.ion-md-heart-empty:before{content:""}.ion-md-heart-half:before{content:""}.ion-md-help:before{content:""}.ion-md-help-buoy:before{content:""}.ion-md-help-circle:before{content:""}.ion-md-help-circle-outline:before{content:""}.ion-md-home:before{content:""}.ion-md-hourglass:before{content:""}.ion-md-ice-cream:before{content:""}.ion-md-image:before{content:""}.ion-md-images:before{content:""}.ion-md-infinite:before{content:""}.ion-md-information:before{content:""}.ion-md-information-circle:before{content:""}.ion-md-information-circle-outline:before{content:""}.ion-md-jet:before{content:""}.ion-md-journal:before{content:""}.ion-md-key:before{content:""}.ion-md-keypad:before{content:""}.ion-md-laptop:before{content:""}.ion-md-leaf:before{content:""}.ion-md-link:before{content:""}.ion-md-list:before{content:""}.ion-md-list-box:before{content:""}.ion-md-locate:before{content:""}.ion-md-lock:before{content:""}.ion-md-log-in:before{content:""}.ion-md-log-out:before{content:""}.ion-md-magnet:before{content:""}.ion-md-mail:before{content:""}.ion-md-mail-open:before{content:""}.ion-md-mail-unread:before{content:""}.ion-md-male:before{content:""}.ion-md-man:before{content:""}.ion-md-map:before{content:""}.ion-md-medal:before{content:""}.ion-md-medical:before{content:""}.ion-md-medkit:before{content:""}.ion-md-megaphone:before{content:""}.ion-md-menu:before{content:""}.ion-md-mic:before{content:""}.ion-md-mic-off:before{content:""}.ion-md-microphone:before{content:""}.ion-md-moon:before{content:""}.ion-md-more:before{content:""}.ion-md-move:before{content:""}.ion-md-musical-note:before{content:""}.ion-md-musical-notes:before{content:""}.ion-md-navigate:before{content:""}.ion-md-notifications:before{content:""}.ion-md-notifications-off:before{content:""}.ion-md-notifications-outline:before{content:""}.ion-md-nuclear:before{content:""}.ion-md-nutrition:before{content:""}.ion-md-open:before{content:""}.ion-md-options:before{content:""}.ion-md-outlet:before{content:""}.ion-md-paper:before{content:""}.ion-md-paper-plane:before{content:""}.ion-md-partly-sunny:before{content:""}.ion-md-pause:before{content:""}.ion-md-paw:before{content:""}.ion-md-people:before{content:""}.ion-md-person:before{content:""}.ion-md-person-add:before{content:""}.ion-md-phone-landscape:before{content:""}.ion-md-phone-portrait:before{content:""}.ion-md-photos:before{content:""}.ion-md-pie:before{content:""}.ion-md-pin:before{content:""}.ion-md-pint:before{content:""}.ion-md-pizza:before{content:""}.ion-md-planet:before{content:""}.ion-md-play:before{content:""}.ion-md-play-circle:before{content:""}.ion-md-podium:before{content:""}.ion-md-power:before{content:""}.ion-md-pricetag:before{content:""}.ion-md-pricetags:before{content:""}.ion-md-print:before{content:""}.ion-md-pulse:before{content:""}.ion-md-qr-scanner:before{content:""}.ion-md-quote:before{content:""}.ion-md-radio:before{content:""}.ion-md-radio-button-off:before{content:""}.ion-md-radio-button-on:before{content:""}.ion-md-rainy:before{content:""}.ion-md-recording:before{content:""}.ion-md-redo:before{content:""}.ion-md-refresh:before{content:""}.ion-md-refresh-circle:before{content:""}.ion-md-remove:before{content:""}.ion-md-remove-circle:before{content:""}.ion-md-remove-circle-outline:before{content:""}.ion-md-reorder:before{content:""}.ion-md-repeat:before{content:""}.ion-md-resize:before{content:""}.ion-md-restaurant:before{content:""}.ion-md-return-left:before{content:""}.ion-md-return-right:before{content:""}.ion-md-reverse-camera:before{content:""}.ion-md-rewind:before{content:""}.ion-md-ribbon:before{content:""}.ion-md-rocket:before{content:""}.ion-md-rose:before{content:""}.ion-md-sad:before{content:""}.ion-md-save:before{content:""}.ion-md-school:before{content:""}.ion-md-search:before{content:""}.ion-md-send:before{content:""}.ion-md-settings:before{content:""}.ion-md-share:before{content:""}.ion-md-share-alt:before{content:""}.ion-md-shirt:before{content:""}.ion-md-shuffle:before{content:""}.ion-md-skip-backward:before{content:""}.ion-md-skip-forward:before{content:""}.ion-md-snow:before{content:""}.ion-md-speedometer:before{content:""}.ion-md-square:before{content:""}.ion-md-square-outline:before{content:""}.ion-md-star:before{content:""}.ion-md-star-half:before{content:""}.ion-md-star-outline:before{content:""}.ion-md-stats:before{content:""}.ion-md-stopwatch:before{content:""}.ion-md-subway:before{content:""}.ion-md-sunny:before{content:""}.ion-md-swap:before{content:""}.ion-md-switch:before{content:""}.ion-md-sync:before{content:""}.ion-md-tablet-landscape:before{content:""}.ion-md-tablet-portrait:before{content:""}.ion-md-tennisball:before{content:""}.ion-md-text:before{content:""}.ion-md-thermometer:before{content:""}.ion-md-thumbs-down:before{content:""}.ion-md-thumbs-up:before{content:""}.ion-md-thunderstorm:before{content:""}.ion-md-time:before{content:""}.ion-md-timer:before{content:""}.ion-md-today:before{content:""}.ion-md-train:before{content:""}.ion-md-transgender:before{content:""}.ion-md-trash:before{content:""}.ion-md-trending-down:before{content:""}.ion-md-trending-up:before{content:""}.ion-md-trophy:before{content:""}.ion-md-tv:before{content:""}.ion-md-umbrella:before{content:""}.ion-md-undo:before{content:""}.ion-md-unlock:before{content:""}.ion-md-videocam:before{content:""}.ion-md-volume-high:before{content:""}.ion-md-volume-low:before{content:""}.ion-md-volume-mute:before{content:""}.ion-md-volume-off:before{content:""}.ion-md-walk:before{content:""}.ion-md-wallet:before{content:""}.ion-md-warning:before{content:""}.ion-md-watch:before{content:""}.ion-md-water:before{content:""}.ion-md-wifi:before{content:""}.ion-md-wine:before{content:""}.ion-md-woman:before{content:""} \ No newline at end of file diff --git a/static/css/jquery.mCustomScrollbar.min.css b/static/css/jquery.mCustomScrollbar.min.css new file mode 100644 index 0000000..6cd1177 --- /dev/null +++ b/static/css/jquery.mCustomScrollbar.min.css @@ -0,0 +1 @@ +.mCustomScrollbar{-ms-touch-action:pinch-zoom;touch-action:pinch-zoom}.mCustomScrollbar.mCS_no_scrollbar,.mCustomScrollbar.mCS_touch_action{-ms-touch-action:auto;touch-action:auto}.mCustomScrollBox{position:relative;overflow:hidden;height:100%;max-width:100%;outline:0;direction:ltr}.mCSB_container{overflow:hidden;width:auto;height:auto}.mCSB_inside>.mCSB_container{margin-right:30px}.mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{margin-right:0}.mCS-dir-rtl>.mCSB_inside>.mCSB_container{margin-right:0;margin-left:30px}.mCS-dir-rtl>.mCSB_inside>.mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{margin-left:0}.mCSB_scrollTools{position:absolute;width:16px;height:auto;left:auto;top:0;right:0;bottom:0;opacity:.75;filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCSB_outside+.mCSB_scrollTools{right:-26px}.mCS-dir-rtl>.mCSB_inside>.mCSB_scrollTools,.mCS-dir-rtl>.mCSB_outside+.mCSB_scrollTools{right:auto;left:0}.mCS-dir-rtl>.mCSB_outside+.mCSB_scrollTools{left:-26px}.mCSB_scrollTools .mCSB_draggerContainer{position:absolute;top:0;left:0;bottom:0;right:0;height:auto}.mCSB_scrollTools a+.mCSB_draggerContainer{margin:20px 0}.mCSB_scrollTools .mCSB_draggerRail{width:2px;height:100%;margin:0 auto;-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px}.mCSB_scrollTools .mCSB_dragger{cursor:pointer;width:100%;height:30px;z-index:1}.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{position:relative;width:4px;height:100%;margin:0 auto;-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px;text-align:center}.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{width:12px}.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{width:8px}.mCSB_scrollTools .mCSB_buttonDown,.mCSB_scrollTools .mCSB_buttonUp{display:block;position:absolute;height:20px;width:100%;overflow:hidden;margin:0 auto;cursor:pointer}.mCSB_scrollTools .mCSB_buttonDown{bottom:0}.mCSB_horizontal.mCSB_inside>.mCSB_container{margin-right:0;margin-bottom:30px}.mCSB_horizontal.mCSB_outside>.mCSB_container{min-height:100%}.mCSB_horizontal>.mCSB_container.mCS_no_scrollbar_x.mCS_x_hidden{margin-bottom:0}.mCSB_scrollTools.mCSB_scrollTools_horizontal{width:auto;height:16px;top:auto;right:0;bottom:0;left:0}.mCustomScrollBox+.mCSB_scrollTools+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox+.mCSB_scrollTools.mCSB_scrollTools_horizontal{bottom:-26px}.mCSB_scrollTools.mCSB_scrollTools_horizontal a+.mCSB_draggerContainer{margin:0 20px}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:2px;margin:7px 0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger{width:30px;height:100%;left:0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:4px;margin:6px auto}.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{height:12px;margin:2px auto}.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{height:8px;margin:4px 0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft,.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{display:block;position:absolute;width:20px;height:100%;overflow:hidden;margin:0 auto;cursor:pointer}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft{left:0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{right:0}.mCSB_container_wrapper{position:absolute;height:auto;width:auto;overflow:hidden;top:0;left:0;right:0;bottom:0;margin-right:30px;margin-bottom:30px}.mCSB_container_wrapper>.mCSB_container{padding-right:30px;padding-bottom:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mCSB_vertical_horizontal>.mCSB_scrollTools.mCSB_scrollTools_vertical{bottom:20px}.mCSB_vertical_horizontal>.mCSB_scrollTools.mCSB_scrollTools_horizontal{right:20px}.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden+.mCSB_scrollTools.mCSB_scrollTools_vertical{bottom:0}.mCS-dir-rtl>.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden+.mCSB_scrollTools~.mCSB_scrollTools.mCSB_scrollTools_horizontal{right:0}.mCS-dir-rtl>.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_scrollTools.mCSB_scrollTools_horizontal{left:20px}.mCS-dir-rtl>.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden+.mCSB_scrollTools~.mCSB_scrollTools.mCSB_scrollTools_horizontal{left:0}.mCS-dir-rtl>.mCSB_inside>.mCSB_container_wrapper{margin-right:0;margin-left:30px}.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden>.mCSB_container{padding-right:0}.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden>.mCSB_container{padding-bottom:0}.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden{margin-right:0;margin-left:0}.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden{margin-bottom:0}.mCSB_scrollTools,.mCSB_scrollTools .mCSB_buttonDown,.mCSB_scrollTools .mCSB_buttonLeft,.mCSB_scrollTools .mCSB_buttonRight,.mCSB_scrollTools .mCSB_buttonUp,.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{-webkit-transition:opacity .2s ease-in-out,background-color .2s ease-in-out;-moz-transition:opacity .2s ease-in-out,background-color .2s ease-in-out;-o-transition:opacity .2s ease-in-out,background-color .2s ease-in-out;transition:opacity .2s ease-in-out,background-color .2s ease-in-out}.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail,.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar{-webkit-transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out;-moz-transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out;-o-transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out;transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out}.mCS-autoHide>.mCustomScrollBox>.mCSB_scrollTools,.mCS-autoHide>.mCustomScrollBox~.mCSB_scrollTools{opacity:0;filter:"alpha(opacity=0)";-ms-filter:"alpha(opacity=0)"}.mCS-autoHide:hover>.mCustomScrollBox>.mCSB_scrollTools,.mCS-autoHide:hover>.mCustomScrollBox~.mCSB_scrollTools,.mCustomScrollBox:hover>.mCSB_scrollTools,.mCustomScrollBox:hover~.mCSB_scrollTools,.mCustomScrollbar>.mCustomScrollBox>.mCSB_scrollTools.mCSB_scrollTools_onDrag,.mCustomScrollbar>.mCustomScrollBox~.mCSB_scrollTools.mCSB_scrollTools_onDrag{opacity:1;filter:"alpha(opacity=100)";-ms-filter:"alpha(opacity=100)"}.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.4);filter:"alpha(opacity=40)";-ms-filter:"alpha(opacity=40)"}.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.75);filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85);filter:"alpha(opacity=85)";-ms-filter:"alpha(opacity=85)"}.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9);filter:"alpha(opacity=90)";-ms-filter:"alpha(opacity=90)"}.mCSB_scrollTools .mCSB_buttonDown,.mCSB_scrollTools .mCSB_buttonLeft,.mCSB_scrollTools .mCSB_buttonRight,.mCSB_scrollTools .mCSB_buttonUp{background-image:url(mCSB_buttons.png);background-repeat:no-repeat;opacity:.4;filter:"alpha(opacity=40)";-ms-filter:"alpha(opacity=40)"}.mCSB_scrollTools .mCSB_buttonUp{background-position:0 0}.mCSB_scrollTools .mCSB_buttonDown{background-position:0 -20px}.mCSB_scrollTools .mCSB_buttonLeft{background-position:0 -40px}.mCSB_scrollTools .mCSB_buttonRight{background-position:0 -56px}.mCSB_scrollTools .mCSB_buttonDown:hover,.mCSB_scrollTools .mCSB_buttonLeft:hover,.mCSB_scrollTools .mCSB_buttonRight:hover,.mCSB_scrollTools .mCSB_buttonUp:hover{opacity:.75;filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCSB_scrollTools .mCSB_buttonDown:active,.mCSB_scrollTools .mCSB_buttonLeft:active,.mCSB_scrollTools .mCSB_buttonRight:active,.mCSB_scrollTools .mCSB_buttonUp:active{opacity:.9;filter:"alpha(opacity=90)";-ms-filter:"alpha(opacity=90)"}.mCS-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.15)}.mCS-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:rgba(0,0,0,.85)}.mCS-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:rgba(0,0,0,.9)}.mCS-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px 0}.mCS-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -20px}.mCS-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -40px}.mCS-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -56px}.mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail,.mCS-light-2.mCSB_scrollTools .mCSB_draggerRail{width:4px;background-color:#fff;background-color:rgba(255,255,255,.1);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:4px;background-color:#fff;background-color:rgba(255,255,255,.75);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-2.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:4px;margin:6px auto}.mCS-light-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85)}.mCS-light-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-light-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9)}.mCS-light-2.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px 0}.mCS-light-2.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -20px}.mCS-light-2.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -40px}.mCS-light-2.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -56px}.mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px 0}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -20px}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -40px}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -56px}.mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail,.mCS-light-thick.mCSB_scrollTools .mCSB_draggerRail{width:4px;background-color:#fff;background-color:rgba(255,255,255,.1);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px;background-color:#fff;background-color:rgba(255,255,255,.75);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:4px;margin:6px 0}.mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:6px;margin:5px auto}.mCS-light-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85)}.mCS-light-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-light-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9)}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonUp{background-position:-16px 0}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonDown{background-position:-16px -20px}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonLeft{background-position:-20px -40px}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonRight{background-position:-20px -56px}.mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonUp{background-position:-96px 0}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonDown{background-position:-96px -20px}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonLeft{background-position:-100px -40px}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonRight{background-position:-100px -56px}.mCS-light-thin.mCSB_scrollTools .mCSB_draggerRail{background-color:#fff;background-color:rgba(255,255,255,.1)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:2px}.mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%}.mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:2px;margin:7px auto}.mCS-dark-thin.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.15)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px 0}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -20px}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -40px}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -56px}.mCS-rounded.mCSB_scrollTools .mCSB_draggerRail{background-color:#fff;background-color:rgba(255,255,255,.15)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger,.mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger,.mCS-rounded.mCSB_scrollTools .mCSB_dragger{height:14px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:14px;margin:0 1px}.mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger{width:14px}.mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{height:14px;margin:1px 0}.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{width:16px;height:16px;margin:-1px 0}.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{width:4px}.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{height:16px;width:16px;margin:0 -1px}.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{height:4px;margin:6px 0}.mCS-rounded.mCSB_scrollTools .mCSB_buttonUp{background-position:0 -72px}.mCS-rounded.mCSB_scrollTools .mCSB_buttonDown{background-position:0 -92px}.mCS-rounded.mCSB_scrollTools .mCSB_buttonLeft{background-position:0 -112px}.mCS-rounded.mCSB_scrollTools .mCSB_buttonRight{background-position:0 -128px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.15)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px -72px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -92px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -112px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -128px}.mCS-rounded-dots-dark.mCSB_scrollTools_vertical .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools_vertical .mCSB_draggerRail{width:4px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail{background-color:transparent;background-position:center}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAANElEQVQYV2NkIAAYiVbw//9/Y6DiM1ANJoyMjGdBbLgJQAX/kU0DKgDLkaQAvxW4HEvQFwCRcxIJK1XznAAAAABJRU5ErkJggg==);background-repeat:repeat-y;opacity:.3;filter:"alpha(opacity=30)";-ms-filter:"alpha(opacity=30)"}.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail{height:4px;margin:6px 0;background-repeat:repeat-x}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonUp{background-position:-16px -72px}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonDown{background-position:-16px -92px}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonLeft{background-position:-20px -112px}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonRight{background-position:-20px -128px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYV2NkIAAYSVFgDFR8BqrBBEifBbGRTfiPZhpYjiQFBK3A6l6CvgAAE9kGCd1mvgEAAAAASUVORK5CYII=)}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-96px -72px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-96px -92px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-100px -112px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-100px -128px}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-repeat:repeat-y;background-image:-moz-linear-gradient(left,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%);background-image:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,.5)),color-stop(100%,rgba(255,255,255,0)));background-image:-webkit-linear-gradient(left,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%);background-image:-o-linear-gradient(left,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%);background-image:-ms-linear-gradient(left,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%);background-image:linear-gradient(to right,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{background-repeat:repeat-x;background-image:-moz-linear-gradient(top,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(255,255,255,.5)),color-stop(100%,rgba(255,255,255,0)));background-image:-webkit-linear-gradient(top,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%);background-image:-o-linear-gradient(top,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%);background-image:-ms-linear-gradient(top,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%);background-image:linear-gradient(to bottom,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}.mCS-3d-dark.mCSB_scrollTools_vertical .mCSB_dragger,.mCS-3d.mCSB_scrollTools_vertical .mCSB_dragger{height:70px}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger{width:70px}.mCS-3d-dark.mCSB_scrollTools,.mCS-3d.mCSB_scrollTools{opacity:1;filter:"alpha(opacity=30)";-ms-filter:"alpha(opacity=30)"}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_draggerRail{-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px}.mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-3d.mCSB_scrollTools .mCSB_draggerRail{width:8px;background-color:#000;background-color:rgba(0,0,0,.2);box-shadow:inset 1px 0 1px rgba(0,0,0,.5),inset -1px 0 1px rgba(255,255,255,.2)}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#555}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:8px}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:8px;margin:4px 0;box-shadow:inset 0 1px 1px rgba(0,0,0,.5),inset 0 -1px 1px rgba(255,255,255,.2)}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:8px;margin:4px auto}.mCS-3d.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-3d.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-3d.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-3d.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1);box-shadow:inset 1px 0 1px rgba(0,0,0,.1)}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCS-3d-thick-dark.mCSB_scrollTools,.mCS-3d-thick.mCSB_scrollTools{opacity:1;filter:"alpha(opacity=30)";-ms-filter:"alpha(opacity=30)"}.mCS-3d-thick-dark.mCSB_scrollTools,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer,.mCS-3d-thick.mCSB_scrollTools,.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer{-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mCSB_inside+.mCS-3d-thick-dark.mCSB_scrollTools_vertical,.mCSB_inside+.mCS-3d-thick.mCSB_scrollTools_vertical{right:1px}.mCS-3d-thick-dark.mCSB_scrollTools_vertical,.mCS-3d-thick.mCSB_scrollTools_vertical{box-shadow:inset 1px 0 1px rgba(0,0,0,.1),inset 0 0 14px rgba(0,0,0,.5)}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal,.mCS-3d-thick.mCSB_scrollTools_horizontal{bottom:1px;box-shadow:inset 0 1px 1px rgba(0,0,0,.1),inset 0 0 14px rgba(0,0,0,.5)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;box-shadow:inset 1px 0 0 rgba(255,255,255,.4);width:12px;margin:2px;position:absolute;height:auto;top:0;bottom:0;left:0;right:0}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 0 1px 0 rgba(255,255,255,.4);height:12px;width:auto}.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#555}.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer{background-color:#000;background-color:rgba(0,0,0,.05);box-shadow:inset 1px 1px 16px rgba(0,0,0,.1)}.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-3d-thick-dark.mCSB_scrollTools{box-shadow:inset 0 0 14px rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal{box-shadow:inset 0 1px 1px rgba(0,0,0,.1),inset 0 0 14px rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 1px 0 0 rgba(255,255,255,.4),inset -1px 0 0 rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 0 1px 0 rgba(255,255,255,.4),inset 0 -1px 0 rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#777}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{background-color:#fff;background-color:rgba(0,0,0,.05);box-shadow:inset 1px 1px 16px rgba(0,0,0,.1)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-minimal-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-minimal.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCSB_outside+.mCS-minimal-dark.mCSB_scrollTools_vertical,.mCSB_outside+.mCS-minimal.mCSB_scrollTools_vertical{right:0;margin:12px 0}.mCustomScrollBox.mCS-minimal+.mCSB_scrollTools+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox.mCS-minimal+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox.mCS-minimal-dark+.mCSB_scrollTools+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox.mCS-minimal-dark+.mCSB_scrollTools.mCSB_scrollTools_horizontal{bottom:0;margin:0 12px}.mCS-dir-rtl>.mCSB_outside+.mCS-minimal-dark.mCSB_scrollTools_vertical,.mCS-dir-rtl>.mCSB_outside+.mCS-minimal.mCSB_scrollTools_vertical{left:0;right:auto}.mCS-minimal-dark.mCSB_scrollTools_vertical .mCSB_dragger,.mCS-minimal.mCSB_scrollTools_vertical .mCSB_dragger{height:50px}.mCS-minimal-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-minimal.mCSB_scrollTools_horizontal .mCSB_dragger{width:50px}.mCS-minimal.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.2);filter:"alpha(opacity=20)";-ms-filter:"alpha(opacity=20)"}.mCS-minimal.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-minimal.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.5);filter:"alpha(opacity=50)";-ms-filter:"alpha(opacity=50)"}.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.2);filter:"alpha(opacity=20)";-ms-filter:"alpha(opacity=20)"}.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.5);filter:"alpha(opacity=50)";-ms-filter:"alpha(opacity=50)"}.mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools .mCSB_draggerRail{width:6px;background-color:#000;background-color:rgba(0,0,0,.2)}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px}.mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-3.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:6px;margin:5px 0}.mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{width:12px}.mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{height:12px;margin:2px 0}.mCS-light-3.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-light-3.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-light-3.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-light-3.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1)}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset.mCSB_scrollTools .mCSB_draggerRail{width:12px;background-color:#000;background-color:rgba(0,0,0,.2)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px;margin:3px 5px;position:absolute;height:auto;top:0;bottom:0;left:0;right:0}.mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{height:6px;margin:5px 3px;position:absolute;width:auto;top:0;bottom:0;left:0;right:0}.mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:12px;margin:2px 0}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent;border-width:1px;border-style:solid;border-color:#fff;border-color:rgba(255,255,255,.2);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{border-color:#000;border-color:rgba(0,0,0,.2)}.mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail{background-color:#fff;background-color:rgba(255,255,255,.6)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.6)}.mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-inset-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-inset-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.75)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9)} \ No newline at end of file diff --git a/static/css/style.css b/static/css/style.css new file mode 100644 index 0000000..50a6f3c --- /dev/null +++ b/static/css/style.css @@ -0,0 +1,2071 @@ +/* @import url("//fonts.googleapis.com/css?family=Overpass:300,400,600,700&display=swap"); */ + +@import url("bootstrap.min.css"); +@import url("ionicons.min.css"); +@import url("jquery.mCustomScrollbar.min.css"); +body { + font-family: "Overpass", sans-serif; + font-size: 14px; + line-height: 1.5; + color: #172636; + background: #FFFFFF; + font-weight: 400; +} + +ul, +ol { + margin: 0; + padding: 0; + list-style: none; +} + +img { + max-width: 100%; + height: auto; +} + +.mtb15 { + margin: 15px 0; +} + +.mt15 { + margin-top: 15px; +} + +.mb15 { + margin-bottom: 15px; +} + +.ml15 { + margin-left: 15px; +} + +.mr15 { + margin-right: 15px; +} + +.ptb70 { + padding: 70px 0; +} + +.pt70 { + padding-top: 70px; +} + +.pb40 { + padding-bottom: 40px; +} + +::-webkit-scrollbar { + background: transparent; + width: 3px; + height: 6px; +} + +::-webkit-scrollbar-thumb { + background: rgba(0, 0, 0, 0.07); + border: solid rgba(88, 88, 88, 0.12) 2px; + border-radius: 5px; +} + +.dropdown-toggle::after { + vertical-align: 1px; +} + +thead tr th { + padding: 8px 15px !important; +} + +thead th { + color: #758696; + font-size: 13px; + font-weight: 600; + border: 0 !important; +} + +tbody tr { + color: #4a4a4a; +} + +tbody tr:hover { + background: #f6f8f9; +} + +.input-group-text, +.form-control { + border-radius: 5px; +} + +.table tbody+tbody { + border: none; +} + +.heading { + background: #f5f9fc; + font-size: 14px; + font-weight: 400; + padding: 13px; + margin: 0; + color: #4a4a4a; +} + +.green { + color: #26de81; +} + +.red { + color: #ff231f; +} + +.table td, +.table th { + border-top: 1px solid #f0f3fa; +} + +.light-bb, +.input-group-text { + border: 1px solid #e0e3eb; +} + +.dark-bb { + border-bottom: 1px solid #2a2e39; +} + +#darkDepthChart, +#lightDepthChart { + width: 100%; + height: 349px; +} + +.sm-gutters { + padding-left: 7.5px; + padding-right: 7.5px; +} + +.sm-gutters>.col, +.sm-gutters>[class*=col-] { + padding-right: 7.5px; + padding-left: 7.5px; +} + +.form-control::-webkit-input-placeholder { + /* Chrome/Opera/Safari */ + color: #18214d59; +} + +.form-control::-moz-placeholder { + /* Firefox 19+ */ + color: #18214d59; +} + +.form-control:-ms-input-placeholder { + /* IE 10+ */ + color: #18214d59; +} + +.form-control:-moz-placeholder { + /* Firefox 18- */ + color: #18214d59; +} + +.custom-control-input:focus~.custom-control-label::before { + box-shadow: none; +} + +@keyframes pulse { + 0% { + opacity: 1; + width: 7px; + height: 7px; + left: 0; + top: 0; + } + 95% { + opacity: 0.1; + left: -10.5px; + top: -10.5px; + width: 28px; + height: 28px; + } + 100% { + opacity: 0; + width: 7px; + height: 7px; + left: 0; + top: 0; + } +} + +@keyframes slideIn { + 0% { + transform: translateY(1rem); + opacity: 0; + } + 100% { + transform: translateY(0rem); + opacity: 1; + } + 0% { + transform: translateY(1rem); + opacity: 0; + } +} + +header nav a { + color: #18214d; +} + +header nav a:hover { + color: #007bff; +} + +header .navbar-brand { + padding: 0; +} + +header .navbar-brand img { + height: 45px; +} + +.navbar-expand-lg .navbar-nav .nav-link { + padding-right: 1rem; + padding-left: 1rem; +} + +header nav .nav-item.active a { + color: #007bff; +} + +header .nav-link.btn { + padding: 5px 0; +} + +.circle-pulse { + background: #0089ff; + width: 7px; + height: 7px; + border-radius: 50%; + position: absolute; + right: 12px; + top: 12px; +} + +.circle-pulse:after { + background-color: #0089ff; + content: ""; + display: table; + border-radius: 50%; + position: absolute; + animation-name: pulse; + animation-duration: 0.9s; + animation-iteration-count: infinite; + animation-timing-function: ease-out; +} + +.header-custom-icon .nav-link { + line-height: 0; + margin-top: 6px; +} + +.dropdown-item { + color: #18214d; + font-size: 14px; +} + +.dropdown-item:focus, +.dropdown-item:active { + background-color: #f8f9fa; + color: #16181b; +} + +.header-img-icon .nav-link.dropdown-toggle { + padding-right: 0; +} + +.header-custom-icon a:after, +.header-img-icon a:after { + display: none; +} + +.header-custom-icon .dropdown-menu, +.header-img-icon .dropdown-menu { + padding: 0; + margin-top: 8px; +} + +.dropdown-menu { + max-width: 280px; + position: absolute; + right: 0; + left: auto; + border-radius: 5px; + margin-top: 12px; + border: 1px solid #f2f4f9; + box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 14px -6px; + animation-duration: 0.3s; + animation-fill-mode: both; + animation-name: slideIn; +} + +.dropdown-menu::before { + content: ""; + width: 13px; + height: 13px; + background: #fff; + position: absolute; + top: -8px; + right: 5%; + transform: rotate(45deg); + border-top: 1px solid #f2f4f9; + border-left: 1px solid #f2f4f9; + z-index: -1; +} + +.dropdown-menu p { + color: #18214d; + font-weight: 600; +} + +.dropdown-menu a:hover { + text-decoration: none; +} + +.dropdown-menu a.text-muted:hover { + color: #007bff !important; +} + +.header-img-icon .nav-link img { + width: 30px; +} + +.header-custom-icon i { + font-size: 20px; + color: #758696; +} + +.dropdown-header { + padding: 12px 20px; + font-size: 13px; + border-bottom: 1px solid #f2f4f9; +} + +.dropdown-body { + padding: 5px; + max-height: 290px; + position: relative; + overflow-y: auto; +} + +.dropdown-body .dropdown-item { + display: flex; + align-items: center; + padding: 9px 16px; +} + +.dropdown-body .dropdown-item .content { + margin-left: 15px; + width: 200px; + white-space: normal; +} + +.dropdown-item .icon { + width: 30px; + height: 30px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + background: #f7f7f7; +} + +.dropdown-body .dropdown-item .content p { + margin: 0; + font-size: 13px; + font-weight: 400; +} + +.dropdown-body .dropdown-item .content p.sub-text { + font-size: 12px; +} + +.dropdown-footer { + padding: 10px 20px; + border-top: 1px solid #f2f4f9; + font-size: 14px; +} + +.dropdown-item:nth-child(1) .icon { + background: rgba(114, 124, 245, 0.1); +} + +.dropdown-item:nth-child(1) .icon i { + color: #727cf5; +} + +.dropdown-item:nth-child(2) .icon { + background: rgba(255, 51, 102, 0.1); +} + +.dropdown-item:nth-child(2) .icon i { + color: #ff5680; +} + +.dropdown-item:nth-child(3) .icon { + background: rgba(102, 209, 209, 0.1); +} + +.dropdown-item:nth-child(3) .icon i { + color: #66d1d1; +} + +.dropdown-item:nth-child(4) .icon { + background: rgba(251, 188, 6, 0.1); +} + +.dropdown-item:nth-child(4) .icon i { + color: #fbbc06; +} + +.dropdown-item:nth-child(5) .icon { + background: rgba(16, 183, 89, 0.1); +} + +.dropdown-item:nth-child(5) .icon i { + color: #10b759; +} + +.header-img-icon .dropdown-header { + padding: 0px 20px; +} + +.header-img-icon .profile-nav .nav-item .nav-link { + font-size: 14px; + padding: 5px 20px; +} + +.header-img-icon .profile-nav { + padding-bottom: 11px; +} + +.header-img-icon .profile-nav .nav-item .nav-link:hover { + color: #18214d; + background-color: #f8f9fa; +} + +.header-img-icon .profile-nav .nav-item .nav-link.red { + color: #f74745; +} + +.header-img-icon .profile-nav .nav-item .nav-link.red:hover { + color: #f74745 !important; +} + +.header-img-icon .dropdown-body { + padding: 10px 0 0; +} + +.header-img-icon .dropdown-header .name { + font-size: 16px; +} + +.header-img-icon .dropdown-header { + padding: 20px 20px 0; +} + +.header-img-icon .profile-nav .nav-item .nav-link i { + margin-right: 15px; +} + +.market-pairs { + border: 1px solid #e0e3eb; + padding-top: 14px; + border-radius: 2px; +} + +.market-pairs .input-group { + padding: 0 14px; +} + +.market-pairs span { + background: transparent; +} + +.market-pairs input { + border-color: #e0e3eb; + border-left: 0; + font-weight: 300; +} + +.market-pairs input:focus { + box-shadow: none; + border-color: #e0e3eb; +} + +.market-pairs .nav { + margin-top: 14px; + background: #f5f9fc; +} + +.market-pairs .nav-link { + color: #4a4a4a; + padding: 10px 13px; +} + +.market-pairs .nav-link.active { + color: #007bff; + background: transparent; +} + +.table { + margin-bottom: 0; +} + +.table td { + font-size: 13px; + padding: 10px 18px; +} + +.market-pairs tbody tr td i { + color: #75869696; +} + +#STAR i { + color: #007bff; +} + +.market-pairs thead tr th, +.market-pairs tbody tr td { + cursor: pointer; + font-weight: 400; +} + +.market-pairs tbody { + height: 800px; + overflow-y: auto; + display: block; +} + +.no-fluid .market-pairs tbody { + height: 847px; +} + +.market-pairs table, +.market-pairs tr { + width: 100%; + table-layout: fixed; +} + +.market-pairs tr { + float: left; + clear: both; + overflow: hidden; +} + +.market-pairs thead th, +.market-pairs tbody td { + width: 65%; +} + +.order-book table, +.order-book tr, +.order-book td, +.order-book th { + width: 100%; + table-layout: fixed; +} + +.order-book tr { + float: left; + clear: both; + overflow: hidden; +} + +.order-book .table thead th { + font-weight: 400; + font-size: 12px; +} + +.order-book thead tr { + border-bottom: 1px solid #e0e3eb; +} + +.order-book tbody tr, +.order-book tbody td { + border: none; +} + +.order-book { + border: 1px solid #e0e3eb; + border-radius: 2px; +} + +.red-bg-80, +.red-bg-60, +.red-bg-40, +.red-bg-20, +.red-bg-10, +.red-bg-8, +.red-bg-5, +.red-bg, +.green-bg-80, +.green-bg-60, +.green-bg-40, +.green-bg-20, +.green-bg-10, +.green-bg-8, +.green-bg-5, +.green-bg { + position: relative; +} + +.red-bg-80:after, +.red-bg-60:after, +.red-bg-40:after, +.red-bg-20:after, +.red-bg-10:after, +.red-bg-8:after, +.red-bg-5:after, +.red-bg:after { + position: absolute; + content: ""; + background: #de262663; + right: 0; + top: 0; + width: 280px; + height: 45px; +} + +.red-bg-60:after { + width: 240px; +} + +.red-bg-40:after { + width: 200px; +} + +.red-bg-20:after { + width: 160px; +} + +.red-bg-10:after { + width: 120px; +} + +.red-bg-8:after { + width: 80px; +} + +.red-bg-5:after { + width: 50px; +} + +.red-bg:after { + width: 30px; +} + +.green-bg-80:after, +.green-bg-60:after, +.green-bg-40:after, +.green-bg-20:after, +.green-bg-10:after, +.green-bg-8:after, +.green-bg-5:after, +.green-bg:after { + position: absolute; + content: ""; + background: #26de8163; + right: 0; + top: 0; + width: 280px; + height: 45px; +} + +.green-bg-60:after { + width: 240px; +} + +.green-bg-40:after { + width: 200px; +} + +.green-bg-20:after { + width: 160px; +} + +.green-bg-10:after { + width: 120px; +} + +.green-bg-8:after { + width: 80px; +} + +.green-bg-5:after { + width: 50px; +} + +.green-bg:after { + width: 30px; +} + +.ob-heading span { + color: #4a4a4a; + display: block; + font-size: 12px; + font-weight: 400; +} + +.ob-heading td { + padding: 5px 12px; + cursor: default; +} + +.ob-heading tr { + border-top: 1px solid #f0f3fa !important; + border-bottom: 1px solid #f0f3fa !important; +} + +.ob-heading tr:hover { + background: #fff; +} + +.ob-heading td:first-child { + width: 65%; +} + +.order-book tbody { + display: block; + overflow-y: auto; + height: 211px; +} + +tbody.ob-heading { + height: inherit; +} + +.market-trade input { + border: 1px solid #e0e3eb; + font-weight: 300; +} + +.market-trade input:focus { + box-shadow: none; + border-color: #e0e3eb; +} + +.market-trade { + border: 1px solid #e0e3eb; + border-radius: 2px; +} + +.market-trade .tab-content { + height: 357px; + overflow-y: auto; + padding: 14px; +} + +.market-trade .nav { + padding: 14px 14px 0; +} + +.market-trade .nav .nav-item .nav-link.active { + background: #fff; + color: #007bff; +} + +.market-trade .nav .nav-item .nav-link { + color: #4a4a4a; + padding: 0; +} + +.market-trade .input-group-text { + background: #eff2f6; + color: #4a4a4a; + font-weight: 300; +} + +.market-trade .input-group { + margin-bottom: 14px; +} + +.market-trade .nav-item { + margin-right: 30px; +} + +.market-trade-list li a { + background: #eff2f6; + color: #4a4a4a; + font-weight: 300; + padding: 3px 15px; + border-radius: 5px; +} + +.market-trade-list li { + display: inline-block; + margin-right: 7px; + margin-bottom: 7px; +} + +.market-trade-list li:last-child { + margin-right: 0; +} + +.market-trade-buy .market-trade-list li a:hover { + text-decoration: none; + background: #26a69a; + color: #fff; +} + +.market-trade-sell .market-trade-list li a:hover { + text-decoration: none; + background: #ef5350; + color: #fff; +} + +.market-trade button.buy, +.market-trade button.sell { + background: #26de81; + color: #fff; + text-transform: uppercase; + padding: 10px; + margin-top: 30px; + width: 100%; + box-shadow: 0px 0px 15px 0px #26de81ad; +} + +.market-trade button.sell { + background: #ff231f; + box-shadow: 0px 0px 15px 0px #ff231fad; +} + +.market-trade p { + margin: 5px 0; + font-size: 13px; + color: #4a4a4a; +} + +.market-trade p span { + float: right; +} + +.market-trade-list { + margin-bottom: 23px; +} + +.market-trade-item { + width: 100%; +} + +.market-trade-buy, +.market-trade-sell { + width: 100%; +} + +.market-trade-buy { + padding: 0 15px 0 0; +} + +.market-trade-sell { + padding: 0 0 0 15px; + border-left: 1px solid #e0e3eb; +} + +.market-history .nav { + background: #F5F9FC; +} + +.market-history .nav-link { + color: #4a4a4a; + padding: 10px 13px; +} + +.market-history .nav-link.active { + color: #007bff; + background: transparent; +} + +.market-history thead tr th, +.market-history tbody tr td { + cursor: pointer; + font-weight: 400; +} + +.market-history tbody { + height: 315px; + overflow-y: auto; + display: block; +} + +.market-history table, +.market-history tr, +.market-history td, +.market-history th { + width: 100%; + table-layout: fixed; +} + +.market-history tr { + float: left; + clear: both; + overflow: hidden; +} + +.market-history { + border: 1px solid #e0e3eb; + border-radius: 2px; +} + +.market-news { + border: 1px solid #e0e3eb; + border-radius: 2px; +} + +.market-news li a { + color: #4a4a4a; + font-size: 11px; + display: block; + text-decoration: none; +} + +.market-news li:hover { + background: #f6f8f9; +} + +.market-news li strong { + display: block; + font-size: 13px; + margin-bottom: 2px; + color: #4a4a4ac7; +} + +.market-news li span { + display: block; + margin-top: 5px; +} + +.market-news li { + border-bottom: 1px solid #f0f3fa; + padding: 10px 13px; +} + +.market-news li:last-child { + border: 0; +} + +.market-news ul { + height: 348px; + overflow-y: auto; +} + +.market-order th { + width: 13%; +} + +.no-data { + position: absolute; + right: 48%; + top: 48%; + text-align: center; + color: #b9c2ca; +} + +.no-data i { + font-size: 100px; + display: block; + line-height: 0px; + color: #dce1e5; +} + +.market-order-item { + color: #758696; + padding: 8px 15px; +} + +.market-order { + border-top: 0; + min-height: 392px; + border: 1px solid #e0e3eb; + border-radius: 2px; +} + +.markets-chart>div { + width: 110%; + margin-left: -16px; +} + +.markets-container { + position: relative; + overflow: hidden; + height: 159px; + border: 1px solid rgba(0, 0, 0, 0.02); + box-shadow: 0 2px 16px 0 rgba(0, 0, 0, 0.04); + border-radius: 5px; + margin-bottom: 30px; +} + +.markets-chart { + position: absolute; + top: 40px; + width: 100%; + left: 0; +} + +.markets-content span.green, +.markets-content span.red { + position: absolute; + right: 0; + background: #26a69a; + color: #fff; + top: 15px; + padding: 3px 12px; + border-top-left-radius: 50px; + border-bottom-left-radius: 50px; + font-weight: 600; +} + +.markets-content span.red { + background: #ef5350; +} + +.markets-content h2 { + font-size: 14px; + top: 14px; + position: absolute; + left: 15px; + color: #4a4a4a; +} + +.markets-content p { + position: absolute; + top: 32px; + left: 15px; + font-size: 16px; +} + +.markets-pair-list tr { + cursor: pointer; +} + +.markets-pair-list th, +.markets-pair-list td { + padding: 15px !important; + font-size: 14px; +} + +.markets-pair-list tbody tr td i { + color: #75869696; +} + +.markets-pair-list .nav-link.active { + color: #007bff; + background: transparent; +} + +.markets-pair-list .nav-link { + color: #4a4a4a; +} + +.markets-pair-list .nav { + background: #f5f9fc; + padding: 7px 0; +} + +.markets-pair-list th { + font-weight: 400; +} + +.markets-pair-list td img { + width: 18px; + vertical-align: text-top; + margin-right: 5px; +} + +.markets-pair-list .load-more { + border: 1px solid #e0e3eb; + display: inline-block; + padding: 11px 30px 8px; + color: #4a4a4a; + margin-top: 50px; + transition: 0.3s; +} + +.markets-pair-list .load-more i { + margin-left: 10px; +} + +.markets-pair-list .load-more:hover { + background: #007bff; + color: #fff; + border: 1px solid #007bff; +} + +.markets-item { + margin-bottom: 30px; +} + +.markets-capital-item { + box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 14px -6px; + padding: 40px 0 0 0; + text-align: center; + border-radius: 5px; + border: 1px solid #f2f4f9; + height: 311px; + margin-bottom: 30px; +} + +.markets-capital-chart { + margin-left: -10px; +} + +.markets-capital-item img { + width: 25px; + margin-top: -3px; + margin-right: 2px; +} + +.markets-capital-item h4 { + margin-top: 16px; + margin-bottom: 15px; + font-size: 20px; +} + +.markets-capital-item h2 { + font-size: 26px; +} + +.markets-capital-details h3 { + font-size: 18px; + margin-bottom: 40px; +} + +.market-capital-ticker .markets-capital-item { + height: 96.2%; + margin-bottom: 5px; +} + +.form-access form { + box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 14px -6px; + border-radius: 5px; + padding: 30px; + border: 1px solid #f2f4f9; + min-width: 350px; +} + +.form-access .form-group input { + border: 1px solid #e0e3eb; + height: 45px; + color: #18214d; + font-size: 14px; +} + +.form-access .form-group input:focus { + box-shadow: none; +} + +.form-access a:hover { + text-decoration: none; +} + + +/* .form-access span { + text-align: center; + display: block; + font-size: 22px; + margin-bottom: 15px; + margin-top: -5px; + font-weight: 600; +} */ + +.form-access .text-right { + margin-top: -5px; + font-weight: 600; +} + +.form-access button { + width: 100%; + padding: 12px; + font-weight: 600; + margin-top: 20px; +} + +.form-access .custom-control-label::before, +.form-access .custom-control-label::after { + top: 2px; +} + +.form-access .custom-control-label::before { + border: #cbd2df solid 1px; +} + +.form-access h2 { + font-size: 14px; + text-align: center; + margin-top: 20px; +} + +.form-access h2 a { + font-weight: 600; +} + +.error-page h2 { + font-size: 250px; + font-weight: 700; + margin-bottom: 0; + line-height: 1; +} + +.error-page p { + font-size: 16px; + margin-bottom: 40px; +} + +.error-page a { + border: 1px solid #e0e3eb; + display: inline-block; + padding: 11px 30px 8px; + color: #4a4a4a; + transition: 0.3s; +} + +.error-page a:hover { + background: #007bff; + color: #fff; + border: 1px solid #007bff; +} + +.error-page a i { + margin-left: 10px; +} + +.technical-analysis .tradingview-widget-container { + margin-bottom: 30px; +} + +.symbol-info .tradingview-widget-container { + margin-bottom: 15px; +} + +.markets-overview .tradingview-widget-container { + margin-bottom: 30px; +} + +.settings .card { + box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 14px -6px; + border-radius: 5px; + border: none; + margin-bottom: 15px; +} + +.settings-nav { + box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 14px -6px; + border-radius: 5px; +} + +.settings-nav .nav-link { + border-radius: 0; + text-transform: uppercase; + color: #18214d; + font-weight: 600; + margin: 2px 0; + padding: 10px 20px; +} + +.settings-nav .nav-link i { + margin-right: 10px; +} + +.settings .card-title { + font-size: 16px; + margin-bottom: 30px; +} + +.settings-profile .col-md-6 { + margin-bottom: 20px; +} + +.settings-profile input, +.settings-profile select { + border: 1px solid #e0e3eb; + border-radius: 5px; + font-size: 14px; + height: 45px; +} + +.settings-profile input[type=submit] { + background: #007bff; + color: #fff; + font-weight: 600; + padding: 10px 25px; + height: inherit; + font-size: 16px; + margin-top: 10px; +} + +.settings-profile .custom-file { + display: inline-block; + width: 20%; + margin-left: 20px; +} + +.settings-profile .custom-file label { + border: 1px solid #e0e3eb; +} + +.settings-profile .custom-file label:after { + background: #007bff; + color: #fff; + font-weight: 600; +} + +.settings .wallet .nav-pills img { + width: 40px; + height: 40px; + margin-right: 15px; +} + +.settings .wallet .nav-pills h2 { + margin-bottom: 0; + line-height: 1; + color: #18214d; + font-size: 22px; +} + +.settings .wallet .nav-pills p { + margin-bottom: 0; + color: #18214d; +} + +.settings .wallet .nav-pills a.active { + background: #0f7dff; +} + +.settings .wallet .nav-pills a { + border-top: 1px solid #f0f3fa; + padding: 15px; +} + +.settings .wallet .nav-pills a:first-child, +.settings-nav .nav-link:first-child { + border-top: 0; + border-top-right-radius: 5px; + border-top-left-radius: 5px; +} + +.settings .wallet .nav-pills a:last-child, +.settings .settings-nav .nav-link:last-child { + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; +} + +.settings .wallet .nav-pills h3 { + color: #18214d; + margin-bottom: 0; +} + +.settings .wallet .nav-pills { + box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 14px -6px; + border-radius: 5px; +} + +.settings .wallet .nav-pills a { + border-radius: 0; +} + +.settings .wallet .nav-pills a.active h2, +.settings .wallet .nav-pills a.active h3, +.settings .wallet .nav-pills a.active p { + color: #ffffff; +} + +.settings .wallet .tab-content li i { + font-size: 22px; + color: #0f7dff; + background: rgba(15, 125, 255, 0.13); + width: 40px; + height: 40px; + border-radius: 50px; + text-align: center; + line-height: 45px; + margin-right: 15px; +} + +.settings .wallet .tab-content h2 { + margin-bottom: 0; + font-size: 18px; +} + +.settings .wallet .tab-content h3 { + margin-bottom: 0; + font-size: 18px; +} + +.settings .wallet .tab-content li:first-child { + border-bottom: 1px solid #f0f3fa; + padding-bottom: 15px; + margin-bottom: 15px; +} + +.settings .wallet .tab-content button.green { + background: #26de81; + color: #ffffff; + box-shadow: 0px 0px 15px 0px #26de81ad; +} + +.settings .wallet .tab-content button.red { + background: #ff231f; + box-shadow: 0px 0px 15px 0px #ff231fad; + color: #ffffff; +} + +.settings .wallet .tab-content button { + padding: 12px 60px; + margin-right: 10px; + margin-bottom: 20px; +} + +.settings .wallet .tab-content button:focus { + box-shadow: none; +} + +.settings .wallet .tab-content ul { + margin: 0 0 40px; +} + +.settings .wallet-address input { + padding: 25px 15px; + font-size: 14px; +} + +.settings .wallet-address .input-group-prepend button { + padding: 13px 20px; + border-top-right-radius: 5px !important; + border-bottom-right-radius: 5px !important; +} + +.settings .wallet-address input { + border: 1px solid #e0e3eb; +} + +.settings .wallet-history i { + margin-left: 14px; +} + +.settings .wallet-address .input-group { + padding-top: 30px; +} + +.settings .wallet .tab-content h2.wallet-title { + color: #18214d; + font-size: 16px; +} + +.settings-notification li { + display: flex; + justify-content: space-between; + padding: 15px 0; + border-bottom: 1px solid #f0f3fa; + align-items: center; +} + +.settings-notification li:first-child { + padding-top: 0; +} + +.settings-notification li:last-child { + padding-bottom: 0; + border-bottom: 0; +} + +.settings-notification li span { + color: #18214d59; +} + +.settings-notification li p { + margin-bottom: 0; +} + +.settings .custom-control-label { + cursor: pointer; +} + +.wallet-history .ion-md-trash { + font-size: 16px; + cursor: pointer; +} + +.wallet-history { + overflow-x: auto; +} + +#dark, +#dark header { + background: #131722; +} + +#dark header nav a { + color: #ffffff; +} + +#dark header nav a:hover { + color: #007bff; +} + +#dark header nav a.btn:hover { + color: #ffffff; +} + +#dark header nav .nav-item.active a { + color: #007bff; +} + +#dark .market-pairs { + border: 1px solid #2a2e39; + background: #131722; +} + +#dark tr { + background: #131722; +} + +#dark .market-pairs .table td, +#dark .market-pairs .table th { + border-top: 1px solid #2a2e39; +} + +#dark .market-history .table td, +#dark .market-history .table th { + border-top: 1px solid #2a2e39; +} + +#dark .order-book thead tr { + border-bottom: 1px solid #2a2e39; +} + +#dark .order-book, +#dark .market-history, +#dark .market-news { + border: 1px solid #2a2e39; +} + +#dark tbody tr:hover { + background: #2a2e39; +} + +#dark .form-control::-webkit-input-placeholder { + /* Chrome/Opera/Safari */ + color: #69727a; +} + +#dark .form-control::-moz-placeholder { + /* Firefox 19+ */ + color: #69727a; +} + +#dark .form-control:-ms-input-placeholder { + /* IE 10+ */ + color: #69727a; +} + +#dark .form-control:-moz-placeholder { + /* Firefox 18- */ + color: #69727a; +} + +#dark tbody tr { + color: #ffffff; +} + +#dark thead th, +#dark .market-pairs .nav-link { + color: #4f5966; +} + +#dark .market-pairs .nav-link.active, +#dark #STAR i { + color: #ffffff; +} + +#dark .green { + color: #26de81; +} + +#dark .red { + color: #ff231f; +} + +#dark .market-pairs .nav { + background: #1c2030; +} + +#dark .market-pairs input, +#dark .market-pairs span { + border-color: #2a2e39; + background: #2a2e39; +} + +#dark .market-pairs input { + color: #ffffff; +} + +#dark .heading { + background: #1c2030; + color: #ffffff; +} + +#dark .ob-heading tr { + border-top: 1px solid #2a2e39 !important; + border-bottom: 1px solid #2a2e39 !important; +} + +#dark .ob-heading tr:hover { + background: #131722; + cursor: default; +} + +#dark .ob-heading span { + color: #4f5966; +} + +#dark .dropdown-menu { + background: #131722; + box-shadow: 0 0 10px 0 #131722; + border: 1px solid #2a2e39; +} + +#dark .dropdown-item:focus, +#dark .dropdown-item:hover { + background-color: #2a2e39; + color: #ffffff; +} + +#dark .market-history .nav { + background: #1c2030; +} + +#dark .market-history .nav-link.active { + color: #ffffff; +} + +#dark .market-history .nav-link { + color: #4f5966; +} + +#dark .red-bg-80:after, +#dark .red-bg-60:after, +#dark .red-bg-40:after, +#dark .red-bg-20:after, +#dark .red-bg-10:after, +#dark .red-bg-8:after, +#dark .red-bg-5:after, +#dark .red-bg:after { + background: #ff231f63; +} + +#dark .market-news { + background: #131722; +} + +#dark .market-news li { + border-bottom: 1px solid #2a2e39; +} + +#dark .market-news li:hover { + background: #2a2e39; +} + +#dark .market-news li strong, +#dark .market-news li a { + color: #c5cbce; +} + +#dark .market-order { + background: #131722; +} + +#dark .no-data i, +#dark .no-data { + color: #2a2e39; +} + +#dark .market-trade { + border: 1px solid #2a2e39; + background: #131722; +} + +#dark .market-trade .nav .nav-item .nav-link.active { + background: transparent; + color: #ffffff; +} + +#dark .market-trade .nav .nav-item .nav-link { + color: #4f5966; +} + +#dark .market-trade p { + color: #c5cbce; +} + +#dark .market-trade-list li a { + background: #2a2e39; + color: #ffffff; +} + +#dark .market-trade input { + border: 1px solid #2a2e39; + background: #2a2e39; + color: #ffffff; +} + +#dark .market-trade .input-group-text { + background: #2a2e39; + color: #ffffff; + border-color: #2a2e39; +} + +#dark .market-trade-buy .market-trade-list li a:hover { + background: #26de81; + color: #fff; +} + +#dark .market-trade-sell .market-trade-list li a:hover { + background: #ff231f; + color: #fff; +} + +#dark #darkDepthChart { + background: #131722; +} + +#dark .markets { + background: #131722; +} + +#dark .table td, +#dark table th { + border-top: 1px solid #2a2e39; +} + +#dark .markets-pair-list .nav { + background: #1c2030; +} + +#dark .markets-pair-list .nav-link.active, +#dark #STAR i { + color: #ffffff; +} + +#dark thead th, +#dark .markets-pair-list .nav-link { + color: #4f5966; +} + +#dark .markets-pair-list .load-more { + border: 1px solid #2a2e39; + color: #ffffff; +} + +#dark .markets-pair-list .load-more:hover { + color: #fff; + border: 1px solid #007bff; +} + +#dark .markets-content h2, +#dark .markets-content p { + color: #ffffff; +} + +#dark .markets-content span.green, +#dark .markets-content span.red { + color: #fff; +} + +#dark .market-trade-sell { + border-left: 1px solid #2a2e39; +} + +#dark .markets-container { + background: #1e222d; +} + +#dark .sign-up-form h3 { + border-top: 0; + margin-top: 0; + padding-top: 15px; +} + +#dark header nav .nav-item.active a.btn:hover { + color: #fff; +} + +#dark .custom-control-input:checked~.custom-control-label::before { + color: #fff; + border-color: #007bff; + background-color: #007bff; +} + +#dark .dropdown-menu::before { + background: #131722; + border-top: 1px solid #2a2e39; + border-left: 1px solid #2a2e39; +} + +#dark .dropdown-menu p { + color: #ffffff; +} + +#dark .dropdown-header { + border-bottom: 1px solid #2a2e39; +} + +#dark .dropdown-footer { + border-top: 1px solid #2a2e39; +} + +#dark .header-img-icon .profile-nav .nav-item .nav-link:hover { + background-color: #2a2e39; + color: #ffffff; +} + +#dark .form-control, +#dark .settings-profile select { + background-color: #2a2e39; + border: 1px solid #2a2e39; + color: #ffffff; +} + +#dark .form-access form { + padding: 30px; + border-radius: 5px; + min-width: 350px; + box-shadow: 0 0 10px 0 #131722; + border: 1px solid #2a2e39; +} + +#dark .form-access h2, +#dark .form-access { + color: #ffffff; +} + +#dark .form-access .custom-control-label::before { + border: #2a2e39 solid 1px; + background-color: #2a2e39; +} + +#dark .error-page a { + border: 1px solid #2a2e39; + color: #ffffff; +} + +#dark .error-page a:hover { + border: 1px solid #007bff; + background: #007bff; + color: #ffffff; +} + +#dark .error-page h2, +#dark .error-page p { + color: #c5cbce; +} + +#dark .wallet .nav-pills a, +#dark .wallet-history { + border-top: 1px solid #2a2e39; +} + +#dark .wallet .nav { + background: #1e222d; +} + +#dark .wallet h2, +#dark .wallet h3, +#dark .wallet h4, +#dark .wallet p { + color: #ffffff; +} + +#dark .wallet button.green, +#dark .wallet button.red, +#dark .wallet .nav-pills a.active h2, +#dark .wallet .nav-pills a.active h3, +#dark .wallet .nav-pills a.active p { + color: #ffffff; +} + +#dark .wallet .tab-content li:first-child { + border-bottom: 1px solid #2a2e39; +} + +#dark .wallet-history tr { + background: #1e222d; +} + +#dark .wallet-address input, +#dark .wallet-address input:focus { + border: 1px solid #2a2e39; + background: #2a2e39; + box-shadow: none; + color: #ffffff; +} + +#dark .depth-chart-inner { + border: 1px solid #2a2e39; +} + +#dark .markets-capital-item { + box-shadow: 0 0 10px 0 #131722; + border: 1px solid #2a2e39; +} + +#dark .markets-capital-item h2, +#dark .markets-capital-item h4 { + color: #fff; +} + +#dark .settings .card { + background: #1e222d; +} + +#dark .settings .card-title { + color: #fff; +} + +#dark .settings-nav { + background: #1e222d; +} + +#dark .settings-nav .nav-link { + color: #ffffff; +} + +#dark .settings-notification li { + border-bottom: 1px solid #2a2e39; +} + +#dark .settings-notification li:last-child { + border-bottom: 0; +} + +#dark .settings-notification p { + color: #ffffff; +} + +#dark .settings-notification span { + color: #4f5966; +} + +#dark .settings label { + color: #fff; +} + +#dark .settings .custom-file-label { + background: #2a2e39; + border: 1px solid #2a2e39; + color: #616d75; +} + +#dark .settings-profile input[type=submit] { + border: 1px solid #007bff; +} + +@media only screen and (max-width: 1434px) { + .market-pairs tbody { + height: 760px; + } + .no-fluid .market-pairs tbody { + height: 847px; + } + .settings-profile .custom-file { + width: 25%; + } +} + +@media only screen and (max-width: 1300px) { + .market-pairs tbody { + height: 740px; + } + .no-fluid .market-pairs tbody { + height: 755px; + } +} + +@media only screen and (max-width: 1200px) { + .markets-capital-item { + height: 289px; + } +} + +@media only screen and (max-width: 991px) { + .settings-nav { + margin-bottom: 15px; + } + .settings-profile .custom-file { + width: 35%; + } +} + +@media only screen and (max-width: 918px) { + .market-history tbody { + height: 274px; + } +} + +@media only screen and (max-width: 792px) { + .market-pairs tbody { + height: 699px; + } +} + +@media only screen and (max-width: 768px) { + .settings-profile .custom-file { + width: 45%; + } + header button.navbar-toggler i { + font-size: 30px; + color: #4a4a4a; + } + header button.navbar-toggler:focus { + outline: none; + } + .navbar-collapse .dropdown.menu-avatar-icon { + margin-top: 10px; + } + .no-fluid .market-pairs { + margin-bottom: 15px; + } + .no-fluid .order-book { + margin-top: 15px; + } + .circle-pulse { + left: 27px; + right: inherit; + } + .dropdown-menu::before { + right: inherit; + left: 5%; + } + .wallet .nav { + margin-bottom: 30px; + } + .wallet-address img { + margin-top: 40px; + } + #dark header button.navbar-toggler i { + color: #c5cbce; + } + .market-order-item { + padding: 5px 5px; + overflow: hidden; + } + .market-order-item li { + font-size: 12px; + } + .markets-capital-item { + height: 304px; + } +} + +@media only screen and (max-width: 576px) { + .markets-capital-item { + height: 91.4%; + } +} diff --git a/static/css/style.css.map b/static/css/style.css.map new file mode 100644 index 0000000..82aba35 --- /dev/null +++ b/static/css/style.css.map @@ -0,0 +1,26 @@ +{ + "version": 3, + "sourceRoot": "", + "sources": [ + "../scss/base/_import.scss", + "../scss/base/_typography.scss", + "../scss/base/_common.scss", + "../scss/layout/_header.scss", + "../scss/module/_market-pairs.scss", + "../scss/module/_market-book.scss", + "../scss/module/_market-trade.scss", + "../scss/module/_market-history.scss", + "../scss/module/_market-news.scss", + "../scss/module/_market-order.scss", + "../scss/module/_markets.scss", + "../scss/module/_form-access.scss", + "../scss/module/_error.scss", + "../scss/module/_tradingview.scss", + "../scss/module/_settings.scss", + "../scss/theme/_dark.scss", + "../scss/theme/_responsive.scss" + ], + "names": [], + "mappings": "AAAQ;AACA;AACA;AACA;ACHR;EACE;EACA;EACA;EACA;EACA;EACA;;;ACNF;AAAA;EAEE;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;AAAA;EAEE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;EACE;;;AAEF;AAAA;EAEE;EACA;;;AAEF;EACE;EACA;;;AAEF;AAAA;EAEE;EACA;;;AAGF;AACE;EACA;;;AAEF;AACE;EACA;;;AAEF;AACE;EACA;;;AAEF;AACE;EACA;;;AAGF;EACE;;;AC/HF;EACE;IACE;IACA;IACA;IACA;IACA;;EAEF;IACE;IACA;IACA;IACA;IACA;;EAEF;IACE;IACA;IACA;IACA;IACA;;;AAIJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;EAEF;IACE;IACA;;;AAGJ;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;AAAA;EAEE;EACA;;;AAEF;EACE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAGF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AC9PF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;AAAA;EAEE;EACA;;;AAGF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;AAAA;EAEE;EACA;;;AAEF;EACE;EACA;EACA;;;AAGF;AAAA;EAEE;;;AC5EF;AAAA;AAAA;AAAA;EAIE;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;AAAA;EAEE;;;AAEF;EACE;EACA;;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAgBE;;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;ACtJF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAGF;EACE;;;AAEF;EACE;;;AAGF;AAAA;EAEE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;ACjHF;EACE;;;AAEF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;AAAA;EAEE;EACA;;;AAEF;EACE;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;EAIE;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;;;ACrCF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;ACtCF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;EACA;;;ACxBF;EACE;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAEF;AAAA;EAEE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAEF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;ACnJF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;AAAA;EAEE;;;AAEF;EACE;;;AAGF;EACE;EACA;EACA;;;AAEF;EACE;;;ACrDF;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;ACvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;ACPF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAGF;EACE;;;AAGF;AAAA;EAEE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAEF;EACE;EACA;;;AAEF;AAAA;EAEE;EACA;EACA;;;AAEF;AAAA;EAEE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;AAAA;AAAA;EAGE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;EACA;;;AAGF;EACE;;;AAEF;EACE;;;AAGF;EACE;;;AAEF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAEF;EACE;;;AClOF;AAAA;EAEE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;EACE;;;AAEF;AAAA;AAAA;EAGE;;;AAEF;EACE;;;AAEF;AACE;EACA;;;AAEF;AACE;EACA;;;AAEF;AACE;EACA;;;AAEF;AACE;EACA;;;AAEF;EACE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;AAAA;EAEE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;AAAA;EAEE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;AAAA;EAEE;;;AAEF;EACE;;;AAEF;AAAA;EAEE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;AAAA;EAEE;;;AAEF;EACE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;AAAA;EAEE;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;AAAA;EAEE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;EACA;;;AAGF;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AAEF;EACE;;;AAEF;AAAA;AAAA;AAAA;EAIE;;;AAEF;AAAA;AAAA;AAAA;AAAA;EAKE;;;AAGF;EACE;;;AAEF;EACE;;;AAEF;AAAA;EAEE;EACA;EACA;EACA;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;AAAA;EAEE;;;AAEF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;;;AAEF;EACE;EACA;EACA;;;AAGF;EACE;;;ACtYF;EACE;IACE;;;EAEF;IACE;;;EAEF;IACE;;;AAGJ;EACE;IACE;;;EAEF;IACE;;;AAGJ;EACE;IACE;;;AAGJ;EACE;IACE;;;EAEF;IACE;;;AAGJ;EACE;IACE;;;AAGJ;EACE;IACE;;;AAGJ;EACE;IACE;;;EAEF;IACE;IACA;;;EAEF;IACE;;;EAEF;IACE;;;EAEF;IACE;;;EAEF;IACE;;;EAEF;IACE;IACA;;;EAEF;IACE;IACA;;;EAEF;IACE;;;EAEF;IACE;;;EAEF;IACE;;;EAEF;IACE;IACA;;;EAEF;IACE;;;EAEF;IACE;;;AAGJ;EACE;IACE", + "file": "style.css" +} \ No newline at end of file diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000..11c4bbe Binary files /dev/null and b/static/favicon.ico differ diff --git a/static/fullpage/jquery.fullpage.css b/static/fullpage/jquery.fullpage.css new file mode 100644 index 0000000..18cfe00 --- /dev/null +++ b/static/fullpage/jquery.fullpage.css @@ -0,0 +1,221 @@ +/*! + * fullPage 2.9.5 + * https://github.com/alvarotrigo/fullPage.js + * MIT licensed + * + * Copyright (C) 2013 alvarotrigo.com - A project by Alvaro Trigo + */ +html.fp-enabled, +.fp-enabled body { + margin: 0; + padding: 0; + overflow:hidden; + + /*Avoid flicker on slides transitions for mobile phones #336 */ + -webkit-tap-highlight-color: rgba(0,0,0,0); +} +.fp-section { + position: relative; + -webkit-box-sizing: border-box; /* Safari<=5 Android<=3 */ + -moz-box-sizing: border-box; /* <=28 */ + box-sizing: border-box; +} +.fp-slide { + float: left; +} +.fp-slide, .fp-slidesContainer { + height: 100%; + display: block; +} +.fp-slides { + z-index:1; + height: 100%; + overflow: hidden; + position: relative; + -webkit-transition: all 0.3s ease-out; /* Safari<=6 Android<=4.3 */ + transition: all 0.3s ease-out; +} +.fp-section.fp-table, .fp-slide.fp-table { + display: table; + table-layout:fixed; + width: 100%; +} +.fp-tableCell { + display: table-cell; + vertical-align: middle; + width: 100%; + height: 100%; +} +.fp-slidesContainer { + float: left; + position: relative; +} +.fp-controlArrow { + -webkit-user-select: none; /* webkit (safari, chrome) browsers */ + -moz-user-select: none; /* mozilla browsers */ + -khtml-user-select: none; /* webkit (konqueror) browsers */ + -ms-user-select: none; /* IE10+ */ + position: absolute; + z-index: 4; + top: 50%; + cursor: pointer; + width: 0; + height: 0; + border-style: solid; + margin-top: -38px; + -webkit-transform: translate3d(0,0,0); + -ms-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); +} +.fp-controlArrow.fp-prev { + left: 15px; + width: 0; + border-width: 38.5px 34px 38.5px 0; + border-color: transparent #fff transparent transparent; +} +.fp-controlArrow.fp-next { + right: 15px; + border-width: 38.5px 0 38.5px 34px; + border-color: transparent transparent transparent #fff; +} +.fp-scrollable { + overflow: hidden; + position: relative; +} +.fp-scroller{ + overflow: hidden; +} +.iScrollIndicator{ + border: 0 !important; +} +.fp-notransition { + -webkit-transition: none !important; + transition: none !important; +} +#fp-nav { + position: fixed; + z-index: 100; + margin-top: -32px; + top: 50%; + opacity: 1; + -webkit-transform: translate3d(0,0,0); +} +#fp-nav.right { + right: 17px; +} +#fp-nav.left { + left: 17px; +} +.fp-slidesNav{ + position: absolute; + z-index: 4; + opacity: 1; + -webkit-transform: translate3d(0,0,0); + -ms-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + left: 0 !important; + right: 0; + margin: 0 auto !important; +} +.fp-slidesNav.bottom { + bottom: 17px; +} +.fp-slidesNav.top { + top: 17px; +} +#fp-nav ul, +.fp-slidesNav ul { + margin: 0; + padding: 0; +} +#fp-nav ul li, +.fp-slidesNav ul li { + display: block; + width: 14px; + height: 13px; + margin: 7px; + position:relative; +} +.fp-slidesNav ul li { + display: inline-block; +} +#fp-nav ul li a, +.fp-slidesNav ul li a { + display: block; + position: relative; + z-index: 1; + width: 100%; + height: 100%; + cursor: pointer; + text-decoration: none; +} +#fp-nav ul li a.active span, +.fp-slidesNav ul li a.active span, +#fp-nav ul li:hover a.active span, +.fp-slidesNav ul li:hover a.active span{ + height: 12px; + width: 12px; + margin: -6px 0 0 -6px; + border-radius: 100%; + } +#fp-nav ul li a span, +.fp-slidesNav ul li a span { + border-radius: 50%; + position: absolute; + z-index: 1; + height: 4px; + width: 4px; + border: 0; + background: #333; + left: 50%; + top: 50%; + margin: -2px 0 0 -2px; + -webkit-transition: all 0.1s ease-in-out; + -moz-transition: all 0.1s ease-in-out; + -o-transition: all 0.1s ease-in-out; + transition: all 0.1s ease-in-out; +} +#fp-nav ul li:hover a span, +.fp-slidesNav ul li:hover a span{ + width: 10px; + height: 10px; + margin: -5px 0px 0px -5px; +} +#fp-nav ul li .fp-tooltip { + position: absolute; + top: -2px; + color: #fff; + font-size: 14px; + font-family: arial, helvetica, sans-serif; + white-space: nowrap; + max-width: 220px; + overflow: hidden; + display: block; + opacity: 0; + width: 0; + cursor: pointer; +} +#fp-nav ul li:hover .fp-tooltip, +#fp-nav.fp-show-active a.active + .fp-tooltip { + -webkit-transition: opacity 0.2s ease-in; + transition: opacity 0.2s ease-in; + width: auto; + opacity: 1; +} +#fp-nav ul li .fp-tooltip.right { + right: 20px; +} +#fp-nav ul li .fp-tooltip.left { + left: 20px; +} +.fp-auto-height.fp-section, +.fp-auto-height .fp-slide, +.fp-auto-height .fp-tableCell{ + height: auto !important; +} + +.fp-responsive .fp-auto-height-responsive.fp-section, +.fp-responsive .fp-auto-height-responsive .fp-slide, +.fp-responsive .fp-auto-height-responsive .fp-tableCell { + height: auto !important; +} \ No newline at end of file diff --git a/static/fullpage/jquery.fullpage.js b/static/fullpage/jquery.fullpage.js new file mode 100644 index 0000000..f2843fa --- /dev/null +++ b/static/fullpage/jquery.fullpage.js @@ -0,0 +1,2858 @@ +/*! + * fullPage 2.9.5 + * https://github.com/alvarotrigo/fullPage.js + * @license MIT licensed + * + * Copyright (C) 2015 alvarotrigo.com - A project by Alvaro Trigo + */ +(function(global, factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + define(['jquery'], function($) { + return factory($, global, global.document, global.Math); + }); + } else if (typeof exports === "object" && exports) { + module.exports = factory(require('jquery'), global, global.document, global.Math); + } else { + factory(jQuery, global, global.document, global.Math); + } +})(typeof window !== 'undefined' ? window : this, function($, window, document, Math, undefined) { + 'use strict'; + + // keeping central set of classnames and selectors + var WRAPPER = 'fullpage-wrapper'; + var WRAPPER_SEL = '.' + WRAPPER; + + // slimscroll + var SCROLLABLE = 'fp-scrollable'; + var SCROLLABLE_SEL = '.' + SCROLLABLE; + + // util + var RESPONSIVE = 'fp-responsive'; + var NO_TRANSITION = 'fp-notransition'; + var DESTROYED = 'fp-destroyed'; + var ENABLED = 'fp-enabled'; + var VIEWING_PREFIX = 'fp-viewing'; + var ACTIVE = 'active'; + var ACTIVE_SEL = '.' + ACTIVE; + var COMPLETELY = 'fp-completely'; + var COMPLETELY_SEL = '.' + COMPLETELY; + + // section + var SECTION_DEFAULT_SEL = '.section'; + var SECTION = 'fp-section'; + var SECTION_SEL = '.' + SECTION; + var SECTION_ACTIVE_SEL = SECTION_SEL + ACTIVE_SEL; + var SECTION_FIRST_SEL = SECTION_SEL + ':first'; + var SECTION_LAST_SEL = SECTION_SEL + ':last'; + var TABLE_CELL = 'fp-tableCell'; + var TABLE_CELL_SEL = '.' + TABLE_CELL; + var AUTO_HEIGHT = 'fp-auto-height'; + var AUTO_HEIGHT_SEL = '.fp-auto-height'; + var NORMAL_SCROLL = 'fp-normal-scroll'; + var NORMAL_SCROLL_SEL = '.fp-normal-scroll'; + + // section nav + var SECTION_NAV = 'fp-nav'; + var SECTION_NAV_SEL = '#' + SECTION_NAV; + var SECTION_NAV_TOOLTIP = 'fp-tooltip'; + var SECTION_NAV_TOOLTIP_SEL='.'+SECTION_NAV_TOOLTIP; + var SHOW_ACTIVE_TOOLTIP = 'fp-show-active'; + + // slide + var SLIDE_DEFAULT_SEL = '.slide'; + var SLIDE = 'fp-slide'; + var SLIDE_SEL = '.' + SLIDE; + var SLIDE_ACTIVE_SEL = SLIDE_SEL + ACTIVE_SEL; + var SLIDES_WRAPPER = 'fp-slides'; + var SLIDES_WRAPPER_SEL = '.' + SLIDES_WRAPPER; + var SLIDES_CONTAINER = 'fp-slidesContainer'; + var SLIDES_CONTAINER_SEL = '.' + SLIDES_CONTAINER; + var TABLE = 'fp-table'; + + // slide nav + var SLIDES_NAV = 'fp-slidesNav'; + var SLIDES_NAV_SEL = '.' + SLIDES_NAV; + var SLIDES_NAV_LINK_SEL = SLIDES_NAV_SEL + ' a'; + var SLIDES_ARROW = 'fp-controlArrow'; + var SLIDES_ARROW_SEL = '.' + SLIDES_ARROW; + var SLIDES_PREV = 'fp-prev'; + var SLIDES_PREV_SEL = '.' + SLIDES_PREV; + var SLIDES_ARROW_PREV = SLIDES_ARROW + ' ' + SLIDES_PREV; + var SLIDES_ARROW_PREV_SEL = SLIDES_ARROW_SEL + SLIDES_PREV_SEL; + var SLIDES_NEXT = 'fp-next'; + var SLIDES_NEXT_SEL = '.' + SLIDES_NEXT; + var SLIDES_ARROW_NEXT = SLIDES_ARROW + ' ' + SLIDES_NEXT; + var SLIDES_ARROW_NEXT_SEL = SLIDES_ARROW_SEL + SLIDES_NEXT_SEL; + + var $window = $(window); + var $document = $(document); + + $.fn.fullpage = function(options) { + //only once my friend! + if($('html').hasClass(ENABLED)){ displayWarnings(); return; } + + // common jQuery objects + var $htmlBody = $('html, body'); + var $body = $('body'); + + var FP = $.fn.fullpage; + + // Creating some defaults, extending them with any options that were provided + options = $.extend({ + //navigation + menu: false, + anchors:[], + lockAnchors: false, + navigation: false, + navigationPosition: 'right', + navigationTooltips: [], + showActiveTooltip: false, + slidesNavigation: false, + slidesNavPosition: 'bottom', + scrollBar: false, + hybrid: false, + + //scrolling + css3: true, + scrollingSpeed: 700, + autoScrolling: true, + fitToSection: true, + fitToSectionDelay: 1000, + easing: 'easeInOutCubic', + easingcss3: 'ease', + loopBottom: false, + loopTop: false, + loopHorizontal: true, + continuousVertical: false, + continuousHorizontal: false, + scrollHorizontally: false, + interlockedSlides: false, + dragAndMove: false, + offsetSections: false, + resetSliders: false, + fadingEffect: false, + normalScrollElements: null, + scrollOverflow: false, + scrollOverflowReset: false, + scrollOverflowHandler: $.fn.fp_scrolloverflow ? $.fn.fp_scrolloverflow.iscrollHandler : null, + scrollOverflowOptions: null, + touchSensitivity: 5, + normalScrollElementTouchThreshold: 5, + bigSectionsDestination: null, + + //Accessibility + keyboardScrolling: true, + animateAnchor: true, + recordHistory: true, + + //design + controlArrows: true, + controlArrowColor: '#fff', + verticalCentered: true, + sectionsColor : [], + paddingTop: 0, + paddingBottom: 0, + fixedElements: null, + responsive: 0, //backwards compabitility with responsiveWiddth + responsiveWidth: 0, + responsiveHeight: 0, + responsiveSlides: false, + parallax: false, + parallaxOptions: { + type: 'reveal', + percentage: 62, + property: 'translate' + }, + + //Custom selectors + sectionSelector: SECTION_DEFAULT_SEL, + slideSelector: SLIDE_DEFAULT_SEL, + + //events + afterLoad: null, + onLeave: null, + afterRender: null, + afterResize: null, + afterReBuild: null, + afterSlideLoad: null, + onSlideLeave: null, + afterResponsive: null, + + lazyLoading: true + }, options); + + //flag to avoid very fast sliding for landscape sliders + var slideMoving = false; + + var isTouchDevice = navigator.userAgent.match(/(iPhone|iPod|iPad|Android|playbook|silk|BlackBerry|BB10|Windows Phone|Tizen|Bada|webOS|IEMobile|Opera Mini)/); + var isTouch = (('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0) || (navigator.maxTouchPoints)); + var container = $(this); + var windowsHeight = $window.height(); + var isResizing = false; + var isWindowFocused = true; + var lastScrolledDestiny; + var lastScrolledSlide; + var canScroll = true; + var scrollings = []; + var controlPressed; + var startingSection; + var isScrollAllowed = {}; + isScrollAllowed.m = { 'up':true, 'down':true, 'left':true, 'right':true }; + isScrollAllowed.k = $.extend(true,{}, isScrollAllowed.m); + var MSPointer = getMSPointer(); + var events = { + touchmove: 'ontouchmove' in window ? 'touchmove' : MSPointer.move, + touchstart: 'ontouchstart' in window ? 'touchstart' : MSPointer.down + }; + var scrollBarHandler; + + //timeouts + var resizeId; + var afterSectionLoadsId; + var afterSlideLoadsId; + var scrollId; + var scrollId2; + var keydownId; + var originals = $.extend(true, {}, options); //deep copy + + displayWarnings(); + + //easeInOutCubic animation included in the plugin + $.extend($.easing,{ easeInOutCubic: function (x, t, b, c, d) {if ((t/=d/2) < 1) return c/2*t*t*t + b;return c/2*((t-=2)*t*t + 2) + b;}}); + + /** + * Sets the autoScroll option. + * It changes the scroll bar visibility and the history of the site as a result. + */ + function setAutoScrolling(value, type){ + //removing the transformation + if(!value){ + silentScroll(0); + } + + setVariableState('autoScrolling', value, type); + + var element = $(SECTION_ACTIVE_SEL); + + if(options.autoScrolling && !options.scrollBar){ + $htmlBody.css({ + 'overflow' : 'hidden', + 'height' : '100%' + }); + + setRecordHistory(originals.recordHistory, 'internal'); + + //for IE touch devices + container.css({ + '-ms-touch-action': 'none', + 'touch-action': 'none' + }); + + if(element.length){ + //moving the container up + silentScroll(element.position().top); + } + + }else{ + $htmlBody.css({ + 'overflow' : 'visible', + 'height' : 'initial' + }); + + setRecordHistory(false, 'internal'); + + //for IE touch devices + container.css({ + '-ms-touch-action': '', + 'touch-action': '' + }); + + //scrolling the page to the section with no animation + if (element.length) { + $htmlBody.scrollTop(element.position().top); + } + } + } + + /** + * Defines wheter to record the history for each hash change in the URL. + */ + function setRecordHistory(value, type){ + setVariableState('recordHistory', value, type); + } + + /** + * Defines the scrolling speed + */ + function setScrollingSpeed(value, type){ + setVariableState('scrollingSpeed', value, type); + } + + /** + * Sets fitToSection + */ + function setFitToSection(value, type){ + setVariableState('fitToSection', value, type); + } + + /** + * Sets lockAnchors + */ + function setLockAnchors(value){ + options.lockAnchors = value; + } + + /** + * Adds or remove the possibility of scrolling through sections by using the mouse wheel or the trackpad. + */ + function setMouseWheelScrolling(value){ + if(value){ + addMouseWheelHandler(); + addMiddleWheelHandler(); + }else{ + removeMouseWheelHandler(); + removeMiddleWheelHandler(); + } + } + + /** + * Adds or remove the possibility of scrolling through sections by using the mouse wheel/trackpad or touch gestures. + * Optionally a second parameter can be used to specify the direction for which the action will be applied. + * + * @param directions string containing the direction or directions separated by comma. + */ + function setAllowScrolling(value, directions){ + if(typeof directions !== 'undefined'){ + directions = directions.replace(/ /g,'').split(','); + + $.each(directions, function (index, direction){ + setIsScrollAllowed(value, direction, 'm'); + }); + } + else{ + setIsScrollAllowed(value, 'all', 'm'); + + if(value){ + setMouseWheelScrolling(true); + addTouchHandler(); + }else{ + setMouseWheelScrolling(false); + removeTouchHandler(); + } + } + } + + /** + * Adds or remove the possibility of scrolling through sections by using the keyboard arrow keys + */ + function setKeyboardScrolling(value, directions){ + if(typeof directions !== 'undefined'){ + directions = directions.replace(/ /g,'').split(','); + + $.each(directions, function (index, direction){ + setIsScrollAllowed(value, direction, 'k'); + }); + }else{ + setIsScrollAllowed(value, 'all', 'k'); + options.keyboardScrolling = value; + } + } + + /** + * Moves the page up one section. + */ + function moveSectionUp(){ + var prev = $(SECTION_ACTIVE_SEL).prev(SECTION_SEL); + + //looping to the bottom if there's no more sections above + if (!prev.length && (options.loopTop || options.continuousVertical)) { + prev = $(SECTION_SEL).last(); + } + + if (prev.length) { + scrollPage(prev, null, true); + } + } + + /** + * Moves the page down one section. + */ + function moveSectionDown(){ + var next = $(SECTION_ACTIVE_SEL).next(SECTION_SEL); + + //looping to the top if there's no more sections below + if(!next.length && + (options.loopBottom || options.continuousVertical)){ + next = $(SECTION_SEL).first(); + } + + if(next.length){ + scrollPage(next, null, false); + } + } + + /** + * Moves the page to the given section and slide with no animation. + * Anchors or index positions can be used as params. + */ + function silentMoveTo(sectionAnchor, slideAnchor){ + setScrollingSpeed (0, 'internal'); + moveTo(sectionAnchor, slideAnchor); + setScrollingSpeed (originals.scrollingSpeed, 'internal'); + } + + /** + * Moves the page to the given section and slide. + * Anchors or index positions can be used as params. + */ + function moveTo(sectionAnchor, slideAnchor){ + var destiny = getSectionByAnchor(sectionAnchor); + + if (typeof slideAnchor !== 'undefined'){ + scrollPageAndSlide(sectionAnchor, slideAnchor); + }else if(destiny.length > 0){ + scrollPage(destiny); + } + } + + /** + * Slides right the slider of the active section. + * Optional `section` param. + */ + function moveSlideRight(section){ + moveSlide('right', section); + } + + /** + * Slides left the slider of the active section. + * Optional `section` param. + */ + function moveSlideLeft(section){ + moveSlide('left', section); + } + + /** + * When resizing is finished, we adjust the slides sizes and positions + */ + function reBuild(resizing){ + if(container.hasClass(DESTROYED)){ return; } //nothing to do if the plugin was destroyed + + isResizing = true; + + windowsHeight = $window.height(); //updating global var + + $(SECTION_SEL).each(function(){ + var slidesWrap = $(this).find(SLIDES_WRAPPER_SEL); + var slides = $(this).find(SLIDE_SEL); + + //adjusting the height of the table-cell for IE and Firefox + if(options.verticalCentered){ + $(this).find(TABLE_CELL_SEL).css('height', getTableHeight($(this)) + 'px'); + } + + $(this).css('height', windowsHeight + 'px'); + + //adjusting the position fo the FULL WIDTH slides... + if (slides.length > 1) { + landscapeScroll(slidesWrap, slidesWrap.find(SLIDE_ACTIVE_SEL)); + } + }); + + if(options.scrollOverflow){ + scrollBarHandler.createScrollBarForAll(); + } + + var activeSection = $(SECTION_ACTIVE_SEL); + var sectionIndex = activeSection.index(SECTION_SEL); + + //isn't it the first section? + if(sectionIndex){ + //adjusting the position for the current section + silentMoveTo(sectionIndex + 1); + } + + isResizing = false; + $.isFunction( options.afterResize ) && resizing && options.afterResize.call(container); + $.isFunction( options.afterReBuild ) && !resizing && options.afterReBuild.call(container); + } + + /** + * Turns fullPage.js to normal scrolling mode when the viewport `width` or `height` + * are smaller than the set limit values. + */ + function setResponsive(active){ + var isResponsive = $body.hasClass(RESPONSIVE); + + if(active){ + if(!isResponsive){ + setAutoScrolling(false, 'internal'); + setFitToSection(false, 'internal'); + $(SECTION_NAV_SEL).hide(); + $body.addClass(RESPONSIVE); + $.isFunction( options.afterResponsive ) && options.afterResponsive.call( container, active); + } + } + else if(isResponsive){ + setAutoScrolling(originals.autoScrolling, 'internal'); + setFitToSection(originals.autoScrolling, 'internal'); + $(SECTION_NAV_SEL).show(); + $body.removeClass(RESPONSIVE); + $.isFunction( options.afterResponsive ) && options.afterResponsive.call( container, active); + } + } + + if($(this).length){ + //public functions + FP.version = '2.9.5'; + FP.setAutoScrolling = setAutoScrolling; + FP.setRecordHistory = setRecordHistory; + FP.setScrollingSpeed = setScrollingSpeed; + FP.setFitToSection = setFitToSection; + FP.setLockAnchors = setLockAnchors; + FP.setMouseWheelScrolling = setMouseWheelScrolling; + FP.setAllowScrolling = setAllowScrolling; + FP.setKeyboardScrolling = setKeyboardScrolling; + FP.moveSectionUp = moveSectionUp; + FP.moveSectionDown = moveSectionDown; + FP.silentMoveTo = silentMoveTo; + FP.moveTo = moveTo; + FP.moveSlideRight = moveSlideRight; + FP.moveSlideLeft = moveSlideLeft; + FP.fitToSection = fitToSection; + FP.reBuild = reBuild; + FP.setResponsive = setResponsive; + FP.destroy = destroy; + + //functions we want to share across files but which are not + //mean to be used on their own by developers + FP.shared ={ + afterRenderActions: afterRenderActions + }; + + init(); + + bindEvents(); + } + + function init(){ + //if css3 is not supported, it will use jQuery animations + if(options.css3){ + options.css3 = support3d(); + } + + options.scrollBar = options.scrollBar || options.hybrid; + + setOptionsFromDOM(); + prepareDom(); + setAllowScrolling(true); + setAutoScrolling(options.autoScrolling, 'internal'); + responsive(); + + //setting the class for the body element + setBodyClass(); + + if(document.readyState === 'complete'){ + scrollToAnchor(); + } + $window.on('load', scrollToAnchor); + } + + function bindEvents(){ + $window + //when scrolling... + .on('scroll', scrollHandler) + + //detecting any change on the URL to scroll to the given anchor link + //(a way to detect back history button as we play with the hashes on the URL) + .on('hashchange', hashChangeHandler) + + //when opening a new tab (ctrl + t), `control` won't be pressed when coming back. + .blur(blurHandler) + + //when resizing the site, we adjust the heights of the sections, slimScroll... + .resize(resizeHandler); + + $document + //Sliding with arrow keys, both, vertical and horizontal + .keydown(keydownHandler) + + //to prevent scrolling while zooming + .keyup(keyUpHandler) + + //Scrolls to the section when clicking the navigation bullet + .on('click touchstart', SECTION_NAV_SEL + ' a', sectionBulletHandler) + + //Scrolls the slider to the given slide destination for the given section + .on('click touchstart', SLIDES_NAV_LINK_SEL, slideBulletHandler) + + .on('click', SECTION_NAV_TOOLTIP_SEL, tooltipTextHandler); + + //Scrolling horizontally when clicking on the slider controls. + $(SECTION_SEL).on('click touchstart', SLIDES_ARROW_SEL, slideArrowHandler); + + /** + * Applying normalScroll elements. + * Ignoring the scrolls over the specified selectors. + */ + if(options.normalScrollElements){ + $document.on('mouseenter touchstart', options.normalScrollElements, function () { + setAllowScrolling(false); + }); + + $document.on('mouseleave touchend', options.normalScrollElements, function(){ + setAllowScrolling(true); + }); + } + } + + /** + * Setting options from DOM elements if they are not provided. + */ + function setOptionsFromDOM(){ + var sections = container.find(options.sectionSelector); + + //no anchors option? Checking for them in the DOM attributes + if(!options.anchors.length){ + options.anchors = sections.filter('[data-anchor]').map(function(){ + return $(this).data('anchor').toString(); + }).get(); + } + + //no tooltips option? Checking for them in the DOM attributes + if(!options.navigationTooltips.length){ + options.navigationTooltips = sections.filter('[data-tooltip]').map(function(){ + return $(this).data('tooltip').toString(); + }).get(); + } + } + + /** + * Works over the DOM structure to set it up for the current fullpage options. + */ + function prepareDom(){ + container.css({ + 'height': '100%', + 'position': 'relative' + }); + + //adding a class to recognize the container internally in the code + container.addClass(WRAPPER); + $('html').addClass(ENABLED); + + //due to https://github.com/alvarotrigo/fullPage.js/issues/1502 + windowsHeight = $window.height(); + + container.removeClass(DESTROYED); //in case it was destroyed before initializing it again + + addInternalSelectors(); + + //styling the sections / slides / menu + $(SECTION_SEL).each(function(index){ + var section = $(this); + var slides = section.find(SLIDE_SEL); + var numSlides = slides.length; + + styleSection(section, index); + styleMenu(section, index); + + // if there's any slide + if (numSlides > 0) { + styleSlides(section, slides, numSlides); + }else{ + if(options.verticalCentered){ + addTableClass(section); + } + } + }); + + //fixed elements need to be moved out of the plugin container due to problems with CSS3. + if(options.fixedElements && options.css3){ + $(options.fixedElements).appendTo($body); + } + + //vertical centered of the navigation + active bullet + if(options.navigation){ + addVerticalNavigation(); + } + + enableYoutubeAPI(); + + if(options.scrollOverflow){ + scrollBarHandler = options.scrollOverflowHandler.init(options); + }else{ + afterRenderActions(); + } + } + + /** + * Styles the horizontal slides for a section. + */ + function styleSlides(section, slides, numSlides){ + var sliderWidth = numSlides * 100; + var slideWidth = 100 / numSlides; + + slides.wrapAll('
'); + slides.parent().wrap('
'); + + section.find(SLIDES_CONTAINER_SEL).css('width', sliderWidth + '%'); + + if(numSlides > 1){ + if(options.controlArrows){ + createSlideArrows(section); + } + + if(options.slidesNavigation){ + addSlidesNavigation(section, numSlides); + } + } + + slides.each(function(index) { + $(this).css('width', slideWidth + '%'); + + if(options.verticalCentered){ + addTableClass($(this)); + } + }); + + var startingSlide = section.find(SLIDE_ACTIVE_SEL); + + //if the slide won't be an starting point, the default will be the first one + //the active section isn't the first one? Is not the first slide of the first section? Then we load that section/slide by default. + if( startingSlide.length && ($(SECTION_ACTIVE_SEL).index(SECTION_SEL) !== 0 || ($(SECTION_ACTIVE_SEL).index(SECTION_SEL) === 0 && startingSlide.index() !== 0))){ + silentLandscapeScroll(startingSlide, 'internal'); + }else{ + slides.eq(0).addClass(ACTIVE); + } + } + + /** + * Styling vertical sections + */ + function styleSection(section, index){ + //if no active section is defined, the 1st one will be the default one + if(!index && $(SECTION_ACTIVE_SEL).length === 0) { + section.addClass(ACTIVE); + } + startingSection = $(SECTION_ACTIVE_SEL); + + section.css('height', windowsHeight + 'px'); + + if(options.paddingTop){ + section.css('padding-top', options.paddingTop); + } + + if(options.paddingBottom){ + section.css('padding-bottom', options.paddingBottom); + } + + if (typeof options.sectionsColor[index] !== 'undefined') { + section.css('background-color', options.sectionsColor[index]); + } + + if (typeof options.anchors[index] !== 'undefined') { + section.attr('data-anchor', options.anchors[index]); + } + } + + /** + * Sets the data-anchor attributes to the menu elements and activates the current one. + */ + function styleMenu(section, index){ + if (typeof options.anchors[index] !== 'undefined') { + //activating the menu / nav element on load + if(section.hasClass(ACTIVE)){ + activateMenuAndNav(options.anchors[index], index); + } + } + + //moving the menu outside the main container if it is inside (avoid problems with fixed positions when using CSS3 tranforms) + if(options.menu && options.css3 && $(options.menu).closest(WRAPPER_SEL).length){ + $(options.menu).appendTo($body); + } + } + + /** + * Adds internal classes to be able to provide customizable selectors + * keeping the link with the style sheet. + */ + function addInternalSelectors(){ + container.find(options.sectionSelector).addClass(SECTION); + container.find(options.slideSelector).addClass(SLIDE); + } + + /** + * Creates the control arrows for the given section + */ + function createSlideArrows(section){ + section.find(SLIDES_WRAPPER_SEL).after('
'); + + if(options.controlArrowColor!='#fff'){ + section.find(SLIDES_ARROW_NEXT_SEL).css('border-color', 'transparent transparent transparent '+options.controlArrowColor); + section.find(SLIDES_ARROW_PREV_SEL).css('border-color', 'transparent '+ options.controlArrowColor + ' transparent transparent'); + } + + if(!options.loopHorizontal){ + section.find(SLIDES_ARROW_PREV_SEL).hide(); + } + } + + /** + * Creates a vertical navigation bar. + */ + function addVerticalNavigation(){ + $body.append('
    '); + var nav = $(SECTION_NAV_SEL); + + nav.addClass(function() { + return options.showActiveTooltip ? SHOW_ACTIVE_TOOLTIP + ' ' + options.navigationPosition : options.navigationPosition; + }); + + for (var i = 0; i < $(SECTION_SEL).length; i++) { + var link = ''; + if (options.anchors.length) { + link = options.anchors[i]; + } + + var li = '
  • '; + + // Only add tooltip if needed (defined by user) + var tooltip = options.navigationTooltips[i]; + + if (typeof tooltip !== 'undefined' && tooltip !== '') { + li += '
    ' + tooltip + '
    '; + } + + li += '
  • '; + + nav.find('ul').append(li); + } + + //centering it vertically + $(SECTION_NAV_SEL).css('margin-top', '-' + ($(SECTION_NAV_SEL).height()/2) + 'px'); + + //activating the current active section + $(SECTION_NAV_SEL).find('li').eq($(SECTION_ACTIVE_SEL).index(SECTION_SEL)).find('a').addClass(ACTIVE); + } + + /* + * Enables the Youtube videos API so we can control their flow if necessary. + */ + function enableYoutubeAPI(){ + container.find('iframe[src*="youtube.com/embed/"]').each(function(){ + addURLParam($(this), 'enablejsapi=1'); + }); + } + + /** + * Adds a new parameter and its value to the `src` of a given element + */ + function addURLParam(element, newParam){ + var originalSrc = element.attr('src'); + element.attr('src', originalSrc + getUrlParamSign(originalSrc) + newParam); + } + + /* + * Returns the prefix sign to use for a new parameter in an existen URL. + * + * @return {String} ? | & + */ + function getUrlParamSign(url){ + return ( !/\?/.test( url ) ) ? '?' : '&'; + } + + /** + * Actions and callbacks to fire afterRender + */ + function afterRenderActions(){ + var section = $(SECTION_ACTIVE_SEL); + + section.addClass(COMPLETELY); + + lazyLoad(section); + playMedia(section); + + if(options.scrollOverflow){ + options.scrollOverflowHandler.afterLoad(); + } + + if(isDestinyTheStartingSection()){ + $.isFunction( options.afterLoad ) && options.afterLoad.call(section, section.data('anchor'), (section.index(SECTION_SEL) + 1)); + } + + $.isFunction( options.afterRender ) && options.afterRender.call(container); + } + + /** + * Determines if the URL anchor destiny is the starting section (the one using 'active' class before initialization) + */ + function isDestinyTheStartingSection(){ + var destinationSection = getSectionByAnchor(getAnchorsURL().section); + + return !destinationSection.length || destinationSection.length && destinationSection.index() === startingSection.index(); + } + + + var isScrolling = false; + var lastScroll = 0; + + //when scrolling... + function scrollHandler(){ + var currentSection; + + if(!options.autoScrolling || options.scrollBar){ + var currentScroll = $window.scrollTop(); + var scrollDirection = getScrollDirection(currentScroll); + var visibleSectionIndex = 0; + var screen_mid = currentScroll + ($window.height() / 2.0); + var isAtBottom = $body.height() - $window.height() === currentScroll; + var sections = document.querySelectorAll(SECTION_SEL); + + //when using `auto-height` for a small last section it won't be centered in the viewport + if(isAtBottom){ + visibleSectionIndex = sections.length - 1; + } + //is at top? when using `auto-height` for a small first section it won't be centered in the viewport + else if(!currentScroll){ + visibleSectionIndex = 0; + } + + //taking the section which is showing more content in the viewport + else{ + for (var i = 0; i < sections.length; ++i) { + var section = sections[i]; + + // Pick the the last section which passes the middle line of the screen. + if (section.offsetTop <= screen_mid) + { + visibleSectionIndex = i; + } + } + } + + if(isCompletelyInViewPort(scrollDirection)){ + if(!$(SECTION_ACTIVE_SEL).hasClass(COMPLETELY)){ + $(SECTION_ACTIVE_SEL).addClass(COMPLETELY).siblings().removeClass(COMPLETELY); + } + } + + //geting the last one, the current one on the screen + currentSection = $(sections).eq(visibleSectionIndex); + + //setting the visible section as active when manually scrolling + //executing only once the first time we reach the section + if(!currentSection.hasClass(ACTIVE)){ + isScrolling = true; + var leavingSection = $(SECTION_ACTIVE_SEL); + var leavingSectionIndex = leavingSection.index(SECTION_SEL) + 1; + var yMovement = getYmovement(currentSection); + var anchorLink = currentSection.data('anchor'); + var sectionIndex = currentSection.index(SECTION_SEL) + 1; + var activeSlide = currentSection.find(SLIDE_ACTIVE_SEL); + var slideIndex; + var slideAnchorLink; + + if(activeSlide.length){ + slideAnchorLink = activeSlide.data('anchor'); + slideIndex = activeSlide.index(); + } + + if(canScroll){ + currentSection.addClass(ACTIVE).siblings().removeClass(ACTIVE); + + $.isFunction( options.onLeave ) && options.onLeave.call( leavingSection, leavingSectionIndex, sectionIndex, yMovement); + $.isFunction( options.afterLoad ) && options.afterLoad.call( currentSection, anchorLink, sectionIndex); + + stopMedia(leavingSection); + lazyLoad(currentSection); + playMedia(currentSection); + + activateMenuAndNav(anchorLink, sectionIndex - 1); + + if(options.anchors.length){ + //needed to enter in hashChange event when using the menu with anchor links + lastScrolledDestiny = anchorLink; + } + setState(slideIndex, slideAnchorLink, anchorLink, sectionIndex); + } + + //small timeout in order to avoid entering in hashChange event when scrolling is not finished yet + clearTimeout(scrollId); + scrollId = setTimeout(function(){ + isScrolling = false; + }, 100); + } + + if(options.fitToSection){ + //for the auto adjust of the viewport to fit a whole section + clearTimeout(scrollId2); + + scrollId2 = setTimeout(function(){ + //checking it again in case it changed during the delay + if(options.fitToSection && + + //is the destination element bigger than the viewport? + $(SECTION_ACTIVE_SEL).outerHeight() <= windowsHeight + ){ + fitToSection(); + } + }, options.fitToSectionDelay); + } + } + } + + /** + * Fits the site to the nearest active section + */ + function fitToSection(){ + //checking fitToSection again in case it was set to false before the timeout delay + if(canScroll){ + //allows to scroll to an active section and + //if the section is already active, we prevent firing callbacks + isResizing = true; + + scrollPage($(SECTION_ACTIVE_SEL)); + isResizing = false; + } + } + + /** + * Determines whether the active section has seen in its whole or not. + */ + function isCompletelyInViewPort(movement){ + var top = $(SECTION_ACTIVE_SEL).position().top; + var bottom = top + $window.height(); + + if(movement == 'up'){ + return bottom >= ($window.scrollTop() + $window.height()); + } + return top <= $window.scrollTop(); + } + + /** + * Gets the directon of the the scrolling fired by the scroll event. + */ + function getScrollDirection(currentScroll){ + var direction = currentScroll > lastScroll ? 'down' : 'up'; + + lastScroll = currentScroll; + + //needed for auto-height sections to determine if we want to scroll to the top or bottom of the destination + previousDestTop = currentScroll; + + return direction; + } + + /** + * Determines the way of scrolling up or down: + * by 'automatically' scrolling a section or by using the default and normal scrolling. + */ + function scrolling(type){ + if (!isScrollAllowed.m[type]){ + return; + } + + var scrollSection = (type === 'down') ? moveSectionDown : moveSectionUp; + + if(options.scrollOverflow){ + var scrollable = options.scrollOverflowHandler.scrollable($(SECTION_ACTIVE_SEL)); + var check = (type === 'down') ? 'bottom' : 'top'; + + if(scrollable.length > 0 ){ + //is the scrollbar at the start/end of the scroll? + if(options.scrollOverflowHandler.isScrolled(check, scrollable)){ + scrollSection(); + }else{ + return true; + } + }else{ + // moved up/down + scrollSection(); + } + }else{ + // moved up/down + scrollSection(); + } + } + + /* + * Preventing bouncing in iOS #2285 + */ + function preventBouncing(event){ + var e = event.originalEvent; + if(options.autoScrolling && isReallyTouch(e)){ + //preventing the easing on iOS devices + event.preventDefault(); + } + } + + var touchStartY = 0; + var touchStartX = 0; + var touchEndY = 0; + var touchEndX = 0; + + /* Detecting touch events + + * As we are changing the top property of the page on scrolling, we can not use the traditional way to detect it. + * This way, the touchstart and the touch moves shows an small difference between them which is the + * used one to determine the direction. + */ + function touchMoveHandler(event){ + var e = event.originalEvent; + var activeSection = $(e.target).closest(SECTION_SEL); + + // additional: if one of the normalScrollElements isn't within options.normalScrollElementTouchThreshold hops up the DOM chain + if (isReallyTouch(e) ) { + + if(options.autoScrolling){ + //preventing the easing on iOS devices + event.preventDefault(); + } + + var touchEvents = getEventsPage(e); + + touchEndY = touchEvents.y; + touchEndX = touchEvents.x; + + //if movement in the X axys is greater than in the Y and the currect section has slides... + if (activeSection.find(SLIDES_WRAPPER_SEL).length && Math.abs(touchStartX - touchEndX) > (Math.abs(touchStartY - touchEndY))) { + + //is the movement greater than the minimum resistance to scroll? + if (!slideMoving && Math.abs(touchStartX - touchEndX) > ($window.outerWidth() / 100 * options.touchSensitivity)) { + if (touchStartX > touchEndX) { + if(isScrollAllowed.m.right){ + moveSlideRight(activeSection); //next + } + } else { + if(isScrollAllowed.m.left){ + moveSlideLeft(activeSection); //prev + } + } + } + } + + //vertical scrolling (only when autoScrolling is enabled) + else if(options.autoScrolling && canScroll){ + + //is the movement greater than the minimum resistance to scroll? + if (Math.abs(touchStartY - touchEndY) > ($window.height() / 100 * options.touchSensitivity)) { + if (touchStartY > touchEndY) { + scrolling('down'); + } else if (touchEndY > touchStartY) { + scrolling('up'); + } + } + } + } + } + + /** + * As IE >= 10 fires both touch and mouse events when using a mouse in a touchscreen + * this way we make sure that is really a touch event what IE is detecting. + */ + function isReallyTouch(e){ + //if is not IE || IE is detecting `touch` or `pen` + return typeof e.pointerType === 'undefined' || e.pointerType != 'mouse'; + } + + /** + * Handler for the touch start event. + */ + function touchStartHandler(event){ + var e = event.originalEvent; + + //stopping the auto scroll to adjust to a section + if(options.fitToSection){ + $htmlBody.stop(); + } + + if(isReallyTouch(e)){ + var touchEvents = getEventsPage(e); + touchStartY = touchEvents.y; + touchStartX = touchEvents.x; + } + } + + /** + * Gets the average of the last `number` elements of the given array. + */ + function getAverage(elements, number){ + var sum = 0; + + //taking `number` elements from the end to make the average, if there are not enought, 1 + var lastElements = elements.slice(Math.max(elements.length - number, 1)); + + for(var i = 0; i < lastElements.length; i++){ + sum = sum + lastElements[i]; + } + + return Math.ceil(sum/number); + } + + /** + * Detecting mousewheel scrolling + * + * http://blogs.sitepointstatic.com/examples/tech/mouse-wheel/index.html + * http://www.sitepoint.com/html5-javascript-mouse-wheel/ + */ + var prevTime = new Date().getTime(); + + function MouseWheelHandler(e) { + var curTime = new Date().getTime(); + var isNormalScroll = $(COMPLETELY_SEL).hasClass(NORMAL_SCROLL); + + //autoscrolling and not zooming? + if(options.autoScrolling && !controlPressed && !isNormalScroll){ + // cross-browser wheel delta + e = e || window.event; + var value = e.wheelDelta || -e.deltaY || -e.detail; + var delta = Math.max(-1, Math.min(1, value)); + + var horizontalDetection = typeof e.wheelDeltaX !== 'undefined' || typeof e.deltaX !== 'undefined'; + var isScrollingVertically = (Math.abs(e.wheelDeltaX) < Math.abs(e.wheelDelta)) || (Math.abs(e.deltaX ) < Math.abs(e.deltaY) || !horizontalDetection); + + //Limiting the array to 150 (lets not waste memory!) + if(scrollings.length > 149){ + scrollings.shift(); + } + + //keeping record of the previous scrollings + scrollings.push(Math.abs(value)); + + //preventing to scroll the site on mouse wheel when scrollbar is present + if(options.scrollBar){ + e.preventDefault ? e.preventDefault() : e.returnValue = false; + } + + //time difference between the last scroll and the current one + var timeDiff = curTime-prevTime; + prevTime = curTime; + + //haven't they scrolled in a while? + //(enough to be consider a different scrolling action to scroll another section) + if(timeDiff > 200){ + //emptying the array, we dont care about old scrollings for our averages + scrollings = []; + } + + if(canScroll){ + var averageEnd = getAverage(scrollings, 10); + var averageMiddle = getAverage(scrollings, 70); + var isAccelerating = averageEnd >= averageMiddle; + + //to avoid double swipes... + if(isAccelerating && isScrollingVertically){ + //scrolling down? + if (delta < 0) { + scrolling('down'); + + //scrolling up? + }else { + scrolling('up'); + } + } + } + + return false; + } + + if(options.fitToSection){ + //stopping the auto scroll to adjust to a section + $htmlBody.stop(); + } + } + + /** + * Slides a slider to the given direction. + * Optional `section` param. + */ + function moveSlide(direction, section){ + var activeSection = typeof section === 'undefined' ? $(SECTION_ACTIVE_SEL) : section; + var slides = activeSection.find(SLIDES_WRAPPER_SEL); + var numSlides = slides.find(SLIDE_SEL).length; + + // more than one slide needed and nothing should be sliding + if (!slides.length || slideMoving || numSlides < 2) { + return; + } + + var currentSlide = slides.find(SLIDE_ACTIVE_SEL); + var destiny = null; + + if(direction === 'left'){ + destiny = currentSlide.prev(SLIDE_SEL); + }else{ + destiny = currentSlide.next(SLIDE_SEL); + } + + //isn't there a next slide in the secuence? + if(!destiny.length){ + //respect loopHorizontal settin + if (!options.loopHorizontal) return; + + if(direction === 'left'){ + destiny = currentSlide.siblings(':last'); + }else{ + destiny = currentSlide.siblings(':first'); + } + } + + slideMoving = true; + + landscapeScroll(slides, destiny, direction); + } + + /** + * Maintains the active slides in the viewport + * (Because the `scroll` animation might get lost with some actions, such as when using continuousVertical) + */ + function keepSlidesPosition(){ + $(SLIDE_ACTIVE_SEL).each(function(){ + silentLandscapeScroll($(this), 'internal'); + }); + } + + var previousDestTop = 0; + /** + * Returns the destination Y position based on the scrolling direction and + * the height of the section. + */ + function getDestinationPosition(element){ + var elemPosition = element.position(); + + //top of the desination will be at the top of the viewport + var position = elemPosition.top; + var isScrollingDown = elemPosition.top > previousDestTop; + var sectionBottom = position - windowsHeight + element.outerHeight(); + var bigSectionsDestination = options.bigSectionsDestination; + + //is the destination element bigger than the viewport? + if(element.outerHeight() > windowsHeight){ + //scrolling up? + if(!isScrollingDown && !bigSectionsDestination || bigSectionsDestination === 'bottom' ){ + position = sectionBottom; + } + } + + //sections equal or smaller than the viewport height && scrolling down? || is resizing and its in the last section + else if(isScrollingDown || (isResizing && element.is(':last-child')) ){ + //The bottom of the destination will be at the bottom of the viewport + position = sectionBottom; + } + + /* + Keeping record of the last scrolled position to determine the scrolling direction. + No conventional methods can be used as the scroll bar might not be present + AND the section might not be active if it is auto-height and didnt reach the middle + of the viewport. + */ + previousDestTop = position; + return position; + } + + /** + * Scrolls the site to the given element and scrolls to the slide if a callback is given. + */ + function scrollPage(element, callback, isMovementUp){ + if(typeof element === 'undefined'){ return; } //there's no element to scroll, leaving the function + + var dtop = getDestinationPosition(element); + var slideAnchorLink; + var slideIndex; + + //local variables + var v = { + element: element, + callback: callback, + isMovementUp: isMovementUp, + dtop: dtop, + yMovement: getYmovement(element), + anchorLink: element.data('anchor'), + sectionIndex: element.index(SECTION_SEL), + activeSlide: element.find(SLIDE_ACTIVE_SEL), + activeSection: $(SECTION_ACTIVE_SEL), + leavingSection: $(SECTION_ACTIVE_SEL).index(SECTION_SEL) + 1, + + //caching the value of isResizing at the momment the function is called + //because it will be checked later inside a setTimeout and the value might change + localIsResizing: isResizing + }; + + //quiting when destination scroll is the same as the current one + if((v.activeSection.is(element) && !isResizing) || (options.scrollBar && $window.scrollTop() === v.dtop && !element.hasClass(AUTO_HEIGHT) )){ return; } + + if(v.activeSlide.length){ + slideAnchorLink = v.activeSlide.data('anchor'); + slideIndex = v.activeSlide.index(); + } + + //callback (onLeave) if the site is not just resizing and readjusting the slides + if($.isFunction(options.onLeave) && !v.localIsResizing){ + if(options.onLeave.call(v.activeSection, v.leavingSection, (v.sectionIndex + 1), v.yMovement) === false){ + return; + } + } + + // If continuousVertical && we need to wrap around + if (options.autoScrolling && options.continuousVertical && typeof (v.isMovementUp) !== "undefined" && + ((!v.isMovementUp && v.yMovement == 'up') || // Intending to scroll down but about to go up or + (v.isMovementUp && v.yMovement == 'down'))) { // intending to scroll up but about to go down + + v = createInfiniteSections(v); + } + + //pausing media of the leaving section (if we are not just resizing, as destinatino will be the same one) + if(!v.localIsResizing){ + stopMedia(v.activeSection); + } + + if(options.scrollOverflow){ + options.scrollOverflowHandler.beforeLeave(); + } + + element.addClass(ACTIVE).siblings().removeClass(ACTIVE); + lazyLoad(element); + + if(options.scrollOverflow){ + options.scrollOverflowHandler.onLeave(); + } + + //preventing from activating the MouseWheelHandler event + //more than once if the page is scrolling + canScroll = false; + + setState(slideIndex, slideAnchorLink, v.anchorLink, v.sectionIndex); + + performMovement(v); + + //flag to avoid callingn `scrollPage()` twice in case of using anchor links + lastScrolledDestiny = v.anchorLink; + + //avoid firing it twice (as it does also on scroll) + activateMenuAndNav(v.anchorLink, v.sectionIndex); + } + + /** + * Performs the vertical movement (by CSS3 or by jQuery) + */ + function performMovement(v){ + // using CSS3 translate functionality + if (options.css3 && options.autoScrolling && !options.scrollBar) { + + // The first section can have a negative value in iOS 10. Not quite sure why: -0.0142822265625 + // that's why we round it to 0. + var translate3d = 'translate3d(0px, -' + Math.round(v.dtop) + 'px, 0px)'; + transformContainer(translate3d, true); + + //even when the scrollingSpeed is 0 there's a little delay, which might cause the + //scrollingSpeed to change in case of using silentMoveTo(); + if(options.scrollingSpeed){ + clearTimeout(afterSectionLoadsId); + afterSectionLoadsId = setTimeout(function () { + afterSectionLoads(v); + }, options.scrollingSpeed); + }else{ + afterSectionLoads(v); + } + } + + // using jQuery animate + else{ + var scrollSettings = getScrollSettings(v); + + $(scrollSettings.element).animate( + scrollSettings.options, + options.scrollingSpeed, options.easing).promise().done(function () { //only one single callback in case of animating `html, body` + if(options.scrollBar){ + + /* Hack! + The timeout prevents setting the most dominant section in the viewport as "active" when the user + scrolled to a smaller section by using the mousewheel (auto scrolling) rather than draging the scroll bar. + + When using scrollBar:true It seems like the scroll events still getting propagated even after the scrolling animation has finished. + */ + setTimeout(function(){ + afterSectionLoads(v); + },30); + }else{ + afterSectionLoads(v); + } + }); + } + } + + /** + * Gets the scrolling settings depending on the plugin autoScrolling option + */ + function getScrollSettings(v){ + var scroll = {}; + + if(options.autoScrolling && !options.scrollBar){ + scroll.options = { 'top': -v.dtop}; + scroll.element = WRAPPER_SEL; + }else{ + scroll.options = { 'scrollTop': v.dtop}; + scroll.element = 'html, body'; + } + + return scroll; + } + + /** + * Adds sections before or after the current one to create the infinite effect. + */ + function createInfiniteSections(v){ + // Scrolling down + if (!v.isMovementUp) { + // Move all previous sections to after the active section + $(SECTION_ACTIVE_SEL).after(v.activeSection.prevAll(SECTION_SEL).get().reverse()); + } + else { // Scrolling up + // Move all next sections to before the active section + $(SECTION_ACTIVE_SEL).before(v.activeSection.nextAll(SECTION_SEL)); + } + + // Maintain the displayed position (now that we changed the element order) + silentScroll($(SECTION_ACTIVE_SEL).position().top); + + // Maintain the active slides visible in the viewport + keepSlidesPosition(); + + // save for later the elements that still need to be reordered + v.wrapAroundElements = v.activeSection; + + // Recalculate animation variables + v.dtop = v.element.position().top; + v.yMovement = getYmovement(v.element); + + //sections will temporally have another position in the DOM + //updating this values in case we need them + v.leavingSection = v.activeSection.index(SECTION_SEL) + 1; + v.sectionIndex = v.element.index(SECTION_SEL); + + return v; + } + + /** + * Fix section order after continuousVertical changes have been animated + */ + function continuousVerticalFixSectionOrder (v) { + // If continuousVertical is in effect (and autoScrolling would also be in effect then), + // finish moving the elements around so the direct navigation will function more simply + if (!v.wrapAroundElements || !v.wrapAroundElements.length) { + return; + } + + if (v.isMovementUp) { + $(SECTION_FIRST_SEL).before(v.wrapAroundElements); + } + else { + $(SECTION_LAST_SEL).after(v.wrapAroundElements); + } + + silentScroll($(SECTION_ACTIVE_SEL).position().top); + + // Maintain the active slides visible in the viewport + keepSlidesPosition(); + } + + + /** + * Actions to do once the section is loaded. + */ + function afterSectionLoads (v){ + continuousVerticalFixSectionOrder(v); + + //callback (afterLoad) if the site is not just resizing and readjusting the slides + $.isFunction(options.afterLoad) && !v.localIsResizing && options.afterLoad.call(v.element, v.anchorLink, (v.sectionIndex + 1)); + + if(options.scrollOverflow){ + options.scrollOverflowHandler.afterLoad(); + } + + if(!v.localIsResizing){ + playMedia(v.element); + } + + v.element.addClass(COMPLETELY).siblings().removeClass(COMPLETELY); + + canScroll = true; + + $.isFunction(v.callback) && v.callback.call(this); + } + + /** + * Sets the value for the given attribute from the `data-` attribute with the same suffix + * ie: data-srcset ==> srcset | data-src ==> src + */ + function setSrc(element, attribute){ + element + .attr(attribute, element.data(attribute)) + .removeAttr('data-' + attribute); + } + + /** + * Lazy loads image, video and audio elements. + */ + function lazyLoad(destiny){ + if (!options.lazyLoading){ + return; + } + + var panel = getSlideOrSection(destiny); + var element; + + panel.find('img[data-src], img[data-srcset], source[data-src], video[data-src], audio[data-src], iframe[data-src]').each(function(){ + element = $(this); + + $.each(['src', 'srcset'], function(index, type){ + var attribute = element.attr('data-' + type); + if(typeof attribute !== 'undefined' && attribute){ + setSrc(element, type); + } + }); + + if(element.is('source')){ + var typeToPlay = element.closest('video').length ? 'video' : 'audio'; + element.closest(typeToPlay).get(0).load(); + } + }); + } + + /** + * Plays video and audio elements. + */ + function playMedia(destiny){ + var panel = getSlideOrSection(destiny); + + //playing HTML5 media elements + panel.find('video, audio').each(function(){ + var element = $(this).get(0); + + if( element.hasAttribute('data-autoplay') && typeof element.play === 'function' ) { + element.play(); + } + }); + + //youtube videos + panel.find('iframe[src*="youtube.com/embed/"]').each(function(){ + var element = $(this).get(0); + + if ( element.hasAttribute('data-autoplay') ){ + playYoutube(element); + } + + //in case the URL was not loaded yet. On page load we need time for the new URL (with the API string) to load. + element.onload = function() { + if ( element.hasAttribute('data-autoplay') ){ + playYoutube(element); + } + }; + }); + } + + /** + * Plays a youtube video + */ + function playYoutube(element){ + element.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', '*'); + } + + /** + * Stops video and audio elements. + */ + function stopMedia(destiny){ + var panel = getSlideOrSection(destiny); + + //stopping HTML5 media elements + panel.find('video, audio').each(function(){ + var element = $(this).get(0); + + if( !element.hasAttribute('data-keepplaying') && typeof element.pause === 'function' ) { + element.pause(); + } + }); + + //youtube videos + panel.find('iframe[src*="youtube.com/embed/"]').each(function(){ + var element = $(this).get(0); + + if( /youtube\.com\/embed\//.test($(this).attr('src')) && !element.hasAttribute('data-keepplaying')){ + $(this).get(0).contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}','*'); + } + }); + } + + /** + * Gets the active slide (or section) for the given section + */ + function getSlideOrSection(destiny){ + var slide = destiny.find(SLIDE_ACTIVE_SEL); + if( slide.length ) { + destiny = $(slide); + } + + return destiny; + } + + /** + * Scrolls to the anchor in the URL when loading the site + */ + function scrollToAnchor(){ + var anchors = getAnchorsURL(); + var sectionAnchor = anchors.section; + var slideAnchor = anchors.slide; + + if(sectionAnchor){ //if theres any # + if(options.animateAnchor){ + scrollPageAndSlide(sectionAnchor, slideAnchor); + }else{ + silentMoveTo(sectionAnchor, slideAnchor); + } + } + } + + /** + * Detecting any change on the URL to scroll to the given anchor link + * (a way to detect back history button as we play with the hashes on the URL) + */ + function hashChangeHandler(){ + if(!isScrolling && !options.lockAnchors){ + var anchors = getAnchorsURL(); + var sectionAnchor = anchors.section; + var slideAnchor = anchors.slide; + + //when moving to a slide in the first section for the first time (first time to add an anchor to the URL) + var isFirstSlideMove = (typeof lastScrolledDestiny === 'undefined'); + var isFirstScrollMove = (typeof lastScrolledDestiny === 'undefined' && typeof slideAnchor === 'undefined' && !slideMoving); + + if(sectionAnchor.length){ + /*in order to call scrollpage() only once for each destination at a time + It is called twice for each scroll otherwise, as in case of using anchorlinks `hashChange` + event is fired on every scroll too.*/ + if ((sectionAnchor && sectionAnchor !== lastScrolledDestiny) && !isFirstSlideMove || isFirstScrollMove || (!slideMoving && lastScrolledSlide != slideAnchor )) { + scrollPageAndSlide(sectionAnchor, slideAnchor); + } + } + } + } + + //gets the URL anchors (section and slide) + function getAnchorsURL(){ + //getting the anchor link in the URL and deleting the `#` + var hash = window.location.hash; + var anchorsParts = hash.replace('#', '').split('/'); + + //using / for visual reasons and not as a section/slide separator #2803 + var isFunkyAnchor = hash.indexOf('#/') > -1; + + return { + section: isFunkyAnchor ? '/' + anchorsParts[1] : decodeURIComponent(anchorsParts[0]), + slide: isFunkyAnchor ? decodeURIComponent(anchorsParts[2]) : decodeURIComponent(anchorsParts[1]) + } + } + + //Sliding with arrow keys, both, vertical and horizontal + function keydownHandler(e) { + + clearTimeout(keydownId); + + var activeElement = $(':focus'); + + if(!activeElement.is('textarea') && !activeElement.is('input') && !activeElement.is('select') && + activeElement.attr('contentEditable') !== "true" && activeElement.attr('contentEditable') !== '' && + options.keyboardScrolling && options.autoScrolling){ + var keyCode = e.which; + + //preventing the scroll with arrow keys & spacebar & Page Up & Down keys + var keyControls = [40, 38, 32, 33, 34]; + if($.inArray(keyCode, keyControls) > -1){ + e.preventDefault(); + } + + controlPressed = e.ctrlKey; + + keydownId = setTimeout(function(){ + onkeydown(e); + },150); + } + } + + function tooltipTextHandler(){ + $(this).prev().trigger('click'); + } + + //to prevent scrolling while zooming + function keyUpHandler(e){ + if(isWindowFocused){ //the keyup gets fired on new tab ctrl + t in Firefox + controlPressed = e.ctrlKey; + } + } + + //binding the mousemove when the mouse's middle button is released + function mouseDownHandler(e){ + //middle button + if (e.which == 2){ + oldPageY = e.pageY; + container.on('mousemove', mouseMoveHandler); + } + } + + //unbinding the mousemove when the mouse's middle button is released + function mouseUpHandler(e){ + //middle button + if (e.which == 2){ + container.off('mousemove'); + } + } + + //Scrolling horizontally when clicking on the slider controls. + function slideArrowHandler(){ + var section = $(this).closest(SECTION_SEL); + + if ($(this).hasClass(SLIDES_PREV)) { + if(isScrollAllowed.m.left){ + moveSlideLeft(section); + } + } else { + if(isScrollAllowed.m.right){ + moveSlideRight(section); + } + } + } + + //when opening a new tab (ctrl + t), `control` won't be pressed when coming back. + function blurHandler(){ + isWindowFocused = false; + controlPressed = false; + } + + //Scrolls to the section when clicking the navigation bullet + function sectionBulletHandler(e){ + e.preventDefault(); + var index = $(this).parent().index(); + scrollPage($(SECTION_SEL).eq(index)); + } + + //Scrolls the slider to the given slide destination for the given section + function slideBulletHandler(e){ + e.preventDefault(); + var slides = $(this).closest(SECTION_SEL).find(SLIDES_WRAPPER_SEL); + var destiny = slides.find(SLIDE_SEL).eq($(this).closest('li').index()); + + landscapeScroll(slides, destiny); + } + + /** + * Keydown event + */ + function onkeydown(e){ + var shiftPressed = e.shiftKey; + + //do nothing if we can not scroll or we are not using horizotnal key arrows. + if(!canScroll && [37,39].indexOf(e.which) < 0){ + return; + } + + switch (e.which) { + //up + case 38: + case 33: + if(isScrollAllowed.k.up){ + moveSectionUp(); + } + break; + + //down + case 32: //spacebar + if(shiftPressed && isScrollAllowed.k.up){ + moveSectionUp(); + break; + } + /* falls through */ + case 40: + case 34: + if(isScrollAllowed.k.down){ + moveSectionDown(); + } + break; + + //Home + case 36: + if(isScrollAllowed.k.up){ + moveTo(1); + } + break; + + //End + case 35: + if(isScrollAllowed.k.down){ + moveTo( $(SECTION_SEL).length ); + } + break; + + //left + case 37: + if(isScrollAllowed.k.left){ + moveSlideLeft(); + } + break; + + //right + case 39: + if(isScrollAllowed.k.right){ + moveSlideRight(); + } + break; + + default: + return; // exit this handler for other keys + } + } + + /** + * Detecting the direction of the mouse movement. + * Used only for the middle button of the mouse. + */ + var oldPageY = 0; + function mouseMoveHandler(e){ + if(canScroll){ + // moving up + if (e.pageY < oldPageY && isScrollAllowed.m.up){ + moveSectionUp(); + } + + // moving down + else if(e.pageY > oldPageY && isScrollAllowed.m.down){ + moveSectionDown(); + } + } + oldPageY = e.pageY; + } + + /** + * Scrolls horizontal sliders. + */ + function landscapeScroll(slides, destiny, direction){ + var section = slides.closest(SECTION_SEL); + var v = { + slides: slides, + destiny: destiny, + direction: direction, + destinyPos: destiny.position(), + slideIndex: destiny.index(), + section: section, + sectionIndex: section.index(SECTION_SEL), + anchorLink: section.data('anchor'), + slidesNav: section.find(SLIDES_NAV_SEL), + slideAnchor: getAnchor(destiny), + prevSlide: section.find(SLIDE_ACTIVE_SEL), + prevSlideIndex: section.find(SLIDE_ACTIVE_SEL).index(), + + //caching the value of isResizing at the momment the function is called + //because it will be checked later inside a setTimeout and the value might change + localIsResizing: isResizing + }; + v.xMovement = getXmovement(v.prevSlideIndex, v.slideIndex); + + //important!! Only do it when not resizing + if(!v.localIsResizing){ + //preventing from scrolling to the next/prev section when using scrollHorizontally + canScroll = false; + } + + if(options.onSlideLeave){ + + //if the site is not just resizing and readjusting the slides + if(!v.localIsResizing && v.xMovement!=='none'){ + if($.isFunction( options.onSlideLeave )){ + if(options.onSlideLeave.call( v.prevSlide, v.anchorLink, (v.sectionIndex + 1), v.prevSlideIndex, v.direction, v.slideIndex ) === false){ + slideMoving = false; + return; + } + } + } + } + + destiny.addClass(ACTIVE).siblings().removeClass(ACTIVE); + + if(!v.localIsResizing){ + stopMedia(v.prevSlide); + lazyLoad(destiny); + } + + if(!options.loopHorizontal && options.controlArrows){ + //hidding it for the fist slide, showing for the rest + section.find(SLIDES_ARROW_PREV_SEL).toggle(v.slideIndex!==0); + + //hidding it for the last slide, showing for the rest + section.find(SLIDES_ARROW_NEXT_SEL).toggle(!destiny.is(':last-child')); + } + + //only changing the URL if the slides are in the current section (not for resize re-adjusting) + if(section.hasClass(ACTIVE) && !v.localIsResizing){ + setState(v.slideIndex, v.slideAnchor, v.anchorLink, v.sectionIndex); + } + + performHorizontalMove(slides, v, true); + } + + + function afterSlideLoads(v){ + activeSlidesNavigation(v.slidesNav, v.slideIndex); + + //if the site is not just resizing and readjusting the slides + if(!v.localIsResizing){ + $.isFunction( options.afterSlideLoad ) && options.afterSlideLoad.call( v.destiny, v.anchorLink, (v.sectionIndex + 1), v.slideAnchor, v.slideIndex); + + //needs to be inside the condition to prevent problems with continuousVertical and scrollHorizontally + //and to prevent double scroll right after a windows resize + canScroll = true; + + playMedia(v.destiny); + } + + //letting them slide again + slideMoving = false; + } + + /** + * Performs the horizontal movement. (CSS3 or jQuery) + * + * @param fireCallback {Bool} - determines whether or not to fire the callback + */ + function performHorizontalMove(slides, v, fireCallback){ + var destinyPos = v.destinyPos; + + if(options.css3){ + var translate3d = 'translate3d(-' + Math.round(destinyPos.left) + 'px, 0px, 0px)'; + + addAnimation(slides.find(SLIDES_CONTAINER_SEL)).css(getTransforms(translate3d)); + + afterSlideLoadsId = setTimeout(function(){ + fireCallback && afterSlideLoads(v); + }, options.scrollingSpeed, options.easing); + }else{ + slides.animate({ + scrollLeft : Math.round(destinyPos.left) + }, options.scrollingSpeed, options.easing, function() { + + fireCallback && afterSlideLoads(v); + }); + } + } + + /** + * Sets the state for the horizontal bullet navigations. + */ + function activeSlidesNavigation(slidesNav, slideIndex){ + slidesNav.find(ACTIVE_SEL).removeClass(ACTIVE); + slidesNav.find('li').eq(slideIndex).find('a').addClass(ACTIVE); + } + + var previousHeight = windowsHeight; + + //when resizing the site, we adjust the heights of the sections, slimScroll... + function resizeHandler(){ + //checking if it needs to get responsive + responsive(); + + // rebuild immediately on touch devices + if (isTouchDevice) { + var activeElement = $(document.activeElement); + + //if the keyboard is NOT visible + if (!activeElement.is('textarea') && !activeElement.is('input') && !activeElement.is('select')) { + var currentHeight = $window.height(); + + //making sure the change in the viewport size is enough to force a rebuild. (20 % of the window to avoid problems when hidding scroll bars) + if( Math.abs(currentHeight - previousHeight) > (20 * Math.max(previousHeight, currentHeight) / 100) ){ + reBuild(true); + previousHeight = currentHeight; + } + } + }else{ + //in order to call the functions only when the resize is finished + //http://stackoverflow.com/questions/4298612/jquery-how-to-call-resize-event-only-once-its-finished-resizing + clearTimeout(resizeId); + + resizeId = setTimeout(function(){ + reBuild(true); + }, 350); + } + } + + /** + * Checks if the site needs to get responsive and disables autoScrolling if so. + * A class `fp-responsive` is added to the plugin's container in case the user wants to use it for his own responsive CSS. + */ + function responsive(){ + var widthLimit = options.responsive || options.responsiveWidth; //backwards compatiblity + var heightLimit = options.responsiveHeight; + + //only calculating what we need. Remember its called on the resize event. + var isBreakingPointWidth = widthLimit && $window.outerWidth() < widthLimit; + var isBreakingPointHeight = heightLimit && $window.height() < heightLimit; + + if(widthLimit && heightLimit){ + setResponsive(isBreakingPointWidth || isBreakingPointHeight); + } + else if(widthLimit){ + setResponsive(isBreakingPointWidth); + } + else if(heightLimit){ + setResponsive(isBreakingPointHeight); + } + } + + /** + * Adds transition animations for the given element + */ + function addAnimation(element){ + var transition = 'all ' + options.scrollingSpeed + 'ms ' + options.easingcss3; + + element.removeClass(NO_TRANSITION); + return element.css({ + '-webkit-transition': transition, + 'transition': transition + }); + } + + /** + * Remove transition animations for the given element + */ + function removeAnimation(element){ + return element.addClass(NO_TRANSITION); + } + + /** + * Activating the vertical navigation bullets according to the given slide name. + */ + function activateNavDots(name, sectionIndex){ + if(options.navigation){ + $(SECTION_NAV_SEL).find(ACTIVE_SEL).removeClass(ACTIVE); + if(name){ + $(SECTION_NAV_SEL).find('a[href="#' + name + '"]').addClass(ACTIVE); + }else{ + $(SECTION_NAV_SEL).find('li').eq(sectionIndex).find('a').addClass(ACTIVE); + } + } + } + + /** + * Activating the website main menu elements according to the given slide name. + */ + function activateMenuElement(name){ + if(options.menu){ + $(options.menu).find(ACTIVE_SEL).removeClass(ACTIVE); + $(options.menu).find('[data-menuanchor="'+name+'"]').addClass(ACTIVE); + } + } + + /** + * Sets to active the current menu and vertical nav items. + */ + function activateMenuAndNav(anchor, index){ + activateMenuElement(anchor); + activateNavDots(anchor, index); + } + + /** + * Retuns `up` or `down` depending on the scrolling movement to reach its destination + * from the current section. + */ + function getYmovement(destiny){ + var fromIndex = $(SECTION_ACTIVE_SEL).index(SECTION_SEL); + var toIndex = destiny.index(SECTION_SEL); + if( fromIndex == toIndex){ + return 'none'; + } + if(fromIndex > toIndex){ + return 'up'; + } + return 'down'; + } + + /** + * Retuns `right` or `left` depending on the scrolling movement to reach its destination + * from the current slide. + */ + function getXmovement(fromIndex, toIndex){ + if( fromIndex == toIndex){ + return 'none'; + } + if(fromIndex > toIndex){ + return 'left'; + } + return 'right'; + } + + function addTableClass(element){ + //In case we are styling for the 2nd time as in with reponsiveSlides + if(!element.hasClass(TABLE)){ + element.addClass(TABLE).wrapInner('
    '); + } + } + + function getTableHeight(element){ + var sectionHeight = windowsHeight; + + if(options.paddingTop || options.paddingBottom){ + var section = element; + if(!section.hasClass(SECTION)){ + section = element.closest(SECTION_SEL); + } + + var paddings = parseInt(section.css('padding-top')) + parseInt(section.css('padding-bottom')); + sectionHeight = (windowsHeight - paddings); + } + + return sectionHeight; + } + + /** + * Adds a css3 transform property to the container class with or without animation depending on the animated param. + */ + function transformContainer(translate3d, animated){ + if(animated){ + addAnimation(container); + }else{ + removeAnimation(container); + } + + container.css(getTransforms(translate3d)); + + //syncronously removing the class after the animation has been applied. + setTimeout(function(){ + container.removeClass(NO_TRANSITION); + },10); + } + + /** + * Gets a section by its anchor / index + */ + function getSectionByAnchor(sectionAnchor){ + if(!sectionAnchor) return []; + + var section = container.find(SECTION_SEL + '[data-anchor="'+sectionAnchor+'"]'); + if(!section.length){ + section = $(SECTION_SEL).eq( sectionAnchor -1); + } + + return section; + } + + /** + * Gets a slide inside a given section by its anchor / index + */ + function getSlideByAnchor(slideAnchor, section){ + var slides = section.find(SLIDES_WRAPPER_SEL); + var slide = slides.find(SLIDE_SEL + '[data-anchor="'+slideAnchor+'"]'); + + if(!slide.length){ + slide = slides.find(SLIDE_SEL).eq(slideAnchor); + } + + return slide; + } + + /** + * Scrolls to the given section and slide anchors + */ + function scrollPageAndSlide(destiny, slide){ + var section = getSectionByAnchor(destiny); + + //do nothing if there's no section with the given anchor name + if(!section.length) return; + + //default slide + if (typeof slide === 'undefined') { + slide = 0; + } + + //we need to scroll to the section and then to the slide + if (destiny !== lastScrolledDestiny && !section.hasClass(ACTIVE)){ + scrollPage(section, function(){ + scrollSlider(section, slide); + }); + } + //if we were already in the section + else{ + scrollSlider(section, slide); + } + } + + /** + * Scrolls the slider to the given slide destination for the given section + */ + function scrollSlider(section, slideAnchor){ + if(typeof slideAnchor !== 'undefined'){ + var slides = section.find(SLIDES_WRAPPER_SEL); + var destiny = getSlideByAnchor(slideAnchor, section); + + if(destiny.length){ + landscapeScroll(slides, destiny); + } + } + } + + /** + * Creates a landscape navigation bar with dots for horizontal sliders. + */ + function addSlidesNavigation(section, numSlides){ + section.append('
      '); + var nav = section.find(SLIDES_NAV_SEL); + + //top or bottom + nav.addClass(options.slidesNavPosition); + + for(var i=0; i< numSlides; i++){ + nav.find('ul').append('
    • '); + } + + //centering it + nav.css('margin-left', '-' + (nav.width()/2) + 'px'); + + nav.find('li').first().find('a').addClass(ACTIVE); + } + + + /** + * Sets the state of the website depending on the active section/slide. + * It changes the URL hash when needed and updates the body class. + */ + function setState(slideIndex, slideAnchor, anchorLink, sectionIndex){ + var sectionHash = ''; + + if(options.anchors.length && !options.lockAnchors){ + + //isn't it the first slide? + if(slideIndex){ + if(typeof anchorLink !== 'undefined'){ + sectionHash = anchorLink; + } + + //slide without anchor link? We take the index instead. + if(typeof slideAnchor === 'undefined'){ + slideAnchor = slideIndex; + } + + lastScrolledSlide = slideAnchor; + setUrlHash(sectionHash + '/' + slideAnchor); + + //first slide won't have slide anchor, just the section one + }else if(typeof slideIndex !== 'undefined'){ + lastScrolledSlide = slideAnchor; + setUrlHash(anchorLink); + } + + //section without slides + else{ + setUrlHash(anchorLink); + } + } + + setBodyClass(); + } + + /** + * Sets the URL hash. + */ + function setUrlHash(url){ + if(options.recordHistory){ + location.hash = url; + }else{ + //Mobile Chrome doesn't work the normal way, so... lets use HTML5 for phones :) + if(isTouchDevice || isTouch){ + window.history.replaceState(undefined, undefined, '#' + url); + }else{ + var baseUrl = window.location.href.split('#')[0]; + window.location.replace( baseUrl + '#' + url ); + } + } + } + + /** + * Gets the anchor for the given slide / section. Its index will be used if there's none. + */ + function getAnchor(element){ + var anchor = element.data('anchor'); + var index = element.index(); + + //Slide without anchor link? We take the index instead. + if(typeof anchor === 'undefined'){ + anchor = index; + } + + return anchor; + } + + /** + * Sets a class for the body of the page depending on the active section / slide + */ + function setBodyClass(){ + var section = $(SECTION_ACTIVE_SEL); + var slide = section.find(SLIDE_ACTIVE_SEL); + + var sectionAnchor = getAnchor(section); + var slideAnchor = getAnchor(slide); + + var text = String(sectionAnchor); + + if(slide.length){ + text = text + '-' + slideAnchor; + } + + //changing slash for dash to make it a valid CSS style + text = text.replace('/', '-').replace('#',''); + + //removing previous anchor classes + var classRe = new RegExp('\\b\\s?' + VIEWING_PREFIX + '-[^\\s]+\\b', "g"); + $body[0].className = $body[0].className.replace(classRe, ''); + + //adding the current anchor + $body.addClass(VIEWING_PREFIX + '-' + text); + } + + /** + * Checks for translate3d support + * @return boolean + * http://stackoverflow.com/questions/5661671/detecting-transform-translate3d-support + */ + function support3d() { + var el = document.createElement('p'), + has3d, + transforms = { + 'webkitTransform':'-webkit-transform', + 'OTransform':'-o-transform', + 'msTransform':'-ms-transform', + 'MozTransform':'-moz-transform', + 'transform':'transform' + }; + + // Add it to the body to get the computed style. + document.body.insertBefore(el, null); + + for (var t in transforms) { + if (el.style[t] !== undefined) { + el.style[t] = 'translate3d(1px,1px,1px)'; + has3d = window.getComputedStyle(el).getPropertyValue(transforms[t]); + } + } + + document.body.removeChild(el); + + return (has3d !== undefined && has3d.length > 0 && has3d !== 'none'); + } + + /** + * Removes the auto scrolling action fired by the mouse wheel and trackpad. + * After this function is called, the mousewheel and trackpad movements won't scroll through sections. + */ + function removeMouseWheelHandler(){ + if (document.addEventListener) { + document.removeEventListener('mousewheel', MouseWheelHandler, false); //IE9, Chrome, Safari, Oper + document.removeEventListener('wheel', MouseWheelHandler, false); //Firefox + document.removeEventListener('MozMousePixelScroll', MouseWheelHandler, false); //old Firefox + } else { + document.detachEvent('onmousewheel', MouseWheelHandler); //IE 6/7/8 + } + } + + /** + * Adds the auto scrolling action for the mouse wheel and trackpad. + * After this function is called, the mousewheel and trackpad movements will scroll through sections + * https://developer.mozilla.org/en-US/docs/Web/Events/wheel + */ + function addMouseWheelHandler(){ + var prefix = ''; + var _addEventListener; + + if (window.addEventListener){ + _addEventListener = "addEventListener"; + }else{ + _addEventListener = "attachEvent"; + prefix = 'on'; + } + + // detect available wheel event + var support = 'onwheel' in document.createElement('div') ? 'wheel' : // Modern browsers support "wheel" + document.onmousewheel !== undefined ? 'mousewheel' : // Webkit and IE support at least "mousewheel" + 'DOMMouseScroll'; // let's assume that remaining browsers are older Firefox + + + if(support == 'DOMMouseScroll'){ + document[ _addEventListener ](prefix + 'MozMousePixelScroll', MouseWheelHandler, false); + } + + //handle MozMousePixelScroll in older Firefox + else{ + document[ _addEventListener ](prefix + support, MouseWheelHandler, false); + } + } + + /** + * Binding the mousemove when the mouse's middle button is pressed + */ + function addMiddleWheelHandler(){ + container + .on('mousedown', mouseDownHandler) + .on('mouseup', mouseUpHandler); + } + + /** + * Unbinding the mousemove when the mouse's middle button is released + */ + function removeMiddleWheelHandler(){ + container + .off('mousedown', mouseDownHandler) + .off('mouseup', mouseUpHandler); + } + + /** + * Adds the possibility to auto scroll through sections on touch devices. + */ + function addTouchHandler(){ + if(isTouchDevice || isTouch){ + if(options.autoScrolling){ + $body.off(events.touchmove).on(events.touchmove, preventBouncing); + } + + $(WRAPPER_SEL) + .off(events.touchstart).on(events.touchstart, touchStartHandler) + .off(events.touchmove).on(events.touchmove, touchMoveHandler); + } + } + + /** + * Removes the auto scrolling for touch devices. + */ + function removeTouchHandler(){ + if(isTouchDevice || isTouch){ + if(options.autoScrolling){ + $body.off(events.touchmove); + } + + $(WRAPPER_SEL) + .off(events.touchstart) + .off(events.touchmove); + } + } + + /* + * Returns and object with Microsoft pointers (for IE<11 and for IE >= 11) + * http://msdn.microsoft.com/en-us/library/ie/dn304886(v=vs.85).aspx + */ + function getMSPointer(){ + var pointer; + + //IE >= 11 & rest of browsers + if(window.PointerEvent){ + pointer = { down: 'pointerdown', move: 'pointermove'}; + } + + //IE < 11 + else{ + pointer = { down: 'MSPointerDown', move: 'MSPointerMove'}; + } + + return pointer; + } + + /** + * Gets the pageX and pageY properties depending on the browser. + * https://github.com/alvarotrigo/fullPage.js/issues/194#issuecomment-34069854 + */ + function getEventsPage(e){ + var events = []; + + events.y = (typeof e.pageY !== 'undefined' && (e.pageY || e.pageX) ? e.pageY : e.touches[0].pageY); + events.x = (typeof e.pageX !== 'undefined' && (e.pageY || e.pageX) ? e.pageX : e.touches[0].pageX); + + //in touch devices with scrollBar:true, e.pageY is detected, but we have to deal with touch events. #1008 + if(isTouch && isReallyTouch(e) && options.scrollBar){ + events.y = e.touches[0].pageY; + events.x = e.touches[0].pageX; + } + + return events; + } + + /** + * Slides silently (with no animation) the active slider to the given slide. + * @param noCallback {bool} true or defined -> no callbacks + */ + function silentLandscapeScroll(activeSlide, noCallbacks){ + setScrollingSpeed (0, 'internal'); + + if(typeof noCallbacks !== 'undefined'){ + //preventing firing callbacks afterSlideLoad etc. + isResizing = true; + } + + landscapeScroll(activeSlide.closest(SLIDES_WRAPPER_SEL), activeSlide); + + if(typeof noCallbacks !== 'undefined'){ + isResizing = false; + } + + setScrollingSpeed(originals.scrollingSpeed, 'internal'); + } + + /** + * Scrolls silently (with no animation) the page to the given Y position. + */ + function silentScroll(top){ + // The first section can have a negative value in iOS 10. Not quite sure why: -0.0142822265625 + // that's why we round it to 0. + var roundedTop = Math.round(top); + + if (options.css3 && options.autoScrolling && !options.scrollBar){ + var translate3d = 'translate3d(0px, -' + roundedTop + 'px, 0px)'; + transformContainer(translate3d, false); + } + else if(options.autoScrolling && !options.scrollBar){ + container.css('top', -roundedTop); + } + else{ + $htmlBody.scrollTop(roundedTop); + } + } + + /** + * Returns the cross-browser transform string. + */ + function getTransforms(translate3d){ + return { + '-webkit-transform': translate3d, + '-moz-transform': translate3d, + '-ms-transform':translate3d, + 'transform': translate3d + }; + } + + /** + * Allowing or disallowing the mouse/swipe scroll in a given direction. (not for keyboard) + * @type m (mouse) or k (keyboard) + */ + function setIsScrollAllowed(value, direction, type){ + //up, down, left, right + if(direction !== 'all'){ + isScrollAllowed[type][direction] = value; + } + + //all directions? + else{ + $.each(Object.keys(isScrollAllowed[type]), function(index, key){ + isScrollAllowed[type][key] = value; + }); + } + } + + /* + * Destroys fullpage.js plugin events and optinally its html markup and styles + */ + function destroy(all){ + setAutoScrolling(false, 'internal'); + setAllowScrolling(false); + setKeyboardScrolling(false); + container.addClass(DESTROYED); + + clearTimeout(afterSlideLoadsId); + clearTimeout(afterSectionLoadsId); + clearTimeout(resizeId); + clearTimeout(scrollId); + clearTimeout(scrollId2); + + $window + .off('scroll', scrollHandler) + .off('hashchange', hashChangeHandler) + .off('resize', resizeHandler); + + $document + .off('click touchstart', SECTION_NAV_SEL + ' a') + .off('mouseenter', SECTION_NAV_SEL + ' li') + .off('mouseleave', SECTION_NAV_SEL + ' li') + .off('click touchstart', SLIDES_NAV_LINK_SEL) + .off('mouseover', options.normalScrollElements) + .off('mouseout', options.normalScrollElements); + + $(SECTION_SEL) + .off('click touchstart', SLIDES_ARROW_SEL); + + clearTimeout(afterSlideLoadsId); + clearTimeout(afterSectionLoadsId); + + //lets make a mess! + if(all){ + destroyStructure(); + } + } + + /* + * Removes inline styles added by fullpage.js + */ + function destroyStructure(){ + //reseting the `top` or `translate` properties to 0 + silentScroll(0); + + //loading all the lazy load content + container.find('img[data-src], source[data-src], audio[data-src], iframe[data-src]').each(function(){ + setSrc($(this), 'src'); + }); + + container.find('img[data-srcset]').each(function(){ + setSrc($(this), 'srcset'); + }); + + $(SECTION_NAV_SEL + ', ' + SLIDES_NAV_SEL + ', ' + SLIDES_ARROW_SEL).remove(); + + //removing inline styles + $(SECTION_SEL).css( { + 'height': '', + 'background-color' : '', + 'padding': '' + }); + + $(SLIDE_SEL).css( { + 'width': '' + }); + + container.css({ + 'height': '', + 'position': '', + '-ms-touch-action': '', + 'touch-action': '' + }); + + $htmlBody.css({ + 'overflow': '', + 'height': '' + }); + + // remove .fp-enabled class + $('html').removeClass(ENABLED); + + // remove .fp-responsive class + $body.removeClass(RESPONSIVE); + + // remove all of the .fp-viewing- classes + $.each($body.get(0).className.split(/\s+/), function (index, className) { + if (className.indexOf(VIEWING_PREFIX) === 0) { + $body.removeClass(className); + } + }); + + //removing added classes + $(SECTION_SEL + ', ' + SLIDE_SEL).each(function(){ + if(options.scrollOverflowHandler){ + options.scrollOverflowHandler.remove($(this)); + } + $(this).removeClass(TABLE + ' ' + ACTIVE); + }); + + removeAnimation(container); + + //Unwrapping content + container.find(TABLE_CELL_SEL + ', ' + SLIDES_CONTAINER_SEL + ', ' + SLIDES_WRAPPER_SEL).each(function(){ + //unwrap not being use in case there's no child element inside and its just text + $(this).replaceWith(this.childNodes); + }); + + //removing the applied transition from the fullpage wrapper + container.css({ + '-webkit-transition': 'none', + 'transition': 'none' + }); + + //scrolling the page to the top with no animation + $htmlBody.scrollTop(0); + + //removing selectors + var usedSelectors = [SECTION, SLIDE, SLIDES_CONTAINER]; + $.each(usedSelectors, function(index, value){ + $('.' + value).removeClass(value); + }); + } + + /* + * Sets the state for a variable with multiple states (original, and temporal) + * Some variables such as `autoScrolling` or `recordHistory` might change automatically its state when using `responsive` or `autoScrolling:false`. + * This function is used to keep track of both states, the original and the temporal one. + * If type is not 'internal', then we assume the user is globally changing the variable. + */ + function setVariableState(variable, value, type){ + options[variable] = value; + if(type !== 'internal'){ + originals[variable] = value; + } + } + + /** + * Displays warnings + */ + function displayWarnings(){ + var extensions = ['fadingEffect', 'continuousHorizontal', 'scrollHorizontally', 'interlockedSlides', 'resetSliders', 'responsiveSlides', 'offsetSections', 'dragAndMove', 'scrollOverflowReset', 'parallax']; + if($('html').hasClass(ENABLED)){ + showError('error', 'Fullpage.js can only be initialized once and you are doing it multiple times!'); + return; + } + + // Disable mutually exclusive settings + if (options.continuousVertical && + (options.loopTop || options.loopBottom)) { + options.continuousVertical = false; + showError('warn', 'Option `loopTop/loopBottom` is mutually exclusive with `continuousVertical`; `continuousVertical` disabled'); + } + + if(options.scrollBar && options.scrollOverflow){ + showError('warn', 'Option `scrollBar` is mutually exclusive with `scrollOverflow`. Sections with scrollOverflow might not work well in Firefox'); + } + + if(options.continuousVertical && (options.scrollBar || !options.autoScrolling)){ + options.continuousVertical = false; + showError('warn', 'Scroll bars (`scrollBar:true` or `autoScrolling:false`) are mutually exclusive with `continuousVertical`; `continuousVertical` disabled'); + } + + if(options.scrollOverflow && !options.scrollOverflowHandler){ + options.scrollOverflow = false; + showError('error', 'The option `scrollOverflow:true` requires the file `scrolloverflow.min.js`. Please include it before fullPage.js.'); + } + + //using extensions? Wrong file! + $.each(extensions, function(index, extension){ + //is the option set to true? + if(options[extension]){ + showError('warn', 'fullpage.js extensions require jquery.fullpage.extensions.min.js file instead of the usual jquery.fullpage.js. Requested: '+ extension); + } + }); + + //anchors can not have the same value as any element ID or NAME + $.each(options.anchors, function(index, name){ + + //case insensitive selectors (http://stackoverflow.com/a/19465187/1081396) + var nameAttr = $document.find('[name]').filter(function() { + return $(this).attr('name') && $(this).attr('name').toLowerCase() == name.toLowerCase(); + }); + + var idAttr = $document.find('[id]').filter(function() { + return $(this).attr('id') && $(this).attr('id').toLowerCase() == name.toLowerCase(); + }); + + if(idAttr.length || nameAttr.length ){ + showError('error', 'data-anchor tags can not have the same value as any `id` element on the site (or `name` element for IE).'); + idAttr.length && showError('error', '"' + name + '" is is being used by another element `id` property'); + nameAttr.length && showError('error', '"' + name + '" is is being used by another element `name` property'); + } + }); + } + + /** + * Shows a message in the console of the given type. + */ + function showError(type, text){ + console && console[type] && console[type]('fullPage: ' + text); + } + + }; //end of $.fn.fullpage +}); diff --git a/static/fullpage/jquery.min.js b/static/fullpage/jquery.min.js new file mode 100644 index 0000000..93adea1 --- /dev/null +++ b/static/fullpage/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.2 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"":"")+""),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
      a",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="
      "+""+"
      ",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="
      t
      ",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="
      ",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function( +a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

      ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
      ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/
      ","
      "],tr:[2,"","
      "],td:[3,"","
      "],col:[2,"","
      "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
      ","
      "]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f +.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(;d1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]===""&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
      ").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/static/images/icon/andriod.png b/static/images/icon/andriod.png new file mode 100644 index 0000000..1328406 Binary files /dev/null and b/static/images/icon/andriod.png differ diff --git a/static/images/icon/api.png b/static/images/icon/api.png new file mode 100644 index 0000000..53ad9a4 Binary files /dev/null and b/static/images/icon/api.png differ diff --git a/static/images/icon/google-play.png b/static/images/icon/google-play.png new file mode 100644 index 0000000..47ca4d1 Binary files /dev/null and b/static/images/icon/google-play.png differ diff --git a/static/images/icon/imac.png b/static/images/icon/imac.png new file mode 100644 index 0000000..3fd7c38 Binary files /dev/null and b/static/images/icon/imac.png differ diff --git a/static/images/icon/ios.png b/static/images/icon/ios.png new file mode 100644 index 0000000..30d53e5 Binary files /dev/null and b/static/images/icon/ios.png differ diff --git a/static/images/icon/linux.png b/static/images/icon/linux.png new file mode 100644 index 0000000..c0d8c46 Binary files /dev/null and b/static/images/icon/linux.png differ diff --git a/static/images/icon/right.png b/static/images/icon/right.png new file mode 100644 index 0000000..26a69c7 Binary files /dev/null and b/static/images/icon/right.png differ diff --git a/static/images/icon/windows.png b/static/images/icon/windows.png new file mode 100644 index 0000000..ea2bd55 Binary files /dev/null and b/static/images/icon/windows.png differ diff --git a/static/images/icon_1.png b/static/images/icon_1.png new file mode 100644 index 0000000..e1ce228 Binary files /dev/null and b/static/images/icon_1.png differ diff --git a/static/images/icon_2.png b/static/images/icon_2.png new file mode 100644 index 0000000..d15b1f1 Binary files /dev/null and b/static/images/icon_2.png differ diff --git a/static/images/icon_3.png b/static/images/icon_3.png new file mode 100644 index 0000000..48fff99 Binary files /dev/null and b/static/images/icon_3.png differ diff --git a/static/images/illustration-3.png b/static/images/illustration-3.png new file mode 100644 index 0000000..b3ae19b Binary files /dev/null and b/static/images/illustration-3.png differ diff --git a/static/images/lightImageUrl.png b/static/images/lightImageUrl.png new file mode 100644 index 0000000..bff5f88 Binary files /dev/null and b/static/images/lightImageUrl.png differ diff --git a/static/images/lightImageUrl_2.png b/static/images/lightImageUrl_2.png new file mode 100644 index 0000000..99bd31f Binary files /dev/null and b/static/images/lightImageUrl_2.png differ diff --git a/static/images/trusted-section.png b/static/images/trusted-section.png new file mode 100644 index 0000000..ba9298a Binary files /dev/null and b/static/images/trusted-section.png differ diff --git a/static/js/custom.js b/static/js/custom.js new file mode 100644 index 0000000..4d1befa --- /dev/null +++ b/static/js/custom.js @@ -0,0 +1,920 @@ +(function ($) { + 'use strict'; + // Depth Chart + function DepthChart() { + // Add data + chart.dataSource.url = + 'https://poloniex.com/public?command=returnOrderBook¤cyPair=BTC_ETH&depth=50'; + chart.dataSource.reloadFrequency = 30000; + chart.dataSource.adapter.add('parsedData', function (data) { + // Function to process (sort and calculate cummulative volume) + function processData(list, type, desc) { + // Convert to data points + for (var i = 0; i < list.length; i++) { + list[i] = { + value: Number(list[i][0]), + volume: Number(list[i][1]), + }; + } + + // Sort list just in case + list.sort(function (a, b) { + if (a.value > b.value) { + return 1; + } else if (a.value < b.value) { + return -1; + } else { + return 0; + } + }); + + // Calculate cummulative volume + if (desc) { + for (var i = list.length - 1; i >= 0; i--) { + if (i < list.length - 1) { + list[i].totalvolume = list[i + 1].totalvolume + list[i].volume; + } else { + list[i].totalvolume = list[i].volume; + } + var dp = {}; + dp['value'] = list[i].value; + dp[type + 'volume'] = list[i].volume; + dp[type + 'totalvolume'] = list[i].totalvolume; + res.unshift(dp); + } + } else { + for (var i = 0; i < list.length; i++) { + if (i > 0) { + list[i].totalvolume = list[i - 1].totalvolume + list[i].volume; + } else { + list[i].totalvolume = list[i].volume; + } + var dp = {}; + dp['value'] = list[i].value; + dp[type + 'volume'] = list[i].volume; + dp[type + 'totalvolume'] = list[i].totalvolume; + res.push(dp); + } + } + } + + // Init + var res = []; + processData(data.bids, 'bids', true); + processData(data.asks, 'asks', false); + + return res; + }); + + // Set up precision for numbers + chart.numberFormatter.numberFormat = '#,###.####'; + + // Create axes + var xAxis = chart.xAxes.push(new am4charts.CategoryAxis()); + xAxis.dataFields.category = 'value'; + //xAxis.renderer.grid.template.location = 0; + xAxis.renderer.minGridDistance = 50; + xAxis.tooltip.disabled = true; + xAxis.renderer.grid.template.disabled = true; + xAxis.renderer.paddingBottom = 10; + + var yAxis = chart.yAxes.push(new am4charts.ValueAxis()); + yAxis.tooltip.disabled = true; + yAxis.renderer.grid.template.disabled = true; + + // Create series + var series = chart.series.push(new am4charts.StepLineSeries()); + series.dataFields.categoryX = 'value'; + series.dataFields.valueY = 'bidstotalvolume'; + series.strokeWidth = 1; + series.stroke = am4core.color('#26de81'); + series.fill = series.stroke; + series.fillOpacity = 0.5; + series.tooltip.getFillFromObject = false; + series.tooltip.background.fill = am4core.color('#26de81'); + series.tooltip.background.stroke = am4core.color('#26de81'); + series.tooltipText = + 'Ask: [bold]{categoryX}[/]\nTotal volume: [bold]{valueY}[/]\nVolume: [bold]{bidsvolume}[/]'; + + var series2 = chart.series.push(new am4charts.StepLineSeries()); + series2.dataFields.categoryX = 'value'; + series2.dataFields.valueY = 'askstotalvolume'; + series2.strokeWidth = 1; + series2.stroke = am4core.color('#ff231f'); + series2.fill = series2.stroke; + series2.fillOpacity = 0.5; + series2.tooltip.getFillFromObject = false; + series2.tooltip.background.fill = am4core.color('#ff231f'); + series2.tooltip.background.stroke = am4core.color('#ff231f'); + series2.tooltipText = + 'Ask: [bold]{categoryX}[/]\nTotal volume: [bold]{valueY}[/]\nVolume: [bold]{asksvolume}[/]'; + + var series3 = chart.series.push(new am4charts.ColumnSeries()); + series3.dataFields.categoryX = 'value'; + series3.dataFields.valueY = 'bidsvolume'; + series3.strokeWidth = 0; + series3.fill = am4core.color('#2a2e39'); + series3.fillOpacity = 0.1; + + var series4 = chart.series.push(new am4charts.ColumnSeries()); + series4.dataFields.categoryX = 'value'; + series4.dataFields.valueY = 'asksvolume'; + series4.strokeWidth = 0; + series4.fill = am4core.color('#2a2e39'); + series4.fillOpacity = 0.1; + + // Add cursor + chart.cursor = new am4charts.XYCursor(); + } + + if (document.getElementById('darkDepthChart')) { + function am4themes_dark(target) { + if (target instanceof am4core.InterfaceColorSet) { + target.setFor('stroke', am4core.color('#000000')); + target.setFor('fill', am4core.color('#2b2b2b')); + target.setFor('primaryButton', am4core.color('#6794dc')); + target.setFor('primaryButtonHover', am4core.color('#6771dc')); + target.setFor('primaryButtonDown', am4core.color('#68dc75')); + target.setFor('primaryButtonActive', am4core.color('#68dc75')); + target.setFor('primaryButtonText', am4core.color('#FFFFFF')); + target.setFor('primaryButtonStroke', am4core.color('#6794dc')); + target.setFor('secondaryButton', am4core.color('#3b3b3b')); + target.setFor('secondaryButtonHover', am4core.color('#3b3b3b')); + target.setFor('secondaryButtonDown', am4core.color('#3b3b3b')); + target.setFor('secondaryButtonText', am4core.color('#bbbbbb')); + target.setFor('secondaryButtonStroke', am4core.color('#3b3b3b')); + target.setFor('grid', am4core.color('#6DC0D5')); + target.setFor('background', am4core.color('#000000')); + target.setFor('alternativeBackground', am4core.color('#ffffff')); + target.setFor('text', am4core.color('#ffffff')); + target.setFor('alternativeText', am4core.color('#000000')); + target.setFor('disabledBackground', am4core.color('#bbbbbb')); + } + } + // Themes begin + am4core.useTheme(am4themes_dark); + // Themes end + + var chart = am4core.create('darkDepthChart', am4charts.XYChart); + chart.zoomOutButton.background.fill = am4core.color( + 'rgba(255, 255, 255, 0.11)' + ); + chart.zoomOutButton.icon.stroke = am4core.color('#ebebeb'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#00cc93'); + DepthChart(); + } + + if (document.getElementById('lightDepthChart')) { + var chart = am4core.create('lightDepthChart', am4charts.XYChart); + chart.zoomOutButton.background.fill = am4core.color('rgba(0, 0, 0, 0.09)'); + chart.zoomOutButton.icon.stroke = am4core.color('rgba(0, 0, 0, 0.40)'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#00cc93'); + DepthChart(); + } + + if (document.getElementById('marketsChartBtcLight')) { + am4core.ready(function () { + // Create chart + var chart = am4core.create('marketsChartBtcLight', am4charts.XYChart); + + chart.data = generateChartData(); + + var dateAxis = chart.xAxes.push(new am4charts.DateAxis()); + dateAxis.baseInterval = { + timeUnit: 'minute', + count: 1, + }; + dateAxis.tooltip.disabled = true; + dateAxis.renderer.grid.template.disabled = true; + dateAxis.renderer.labels.template.disabled = true; + dateAxis.renderer.ticks.template.disabled = true; + dateAxis.renderer.paddingBottom = 15; + + var valueAxis = chart.yAxes.push(new am4charts.ValueAxis()); + valueAxis.tooltip.disabled = true; + valueAxis.renderer.grid.template.disabled = true; + valueAxis.renderer.labels.template.disabled = true; + valueAxis.renderer.ticks.template.disabled = true; + + var series = chart.series.push(new am4charts.LineSeries()); + series.dataFields.dateX = 'date'; + series.dataFields.valueY = 'prices'; + series.tooltipText = 'prices: [bold]{valueY}[/]'; + series.fillOpacity = 0.1; + series.fill = am4core.color('#00cc93'); + series.stroke = am4core.color('#00cc93'); + series.tooltip.getFillFromObject = false; + series.tooltip.background.fill = am4core.color('#2a2e39'); + series.tooltip.background.stroke = am4core.color('#2a2e39'); + + chart.cursor = new am4charts.XYCursor(); + chart.cursor.lineY.opacity = 1; + dateAxis.start = 0; + dateAxis.keepSelection = true; + chart.zoomOutButton.background.fill = am4core.color( + 'rgba(0, 0, 0, 0.09)' + ); + chart.zoomOutButton.icon.stroke = am4core.color('rgba(0, 0, 0, 0.40)'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#00cc93'); + + function generateChartData() { + var chartData = []; + // current date + var firstDate = new Date(); + // now set 500 minutes back + firstDate.setMinutes(firstDate.getDate() - 500); + + // and generate 500 data items + var prices = 500; + for (var i = 0; i < 500; i++) { + var newDate = new Date(firstDate); + // each time we add one minute + newDate.setMinutes(newDate.getMinutes() + i); + // some random number + prices += Math.round( + (Math.random() < 0.5 ? 1 : -1) * Math.random() * 10 + ); + // add data item to the array + chartData.push({ + date: newDate, + prices: prices, + }); + } + return chartData; + } + }); + } + + if (document.getElementById('marketsChartEthLight')) { + am4core.ready(function () { + // Create chart + var chart = am4core.create('marketsChartEthLight', am4charts.XYChart); + + chart.data = generateChartData(); + + var dateAxis = chart.xAxes.push(new am4charts.DateAxis()); + dateAxis.baseInterval = { + timeUnit: 'minute', + count: 1, + }; + dateAxis.tooltip.disabled = true; + dateAxis.renderer.grid.template.disabled = true; + dateAxis.renderer.labels.template.disabled = true; + dateAxis.renderer.ticks.template.disabled = true; + dateAxis.renderer.paddingBottom = 15; + + var valueAxis = chart.yAxes.push(new am4charts.ValueAxis()); + valueAxis.tooltip.disabled = true; + valueAxis.renderer.grid.template.disabled = true; + valueAxis.renderer.labels.template.disabled = true; + valueAxis.renderer.ticks.template.disabled = true; + + var series = chart.series.push(new am4charts.LineSeries()); + series.dataFields.dateX = 'date'; + series.dataFields.valueY = 'prices'; + series.tooltipText = 'prices: [bold]{valueY}[/]'; + series.fillOpacity = 0.1; + series.fill = am4core.color('#f74745'); + series.stroke = am4core.color('#f74745'); + series.tooltip.getFillFromObject = false; + series.tooltip.background.fill = am4core.color('#2a2e39'); + series.tooltip.background.stroke = am4core.color('#2a2e39'); + + chart.cursor = new am4charts.XYCursor(); + chart.cursor.lineY.opacity = 1; + dateAxis.start = 0; + dateAxis.keepSelection = true; + chart.zoomOutButton.background.fill = am4core.color( + 'rgba(0, 0, 0, 0.09)' + ); + chart.zoomOutButton.icon.stroke = am4core.color('rgba(0, 0, 0, 0.40)'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#f74745'); + + function generateChartData() { + var chartData = []; + // current date + var firstDate = new Date(); + // now set 500 minutes back + firstDate.setMinutes(firstDate.getDate() - 500); + + // and generate 500 data items + var prices = 500; + for (var i = 0; i < 500; i++) { + var newDate = new Date(firstDate); + // each time we add one minute + newDate.setMinutes(newDate.getMinutes() + i); + // some random number + prices += Math.round( + (Math.random() < 0.5 ? 1 : -1) * Math.random() * 10 + ); + // add data item to the array + chartData.push({ + date: newDate, + prices: prices, + }); + } + return chartData; + } + }); + } + + if (document.getElementById('marketsChartLtcLight')) { + am4core.ready(function () { + // Create chart + var chart = am4core.create('marketsChartLtcLight', am4charts.XYChart); + + chart.data = generateChartData(); + + var dateAxis = chart.xAxes.push(new am4charts.DateAxis()); + dateAxis.baseInterval = { + timeUnit: 'minute', + count: 1, + }; + dateAxis.tooltip.disabled = true; + dateAxis.renderer.grid.template.disabled = true; + dateAxis.renderer.labels.template.disabled = true; + dateAxis.renderer.ticks.template.disabled = true; + dateAxis.renderer.paddingBottom = 15; + + var valueAxis = chart.yAxes.push(new am4charts.ValueAxis()); + valueAxis.tooltip.disabled = true; + valueAxis.renderer.grid.template.disabled = true; + valueAxis.renderer.labels.template.disabled = true; + valueAxis.renderer.ticks.template.disabled = true; + + var series = chart.series.push(new am4charts.LineSeries()); + series.dataFields.dateX = 'date'; + series.dataFields.valueY = 'prices'; + series.tooltipText = 'prices: [bold]{valueY}[/]'; + series.fillOpacity = 0.1; + series.fill = am4core.color('#00cc93'); + series.stroke = am4core.color('#00cc93'); + series.tooltip.getFillFromObject = false; + series.tooltip.background.fill = am4core.color('#2a2e39'); + series.tooltip.background.stroke = am4core.color('#2a2e39'); + + chart.cursor = new am4charts.XYCursor(); + chart.cursor.lineY.opacity = 1; + dateAxis.start = 0; + dateAxis.keepSelection = true; + chart.zoomOutButton.background.fill = am4core.color( + 'rgba(0, 0, 0, 0.09)' + ); + chart.zoomOutButton.icon.stroke = am4core.color('rgba(0, 0, 0, 0.40)'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#00cc93'); + + function generateChartData() { + var chartData = []; + // current date + var firstDate = new Date(); + // now set 500 minutes back + firstDate.setMinutes(firstDate.getDate() - 500); + + // and generate 500 data items + var prices = 500; + for (var i = 0; i < 500; i++) { + var newDate = new Date(firstDate); + // each time we add one minute + newDate.setMinutes(newDate.getMinutes() + i); + // some random number + prices += Math.round( + (Math.random() < 0.5 ? 1 : -1) * Math.random() * 10 + ); + // add data item to the array + chartData.push({ + date: newDate, + prices: prices, + }); + } + return chartData; + } + }); + } + if (document.getElementById('marketsChartKcsLight')) { + am4core.ready(function () { + // Create chart + var chart = am4core.create('marketsChartKcsLight', am4charts.XYChart); + + chart.data = generateChartData(); + + var dateAxis = chart.xAxes.push(new am4charts.DateAxis()); + dateAxis.baseInterval = { + timeUnit: 'minute', + count: 1, + }; + dateAxis.tooltip.disabled = true; + dateAxis.renderer.grid.template.disabled = true; + dateAxis.renderer.labels.template.disabled = true; + dateAxis.renderer.ticks.template.disabled = true; + dateAxis.renderer.paddingBottom = 15; + + var valueAxis = chart.yAxes.push(new am4charts.ValueAxis()); + valueAxis.tooltip.disabled = true; + valueAxis.renderer.grid.template.disabled = true; + valueAxis.renderer.labels.template.disabled = true; + valueAxis.renderer.ticks.template.disabled = true; + + var series = chart.series.push(new am4charts.LineSeries()); + series.dataFields.dateX = 'date'; + series.dataFields.valueY = 'prices'; + series.tooltipText = 'prices: [bold]{valueY}[/]'; + series.fillOpacity = 0.1; + series.fill = am4core.color('#f74745'); + series.stroke = am4core.color('#f74745'); + series.tooltip.getFillFromObject = false; + series.tooltip.background.fill = am4core.color('#2a2e39'); + series.tooltip.background.stroke = am4core.color('#2a2e39'); + + chart.cursor = new am4charts.XYCursor(); + chart.cursor.lineY.opacity = 1; + dateAxis.start = 0; + dateAxis.keepSelection = true; + chart.zoomOutButton.background.fill = am4core.color( + 'rgba(0, 0, 0, 0.09)' + ); + chart.zoomOutButton.icon.stroke = am4core.color('rgba(0, 0, 0, 0.40)'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#00cc93'); + + function generateChartData() { + var chartData = []; + // current date + var firstDate = new Date(); + // now set 500 minutes back + firstDate.setMinutes(firstDate.getDate() - 500); + + // and generate 500 data items + var prices = 500; + for (var i = 0; i < 500; i++) { + var newDate = new Date(firstDate); + // each time we add one minute + newDate.setMinutes(newDate.getMinutes() + i); + // some random number + prices += Math.round( + (Math.random() < 0.5 ? 1 : -1) * Math.random() * 10 + ); + // add data item to the array + chartData.push({ + date: newDate, + prices: prices, + }); + } + return chartData; + } + }); + } + + if (document.getElementById('marketsChartBtcDark')) { + am4core.ready(function () { + // Create chart + var chart = am4core.create('marketsChartBtcDark', am4charts.XYChart); + + chart.data = generateChartData(); + + var dateAxis = chart.xAxes.push(new am4charts.DateAxis()); + dateAxis.baseInterval = { + timeUnit: 'minute', + count: 1, + }; + dateAxis.tooltip.disabled = true; + dateAxis.renderer.grid.template.disabled = true; + dateAxis.renderer.labels.template.disabled = true; + dateAxis.renderer.ticks.template.disabled = true; + dateAxis.renderer.paddingBottom = 15; + + var valueAxis = chart.yAxes.push(new am4charts.ValueAxis()); + valueAxis.tooltip.disabled = true; + valueAxis.renderer.grid.template.disabled = true; + valueAxis.renderer.labels.template.disabled = true; + valueAxis.renderer.ticks.template.disabled = true; + + var series = chart.series.push(new am4charts.LineSeries()); + series.dataFields.dateX = 'date'; + series.dataFields.valueY = 'prices'; + series.tooltipText = 'prices: [bold]{valueY}[/]'; + series.fillOpacity = 0.1; + series.fill = am4core.color('#00cc93'); + series.stroke = am4core.color('#00cc93'); + series.tooltip.getFillFromObject = false; + series.tooltip.background.fill = am4core.color('#2a2e39'); + series.tooltip.background.stroke = am4core.color('#2a2e39'); + + chart.cursor = new am4charts.XYCursor(); + chart.cursor.lineY.opacity = 1; + dateAxis.start = 0; + dateAxis.keepSelection = true; + chart.zoomOutButton.background.fill = am4core.color( + 'rgba(255, 255, 255, 0.11)' + ); + chart.zoomOutButton.icon.stroke = am4core.color('#ebebeb'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#00cc93'); + + function generateChartData() { + var chartData = []; + // current date + var firstDate = new Date(); + // now set 500 minutes back + firstDate.setMinutes(firstDate.getDate() - 500); + + // and generate 500 data items + var prices = 500; + for (var i = 0; i < 500; i++) { + var newDate = new Date(firstDate); + // each time we add one minute + newDate.setMinutes(newDate.getMinutes() + i); + // some random number + prices += Math.round( + (Math.random() < 0.5 ? 1 : -1) * Math.random() * 10 + ); + // add data item to the array + chartData.push({ + date: newDate, + prices: prices, + }); + } + return chartData; + } + }); + } + + if (document.getElementById('marketsChartEthDark')) { + am4core.ready(function () { + // Create chart + var chart = am4core.create('marketsChartEthDark', am4charts.XYChart); + + chart.data = generateChartData(); + + var dateAxis = chart.xAxes.push(new am4charts.DateAxis()); + dateAxis.baseInterval = { + timeUnit: 'minute', + count: 1, + }; + dateAxis.tooltip.disabled = true; + dateAxis.renderer.grid.template.disabled = true; + dateAxis.renderer.labels.template.disabled = true; + dateAxis.renderer.ticks.template.disabled = true; + dateAxis.renderer.paddingBottom = 15; + + var valueAxis = chart.yAxes.push(new am4charts.ValueAxis()); + valueAxis.tooltip.disabled = true; + valueAxis.renderer.grid.template.disabled = true; + valueAxis.renderer.labels.template.disabled = true; + valueAxis.renderer.ticks.template.disabled = true; + + var series = chart.series.push(new am4charts.LineSeries()); + series.dataFields.dateX = 'date'; + series.dataFields.valueY = 'prices'; + series.tooltipText = 'prices: [bold]{valueY}[/]'; + series.fillOpacity = 0.1; + series.fill = am4core.color('#f74745'); + series.stroke = am4core.color('#f74745'); + series.tooltip.getFillFromObject = false; + series.tooltip.background.fill = am4core.color('#2a2e39'); + series.tooltip.background.stroke = am4core.color('#2a2e39'); + + chart.cursor = new am4charts.XYCursor(); + chart.cursor.lineY.opacity = 1; + dateAxis.start = 0; + dateAxis.keepSelection = true; + chart.zoomOutButton.background.fill = am4core.color( + 'rgba(255, 255, 255, 0.11)' + ); + chart.zoomOutButton.icon.stroke = am4core.color('#ebebeb'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#f74745'); + + function generateChartData() { + var chartData = []; + // current date + var firstDate = new Date(); + // now set 500 minutes back + firstDate.setMinutes(firstDate.getDate() - 500); + + // and generate 500 data items + var prices = 500; + for (var i = 0; i < 500; i++) { + var newDate = new Date(firstDate); + // each time we add one minute + newDate.setMinutes(newDate.getMinutes() + i); + // some random number + prices += Math.round( + (Math.random() < 0.5 ? 1 : -1) * Math.random() * 10 + ); + // add data item to the array + chartData.push({ + date: newDate, + prices: prices, + }); + } + return chartData; + } + }); + } + + if (document.getElementById('marketsChartLtcDark')) { + am4core.ready(function () { + // Create chart + var chart = am4core.create('marketsChartLtcDark', am4charts.XYChart); + + chart.data = generateChartData(); + + var dateAxis = chart.xAxes.push(new am4charts.DateAxis()); + dateAxis.baseInterval = { + timeUnit: 'minute', + count: 1, + }; + dateAxis.tooltip.disabled = true; + dateAxis.renderer.grid.template.disabled = true; + dateAxis.renderer.labels.template.disabled = true; + dateAxis.renderer.ticks.template.disabled = true; + dateAxis.renderer.paddingBottom = 15; + + var valueAxis = chart.yAxes.push(new am4charts.ValueAxis()); + valueAxis.tooltip.disabled = true; + valueAxis.renderer.grid.template.disabled = true; + valueAxis.renderer.labels.template.disabled = true; + valueAxis.renderer.ticks.template.disabled = true; + var series = chart.series.push(new am4charts.LineSeries()); + series.dataFields.dateX = 'date'; + series.dataFields.valueY = 'prices'; + series.tooltipText = 'prices: [bold]{valueY}[/]'; + series.fillOpacity = 0.1; + series.fill = am4core.color('#00cc93'); + series.stroke = am4core.color('#00cc93'); + series.tooltip.getFillFromObject = false; + series.tooltip.background.fill = am4core.color('#131722'); + series.tooltip.background.stroke = am4core.color('#131722'); + + chart.cursor = new am4charts.XYCursor(); + chart.cursor.lineY.opacity = 1; + dateAxis.start = 0; + dateAxis.keepSelection = true; + chart.zoomOutButton.background.fill = am4core.color( + 'rgba(255, 255, 255, 0.11)' + ); + chart.zoomOutButton.icon.stroke = am4core.color('#ebebeb'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#00cc93'); + + function generateChartData() { + var chartData = []; + // current date + var firstDate = new Date(); + // now set 500 minutes back + firstDate.setMinutes(firstDate.getDate() - 500); + + // and generate 500 data items + var prices = 500; + for (var i = 0; i < 500; i++) { + var newDate = new Date(firstDate); + // each time we add one minute + newDate.setMinutes(newDate.getMinutes() + i); + // some random number + prices += Math.round( + (Math.random() < 0.5 ? 1 : -1) * Math.random() * 10 + ); + // add data item to the array + chartData.push({ + date: newDate, + prices: prices, + }); + } + return chartData; + } + }); + } + if (document.getElementById('account-wallet-chart')) { + am4core.ready(function () { + // Create chart + var chart = am4core.create('account-wallet-chart', am4charts.XYChart); + + chart.data = generateChartData(); + + var dateAxis = chart.xAxes.push(new am4charts.DateAxis()); + dateAxis.baseInterval = { + timeUnit: 'minute', + count: 1, + }; + dateAxis.tooltip.disabled = true; + dateAxis.renderer.grid.template.disabled = true; + dateAxis.renderer.labels.template.disabled = true; + dateAxis.renderer.ticks.template.disabled = true; + dateAxis.renderer.paddingBottom = 15; + + var valueAxis = chart.yAxes.push(new am4charts.ValueAxis()); + valueAxis.tooltip.disabled = true; + valueAxis.renderer.grid.template.disabled = true; + valueAxis.renderer.labels.template.disabled = true; + valueAxis.renderer.ticks.template.disabled = true; + + var series = chart.series.push(new am4charts.LineSeries()); + series.dataFields.dateX = 'date'; + series.dataFields.valueY = 'prices'; + series.tooltipText = 'prices: [bold]{valueY}[/]'; + series.fillOpacity = 0.1; + series.fill = am4core.color('#007bff'); + series.stroke = am4core.color('#007bff'); + series.tooltip.getFillFromObject = false; + series.tooltip.background.fill = am4core.color('#2a2e39'); + series.tooltip.background.stroke = am4core.color('#2a2e39'); + + chart.cursor = new am4charts.XYCursor(); + chart.cursor.lineY.opacity = 1; + dateAxis.start = 0; + dateAxis.keepSelection = true; + chart.zoomOutButton.background.fill = am4core.color( + 'rgba(0, 0, 0, 0.09)' + ); + chart.zoomOutButton.icon.stroke = am4core.color('rgba(0, 0, 0, 0.40)'); + chart.zoomOutButton.background.states.getKey( + 'hover' + ).properties.fill = am4core.color('#00cc93'); + + function generateChartData() { + var chartData = []; + // current date + var firstDate = new Date(); + // now set 500 minutes back + firstDate.setMinutes(firstDate.getDate() - 500); + + // and generate 500 data items + var prices = 500; + for (var i = 0; i < 500; i++) { + var newDate = new Date(firstDate); + // each time we add one minute + newDate.setMinutes(newDate.getMinutes() + i); + // some random number + prices += Math.round( + (Math.random() < 0.5 ? 1 : -1) * Math.random() * 10 + ); + // add data item to the array + chartData.push({ + date: newDate, + prices: prices, + }); + } + return chartData; + } + }); + } + // make tr linkable + $('.markets-pair-list tr').click(function () { + window.location = $(this).data('href'); + }); + + // click to full screen + function toggleFullscreen(elem) { + elem = elem || document.documentElement; + if ( + !document.fullscreenElement && + !document.mozFullScreenElement && + !document.webkitFullscreenElement && + !document.msFullscreenElement + ) { + if (elem.requestFullscreen) { + elem.requestFullscreen(); + } else if (elem.msRequestFullscreen) { + elem.msRequestFullscreen(); + } else if (elem.mozRequestFullScreen) { + elem.mozRequestFullScreen(); + } else if (elem.webkitRequestFullscreen) { + elem.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); + } + } else { + if (document.exitFullscreen) { + document.exitFullscreen(); + } else if (document.msExitFullscreen) { + document.msExitFullscreen(); + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } else if (document.webkitExitFullscreen) { + document.webkitExitFullscreen(); + } + } + } + $('#clickFullscreen').on('click', function () { + toggleFullscreen(); + }); + + // data for market chart + var optionsForIndiv = { + bezierCurve: true, + legend: { + display: false, + }, + scales: { + xAxes: [ + { + gridLines: { + display: false, + drawBorder: false, + }, + ticks: { + display: false, + }, + }, + ], + yAxes: [ + { + gridLines: { + display: false, + drawBorder: false, + }, + ticks: { + display: false, + beginAtZero: true, + }, + }, + ], + }, + elements: { + point: { + radius: 0, + }, + }, + }; + + // for market line chart + var chartsIndiv = document.getElementsByClassName('markets-capital-chart'); + if (chartsIndiv.length > 0) { + for (let chart of chartsIndiv) { + let data = JSON.parse(chart.dataset.charts); + let bg = chart.dataset.bg; + let border = chart.dataset.border; + + let canvas = chart.querySelector('canvas'); + let ctx = canvas.getContext('2d'); + + var gradient = ctx.createLinearGradient(255, 35, 19, 255); + gradient.addColorStop(0.1, bg); + gradient.addColorStop(1, 'transparent'); + let lineChartData = { + labels: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'], + datasets: [ + { + backgroundColor: gradient, + borderColor: '#' + border, + borderWidth: 2, + data: data, + bezierCurve: true, + }, + ], + }; + new Chart(ctx, { + type: 'line', + data: lineChartData, + options: optionsForIndiv, + }); + } + } + + var chartsIndiv = document.getElementsByClassName( + 'markets-capital-chart-bar' + ); + if (chartsIndiv.length > 0) { + for (let chart of chartsIndiv) { + let data = JSON.parse(chart.dataset.charts); + let bg = chart.dataset.bg; + let border = chart.dataset.border; + + let canvas = chart.querySelector('canvas'); + let ctx = canvas.getContext('2d'); + + var gradient = ctx.createLinearGradient(255, 35, 19, 255); + gradient.addColorStop(0.3, bg); + gradient.addColorStop(1, 'transparent'); + let lineChartData = { + labels: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'], + datasets: [ + { + backgroundColor: gradient, + borderColor: '#' + border, + borderWidth: 2, + data: data, + bezierCurve: true, + }, + ], + }; + new Chart(ctx, { + type: 'bar', + data: lineChartData, + options: optionsForIndiv, + }); + } + } +})(jQuery); diff --git a/static/libs/Chart.bundle.min.js b/static/libs/Chart.bundle.min.js new file mode 100644 index 0000000..55d9eb0 --- /dev/null +++ b/static/libs/Chart.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * Chart.js v2.9.3 + * https://www.chartjs.org + * (c) 2019 Chart.js Contributors + * Released under the MIT License + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Chart=e()}(this,(function(){"use strict";"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function t(){throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs")}function e(t,e){return t(e={exports:{}},e.exports),e.exports}var n={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},i=e((function(t){var e={};for(var i in n)n.hasOwnProperty(i)&&(e[n[i]]=i);var a=t.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var r in a)if(a.hasOwnProperty(r)){if(!("channels"in a[r]))throw new Error("missing channels property: "+r);if(!("labels"in a[r]))throw new Error("missing channel labels property: "+r);if(a[r].labels.length!==a[r].channels)throw new Error("channel and label counts mismatch: "+r);var o=a[r].channels,s=a[r].labels;delete a[r].channels,delete a[r].labels,Object.defineProperty(a[r],"channels",{value:o}),Object.defineProperty(a[r],"labels",{value:s})}a.rgb.hsl=function(t){var e,n,i=t[0]/255,a=t[1]/255,r=t[2]/255,o=Math.min(i,a,r),s=Math.max(i,a,r),l=s-o;return s===o?e=0:i===s?e=(a-r)/l:a===s?e=2+(r-i)/l:r===s&&(e=4+(i-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),n=(o+s)/2,[e,100*(s===o?0:n<=.5?l/(s+o):l/(2-s-o)),100*n]},a.rgb.hsv=function(t){var e,n,i,a,r,o=t[0]/255,s=t[1]/255,l=t[2]/255,u=Math.max(o,s,l),d=u-Math.min(o,s,l),h=function(t){return(u-t)/6/d+.5};return 0===d?a=r=0:(r=d/u,e=h(o),n=h(s),i=h(l),o===u?a=i-n:s===u?a=1/3+e-i:l===u&&(a=2/3+n-e),a<0?a+=1:a>1&&(a-=1)),[360*a,100*r,100*u]},a.rgb.hwb=function(t){var e=t[0],n=t[1],i=t[2];return[a.rgb.hsl(t)[0],100*(1/255*Math.min(e,Math.min(n,i))),100*(i=1-1/255*Math.max(e,Math.max(n,i)))]},a.rgb.cmyk=function(t){var e,n=t[0]/255,i=t[1]/255,a=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-i,1-a)))/(1-e)||0),100*((1-i-e)/(1-e)||0),100*((1-a-e)/(1-e)||0),100*e]},a.rgb.keyword=function(t){var i=e[t];if(i)return i;var a,r,o,s=1/0;for(var l in n)if(n.hasOwnProperty(l)){var u=n[l],d=(r=t,o=u,Math.pow(r[0]-o[0],2)+Math.pow(r[1]-o[1],2)+Math.pow(r[2]-o[2],2));d.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)),100*(.2126*e+.7152*n+.0722*i),100*(.0193*e+.1192*n+.9505*i)]},a.rgb.lab=function(t){var e=a.rgb.xyz(t),n=e[0],i=e[1],r=e[2];return i/=100,r/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(n-i),200*(i-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]},a.hsl.rgb=function(t){var e,n,i,a,r,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0===s)return[r=255*l,r,r];e=2*l-(n=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var u=0;u<3;u++)(i=o+1/3*-(u-1))<0&&i++,i>1&&i--,r=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+(n-e)*(2/3-i)*6:e,a[u]=255*r;return a},a.hsl.hsv=function(t){var e=t[0],n=t[1]/100,i=t[2]/100,a=n,r=Math.max(i,.01);return n*=(i*=2)<=1?i:2-i,a*=r<=1?r:2-r,[e,100*(0===i?2*a/(r+a):2*n/(i+n)),100*((i+n)/2)]},a.hsv.rgb=function(t){var e=t[0]/60,n=t[1]/100,i=t[2]/100,a=Math.floor(e)%6,r=e-Math.floor(e),o=255*i*(1-n),s=255*i*(1-n*r),l=255*i*(1-n*(1-r));switch(i*=255,a){case 0:return[i,l,o];case 1:return[s,i,o];case 2:return[o,i,l];case 3:return[o,s,i];case 4:return[l,o,i];case 5:return[i,o,s]}},a.hsv.hsl=function(t){var e,n,i,a=t[0],r=t[1]/100,o=t[2]/100,s=Math.max(o,.01);return i=(2-r)*o,n=r*s,[a,100*(n=(n/=(e=(2-r)*s)<=1?e:2-e)||0),100*(i/=2)]},a.hwb.rgb=function(t){var e,n,i,a,r,o,s,l=t[0]/360,u=t[1]/100,d=t[2]/100,h=u+d;switch(h>1&&(u/=h,d/=h),i=6*l-(e=Math.floor(6*l)),0!=(1&e)&&(i=1-i),a=u+i*((n=1-d)-u),e){default:case 6:case 0:r=n,o=a,s=u;break;case 1:r=a,o=n,s=u;break;case 2:r=u,o=n,s=a;break;case 3:r=u,o=a,s=n;break;case 4:r=a,o=u,s=n;break;case 5:r=n,o=u,s=a}return[255*r,255*o,255*s]},a.cmyk.rgb=function(t){var e=t[0]/100,n=t[1]/100,i=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a)),255*(1-Math.min(1,i*(1-a)+a))]},a.xyz.rgb=function(t){var e,n,i,a=t[0]/100,r=t[1]/100,o=t[2]/100;return n=-.9689*a+1.8758*r+.0415*o,i=.0557*a+-.204*r+1.057*o,e=(e=3.2406*a+-1.5372*r+-.4986*o)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:12.92*i,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(i=Math.min(Math.max(0,i),1))]},a.xyz.lab=function(t){var e=t[0],n=t[1],i=t[2];return n/=100,i/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116))]},a.lab.xyz=function(t){var e,n,i,a=t[0];e=t[1]/500+(n=(a+16)/116),i=n-t[2]/200;var r=Math.pow(n,3),o=Math.pow(e,3),s=Math.pow(i,3);return n=r>.008856?r:(n-16/116)/7.787,e=o>.008856?o:(e-16/116)/7.787,i=s>.008856?s:(i-16/116)/7.787,[e*=95.047,n*=100,i*=108.883]},a.lab.lch=function(t){var e,n=t[0],i=t[1],a=t[2];return(e=360*Math.atan2(a,i)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(i*i+a*a),e]},a.lch.lab=function(t){var e,n=t[0],i=t[1];return e=t[2]/360*2*Math.PI,[n,i*Math.cos(e),i*Math.sin(e)]},a.rgb.ansi16=function(t){var e=t[0],n=t[1],i=t[2],r=1 in arguments?arguments[1]:a.rgb.hsv(t)[2];if(0===(r=Math.round(r/50)))return 30;var o=30+(Math.round(i/255)<<2|Math.round(n/255)<<1|Math.round(e/255));return 2===r&&(o+=60),o},a.hsv.ansi16=function(t){return a.rgb.ansi16(a.hsv.rgb(t),t[2])},a.rgb.ansi256=function(t){var e=t[0],n=t[1],i=t[2];return e===n&&n===i?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(i/255*5)},a.ansi16.rgb=function(t){var e=t%10;if(0===e||7===e)return t>50&&(e+=3.5),[e=e/10.5*255,e,e];var n=.5*(1+~~(t>50));return[(1&e)*n*255,(e>>1&1)*n*255,(e>>2&1)*n*255]},a.ansi256.rgb=function(t){if(t>=232){var e=10*(t-232)+8;return[e,e,e]}var n;return t-=16,[Math.floor(t/36)/5*255,Math.floor((n=t%36)/6)/5*255,n%6/5*255]},a.rgb.hex=function(t){var e=(((255&Math.round(t[0]))<<16)+((255&Math.round(t[1]))<<8)+(255&Math.round(t[2]))).toString(16).toUpperCase();return"000000".substring(e.length)+e},a.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var n=e[0];3===e[0].length&&(n=n.split("").map((function(t){return t+t})).join(""));var i=parseInt(n,16);return[i>>16&255,i>>8&255,255&i]},a.rgb.hcg=function(t){var e,n=t[0]/255,i=t[1]/255,a=t[2]/255,r=Math.max(Math.max(n,i),a),o=Math.min(Math.min(n,i),a),s=r-o;return e=s<=0?0:r===n?(i-a)/s%6:r===i?2+(a-n)/s:4+(n-i)/s+4,e/=6,[360*(e%=1),100*s,100*(s<1?o/(1-s):0)]},a.hsl.hcg=function(t){var e=t[1]/100,n=t[2]/100,i=1,a=0;return(i=n<.5?2*e*n:2*e*(1-n))<1&&(a=(n-.5*i)/(1-i)),[t[0],100*i,100*a]},a.hsv.hcg=function(t){var e=t[1]/100,n=t[2]/100,i=e*n,a=0;return i<1&&(a=(n-i)/(1-i)),[t[0],100*i,100*a]},a.hcg.rgb=function(t){var e=t[0]/360,n=t[1]/100,i=t[2]/100;if(0===n)return[255*i,255*i,255*i];var a,r=[0,0,0],o=e%1*6,s=o%1,l=1-s;switch(Math.floor(o)){case 0:r[0]=1,r[1]=s,r[2]=0;break;case 1:r[0]=l,r[1]=1,r[2]=0;break;case 2:r[0]=0,r[1]=1,r[2]=s;break;case 3:r[0]=0,r[1]=l,r[2]=1;break;case 4:r[0]=s,r[1]=0,r[2]=1;break;default:r[0]=1,r[1]=0,r[2]=l}return a=(1-n)*i,[255*(n*r[0]+a),255*(n*r[1]+a),255*(n*r[2]+a)]},a.hcg.hsv=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e),i=0;return n>0&&(i=e/n),[t[0],100*i,100*n]},a.hcg.hsl=function(t){var e=t[1]/100,n=t[2]/100*(1-e)+.5*e,i=0;return n>0&&n<.5?i=e/(2*n):n>=.5&&n<1&&(i=e/(2*(1-n))),[t[0],100*i,100*n]},a.hcg.hwb=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e);return[t[0],100*(n-e),100*(1-n)]},a.hwb.hcg=function(t){var e=t[1]/100,n=1-t[2]/100,i=n-e,a=0;return i<1&&(a=(n-i)/(1-i)),[t[0],100*i,100*a]},a.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},a.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},a.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},a.gray.hsl=a.gray.hsv=function(t){return[0,0,t[0]]},a.gray.hwb=function(t){return[0,100,t[0]]},a.gray.cmyk=function(t){return[0,0,0,t[0]]},a.gray.lab=function(t){return[t[0],0,0]},a.gray.hex=function(t){var e=255&Math.round(t[0]/100*255),n=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(n.length)+n},a.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}}));i.rgb,i.hsl,i.hsv,i.hwb,i.cmyk,i.xyz,i.lab,i.lch,i.hex,i.keyword,i.ansi16,i.ansi256,i.hcg,i.apple,i.gray;function a(t){var e=function(){for(var t={},e=Object.keys(i),n=e.length,a=0;a1&&(e=Array.prototype.slice.call(arguments));var n=t(e);if("object"==typeof n)for(var i=n.length,a=0;a1&&(e=Array.prototype.slice.call(arguments)),t(e))};return"conversion"in t&&(e.conversion=t.conversion),e}(i)}))}));var l=s,u={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},d={getRgba:h,getHsla:c,getRgb:function(t){var e=h(t);return e&&e.slice(0,3)},getHsl:function(t){var e=c(t);return e&&e.slice(0,3)},getHwb:f,getAlpha:function(t){var e=h(t);if(e)return e[3];if(e=c(t))return e[3];if(e=f(t))return e[3]},hexString:function(t,e){e=void 0!==e&&3===t.length?e:t[3];return"#"+b(t[0])+b(t[1])+b(t[2])+(e>=0&&e<1?b(Math.round(255*e)):"")},rgbString:function(t,e){if(e<1||t[3]&&t[3]<1)return g(t,e);return"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:g,percentString:function(t,e){if(e<1||t[3]&&t[3]<1)return m(t,e);var n=Math.round(t[0]/255*100),i=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return"rgb("+n+"%, "+i+"%, "+a+"%)"},percentaString:m,hslString:function(t,e){if(e<1||t[3]&&t[3]<1)return p(t,e);return"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:p,hwbString:function(t,e){void 0===e&&(e=void 0!==t[3]?t[3]:1);return"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return y[t.slice(0,3)]}};function h(t){if(t){var e=[0,0,0],n=1,i=t.match(/^#([a-fA-F0-9]{3,4})$/i),a="";if(i){a=(i=i[1])[3];for(var r=0;rn?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues("hsl",e),this},mix:function(t,e){var n=t,i=void 0===e?.5:e,a=2*i-1,r=this.alpha()-n.alpha(),o=((a*r==-1?a:(a+r)/(1+a*r))+1)/2,s=1-o;return this.rgb(o*this.red()+s*n.red(),o*this.green()+s*n.green(),o*this.blue()+s*n.blue()).alpha(this.alpha()*i+n.alpha()*(1-i))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new _,i=this.values,a=n.values;for(var r in i)i.hasOwnProperty(r)&&(t=i[r],"[object Array]"===(e={}.toString.call(t))?a[r]=t.slice(0):"[object Number]"===e?a[r]=t:console.error("unexpected color value:",t));return n}},_.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},_.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},_.prototype.getValues=function(t){for(var e=this.values,n={},i=0;i=0;a--)e.call(n,t[a],a);else for(a=0;a=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),t<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-D.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*D.easeInBounce(2*t):.5*D.easeOutBounce(2*t-1)+.5}},C={effects:D};S.easingEffects=D;var P=Math.PI,T=P/180,O=2*P,A=P/2,F=P/4,I=2*P/3,L={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,i,a,r){if(r){var o=Math.min(r,a/2,i/2),s=e+o,l=n+o,u=e+i-o,d=n+a-o;t.moveTo(e,l),se.left-1e-6&&t.xe.top-1e-6&&t.y0&&this.requestAnimationFrame()},advance:function(){for(var t,e,n,i,a=this.animations,r=0;r=n?(H.callback(t.onAnimationComplete,[t],e),e.animating=!1,a.splice(r,1)):++r}},Q=H.options.resolve,tt=["push","pop","shift","splice","unshift"];function et(t,e){var n=t._chartjs;if(n){var i=n.listeners,a=i.indexOf(e);-1!==a&&i.splice(a,1),i.length>0||(tt.forEach((function(e){delete t[e]})),delete t._chartjs)}}var nt=function(t,e){this.initialize(t,e)};H.extend(nt.prototype,{datasetElementType:null,dataElementType:null,_datasetElementOptions:["backgroundColor","borderCapStyle","borderColor","borderDash","borderDashOffset","borderJoinStyle","borderWidth"],_dataElementOptions:["backgroundColor","borderColor","borderWidth","pointStyle"],initialize:function(t,e){var n=this;n.chart=t,n.index=e,n.linkScales(),n.addElements(),n._type=n.getMeta().type},updateIndex:function(t){this.index=t},linkScales:function(){var t=this.getMeta(),e=this.chart,n=e.scales,i=this.getDataset(),a=e.options.scales;null!==t.xAxisID&&t.xAxisID in n&&!i.xAxisID||(t.xAxisID=i.xAxisID||a.xAxes[0].id),null!==t.yAxisID&&t.yAxisID in n&&!i.yAxisID||(t.yAxisID=i.yAxisID||a.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this._update(!0)},destroy:function(){this._data&&et(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,n=this.getMeta(),i=this.getDataset().data||[],a=n.data;for(t=0,e=i.length;tn&&this.insertElements(n,i-n)},insertElements:function(t,e){for(var n=0;na?(r=a/e.innerRadius,t.arc(o,s,e.innerRadius-a,i+r,n-r,!0)):t.arc(o,s,a,i+Math.PI/2,n-Math.PI/2),t.closePath(),t.clip()}function ot(t,e,n){var i="inner"===e.borderAlign;i?(t.lineWidth=2*e.borderWidth,t.lineJoin="round"):(t.lineWidth=e.borderWidth,t.lineJoin="bevel"),n.fullCircles&&function(t,e,n,i){var a,r=n.endAngle;for(i&&(n.endAngle=n.startAngle+at,rt(t,n),n.endAngle=r,n.endAngle===n.startAngle&&n.fullCircles&&(n.endAngle+=at,n.fullCircles--)),t.beginPath(),t.arc(n.x,n.y,n.innerRadius,n.startAngle+at,n.startAngle,!0),a=0;as;)a-=at;for(;a=o&&a<=s,u=r>=n.innerRadius&&r<=n.outerRadius;return l&&u}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t,e=this._chart.ctx,n=this._view,i="inner"===n.borderAlign?.33:0,a={x:n.x,y:n.y,innerRadius:n.innerRadius,outerRadius:Math.max(n.outerRadius-i,0),pixelMargin:i,startAngle:n.startAngle,endAngle:n.endAngle,fullCircles:Math.floor(n.circumference/at)};if(e.save(),e.fillStyle=n.backgroundColor,e.strokeStyle=n.borderColor,a.fullCircles){for(a.endAngle=a.startAngle+at,e.beginPath(),e.arc(a.x,a.y,a.outerRadius,a.startAngle,a.endAngle),e.arc(a.x,a.y,a.innerRadius,a.endAngle,a.startAngle,!0),e.closePath(),t=0;tt.x&&(e=bt(e,"left","right")):t.basen?n:i,r:l.right||a<0?0:a>e?e:a,b:l.bottom||r<0?0:r>n?n:r,l:l.left||o<0?0:o>e?e:o}}function xt(t,e,n){var i=null===e,a=null===n,r=!(!t||i&&a)&&vt(t);return r&&(i||e>=r.left&&e<=r.right)&&(a||n>=r.top&&n<=r.bottom)}W._set("global",{elements:{rectangle:{backgroundColor:mt,borderColor:mt,borderSkipped:"bottom",borderWidth:0}}});var _t=$.extend({_type:"rectangle",draw:function(){var t=this._chart.ctx,e=this._view,n=function(t){var e=vt(t),n=e.right-e.left,i=e.bottom-e.top,a=yt(t,n/2,i/2);return{outer:{x:e.left,y:e.top,w:n,h:i},inner:{x:e.left+a.l,y:e.top+a.t,w:n-a.l-a.r,h:i-a.t-a.b}}}(e),i=n.outer,a=n.inner;t.fillStyle=e.backgroundColor,t.fillRect(i.x,i.y,i.w,i.h),i.w===a.w&&i.h===a.h||(t.save(),t.beginPath(),t.rect(i.x,i.y,i.w,i.h),t.clip(),t.fillStyle=e.borderColor,t.rect(a.x,a.y,a.w,a.h),t.fill("evenodd"),t.restore())},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){return xt(this._view,t,e)},inLabelRange:function(t,e){var n=this._view;return pt(n)?xt(n,t,null):xt(n,null,e)},inXRange:function(t){return xt(this._view,t,null)},inYRange:function(t){return xt(this._view,null,t)},getCenterPoint:function(){var t,e,n=this._view;return pt(n)?(t=n.x,e=(n.y+n.base)/2):(t=(n.x+n.base)/2,e=n.y),{x:t,y:e}},getArea:function(){var t=this._view;return pt(t)?t.width*Math.abs(t.y-t.base):t.height*Math.abs(t.x-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}}),wt={},kt=st,Mt=dt,St=gt,Dt=_t;wt.Arc=kt,wt.Line=Mt,wt.Point=St,wt.Rectangle=Dt;var Ct=H._deprecated,Pt=H.valueOrDefault;function Tt(t,e,n){var i,a,r=n.barThickness,o=e.stackCount,s=e.pixels[t],l=H.isNullOrUndef(r)?function(t,e){var n,i,a,r,o=t._length;for(a=1,r=e.length;a0?Math.min(o,Math.abs(i-n)):o,n=i;return o}(e.scale,e.pixels):-1;return H.isNullOrUndef(r)?(i=l*n.categoryPercentage,a=n.barPercentage):(i=r*o,a=1),{chunk:i/o,ratio:a,start:s-i/2}}W._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),W._set("global",{datasets:{bar:{categoryPercentage:.8,barPercentage:.9}}});var Ot=it.extend({dataElementType:wt.Rectangle,_dataElementOptions:["backgroundColor","borderColor","borderSkipped","borderWidth","barPercentage","barThickness","categoryPercentage","maxBarThickness","minBarLength"],initialize:function(){var t,e,n=this;it.prototype.initialize.apply(n,arguments),(t=n.getMeta()).stack=n.getDataset().stack,t.bar=!0,e=n._getIndexScale().options,Ct("bar chart",e.barPercentage,"scales.[x/y]Axes.barPercentage","dataset.barPercentage"),Ct("bar chart",e.barThickness,"scales.[x/y]Axes.barThickness","dataset.barThickness"),Ct("bar chart",e.categoryPercentage,"scales.[x/y]Axes.categoryPercentage","dataset.categoryPercentage"),Ct("bar chart",n._getValueScale().options.minBarLength,"scales.[x/y]Axes.minBarLength","dataset.minBarLength"),Ct("bar chart",e.maxBarThickness,"scales.[x/y]Axes.maxBarThickness","dataset.maxBarThickness")},update:function(t){var e,n,i=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,n=i.length;e=0&&m.min>=0?m.min:m.max,x=void 0===m.start?m.end:m.max>=0&&m.min>=0?m.max-m.min:m.min-m.max,_=g.length;if(v||void 0===v&&void 0!==b)for(i=0;i<_&&(a=g[i]).index!==t;++i)a.stack===b&&(r=void 0===(u=h._parseValue(f[a.index].data[e])).start?u.end:u.min>=0&&u.max>=0?u.max:u.min,(m.min<0&&r<0||m.max>=0&&r>0)&&(y+=r));return o=h.getPixelForValue(y),l=(s=h.getPixelForValue(y+x))-o,void 0!==p&&Math.abs(l)=0&&!c||x<0&&c?o-p:o+p),{size:l,base:o,head:s,center:s+l/2}},calculateBarIndexPixels:function(t,e,n,i){var a="flex"===i.barThickness?function(t,e,n){var i,a=e.pixels,r=a[t],o=t>0?a[t-1]:null,s=t=Rt?-Nt:b<-Rt?Nt:0)+p,x=Math.cos(b),_=Math.sin(b),w=Math.cos(y),k=Math.sin(y),M=b<=0&&y>=0||y>=Nt,S=b<=Wt&&y>=Wt||y>=Nt+Wt,D=b<=-Wt&&y>=-Wt||y>=Rt+Wt,C=b===-Rt||y>=Rt?-1:Math.min(x,x*m,w,w*m),P=D?-1:Math.min(_,_*m,k,k*m),T=M?1:Math.max(x,x*m,w,w*m),O=S?1:Math.max(_,_*m,k,k*m);u=(T-C)/2,d=(O-P)/2,h=-(T+C)/2,c=-(O+P)/2}for(i=0,a=g.length;i0&&!isNaN(t)?Nt*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){var e,n,i,a,r,o,s,l,u=0,d=this.chart;if(!t)for(e=0,n=d.data.datasets.length;e(u=s>u?s:u)?l:u);return u},setHoverStyle:function(t){var e=t._model,n=t._options,i=H.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=Lt(n.hoverBackgroundColor,i(n.backgroundColor)),e.borderColor=Lt(n.hoverBorderColor,i(n.borderColor)),e.borderWidth=Lt(n.hoverBorderWidth,n.borderWidth)},_getRingWeightOffset:function(t){for(var e=0,n=0;n0&&Ht(l[t-1]._model,s)&&(n.controlPointPreviousX=u(n.controlPointPreviousX,s.left,s.right),n.controlPointPreviousY=u(n.controlPointPreviousY,s.top,s.bottom)),t0&&(r=t.getDatasetMeta(r[0]._datasetIndex).data),r},"x-axis":function(t,e){return ae(t,e,{intersect:!1})},point:function(t,e){return ee(t,Qt(e,t))},nearest:function(t,e,n){var i=Qt(e,t);n.axis=n.axis||"xy";var a=ie(n.axis);return ne(t,i,n.intersect,a)},x:function(t,e,n){var i=Qt(e,t),a=[],r=!1;return te(t,(function(t){t.inXRange(i.x)&&a.push(t),t.inRange(i.x,i.y)&&(r=!0)})),n.intersect&&!r&&(a=[]),a},y:function(t,e,n){var i=Qt(e,t),a=[],r=!1;return te(t,(function(t){t.inYRange(i.y)&&a.push(t),t.inRange(i.x,i.y)&&(r=!0)})),n.intersect&&!r&&(a=[]),a}}},oe=H.extend;function se(t,e){return H.where(t,(function(t){return t.pos===e}))}function le(t,e){return t.sort((function(t,n){var i=e?n:t,a=e?t:n;return i.weight===a.weight?i.index-a.index:i.weight-a.weight}))}function ue(t,e,n,i){return Math.max(t[n],e[n])+Math.max(t[i],e[i])}function de(t,e,n){var i,a,r=n.box,o=t.maxPadding;if(n.size&&(t[n.pos]-=n.size),n.size=n.horizontal?r.height:r.width,t[n.pos]+=n.size,r.getPadding){var s=r.getPadding();o.top=Math.max(o.top,s.top),o.left=Math.max(o.left,s.left),o.bottom=Math.max(o.bottom,s.bottom),o.right=Math.max(o.right,s.right)}if(i=e.outerWidth-ue(o,t,"left","right"),a=e.outerHeight-ue(o,t,"top","bottom"),i!==t.w||a!==t.h)return t.w=i,t.h=a,n.horizontal?i!==t.w:a!==t.h}function he(t,e){var n=e.maxPadding;function i(t){var i={left:0,top:0,right:0,bottom:0};return t.forEach((function(t){i[t]=Math.max(e[t],n[t])})),i}return i(t?["left","right"]:["top","bottom"])}function ce(t,e,n){var i,a,r,o,s,l,u=[];for(i=0,a=t.length;idiv{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0}"}))&&ge.default||ge,ve="$chartjs",be="chartjs-size-monitor",ye="chartjs-render-monitor",xe="chartjs-render-animation",_e=["animationstart","webkitAnimationStart"],we={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function ke(t,e){var n=H.getStyle(t,e),i=n&&n.match(/^(\d+)(\.\d+)?px$/);return i?Number(i[1]):void 0}var Me=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(t){}return t}()&&{passive:!0};function Se(t,e,n){t.addEventListener(e,n,Me)}function De(t,e,n){t.removeEventListener(e,n,Me)}function Ce(t,e,n,i,a){return{type:t,chart:e,native:a||null,x:void 0!==n?n:null,y:void 0!==i?i:null}}function Pe(t){var e=document.createElement("div");return e.className=t||"",e}function Te(t,e,n){var i,a,r,o,s=t[ve]||(t[ve]={}),l=s.resizer=function(t){var e=Pe(be),n=Pe(be+"-expand"),i=Pe(be+"-shrink");n.appendChild(Pe()),i.appendChild(Pe()),e.appendChild(n),e.appendChild(i),e._reset=function(){n.scrollLeft=1e6,n.scrollTop=1e6,i.scrollLeft=1e6,i.scrollTop=1e6};var a=function(){e._reset(),t()};return Se(n,"scroll",a.bind(n,"expand")),Se(i,"scroll",a.bind(i,"shrink")),e}((i=function(){if(s.resizer){var i=n.options.maintainAspectRatio&&t.parentNode,a=i?i.clientWidth:0;e(Ce("resize",n)),i&&i.clientWidth0){var r=t[0];r.label?n=r.label:r.xLabel?n=r.xLabel:a>0&&r.index-1?t.split("\n"):t}function Ve(t){var e=W.global;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,rtl:t.rtl,textDirection:t.textDirection,bodyFontColor:t.bodyFontColor,_bodyFontFamily:Ne(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:Ne(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:Ne(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:Ne(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:Ne(t.titleFontStyle,e.defaultFontStyle),titleFontSize:Ne(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:Ne(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:Ne(t.footerFontStyle,e.defaultFontStyle),footerFontSize:Ne(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function He(t,e){return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-t.xPadding:t.x+t.xPadding}function Be(t){return ze([],Ee(t))}var je=$.extend({initialize:function(){this._model=Ve(this._options),this._lastActive=[]},getTitle:function(){var t=this,e=t._options,n=e.callbacks,i=n.beforeTitle.apply(t,arguments),a=n.title.apply(t,arguments),r=n.afterTitle.apply(t,arguments),o=[];return o=ze(o,Ee(i)),o=ze(o,Ee(a)),o=ze(o,Ee(r))},getBeforeBody:function(){return Be(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var n=this,i=n._options.callbacks,a=[];return H.each(t,(function(t){var r={before:[],lines:[],after:[]};ze(r.before,Ee(i.beforeLabel.call(n,t,e))),ze(r.lines,i.label.call(n,t,e)),ze(r.after,Ee(i.afterLabel.call(n,t,e))),a.push(r)})),a},getAfterBody:function(){return Be(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this,e=t._options.callbacks,n=e.beforeFooter.apply(t,arguments),i=e.footer.apply(t,arguments),a=e.afterFooter.apply(t,arguments),r=[];return r=ze(r,Ee(n)),r=ze(r,Ee(i)),r=ze(r,Ee(a))},update:function(t){var e,n,i,a,r,o,s,l,u,d,h=this,c=h._options,f=h._model,g=h._model=Ve(c),m=h._active,p=h._data,v={xAlign:f.xAlign,yAlign:f.yAlign},b={x:f.x,y:f.y},y={width:f.width,height:f.height},x={x:f.caretX,y:f.caretY};if(m.length){g.opacity=1;var _=[],w=[];x=Ye[c.position].call(h,m,h._eventPosition);var k=[];for(e=0,n=m.length;ei.width&&(a=i.width-e.width),a<0&&(a=0)),"top"===d?r+=h:r-="bottom"===d?e.height+h:e.height/2,"center"===d?"left"===u?a+=h:"right"===u&&(a-=h):"left"===u?a-=c:"right"===u&&(a+=c),{x:a,y:r}}(g,y,v=function(t,e){var n,i,a,r,o,s=t._model,l=t._chart,u=t._chart.chartArea,d="center",h="center";s.yl.height-e.height&&(h="bottom");var c=(u.left+u.right)/2,f=(u.top+u.bottom)/2;"center"===h?(n=function(t){return t<=c},i=function(t){return t>c}):(n=function(t){return t<=e.width/2},i=function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},r=function(t){return t-e.width-s.caretSize-s.caretPadding<0},o=function(t){return t<=f?"top":"bottom"},n(s.x)?(d="left",a(s.x)&&(d="center",h=o(s.y))):i(s.x)&&(d="right",r(s.x)&&(d="center",h=o(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:h}}(this,y),h._chart)}else g.opacity=0;return g.xAlign=v.xAlign,g.yAlign=v.yAlign,g.x=b.x,g.y=b.y,g.width=y.width,g.height=y.height,g.caretX=x.x,g.caretY=x.y,h._model=g,t&&c.custom&&c.custom.call(h,g),h},drawCaret:function(t,e){var n=this._chart.ctx,i=this._view,a=this.getCaretPosition(t,e,i);n.lineTo(a.x1,a.y1),n.lineTo(a.x2,a.y2),n.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,n){var i,a,r,o,s,l,u=n.caretSize,d=n.cornerRadius,h=n.xAlign,c=n.yAlign,f=t.x,g=t.y,m=e.width,p=e.height;if("center"===c)s=g+p/2,"left"===h?(a=(i=f)-u,r=i,o=s+u,l=s-u):(a=(i=f+m)+u,r=i,o=s-u,l=s+u);else if("left"===h?(i=(a=f+d+u)-u,r=a+u):"right"===h?(i=(a=f+m-d-u)-u,r=a+u):(i=(a=n.caretX)-u,r=a+u),"top"===c)s=(o=g)-u,l=o;else{s=(o=g+p)+u,l=o;var v=r;r=i,i=v}return{x1:i,x2:a,x3:r,y1:o,y2:s,y3:l}},drawTitle:function(t,e,n){var i,a,r,o=e.title,s=o.length;if(s){var l=We(e.rtl,e.x,e.width);for(t.x=He(e,e._titleAlign),n.textAlign=l.textAlign(e._titleAlign),n.textBaseline="middle",i=e.titleFontSize,a=e.titleSpacing,n.fillStyle=e.titleFontColor,n.font=H.fontString(i,e._titleFontStyle,e._titleFontFamily),r=0;r0&&n.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},i={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,r=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&r&&(t.save(),t.globalAlpha=a,this.drawBackground(i,e,t,n),i.y+=e.yPadding,H.rtl.overrideTextDirection(t,e.textDirection),this.drawTitle(i,e,t),this.drawBody(i,e,t),this.drawFooter(i,e,t),H.rtl.restoreTextDirection(t,e.textDirection),t.restore())}},handleEvent:function(t){var e,n=this,i=n._options;return n._lastActive=n._lastActive||[],"mouseout"===t.type?n._active=[]:(n._active=n._chart.getElementsAtEventForMode(t,i.mode,i),i.reverse&&n._active.reverse()),(e=!H.arrayEquals(n._active,n._lastActive))&&(n._lastActive=n._active,(i.enabled||i.custom)&&(n._eventPosition={x:t.x,y:t.y},n.update(!0),n.pivot())),e}}),Ue=Ye,Ge=je;Ge.positioners=Ue;var qe=H.valueOrDefault;function Ze(){return H.merge({},[].slice.call(arguments),{merger:function(t,e,n,i){if("xAxes"===t||"yAxes"===t){var a,r,o,s=n[t].length;for(e[t]||(e[t]=[]),a=0;a=e[t].length&&e[t].push({}),!e[t][a].type||o.type&&o.type!==e[t][a].type?H.merge(e[t][a],[Re.getScaleDefaults(r),o]):H.merge(e[t][a],o)}else H._merger(t,e,n,i)}})}function $e(){return H.merge({},[].slice.call(arguments),{merger:function(t,e,n,i){var a=e[t]||{},r=n[t];"scales"===t?e[t]=Ze(a,r):"scale"===t?e[t]=H.merge(a,[Re.getScaleDefaults(r.type),r]):H._merger(t,e,n,i)}})}function Xe(t){var e=t.options;H.each(t.scales,(function(e){me.removeBox(t,e)})),e=$e(W.global,W[t.config.type],e),t.options=t.config.options=e,t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.tooltip._options=e.tooltips,t.tooltip.initialize()}function Ke(t,e,n){var i,a=function(t){return t.id===i};do{i=e+n++}while(H.findIndex(t,a)>=0);return i}function Je(t){return"top"===t||"bottom"===t}function Qe(t,e){return function(n,i){return n[t]===i[t]?n[e]-i[e]:n[t]-i[t]}}W._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var tn=function(t,e){return this.construct(t,e),this};H.extend(tn.prototype,{construct:function(t,e){var n=this;e=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=$e(W.global,W[t.type],t.options||{}),t}(e);var i=Ie.acquireContext(t,e),a=i&&i.canvas,r=a&&a.height,o=a&&a.width;n.id=H.uid(),n.ctx=i,n.canvas=a,n.config=e,n.width=o,n.height=r,n.aspectRatio=r?o/r:null,n.options=e.options,n._bufferedRender=!1,n._layers=[],n.chart=n,n.controller=n,tn.instances[n.id]=n,Object.defineProperty(n,"data",{get:function(){return n.config.data},set:function(t){n.config.data=t}}),i&&a?(n.initialize(),n.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return Le.notify(t,"beforeInit"),H.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.initToolTip(),Le.notify(t,"afterInit"),t},clear:function(){return H.canvas.clear(this),this},stop:function(){return J.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,i=e.canvas,a=n.maintainAspectRatio&&e.aspectRatio||null,r=Math.max(0,Math.floor(H.getMaximumWidth(i))),o=Math.max(0,Math.floor(a?r/a:H.getMaximumHeight(i)));if((e.width!==r||e.height!==o)&&(i.width=e.width=r,i.height=e.height=o,i.style.width=r+"px",i.style.height=o+"px",H.retinaScale(e,n.devicePixelRatio),!t)){var s={width:r,height:o};Le.notify(e,"resize",[s]),n.onResize&&n.onResize(e,s),e.stop(),e.update({duration:n.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;H.each(e.xAxes,(function(t,n){t.id||(t.id=Ke(e.xAxes,"x-axis-",n))})),H.each(e.yAxes,(function(t,n){t.id||(t.id=Ke(e.yAxes,"y-axis-",n))})),n&&(n.id=n.id||"scale")},buildOrUpdateScales:function(){var t=this,e=t.options,n=t.scales||{},i=[],a=Object.keys(n).reduce((function(t,e){return t[e]=!1,t}),{});e.scales&&(i=i.concat((e.scales.xAxes||[]).map((function(t){return{options:t,dtype:"category",dposition:"bottom"}})),(e.scales.yAxes||[]).map((function(t){return{options:t,dtype:"linear",dposition:"left"}})))),e.scale&&i.push({options:e.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),H.each(i,(function(e){var i=e.options,r=i.id,o=qe(i.type,e.dtype);Je(i.position)!==Je(e.dposition)&&(i.position=e.dposition),a[r]=!0;var s=null;if(r in n&&n[r].type===o)(s=n[r]).options=i,s.ctx=t.ctx,s.chart=t;else{var l=Re.getScaleConstructor(o);if(!l)return;s=new l({id:r,type:o,options:i,ctx:t.ctx,chart:t}),n[s.id]=s}s.mergeTicksOptions(),e.isDefault&&(t.scale=s)})),H.each(a,(function(t,e){t||delete n[e]})),t.scales=n,Re.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t,e,n=this,i=[],a=n.data.datasets;for(t=0,e=a.length;t=0;--n)this.drawDataset(e[n],t);Le.notify(this,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n={meta:t,index:t.index,easingValue:e};!1!==Le.notify(this,"beforeDatasetDraw",[n])&&(t.controller.draw(e),Le.notify(this,"afterDatasetDraw",[n]))},_drawTooltip:function(t){var e=this.tooltip,n={tooltip:e,easingValue:t};!1!==Le.notify(this,"beforeTooltipDraw",[n])&&(e.draw(),Le.notify(this,"afterTooltipDraw",[n]))},getElementAtEvent:function(t){return re.modes.single(this,t)},getElementsAtEvent:function(t){return re.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return re.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var i=re.modes[e];return"function"==typeof i?i(this,t,n):[]},getDatasetAtEvent:function(t){return re.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var n=e._meta[this.id];return n||(n=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e.order||0,index:t}),n},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e3?n[2]-n[1]:n[1]-n[0];Math.abs(i)>1&&t!==Math.floor(t)&&(i=t-Math.floor(t));var a=H.log10(Math.abs(i)),r="";if(0!==t)if(Math.max(Math.abs(n[0]),Math.abs(n[n.length-1]))<1e-4){var o=H.log10(Math.abs(t)),s=Math.floor(o)-Math.floor(a);s=Math.max(Math.min(s,20),0),r=t.toExponential(s)}else{var l=-1*Math.floor(a);l=Math.max(Math.min(l,20),0),r=t.toFixed(l)}else r="0";return r},logarithmic:function(t,e,n){var i=t/Math.pow(10,Math.floor(H.log10(t)));return 0===t?"0":1===i||2===i||5===i||0===e||e===n.length-1?t.toExponential():""}}},sn=H.isArray,ln=H.isNullOrUndef,un=H.valueOrDefault,dn=H.valueAtIndexOrDefault;function hn(t,e,n){var i,a=t.getTicks().length,r=Math.min(e,a-1),o=t.getPixelForTick(r),s=t._startPixel,l=t._endPixel;if(!(n&&(i=1===a?Math.max(o-s,l-o):0===e?(t.getPixelForTick(1)-o)/2:(o-t.getPixelForTick(r-1))/2,(o+=rl+1e-6)))return o}function cn(t,e,n,i){var a,r,o,s,l,u,d,h,c,f,g,m,p,v=n.length,b=[],y=[],x=[];for(a=0;ae){for(n=0;n=c||d<=1||!s.isHorizontal()?s.labelRotation=h:(e=(t=s._getLabelSizes()).widest.width,n=t.highest.height-t.highest.offset,i=Math.min(s.maxWidth,s.chart.width-e),e+6>(a=l.offset?s.maxWidth/d:i/(d-1))&&(a=i/(d-(l.offset?.5:1)),r=s.maxHeight-fn(l.gridLines)-u.padding-gn(l.scaleLabel),o=Math.sqrt(e*e+n*n),f=H.toDegrees(Math.min(Math.asin(Math.min((t.highest.height+6)/a,1)),Math.asin(Math.min(r/o,1))-Math.asin(n/o))),f=Math.max(h,Math.min(c,f))),s.labelRotation=f)},afterCalculateTickRotation:function(){H.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){H.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},n=t.chart,i=t.options,a=i.ticks,r=i.scaleLabel,o=i.gridLines,s=t._isVisible(),l="bottom"===i.position,u=t.isHorizontal();if(u?e.width=t.maxWidth:s&&(e.width=fn(o)+gn(r)),u?s&&(e.height=fn(o)+gn(r)):e.height=t.maxHeight,a.display&&s){var d=pn(a),h=t._getLabelSizes(),c=h.first,f=h.last,g=h.widest,m=h.highest,p=.4*d.minor.lineHeight,v=a.padding;if(u){var b=0!==t.labelRotation,y=H.toRadians(t.labelRotation),x=Math.cos(y),_=Math.sin(y),w=_*g.width+x*(m.height-(b?m.offset:0))+(b?0:p);e.height=Math.min(t.maxHeight,e.height+w+v);var k,M,S=t.getPixelForTick(0)-t.left,D=t.right-t.getPixelForTick(t.getTicks().length-1);b?(k=l?x*c.width+_*c.offset:_*(c.height-c.offset),M=l?_*(f.height-f.offset):x*f.width+_*f.offset):(k=c.width/2,M=f.width/2),t.paddingLeft=Math.max((k-S)*t.width/(t.width-S),0)+3,t.paddingRight=Math.max((M-D)*t.width/(t.width-D),0)+3}else{var C=a.mirror?0:g.width+v+p;e.width=Math.min(t.maxWidth,e.width+C),t.paddingTop=c.height/2,t.paddingBottom=f.height/2}}t.handleMargins(),u?(t.width=t._length=n.width-t.margins.left-t.margins.right,t.height=e.height):(t.width=e.width,t.height=t._length=n.height-t.margins.top-t.margins.bottom)},handleMargins:function(){var t=this;t.margins&&(t.margins.left=Math.max(t.paddingLeft,t.margins.left),t.margins.top=Math.max(t.paddingTop,t.margins.top),t.margins.right=Math.max(t.paddingRight,t.margins.right),t.margins.bottom=Math.max(t.paddingBottom,t.margins.bottom))},afterFit:function(){H.callback(this.options.afterFit,[this])},isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(ln(t))return NaN;if(("number"==typeof t||t instanceof Number)&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},_convertTicksToLabels:function(t){var e,n,i,a=this;for(a.ticks=t.map((function(t){return t.value})),a.beforeTickToLabelConversion(),e=a.convertTicksToLabels(t)||a.ticks,a.afterTickToLabelConversion(),n=0,i=t.length;nn-1?null:this.getPixelForDecimal(t*i+(e?i/2:0))},getPixelForDecimal:function(t){return this._reversePixels&&(t=1-t),this._startPixel+t*this._length},getDecimalForPixel:function(t){var e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,n,i,a,r=this.options.ticks,o=this._length,s=r.maxTicksLimit||o/this._tickSize()+1,l=r.major.enabled?function(t){var e,n,i=[];for(e=0,n=t.length;es)return function(t,e,n){var i,a,r=0,o=e[0];for(n=Math.ceil(n),i=0;iu)return r;return Math.max(u,1)}(l,t,0,s),u>0){for(e=0,n=u-1;e1?(h-d)/(u-1):null,bn(t,i,H.isNullOrUndef(a)?0:d-a,d),bn(t,i,h,H.isNullOrUndef(a)?t.length:h+a),vn(t)}return bn(t,i),vn(t)},_tickSize:function(){var t=this.options.ticks,e=H.toRadians(this.labelRotation),n=Math.abs(Math.cos(e)),i=Math.abs(Math.sin(e)),a=this._getLabelSizes(),r=t.autoSkipPadding||0,o=a?a.widest.width+r:0,s=a?a.highest.height+r:0;return this.isHorizontal()?s*n>o*i?o/n:s/i:s*i=0&&(o=t),void 0!==r&&(t=n.indexOf(r))>=0&&(s=t),e.minIndex=o,e.maxIndex=s,e.min=n[o],e.max=n[s]},buildTicks:function(){var t=this._getLabels(),e=this.minIndex,n=this.maxIndex;this.ticks=0===e&&n===t.length-1?t:t.slice(e,n+1)},getLabelForIndex:function(t,e){var n=this.chart;return n.getDatasetMeta(e).controller._getValueScaleId()===this.id?this.getRightValue(n.data.datasets[e].data[t]):this._getLabels()[t]},_configure:function(){var t=this,e=t.options.offset,n=t.ticks;xn.prototype._configure.call(t),t.isHorizontal()||(t._reversePixels=!t._reversePixels),n&&(t._startValue=t.minIndex-(e?.5:0),t._valueRange=Math.max(n.length-(e?0:1),1))},getPixelForValue:function(t,e,n){var i,a,r,o=this;return _n(e)||_n(n)||(t=o.chart.data.datasets[n].data[e]),_n(t)||(i=o.isHorizontal()?t.x:t.y),(void 0!==i||void 0!==t&&isNaN(e))&&(a=o._getLabels(),t=H.valueOrDefault(i,t),e=-1!==(r=a.indexOf(t))?r:e,isNaN(e)&&(e=t)),o.getPixelForDecimal((e-o._startValue)/o._valueRange)},getPixelForTick:function(t){var e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t],t+this.minIndex)},getValueForPixel:function(t){var e=Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange);return Math.min(Math.max(e,0),this.ticks.length-1)},getBasePixel:function(){return this.bottom}}),kn={position:"bottom"};wn._defaults=kn;var Mn=H.noop,Sn=H.isNullOrUndef;var Dn=xn.extend({getRightValue:function(t){return"string"==typeof t?+t:xn.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=H.sign(t.min),i=H.sign(t.max);n<0&&i<0?t.max=0:n>0&&i>0&&(t.min=0)}var a=void 0!==e.min||void 0!==e.suggestedMin,r=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),a!==r&&t.min>=t.max&&(a?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:function(){var t,e=this.options.ticks,n=e.stepSize,i=e.maxTicksLimit;return n?t=Math.ceil(this.max/n)-Math.floor(this.min/n)+1:(t=this._computeTickLimit(),i=i||11),i&&(t=Math.min(i,t)),t},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:Mn,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),i={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,precision:e.precision,stepSize:H.valueOrDefault(e.fixedStepSize,e.stepSize)},a=t.ticks=function(t,e){var n,i,a,r,o=[],s=t.stepSize,l=s||1,u=t.maxTicks-1,d=t.min,h=t.max,c=t.precision,f=e.min,g=e.max,m=H.niceNum((g-f)/u/l)*l;if(m<1e-14&&Sn(d)&&Sn(h))return[f,g];(r=Math.ceil(g/m)-Math.floor(f/m))>u&&(m=H.niceNum(r*m/u/l)*l),s||Sn(c)?n=Math.pow(10,H._decimalPlaces(m)):(n=Math.pow(10,c),m=Math.ceil(m*n)/n),i=Math.floor(f/m)*m,a=Math.ceil(g/m)*m,s&&(!Sn(d)&&H.almostWhole(d/m,m/1e3)&&(i=d),!Sn(h)&&H.almostWhole(h/m,m/1e3)&&(a=h)),r=(a-i)/m,r=H.almostEquals(r,Math.round(r),m/1e3)?Math.round(r):Math.ceil(r),i=Math.round(i*n)/n,a=Math.round(a*n)/n,o.push(Sn(d)?i:d);for(var p=1;pe.length-1?null:this.getPixelForValue(e[t])}}),An=Cn;On._defaults=An;var Fn=H.valueOrDefault,In=H.math.log10;var Ln={position:"left",ticks:{callback:on.formatters.logarithmic}};function Rn(t,e){return H.isFinite(t)&&t>=0?t:e}var Nn=xn.extend({determineDataLimits:function(){var t,e,n,i,a,r,o=this,s=o.options,l=o.chart,u=l.data.datasets,d=o.isHorizontal();function h(t){return d?t.xAxisID===o.id:t.yAxisID===o.id}o.min=Number.POSITIVE_INFINITY,o.max=Number.NEGATIVE_INFINITY,o.minNotZero=Number.POSITIVE_INFINITY;var c=s.stacked;if(void 0===c)for(t=0;t0){var e=H.min(t),n=H.max(t);o.min=Math.min(o.min,e),o.max=Math.max(o.max,n)}}))}else for(t=0;t0?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(In(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,n=!t.isHorizontal(),i={min:Rn(e.min),max:Rn(e.max)},a=t.ticks=function(t,e){var n,i,a=[],r=Fn(t.min,Math.pow(10,Math.floor(In(e.min)))),o=Math.floor(In(e.max)),s=Math.ceil(e.max/Math.pow(10,o));0===r?(n=Math.floor(In(e.minNotZero)),i=Math.floor(e.minNotZero/Math.pow(10,n)),a.push(r),r=i*Math.pow(10,n)):(n=Math.floor(In(r)),i=Math.floor(r/Math.pow(10,n)));var l=n<0?Math.pow(10,Math.abs(n)):1;do{a.push(r),10===++i&&(i=1,l=++n>=0?1:l),r=Math.round(i*Math.pow(10,n)*l)/l}while(ne.length-1?null:this.getPixelForValue(e[t])},_getFirstTickValue:function(t){var e=Math.floor(In(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},_configure:function(){var t=this,e=t.min,n=0;xn.prototype._configure.call(t),0===e&&(e=t._getFirstTickValue(t.minNotZero),n=Fn(t.options.ticks.fontSize,W.global.defaultFontSize)/t._length),t._startValue=In(e),t._valueOffset=n,t._valueRange=(In(t.max)-In(e))/(1-n)},getPixelForValue:function(t){var e=this,n=0;return(t=+e.getRightValue(t))>e.min&&t>0&&(n=(In(t)-e._startValue)/e._valueRange+e._valueOffset),e.getPixelForDecimal(n)},getValueForPixel:function(t){var e=this,n=e.getDecimalForPixel(t);return 0===n&&0===e.min?0:Math.pow(10,e._startValue+(n-e._valueOffset)*e._valueRange)}}),Wn=Ln;Nn._defaults=Wn;var Yn=H.valueOrDefault,zn=H.valueAtIndexOrDefault,En=H.options.resolve,Vn={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0,0,0,0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:on.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function Hn(t){var e=t.ticks;return e.display&&t.display?Yn(e.fontSize,W.global.defaultFontSize)+2*e.backdropPaddingY:0}function Bn(t,e,n,i,a){return t===i||t===a?{start:e-n/2,end:e+n/2}:ta?{start:e-n,end:e}:{start:e,end:e+n}}function jn(t){return 0===t||180===t?"center":t<180?"left":"right"}function Un(t,e,n,i){var a,r,o=n.y+i/2;if(H.isArray(e))for(a=0,r=e.length;a270||t<90)&&(n.y-=e.h)}function qn(t){return H.isNumber(t)?t:0}var Zn=Dn.extend({setDimensions:function(){var t=this;t.width=t.maxWidth,t.height=t.maxHeight,t.paddingTop=Hn(t.options)/2,t.xCenter=Math.floor(t.width/2),t.yCenter=Math.floor((t.height-t.paddingTop)/2),t.drawingArea=Math.min(t.height-t.paddingTop,t.width)/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;H.each(e.data.datasets,(function(a,r){if(e.isDatasetVisible(r)){var o=e.getDatasetMeta(r);H.each(a.data,(function(e,a){var r=+t.getRightValue(e);isNaN(r)||o.data[a].hidden||(n=Math.min(r,n),i=Math.max(r,i))}))}})),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=i===Number.NEGATIVE_INFINITY?0:i,t.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/Hn(this.options))},convertTicksToLabels:function(){var t=this;Dn.prototype.convertTicksToLabels.call(t),t.pointLabels=t.chart.data.labels.map((function(){var e=H.callback(t.options.pointLabels.callback,arguments,t);return e||0===e?e:""}))},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t=this.options;t.display&&t.pointLabels.display?function(t){var e,n,i,a=H.options._parseFont(t.options.pointLabels),r={l:0,r:t.width,t:0,b:t.height-t.paddingTop},o={};t.ctx.font=a.string,t._pointLabelSizes=[];var s,l,u,d=t.chart.data.labels.length;for(e=0;er.r&&(r.r=f.end,o.r=h),g.startr.b&&(r.b=g.end,o.b=h)}t.setReductions(t.drawingArea,r,o)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(t,e,n){var i=this,a=e.l/Math.sin(n.l),r=Math.max(e.r-i.width,0)/Math.sin(n.r),o=-e.t/Math.cos(n.t),s=-Math.max(e.b-(i.height-i.paddingTop),0)/Math.cos(n.b);a=qn(a),r=qn(r),o=qn(o),s=qn(s),i.drawingArea=Math.min(Math.floor(t-(a+r)/2),Math.floor(t-(o+s)/2)),i.setCenterPoint(a,r,o,s)},setCenterPoint:function(t,e,n,i){var a=this,r=a.width-e-a.drawingArea,o=t+a.drawingArea,s=n+a.drawingArea,l=a.height-a.paddingTop-i-a.drawingArea;a.xCenter=Math.floor((o+r)/2+a.left),a.yCenter=Math.floor((s+l)/2+a.top+a.paddingTop)},getIndexAngle:function(t){var e=this.chart,n=(t*(360/e.data.labels.length)+((e.options||{}).startAngle||0))%360;return(n<0?n+360:n)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(H.isNullOrUndef(t))return NaN;var n=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*n:(t-e.min)*n},getPointPosition:function(t,e){var n=this.getIndexAngle(t)-Math.PI/2;return{x:Math.cos(n)*e+this.xCenter,y:Math.sin(n)*e+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(t){var e=this.min,n=this.max;return this.getPointPositionForValue(t||0,this.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0)},_drawGrid:function(){var t,e,n,i=this,a=i.ctx,r=i.options,o=r.gridLines,s=r.angleLines,l=Yn(s.lineWidth,o.lineWidth),u=Yn(s.color,o.color);if(r.pointLabels.display&&function(t){var e=t.ctx,n=t.options,i=n.pointLabels,a=Hn(n),r=t.getDistanceFromCenterForValue(n.ticks.reverse?t.min:t.max),o=H.options._parseFont(i);e.save(),e.font=o.string,e.textBaseline="middle";for(var s=t.chart.data.labels.length-1;s>=0;s--){var l=0===s?a/2:0,u=t.getPointPosition(s,r+l+5),d=zn(i.fontColor,s,W.global.defaultFontColor);e.fillStyle=d;var h=t.getIndexAngle(s),c=H.toDegrees(h);e.textAlign=jn(c),Gn(c,t._pointLabelSizes[s],u),Un(e,t.pointLabels[s],u,o.lineHeight)}e.restore()}(i),o.display&&H.each(i.ticks,(function(t,n){0!==n&&(e=i.getDistanceFromCenterForValue(i.ticksAsNumbers[n]),function(t,e,n,i){var a,r=t.ctx,o=e.circular,s=t.chart.data.labels.length,l=zn(e.color,i-1),u=zn(e.lineWidth,i-1);if((o||s)&&l&&u){if(r.save(),r.strokeStyle=l,r.lineWidth=u,r.setLineDash&&(r.setLineDash(e.borderDash||[]),r.lineDashOffset=e.borderDashOffset||0),r.beginPath(),o)r.arc(t.xCenter,t.yCenter,n,0,2*Math.PI);else{a=t.getPointPosition(0,n),r.moveTo(a.x,a.y);for(var d=1;d=0;t--)e=i.getDistanceFromCenterForValue(r.ticks.reverse?i.min:i.max),n=i.getPointPosition(t,e),a.beginPath(),a.moveTo(i.xCenter,i.yCenter),a.lineTo(n.x,n.y),a.stroke();a.restore()}},_drawLabels:function(){var t=this,e=t.ctx,n=t.options.ticks;if(n.display){var i,a,r=t.getIndexAngle(0),o=H.options._parseFont(n),s=Yn(n.fontColor,W.global.defaultFontColor);e.save(),e.font=o.string,e.translate(t.xCenter,t.yCenter),e.rotate(r),e.textAlign="center",e.textBaseline="middle",H.each(t.ticks,(function(r,l){(0!==l||n.reverse)&&(i=t.getDistanceFromCenterForValue(t.ticksAsNumbers[l]),n.showLabelBackdrop&&(a=e.measureText(r).width,e.fillStyle=n.backdropColor,e.fillRect(-a/2-n.backdropPaddingX,-i-o.size/2-n.backdropPaddingY,a+2*n.backdropPaddingX,o.size+2*n.backdropPaddingY)),e.fillStyle=s,e.fillText(r,0,-i))})),e.restore()}},_drawTitle:H.noop}),$n=Vn;Zn._defaults=$n;var Xn=H._deprecated,Kn=H.options.resolve,Jn=H.valueOrDefault,Qn=Number.MIN_SAFE_INTEGER||-9007199254740991,ti=Number.MAX_SAFE_INTEGER||9007199254740991,ei={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ni=Object.keys(ei);function ii(t,e){return t-e}function ai(t){return H.valueOrDefault(t.time.min,t.ticks.min)}function ri(t){return H.valueOrDefault(t.time.max,t.ticks.max)}function oi(t,e,n,i){var a=function(t,e,n){for(var i,a,r,o=0,s=t.length-1;o>=0&&o<=s;){if(a=t[(i=o+s>>1)-1]||null,r=t[i],!a)return{lo:null,hi:r};if(r[e]n))return{lo:a,hi:r};s=i-1}}return{lo:r,hi:null}}(t,e,n),r=a.lo?a.hi?a.lo:t[t.length-2]:t[0],o=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=o[e]-r[e],l=s?(n-r[e])/s:0,u=(o[i]-r[i])*l;return r[i]+u}function si(t,e){var n=t._adapter,i=t.options.time,a=i.parser,r=a||i.format,o=e;return"function"==typeof a&&(o=a(o)),H.isFinite(o)||(o="string"==typeof r?n.parse(o,r):n.parse(o)),null!==o?+o:(a||"function"!=typeof r||(o=r(e),H.isFinite(o)||(o=n.parse(o))),o)}function li(t,e){if(H.isNullOrUndef(e))return null;var n=t.options.time,i=si(t,t.getRightValue(e));return null===i?i:(n.round&&(i=+t._adapter.startOf(i,n.round)),i)}function ui(t,e,n,i){var a,r,o,s=ni.length;for(a=ni.indexOf(t);a=0&&(e[r].major=!0);return e}(t,r,o,n):r}var hi=xn.extend({initialize:function(){this.mergeTicksOptions(),xn.prototype.initialize.call(this)},update:function(){var t=this,e=t.options,n=e.time||(e.time={}),i=t._adapter=new rn._date(e.adapters.date);return Xn("time scale",n.format,"time.format","time.parser"),Xn("time scale",n.min,"time.min","ticks.min"),Xn("time scale",n.max,"time.max","ticks.max"),H.mergeIf(n.displayFormats,i.formats()),xn.prototype.update.apply(t,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),xn.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,n,i,a,r,o,s=this,l=s.chart,u=s._adapter,d=s.options,h=d.time.unit||"day",c=ti,f=Qn,g=[],m=[],p=[],v=s._getLabels();for(t=0,n=v.length;t1?function(t){var e,n,i,a={},r=[];for(e=0,n=t.length;e1e5*u)throw e+" and "+n+" are too far apart with stepSize of "+u+" "+l;for(a=h;a=a&&n<=r&&d.push(n);return i.min=a,i.max=r,i._unit=l.unit||(s.autoSkip?ui(l.minUnit,i.min,i.max,h):function(t,e,n,i,a){var r,o;for(r=ni.length-1;r>=ni.indexOf(n);r--)if(o=ni[r],ei[o].common&&t._adapter.diff(a,i,o)>=e-1)return o;return ni[n?ni.indexOf(n):0]}(i,d.length,l.minUnit,i.min,i.max)),i._majorUnit=s.major.enabled&&"year"!==i._unit?function(t){for(var e=ni.indexOf(t)+1,n=ni.length;ee&&s=0&&t0?s:1}}),ci={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};hi._defaults=ci;var fi={category:wn,linear:On,logarithmic:Nn,radialLinear:Zn,time:hi},gi=e((function(e,n){e.exports=function(){var n,i;function a(){return n.apply(null,arguments)}function r(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function o(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function s(t){return void 0===t}function l(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function u(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function d(t,e){var n,i=[];for(n=0;n>>0,i=0;i0)for(n=0;n=0?n?"+":"":"-")+Math.pow(10,Math.max(0,a)).toString().substr(1)+i}var E=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,V=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,H={},B={};function j(t,e,n,i){var a=i;"string"==typeof i&&(a=function(){return this[i]()}),t&&(B[t]=a),e&&(B[e[0]]=function(){return z(a.apply(this,arguments),e[1],e[2])}),n&&(B[n]=function(){return this.localeData().ordinal(a.apply(this,arguments),t)})}function U(t,e){return t.isValid()?(e=G(e,t.localeData()),H[e]=H[e]||function(t){var e,n,i,a=t.match(E);for(e=0,n=a.length;e=0&&V.test(t);)t=t.replace(V,i),V.lastIndex=0,n-=1;return t}var q=/\d/,Z=/\d\d/,$=/\d{3}/,X=/\d{4}/,K=/[+-]?\d{6}/,J=/\d\d?/,Q=/\d\d\d\d?/,tt=/\d\d\d\d\d\d?/,et=/\d{1,3}/,nt=/\d{1,4}/,it=/[+-]?\d{1,6}/,at=/\d+/,rt=/[+-]?\d+/,ot=/Z|[+-]\d\d:?\d\d/gi,st=/Z|[+-]\d\d(?::?\d\d)?/gi,lt=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,ut={};function dt(t,e,n){ut[t]=O(e)?e:function(t,i){return t&&n?n:e}}function ht(t,e){return h(ut,t)?ut[t](e._strict,e._locale):new RegExp(ct(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(t,e,n,i,a){return e||n||i||a}))))}function ct(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var ft={};function gt(t,e){var n,i=e;for("string"==typeof t&&(t=[t]),l(e)&&(i=function(t,n){n[e]=k(t)}),n=0;n68?1900:2e3)};var Pt,Tt=Ot("FullYear",!0);function Ot(t,e){return function(n){return null!=n?(Ft(this,t,n),a.updateOffset(this,e),this):At(this,t)}}function At(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function Ft(t,e,n){t.isValid()&&!isNaN(n)&&("FullYear"===e&&Ct(t.year())&&1===t.month()&&29===t.date()?t._d["set"+(t._isUTC?"UTC":"")+e](n,t.month(),It(n,t.month())):t._d["set"+(t._isUTC?"UTC":"")+e](n))}function It(t,e){if(isNaN(t)||isNaN(e))return NaN;var n=function(t,e){return(t%e+e)%e}(e,12);return t+=(e-n)/12,1===n?Ct(t)?29:28:31-n%7%2}Pt=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e=0?(s=new Date(t+400,e,n,i,a,r,o),isFinite(s.getFullYear())&&s.setFullYear(t)):s=new Date(t,e,n,i,a,r,o),s}function jt(t){var e;if(t<100&&t>=0){var n=Array.prototype.slice.call(arguments);n[0]=t+400,e=new Date(Date.UTC.apply(null,n)),isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t)}else e=new Date(Date.UTC.apply(null,arguments));return e}function Ut(t,e,n){var i=7+e-n;return-(7+jt(t,0,i).getUTCDay()-e)%7+i-1}function Gt(t,e,n,i,a){var r,o,s=1+7*(e-1)+(7+n-i)%7+Ut(t,i,a);return s<=0?o=Dt(r=t-1)+s:s>Dt(t)?(r=t+1,o=s-Dt(t)):(r=t,o=s),{year:r,dayOfYear:o}}function qt(t,e,n){var i,a,r=Ut(t.year(),e,n),o=Math.floor((t.dayOfYear()-r-1)/7)+1;return o<1?i=o+Zt(a=t.year()-1,e,n):o>Zt(t.year(),e,n)?(i=o-Zt(t.year(),e,n),a=t.year()+1):(a=t.year(),i=o),{week:i,year:a}}function Zt(t,e,n){var i=Ut(t,e,n),a=Ut(t+1,e,n);return(Dt(t)-i+a)/7}function $t(t,e){return t.slice(e,7).concat(t.slice(0,e))}j("w",["ww",2],"wo","week"),j("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),Y("week",5),Y("isoWeek",5),dt("w",J),dt("ww",J,Z),dt("W",J),dt("WW",J,Z),mt(["w","ww","W","WW"],(function(t,e,n,i){e[i.substr(0,1)]=k(t)})),j("d",0,"do","day"),j("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),j("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),j("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),j("e",0,0,"weekday"),j("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),Y("day",11),Y("weekday",11),Y("isoWeekday",11),dt("d",J),dt("e",J),dt("E",J),dt("dd",(function(t,e){return e.weekdaysMinRegex(t)})),dt("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),dt("dddd",(function(t,e){return e.weekdaysRegex(t)})),mt(["dd","ddd","dddd"],(function(t,e,n,i){var a=n._locale.weekdaysParse(t,i,n._strict);null!=a?e.d=a:g(n).invalidWeekday=t})),mt(["d","e","E"],(function(t,e,n,i){e[i]=k(t)}));var Xt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Kt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Jt="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function Qt(t,e,n){var i,a,r,o=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],i=0;i<7;++i)r=f([2e3,1]).day(i),this._minWeekdaysParse[i]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===e?-1!==(a=Pt.call(this._weekdaysParse,o))?a:null:"ddd"===e?-1!==(a=Pt.call(this._shortWeekdaysParse,o))?a:null:-1!==(a=Pt.call(this._minWeekdaysParse,o))?a:null:"dddd"===e?-1!==(a=Pt.call(this._weekdaysParse,o))?a:-1!==(a=Pt.call(this._shortWeekdaysParse,o))?a:-1!==(a=Pt.call(this._minWeekdaysParse,o))?a:null:"ddd"===e?-1!==(a=Pt.call(this._shortWeekdaysParse,o))?a:-1!==(a=Pt.call(this._weekdaysParse,o))?a:-1!==(a=Pt.call(this._minWeekdaysParse,o))?a:null:-1!==(a=Pt.call(this._minWeekdaysParse,o))?a:-1!==(a=Pt.call(this._weekdaysParse,o))?a:-1!==(a=Pt.call(this._shortWeekdaysParse,o))?a:null}var te=lt,ee=lt,ne=lt;function ie(){function t(t,e){return e.length-t.length}var e,n,i,a,r,o=[],s=[],l=[],u=[];for(e=0;e<7;e++)n=f([2e3,1]).day(e),i=this.weekdaysMin(n,""),a=this.weekdaysShort(n,""),r=this.weekdays(n,""),o.push(i),s.push(a),l.push(r),u.push(i),u.push(a),u.push(r);for(o.sort(t),s.sort(t),l.sort(t),u.sort(t),e=0;e<7;e++)s[e]=ct(s[e]),l[e]=ct(l[e]),u[e]=ct(u[e]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function ae(){return this.hours()%12||12}function re(t,e){j(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function oe(t,e){return e._meridiemParse}j("H",["HH",2],0,"hour"),j("h",["hh",2],0,ae),j("k",["kk",2],0,(function(){return this.hours()||24})),j("hmm",0,0,(function(){return""+ae.apply(this)+z(this.minutes(),2)})),j("hmmss",0,0,(function(){return""+ae.apply(this)+z(this.minutes(),2)+z(this.seconds(),2)})),j("Hmm",0,0,(function(){return""+this.hours()+z(this.minutes(),2)})),j("Hmmss",0,0,(function(){return""+this.hours()+z(this.minutes(),2)+z(this.seconds(),2)})),re("a",!0),re("A",!1),L("hour","h"),Y("hour",13),dt("a",oe),dt("A",oe),dt("H",J),dt("h",J),dt("k",J),dt("HH",J,Z),dt("hh",J,Z),dt("kk",J,Z),dt("hmm",Q),dt("hmmss",tt),dt("Hmm",Q),dt("Hmmss",tt),gt(["H","HH"],xt),gt(["k","kk"],(function(t,e,n){var i=k(t);e[xt]=24===i?0:i})),gt(["a","A"],(function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t})),gt(["h","hh"],(function(t,e,n){e[xt]=k(t),g(n).bigHour=!0})),gt("hmm",(function(t,e,n){var i=t.length-2;e[xt]=k(t.substr(0,i)),e[_t]=k(t.substr(i)),g(n).bigHour=!0})),gt("hmmss",(function(t,e,n){var i=t.length-4,a=t.length-2;e[xt]=k(t.substr(0,i)),e[_t]=k(t.substr(i,2)),e[wt]=k(t.substr(a)),g(n).bigHour=!0})),gt("Hmm",(function(t,e,n){var i=t.length-2;e[xt]=k(t.substr(0,i)),e[_t]=k(t.substr(i))})),gt("Hmmss",(function(t,e,n){var i=t.length-4,a=t.length-2;e[xt]=k(t.substr(0,i)),e[_t]=k(t.substr(i,2)),e[wt]=k(t.substr(a))}));var se,le=Ot("Hours",!0),ue={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Rt,monthsShort:Nt,week:{dow:0,doy:6},weekdays:Xt,weekdaysMin:Jt,weekdaysShort:Kt,meridiemParse:/[ap]\.?m?\.?/i},de={},he={};function ce(t){return t?t.toLowerCase().replace("_","-"):t}function fe(n){var i=null;if(!de[n]&&e&&e.exports)try{i=se._abbr,t(),ge(i)}catch(t){}return de[n]}function ge(t,e){var n;return t&&((n=s(e)?pe(t):me(t,e))?se=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),se._abbr}function me(t,e){if(null!==e){var n,i=ue;if(e.abbr=t,null!=de[t])T("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),i=de[t]._config;else if(null!=e.parentLocale)if(null!=de[e.parentLocale])i=de[e.parentLocale]._config;else{if(null==(n=fe(e.parentLocale)))return he[e.parentLocale]||(he[e.parentLocale]=[]),he[e.parentLocale].push({name:t,config:e}),null;i=n._config}return de[t]=new F(A(i,e)),he[t]&&he[t].forEach((function(t){me(t.name,t.config)})),ge(t),de[t]}return delete de[t],null}function pe(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return se;if(!r(t)){if(e=fe(t))return e;t=[t]}return function(t){for(var e,n,i,a,r=0;r0;){if(i=fe(a.slice(0,e).join("-")))return i;if(n&&n.length>=e&&M(a,n,!0)>=e-1)break;e--}r++}return se}(t)}function ve(t){var e,n=t._a;return n&&-2===g(t).overflow&&(e=n[bt]<0||n[bt]>11?bt:n[yt]<1||n[yt]>It(n[vt],n[bt])?yt:n[xt]<0||n[xt]>24||24===n[xt]&&(0!==n[_t]||0!==n[wt]||0!==n[kt])?xt:n[_t]<0||n[_t]>59?_t:n[wt]<0||n[wt]>59?wt:n[kt]<0||n[kt]>999?kt:-1,g(t)._overflowDayOfYear&&(eyt)&&(e=yt),g(t)._overflowWeeks&&-1===e&&(e=Mt),g(t)._overflowWeekday&&-1===e&&(e=St),g(t).overflow=e),t}function be(t,e,n){return null!=t?t:null!=e?e:n}function ye(t){var e,n,i,r,o,s=[];if(!t._d){for(i=function(t){var e=new Date(a.now());return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[yt]&&null==t._a[bt]&&function(t){var e,n,i,a,r,o,s,l;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)r=1,o=4,n=be(e.GG,t._a[vt],qt(Le(),1,4).year),i=be(e.W,1),((a=be(e.E,1))<1||a>7)&&(l=!0);else{r=t._locale._week.dow,o=t._locale._week.doy;var u=qt(Le(),r,o);n=be(e.gg,t._a[vt],u.year),i=be(e.w,u.week),null!=e.d?((a=e.d)<0||a>6)&&(l=!0):null!=e.e?(a=e.e+r,(e.e<0||e.e>6)&&(l=!0)):a=r}i<1||i>Zt(n,r,o)?g(t)._overflowWeeks=!0:null!=l?g(t)._overflowWeekday=!0:(s=Gt(n,i,a,r,o),t._a[vt]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=be(t._a[vt],i[vt]),(t._dayOfYear>Dt(o)||0===t._dayOfYear)&&(g(t)._overflowDayOfYear=!0),n=jt(o,0,t._dayOfYear),t._a[bt]=n.getUTCMonth(),t._a[yt]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=i[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[xt]&&0===t._a[_t]&&0===t._a[wt]&&0===t._a[kt]&&(t._nextDay=!0,t._a[xt]=0),t._d=(t._useUTC?jt:Bt).apply(null,s),r=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[xt]=24),t._w&&void 0!==t._w.d&&t._w.d!==r&&(g(t).weekdayMismatch=!0)}}var xe=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_e=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,we=/Z|[+-]\d\d(?::?\d\d)?/,ke=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Me=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Se=/^\/?Date\((\-?\d+)/i;function De(t){var e,n,i,a,r,o,s=t._i,l=xe.exec(s)||_e.exec(s);if(l){for(g(t).iso=!0,e=0,n=ke.length;e0&&g(t).unusedInput.push(o),s=s.slice(s.indexOf(n)+n.length),u+=n.length),B[r]?(n?g(t).empty=!1:g(t).unusedTokens.push(r),pt(r,n,t)):t._strict&&!n&&g(t).unusedTokens.push(r);g(t).charsLeftOver=l-u,s.length>0&&g(t).unusedInput.push(s),t._a[xt]<=12&&!0===g(t).bigHour&&t._a[xt]>0&&(g(t).bigHour=void 0),g(t).parsedDateParts=t._a.slice(0),g(t).meridiem=t._meridiem,t._a[xt]=function(t,e,n){var i;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):null!=t.isPM?((i=t.isPM(n))&&e<12&&(e+=12),i||12!==e||(e=0),e):e}(t._locale,t._a[xt],t._meridiem),ye(t),ve(t)}else Oe(t);else De(t)}function Fe(t){var e=t._i,n=t._f;return t._locale=t._locale||pe(t._l),null===e||void 0===n&&""===e?p({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),_(e)?new x(ve(e)):(u(e)?t._d=e:r(n)?function(t){var e,n,i,a,r;if(0===t._f.length)return g(t).invalidFormat=!0,void(t._d=new Date(NaN));for(a=0;athis?this:t:p()}));function We(t,e){var n,i;if(1===e.length&&r(e[0])&&(e=e[0]),!e.length)return Le();for(n=e[0],i=1;i=0?new Date(t+400,e,n)-hn:new Date(t,e,n).valueOf()}function gn(t,e,n){return t<100&&t>=0?Date.UTC(t+400,e,n)-hn:Date.UTC(t,e,n)}function mn(t,e){j(0,[t,t.length],0,e)}function pn(t,e,n,i,a){var r;return null==t?qt(this,i,a).year:(e>(r=Zt(t,i,a))&&(e=r),vn.call(this,t,e,n,i,a))}function vn(t,e,n,i,a){var r=Gt(t,e,n,i,a),o=jt(r.year,0,r.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}j(0,["gg",2],0,(function(){return this.weekYear()%100})),j(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),mn("gggg","weekYear"),mn("ggggg","weekYear"),mn("GGGG","isoWeekYear"),mn("GGGGG","isoWeekYear"),L("weekYear","gg"),L("isoWeekYear","GG"),Y("weekYear",1),Y("isoWeekYear",1),dt("G",rt),dt("g",rt),dt("GG",J,Z),dt("gg",J,Z),dt("GGGG",nt,X),dt("gggg",nt,X),dt("GGGGG",it,K),dt("ggggg",it,K),mt(["gggg","ggggg","GGGG","GGGGG"],(function(t,e,n,i){e[i.substr(0,2)]=k(t)})),mt(["gg","GG"],(function(t,e,n,i){e[i]=a.parseTwoDigitYear(t)})),j("Q",0,"Qo","quarter"),L("quarter","Q"),Y("quarter",7),dt("Q",q),gt("Q",(function(t,e){e[bt]=3*(k(t)-1)})),j("D",["DD",2],"Do","date"),L("date","D"),Y("date",9),dt("D",J),dt("DD",J,Z),dt("Do",(function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient})),gt(["D","DD"],yt),gt("Do",(function(t,e){e[yt]=k(t.match(J)[0])}));var bn=Ot("Date",!0);j("DDD",["DDDD",3],"DDDo","dayOfYear"),L("dayOfYear","DDD"),Y("dayOfYear",4),dt("DDD",et),dt("DDDD",$),gt(["DDD","DDDD"],(function(t,e,n){n._dayOfYear=k(t)})),j("m",["mm",2],0,"minute"),L("minute","m"),Y("minute",14),dt("m",J),dt("mm",J,Z),gt(["m","mm"],_t);var yn=Ot("Minutes",!1);j("s",["ss",2],0,"second"),L("second","s"),Y("second",15),dt("s",J),dt("ss",J,Z),gt(["s","ss"],wt);var xn,_n=Ot("Seconds",!1);for(j("S",0,0,(function(){return~~(this.millisecond()/100)})),j(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),j(0,["SSS",3],0,"millisecond"),j(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),j(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),j(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),j(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),j(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),j(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),L("millisecond","ms"),Y("millisecond",16),dt("S",et,q),dt("SS",et,Z),dt("SSS",et,$),xn="SSSS";xn.length<=9;xn+="S")dt(xn,at);function wn(t,e){e[kt]=k(1e3*("0."+t))}for(xn="S";xn.length<=9;xn+="S")gt(xn,wn);var kn=Ot("Milliseconds",!1);j("z",0,0,"zoneAbbr"),j("zz",0,0,"zoneName");var Mn=x.prototype;function Sn(t){return t}Mn.add=en,Mn.calendar=function(t,e){var n=t||Le(),i=Ue(n,this).startOf("day"),r=a.calendarFormat(this,i)||"sameElse",o=e&&(O(e[r])?e[r].call(this,n):e[r]);return this.format(o||this.localeData().calendar(r,this,Le(n)))},Mn.clone=function(){return new x(this)},Mn.diff=function(t,e,n){var i,a,r;if(!this.isValid())return NaN;if(!(i=Ue(t,this)).isValid())return NaN;switch(a=6e4*(i.utcOffset()-this.utcOffset()),e=R(e)){case"year":r=an(this,i)/12;break;case"month":r=an(this,i);break;case"quarter":r=an(this,i)/3;break;case"second":r=(this-i)/1e3;break;case"minute":r=(this-i)/6e4;break;case"hour":r=(this-i)/36e5;break;case"day":r=(this-i-a)/864e5;break;case"week":r=(this-i-a)/6048e5;break;default:r=this-i}return n?r:w(r)},Mn.endOf=function(t){var e;if(void 0===(t=R(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?gn:fn;switch(t){case"year":e=n(this.year()+1,0,1)-1;break;case"quarter":e=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":e=n(this.year(),this.month()+1,1)-1;break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":e=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":e=this._d.valueOf(),e+=dn-cn(e+(this._isUTC?0:this.utcOffset()*un),dn)-1;break;case"minute":e=this._d.valueOf(),e+=un-cn(e,un)-1;break;case"second":e=this._d.valueOf(),e+=ln-cn(e,ln)-1}return this._d.setTime(e),a.updateOffset(this,!0),this},Mn.format=function(t){t||(t=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var e=U(this,t);return this.localeData().postformat(e)},Mn.from=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||Le(t).isValid())?Xe({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},Mn.fromNow=function(t){return this.from(Le(),t)},Mn.to=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||Le(t).isValid())?Xe({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},Mn.toNow=function(t){return this.to(Le(),t)},Mn.get=function(t){return O(this[t=R(t)])?this[t]():this},Mn.invalidAt=function(){return g(this).overflow},Mn.isAfter=function(t,e){var n=_(t)?t:Le(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=R(e)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()9999?U(n,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):O(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",U(n,"Z")):U(n,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},Mn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t="moment",e="";this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z");var n="["+t+'("]',i=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",a=e+'[")]';return this.format(n+i+"-MM-DD[T]HH:mm:ss.SSS"+a)},Mn.toJSON=function(){return this.isValid()?this.toISOString():null},Mn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},Mn.unix=function(){return Math.floor(this.valueOf()/1e3)},Mn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},Mn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},Mn.year=Tt,Mn.isLeapYear=function(){return Ct(this.year())},Mn.weekYear=function(t){return pn.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},Mn.isoWeekYear=function(t){return pn.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},Mn.quarter=Mn.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},Mn.month=zt,Mn.daysInMonth=function(){return It(this.year(),this.month())},Mn.week=Mn.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},Mn.isoWeek=Mn.isoWeeks=function(t){var e=qt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},Mn.weeksInYear=function(){var t=this.localeData()._week;return Zt(this.year(),t.dow,t.doy)},Mn.isoWeeksInYear=function(){return Zt(this.year(),1,4)},Mn.date=bn,Mn.day=Mn.days=function(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=function(t,e){return"string"!=typeof t?t:isNaN(t)?"number"==typeof(t=e.weekdaysParse(t))?t:null:parseInt(t,10)}(t,this.localeData()),this.add(t-e,"d")):e},Mn.weekday=function(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},Mn.isoWeekday=function(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=function(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7},Mn.dayOfYear=function(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},Mn.hour=Mn.hours=le,Mn.minute=Mn.minutes=yn,Mn.second=Mn.seconds=_n,Mn.millisecond=Mn.milliseconds=kn,Mn.utcOffset=function(t,e,n){var i,r=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null!=t){if("string"==typeof t){if(null===(t=je(st,t)))return this}else Math.abs(t)<16&&!n&&(t*=60);return!this._isUTC&&e&&(i=Ge(this)),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),r!==t&&(!e||this._changeInProgress?tn(this,Xe(t-r,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?r:Ge(this)},Mn.utc=function(t){return this.utcOffset(0,t)},Mn.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Ge(this),"m")),this},Mn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=je(ot,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},Mn.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?Le(t).utcOffset():0,(this.utcOffset()-t)%60==0)},Mn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},Mn.isLocal=function(){return!!this.isValid()&&!this._isUTC},Mn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},Mn.isUtc=qe,Mn.isUTC=qe,Mn.zoneAbbr=function(){return this._isUTC?"UTC":""},Mn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},Mn.dates=D("dates accessor is deprecated. Use date instead.",bn),Mn.months=D("months accessor is deprecated. Use month instead",zt),Mn.years=D("years accessor is deprecated. Use year instead",Tt),Mn.zone=D("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()})),Mn.isDSTShifted=D("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var t={};if(b(t,this),(t=Fe(t))._a){var e=t._isUTC?f(t._a):Le(t._a);this._isDSTShifted=this.isValid()&&M(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}));var Dn=F.prototype;function Cn(t,e,n,i){var a=pe(),r=f().set(i,e);return a[n](r,t)}function Pn(t,e,n){if(l(t)&&(e=t,t=void 0),t=t||"",null!=e)return Cn(t,e,n,"month");var i,a=[];for(i=0;i<12;i++)a[i]=Cn(t,i,n,"month");return a}function Tn(t,e,n,i){"boolean"==typeof t?(l(e)&&(n=e,e=void 0),e=e||""):(n=e=t,t=!1,l(e)&&(n=e,e=void 0),e=e||"");var a,r=pe(),o=t?r._week.dow:0;if(null!=n)return Cn(e,(n+o)%7,i,"day");var s=[];for(a=0;a<7;a++)s[a]=Cn(e,(a+o)%7,i,"day");return s}Dn.calendar=function(t,e,n){var i=this._calendar[t]||this._calendar.sameElse;return O(i)?i.call(e,n):i},Dn.longDateFormat=function(t){var e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,(function(t){return t.slice(1)})),this._longDateFormat[t])},Dn.invalidDate=function(){return this._invalidDate},Dn.ordinal=function(t){return this._ordinal.replace("%d",t)},Dn.preparse=Sn,Dn.postformat=Sn,Dn.relativeTime=function(t,e,n,i){var a=this._relativeTime[n];return O(a)?a(t,e,n,i):a.replace(/%d/i,t)},Dn.pastFuture=function(t,e){var n=this._relativeTime[t>0?"future":"past"];return O(n)?n(e):n.replace(/%s/i,e)},Dn.set=function(t){var e,n;for(n in t)O(e=t[n])?this[n]=e:this["_"+n]=e;this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},Dn.months=function(t,e){return t?r(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||Lt).test(e)?"format":"standalone"][t.month()]:r(this._months)?this._months:this._months.standalone},Dn.monthsShort=function(t,e){return t?r(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[Lt.test(e)?"format":"standalone"][t.month()]:r(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},Dn.monthsParse=function(t,e,n){var i,a,r;if(this._monthsParseExact)return Wt.call(this,t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(a=f([2e3,i]),n&&!this._longMonthsParse[i]&&(this._longMonthsParse[i]=new RegExp("^"+this.months(a,"").replace(".","")+"$","i"),this._shortMonthsParse[i]=new RegExp("^"+this.monthsShort(a,"").replace(".","")+"$","i")),n||this._monthsParse[i]||(r="^"+this.months(a,"")+"|^"+this.monthsShort(a,""),this._monthsParse[i]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[i].test(t))return i;if(n&&"MMM"===e&&this._shortMonthsParse[i].test(t))return i;if(!n&&this._monthsParse[i].test(t))return i}},Dn.monthsRegex=function(t){return this._monthsParseExact?(h(this,"_monthsRegex")||Ht.call(this),t?this._monthsStrictRegex:this._monthsRegex):(h(this,"_monthsRegex")||(this._monthsRegex=Vt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},Dn.monthsShortRegex=function(t){return this._monthsParseExact?(h(this,"_monthsRegex")||Ht.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(h(this,"_monthsShortRegex")||(this._monthsShortRegex=Et),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},Dn.week=function(t){return qt(t,this._week.dow,this._week.doy).week},Dn.firstDayOfYear=function(){return this._week.doy},Dn.firstDayOfWeek=function(){return this._week.dow},Dn.weekdays=function(t,e){var n=r(this._weekdays)?this._weekdays:this._weekdays[t&&!0!==t&&this._weekdays.isFormat.test(e)?"format":"standalone"];return!0===t?$t(n,this._week.dow):t?n[t.day()]:n},Dn.weekdaysMin=function(t){return!0===t?$t(this._weekdaysMin,this._week.dow):t?this._weekdaysMin[t.day()]:this._weekdaysMin},Dn.weekdaysShort=function(t){return!0===t?$t(this._weekdaysShort,this._week.dow):t?this._weekdaysShort[t.day()]:this._weekdaysShort},Dn.weekdaysParse=function(t,e,n){var i,a,r;if(this._weekdaysParseExact)return Qt.call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),i=0;i<7;i++){if(a=f([2e3,1]).day(i),n&&!this._fullWeekdaysParse[i]&&(this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(a,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(a,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(a,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[i]||(r="^"+this.weekdays(a,"")+"|^"+this.weekdaysShort(a,"")+"|^"+this.weekdaysMin(a,""),this._weekdaysParse[i]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===e&&this._fullWeekdaysParse[i].test(t))return i;if(n&&"ddd"===e&&this._shortWeekdaysParse[i].test(t))return i;if(n&&"dd"===e&&this._minWeekdaysParse[i].test(t))return i;if(!n&&this._weekdaysParse[i].test(t))return i}},Dn.weekdaysRegex=function(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||ie.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(h(this,"_weekdaysRegex")||(this._weekdaysRegex=te),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},Dn.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||ie.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(h(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=ee),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},Dn.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||ie.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(h(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=ne),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},Dn.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},Dn.meridiem=function(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"},ge("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===k(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),a.lang=D("moment.lang is deprecated. Use moment.locale instead.",ge),a.langData=D("moment.langData is deprecated. Use moment.localeData instead.",pe);var On=Math.abs;function An(t,e,n,i){var a=Xe(e,n);return t._milliseconds+=i*a._milliseconds,t._days+=i*a._days,t._months+=i*a._months,t._bubble()}function Fn(t){return t<0?Math.floor(t):Math.ceil(t)}function In(t){return 4800*t/146097}function Ln(t){return 146097*t/4800}function Rn(t){return function(){return this.as(t)}}var Nn=Rn("ms"),Wn=Rn("s"),Yn=Rn("m"),zn=Rn("h"),En=Rn("d"),Vn=Rn("w"),Hn=Rn("M"),Bn=Rn("Q"),jn=Rn("y");function Un(t){return function(){return this.isValid()?this._data[t]:NaN}}var Gn=Un("milliseconds"),qn=Un("seconds"),Zn=Un("minutes"),$n=Un("hours"),Xn=Un("days"),Kn=Un("months"),Jn=Un("years"),Qn=Math.round,ti={ss:44,s:45,m:45,h:22,d:26,M:11};function ei(t,e,n,i,a){return a.relativeTime(e||1,!!n,t,i)}var ni=Math.abs;function ii(t){return(t>0)-(t<0)||+t}function ai(){if(!this.isValid())return this.localeData().invalidDate();var t,e,n=ni(this._milliseconds)/1e3,i=ni(this._days),a=ni(this._months);t=w(n/60),e=w(t/60),n%=60,t%=60;var r=w(a/12),o=a%=12,s=i,l=e,u=t,d=n?n.toFixed(3).replace(/\.?0+$/,""):"",h=this.asSeconds();if(!h)return"P0D";var c=h<0?"-":"",f=ii(this._months)!==ii(h)?"-":"",g=ii(this._days)!==ii(h)?"-":"",m=ii(this._milliseconds)!==ii(h)?"-":"";return c+"P"+(r?f+r+"Y":"")+(o?f+o+"M":"")+(s?g+s+"D":"")+(l||u||d?"T":"")+(l?m+l+"H":"")+(u?m+u+"M":"")+(d?m+d+"S":"")}var ri=ze.prototype;return ri.isValid=function(){return this._isValid},ri.abs=function(){var t=this._data;return this._milliseconds=On(this._milliseconds),this._days=On(this._days),this._months=On(this._months),t.milliseconds=On(t.milliseconds),t.seconds=On(t.seconds),t.minutes=On(t.minutes),t.hours=On(t.hours),t.months=On(t.months),t.years=On(t.years),this},ri.add=function(t,e){return An(this,t,e,1)},ri.subtract=function(t,e){return An(this,t,e,-1)},ri.as=function(t){if(!this.isValid())return NaN;var e,n,i=this._milliseconds;if("month"===(t=R(t))||"quarter"===t||"year"===t)switch(e=this._days+i/864e5,n=this._months+In(e),t){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(e=this._days+Math.round(Ln(this._months)),t){case"week":return e/7+i/6048e5;case"day":return e+i/864e5;case"hour":return 24*e+i/36e5;case"minute":return 1440*e+i/6e4;case"second":return 86400*e+i/1e3;case"millisecond":return Math.floor(864e5*e)+i;default:throw new Error("Unknown unit "+t)}},ri.asMilliseconds=Nn,ri.asSeconds=Wn,ri.asMinutes=Yn,ri.asHours=zn,ri.asDays=En,ri.asWeeks=Vn,ri.asMonths=Hn,ri.asQuarters=Bn,ri.asYears=jn,ri.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12):NaN},ri._bubble=function(){var t,e,n,i,a,r=this._milliseconds,o=this._days,s=this._months,l=this._data;return r>=0&&o>=0&&s>=0||r<=0&&o<=0&&s<=0||(r+=864e5*Fn(Ln(s)+o),o=0,s=0),l.milliseconds=r%1e3,t=w(r/1e3),l.seconds=t%60,e=w(t/60),l.minutes=e%60,n=w(e/60),l.hours=n%24,o+=w(n/24),a=w(In(o)),s+=a,o-=Fn(Ln(a)),i=w(s/12),s%=12,l.days=o,l.months=s,l.years=i,this},ri.clone=function(){return Xe(this)},ri.get=function(t){return t=R(t),this.isValid()?this[t+"s"]():NaN},ri.milliseconds=Gn,ri.seconds=qn,ri.minutes=Zn,ri.hours=$n,ri.days=Xn,ri.weeks=function(){return w(this.days()/7)},ri.months=Kn,ri.years=Jn,ri.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e=this.localeData(),n=function(t,e,n){var i=Xe(t).abs(),a=Qn(i.as("s")),r=Qn(i.as("m")),o=Qn(i.as("h")),s=Qn(i.as("d")),l=Qn(i.as("M")),u=Qn(i.as("y")),d=a<=ti.ss&&["s",a]||a0,d[4]=n,ei.apply(null,d)}(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)},ri.toISOString=ai,ri.toString=ai,ri.toJSON=ai,ri.locale=rn,ri.localeData=sn,ri.toIsoString=D("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",ai),ri.lang=on,j("X",0,0,"unix"),j("x",0,0,"valueOf"),dt("x",rt),dt("X",/[+-]?\d+(\.\d{1,3})?/),gt("X",(function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))})),gt("x",(function(t,e,n){n._d=new Date(k(t))})),a.version="2.24.0",n=Le,a.fn=Mn,a.min=function(){return We("isBefore",[].slice.call(arguments,0))},a.max=function(){return We("isAfter",[].slice.call(arguments,0))},a.now=function(){return Date.now?Date.now():+new Date},a.utc=f,a.unix=function(t){return Le(1e3*t)},a.months=function(t,e){return Pn(t,e,"months")},a.isDate=u,a.locale=ge,a.invalid=p,a.duration=Xe,a.isMoment=_,a.weekdays=function(t,e,n){return Tn(t,e,n,"weekdays")},a.parseZone=function(){return Le.apply(null,arguments).parseZone()},a.localeData=pe,a.isDuration=Ee,a.monthsShort=function(t,e){return Pn(t,e,"monthsShort")},a.weekdaysMin=function(t,e,n){return Tn(t,e,n,"weekdaysMin")},a.defineLocale=me,a.updateLocale=function(t,e){if(null!=e){var n,i,a=ue;null!=(i=fe(t))&&(a=i._config),e=A(a,e),(n=new F(e)).parentLocale=de[t],de[t]=n,ge(t)}else null!=de[t]&&(null!=de[t].parentLocale?de[t]=de[t].parentLocale:null!=de[t]&&delete de[t]);return de[t]},a.locales=function(){return C(de)},a.weekdaysShort=function(t,e,n){return Tn(t,e,n,"weekdaysShort")},a.normalizeUnits=R,a.relativeTimeRounding=function(t){return void 0===t?Qn:"function"==typeof t&&(Qn=t,!0)},a.relativeTimeThreshold=function(t,e){return void 0!==ti[t]&&(void 0===e?ti[t]:(ti[t]=e,"s"===t&&(ti.ss=e-1),!0))},a.calendarFormat=function(t,e){var n=t.diff(e,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},a.prototype=Mn,a.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},a}()})),mi={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};rn._date.override("function"==typeof gi?{_id:"moment",formats:function(){return mi},parse:function(t,e){return"string"==typeof t&&"string"==typeof e?t=gi(t,e):t instanceof gi||(t=gi(t)),t.isValid()?t.valueOf():null},format:function(t,e){return gi(t).format(e)},add:function(t,e,n){return gi(t).add(e,n).valueOf()},diff:function(t,e,n){return gi(t).diff(gi(e),n)},startOf:function(t,e,n){return t=gi(t),"isoWeek"===e?t.isoWeekday(n).valueOf():t.startOf(e).valueOf()},endOf:function(t,e){return gi(t).endOf(e).valueOf()},_create:function(t){return gi(t)}}:{}),W._set("global",{plugins:{filler:{propagate:!0}}});var pi={dataset:function(t){var e=t.fill,n=t.chart,i=n.getDatasetMeta(e),a=i&&n.isDatasetVisible(e)&&i.dataset._children||[],r=a.length||0;return r?function(t,e){return e=n)&&i;switch(r){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return r;default:return!1}}function bi(t){return(t.el._scale||{}).getPointPositionForValue?function(t){var e,n,i,a,r,o=t.el._scale,s=o.options,l=o.chart.data.labels.length,u=t.fill,d=[];if(!l)return null;for(e=s.ticks.reverse?o.max:o.min,n=s.ticks.reverse?o.min:o.max,i=o.getPointPositionForValue(0,e),a=0;a0;--r)H.canvas.lineTo(t,n[r],n[r-1],!0);else for(o=n[0].cx,s=n[0].cy,l=Math.sqrt(Math.pow(n[0].x-o,2)+Math.pow(n[0].y-s,2)),r=a-1;r>0;--r)t.arc(o,s,l,n[r].angle,n[r-1].angle,!0)}}function ki(t,e,n,i,a,r){var o,s,l,u,d,h,c,f,g=e.length,m=i.spanGaps,p=[],v=[],b=0,y=0;for(t.beginPath(),o=0,s=g;o=0;--n)(e=l[n].$filler)&&e.visible&&(a=(i=e.el)._view,r=i._children||[],o=e.mapper,s=a.backgroundColor||W.global.defaultColor,o&&s&&r.length&&(H.canvas.clipArea(u,t.chartArea),ki(u,r,o,a,s,i._loop),H.canvas.unclipArea(u)))}},Si=H.rtl.getRtlAdapter,Di=H.noop,Ci=H.valueOrDefault;function Pi(t,e){return t.usePointStyle&&t.boxWidth>e?e:t.boxWidth}W._set("global",{legend:{display:!0,position:"top",align:"center",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,i=this.chart,a=i.getDatasetMeta(n);a.hidden=null===a.hidden?!i.data.datasets[n].hidden:null,i.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data.datasets,n=t.options.legend||{},i=n.labels&&n.labels.usePointStyle;return t._getSortedDatasetMetas().map((function(n){var a=n.controller.getStyle(i?0:void 0);return{text:e[n.index].label,fillStyle:a.backgroundColor,hidden:!t.isDatasetVisible(n.index),lineCap:a.borderCapStyle,lineDash:a.borderDash,lineDashOffset:a.borderDashOffset,lineJoin:a.borderJoinStyle,lineWidth:a.borderWidth,strokeStyle:a.borderColor,pointStyle:a.pointStyle,rotation:a.rotation,datasetIndex:n.index}}),this)}}},legendCallback:function(t){var e,n,i,a=document.createElement("ul"),r=t.data.datasets;for(a.setAttribute("class",t.id+"-legend"),e=0,n=r.length;el.width)&&(h+=o+n.padding,d[d.length-(e>0?0:1)]=0),s[e]={left:0,top:0,width:i,height:o},d[d.length-1]+=i+n.padding})),l.height+=h}else{var c=n.padding,f=t.columnWidths=[],g=t.columnHeights=[],m=n.padding,p=0,v=0;H.each(t.legendItems,(function(t,e){var i=Pi(n,o)+o/2+a.measureText(t.text).width;e>0&&v+o+2*c>l.height&&(m+=p+n.padding,f.push(p),g.push(v),p=0,v=0),p=Math.max(p,i),v+=o+c,s[e]={left:0,top:0,width:i,height:o}})),m+=p,f.push(p),g.push(v),l.width+=m}t.width=l.width,t.height=l.height}else t.width=l.width=t.height=l.height=0},afterFit:Di,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,n=e.labels,i=W.global,a=i.defaultColor,r=i.elements.line,o=t.height,s=t.columnHeights,l=t.width,u=t.lineWidths;if(e.display){var d,h=Si(e.rtl,t.left,t.minSize.width),c=t.ctx,f=Ci(n.fontColor,i.defaultFontColor),g=H.options._parseFont(n),m=g.size;c.textAlign=h.textAlign("left"),c.textBaseline="middle",c.lineWidth=.5,c.strokeStyle=f,c.fillStyle=f,c.font=g.string;var p=Pi(n,m),v=t.legendHitBoxes,b=function(t,i){switch(e.align){case"start":return n.padding;case"end":return t-i;default:return(t-i+n.padding)/2}},y=t.isHorizontal();d=y?{x:t.left+b(l,u[0]),y:t.top+n.padding,line:0}:{x:t.left+n.padding,y:t.top+b(o,s[0]),line:0},H.rtl.overrideTextDirection(t.ctx,e.textDirection);var x=m+n.padding;H.each(t.legendItems,(function(e,i){var f=c.measureText(e.text).width,g=p+m/2+f,_=d.x,w=d.y;h.setWidth(t.minSize.width),y?i>0&&_+g+n.padding>t.left+t.minSize.width&&(w=d.y+=x,d.line++,_=d.x=t.left+b(l,u[d.line])):i>0&&w+x>t.top+t.minSize.height&&(_=d.x=_+t.columnWidths[d.line]+n.padding,d.line++,w=d.y=t.top+b(o,s[d.line]));var k=h.x(_);!function(t,e,i){if(!(isNaN(p)||p<=0)){c.save();var o=Ci(i.lineWidth,r.borderWidth);if(c.fillStyle=Ci(i.fillStyle,a),c.lineCap=Ci(i.lineCap,r.borderCapStyle),c.lineDashOffset=Ci(i.lineDashOffset,r.borderDashOffset),c.lineJoin=Ci(i.lineJoin,r.borderJoinStyle),c.lineWidth=o,c.strokeStyle=Ci(i.strokeStyle,a),c.setLineDash&&c.setLineDash(Ci(i.lineDash,r.borderDash)),n&&n.usePointStyle){var s=p*Math.SQRT2/2,l=h.xPlus(t,p/2),u=e+m/2;H.canvas.drawPoint(c,i.pointStyle,s,l,u,i.rotation)}else c.fillRect(h.leftForLtr(t,p),e,p,m),0!==o&&c.strokeRect(h.leftForLtr(t,p),e,p,m);c.restore()}}(k,w,e),v[i].left=h.leftForLtr(k,v[i].width),v[i].top=w,function(t,e,n,i){var a=m/2,r=h.xPlus(t,p+a),o=e+a;c.fillText(n.text,r,o),n.hidden&&(c.beginPath(),c.lineWidth=2,c.moveTo(r,o),c.lineTo(h.xPlus(r,i),o),c.stroke())}(k,w,e,f),y?d.x+=g+n.padding:d.y+=x})),H.rtl.restoreTextDirection(t.ctx,e.textDirection)}},_getLegendItemAt:function(t,e){var n,i,a,r=this;if(t>=r.left&&t<=r.right&&e>=r.top&&e<=r.bottom)for(a=r.legendHitBoxes,n=0;n=(i=a[n]).left&&t<=i.left+i.width&&e>=i.top&&e<=i.top+i.height)return r.legendItems[n];return null},handleEvent:function(t){var e,n=this,i=n.options,a="mouseup"===t.type?"click":t.type;if("mousemove"===a){if(!i.onHover&&!i.onLeave)return}else{if("click"!==a)return;if(!i.onClick)return}e=n._getLegendItemAt(t.x,t.y),"click"===a?e&&i.onClick&&i.onClick.call(n,t.native,e):(i.onLeave&&e!==n._hoveredItem&&(n._hoveredItem&&i.onLeave.call(n,t.native,n._hoveredItem),n._hoveredItem=e),i.onHover&&e&&i.onHover.call(n,t.native,e))}});function Oi(t,e){var n=new Ti({ctx:t.ctx,options:e,chart:t});me.configure(t,n,e),me.addBox(t,n),t.legend=n}var Ai={id:"legend",_element:Ti,beforeInit:function(t){var e=t.options.legend;e&&Oi(t,e)},beforeUpdate:function(t){var e=t.options.legend,n=t.legend;e?(H.mergeIf(e,W.global.legend),n?(me.configure(t,n,e),n.options=e):Oi(t,e)):n&&(me.removeBox(t,n),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}},Fi=H.noop;W._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var Ii=$.extend({initialize:function(t){H.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:Fi,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:Fi,beforeSetDimensions:Fi,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:Fi,beforeBuildLabels:Fi,buildLabels:Fi,afterBuildLabels:Fi,beforeFit:Fi,fit:function(){var t,e=this,n=e.options,i=e.minSize={},a=e.isHorizontal();n.display?(t=(H.isArray(n.text)?n.text.length:1)*H.options._parseFont(n).lineHeight+2*n.padding,e.width=i.width=a?e.maxWidth:t,e.height=i.height=a?t:e.maxHeight):e.width=i.width=e.height=i.height=0},afterFit:Fi,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=t.options;if(n.display){var i,a,r,o=H.options._parseFont(n),s=o.lineHeight,l=s/2+n.padding,u=0,d=t.top,h=t.left,c=t.bottom,f=t.right;e.fillStyle=H.valueOrDefault(n.fontColor,W.global.defaultFontColor),e.font=o.string,t.isHorizontal()?(a=h+(f-h)/2,r=d+l,i=f-h):(a="left"===n.position?h+l:f-l,r=d+(c-d)/2,i=c-d,u=Math.PI*("left"===n.position?-.5:.5)),e.save(),e.translate(a,r),e.rotate(u),e.textAlign="center",e.textBaseline="middle";var g=n.text;if(H.isArray(g))for(var m=0,p=0;p=0;i--){var a=t[i];if(e(a))return a}},H.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},H.almostEquals=function(t,e,n){return Math.abs(t-e)=t},H.max=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.max(t,e)}),Number.NEGATIVE_INFINITY)},H.min=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.min(t,e)}),Number.POSITIVE_INFINITY)},H.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0===(t=+t)||isNaN(t)?t:t>0?1:-1},H.toRadians=function(t){return t*(Math.PI/180)},H.toDegrees=function(t){return t*(180/Math.PI)},H._decimalPlaces=function(t){if(H.isFinite(t)){for(var e=1,n=0;Math.round(t*e)/e!==t;)e*=10,n++;return n}},H.getAngleFromPoint=function(t,e){var n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),r=Math.atan2(i,n);return r<-.5*Math.PI&&(r+=2*Math.PI),{angle:r,distance:a}},H.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},H.aliasPixel=function(t){return t%2==0?0:.5},H._alignPixel=function(t,e,n){var i=t.currentDevicePixelRatio,a=n/2;return Math.round((e-a)*i)/i+a},H.splineCurve=function(t,e,n,i){var a=t.skip?e:t,r=e,o=n.skip?e:n,s=Math.sqrt(Math.pow(r.x-a.x,2)+Math.pow(r.y-a.y,2)),l=Math.sqrt(Math.pow(o.x-r.x,2)+Math.pow(o.y-r.y,2)),u=s/(s+l),d=l/(s+l),h=i*(u=isNaN(u)?0:u),c=i*(d=isNaN(d)?0:d);return{previous:{x:r.x-h*(o.x-a.x),y:r.y-h*(o.y-a.y)},next:{x:r.x+c*(o.x-a.x),y:r.y+c*(o.y-a.y)}}},H.EPSILON=Number.EPSILON||1e-14,H.splineCurveMonotone=function(t){var e,n,i,a,r,o,s,l,u,d=(t||[]).map((function(t){return{model:t._model,deltaK:0,mK:0}})),h=d.length;for(e=0;e0?d[e-1]:null,(a=e0?d[e-1]:null,a=e=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},H.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},H.niceNum=function(t,e){var n=Math.floor(H.log10(t)),i=t/Math.pow(10,n);return(e?i<1.5?1:i<3?2:i<7?5:10:i<=1?1:i<=2?2:i<=5?5:10)*Math.pow(10,n)},H.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},H.getRelativePosition=function(t,e){var n,i,a=t.originalEvent||t,r=t.target||t.srcElement,o=r.getBoundingClientRect(),s=a.touches;s&&s.length>0?(n=s[0].clientX,i=s[0].clientY):(n=a.clientX,i=a.clientY);var l=parseFloat(H.getStyle(r,"padding-left")),u=parseFloat(H.getStyle(r,"padding-top")),d=parseFloat(H.getStyle(r,"padding-right")),h=parseFloat(H.getStyle(r,"padding-bottom")),c=o.right-o.left-l-d,f=o.bottom-o.top-u-h;return{x:n=Math.round((n-o.left-l)/c*r.width/e.currentDevicePixelRatio),y:i=Math.round((i-o.top-u)/f*r.height/e.currentDevicePixelRatio)}},H.getConstraintWidth=function(t){return n(t,"max-width","clientWidth")},H.getConstraintHeight=function(t){return n(t,"max-height","clientHeight")},H._calculatePadding=function(t,e,n){return(e=H.getStyle(t,e)).indexOf("%")>-1?n*parseInt(e,10)/100:parseInt(e,10)},H._getParentNode=function(t){var e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e},H.getMaximumWidth=function(t){var e=H._getParentNode(t);if(!e)return t.clientWidth;var n=e.clientWidth,i=n-H._calculatePadding(e,"padding-left",n)-H._calculatePadding(e,"padding-right",n),a=H.getConstraintWidth(t);return isNaN(a)?i:Math.min(i,a)},H.getMaximumHeight=function(t){var e=H._getParentNode(t);if(!e)return t.clientHeight;var n=e.clientHeight,i=n-H._calculatePadding(e,"padding-top",n)-H._calculatePadding(e,"padding-bottom",n),a=H.getConstraintHeight(t);return isNaN(a)?i:Math.min(i,a)},H.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},H.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==n){var i=t.canvas,a=t.height,r=t.width;i.height=a*n,i.width=r*n,t.ctx.scale(n,n),i.style.height||i.style.width||(i.style.height=a+"px",i.style.width=r+"px")}},H.fontString=function(t,e,n){return e+" "+t+"px "+n},H.longestText=function(t,e,n,i){var a=(i=i||{}).data=i.data||{},r=i.garbageCollect=i.garbageCollect||[];i.font!==e&&(a=i.data={},r=i.garbageCollect=[],i.font=e),t.font=e;var o,s,l,u,d,h=0,c=n.length;for(o=0;on.length){for(o=0;oi&&(i=r),i},H.numberOfLabelLines=function(t){var e=1;return H.each(t,(function(t){H.isArray(t)&&t.length>e&&(e=t.length)})),e},H.color=k?function(t){return t instanceof CanvasGradient&&(t=W.global.defaultColor),k(t)}:function(t){return console.error("Color.js not found!"),t},H.getHoverColor=function(t){return t instanceof CanvasPattern||t instanceof CanvasGradient?t:H.color(t).saturate(.5).darken(.1).rgbString()}}(),en._adapters=rn,en.Animation=K,en.animationService=J,en.controllers=Jt,en.DatasetController=it,en.defaults=W,en.Element=$,en.elements=wt,en.Interaction=re,en.layouts=me,en.platform=Ie,en.plugins=Le,en.Scale=xn,en.scaleService=Re,en.Ticks=on,en.Tooltip=Ge,en.helpers.each(fi,(function(t,e){en.scaleService.registerScaleType(e,t,t._defaults)})),Ri)Ri.hasOwnProperty(zi)&&en.plugins.register(Ri[zi]);en.platform.initialize();var Ei=en;return"undefined"!=typeof window&&(window.Chart=en),en.Chart=en,en.Legend=Ri.legend._element,en.Title=Ri.title._element,en.pluginService=en.plugins,en.PluginBase=en.Element.extend({}),en.canvasHelpers=en.helpers.canvas,en.layoutService=en.layouts,en.LinearScaleBase=Dn,en.helpers.each(["Bar","Bubble","Doughnut","Line","PolarArea","Radar","Scatter"],(function(t){en[t]=function(e,n){return new en(e,en.helpers.merge(n||{},{type:t.charAt(0).toLowerCase()+t.slice(1)}))}})),Ei})); diff --git a/static/libs/amcharts-core.min.js b/static/libs/amcharts-core.min.js new file mode 100644 index 0000000..c1eaec8 --- /dev/null +++ b/static/libs/amcharts-core.min.js @@ -0,0 +1 @@ +!function(t){var e=window.am4internal_webpackJsonp;window.am4internal_webpackJsonp=function(i,o,a){for(var s,u,l,h=0,c=[];h0?(n=i/u)*n:i;return u===1/0?1/0:u*Math.sqrt(o)}})},"/Xnt":function(t,e,i){"use strict";var n=i("T9LF"),r=i("Gb1H"),o=i("wDk4"),a=i("cA+3"),s=i("kFp5"),u=i("hpnp"),l=i("ypVE"),h=i("DvJ+"),c=i("AEc5"),p=i("ID9o"),d=i("bPwn"),f=i("6/bx");t.exports=function(t,e,i,g,m,y){var b=n[t],v=b,x=m?"set":"add",_=v&&v.prototype,P={},w=function(t){var e=_[t];o(_,t,"delete"==t?function(t){return!(y&&!h(t))&&e.call(this,0===t?0:t)}:"has"==t?function(t){return!(y&&!h(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return y&&!h(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,i){return e.call(this,0===t?0:t,i),this})};if("function"==typeof v&&(y||_.forEach&&!c(function(){(new v).entries().next()}))){var O=new v,S=O[x](y?{}:-0,1)!=O,T=c(function(){O.has(1)}),C=p(function(t){new v(t)}),k=!y&&c(function(){for(var t=new v,e=5;e--;)t[x](e,e);return!t.has(-0)});C||((v=e(function(e,i){l(e,v,t);var n=f(new b,e,v);return void 0!=i&&u(i,m,n[x],n),n})).prototype=_,_.constructor=v),(T||k)&&(w("delete"),w("has"),m&&w("get")),(k||S)&&w(x),y&&_.clear&&delete _.clear}else v=g.getConstructor(e,t,m,x),a(v.prototype,i),s.NEED=!0;return d(v,t),P[t]=v,r(r.G+r.W+r.F*(v!=b),P),y||g.setStrong(v,t,m),v}},"/dMO":function(t,e,i){"use strict";var n=i("Gb1H"),r=i("sc+R");n(n.P+n.F*!i("GQop")([].reduce,!0),"Array",{reduce:function(t){return r(this,t,arguments.length,arguments[1],!1)}})},"/e9j":function(t,e,i){"use strict";i.d(e,"a",function(){return s});var n=i("m4/l"),r=i("sxA1"),o=i("3/51"),a=i("aCit"),s=function(t){function e(){var e=t.call(this)||this;return e.className="LinearGradientModifier",e.gradient=new r.a,e.applyTheme(),e}return n.c(e,t),e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.gradient=e.gradient.clone()},e}(o.a);a.b.registeredClasses.LinearGradientModifier=s},0:function(t,e,i){i("bcCe"),t.exports=i("Nv8/")},"0B2R":function(t,e,i){var n=i("Gb1H");n(n.S,"Object",{setPrototypeOf:i("7GtY").set})},"0C8c":function(t,e){var i=Math.expm1;t.exports=!i||i(10)>22025.465794806718||i(10)<22025.465794806718||-2e-17!=i(-2e-17)?function(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Math.exp(t)-1}:i},"0Czv":function(t,e,i){"use strict";i("Mvcd")("sup",function(t){return function(){return t(this,"sup","","")}})},"0FpR":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.linear=o,e.quadIn=a,e.quadOut=s,e.quadInOut=u,e.polyIn=l,e.polyOut=h,e.polyInOut=c,e.polyIn3=p,e.polyOut3=d,e.polyInOut3=f,e.expIn=g,e.expOut=m,e.expInOut=y,e.sinIn=b,e.sinOut=v,e.sinInOut=x,e.cubicIn=_,e.cubicOut=P,e.cubicInOut=w,e.circleIn=O,e.circleOut=S,e.circleInOut=T,e.bounceIn=R,e.bounceOut=L,e.bounceInOut=N,e.elasticIn=W,e.elasticOut=U,e.elasticInOut=z;var n=i("Gg2j"),r=i("aCit");function o(t){return+t}function a(t){return t*t}function s(t){return t*(2-t)}function u(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function l(t,e){return Math.pow(t,e)}function h(t,e){return 1-Math.pow(1-t,e)}function c(t,e){return((t*=2)<=1?Math.pow(t,e):2-Math.pow(2-t,e))/2}function p(t){return l(t,3)}function d(t){return h(t,3)}function f(t){return c(t,3)}function g(t){return Math.pow(2,10*t-10)}function m(t){return 1-Math.pow(2,-10*t)}function y(t){return((t*=2)<=1?Math.pow(2,10*t-10):2-Math.pow(2,10-10*t))/2}function b(t){return 1-Math.cos(t*n.HALFPI)}function v(t){return Math.sin(t*n.HALFPI)}function x(t){return(1-Math.cos(n.PI*t))/2}function _(t){return t*t*t}function P(t){return--t*t*t+1}function w(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}function O(t){return 1-Math.sqrt(1-t*t)}function S(t){return Math.sqrt(1- --t*t)}function T(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}r.b.registeredClasses["ease.linear"]=o,r.b.registeredClasses["ease.quadIn"]=a,r.b.registeredClasses["ease.quadOut"]=s,r.b.registeredClasses["ease.quadInOut"]=u,r.b.registeredClasses["ease.polyIn"]=l,r.b.registeredClasses["ease.polyOut"]=h,r.b.registeredClasses["ease.polyInOut"]=c,r.b.registeredClasses["ease.polyIn3"]=p,r.b.registeredClasses["ease.polyOut3"]=d,r.b.registeredClasses["ease.polyInOut3"]=f,r.b.registeredClasses["ease.expIn"]=g,r.b.registeredClasses["ease.expOut"]=m,r.b.registeredClasses["ease.expInOut"]=y,r.b.registeredClasses["ease.sinIn"]=b,r.b.registeredClasses["ease.sinOut"]=v,r.b.registeredClasses["ease.sinInOut"]=x,r.b.registeredClasses["ease.cubicIn"]=_,r.b.registeredClasses["ease.cubicOut"]=P,r.b.registeredClasses["ease.cubicInOut"]=w,r.b.registeredClasses["ease.circleIn"]=O,r.b.registeredClasses["ease.circleOut"]=S,r.b.registeredClasses["ease.circleInOut"]=T;var C=4/11,k=6/11,I=8/11,D=.75,V=9/11,M=10/11,j=.9375,A=21/22,F=63/64,E=1/C/C;function R(t){return 1-L(1-t)}function L(t){return(t=+t)0){var i=e.maxZoomFactor/e.maxZoomCount;if(v.round(e.end-e.start,3)<1/i)return t=!0,!1}else if(0!=v.round(e.start,3)||1!=v.round(e.end,3))return t=!0,!1;return!0}),x.eachContinue(this.yAxes.iterator(),function(e){if(e.toggleZoomOutButton){if(e.maxZoomCount>0){var i=e.maxZoomFactor/e.maxZoomCount;if(v.round(e.end-e.start,3)<1/i)return t=!0,!1}else if(0!=v.round(e.start,3)||1!=v.round(e.end,3))return t=!0,!1;return!0}}),this.seriesAppeared||(t=!1),t?this.zoomOutButton.show():this.zoomOutButton.hide()}},e.prototype.seriesAppeared=function(){var t=!1;return x.each(this.series.iterator(),function(e){if(!e.appeared)return t=!1,!1}),t},e.prototype.handleYAxisRangeChange=function(){var t=this.getCommonAxisRange(this.yAxes);this.scrollbarY&&this.zoomAxes(this.yAxes,t,!0),this.toggleZoomOutButton(),this.updateScrollbar(this.scrollbarY,t)},e.prototype.updateScrollbar=function(t,e){t&&(t.skipRangeEvents(),t.start=e.start,t.end=e.end)},e.prototype.getCommonAxisRange=function(t){var e,i;return x.each(t.iterator(),function(t){var n=t.start,r=t.end;t.renderer.inversed&&(n=1-t.end,r=1-t.start),(!_.isNumber(e)||ni)&&(i=r)}),{start:e,end:i}},e.prototype.updateXAxis=function(t){var e=t.axis;t.opposite?(e.parent=this.topAxesContainer,e.toFront()):(e.parent=this.bottomAxesContainer,e.toBack()),e.renderer&&e.renderer.processRenderer()},e.prototype.updateYAxis=function(t){var e=t.axis;t.opposite?(e.parent=this.rightAxesContainer,e.toBack()):(e.parent=this.leftAxesContainer,e.toFront()),e.renderer&&e.renderer.processRenderer()},e.prototype.processAxis=function(t){var e=this;t instanceof p.a&&this._dataUsers.moveValue(t);var i=t.renderer;i.gridContainer.parent=this.plotContainer,i.gridContainer.toBack(),i.breakContainer.parent=this.plotContainer,i.breakContainer.toFront(),i.breakContainer.zIndex=10,t.addDisposer(new f.b(function(){e.dataUsers.removeValue(t)})),i.bulletsContainer.parent=this.axisBulletsContainer,this.plotContainer.events.on("maxsizechanged",function(){e.inited&&(t.invalidateDataItems(),e.updateSeriesMasks())},t,!1)},e.prototype.updateSeriesMasks=function(){P.isIE()&&this.series.each(function(t){var e=t.mainContainer.mask;t.mainContainer.mask=void 0,t.mainContainer.mask=e})},Object.defineProperty(e.prototype,"xAxes",{get:function(){return this._xAxes||(this._xAxes=new a.b,this._xAxes.events.on("inserted",this.processXAxis,this,!1),this._xAxes.events.on("removed",this.handleAxisRemoval,this,!1)),this._xAxes},enumerable:!0,configurable:!0}),e.prototype.handleAxisRemoval=function(t){var e=t.oldValue;this.dataUsers.removeValue(e),e.autoDispose&&e.dispose()},Object.defineProperty(e.prototype,"yAxes",{get:function(){return this._yAxes||(this._yAxes=new a.b,this._yAxes.events.on("inserted",this.processYAxis,this,!1),this._yAxes.events.on("removed",this.handleAxisRemoval,this,!1)),this._yAxes},enumerable:!0,configurable:!0}),e.prototype.handleSeriesAdded=function(e){try{t.prototype.handleSeriesAdded.call(this,e);var i=e.newValue;0!=this.xAxes.length&&0!=this.yAxes.length||(y.b.removeFromInvalidComponents(i),i.dataInvalid=!1),P.used(i.xAxis),P.used(i.yAxis),void 0==i.fill&&(this.patterns?(_.hasValue(i.stroke)||(i.stroke=this.colors.next()),i.fill=this.patterns.next(),_.hasValue(i.fillOpacity)&&(i.fill.backgroundOpacity=i.fillOpacity),i.stroke instanceof s.a&&(i.fill.stroke=i.stroke,i.fill.fill=i.stroke)):i.fill=this.colors.next()),_.hasValue(i.stroke)||(i.stroke=i.fill)}catch(t){this.raiseCriticalError(t)}},Object.defineProperty(e.prototype,"cursor",{get:function(){return this._cursor},set:function(t){this._cursor!=t&&(this._cursor&&this.removeDispose(this._cursor),this._cursor=t,t&&(this._disposers.push(t),t.chart=this,t.shouldClone=!1,t.parent=this._cursorContainer,t.events.on("cursorpositionchanged",this.handleCursorPositionChange,this,!1),t.events.on("zoomstarted",this.handleCursorZoomStart,this,!1),t.events.on("zoomended",this.handleCursorZoomEnd,this,!1),t.events.on("panstarted",this.handleCursorPanStart,this,!1),t.events.on("panning",this.handleCursorPanning,this,!1),t.events.on("panended",this.handleCursorPanEnd,this,!1),t.events.on("behaviorcanceled",this.handleCursorCanceled,this,!1),t.events.on("hidden",this.handleHideCursor,this,!1),t.zIndex=Number.MAX_SAFE_INTEGER-1,this.tapToActivate&&this.setTapToActivate(this.tapToActivate)))},enumerable:!0,configurable:!0}),e.prototype.handleCursorPositionChange=function(){var t=this.cursor;if(t.visible&&!t.isHiding){var e=this.cursor.xPosition,i=this.cursor.yPosition;this.showSeriesTooltip({x:e,y:i});var n=void 0,r=t.snapToSeries;if(r){r.baseAxis==r.xAxis&&(n=r.yAxis),r.baseAxis==r.yAxis&&(n=r.xAxis);var o=r.xAxis,a=r.yAxis;if(o instanceof u.a&&!(o instanceof l.a)&&a instanceof u.a&&!(a instanceof l.a)){var s,h=1/0;r.dataItems.each(function(t){var n=o.toGlobalPosition(o.getPositionX(t,"valueX"))*o.axisFullLength,r=a.toGlobalPosition(a.getPositionY(t,"valueY"))*a.axisFullLength,u=Math.sqrt(Math.pow(e*o.axisFullLength-n,2)+Math.pow(i*a.axisFullLength-r,2));u=e.point.y?1:t.point.ye.point.y?1:t.point.y<=e.point.y?-1:void 0});var s=n/t.length,u=P.svgPointToDocument({x:0,y:0},this.svgContainer.SVGContainer).y;if(t.length>0){var l=e.y,h=i.y;P.spritePointToDocument({x:0,y:l},this);var c=!1;if(s>l+(h-l)/2)for(var p=h,d=t.length-1;d>=0;d--){var f=(b=t[d].series).tooltip,g=t[d].point.y;if(f.setBounds({x:0,y:-u,width:this.pixelWidth,height:p+u}),f.invalid&&f.validate(),f.toBack(),(p=P.spritePointToSvg({x:0,y:f.label.pixelY-f.pixelY+g-f.pixelMarginTop},f).y)<-u){c=!0;break}}if(s<=l+(h-l)/2||c)for(var m=l,y=(d=0,t.length);d0||t.dataItems.length>0)&&t.showTooltipAtPosition(e)})},e.prototype.getUpdatedRange=function(t,e){if(t){var i,n;t.renderer.inversed?(v.invertRange(e),i=1-t.end,n=1-t.start):(i=t.start,n=t.end);var r=n-i;return{start:i+e.start*r,end:i+e.end*r}}},e.prototype.handleCursorZoomEnd=function(t){var e=this.cursor,i=e.behavior;if("zoomX"==i||"zoomXY"==i){var n=e.xRange;n&&this.xAxes.length>0&&((n=this.getUpdatedRange(this.xAxes.getIndex(0),n)).priority="start",this.zoomAxes(this.xAxes,n))}if("zoomY"==i||"zoomXY"==i){var r=e.yRange;r&&this.yAxes.length>0&&((r=this.getUpdatedRange(this.yAxes.getIndex(0),r)).priority="start",this.zoomAxes(this.yAxes,r))}this.handleHideCursor()},e.prototype.handleCursorPanStart=function(t){var e=this.xAxes.getIndex(0);e&&(this._panStartXRange={start:e.start,end:e.end});var i=this.yAxes.getIndex(0);i&&(this._panStartYRange={start:i.start,end:i.end})},e.prototype.handleCursorPanEnd=function(t){var e=this.cursor.behavior;if(this._panEndXRange&&("panX"==e||"panXY"==e)){var i=0;(n=this._panEndXRange).start<0&&(i=n.start),n.end>1&&(i=n.end-1),this.zoomAxes(this.xAxes,{start:n.start-i,end:n.end-i},!1,!0),this._panEndXRange=void 0,this._panStartXRange=void 0}if(this._panEndYRange&&("panY"==e||"panXY"==e)){var n;i=0;(n=this._panEndYRange).start<0&&(i=n.start),n.end>1&&(i=n.end-1),this.zoomAxes(this.yAxes,{start:n.start-i,end:n.end-i},!1,!0),this._panEndYRange=void 0,this._panStartYRange=void 0}},e.prototype.handleCursorCanceled=function(){this._panEndXRange=void 0,this._panStartXRange=void 0},e.prototype.handleCursorPanning=function(t){var e=this.cursor,i=e.behavior,n=e.maxPanOut;if(this._panStartXRange&&("panX"==i||"panXY"==i)){var r=this._panStartXRange,o=e.xRange,a=this.getCommonAxisRange(this.xAxes),s=r.end-r.start,u=o.start*(a.end-a.start),l=Math.max(-n,u+r.start),h=Math.min(u+r.end,1+n);l<=0&&(h=l+s),h>=1&&(l=h-s);var c={start:l,end:h};this._panEndXRange=c,this.zoomAxes(this.xAxes,c,!1,!1,e.maxPanOut)}if(this._panStartYRange&&("panY"==i||"panXY"==i)){r=this._panStartYRange,o=e.yRange,a=this.getCommonAxisRange(this.yAxes),s=r.end-r.start,u=o.start*(a.end-a.start),l=Math.max(-n,u+r.start),h=Math.min(u+r.end,1+n);l<=0&&(h=l+s),h>=1&&(l=h-s);c={start:l,end:h};this._panEndYRange=c,this.zoomAxes(this.yAxes,c,!1,!1,e.maxPanOut)}this.handleHideCursor()},e.prototype.handleYAxisSet=function(t){},e.prototype.handleCursorZoomStart=function(t){},Object.defineProperty(e.prototype,"scrollbarX",{get:function(){return this._scrollbarX},set:function(t){var e=this;this._scrollbarX&&this.removeDispose(this._scrollbarX),this._scrollbarX=t,t&&(this._disposers.push(t),t.parent=this.topAxesContainer,t.shouldClone=!1,t.startGrip.exportable=!1,t.endGrip.exportable=!1,t.toBack(),t.orientation="horizontal",t.events.on("rangechanged",this.handleXScrollbarChange,this,!1),t.adapter.add("positionValue",function(t){var i=e.xAxes.getIndex(0);return i&&(t.value=i.getPositionLabel(i.renderer.inversed?1-t.position:t.position)),t}))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"scrollbarY",{get:function(){return this._scrollbarY},set:function(t){var e=this;this._scrollbarY&&this.removeDispose(this._scrollbarY),this._scrollbarY=t,t&&(this._disposers.push(t),t.parent=this.rightAxesContainer,t.startGrip.exportable=!1,t.shouldClone=!1,t.endGrip.exportable=!1,t.toFront(),t.orientation="vertical",t.events.on("rangechanged",this.handleYScrollbarChange,this,!1),t.adapter.add("positionValue",function(t){var i=e.yAxes.getIndex(0);return i&&(t.value=i.getPositionLabel(t.position)),t}))},enumerable:!0,configurable:!0}),e.prototype.handleXScrollbarChange=function(t){if(this.inited){var e=t.target,i=e.range;0==i.start&&(i.priority="start"),1==i.end&&(i.priority="end"),i=this.zoomAxes(this.xAxes,i),e.fixRange(i)}},e.prototype.handleYScrollbarChange=function(t){if(this.inited){var e=t.target,i=e.range;1==i.end&&(i.priority="end"),0==i.start&&(i.priority="start"),i=this.zoomAxes(this.yAxes,i),e.fixRange(i)}},e.prototype.zoomAxes=function(t,e,i,n,r){var o={start:0,end:1};return this.showSeriesTooltip(),this.dataInvalid||x.each(t.iterator(),function(t){if(t.renderer.inversed&&(e=v.invertRange(e)),t.hideTooltip(0),n)if(t instanceof p.a){var a=t.getCellEndPosition(0)-t.getCellStartPosition(0);e.start=t.roundPosition(e.start+a/2-t.startLocation*a,t.startLocation),e.end=t.roundPosition(e.end-a/2+(1-t.endLocation)*a,t.endLocation)}else e.start=t.roundPosition(e.start+1e-4,0,t.startLocation),e.end=t.roundPosition(e.end+1e-4,0,t.endLocation);var s=t.zoom(e,i,i,r);t.renderer.inversed&&(s=v.invertRange(s)),o=s}),o},Object.defineProperty(e.prototype,"maskBullets",{get:function(){return this.getPropertyValue("maskBullets")},set:function(t){this.setPropertyValue("maskBullets",t,!0)&&this.bulletsContainer&&(this.bulletsContainer.mask=t?this._bulletMask:void 0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"arrangeTooltips",{get:function(){return this.getPropertyValue("arrangeTooltips")},set:function(t){this.setPropertyValue("arrangeTooltips",t,!0)},enumerable:!0,configurable:!0}),e.prototype.handleWheel=function(t){var e=this.plotContainer,i=P.documentPointToSvg(t.point,this.htmlContainer,this.svgContainer.cssScale),n=P.svgPointToSprite(i,e),r=t.shift.y;this.handleWheelReal(r,this.mouseWheelBehavior,n)},e.prototype.handleHorizontalWheel=function(t){var e=this.plotContainer,i=P.documentPointToSvg(t.point,this.htmlContainer,this.svgContainer.cssScale),n=P.svgPointToSprite(i,e);this.handleWheelReal(t.shift.x,this.horizontalMouseWheelBehavior,n)},e.prototype.handleWheelReal=function(t,e,i){if(0!=t){var n=this.plotContainer,r=this.getCommonAxisRange(this.xAxes),o=this.getCommonAxisRange(this.yAxes);if("panX"==e||"panXY"==e){var a=r.end-r.start,s=Math.max(-0,r.start+.05*t/100),u=Math.min(r.end+.05*t/100,1);s<=0&&(u=s+a),u>=1&&(s=u-a),this.zoomAxes(this.xAxes,{start:s,end:u})}if("panY"==e||"panXY"==e){t*=-1;var l=o.end-o.start,h=Math.max(-0,o.start+.05*t/100),c=Math.min(o.end+.05*t/100,1);h<=0&&(c=h+l),c>=1&&(h=c-l),this.zoomAxes(this.yAxes,{start:h,end:c})}if("zoomX"==e||"zoomXY"==e){var p=i.x/n.maxWidth;s=Math.max(-0,r.start-.05*t/100*p);s=Math.min(s,r.start+(r.end-r.start)*p-.05*.05);u=Math.min(r.end+.05*t/100*(1-p),1);u=Math.max(u,r.start+(r.end-r.start)*p+.05*.05),this.zoomAxes(this.xAxes,{start:s,end:u})}if("zoomY"==e||"zoomXY"==e){var d=i.y/n.maxHeight;h=Math.max(-0,o.start-.05*t/100*(1-d));h=Math.min(h,o.start+(o.end-o.start)*d-.05*.05);c=Math.min(o.end+.05*t/100*d,1);c=Math.max(c,o.start+(o.end-o.start)*d+.05*.05),this.zoomAxes(this.yAxes,{start:h,end:c})}}},Object.defineProperty(e.prototype,"mouseWheelBehavior",{get:function(){return this.getPropertyValue("mouseWheelBehavior")},set:function(t){this.setPropertyValue("mouseWheelBehavior",t)&&("none"!=t?(this._mouseWheelDisposer=this.plotContainer.events.on("wheel",this.handleWheel,this,!1),this._disposers.push(this._mouseWheelDisposer)):this._mouseWheelDisposer&&(this.plotContainer.wheelable=!1,this.plotContainer.hoverable=!1,this._mouseWheelDisposer.dispose()))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"horizontalMouseWheelBehavior",{get:function(){return this.getPropertyValue("horizontalMouseWheelBehavior")},set:function(t){this.setPropertyValue("horizontalMouseWheelBehavior",t)&&("none"!=t?(this._mouseWheelDisposer2=this.plotContainer.events.on("wheel",this.handleHorizontalWheel,this,!1),this._disposers.push(this._mouseWheelDisposer2)):this._mouseWheelDisposer2&&(this.plotContainer.wheelable=!1,this.plotContainer.hoverable=!1,this._mouseWheelDisposer2.dispose()))},enumerable:!0,configurable:!0}),e.prototype.dataSourceDateFields=function(e){var i=this;return e=t.prototype.dataSourceDateFields.call(this,e),x.each(this.series.iterator(),function(t){e=i.populateDataSourceFields(e,t.dataFields,["dateX","dateY","openDateX","openDateY"])}),e},e.prototype.dataSourceNumberFields=function(e){var i=this;return e=t.prototype.dataSourceDateFields.call(this,e),x.each(this.series.iterator(),function(t){e=i.populateDataSourceFields(e,t.dataFields,["valueX","valueY","openValueX","openValueY"])}),e},e.prototype.processConfig=function(e){if(e){var i=[],n=[];if(_.hasValue(e.xAxes)&&_.isArray(e.xAxes))for(var r=0,o=e.xAxes.length;r0;){var n=this.dataItems.getIndex(0);n&&i.dataItems.remove(n),i.dataUsers.each(function(t){var e=t.dataItems.getIndex(0);e&&t.dataItems.remove(e)}),i._parseDataFrom--,e--}i.invalidateData()}},e.prototype.removeData=function(e){this.scrollbarX instanceof b.a&&this.removeScrollbarData(this.scrollbarX,e),this.scrollbarY instanceof b.a&&this.removeScrollbarData(this.scrollbarY,e),t.prototype.removeData.call(this,e)},e.prototype.setTapToActivate=function(e){t.prototype.setTapToActivate.call(this,e),this.cursor&&(this.cursor.interactions.isTouchProtected=e,this.plotContainer.interactions.isTouchProtected=e)},e.prototype.handleTapToActivate=function(){t.prototype.handleTapToActivate.call(this),this.cursor&&(this.cursor.interactions.isTouchProtected=!1,this.plotContainer.interactions.isTouchProtected=!1)},e.prototype.handleTapToActivateDeactivation=function(){t.prototype.handleTapToActivateDeactivation.call(this),this.cursor&&(this.cursor.interactions.isTouchProtected=!0,this.plotContainer.interactions.isTouchProtected=!0)},e}(r.a);y.b.registeredClasses.XYChart=T,O.c.push({relevant:O.b.maybeXS,state:function(t,e){if(t instanceof T&&t.scrollbarX){var i=t.states.create(e);return t.scrollbarX.states.create(e).properties.disabled=!0,i}return null}}),O.c.push({relevant:O.b.maybeXS,state:function(t,e){if(t instanceof T&&t.scrollbarY){var i=t.states.create(e);return t.scrollbarY.states.create(e).properties.disabled=!0,i}return null}})},"0PyG":function(t,e,i){"use strict";i.d(e,"a",function(){return u});var n=i("m4/l"),r=i("Tjl+"),o=i("zhwk"),a=i("1yyj"),s=i("Mtpk"),u=function(t){function e(e,i,n,r){var o=t.call(this)||this;return o.animations=[],o.className="Inertia",o.interaction=e,o.type=i,o.point=n,o.startPoint=r,o._disposers.push(new a.b(o.animations)),o}return n.c(e,t),Object.defineProperty(e.prototype,"x",{get:function(){return this.point.x},set:function(t){s.isNumber(t)&&(this.point.x=t,this.handleMove())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"y",{get:function(){return this.point.y},set:function(t){s.isNumber(t)&&(this.point.y=t,this.handleMove())},enumerable:!0,configurable:!0}),e.prototype.handleMove=function(){if(this.interaction.events.isEnabled("drag")){var t={type:"drag",target:this.interaction,shift:{x:this.x-this.startPoint.x,y:this.y-this.startPoint.y},startPoint:this.startPoint,point:{x:this.x,y:this.y},touch:!1};this.interaction.events.dispatchImmediately("drag",t)}},e.prototype.done=function(){this.interaction.inertias.removeKey(this.type),"move"===this.type&&Object(o.b)().processDragStop(this.interaction),this.dispose()},e}(r.a)},"0YcW":function(t,e,i){"use strict";var n=i("cA+3"),r=i("kFp5").getWeak,o=i("snR7"),a=i("DvJ+"),s=i("ypVE"),u=i("hpnp"),l=i("dstF"),h=i("U3hN"),c=i("rFJX"),p=l(5),d=l(6),f=0,g=function(t){return t._l||(t._l=new m)},m=function(){this.a=[]},y=function(t,e){return p(t.a,function(t){return t[0]===e})};m.prototype={get:function(t){var e=y(this,t);if(e)return e[1]},has:function(t){return!!y(this,t)},set:function(t,e){var i=y(this,t);i?i[1]=e:this.a.push([t,e])},delete:function(t){var e=d(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,i,o){var l=t(function(t,n){s(t,l,e,"_i"),t._t=e,t._i=f++,t._l=void 0,void 0!=n&&u(n,i,t[o],t)});return n(l.prototype,{delete:function(t){if(!a(t))return!1;var i=r(t);return!0===i?g(c(this,e)).delete(t):i&&h(i,this._i)&&delete i[this._i]},has:function(t){if(!a(t))return!1;var i=r(t);return!0===i?g(c(this,e)).has(t):i&&h(i,this._i)}}),l},def:function(t,e,i){var n=r(o(e),!0);return!0===n?g(t).set(e,i):n[t._i]=i,t},ufstore:g}},"0Zt3":function(t,e,i){var n=i("DvJ+"),r=i("DVYA"),o=i("YEtG")("match");t.exports=function(t){var e;return n(t)&&(void 0!==(e=t[o])?!!e:"RegExp"==r(t))}},"0jav":function(t,e,i){var n=i("Gb1H"),r=i("DVYA");n(n.S,"Error",{isError:function(t){return"Error"===r(t)}})},"0v9/":function(t,e,i){var n,r,o,a=i("20m4"),s=i("yOPk"),u=i("Ax3V"),l=i("+wz8"),h=i("T9LF"),c=h.process,p=h.setImmediate,d=h.clearImmediate,f=h.MessageChannel,g=h.Dispatch,m=0,y={},b=function(){var t=+this;if(y.hasOwnProperty(t)){var e=y[t];delete y[t],e()}},v=function(t){b.call(t.data)};p&&d||(p=function(t){for(var e=[],i=1;arguments.length>i;)e.push(arguments[i++]);return y[++m]=function(){s("function"==typeof t?t:Function(t),e)},n(m),m},d=function(t){delete y[t]},"process"==i("DVYA")(c)?n=function(t){c.nextTick(a(b,t,1))}:g&&g.now?n=function(t){g.now(a(b,t,1))}:f?(o=(r=new f).port2,r.port1.onmessage=v,n=a(o.postMessage,o,1)):h.addEventListener&&"function"==typeof postMessage&&!h.importScripts?(n=function(t){h.postMessage(t+"","*")},h.addEventListener("message",v,!1)):n="onreadystatechange"in l("script")?function(t){u.appendChild(l("script")).onreadystatechange=function(){u.removeChild(this),b.call(t)}}:function(t){setTimeout(a(b,t,1),0)}),t.exports={set:p,clear:d}},"0yJt":function(t,e,i){"use strict";var n=i("Gb1H"),r=i("mntN")(!0);n(n.P,"Array",{includes:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),i("M/YL")("includes")},"17ao":function(t,e,i){var n=i("T9LF").parseInt,r=i("nAZS").trim,o=i("brDO"),a=/^[-+]?0[xX]/;t.exports=8!==n(o+"08")||22!==n(o+"0x16")?function(t,e){var i=r(String(t),3);return n(i,e>>>0||(a.test(i)?16:10))}:n},"1DgP":function(t,e,i){"use strict";var n=function(t,e){var i;function n(){var n,r,o=i.length,a=0,s=0;for(n=0;n=(o=(g+y)/2))?g=o:y=o,(h=i>=(a=(m+b)/2))?m=a:b=a,r=d,!(d=d[c=h<<1|l]))return r[c]=f,t;if(s=+t._x.call(null,d.data),u=+t._y.call(null,d.data),e===s&&i===u)return f.next=d,r?r[c]=f:t._root=f,t;do{r=r?r[c]=new Array(4):t._root=new Array(4),(l=e>=(o=(g+y)/2))?g=o:y=o,(h=i>=(a=(m+b)/2))?m=a:b=a}while((c=h<<1|l)==(p=(u>=a)<<1|s>=o));return r[p]=d,r[c]=f,t}var o=function(t,e,i,n,r){this.node=t,this.x0=e,this.y0=i,this.x1=n,this.y1=r};function a(t){return t[0]}function s(t){return t[1]}function u(t,e,i){var n=new l(null==e?a:e,null==i?s:i,NaN,NaN,NaN,NaN);return null==t?n:n.addAll(t)}function l(t,e,i,n,r,o){this._x=t,this._y=e,this._x0=i,this._y0=n,this._x1=r,this._y1=o,this._root=void 0}function h(t){for(var e={data:t.data},i=e;t=t.next;)i=i.next={data:t.data};return e}var c=u.prototype=l.prototype;c.copy=function(){var t,e,i=new l(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root;if(!n)return i;if(!n.length)return i._root=h(n),i;for(t=[{source:n,target:i._root=new Array(4)}];n=t.pop();)for(var r=0;r<4;++r)(e=n.source[r])&&(e.length?t.push({source:e,target:n.target[r]=new Array(4)}):n.target[r]=h(e));return i},c.add=function(t){var e=+this._x.call(null,t),i=+this._y.call(null,t);return r(this.cover(e,i),e,i,t)},c.addAll=function(t){var e,i,n,o,a=t.length,s=new Array(a),u=new Array(a),l=1/0,h=1/0,c=-1/0,p=-1/0;for(i=0;ic&&(c=n),op&&(p=o));if(l>c||h>p)return this;for(this.cover(l,h).cover(c,p),i=0;it||t>=r||n>e||e>=o;)switch(s=(ed||(a=l.y0)>f||(s=l.x1)=b)<<1|t>=y)&&(l=g[g.length-1],g[g.length-1]=g[g.length-1-h],g[g.length-1-h]=l)}else{var v=t-+this._x.call(null,m.data),x=e-+this._y.call(null,m.data),_=v*v+x*x;if(_=(s=(f+m)/2))?f=s:m=s,(h=a>=(u=(g+y)/2))?g=u:y=u,e=d,!(d=d[c=h<<1|l]))return this;if(!d.length)break;(e[c+1&3]||e[c+2&3]||e[c+3&3])&&(i=e,p=c)}for(;d.data!==t;)if(n=d,!(d=d.next))return this;return(r=d.next)&&delete d.next,n?(r?n.next=r:delete n.next,this):e?(r?e[c]=r:delete e[c],(d=e[0]||e[1]||e[2]||e[3])&&d===(e[3]||e[2]||e[1]||e[0])&&!d.length&&(i?i[p]=d:this._root=d),this):(this._root=r,this)},c.removeAll=function(t){for(var e=0,i=t.length;el+f||rh+f||os.index){var g=l-a.x-a.vx,m=h-a.y-a.vy,y=g*g+m*m;yt.r&&(t.r=t[e].r)}function s(){if(e){var n,r,o=e.length;for(i=new Array(o),n=0;n=0&&(i=t.slice(n+1),t=t.slice(0,n)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:i}})}(t+"",n),o=-1,a=r.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++o0)for(var i,n,r=new Array(i),o=0;o=0&&e._call.call(null,t),e=e._next;--D}()}finally{D=0,function(){var t,e,i=k,n=1/0;for(;i;)i._call?(n>i._time&&(n=i._time),t=i,i=i._next):(e=i._next,i._next=null,i=t?t._next=e:k=e);I=t,z(n)}(),F=0}}function U(){var t=R.now(),e=t-A;e>j&&(E-=e,A=t)}function z(t){D||(V&&(V=clearTimeout(V)),t-F>24?(t<1/0&&(V=setTimeout(W,t-R.now()-E)),M&&(M=clearInterval(M))):(M||(A=R.now(),M=setInterval(U,j)),D=1,L(W)))}H.prototype=G.prototype={constructor:H,restart:function(t,e,i){if("function"!=typeof t)throw new TypeError("callback is not a function");i=(null==i?N():+i)+(null==e?0:+e),this._next||I===this||(I?I._next=this:k=this,I=this),this._call=t,this._time=i,z()},stop:function(){this._call&&(this._call=null,this._time=1/0,z())}};function Y(t){return t.x}function X(t){return t.y}var K=10,Z=Math.PI*(3-Math.sqrt(5)),q=function(t){var e,i=1,n=.001,r=1-Math.pow(n,1/300),o=0,a=.6,s=new Map,u=G(h),l=T("tick","end");function h(){c(),l.call("tick",e),i1?(null==i?s.delete(t):s.set(t,d(i)),e):s.get(t)},find:function(e,i,n){var r,o,a,s,u,l=0,h=t.length;for(null==n?n=1/0:n*=n,l=0;l1?(l.on(t,i),e):l.on(t)}}},J=function(){var t,e,i,n,r=p(-30),o=1,a=1/0,s=.81;function l(n){var r,o=t.length,a=u(t,Y,X).visitAfter(c);for(i=n,r=0;r=a)){(t.data!==e||t.next)&&(0===h&&(f+=(h=d())*h),0===c&&(f+=(c=d())*c),fe.getHitOption(this.interactions,"hitTolerance")){switch(this._generalBehavior){case"zoom":this.dispatch("zoomended");break;case"select":this.dispatch("selectended");break;case"pan":this.dispatch("panended"),e.setGlobalStyle(u.a.default)}this.downPoint=void 0,this.updateSelection()}},e.prototype.updateSelection=function(){},e.prototype.getPositions=function(){this.xPosition=this.point.x/this.innerWidth,this.yPosition=1-this.point.y/this.innerHeight},e.prototype.handleCursorDown=function(t){if(!(!this.interactionsEnabled||this.interactions.isTouchProtected&&t.touch)&&Object(o.b)().isLocalElement(t.pointer,this.paper.svg,this.uid)){var e=h.documentPointToSprite(t.pointer.point,this);this._downPointOrig={x:e.x,y:e.y},t.event.cancelable&&this.shouldPreventGestures(t.touch)&&this.fitsToBounds(e)&&t.event.preventDefault(),this.triggerMove(e),this.triggerDown(e)}},e.prototype.shouldPreventGestures=function(t){return!0},e.prototype.updatePoint=function(t){},e.prototype.handleCursorUp=function(t){if(this.interactionsEnabled&&(("zoom"==this._generalBehavior||"pan"==this._generalBehavior)&&this.downPoint||Object(o.b)().isLocalElement(t.pointer,this.paper.svg,this.uid))){var e=h.documentPointToSprite(t.pointer.point,this);this._upPointOrig={x:e.x,y:e.y},this.triggerMove(e),this.triggerUp(e)}},Object.defineProperty(e.prototype,"chart",{get:function(){return this._chart},set:function(t){this._chart=t,c.hasValue(this._chart.plotContainer)&&Object(o.b)().lockElement(this._chart.plotContainer.interactions)},enumerable:!0,configurable:!0}),e}(r.a);a.b.registeredClasses.Cursor=d},"1Vzv":function(t,e,i){var n=i("Gb1H"),r=i("17ao");n(n.G+n.F*(parseInt!=r),{parseInt:r})},"1lef":function(t,e,i){"use strict";var n=i("Gb1H"),r=i("kcsd"),o=i("FmWr"),a=i("0Zt3"),s=i("x2K9"),u=RegExp.prototype,l=function(t,e){this._r=t,this._s=e};i("Cekr")(l,"RegExp String",function(){var t=this._r.exec(this._s);return{value:t,done:null===t}}),n(n.P,"String",{matchAll:function(t){if(r(this),!a(t))throw TypeError(t+" is not a regexp!");var e=String(this),i="flags"in u?String(t.flags):s.call(t),n=new RegExp(t.source,~i.indexOf("g")?i:"g"+i);return n.lastIndex=o(t.lastIndex),new l(n,e)}})},"1qam":function(t,e,i){"use strict";i.d(e,"a",function(){return a});var n=i("m4/l"),r=i("Vs7R"),o=i("Mtpk"),a=function(t){function e(){var e=t.call(this)||this;return e.className="PointedShape",e.pointerBaseWidth=15,e.pointerLength=10,e.pointerY=0,e.pointerX=0,e.applyTheme(),e}return n.c(e,t),e.prototype.draw=function(){t.prototype.draw.call(this),o.isNumber(this.pointerX)||(this.pointerX=this.pixelWidth/2),o.isNumber(this.pointerY)||(this.pointerY=this.pixelHeight+10)},Object.defineProperty(e.prototype,"pointerBaseWidth",{get:function(){return this.getPropertyValue("pointerBaseWidth")},set:function(t){this.setPropertyValue("pointerBaseWidth",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pointerLength",{get:function(){return this.getPropertyValue("pointerLength")},set:function(t){this.setPropertyValue("pointerLength",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pointerX",{get:function(){return this.getPropertyValue("pointerX")},set:function(t){this.setPropertyValue("pointerX",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pointerY",{get:function(){return this.getPropertyValue("pointerY")},set:function(t){this.setPropertyValue("pointerY",t,!0)},enumerable:!0,configurable:!0}),e}(r.a)},"1yyj":function(t,e,i){"use strict";e.c=function(t,e){var i=!1,n=Date.now();return l.a(function r(o){if(!i){var a=o-n;a>=t?e(1):(l.a(r),e(a/t))}}),new a.b(function(){i=!0})},i.d(e,"b",function(){return x}),i.d(e,"a",function(){return _});var n=i("m4/l"),r=i("Tjl+"),o=i("hpNl"),a=i("hD5A"),s=i("8ZqG"),u=i("tjMS"),l=i("/9XX"),h=i("0FpR"),c=i("hxI2"),p=i("Gg2j"),d=i("hJ5i"),f=i("Mtpk"),g=i("Rpw0");function m(t,e,i){return e+(i-e)*t}function y(t,e,i){return new u.a(m(t,e.percent,i.percent))}function b(t,e,i){return new s.a(c.interpolate(e.rgb,i.rgb,t))}function v(t,e){return e+t.charAt(0).toUpperCase()+t.substr(1)}var x=function(){function t(t){this._disposer=new a.b(function(){for(;0!==t.length;)t[0].dispose()})}return t.prototype.isDisposed=function(){return this._disposer.isDisposed()},t.prototype.dispose=function(){this._disposer.dispose()},t}(),_=function(t){function e(e,i,n,r){var o=t.call(this)||this;return o.duration=0,o.easing=h.linear,o.progress=0,o._loop=0,o._pause=!1,o._delayTimeout=null,o._time=0,o._isFinished=!1,o.className="Animation",o.object=e,o.animationOptions=d.toArray(i),o.duration=n,r&&(o.easing=r),o.applyTheme(),o}return n.c(e,t),e.prototype.debug=function(){},e.prototype.dispose=function(){t.prototype.dispose.call(this),this.pause()},e.prototype.delay=function(t){var e=this;if(t>0){this.pause(),d.move(this.object.animations,this);var i=setTimeout(function(){e._delayTimeout=null,e.start()},t);this._delayTimeout=new a.b(function(){clearTimeout(i)})}return this},e.prototype._start=function(){this._isFinished=!1,this._delayTimeout&&(this.removeDispose(this._delayTimeout),this._delayTimeout=null),this.stopSameAnimations(),this._pause=!1,d.move(g.b.animations,this),d.move(this.object.animations,this),g.b.requestFrame()},e.prototype.start=function(){this._start(),this._startTime=Date.now(),this._time=0,this.staticOptions=[];for(var t=this.animationOptions.length-1;t>=0;t--){var e=this.animationOptions[t];if(f.hasValue(e.from)||(e.childObject?e.from=e.childObject[e.property]:(e.from=this.object[e.property],f.hasValue(e.from)||(e.from=o.a[e.property]))),e.from==e.to)d.remove(this.animationOptions,e);else if(f.hasValue(e.from))if(f.isNumber(e.to))if(e.updateMethod=m,e.from instanceof u.a){var i=this.object[v(e.property,"pixel")];isNaN(i)?(this.staticOptions.push(e),d.remove(this.animationOptions,e)):e.from=i}else isNaN(e.from)&&(this.staticOptions.push(e),d.remove(this.animationOptions,e));else if(e.to instanceof s.a)e.from?e.updateMethod=b:(this.staticOptions.push(e),d.remove(this.animationOptions,e));else if(e.to instanceof u.a){if(e.updateMethod=y,!isNaN(e.from)){i=this.object[v(e.property,"relative")];isNaN(i)||(e.from=Object(u.c)(100*i))}}else this.staticOptions.push(e),d.remove(this.animationOptions,e);else this.staticOptions.push(e),d.remove(this.animationOptions,e)}if(this.applyStaticOptions(),this.events.isEnabled("animationstarted")){var n={type:"animationstarted",target:this,progress:this.progress};this.events.dispatchImmediately("animationstarted",n)}return this.update(),0===this.duration&&this.end(),this},e.prototype.loop=function(t){return f.isNumber(t)||(t=1/0),this._loop=t,this},e.prototype.pause=function(){return this._pause=!0,this._delayTimeout&&(this.removeDispose(this._delayTimeout),this._delayTimeout=null),d.remove(g.b.animations,this),d.remove(this.object.animations,this),this},e.prototype.resume=function(){return this._start(),this._startTime=Date.now()-this._time,this},e.prototype.end=function(){if(0==this._loop&&this.pause(),this.setProgress(1),this.applyStaticOptions(),this.events.isEnabled("animationended")){var t={type:"animationended",target:this,progress:this.progress};this.events.dispatchImmediately("animationended",t)}return this._loop>0?(this._loop--,this.start()):(this.stop(),this._isFinished=!0),this},e.prototype.kill=function(){this.pause(),this._isFinished=!0},e.prototype.isFinished=function(){return this._isFinished},e.prototype.applyStaticOptions=function(){var t=this;d.each(this.staticOptions,function(e){e.childObject?e.childObject[e.property]=1==t.progress?e.to:e.from:t.object[e.property]=1==t.progress?e.to:e.from})},e.prototype.stop=function(t){if(this.pause(),!t&&this.events.isEnabled("animationstopped")){var e={type:"animationstopped",target:this,progress:this.progress};this.events.dispatchImmediately("animationstopped",e)}return this},e.prototype.setProgress=function(t){var e=this;if(this._time=this.duration*t,d.each(this.animationOptions,function(i){if(i.updateMethod&&f.hasValue(i.from)){var n=i.updateMethod(t,i.from,i.to);i.childObject?i.childObject[i.property]=n:e.object[i.property]=n}}),this.progress=t,this.events.isEnabled("animationprogress")){var i={type:"animationprogress",target:this,progress:this.progress};this.events.dispatchImmediately("animationprogress",i)}g.b.requestFrame()},e.prototype.update=function(){if(!this._pause){var t=void 0;this._time=p.fitToRange(Date.now()-this._startTime,0,this.duration);var e=this._time/this.duration;t=this.easing(e),(0==this.duration||!f.isNumber(t)||e>=1)&&(t=1),this.setProgress(t),1==p.round(this._time/this.duration,6)&&this.end()}return this},Object.defineProperty(e.prototype,"delayed",{get:function(){return!!this._delayTimeout},enumerable:!0,configurable:!0}),e.prototype.stopSameAnimations=function(){var t=this;d.each(d.copy(this.object.animations),function(e){if(e!==t&&!e.delayed){var i=[];d.each(t.animationOptions,function(t){d.each(e.animationOptions,function(n){t.property==n.property&&t.childObject==n.childObject&&(i.push(n),0==e.animationOptions.length&&e.kill())})}),d.each(i,function(t){d.remove(e.animationOptions,t)})}})},e.prototype.asFunction=function(e){return"easing"==e||t.prototype.asIs.call(this,e)},e}(r.b)},"2/6D":function(t,e,i){"use strict";var n=i("M/YL"),r=i("36h5"),o=i("9BM3"),a=i("EhJv");t.exports=i("Uobz")(Array,"Array",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,i=this._i++;return!t||i>=t.length?(this._t=void 0,r(1)):r(0,"keys"==e?i:"values"==e?t[i]:[i,t[i]])},"values"),o.Arguments=o.Array,n("keys"),n("values"),n("entries")},"20m4":function(t,e,i){var n=i("DbOM");t.exports=function(t,e,i){if(n(t),void 0===e)return t;switch(i){case 1:return function(i){return t.call(e,i)};case 2:return function(i,n){return t.call(e,i,n)};case 3:return function(i,n,r){return t.call(e,i,n,r)}}return function(){return t.apply(e,arguments)}}},"2Dqo":function(t,e,i){var n=i("6MWL"),r=i("snR7"),o=i("K0ev"),a=n.has,s=n.key;n.exp({hasMetadata:function(t,e){return function t(e,i,n){if(a(e,i,n))return!0;var r=o(i);return null!==r&&t(e,r,n)}(t,r(e),arguments.length<3?void 0:s(arguments[2]))}})},"2I/e":function(t,e,i){"use strict";i.d(e,"b",function(){return f}),i.d(e,"a",function(){return g});var n=i("m4/l"),r=i("VIOb"),o=i("vMqJ"),a=i("C6dT"),s=i("aM7D"),u=i("tjMS"),l=i("DHte"),h=i("aCit"),c=i("Wglt"),p=i("Mtpk"),d=i("hD5A"),f=function(t){function e(){var e=t.call(this)||this;return e.className="SerialChartDataItem",e.applyTheme(),e}return n.c(e,t),e}(r.b),g=function(t){function e(){var e=t.call(this)||this;e.className="SerialChart",e.colors=new l.a,e._usesData=!1;var i=e.chartContainer.createChild(a.a);i.shouldClone=!1,i.width=Object(u.c)(100),i.height=Object(u.c)(100),i.isMeasured=!1,i.layout="none",i.zIndex=2,e.seriesContainer=i;var n=e.chartContainer.createChild(a.a);return n.shouldClone=!1,n.width=Object(u.c)(100),n.height=Object(u.c)(100),n.isMeasured=!1,n.zIndex=3,n.layout="none",e.bulletsContainer=n,e.applyTheme(),e}return n.c(e,t),e.prototype.dispose=function(){t.prototype.dispose.call(this),this.colors&&this.colors.dispose(),this.patterns&&this.patterns.dispose()},e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),p.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Serial chart"))},Object.defineProperty(e.prototype,"series",{get:function(){var t=this;return this._series||(this._series=new o.e(this.createSeries()),this._series.events.on("inserted",function(e){t.handleSeriesAdded(e)},void 0,!1),this._series.events.on("removed",function(e){var i=e.oldValue;t.dataUsers.removeValue(i),t.dataUsers.each(function(t){t.invalidateDataItems()}),i.autoDispose&&i.dispose(),t.feedLegend()},void 0,!1),this._disposers.push(new o.c(this._series)),this._disposers.push(this._series.template)),this._series},enumerable:!0,configurable:!0}),e.prototype.handleSeriesAdded=function(t){var e=this,i=t.newValue;i.isDisposed()||(i.chart=this,i.parent=this.seriesContainer,i.bulletsContainer.parent=this.bulletsContainer,this._dataUsers.moveValue(i),i.addDisposer(new d.b(function(){e.dataUsers.removeValue(i)})),this.handleSeriesAdded2(i),this.feedLegend())},e.prototype.handleSeriesAdded2=function(t){this.dataInvalid||t.data&&0!=t.data.length||this.invalidateData()},e.prototype.feedLegend=function(){var t=this.legend;if(t){var e=[];c.each(this.series.iterator(),function(t){t.hiddenInLegend||e.push(t)}),t.dataFields.name="name",t.data=e}},e.prototype.createSeries=function(){return new s.a},Object.defineProperty(e.prototype,"colors",{get:function(){return this.getPropertyValue("colors")},set:function(t){this.setPropertyValue("colors",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"patterns",{get:function(){return this.getPropertyValue("patterns")},set:function(t){this.setPropertyValue("patterns",t,!0)},enumerable:!0,configurable:!0}),e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.series.copyFrom(e.series)},e.prototype.appear=function(){t.prototype.appear.call(this),this.series.each(function(t){t.showOnInit&&t.inited&&t.appear()})},e}(r.a);h.b.registeredClasses.SerialChart=g},"2Nze":function(t,e,i){"use strict";var n=i("x2K9"),r=RegExp.prototype.exec,o=String.prototype.replace,a=r,s=function(){var t=/a/,e=/b*/g;return r.call(t,"a"),r.call(e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),u=void 0!==/()??/.exec("")[1];(s||u)&&(a=function(t){var e,i,a,l,h=this;return u&&(i=new RegExp("^"+h.source+"$(?!\\s)",n.call(h))),s&&(e=h.lastIndex),a=r.call(h,t),s&&a&&(h.lastIndex=h.global?a.index+a[0].length:e),u&&a&&a.length>1&&o.call(a[0],i,function(){for(l=1;l1&&("horizontal"==this.orientation?O.minGridDistance=this.measuredWidth/this.markerCount:O.minGridDistance=this.measuredHeight/this.markerCount),this.valueAxis.invalidate();m=this.markerCount;for(var S=this.markers.length;m0?n:i)(t)}},"4DCw":function(t,e,i){"use strict";i.d(e,"a",function(){return u});var n=i("m4/l"),r=i("mIpt"),o=i("Mtpk"),a=i("hJ5i"),s=[",",";","\t"],u=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.contentType="text/csv",e.options={delimiter:"",reverse:!1,skipRows:0,skipEmpty:!0,useColumnNames:!1},e}return n.c(e,t),e.isCSV=function(t){return!!e.getDelimiterFromData(t)},e.getDelimiterFromData=function(t){var e,i=t.split("\n"),n=i.length;return a.each(s,function(t){for(var r=0,o=0,a=0;a1)){o=0;break}if(0===o)o=r;else if(r!=o){o=0;break}}o&&(e=t)}),e},e.prototype.parse=function(t){this.options.delimiter||(this.options.delimiter=e.getDelimiterFromData(t));var i,n,r,a=this.CSVToArray(t,this.options.delimiter),s=o.hasValue(this.options.emptyAs),u=this.parsableNumbers,l=this.parsableDates,h=[],c=[];for(n=0;n1||"".split(/.?/).length?function(t,e){var r=String(this);if(void 0===t&&0===e)return[];if(!n(t))return i.call(r,t,e);for(var o,a,s,u=[],h=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),c=0,d=void 0===e?4294967295:e>>>0,f=new RegExp(t.source,h+"g");(o=l.call(f,r))&&!((a=f.lastIndex)>c&&(u.push(r.slice(c,o.index)),o.length>1&&o.index=d));)f.lastIndex===o.index&&f.lastIndex++;return c===r.length?!s&&f.test("")||u.push(""):u.push(r.slice(c)),u.length>d?u.slice(0,d):u}:"0".split(void 0,0).length?function(t,e){return void 0===t&&0===e?[]:i.call(this,t,e)}:i,[function(i,n){var r=t(this),o=void 0==i?void 0:i[e];return void 0!==o?o.call(i,r,n):f.call(String(r),i,n)},function(t,e){var n=h(f,t,this,e,f!==i);if(n.done)return n.value;var l=r(t),p=String(this),g=o(l,RegExp),m=l.unicode,y=(l.ignoreCase?"i":"")+(l.multiline?"m":"")+(l.unicode?"u":"")+(d?"y":"g"),b=new g(d?l:"^(?:"+l.source+")",y),v=void 0===e?4294967295:e>>>0;if(0===v)return[];if(0===p.length)return null===u(b,p)?[p]:[];for(var x=0,_=0,P=[];_document.F=Object<\/script>"),t.close(),u=t.F;n--;)delete u.prototype[o[n]];return u()};t.exports=Object.create||function(t,e){var i;return null!==t?(s.prototype=n(t),i=new s,s.prototype=null,i[a]=t):i=u(),void 0===e?i:r(i,e)}},"57Qg":function(t,e,i){var n=i("Gb1H"),r=i("sxbc");n(n.S,"Math",{cbrt:function(t){return r(t=+t)*Math.pow(Math.abs(t),1/3)}})},"58Sn":function(t,e,i){"use strict";i.d(e,"a",function(){return h}),i.d(e,"e",function(){return c}),i.d(e,"d",function(){return p}),e.g=function(t,e,i,n){return t.addEventListener(e,i,n||!1),new o.b(function(){t.removeEventListener(e,i,n||!1)})},e.q=function(t){if(l.isString(t)){var e=document.getElementById(t);if(null==e&&(e=document.getElementsByClassName(t)[0]),e instanceof HTMLElement)return e}else if(t instanceof HTMLElement)return t},e.f=function(t,e){if(!t)return;if(t.classList)t.classList.add(e);else{var i=t.getAttribute("class");i?t.setAttribute("class",i.split(" ").filter(function(t){return t!==e}).join(" ")+" "+e):t.setAttribute("class",e)}},e.x=function(t,e){if(!t)return;if(t.classList)t.classList.remove(e);else{var i=t.getAttribute("class");i&&t.setAttribute("class",i.split(" ").filter(function(t){return t!==e}).join(" "))}},e.y=function(t,e,i){t.style[e]=i},e.p=d,e.h=function(){var t=document.createElement("input");t.style.position="fixed",t.style.top="0px",t.style.left="-10000px",document.body.appendChild(t),t.focus(),t.blur(),document.body.removeChild(t)},e.o=function(t){if(t instanceof HTMLElement)t.focus();else{var e=document.createElement("input"),i=document.createElementNS(h,"foreignObject");i.appendChild(e),t.appendChild(i),e.focus(),e.disabled=!0,i.remove()}},e.v=function(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div"),i=t.cloneNode(!0);e.appendChild(i);var n=e.innerHTML;return n},e.s=function(t){return t instanceof Object&&t&&1===t.nodeType},e.i=function(t,e){var i=e;for(;;){if(t===i)return!0;if(null==i.parentNode){if(null==i.host)return!1;i=i.host}else i=i.parentNode}},e.r=function(t){var e=t.ownerDocument,i=t;for(;;){if(null==i.parentNode)return i===e||null!=i.host?i:null;i=i.parentNode}},e.k=function(t){return"function"==typeof t.composedPath?t.composedPath()[0]:t.target},e.j=function(t,e){u.each(t.attributes,function(t){null!=t.value&&e.setAttribute(t.name,t.value)})},e.n=function(t){Object(a.c)(function(){try{var e=t.getBoundingClientRect(),i=e.left-Math.round(e.left),n=e.top-Math.round(e.top);0!==i&&Object(a.f)(function(){t.style.left=i+"px"}),0!==n&&Object(a.f)(function(){t.style.top=n+"px"})}catch(t){}})},i.d(e,"c",function(){return g}),i.d(e,"b",function(){return y}),e.w=function(t){if("loading"!==document.readyState)t();else{var e=function(){"loading"!==document.readyState&&(document.removeEventListener("readystatechange",e),t())};document.addEventListener("readystatechange",e)}},e.l=function t(e){var i=d(e,"font-family");if(i)return i;var n=e.parentElement||e.parentNode;return n?t(n):void 0},e.m=function t(e){var i=d(e,"font-size");if(i)return i;var n=e.parentElement||e.parentNode;return n?t(n):void 0},e.u=function(t){return null===t.offsetParent},e.t=function t(e,i){var n=e.getBoundingClientRect();if(i){if(!t(i))return!1;var r=i.getBoundingClientRect();return n.top>=0&&n.left>=0&&n.top<=r.top+r.height&&n.left<=r.left+r.width}return n.top>=0&&n.left>=0&&n.top<=(window.innerHeight||document.documentElement.clientHeight)&&n.left<=(window.innerWidth||document.documentElement.clientWidth)};var n,r=i("m4/l"),o=i("hD5A"),a=i("/9XX"),s=i("Qkdp"),u=i("hJ5i"),l=i("Mtpk"),h="http://www.w3.org/2000/svg",c="http://www.w3.org/2000/xmlns/",p="http://www.w3.org/1999/xlink";function d(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)}function f(){if(!l.hasValue(n)){var t=document.createElement("style");t.type="text/css",document.head.appendChild(t),n=t.sheet}return n}var g=function(t){function e(e,i){var n=t.call(this,function(){var t=f(),e=u.indexOf(t.cssRules,n._rule);if(-1===e)throw new Error("Could not dispose StyleRule");t.deleteRule(e)})||this;return n._rule=function(t){var e=f(),i=e.cssRules.length;return e.insertRule(t+"{}",i),e.cssRules[i]}(e),s.each(i,function(t,e){n.setStyle(t,e)}),n}return r.c(e,t),Object.defineProperty(e.prototype,"selector",{get:function(){return this._rule.selectorText},set:function(t){this._rule.selectorText=t},enumerable:!0,configurable:!0}),e.prototype._setVendorPrefixName=function(t,e){var i=this._rule.style;i.setProperty("-webkit-"+t,e,""),i.setProperty("-moz-"+t,e,""),i.setProperty("-ms-"+t,e,""),i.setProperty("-o-"+t,e,""),i.setProperty(t,e,"")},e.prototype.setStyle=function(t,e){"transition"===t?this._setVendorPrefixName(t,e):this._rule.style.setProperty(t,e,"")},e}(o.b),m=0,y=function(t){function e(e,i){var n=this,r=l.hasValue(i)?i:"__style_"+ ++m+"__";return(n=t.call(this,"."+r,e)||this)._className=r,n}return r.c(e,t),Object.defineProperty(e.prototype,"className",{get:function(){return this._className},set:function(t){this._className=t,this.selector="."+t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this._className},e}(g)},"5BRL":function(t,e,i){"use strict";var n=i("Gb1H"),r=i("EhJv"),o=[].join;n(n.P+n.F*(i("sHIJ")!=Object||!i("GQop")(o)),"Array",{join:function(t){return o.call(r(this),void 0===t?",":t)}})},"5LIN":function(t,e,i){var n=i("Gb1H"),r=i("AzI1"),o=Math.sqrt,a=Math.acosh;n(n.S+n.F*!(a&&710==Math.floor(a(Number.MAX_VALUE))&&a(1/0)==1/0),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:r(t-1+o(t-1)*o(t+1))}})},"5Les":function(t,e,i){var n=i("Gb1H");n(n.S,"Number",{isInteger:i("hcxM")})},"5lay":function(t,e,i){var n=i("Gb1H"),r=i("G5U1"),o=i("AEc5");t.exports=function(t,e){var i=(r.Object||{})[t]||Object[t],a={};a[t]=e(i),n(n.S+n.F*o(function(){i(1)}),"Object",a)}},"5vid":function(t,e,i){"use strict";i.d(e,"b",function(){return _}),i.d(e,"a",function(){return P});var n=i("m4/l"),r=i("Uf57"),o=i("Vs7R"),a=i("C6dT"),s=i("vMqJ"),u=i("+qIf"),l=i("pR7v"),h=i("VB2N"),c=i("aCit"),p=i("DG6Q"),d=i("CnhP"),f=i("tjMS"),g=i("Gg2j"),m=i("Qkdp"),y=i("Wglt"),b=i("hJ5i"),v=i("Mtpk"),x=i("hD5A"),_=function(t){function e(){var e=t.call(this)||this;return e.className="ColumnSeriesDataItem",e.locations.dateX=.5,e.locations.dateY=.5,e.locations.categoryX=.5,e.locations.categoryY=.5,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"column",{get:function(){return this._column},set:function(t){this.setColumn(t)},enumerable:!0,configurable:!0}),e.prototype.setColumn=function(t){var e=this;if(this._column&&t!=this._column&&b.remove(this.sprites,this._column),this._column=t,t){var i=t.dataItem;i&&i!=this&&(i.column=void 0),this.addSprite(t),this._disposers.push(new x.b(function(){e.component&&e.component.columns.removeValue(t)}))}},Object.defineProperty(e.prototype,"rangesColumns",{get:function(){return this._rangesColumns||(this._rangesColumns=new u.a),this._rangesColumns},enumerable:!0,configurable:!0}),e}(r.b),P=function(t){function e(){var e=t.call(this)||this;e._startLocation=0,e._endLocation=1,e.className="ColumnSeries",e.width=Object(f.c)(100),e.height=Object(f.c)(100),e.strokeOpacity=0,e.fillOpacity=1,e.clustered=!0;var i=e.mainContainer.createChild(a.a);return i.shouldClone=!1,i.isMeasured=!1,i.layout="none",e._columnsContainer=i,e.columns.template.pixelPerfect=!1,e.tooltipColorSource=e.columns.template,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"columnsContainer",{get:function(){return this._columnsContainer},enumerable:!0,configurable:!0}),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),v.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Column Series"))},e.prototype.createDataItem=function(){return new _},e.prototype.validate=function(){var i=this;if(this.chart&&this.xAxis&&this.yAxis){var n=this.chart.series,r=0,o=0;y.each(n.iterator(),function(t){t instanceof e&&i.baseAxis==t.baseAxis&&((!t.stacked&&t.clustered||0===r)&&r++,t==i&&(o=r-1))});var a=this.baseAxis.renderer,s=a.cellStartLocation,u=a.cellEndLocation;this._startLocation=s+o/r*(u-s),this._endLocation=s+(o+1)/r*(u-s)}t.prototype.validate.call(this);for(var l=0;lthis.endIndex;l--){h=this.dataItems.getIndex(l);this.disableUnusedColumns(h)}},e.prototype.validateDataElement=function(e){this.chart&&this.xAxis&&this.yAxis&&(this.validateDataElementReal(e),t.prototype.validateDataElement.call(this,e))},e.prototype.getStartLocation=function(t){var e=this._startLocation;return this.baseAxis==this.xAxis?e+=t.locations[this.xOpenField]-.5:e+=t.locations[this.yOpenField]-.5,e},e.prototype.getEndLocation=function(t){var e=this._endLocation;return this.baseAxis==this.xAxis?e+=t.locations[this.xField]-.5:e+=t.locations[this.yField]-.5,e},e.prototype.validateDataElementReal=function(t){var e,i,n,r,a=this,s=this.getStartLocation(t),u=this.getEndLocation(t),c=this.xField,p=this.xOpenField,d=this.yField,f=this.yOpenField,b=this.columns.template,x=b.percentWidth,_=b.percentHeight,P=b.pixelWidth,w=b.pixelHeight,O=b.maxWidth,S=b.maxHeight,T=b.pixelPaddingLeft,C=b.pixelPaddingRight,k=b.pixelPaddingTop,I=b.pixelPaddingBottom,D=!1;if(this.xAxis instanceof h.a&&this.yAxis instanceof h.a){if(!t.hasValue(this._xValueFields)||!t.hasValue(this._yValueFields))return;if(s=0,u=1,!v.isNaN(x))s+=A=g.round((u-s)*(1-x/100)/2,5),u-=A;if(e=this.xAxis.getX(t,p,s),i=this.xAxis.getX(t,c,u),v.isNaN(x))e+=A=(i-e-P)/2,i-=A;if(!v.isNaN(O)&&Oj&&r>j)&&(D=!0),n=this.fixVerticalCoordinate(n),r=this.fixVerticalCoordinate(r),Math.abs(i-e)-T-C==0&&(D=!0)}else{if(!t.hasValue(this._xValueFields))return;var A;if(!v.isNaN(_))s+=A=g.round((u-s)*(1-_/100)/2,5),u-=A;if(n=this.yAxis.getY(t,f,s),r=this.yAxis.getY(t,d,u),v.isNaN(_))r-=A=(r-n-w)/2,n+=A;if(!v.isNaN(S)&&Sj&&e>j)&&(D=!0),i=this.fixHorizontalCoordinate(i),e=this.fixHorizontalCoordinate(e),Math.abs(n-r)-k-I==0&&(D=!0)}var R,L=Math.abs(i-e),N=Math.abs(r-n),B=Math.min(e,i),H=Math.min(n,r);D?this.disableUnusedColumns(t):(t.column?R=t.column:(R=this.columns.create(),m.copyProperties(this,R,o.b),m.copyProperties(this.columns.template,R,o.b),t.addSprite(R),t.column=R,R.paper=this.paper,this.itemsFocusable()?(this.role="menu",R.role="menuitem",R.focusable=!0):(this.role="list",R.role="listitem",R.focusable=!1),R.focusable&&(R.events.on("focus",function(e){R.readerTitle=a.populateString(a.itemReaderText,t)},void 0,!1),R.events.on("blur",function(t){R.readerTitle=""},void 0,!1)),R.hoverable&&(R.events.on("over",function(e){R.readerTitle=a.populateString(a.itemReaderText,t)},void 0,!1),R.events.on("out",function(t){R.readerTitle=""},void 0,!1))),R.width=L,R.height=N,R.x=B,R.y=H,R.realX=e,R.realY=n,R.realWidth=i-e,R.realHeight=r-n,R.parent=this.columnsContainer,R.virtualParent=this,this.setColumnStates(R),R.invalid&&R.validate(),R.__disabled=!1,y.each(this.axisRanges.iterator(),function(e){var i=t.rangesColumns.getKey(e.uid);i||(i=a.columns.create(),m.copyProperties(e.contents,i,o.b),t.addSprite(i),t.rangesColumns.setKey(e.uid,i),i.paper=a.paper),i.parent=e.contents,i.width=L,i.height=N,i.x=B,i.y=H,a.setColumnStates(i),i.invalid&&i.validate(),i.__disabled=!1}));t.itemWidth=L,t.itemHeight=N},e.prototype.disableUnusedColumns=function(t){t&&(t.column&&(t.column.width=0,t.column.height=0,t.column.__disabled=!0),y.each(this.axisRanges.iterator(),function(e){var i=t.rangesColumns.getKey(e.uid);i&&(i.width=0,i.height=0,i.__disabled=!0)}))},e.prototype.setColumnStates=function(t){if(this._dropFromOpenState||this._dropFromPreviousState||this._riseFromOpenState||this._riseFromPreviousState){var e=t.dataItem;if(this.xAxis instanceof l.a||this.yAxis instanceof l.a){var i,n=void 0,r=void 0;this.baseAxis==this.yAxis?this.xOpenField&&this.xField&&this.xAxis instanceof l.a&&(i=e.getValue(this.xOpenField),n=e.getValue(this.xField),r=e.getValue(this.xAxis.axisFieldName+"X","previousChange")):this.yOpenField&&this.yField&&this.yAxis instanceof l.a&&(i=e.getValue(this.yOpenField),n=e.getValue(this.yField),r=e.getValue(this.yAxis.axisFieldName+"Y","previousChange")),n")}),c=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var i="ab".split(t);return 2===i.length&&"a"===i[0]&&"b"===i[1]}();t.exports=function(t,e,i){var p=s(t),d=!o(function(){var e={};return e[p]=function(){return 7},7!=""[t](e)}),f=d?!o(function(){var e=!1,i=/a/;return i.exec=function(){return e=!0,null},"split"===t&&(i.constructor={},i.constructor[l]=function(){return i}),i[p](""),!e}):void 0;if(!d||!f||"replace"===t&&!h||"split"===t&&!c){var g=/./[p],m=i(a,p,""[t],function(t,e,i,n,r){return e.exec===u?d&&!r?{done:!0,value:g.call(e,i,n)}:{done:!0,value:t.call(i,e,n)}:{done:!1}}),y=m[0],b=m[1];n(String.prototype,t,y),r(RegExp.prototype,p,2==e?function(t,e){return b.call(t,this,e)}:function(t){return b.call(t,this)})}}},"7Va9":function(t,e,i){var n=i("Gb1H"),r=i("T9LF").isFinite;n(n.S,"Number",{isFinite:function(t){return"number"==typeof t&&r(t)}})},"7XB+":function(t,e,i){"use strict";i.d(e,"a",function(){return c});var n=i("m4/l"),r=i("P/bD"),o=i("Tjl+"),a=i("MipW"),s=i("aCit"),u=i("ScGY"),l=i("v9UT"),h=i("Mtpk"),c=function(t){function e(){var e=t.call(this)||this;return e._dateFormat="yyyy-MM-dd",e._inputDateFormat="yyyy-MM-dd",e._utc=!1,e._firstDayOfWeek=1,e._months=["January","February","March","April","May","June","July","August","September","October","November","December"],e._monthsShort=["Jan","Feb","Mar","Apr","May(short)","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],e._weekdays=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],e._weekdaysShort=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],e._outputFormat="svg",e.capitalize=!0,e.className="DateFormatter",e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"language",{get:function(){return this._language},set:function(t){this._language=t,this.dateFormat=this._language.translate("_date")},enumerable:!0,configurable:!0}),e.prototype.format=function(t,e){var i,n;if(this.language||(this.sprite?this.language=this.sprite.language:this.language=new r.a),void 0!==e&&""!==e||(e=this._dateFormat),n=h.isString(t)?this.parse(t):l.anyToDate(t),e instanceof Object)return this.intlLocales?new Intl.DateTimeFormat(this.intlLocales,e).format(n):new Intl.DateTimeFormat(void 0,e).format(n);e=l.cleanFormat(e);var o=this.parseFormat(e);return h.hasValue(this.timezoneOffset)&&n.setMinutes(n.getMinutes()+n.getTimezoneOffset()-this.timezoneOffset),h.isNumber(n.getTime())?(i=this.applyFormat(n,o,this.language),this.capitalize&&(i=i.replace(/^.{1}/,i.substr(0,1).toUpperCase())),i):this.language.translate("Invalid date")},e.prototype.parseFormat=function(t){var e=this.getCache(t);if(h.hasValue(e))return e;for(var i={template:"",parts:[]},n=Object(a.b)().chunk(t,!0),r=0;r1&&v--,b="YYYY"==e.parts[m]?Math.abs(v).toString():Math.abs(v).toString().substr(-e.parts[m].length),v<0&&(b+=i.translate("_era_bc"));break;case"u":break;case"MMMMM":b=i.translate(this._months[r]).substr(0,1);break;case"MMMM":b=i.translate(this._months[r]);break;case"MMM":b=i.translate(this._monthsShort[r]);break;case"MM":b=l.padString(r+1,2,"0");break;case"M":b=(r+1).toString();break;case"ww":b=l.padString(l.getWeek(t,this.utc),2,"0");break;case"w":b=l.getWeek(t,this.utc).toString();break;case"W":b=l.getMonthWeek(t,this.utc).toString();break;case"dd":b=l.padString(a,2,"0");break;case"d":b=a.toString();break;case"DD":case"DDD":b=l.padString(l.getYearDay(t,this.utc).toString(),e.parts[m].length,"0");break;case"D":b=l.getYearDay(t,this.utc).toString();break;case"F":case"g":break;case"t":b=i.translateFunc("_dateOrd").call(this,a);break;case"E":b=(o||7).toString();break;case"EE":b=l.padString((o||7).toString(),2,"0");break;case"EEE":case"eee":b=i.translate(this._weekdaysShort[o]);break;case"EEEE":case"eeee":b=i.translate(this._weekdays[o]);break;case"EEEEE":case"eeeee":b=i.translate(this._weekdays[o]).substr(0,1);break;case"e":case"ee":b=(o-this.firstDayOfWeek+1).toString(),"ee"==e.parts[m]&&(b=l.padString(b,2,"0"));break;case"a":b=s>=12?i.translate("PM"):i.translate("AM");break;case"aa":b=s>=12?i.translate("P.M."):i.translate("A.M.");break;case"aaa":b=s>=12?i.translate("P"):i.translate("A");break;case"h":b=l.get12Hours(s).toString();break;case"hh":b=l.padString(l.get12Hours(s),2,"0");break;case"H":b=s.toString();break;case"HH":b=l.padString(s,2,"0");break;case"K":b=l.get12Hours(s,0).toString();break;case"KK":b=l.padString(l.get12Hours(s,0),2,"0");break;case"k":b=(s+1).toString();break;case"kk":b=l.padString(s+1,2,"0");break;case"m":b=h.toString();break;case"mm":b=l.padString(h,2,"0");break;case"s":b=c.toString();break;case"ss":b=l.padString(c,2,"0");break;case"S":case"SS":case"SSS":b=Math.round(p/1e3*Math.pow(10,e.parts[m].length)).toString();break;case"x":b=g.toString();break;case"n":case"nn":case"nnn":b=l.padString(p,e.parts[m].length,"0");break;case"z":b=l.getTimeZone(t,!1,!1,this.utc);break;case"zz":b=l.getTimeZone(t,!0,!1,this.utc);break;case"zzz":b=l.getTimeZone(t,!1,!0,this.utc);break;case"zzzz":b=l.getTimeZone(t,!0,!0,this.utc);break;case"Z":case"ZZ":var x=Math.abs(f)/60,_=Math.floor(x),P=60*x-60*_;this.utc&&(_=0,P=0),"Z"==e.parts[m]?(b="GMT",b+=f>0?"-":"+",b+=l.padString(_,2)+":"+l.padString(P,2)):(b=f>0?"-":"+",b+=l.padString(_,2)+l.padString(P,2));break;case"i":b=t.toISOString();break;case"I":b=t.toUTCString()}d=d.replace(u.d,b)}return d},e.prototype.parse=function(t,e){if(h.hasValue(e)||(e=this.inputDateFormat),t instanceof Date)return t;if("number"==typeof t)return new Date(t);var i;"string"!=typeof t&&(t=t.toString()),this.language||(this.sprite?this.language=this.sprite.language:this.language=new r.a);var n="";e=(e=l.cleanFormat(e)).substr(0,t.length);for(var o=this.parseFormat(e),a={year:-1,year3:-1,year2:-1,year1:-1,month:-1,monthShort:-1,monthLong:-1,weekdayShort:-1,weekdayLong:-1,day:-1,yearDay:-1,week:-1,hourBase0:-1,hour12Base0:-1,hourBase1:-1,hour12Base1:-1,minute:-1,second:-1,millisecond:-1,millisecondDigits:-1,am:-1,zone:-1,timestamp:-1,iso:-1},s={year:1970,month:0,day:1,hour:0,minute:0,second:0,millisecond:0,timestamp:null,offset:0,utc:this.utc},u=0,c=0,p=0;p-1&&(s.year=parseInt(f[a.year])),a.year3>-1){var g=parseInt(f[a.year3]);g+=1e3,s.year=g}if(a.year2>-1){g=parseInt(f[a.year2]);g+=g>50?1e3:2e3,s.year=g}if(a.year1>-1){g=parseInt(f[a.year1]);g=10*Math.floor((new Date).getFullYear()/10)+g,s.year=g}if(a.monthLong>-1&&(s.month=this.resolveMonth(f[a.monthLong])),a.monthShort>-1&&(s.month=this.resolveShortMonth(f[a.monthShort])),a.month>-1&&(s.month=parseInt(f[a.month])-1),a.week>-1&&-1===a.day&&(s.month=0,s.day=l.getDayFromWeek(parseInt(f[a.week]),s.year,1,this.utc)),a.day>-1&&(s.day=parseInt(f[a.day])),a.yearDay>-1&&(s.month=0,s.day=parseInt(f[a.yearDay])),a.hourBase0>-1&&(s.hour=parseInt(f[a.hourBase0])),a.hourBase1>-1&&(s.hour=parseInt(f[a.hourBase1])-1),a.hour12Base0>-1)11==(g=parseInt(f[a.hour12Base0]))&&(g=0),a.am>-1&&!this.isAm(f[a.am])&&(g+=12),s.hour=g;if(a.hour12Base1>-1)12==(g=parseInt(f[a.hour12Base1]))&&(g=0),a.am>-1&&!this.isAm(f[a.am])&&(g+=12),s.hour=g;if(a.minute>-1&&(s.minute=parseInt(f[a.minute])),a.second>-1&&(s.second=parseInt(f[a.second])),a.millisecond>-1){g=parseInt(f[a.millisecond]);2==a.millisecondDigits?g*=10:1==a.millisecondDigits&&(g*=100),s.millisecond=g}if(a.timestamp>-1&&(s.timestamp=parseInt(f[a.timestamp])),a.zone>-1){var m=f[a.zone].replace(/:/,""),y=h.getValue(m.match(/([+\-]?)([0-9]{2})([0-9]{2})/)),b=y[1],v=y[2],x=y[3],_=60*parseInt(v)+parseInt(x);"+"==b&&(_*=-1);var P=_-(new Date).getTimezoneOffset();s.offset=P}a.iso>-1&&("Z"!=f[a.iso+7]&&"z"!=f[a.iso+7]||(s.utc=!0),s.year=h.toNumber(f[a.iso+0]),s.month=h.toNumber(f[a.iso+1])-1,s.day=h.toNumber(f[a.iso+2]),s.hour=h.toNumber(f[a.iso+3]),s.minute=h.toNumber(f[a.iso+4]),s.second=h.toNumber(f[a.iso+5]),s.millisecond=h.toNumber(f[a.iso+6])),i=s.utc?new Date(Date.UTC(s.year,s.month,s.day,s.hour,s.minute,s.second,s.millisecond)):new Date(s.year,s.month,s.day,s.hour,s.minute,s.second,s.millisecond)}else i=new Date(t);return i},e.prototype.resolveMonth=function(t){var e=this._months.indexOf(t);return e>-1?e:this.language&&!this.language.isDefault()&&(e=this.language.translateAll(this._months).indexOf(t))>-1?e:0},e.prototype.resolveShortMonth=function(t){var e=this._monthsShort.indexOf(t);return e>-1?e:this.language&&!this.language.isDefault()&&(e=this.language.translateAll(this._monthsShort).indexOf(t))>-1?e:0},e.prototype.isAm=function(t){return this.getStringList(["AM","A.M.","A"]).indexOf(t.toUpperCase())>-1},e.prototype.invalidateSprite=function(){this.sprite&&this.sprite.invalidate()},e.prototype.getStringList=function(t){for(var e=[],i=0;i>>16)*o+r*(65535&n>>>16)<<16>>>0)}})},"8ujI":function(t,e,i){"use strict";var n=i("Gb1H"),r=i("dstF")(2);n(n.P+n.F*!i("GQop")([].filter,!0),"Array",{filter:function(t){return r(this,t,arguments[1])}})},"9BM3":function(t,e){t.exports={}},"9MGJ":function(t,e,i){"use strict";var n=i("Gb1H"),r=i("vJiZ"),o=i("DbOM"),a=i("hjwn");i("gD3S")&&n(n.P+i("3/+B"),"Object",{__defineSetter__:function(t,e){a.f(r(this),t,{set:o(e),enumerable:!0,configurable:!0})}})},"9UcF":function(t,e,i){var n=i("Gb1H");n(n.S,"Object",{create:i("5+SK")})},"9ZsQ":function(t,e,i){"use strict";i.d(e,"a",function(){return a});var n=i("m4/l"),r=i("ZoDA"),o=i("aCit"),a=function(t){function e(){var e=t.call(this)||this;return e.className="DateAxisBreak",e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"startDate",{get:function(){return this.getPropertyValue("startDate")},set:function(t){this.setPropertyValue("startDate",t)&&(this.startValue=t.getTime(),this.axis&&(this.axis.invalidate(),this.axis.invalidateSeries()))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endDate",{get:function(){return this.getPropertyValue("endDate")},set:function(t){this.setPropertyValue("endDate",t)&&(this.endValue=t.getTime(),this.axis&&(this.axis.invalidate(),this.axis.invalidateSeries()))},enumerable:!0,configurable:!0}),e}(r.a);o.b.registeredClasses.DateAxisBreak=a},"9i/o":function(t,e,i){"use strict";var n=i("AEc5"),r=Date.prototype.getTime,o=Date.prototype.toISOString,a=function(t){return t>9?t:"0"+t};t.exports=n(function(){return"0385-07-25T07:06:39.999Z"!=o.call(new Date(-5e13-1))})||!n(function(){o.call(new Date(NaN))})?function(){if(!isFinite(r.call(this)))throw RangeError("Invalid time value");var t=this,e=t.getUTCFullYear(),i=t.getUTCMilliseconds(),n=e<0?"-":e>9999?"+":"";return n+("00000"+Math.abs(e)).slice(n?-6:-4)+"-"+a(t.getUTCMonth()+1)+"-"+a(t.getUTCDate())+"T"+a(t.getUTCHours())+":"+a(t.getUTCMinutes())+":"+a(t.getUTCSeconds())+"."+(i>99?i:"0"+a(i))+"Z"}:o},A6AV:function(t,e,i){"use strict";i.d(e,"a",function(){return h});var n=i("m4/l"),r=i("Tjl+"),o=i("x79X"),a=i("1yyj"),s=i("v9UT"),u=i("hJ5i"),l=i("Mtpk"),h=function(t){function e(){var e=t.call(this)||this;return e._disabled=!1,e.hasProperties=!1,e.values={},e.categories={},e.dates={},e.locations={},e.workingLocations={},e.properties={},e.sprites=[],e.isTemplate=!1,e._index=null,e._visible=!0,e._hidden=!1,e._ignoreMinMax=!1,e.hasChildren={},e.isHiding=!1,e._valueAnimations={},e._locationAnimations={},e.className="DataItem",e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"adapter",{get:function(){return this._adapterO||(this._adapterO=new o.a(this)),this._adapterO},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"index",{get:function(){return this.component&&null!=this._index?this._index:-1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"animations",{get:function(){return this._animations||(this._animations=[],this._disposers.push(new a.b(this._animations))),this._animations},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"visible",{get:function(){return!this._hidden&&this._visible},set:function(t){t&&(this.hidden=!1),this._visible!=t&&this.setVisibility(t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hidden",{get:function(){return this._hidden},set:function(t){this._hidden!=t&&(this._hidden=t,t?this.setVisibility(!1):this.setVisibility(!0,!0))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"__disabled",{get:function(){return this._disabled},set:function(t){this._disabled=t,u.each(this.sprites,function(e){e.__disabled=t})},enumerable:!0,configurable:!0}),e.prototype.setVisibility=function(t,e){if(u.each(this.sprites,function(e){t?e.visible=e.defaultState.properties.visible:e.hiddenState?e.visible=e.hiddenState.properties.visible:e.visible=!1}),this._visible=t,this._eventDispatcher&&this.events.isEnabled("visibilitychanged")){var i={type:"visibilitychanged",target:this,visible:t};this.events.dispatchImmediately("visibilitychanged",i)}},e.prototype.show=function(t,e,i){var n,r=this;if(!this.hidden)return this.setVisibility(!0,!0),this.isHiding=!1,this._hideDisposer&&this.removeDispose(this._hideDisposer),i&&u.each(i,function(i){n=r.setWorkingValue(i,r.values[i].value,t,e)}),u.each(this.sprites,function(i){var n=i.show(t);null==n||n.isFinished()||(r._disposers.push(n),null!=e&&e>0&&n.delay(e))}),n},e.prototype.dispose=function(){t.prototype.dispose.call(this),u.each(this.sprites,function(t){t.dispose()}),this.sprites=[]},e.prototype.hide=function(t,e,i,n){var r=this;if(this.isHiding=!0,u.each(this.sprites,function(i){var n=i.hide(t);null==n||n.isFinished()||(r._disposers.push(n),null!=e&&e>0&&n.delay(e))}),l.isNumber(i)&&n){var o;if(u.each(n,function(n){var a=r.setWorkingValue(n,i,t,e);a&&(o=a)}),o&&!o.isFinished())return this._hideDisposer=o.events.on("animationended",function(){r.setVisibility(!1,!0),r.isHiding=!1}),this._disposers.push(this._hideDisposer),o;this.isHiding=!1,this.setVisibility(!1,!0)}else this.isHiding=!1,this.setVisibility(!1)},e.prototype.getDuration=function(t){if(!l.isNumber(t)){var e=this.component;e&&(t=e.interpolationDuration)}if(null!=t)return this._adapterO?this._adapterO.apply("duration",t):t},e.prototype.getValue=function(t,e){if(t&&this.component){e||(e=this.component.dataFields[t+"Show"])||(e="value");var i=this.values[t][e];return this._adapterO&&this._adapterO.isEnabled("value")?this._adapterO.apply("value",{value:i,field:t}).value:i}},e.prototype.getWorkingValue=function(t){if(t&&this.component){var e=this.component.dataFields[t+"Show"];return e||(e="workingValue"),this._adapterO?this._adapterO.apply("workingValue",{workingValue:this.values[t][e],field:t}).workingValue:this.values[t][e]}},e.prototype.getActualWorkingValue=function(t){return this.values[t].workingValue},e.prototype.setValue=function(t,e,i,n){var r=this.values[t].value,o=this.getDuration(i);if(r!==(e=l.toNumber(e))){if(this.values[t].value=e,this._eventDispatcher&&this.events.isEnabled("valuechanged")){var a={type:"valuechanged",target:this,property:t};this.events.dispatchImmediately("valuechanged",a)}this.component&&this.component.handleDataItemValueChange(this,t)}this.setWorkingValue(t,e,o,n)},e.prototype.setCalculatedValue=function(t,e,i){if(this.values[t][i]!==e&&l.isNumber(e)){if(this.values[t][i]=e,this._eventDispatcher&&this.events.isEnabled("calculatedvaluechanged")){var n={type:"calculatedvaluechanged",target:this,property:t};this.events.dispatchImmediately("calculatedvaluechanged",n)}this.component&&this.component.handleDataItemCalculatedValueChange(this,t)}},e.prototype.setWorkingValue=function(t,e,i,n){if(l.isNumber(this.values[t].value)){var r=this.getDuration(i),o=this.values[t].workingValue;if(null!=r&&r>0&&l.isNumber(o)&&this.component){if(o!=e){var a=this.animate({childObject:this.values[t],property:"workingValue",from:o,to:e,dummyData:t},r,this.component.interpolationEasing);return null!=n&&a.delay(n),a.events.on("animationstarted",this.handleInterpolationProgress,this),a.events.on("animationprogress",this.handleInterpolationProgress,this),a.events.on("animationended",this.handleInterpolationProgress,this),this._valueAnimations[t]=a,a}(s=this._valueAnimations[t])&&s.stop(),this.values[t].workingValue=e}else{var s;if((s=this._valueAnimations[t])&&s.stop(),this.values[t].workingValue=e,this._eventDispatcher&&this.events.isEnabled("workingvaluechanged")){var u={type:"workingvaluechanged",target:this,property:t};this.events.dispatchImmediately("workingvaluechanged",u)}this.component&&this.component.handleDataItemWorkingValueChange(this,t)}}},e.prototype.setLocation=function(t,e,i,n){if(this.locations[t]!==e){if(this.locations[t]=e,this._eventDispatcher&&this.events.isEnabled("locationchanged")){var r={type:"locationchanged",target:this,property:t};this.events.dispatchImmediately("locationchanged",r)}this.component&&this.component.handleDataItemValueChange(this,t),this.setWorkingLocation(t,e,i,n)}},e.prototype.setWorkingLocation=function(t,e,i,n){var r=this.getDuration(i),o=this.workingLocations[t];if(null!=r&&r>0&&l.isNumber(o)&&this.component){if(o!=e){var a=this.animate({childObject:this.workingLocations,property:t,from:o,to:e,dummyData:t},r,this.component.interpolationEasing);return null!=n&&a.delay(n),a.events.on("animationstarted",this.handleInterpolationProgress,this),a.events.on("animationprogress",this.handleInterpolationProgress,this),a.events.on("animationended",this.handleInterpolationProgress,this),this._locationAnimations[t]=a,a}(s=this._locationAnimations[t])&&s.stop(),this.workingLocations[t]=e}else{var s;if((s=this._locationAnimations[t])&&s.stop(),this.workingLocations[t]=e,this._eventDispatcher&&this.events.isEnabled("workinglocationchanged")){var u={type:"workinglocationchanged",target:this,property:t};this.events.dispatchImmediately("workinglocationchanged",u)}this.component&&this.component.handleDataItemWorkingLocationChange(this,t)}},e.prototype.setDate=function(t,e,i){!l.isDate(e)&&this.component&&(e=this.component.dateFormatter.parse(e)),this.dates[t]!==e&&(this.dates[t]=e,this.setValue(t,e.getTime(),i))},e.prototype.getDate=function(t){return this._adapterO?this._adapterO.apply("date",{date:this.dates[t],field:t}).date:this.dates[t]},e.prototype.setProperty=function(t,e){if(this.properties[t]!==e){if(this.hasProperties=!0,this.properties[t]=e,this._eventDispatcher&&this.events.isEnabled("propertychanged")){var i={type:"propertychanged",target:this,property:t,value:e};this.events.dispatchImmediately("propertychanged",i)}this.component&&this.component.handleDataItemPropertyChange(this,t)}},e.prototype.setCategory=function(t,e){l.isString(e)||(e=l.castString(e)),this.categories[t]!==e&&(this.categories[t]=e)},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),e.dataContext&&(this.dataContext=s.copy(e.dataContext,{})),s.copyProperties(e.locations,this.locations),e._adapterO&&this.adapter.copyFrom(e._adapterO),this.component=e.component},Object.defineProperty(e.prototype,"opacity",{set:function(t){u.each(this.sprites,function(e){e.opacity=t})},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ignoreMinMax",{get:function(){return this._ignoreMinMax},set:function(t){if(this._ignoreMinMax=t,this._eventDispatcher&&this.events.isEnabled("propertychanged")){var e={type:"propertychanged",target:this,property:"ignoreMinMax",value:t};this.events.dispatchImmediately("propertychanged",e)}this.component&&this.component.handleDataItemPropertyChange(this,"ignoreMinMax")},enumerable:!0,configurable:!0}),e.prototype.animate=function(t,e,i){return new a.a(this,t,e,i).start()},e.prototype.handleInterpolationProgress=function(t){var e=t.target.animationOptions[0];if(e){if(this._eventDispatcher&&this.events.isEnabled("workingvaluechanged")){var i={type:"workingvaluechanged",target:this,property:e.dummyData};this.events.dispatchImmediately("workingvaluechanged",i)}this.component&&this.component.handleDataItemWorkingValueChange(this,e.dummyData)}},e.prototype.hasValue=function(t){for(var e=0,i=t.length;ethis.end)return i.hide(0),void(this._tooltipPosition=void 0);var n=this.renderer;i.parent||(i.parent=this.tooltipContainer);var r=n.tooltipLocation,o=this.getCellStartPosition(t),a=this.getCellEndPosition(t);if("fixed"==this.tooltipPosition&&(t=y.ceil(o+(a-o)*r,4)),t=y.fitToRange(t,this.start,this.end),this._tooltipPosition!=t){this._tooltipPosition=t;var s=n.tooltipLocation2,u=n.positionToPoint(o,s),l=n.positionToPoint(a,s);this.currentItemStartPoint=u,this.currentItemEndPoint=l,n.fullWidthTooltip&&(i.width=l.x-u.x,i.height=l.y-u.y);var h=n.positionToPoint(t,s),c=b.spritePointToSvg(h,this.renderer.line);i.text=this.getTooltipText(t),i.text&&(i.pointTo(c),i.show())}this.cursorTooltipEnabled&&!this.tooltip.disabled||i.hide(0)}},e.prototype.toAxisPosition=function(t){if(void 0!=(t=this.renderer.toAxisPosition(t)))return t*=this.end-this.start,t=this.renderer.inversed?this.end-t:this.start+t},e.prototype.toGlobalPosition=function(t){return this.renderer.inversed?t=this.end-t:t-=this.start,t/(this.end-this.start)},e.prototype.getTooltipText=function(t){},e.prototype.updateTooltip=function(t,e){var i=this._tooltip;i&&(i.pointerOrientation=t,i.setBounds(b.spriteRectToSvg(e,this.renderer.line)))},e.prototype.roundPosition=function(t,e,i){return t},e.prototype.getCellStartPosition=function(t){return t},e.prototype.getCellEndPosition=function(t){return t},Object.defineProperty(e.prototype,"axisRanges",{get:function(){if(!this._axisRanges){var t=this.createDataItem();t.isRange=!0,t.axisFill=this.renderer.axisFills.template.clone(),t.grid=this.renderer.grid.template.clone(),t.tick=this.renderer.ticks.template.clone(),t.label=this.renderer.labels.template.clone(),t.isTemplate=!0,t.component=this,t.axisFill.disabled=!1,t.tick.disabled=!1,t.grid.disabled=!1,t.label.disabled=!1,this._axisRanges=new p.e(t),this._axisRanges.events.on("inserted",this.processAxisRange,this,!1),this._disposers.push(new p.c(this._axisRanges)),this._disposers.push(this._axisRanges.template)}return this._axisRanges},enumerable:!0,configurable:!0}),e.prototype.processAxisRange=function(t){var e=t.newValue;e.component=this,e.isRange=!0},Object.defineProperty(e.prototype,"axisBreaks",{get:function(){return this._axisBreaks||(this._axisBreaks=new c.d(this.createAxisBreak(),function(t,e){return v.order(t.adjustedStartValue,e.adjustedStartValue)}),this._axisBreaks.events.on("inserted",this.processBreak,this,!1),this._disposers.push(new p.c(this._axisBreaks)),this._disposers.push(this._axisBreaks.template)),this._axisBreaks},enumerable:!0,configurable:!0}),e.prototype.createAxisBreak=function(){return new u.a},Object.defineProperty(e.prototype,"series",{get:function(){return this._series||(this._series=new p.b),this._series},enumerable:!0,configurable:!0}),e.prototype.processSeriesDataItems=function(){},e.prototype.processSeriesDataItem=function(t,e){},e.prototype.postProcessSeriesDataItems=function(){},e.prototype.postProcessSeriesDataItem=function(t){},e.prototype.updateAxisBySeries=function(){},e.prototype.hideUnusedDataItems=function(){var t=this,e=this._dataItemsIterator;e.createNewItems=!1,m.each(e.iterator(),function(e){t.validateDataElement(e),e.__disabled=!0}),e.clear(),e.createNewItems=!0},e.prototype.getSeriesDataItem=function(t,e,i){},e.prototype.getAngle=function(t,e,i,n,r){},e.prototype.getX=function(t,e,i,n,r){},e.prototype.getPositionX=function(t,e,i,n,r){},e.prototype.getY=function(t,e,i,n,r){},e.prototype.getPositionY=function(t,e,i,n,r){},Object.defineProperty(e.prototype,"basePoint",{get:function(){return{x:0,y:0}},enumerable:!0,configurable:!0}),e.prototype.dataChangeUpdate=function(){},e.prototype.seriesDataChangeUpdate=function(t){},e.prototype.adjustDifference=function(t,e){var i=e-t;if(_.isNumber(i))return this._axisBreaks&&m.eachContinue(this._axisBreaks.iterator(),function(n){var r=n.adjustedStartValue,o=n.adjustedEndValue;if(_.isNumber(r)&&_.isNumber(o)){if(r>e)return!1;if(o>=t&&_.isNumber(r)&&_.isNumber(o)){var a=n.breakSize,s=y.intersection({start:r,end:o},{start:t,end:e});s&&(i-=(s.end-s.start)*(1-a))}return!0}}),i},e.prototype.isInBreak=function(t){if(this._axisBreaks)return m.find(this._axisBreaks.iterator(),function(e){return t>=e.adjustedStartValue&&t<=e.adjustedEndValue})},e.prototype.fixAxisBreaks=function(){var t=this;if(this._axisBreaks){var e=this._axisBreaks;if(e.length>0){x.each(m.toArray(e.iterator()),function(e){var i=y.min(e.startValue,e.endValue),n=y.max(e.startValue,e.endValue);e.adjustedStartValue=i,e.adjustedEndValue=n,t._axisBreaks.update(e)});var i=e.first,n=Math.min(i.startValue,i.endValue);m.each(e.iterator(),function(t){var e=t.adjustedStartValue,i=t.adjustedEndValue;e=0;i--){var n=t[i].label;if(n){n.invalid&&n.validate();var r=n.measuredHeight;n.visible||(r=0),i==t.length-1&&(e+=r/2),n.pixelY+r>e&&(n.y=e-r,e=n.y)}}},e.prototype.getNextLabel=function(t,e){if(e.length>=t){var i=e[t];if(i)return i.label&&i.visible?i.label:this.getNextLabel(t+1,e)}},Object.defineProperty(e.prototype,"colors",{get:function(){return this.getPropertyValue("colors")},set:function(t){this.setPropertyValue("colors",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"patterns",{get:function(){return this.getPropertyValue("patterns")},set:function(t){this.setPropertyValue("patterns",t,!0)},enumerable:!0,configurable:!0}),e.prototype.createLegendMarker=function(t,e){d.each(t.children.iterator(),function(i){var n=e.slice;i.defaultState.properties.fill=n.fill,i.defaultState.properties.stroke=n.stroke,i.defaultState.properties.fillOpacity=n.fillOpacity,i.defaultState.properties.strokeOpacity=n.strokeOpacity,i.fill=n.fill,i.stroke=n.stroke,i.fillOpacity=n.fillOpacity,i.strokeOpacity=n.strokeOpacity,void 0==i.fill&&(i.__disabled=!0);var r=t.dataItem;r.color=n.fill,r.colorOrig=n.fill,i.addDisposer(n.events.on("propertychanged",function(t){"fill"==t.property&&(i.__disabled=!1,i.isActive||(i.fill=n.fill),i.defaultState.properties.fill=n.fill,r.color=n.fill,r.colorOrig=n.fill),"stroke"==t.property&&(i.isActive||(i.stroke=n.stroke),i.defaultState.properties.stroke=n.stroke)},void 0,!1))})},e.prototype.handleSliceScale=function(t){var e=this,i=t.target.dataItem;d.each(i.bullets.iterator(),function(t){var i=t[1];e.positionBullet(i)})},e.prototype.handleSliceMove=function(t){},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.slices.template.copyFrom(e.slices.template),this.labels.template.copyFrom(e.labels.template),this.ticks.template.copyFrom(e.ticks.template)},Object.defineProperty(e.prototype,"alignLabels",{get:function(){return this.getPropertyValue("alignLabels")},set:function(t){this.setAlignLabels(t)},enumerable:!0,configurable:!0}),e.prototype.setAlignLabels=function(t){this.setPropertyValue("alignLabels",t,!0)},Object.defineProperty(e.prototype,"ignoreZeroValues",{get:function(){return this.getPropertyValue("ignoreZeroValues")},set:function(t){this.setPropertyValue("ignoreZeroValues",t,!0)},enumerable:!0,configurable:!0}),e.prototype.updateLegendValue=function(t){if(t){var e=t.legendDataItem,i=t.legendSettings;e&&i&&i&&(i.labelText&&(e.label.text=i.labelText),i.itemLabelText&&(e.label.text=i.itemLabelText),i.valueText&&(e.valueLabel.text=i.valueText),i.itemValueText&&(e.valueLabel.text=i.itemValueText))}},e}(r.a);p.b.registeredClasses.PercentSeries=v,p.b.registeredClasses.PercentSeriesDataItem=b,y.c.push({relevant:y.b.maybeXS,state:function(t,e){if(t instanceof v){var i=t.states.create(e);return t.labels.template.states.create(e).properties.disabled=!0,t.ticks.template.states.create(e).properties.disabled=!0,i}return null}})},AEc5:function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},AaJ4:function(t,e,i){"use strict";i.d(e,"a",function(){return l});var n=i("m4/l"),r=i("Vs7R"),o=i("aCit"),a=i("8ZqG"),s=i("MIZb"),u=i("TGuK"),l=function(t){function e(){var e=t.call(this)||this;e.className="Grid",e.element=e.paper.add("path"),e.location=.5,e.isMeasured=!1,e.above=!1;var i=new s.a;return e.stroke=i.getFor("grid"),e.pixelPerfect=!0,e.strokeOpacity=.15,e.fill=Object(a.c)(),e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"location",{get:function(){return this.getPropertyValue("location")},set:function(t){this.setPropertyValue("location",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"above",{get:function(){return this.getPropertyValue("above")},set:function(t){this.setPropertyValue("above",t,!0)},enumerable:!0,configurable:!0}),e.prototype.setDisabled=function(e){var i=t.prototype.setDisabled.call(this,e);return this.axis&&this.axis.invalidateDataItems(),i},e}(r.a);o.b.registeredClasses.Grid=l,u.c.push({relevant:u.b.maybeXS,state:function(t,e){if(t instanceof l){var i=t.states.create(e);return i.properties.disabled=!0,i}return null}})},AiPC:function(t,e,i){i("YJIw")("Uint16",2,function(t){return function(e,i,n){return t(this,e,i,n)}})},Ax3V:function(t,e,i){var n=i("T9LF").document;t.exports=n&&n.documentElement},AzI1:function(t,e){t.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Math.log(1+t)}},"B+tY":function(t,e,i){var n=i("Gb1H");n(n.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},B2g9:function(t,e,i){"use strict";var n=i("Gb1H"),r=i("FUSD"),o=i("vSjZ"),a=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);n(n.P+n.F*a,"String",{padEnd:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0,!1)}})},BEgH:function(t,e,i){"use strict";i.d(e,"a",function(){return h});var n=i("m4/l"),r=i("aGXA"),o=i("Vs7R"),a=i("aCit"),s=i("MIZb"),u=i("hGwe"),l=i("Mtpk"),h=function(t){function e(){var e=t.call(this)||this;e.className="ZoomOutButton",e.padding(9,9,9,9),e.showSystemTooltip=!0;var i=new s.a,n=e.background;n.cornerRadius(20,20,20,20),n.fill=i.getFor("primaryButton"),n.stroke=i.getFor("primaryButtonStroke"),n.strokeOpacity=0,n.states.getKey("hover").properties.fill=i.getFor("primaryButtonHover"),n.states.getKey("down").properties.fill=i.getFor("primaryButtonActive");var r=new o.a;r.element=e.paper.add("path");var a=u.moveTo({x:0,y:0});return a+=u.lineTo({x:11,y:0}),r.path=a,r.pixelPerfect=!0,r.padding(8,3,8,3),r.stroke=i.getFor("primaryButtonText"),e.icon=r,e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),l.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Zoom Out"))},e}(r.a);a.b.registeredClasses.ZoomOutButton=h},BTtL:function(t,e,i){var n=i("Gb1H");n(n.S,"Math",{signbit:function(t){return(t=+t)!=t?t:0==t?1/t==1/0:t>0}})},BYDm:function(t,e,i){"use strict";var n,r=i("T9LF"),o=i("dstF")(0),a=i("wDk4"),s=i("kFp5"),u=i("bdjS"),l=i("0YcW"),h=i("DvJ+"),c=i("rFJX"),p=i("rFJX"),d=!r.ActiveXObject&&"ActiveXObject"in r,f=s.getWeak,g=Object.isExtensible,m=l.ufstore,y=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},b={get:function(t){if(h(t)){var e=f(t);return!0===e?m(c(this,"WeakMap")).get(t):e?e[this._i]:void 0}},set:function(t,e){return l.def(c(this,"WeakMap"),t,e)}},v=t.exports=i("/Xnt")("WeakMap",y,b,l,!0,!0);p&&d&&(u((n=l.getConstructor(y,"WeakMap")).prototype,b),s.NEED=!0,o(["delete","has","get","set"],function(t){var e=v.prototype,i=e[t];a(e,t,function(e,r){if(h(e)&&!g(e)){this._f||(this._f=new n);var o=this._f[t](e,r);return"set"==t?this:o}return i.call(this,e,r)})}))},BmDP:function(t,e,i){"use strict";i.d(e,"a",function(){return s});var n=i("m4/l"),r=i("qzbU"),o=i("hD5A"),a=i("aCit"),s=function(t){function e(){var e=t.call(this)||this;return e._label=new o.d,e._slice=new o.d,e.className="PieTick",e.element=e.paper.add("polyline"),e._disposers.push(e._label),e._disposers.push(e._slice),e.applyTheme(),e}return n.c(e,t),e.prototype.draw=function(){t.prototype.draw.call(this);var e=this.slice,i=this.label,n=e.dataItem.component;if(e&&e.radius>0&&i&&i.text){var r=e.dx+e.slice.dx+e.pixelX+e.ix*e.radius*e.scale,o=e.dy+e.slice.dy+e.pixelY+e.iy*e.radiusY*e.scale,a=void 0,s=void 0,u=void 0,l=void 0;if(n.alignLabels)a=i.pixelX-this.length,s=i.pixelY,u=i.pixelX,l=s,"right"==i.horizontalCenter&&(u=(a+=2*this.length)-this.length);else{var h=i.pixelRadius(e.radius);u=a=r+h*e.ix,l=s=o+h*e.iy}this.element.attr({points:[r,o,a,s,u,l]})}},Object.defineProperty(e.prototype,"slice",{get:function(){return this._slice.get()},set:function(t){this._slice.set(t,new o.c([t.events.on("transformed",this.invalidate,this),t.events.on("validated",this.invalidate,this)]))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"label",{get:function(){return this._label.get()},set:function(t){this._label.set(t,t.events.on("transformed",this.invalidate,this,!1))},enumerable:!0,configurable:!0}),e}(r.a);a.b.registeredClasses.PieTick=s},C2uA:function(t,e,i){i("YJIw")("Int16",2,function(t){return function(e,i,n){return t(this,e,i,n)}})},C6Lh:function(t,e,i){"use strict";i.d(e,"a",function(){return b});var n=i("m4/l"),r=i("ISWh"),o=i("Vs7R"),a=i("vMqJ"),s=i("hD5A"),u=i("0Mwj"),l=i("pR7v"),h=i("KknQ"),c=i("aCit"),p=i("MIZb"),d=i("85D4"),f=i("Wglt"),g=i("Mtpk"),m=i("hGwe"),y=i("tjMS"),b=function(t){function e(){var e=t.call(this)||this;e._chart=new s.d,e.className="XYChartScrollbar";var i=new p.a;e.padding(0,0,0,0);var n=e.createChild(u.a);n.shouldClone=!1,n.margin(0,0,0,0),n.padding(0,0,0,0),n.interactionsEnabled=!1,e._scrollbarChart=n,e._disposers.push(e._scrollbarChart),e.minHeight=60,e.minWidth=60;var r=e.createChild(o.a);r.shouldClone=!1,r.setElement(e.paper.add("path")),r.fill=i.getFor("background"),r.fillOpacity=.8,r.interactionsEnabled=!1,r.isMeasured=!1,r.toBack(),e._unselectedOverlay=r,e._disposers.push(e._unselectedOverlay),n.toBack(),e.background.cornerRadius(0,0,0,0);var a=e.thumb.background;a.cornerRadius(0,0,0,0),a.fillOpacity=0,a.fill=i.getFor("background");var l=a.states.getKey("hover");l&&(l.properties.fillOpacity=.2);var h=a.states.getKey("down");return h&&(h.properties.fillOpacity=.4),e._disposers.push(e._chart),e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"series",{get:function(){return this._series||(this._series=new a.b,this._disposers.push(this._series.events.on("inserted",this.handleSeriesAdded,this,!1)),this._disposers.push(this._series.events.on("removed",this.handleSeriesRemoved,this,!1))),this._series},enumerable:!0,configurable:!0}),e.prototype.handleSeriesAdded=function(t){var e=t.newValue;if(e.xAxis&&e.yAxis){var i=this.scrollbarChart;i.zoomOutButton.disabled=!0,this.chart=e.chart;var n=!0,r=!0;f.each(this.series.iterator(),function(t){t!=e&&(t.xAxis==e.xAxis&&(n=!1),t.yAxis==e.yAxis&&(r=!1))});var o=new p.a,a=e.clone();if(n){var s=e.xAxis.clone();if(i.xAxes.moveValue(s),s.title.disabled=!0,s.rangeChangeDuration=0,(b=s.renderer).ticks.template.disabled=!0,b.inside=!0,b.labels.template.inside=!0,b.line.strokeOpacity=0,b.minLabelPosition=.02,b.maxLabelPosition=.98,b.line.disabled=!0,b.axisFills.template.disabled=!0,b.baseGrid.disabled=!0,b.grid.template.strokeOpacity=.05,b.minWidth=void 0,b.minHeight=void 0,b.padding(0,0,0,0),b.chart=i,b.margin(0,0,0,0),s.width=Object(y.c)(100),b.labels.template.fillOpacity=.5,s.maxZoomCount=void 0,s.minZoomCount=void 0,s instanceof h.a){var u=s,c=e.xAxis;s.groupCount=5*c.groupCount,this._disposers.push(u.clonedFrom.events.on("extremeschanged",function(){g.isNumber(u.clonedFrom.minDefined)&&(u.min=u.clonedFrom.minDefined),g.isNumber(u.clonedFrom.maxDefined)&&(u.max=u.clonedFrom.maxDefined)},void 0,!1))}else if(s instanceof l.a){var m=s;g.isNumber(m.clonedFrom.minDefined)||(m.min=void 0),g.isNumber(m.clonedFrom.maxDefined)||(m.max=void 0),this._disposers.push(m.clonedFrom.events.on("extremeschanged",function(){g.isNumber(m.clonedFrom.minDefined)&&(m.min=m.clonedFrom.min),g.isNumber(m.clonedFrom.maxDefined)&&(m.max=m.clonedFrom.max)},void 0,!1))}a.xAxis=s}else this.scrollbarChart.xAxes.each(function(t){t.clonedFrom==e.xAxis&&(a.xAxis=t)});if(r){var b,v=e.yAxis.clone();if(i.yAxes.moveValue(v),v.title.disabled=!0,v.rangeChangeDuration=0,(b=v.renderer).ticks.template.disabled=!0,b.inside=!0,b.labels.template.inside=!0,b.line.strokeOpacity=0,b.minLabelPosition=.02,b.maxLabelPosition=.98,b.line.disabled=!0,b.axisFills.template.disabled=!0,b.grid.template.stroke=o.getFor("background"),b.baseGrid.disabled=!0,b.grid.template.strokeOpacity=.05,b.minWidth=void 0,b.minHeight=void 0,b.chart=i,b.padding(0,0,0,0),b.margin(0,0,0,0),v.height=Object(y.c)(100),b.labels.template.fillOpacity=.5,a.yAxis=v,v.maxZoomCount=void 0,v.minZoomCount=void 0,v instanceof h.a){var x=v;c=e.yAxis;v.groupCount=5*c.groupCount,this._disposers.push(x.clonedFrom.events.on("extremeschanged",function(){g.isNumber(x.clonedFrom.minDefined)&&(x.min=x.clonedFrom.minDefined),g.isNumber(x.clonedFrom.maxDefined)&&(x.max=x.clonedFrom.maxDefined)}))}else if(v instanceof l.a){var _=v;g.isNumber(_.clonedFrom.minDefined)||(_.min=void 0),g.isNumber(_.clonedFrom.maxDefined)||(_.max=void 0),this._disposers.push(_.clonedFrom.events.on("extremeschanged",function(){g.isNumber(_.clonedFrom.minDefined)&&(_.min=_.clonedFrom.minDefined),g.isNumber(_.clonedFrom.maxDefined)&&(_.max=_.clonedFrom.maxDefined)}))}}else this.scrollbarChart.yAxes.each(function(t){t.clonedFrom==e.yAxis&&(a.yAxis=t)});a.rangeChangeDuration=0,a.interpolationDuration=0,a.defaultState.transitionDuration=0,a.showOnInit=!1,this._disposers.push(a.events.on("validated",this.zoomOutAxes,this,!1)),this._disposers.push(e.events.on("datavalidated",function(){a.data!=e.data&&(a.data=e.data)},void 0,!1)),a.defaultState.properties.visible=!0,a.filters.push(new d.a),i.series.push(a),this.updateByOrientation()}},e.prototype.updateByOrientation=function(){var t=this;this._scrollbarChart&&(f.each(this._scrollbarChart.xAxes.iterator(),function(e){var i=e.renderer;"vertical"==t.orientation?(i.grid.template.disabled=!0,i.labels.template.disabled=!0,i.minGridDistance=10):(i.grid.template.disabled=!1,i.labels.template.disabled=!1,i.minGridDistance=e.clonedFrom.renderer.minGridDistance)}),f.each(this._scrollbarChart.yAxes.iterator(),function(e){var i=e.renderer;"horizontal"==t.orientation?(i.grid.template.disabled=!0,i.labels.template.disabled=!0,i.minGridDistance=10):(i.grid.template.disabled=!1,i.labels.template.disabled=!1,i.minGridDistance=e.clonedFrom.renderer.minGridDistance)}))},e.prototype.handleSeriesRemoved=function(t){var e=t.oldValue,i=this.scrollbarChart;i.series.each(function(t){t.clonedFrom==e&&i.series.removeValue(t)}),0==i.series.length&&(i.xAxes.clear(),i.yAxes.clear());try{e.events.off("validated",this.zoomOutAxes,this)}catch(t){}},Object.defineProperty(e.prototype,"scrollbarChart",{get:function(){return this._scrollbarChart},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"chart",{get:function(){return this._chart.get()},set:function(t){this._chart.get()!==t&&(this._chart.set(t,t.events.on("datavalidated",this.handleDataChanged,this,!1)),this.handleDataChanged(),this._scrollbarChart.dataProvider=t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"unselectedOverlay",{get:function(){return this._unselectedOverlay},enumerable:!0,configurable:!0}),e.prototype.handleDataChanged=function(){this.chart.data!=this.scrollbarChart.data&&(this.scrollbarChart.data=this.chart.data),this.scrollbarChart.invalidateData()},e.prototype.zoomOutAxes=function(){var t=this.scrollbarChart;f.each(t.xAxes.iterator(),function(t){t.zoom({start:0,end:1},!0,!0)}),f.each(t.yAxes.iterator(),function(t){t.zoom({start:0,end:1},!0,!0)})},e.prototype.updateThumb=function(){if(t.prototype.updateThumb.call(this),this._unselectedOverlay){var e=this.thumb,i=e.pixelX||0,n=e.pixelY||0,r=e.pixelWidth||0,o=e.pixelHeight||0,a="";"horizontal"==this.orientation?(a=m.rectToPath({x:-1,y:0,width:i,height:o}),a+=m.rectToPath({x:i+r,y:0,width:(this.pixelWidth||0)-i-r,height:o})):(a=m.rectToPath({x:0,y:0,width:r,height:n}),a+=m.rectToPath({x:0,y:n+o,width:r,height:(this.pixelHeight||0)-n-o})),this._unselectedOverlay.path=a}},e.prototype.processConfig=function(e){if(e&&g.hasValue(e.series)&&g.isArray(e.series))for(var i=0,n=e.series.length;in?1:t.idx-e.idx}),t=e.map(function(t){return t.data});var i=this.element,n=!0;if(i.node&&i.node.childNodes)for(var r=0,o=i.node.childNodes.length;r0;){var t=this.children.getIndex(0);t.parent=void 0,this.children.removeValue(t)}},e.prototype.disposeChildren=function(){for(;this.children.length>0;){var t=this.children.getIndex(0);t.dispose(),this.children.removeValue(t)}},Object.defineProperty(e.prototype,"background",{get:function(){return this._background||(this._background=this.createBackground(),this.processBackground()),this._background},set:function(t){this._background&&this.background!=t&&this.removeDispose(this._background),t&&(this._background=t,this._disposers.push(t),this.processBackground())},enumerable:!0,configurable:!0}),e.prototype.handleGlobalScale=function(){t.prototype.handleGlobalScale.call(this),this.children.each(function(t){t.handleGlobalScale()})},e.prototype.createBackground=function(){return new h.a},e.prototype.processBackground=function(){var t=this._background;t&&(t.isMeasured=!1,this._background.fill=(new d.a).getFor("background"),t.parent=this,t.isMeasured=!1,this.children.removeValue(t),this._disposers.push(t),this.group.addToBack(this._background.group))},e.prototype.validateLayout=function(){var t=this;p.b.removeFromInvalidLayouts(this),this.layoutInvalid=!1,this._availableWidth=this.innerWidth,this._availableHeight=this.innerHeight;var e=0,i=0,n=!0;this.children&&(this.sortChildren(),g.each(this._childrenByLayout,function(r){var o,a;if(y.isNumber(r.relativeWidth)?(o=m.round(t._availableWidth*r.relativeWidth,2),"horizontal"==t.layout&&(o-=r.pixelMarginRight+r.pixelMarginLeft)):"horizontal"==t.layout&&r.invalid&&r.validate(),y.isNumber(r.relativeHeight)?(a=m.round(t._availableHeight*r.relativeHeight,2),"vertical"==t.layout&&(a-=r.pixelMarginTop+r.pixelMarginBottom)):"vertical"==t.layout&&r.invalid&&r.validate(),0==r.invalid){if(y.isNumber(r.relativeWidth)&&(r.maxWidth=o),y.isNumber(r.relativeHeight)&&(r.maxHeight=a),r.isMeasured){"horizontal"==t.layout&&(y.isNumber(r.percentWidth)||r.measuredWidth>0&&(t._availableWidth-=r.measuredWidth+r.pixelMarginLeft+r.pixelMarginRight)),"vertical"==t.layout&&(y.isNumber(r.percentHeight)||r.measuredHeight>0&&(t._availableHeight-=r.measuredHeight+r.pixelMarginTop+r.pixelMarginBottom));var s=r.measuredWidth,u=r.measuredHeight;"none"!=r.align&&(s+=r.pixelMarginLeft+r.pixelMarginRight),"none"!=r.valign&&(u+=r.pixelMarginTop+r.pixelMarginBottom),e=Math.max(e,s),i=Math.max(i,u)}}else r.isMeasured&&(y.isNumber(r.relativeWidth)&&r.maxWidth!=o&&(r.maxWidth=o,n=!1),y.isNumber(r.relativeHeight)&&r.maxHeight!=a&&(r.maxHeight=a,n=!1))})),this._absoluteWidth=e,this._absoluteHeight=i,n&&this.arrange()},e.prototype.arrange=function(){var t,e,i,n,r,o,a,s,u,l,h,p=this,d=this.children,b=0,v=0,x=m.max(this.innerWidth,this._absoluteWidth),_=m.max(this.innerHeight,this._absoluteHeight),P=this.pixelPaddingLeft,w=this.pixelPaddingRight,O=this.pixelPaddingTop,S=this.pixelPaddingBottom,T=0,C=0,k=0,I=0,D=[],V=[],M=this.maxWidth,j=this.maxHeight,A=this.minWidth,F=this.minHeight,E=g.copy(d.values);if(this.reverseOrder&&E.reverse(),"grid"==this.layout){o=M,r=1;for(var R=0,L=E.length;Rr&&(r=N)}}o=m.fitToRange(o,1,M),r=m.fitToRange(r,1,M),a=this.fixedWidthGrid?M/r:M/o,a=m.max(1,Math.floor(a)),a=m.min(this.maxColumns,a),D=this.getColumnWidth(E,a,r)}for(R=0,L=E.length;Rm.min(this.innerWidth,M)-$+1&&I=a&&(I=0,C+=V[k],k++,T=0)}"none"!==this.layout&&(B.moveTo({x:H,y:G}),Z=H+B.maxLeft-W,q=H+B.maxRight+U,J=G+B.maxTop-z,Q=G+B.maxBottom+Y,(q>e||!y.isNumber(e))&&(e=q),(Zn||!y.isNumber(n))&&(n=Q),(q>u||!y.isNumber(u))&&(u=q),(Zh||!y.isNumber(h))&&(h=h))}}if("none"==this.layout){var tt=this.bbox;t=tt.x,e=tt.x+tt.width,i=tt.y,n=tt.y+tt.height}y.isNumber(t)||(t=0,s=0),y.isNumber(e)||(u=e=this._availableWidth),y.isNumber(i)||(i=0,l=0),y.isNumber(n)||(h=n=this._availableHeight),y.isNumber(l)||(l=0),y.isNumber(h)||(h=l),y.isNumber(s)||(s=0),y.isNumber(u)||(u=s),b=e-t,v=n-i,y.isNumber(this.relativeWidth)&&(t=0,e=b=M-P-w),y.isNumber(this.relativeHeight)&&(i=0,n=v=j-O-S),y.isNumber(this._pixelWidth)&&(t=0,b=this._pixelWidth-P-w),y.isNumber(A)&&b0){var nt,rt,ot=b,at=v;ot=-.5&&e<=this.pixelWidth+.5&&i>=-.5&&i<=this.pixelHeight+.5},e.prototype.copyFrom=function(e){var i=this;t.prototype.copyFrom.call(this,e),this.layout=e.layout,this.setStateOnChildren=e.setStateOnChildren,e._background&&(this.background=e._background.clone(),this.background.copyFrom(e._background)),f.each(e.children.iterator(),function(t){t.shouldClone&&(t.clone().parent=i)})},Object.defineProperty(e.prototype,"preloader",{get:function(){var t=this._preloader;return t||(this.parent?this.parent.preloader:void 0)},set:function(t){this._preloader&&this.removeDispose(this._preloader),this._preloader=t,t&&(t.parent=this.tooltipContainer,this._disposers.push(t))},enumerable:!0,configurable:!0}),e.prototype.setPaper=function(e){var i=this,n=t.prototype.setPaper.call(this,e);return n&&(this._background&&(this._background.paper=e,this._background.topParent=this.topParent),this.children.each(function(t){t.setPaper(e),t.topParent=i.topParent})),n},e.prototype.removeFromInvalids=function(){t.prototype.removeFromInvalids.call(this),p.b.removeFromInvalidLayouts(this)},e.prototype.setDataItem=function(e){this._dataItem!=e&&(f.each(this.children.iterator(),function(t){t.dataItem=e}),this._background&&(this._background.dataItem=e)),t.prototype.setDataItem.call(this,e)},e.prototype.measureElement=function(){this.disabled||this.isTemplate||"none"==this.layout||this.__disabled||this.validateLayout()},Object.defineProperty(e.prototype,"fontFamily",{get:function(){return this.getPropertyValue("fontFamily")},set:function(t){this.setPropertyValue("fontFamily",t,!0)&&(this.setSVGAttribute({"font-family":t}),this.invalidateLabels())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"fontSize",{get:function(){return this.getPropertyValue("fontSize")},set:function(t){this.setPropertyValue("fontSize",t,!0)&&(this.setSVGAttribute({"font-size":t}),this.invalidateLabels())},enumerable:!0,configurable:!0}),e.prototype.invalidateLabels=function(){this.children.each(function(t){t.hardInvalidate?t.hardInvalidate():t instanceof e&&t.invalidateLabels()})},Object.defineProperty(e.prototype,"fontWeight",{get:function(){return this.getPropertyValue("fontWeight")},set:function(t){this.setPropertyValue("fontWeight",t),this.setSVGAttribute({"font-weight":t})},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"textDecoration",{get:function(){return this.getPropertyValue("textDecoration")},set:function(t){this.setPropertyValue("textDecoration",t),this.setSVGAttribute({"text-decoration":t})},enumerable:!0,configurable:!0}),e.prototype.dispose=function(){this._background&&this._background.dispose(),this._shouldBeReady=[],this.disposeChildren(),t.prototype.dispose.call(this)},e.prototype.setState=function(e,i,n){var r=e;return e instanceof o.a&&(r=e.name),this.setStateOnChildren&&f.each(this.children.iterator(),function(t){t.setState(r,i,n),"active"!=r&&(t.isActive=!1)}),this._background&&this._background.setState(r),this.setStateOnSprites.length&&g.each(this.setStateOnSprites,function(t){t.setState(r,i,n)}),t.prototype.setState.call(this,e,i,n)},e.prototype.setActive=function(e){t.prototype.setActive.call(this,e),this._background&&(this._background.isActive=e)},e.prototype.dispatchReady=function(){var e=this;if(!this.isReady()&&!this.isDisposed()){var i=!0;f.eachContinue(this.children.iterator(),function(t){return!!(t.__disabled||t.disabled||t.isReady())||(i=!1,!1)}),g.eachContinue(this._shouldBeReady,function(t){return!!(t.__disabled||t.disabled||t.isReady())||(i=!1,!1)}),i?t.prototype.dispatchReady.call(this):p.b.events.once("exitframe",function(){e.dispatchReady(),b.b.requestFrame()},void 0,!1)}},e.prototype._systemUpdate=function(e){this.children.each(function(t){t.invalid&&(t._systemCheckIfValidate()?t.dataItem&&t.dataItem.component&&t.dataItem.component.dataInvalid?e.push(t):t.validate():e.push(t))}),t.prototype._systemUpdate.call(this,e)},e.prototype._systemValidatePositions=function(){this.children.each(function(t){t.positionInvalid&&t.validatePosition()}),t.prototype._systemValidatePositions.call(this)},e.prototype._systemValidateLayouts=function(){this.layoutInvalid&&!this.isDisposed()&&this.validateLayout()},Object.defineProperty(e.prototype,"tapToActivate",{get:function(){return this._tapToActivate},set:function(t){this._tapToActivate!=t&&this.setTapToActivate(t)},enumerable:!0,configurable:!0}),e.prototype.setTapToActivate=function(t){var e=this;this._tapToActivate=t,this.interactions.isTouchProtected=t,t&&this.interactions.setEventDisposer("container-tapToActivate",t,function(){return new s.c([e.events.on("hit",e.handleTapToActivate,e,!1),e.events.on("down",e.initTapTimeout,e,!1),e.events.on("track",e.initTapTimeout,e,!1),Object(l.b)().body.events.on("down",function(t){Object(l.b)().isLocalElement(t.pointer,e.paper.svg,e.uid)||e.handleTapToActivateDeactivation()},e,!1)])}),Object(l.b)()},e.prototype.handleTapToActivate=function(){this.interactions.isTouchProtected=!1,this.initTapTimeout()},e.prototype.handleTapToActivateDeactivation=function(){this.interactions.isTouchProtected=!0},e.prototype.initTapTimeout=function(){var t=this;this._tapToActivateTimeout&&this._tapToActivateTimeout.dispose(),this.tapToActivate&&!this.interactions.isTouchProtected&&this.tapTimeout&&(this._tapToActivateTimeout=this.setTimeout(function(){t.handleTapToActivateDeactivation()},this.tapTimeout))},e.prototype.hasLicense=function(){if(v.a.commercialLicense)return!0;for(var t=0;tthis._negativeBase?n.positive:i=0?t.toExponential(e.decimals.passive).split("e"):t.toExponential().split("e"),t=Number(l[0]),r="e"+l[1],e.modSpacing&&(r=" "+r)}else if(0===e.decimals.passive)t=Math.round(t);else if(e.decimals.passive>0){var c=Math.pow(10,e.decimals.passive);t=Math.round(t*c)/c}var p="",d=h.numberToString(t).split("."),f=d[0];if(f.length0){for(var g=[],m=f.split("").reverse().join(""),y=0,b=f.length;y<=b;y+=e.thousands.interval){var v=m.substr(y,e.thousands.interval).split("").reverse().join("");""!==v&&g.unshift(v)}f=g.join(e.thousands.separator)}p+=f,1===d.length&&d.push("");var x=d[1];return x.length1&&(p-=1),a.push(p)}this.shuffle&&a.sort(function(t,e){return Math.random()-.5});for(c=0;c1?t.l=t.l-Math.floor(t.l):t.l<0&&(t.l=-(t.l-Math.floor(t.l))),t.l=l.fitNumberRelative(t.l,this.minLightness,this.maxLightness)):(t.l>1?t.l=1:t.l<0&&(t.l=0),t.l=l.fitNumber(t.l,this.minLightness,this.maxLightness))},e.prototype.processConfig=function(e){if(e&&u.hasValue(e.list)&&u.isArray(e.list))for(var i=0,n=e.list.length;i1?arguments[1]:void 0)}}),i("M/YL")(o)},FSsr:function(t,e,i){var n=i("6MWL"),r=i("snR7"),o=i("DbOM"),a=n.key,s=n.set;n.exp({metadata:function(t,e){return function(i,n){s(t,e,(void 0!==n?r:o)(i),a(n))}}})},FUSD:function(t,e,i){var n=i("FmWr"),r=i("lhvN"),o=i("kcsd");t.exports=function(t,e,i,a){var s=String(o(t)),u=s.length,l=void 0===i?" ":String(i),h=n(e);if(h<=u||""==l)return s;var c=h-u,p=r.call(l,Math.ceil(c/l.length));return p.length>c&&(p=p.slice(0,c)),a?p+s:s+p}},FmWr:function(t,e,i){var n=i("4BRe"),r=Math.min;t.exports=function(t){return t>0?r(n(t),9007199254740991):0}},FzPm:function(t,e,i){"use strict";i.d(e,"a",function(){return l});var n=i("m4/l"),r=i("Vs7R"),o=i("tjMS"),a=i("aCit"),s=i("v9UT"),u=i("Gg2j"),l=function(t){function e(){var e=t.call(this)||this;return e.className="Circle",e.element=e.paper.add("circle"),e.setPercentProperty("radius",Object(o.c)(100)),e.setPropertyValue("horizontalCenter","middle"),e.setPropertyValue("verticalCenter","middle"),e.applyTheme(),e}return n.c(e,t),e.prototype.draw=function(){t.prototype.draw.call(this),this.element.attr({r:this.pixelRadius})},Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelRadius",{get:function(){return s.relativeToValue(this.radius,u.min(this.innerWidth/2,this.innerHeight/2))},enumerable:!0,configurable:!0}),e.prototype.measureElement=function(){var t=this.pixelRadius;this._bbox={x:-t,y:-t,width:2*t,height:2*t}},e}(r.a);a.b.registeredClasses.Circle=l},G0iN:function(t,e,i){var n=i("3BzE"),r=i("pmYy"),o=i("eBSV");t.exports=function(t){var e=n(t),i=r.f;if(i)for(var a,s=i(t),u=o.f,l=0;s.length>l;)u.call(t,a=s[l++])&&e.push(a);return e}},G5U1:function(t,e){var i=t.exports={version:"2.6.9"};"number"==typeof __e&&(__e=i)},GAaQ:function(t,e,i){"use strict";i.d(e,"a",function(){return D});var n,r=i("m4/l"),o=i("qJno"),a=i("x79X"),s=i("Vs7R"),u=i("W8Sc"),l=i("vMqJ"),h=i("+qIf"),c=i("7XB+"),p=i("akNo"),d=i("CTEm"),f=i("P/bD"),g=i("/IEW"),m=i("8ZqG"),y=i("aCit"),b=i("Q4nc"),v=i("58Sn"),x=i("LBDG"),_=i("Qkdp"),P=i("OVUc"),w=i("Mtpk"),O=i("v9UT"),S=i("hJ5i"),T=i("Gg2j");var C=/src: ([^;]+);/;function k(t,e,i){return r.b(this,void 0,void 0,function(){var n,o,a,s;return r.d(this,function(u){switch(u.label){case 0:return u.trys.push([0,2,,3]),[4,P.a(e)];case 1:return n=u.sent(),[3,3];case 2:return o=u.sent(),console.error("Failed to load stylesheet",e,o),[2];case 3:(a=t.createElement("style")).textContent=n.response,t.head.appendChild(a),u.label=4;case 4:return u.trys.push([4,,7,8]),[4,function(t){return r.b(this,void 0,void 0,function(){var e;return r.d(this,function(i){switch(i.label){case 0:e=t.sheet,i.label=1;case 1:return i.trys.push([1,2,,4]),[2,e.cssRules];case 2:return i.sent(),[4,new Promise(function(i,n){t.addEventListener("load",function(){i(e.cssRules)},!0),t.addEventListener("error",function(t){n(t)},!0),setTimeout(function(){n(new Error("Timeout while waiting for "+this.serializeElement(this.sprite.paper.defs)+this.serializeElement(this.sprite.dom),t,s,u,l,h),m=new Blob([g],{type:"image/svg+xml"}),n=i.createObjectURL(m),[4,this.loadNewImage(n,s,u,"anonymous")];case 3:return y=r.sent(),p.drawImage(y,0,0),[3,5];case 4:return null!==n&&i.revokeObjectURL(n),null!==o&&S.each(o,function(t){i.revokeObjectURL(t)}),this.restoreRemovedObjects(),[7];case 5:return[2,a]}})})},e.prototype.getCanvasAdvanced=function(t){return r.b(this,void 0,void 0,function(){var e,i,n,o,a,s,u,l,h,c;return r.d(this,function(r){switch(r.label){case 0:return w.hasValue(t)||(t={}),[4,this.imagesToDataURI(this.sprite.dom,t)];case 1:return r.sent(),e=this.backgroundColor||this.findBackgroundColor(this.sprite.dom),[4,this.canvg];case 2:return i=r.sent(),n=this.sprite.pixelWidth,o=this.sprite.pixelHeight,a=v.l(this.sprite.dom),s=v.m(this.sprite.dom),u=this.normalizeSVG(this.serializeElement(this.sprite.paper.defs)+this.serializeElement(this.sprite.dom),t,n,o,a,s,e),l=this.getDisposableCanvas(),h=this.getPixelRatio(t),l.style.width=n*h+"px",l.style.height=o*h+"px",l.width=n*h,l.height=o*h,c={useCORS:!0},1!=h&&(c.ignoreDimensions=!0,c.scaleWidth=n*h,c.scaleHeight=o*h),i(l,u,c),[2,l]}})})},e.prototype.getImageAdvanced=function(t,e,i){return r.b(this,void 0,void 0,function(){var n,o,a;return r.d(this,function(r){switch(r.label){case 0:return(n=this._objectsAlreadyHidden)||this.hideNonExportableSprites(),w.hasValue(e)||(e=this.getFormatOptions(t)),[4,this.getCanvasAdvanced(e)];case 1:return o=r.sent(),!1===i?[3,3]:[4,this.addExtras(o,e,!0)];case 2:o=r.sent(),r.label=3;case 3:return a=o.toDataURL(this.getContentType(t),e.quality),this.disposeCanvas(o),n||this.restoreNonExportableSprites(),[2,a]}})})},e.prototype.getDisposableCanvas=function(){var t=document.createElement("canvas");return t.style.position="fixed",t.style.top="-10000px",document.body.appendChild(t),t},e.prototype.disposeCanvas=function(t){document.body.removeChild(t)},e.prototype.getPixelRatio=function(t){var e=t&&t.scale?t.scale:1;return(this.useRetina?O.getPixelRatio():1)*e},e.prototype.imagesToDataURI=function(t,i){return r.b(this,void 0,void 0,function(){var n,o,a,s,u,l;return r.d(this,function(r){switch(r.label){case 0:if(!(n=t.querySelectorAll("image")).length)return[3,2];for(o=[],a=n.length,s=0;s",{},1,1)],{type:"image/svg+xml"}),a=n.createObjectURL(o),s=void 0,r.label=2;case 2:return r.trys.push([2,4,,5]),[4,this.loadNewImage(a,1,1)];case 3:return s=r.sent(),[3,5];case 4:return r.sent(),[2,!1];case 5:i.drawImage(s,0,0),n.revokeObjectURL(a);try{return y.b.setCache("simplifiedImageExport",!0),[2,!0]}catch(t){return y.b.setCache("simplifiedImageExport",!1),[2,!1]}return[3,7];case 6:return r.sent(),y.b.setCache("simplifiedImageExport",!1),[2,!1];case 7:return[2]}})})},e.prototype.loadNewImage=function(t,e,i,n){return new Promise(function(r,o){var a;function s(){if(n){var e=a.src;a.onerror=function(){o(new Error('Loading image "'+t+'" failed'))},a.removeAttribute("crossorigin"),a.src="",a.src=e}else o(new Error('Loading image "'+t+'" failed'))}a=e&&i?new Image(e,i):new Image,n&&a.setAttribute("crossOrigin",n),a.onload=function(){r(a)},a.onabort=s,a.onerror=s,a.src=t})},e.prototype.getDOMURL=function(){return self.URL||self.webkitURL||self},e.prototype.getSVG=function(t,e){return r.b(this,void 0,void 0,function(){var i,n,o,a,s,u,l,h;return r.d(this,function(r){switch(r.label){case 0:return(i=this._objectsAlreadyHidden)||this.hideNonExportableSprites(),[4,this.awaitValidSprites()];case 1:return r.sent(),n=this.sprite.pixelWidth,o=this.sprite.pixelHeight,a=v.l(this.sprite.dom),s=v.m(this.sprite.dom),u=this.normalizeSVG(this.serializeElement(this.sprite.paper.defs)+this.serializeElement(this.sprite.dom),e,n,o,a,s),l=this.adapter.apply("charset",{charset:"charset=utf-8",type:"svg",options:e}).charset,h=this.adapter.apply("getSVG",{data:"data:"+this.getContentType(t)+";"+l+","+encodeURIComponent(u),options:e}).data,i||this.restoreNonExportableSprites(),[2,h]}})})},e.prototype.normalizeSVG=function(t,e,i,n,r,o,a){var s="";i&&(s+='width="'+i+'px" '),n&&(s+='height="'+n+'px" ');var u="";r&&(u+="font-family: "+r.replace(/"/g,"")+";"),o&&(u+="font-size: "+o+";"),t.match(/]*)width="[^"]*"/,"$1")).replace(/(]*)height="[^"]*"/,"$1")).replace(/('+t+"",a&&(t=t.replace(/(]*>)/,'$1')),x.a()&&(t=t.replace(/]*\/>/gi,""));var l=new RegExp("url\\("+O.escapeForRgex(O.getBaseURI()),"g");return t=t.replace(l,"url(#"),t=this.adapter.apply("normalizeSVG",{data:t,options:e}).data},e.prototype.serializeElement=function(t){return(new XMLSerializer).serializeToString(t)},e.prototype.getPDF=function(t,e){return r.b(this,void 0,void 0,function(){var i,n,o,a,s,u,l,h;return r.d(this,function(r){switch(r.label){case 0:return[4,this.getImage(e.imageFormat||"png",e)];case 1:return i=r.sent(),[4,this.pdfmake];case 2:return n=r.sent(),o=[30,30,30,30],a={pageSize:e.pageSize||"A4",pageOrientation:e.pageOrientation||"portrait",pageMargins:e.pageMargins||o,content:[]},(s=this.adapter.apply("title",{title:this.title,options:e}).title)&&a.content.push({text:s,fontSize:e.fontSize,bold:!0,margin:[0,0,0,15]}),e.addURL&&a.content.push({text:this.language.translate("Saved from")+": "+document.location.href,fontSize:e.fontSize,margin:[0,0,0,15]}),"pdfdata"!=t&&a.content.push({image:i,fit:this.getPageSizeFit(a.pageSize,a.pageMargins)}),"pdfdata"==t||e.addData?(l=(u=a.content).push,h={},[4,this.getPDFData("pdf",e)]):[3,4];case 3:l.apply(u,[(h.table=r.sent(),h)]),r.label=4;case 4:return a=this.adapter.apply("pdfmakeDocument",{doc:a,options:e}).doc,[4,new Promise(function(t,e){n.createPdf(a).getDataUrl(function(e){t(e)})})];case 5:return[2,r.sent()]}})})},e.prototype.getPDFData=function(t,e){return r.b(this,void 0,void 0,function(){var t,i,n,o,a,s=this;return r.d(this,function(r){if(t={body:[]},i=this.adapter.apply("formatDataFields",{dataFields:this.dataFields,format:"pdf"}).dataFields,n=this.data,e.pivot)_.each(i,function(i,r){var o=[];e.addColumnNames&&o.push(r);for(var a=n.length,u=0;u=0)&&(l='"'+l+'"'),a.push(l)}),a.join(o)},e.prototype.getHTML=function(t,e){return r.b(this,void 0,void 0,function(){var i,n,o,a,s,u,l=this;return r.d(this,function(r){if(i="
      ",e.tableClass&&(i='
      '),n=this.adapter.apply("formatDataFields",{dataFields:this.dataFields,format:"html"}).dataFields,o=this.data,e.pivot)_.each(n,function(t,n){var r=[];e.addColumnNames&&r.push(n);for(var a=o.length,s=0;s'),i||(i=t);var s=r?"th":"td",u=!0;return _.each(i,function(i,r){var l=o.convertEmptyValue(i,t[i],e),h=n?l:o.convertToSpecialFormat(i,l,e);h=(h=""+h).replace(/[\u00A0-\u9999<>\&]/gim,function(t){return"&#"+t.charCodeAt(0)+";"});var c=s;e.pivot&&u&&(c="th"),e.cellClass?a+="\n\t\t<"+c+' class="'+e.cellClass+'">'+h+"":a+="\n\t\t<"+c+">"+h+"",u=!1}),a+="\n\t"},e.prototype.getJSON=function(t,e){return r.b(this,void 0,void 0,function(){var i,n,o,a,s,u,l,h,c=this;return r.d(this,function(r){if(n=this.adapter.apply("formatDataFields",{dataFields:this.dataFields,format:"csv"}).dataFields,this._dynamicDataFields)i=this.data;else for(i=[],o=this.data,a=function(t,r){var a=o[r];if("object"==typeof a){var s={};_.each(a,function(t,i){w.hasValue(n[t])&&(s[n[t]]=c.convertToSpecialFormat(t,i,e))}),i.push(s)}},s=o.length,u=0;u

      '+this.language.translate('To save the image, right-click thumbnail on the left and choose "Save picture as..."')+'

      '+this.language.translate("(Press ESC to close this message)")+"

      ",this.language.translate("Image Export Complete")):(g=void 0,e.match(/\.svg$/)?g="image/svg+xml":(g="text/plain",e+=".txt"),(m=document.createElement("iframe")).width="1px",m.height="1px",m.style.display="none",document.body.appendChild(m),(y=m.contentDocument).open(g,"replace"),y.write(decodeURIComponent(f[3])),y.close(),y.execCommand("SaveAs",!0,e),document.body.removeChild(m))):window.location.href=t;return[2,!0]})})},e.prototype.downloadSupport=function(){return this.linkDownloadSupport()||this.msBlobDownloadSupport()},e.prototype.linkDownloadSupport=function(){var t=y.b.getCache("linkDownloadSupport");if(!1===t||!0===t)return t;var e=void 0!==document.createElement("a").download;return y.b.setCache("linkDownloadSupport",e),e},e.prototype.blobDownloadSupport=function(){return w.hasValue(window.Blob)},e.prototype.msBlobDownloadSupport=function(){return w.hasValue(window.navigator.msSaveOrOpenBlob)},e.prototype.legacyIE=function(){var t=document.createElement("div");return t.innerHTML="\x3c!--[if lt IE 10]> *",{display:"none",position:"fixed",visibility:"hidden",opacity:"0",clipPath:"polygon(0px 0px,0px 0px,0px 0px,0px 0px);"}),i&&document&&document.title&&(a=document.title,document.title=i),(s=new Image).src=t,s.style.maxWidth="100%",s.style.display="block",s.style.position="relative",s.style.visibility="visible",s.style.opacity="1",s.style.clipPath="none",document.body.appendChild(s),this.setTimeout(function(){window.print()},50),/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream&&e.delay<1e3?e.delay=1e3:e.delay<100&&(e.delay=100),this.setTimeout(function(){document.body.removeChild(s),o.dispose(),a&&(document.title=document.title),document.documentElement.scrollTop=document.body.scrollTop=n},e.delay||500),[2,!0]})})},e.prototype.printViaIframe=function(t,e,i){return r.b(this,void 0,void 0,function(){var n,o;return r.d(this,function(r){return(n=document.createElement("iframe")).style.visibility="hidden",document.body.appendChild(n),n.contentWindow.document.open(),n.contentWindow.document.close(),(o=new Image).src=t,o.style.maxWidth="100%",i&&(n.contentWindow.document.title=i),n.contentWindow.document.body.appendChild(o),n.load=function(){n.contentWindow.document.body.appendChild(o)},this.setTimeout(function(){try{n.contentWindow.document.execCommand("print",!1,null)||n.contentWindow.print()}catch(t){n.contentWindow.print()}},e.delay||50),/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream&&e.delay<1e3?e.delay=1e3:e.delay<100&&(e.delay=100),this.setTimeout(function(){document.body.removeChild(n)},e.delay+50||100),[2,!0]})})},e.prototype.findBackgroundColor=function(t){var e=1,i=Object(v.p)(t,"background-color");if((i.match(/[^,]*,[^,]*,[^,]*,[ ]?0/)||"transparent"==i)&&(e=0),0==e){var n=t.parentElement;return n?this.findBackgroundColor(n):Object(m.c)("#fff")}return Object(m.c)(i,e)},Object.defineProperty(e.prototype,"container",{get:function(){return this.adapter.apply("container",{container:this._container}).container},set:function(t){this._container=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"sprite",{get:function(){return this.adapter.apply("sprite",{sprite:this._sprite}).sprite},set:function(t){this._sprite=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"extraSprites",{get:function(){return this.adapter.apply("extraSprites",{extraSprites:this._extraSprites}).extraSprites},set:function(t){this._extraSprites=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"validateSprites",{get:function(){return this.adapter.apply("validateSprites",{validateSprites:this._validateSprites}).validateSprites},set:function(t){this._validateSprites=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"data",{get:function(){return this.adapter.apply("data",{data:this._data}).data},set:function(t){this._data=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dataFields",{get:function(){return this._dataFields||this.generateDataFields(),this.adapter.apply("dataFields",{dataFields:this._dataFields}).dataFields},set:function(t){this._dataFields=t,this._dynamicDataFields=!1},enumerable:!0,configurable:!0}),e.prototype.handleDataUpdated=function(){this._dynamicDataFields&&(this._dataFields=void 0)},Object.defineProperty(e.prototype,"dateFormatter",{get:function(){return this._dateFormatter||(this._dateFormatter=new c.a,this._dateFormatter.language=this.language),this.adapter.apply("dateFormatter",{dateFormatter:this._dateFormatter}).dateFormatter},set:function(t){this._dateFormatter=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dateFormat",{get:function(){return this.adapter.apply("dateFormat",{dateFormat:this._dateFormat}).dateFormat},set:function(t){this._dateFormat=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dateFields",{get:function(){return this._dateFields||(this._dateFields=new l.b),this.adapter.apply("dateFields",{dateFields:this._dateFields}).dateFields},set:function(t){this._dateFields=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"numberFormatter",{get:function(){return this._numberFormatter||(this._numberFormatter=new d.a,this._numberFormatter.language=this.language),this.adapter.apply("numberFormatter",{numberFormatter:this._numberFormatter}).numberFormatter},set:function(t){this._dateFormatter=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"numberFormat",{get:function(){return this.adapter.apply("numberFormat",{numberFormat:this._numberFormat}).numberFormat},set:function(t){this._numberFormat=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"numberFields",{get:function(){return this._numberFields||(this._numberFields=new l.b),this.adapter.apply("numberFields",{numberFields:this._numberFields}).numberFields},set:function(t){this._numberFields=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"durationFormatter",{get:function(){return this._durationFormatter||(this._durationFormatter=new p.a,this._durationFormatter.language=this.language),this.adapter.apply("durationFormatter",{durationFormatter:this._durationFormatter}).durationFormatter},set:function(t){this._durationFormatter=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"durationFormat",{get:function(){return this.adapter.apply("durationFormat",{durationFormat:this._durationFormat}).durationFormat},set:function(t){this._durationFormat=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"durationFields",{get:function(){return this._durationFields||(this._durationFields=new l.b),this.adapter.apply("durationFields",{durationFields:this._durationFields}).durationFields},set:function(t){this._durationFields=t},enumerable:!0,configurable:!0}),e.prototype.generateDataFields=function(){var t=this;this._dataFields={},this.data.length&&S.each(this.data,function(e){_.each(e,function(e,i){w.hasValue(t._dataFields[e])||(t._dataFields[e]=t.adapter.apply("dataFieldName",{name:e,field:e}).name)})})},e.prototype.isDateField=function(t){return this.adapter.apply("isDateField",{isDateField:this.dateFields.contains(t),field:t}).isDateField},e.prototype.isNumberField=function(t){return this.adapter.apply("isNumberField",{isNumberField:this.numberFields.contains(t),field:t}).isNumberField},e.prototype.isDurationField=function(t){return this.adapter.apply("isDurationField",{isDurationField:this.durationFields.contains(t),field:t}).isDurationField},e.prototype.getContentType=function(t){var e="";switch(t){case"png":case"gif":e="image/"+t;break;case"jpg":e="image/jpeg";break;case"svg":e="image/svg+xml";break;case"csv":e="text/csv";break;case"json":e="application/json";break;case"html":e="text/html";break;case"pdf":case"pdfdata":e="application/pdf";break;case"xlsx":e="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}return this.adapter.apply("contentType",{contentType:e,type:t}).contentType},Object.defineProperty(e.prototype,"filePrefix",{get:function(){return this.adapter.apply("filePrefix",{filePrefix:this._filePrefix}).filePrefix},set:function(t){this._filePrefix=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"backgroundColor",{get:function(){return this.adapter.apply("backgroundColor",{backgroundColor:this._backgroundColor}).backgroundColor},set:function(t){this._backgroundColor=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"title",{get:function(){return this.adapter.apply("title",{title:this._title}).title},set:function(t){this._title=t},enumerable:!0,configurable:!0}),e.prototype.showPreloader=function(){var t=this.preloader;t&&(t.progress=.5,t.label.text="...")},e.prototype.hidePreloader=function(){var t=this.preloader;t&&(t.progress=1)},Object.defineProperty(e.prototype,"preloader",{get:function(){return this._sprite&&this._sprite.parent&&this._sprite.parent.preloader?this._sprite.parent.preloader:void 0},enumerable:!0,configurable:!0}),e.prototype.showTimeout=function(){this.showModal(this.adapter.apply("timeoutMessage",{message:this.language.translate("Export operation took longer than expected. Something might have gone wrong.")}).message)},e.prototype.hideTimeout=function(){this._timeoutTimeout&&(this.removeDispose(this._timeoutTimeout),this._timeoutTimeout=null),this.hideModal()},Object.defineProperty(e.prototype,"language",{get:function(){return this._language||(this._language=new f.a),this._language},set:function(t){this._language=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"modal",{get:function(){return this._modal||(this._modal=new u.a,this._modal.adapter.add("classPrefix",function(t){return t=b.a.classNamePrefix+t})),this._modal},enumerable:!0,configurable:!0}),e.prototype.showModal=function(t,e){this.hideModal(),this.hidePreloader();var i=this.modal;i.container=this.sprite.svgContainer.SVGContainer,i.content=t,i.readerTitle=e,i.open()},e.prototype.hideModal=function(){this._modal&&this.modal.close()},e.prototype._canvg=function(){return r.b(this,void 0,void 0,function(){var t;return r.d(this,function(e){switch(e.label){case 0:return[4,i.e("0471").then(i.bind(null,"pu93"))];case 1:return null!=(t=e.sent()).default?[2,t.default]:[2,t]}})})},Object.defineProperty(e.prototype,"canvg",{get:function(){return this._canvg()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pdfmake",{get:function(){return null==n&&(n=function(){return r.b(this,void 0,void 0,function(){var t,e,n,o;return r.d(this,function(r){switch(r.label){case 0:return[4,Promise.all([i.e("076f").then(i.bind(null,"o2M+")),i.e("076f").then(i.bind(null,"/9Au"))])];case 1:return t=r.sent(),e=t[0],n=t[1],(o=window).pdfMake=o.pdfMake||{},o.pdfMake.vfs=n.default,e.vfs=n.default,[2,e]}})})}()),n},enumerable:!0,configurable:!0}),e.prototype._xlsx=function(){return r.b(this,void 0,void 0,function(){return r.d(this,function(t){switch(t.label){case 0:return[4,i.e("bf3e").then(i.bind(null,"s5xg"))];case 1:return[2,t.sent()]}})})},Object.defineProperty(e.prototype,"xlsx",{get:function(){return this._xlsx()},enumerable:!0,configurable:!0}),e.prototype.setFormatOptions=function(t,e){this._formatOptions.setKey(t,e)},e.prototype.getFormatOptions=function(t){return this._formatOptions.getKey(t)},e.prototype._disablePointers=function(){w.hasValue(this._spriteInteractionsEnabled)||(this._spriteInteractionsEnabled=this.sprite.interactionsEnabled),this.sprite.interactionsEnabled=!1},e.prototype._releasePointers=function(){w.hasValue(this._spriteInteractionsEnabled)&&(this.sprite.interactionsEnabled=this._spriteInteractionsEnabled)},e.prototype.hideNonExportableSprites=function(){var t=this;if(!this._objectsAlreadyHidden){var e=this.sprite.svgContainer;e&&S.each(e.nonExportableSprites,function(e){e.isHidden||e.isHiding||t._hiddenObjects.push(e),e.hide(0)}),this._objectsAlreadyHidden=!0}},e.prototype.restoreNonExportableSprites=function(){this._objectsAlreadyHidden&&(S.each(this._hiddenObjects,function(t){t.show(0)}),this._hiddenObjects=[],this._objectsAlreadyHidden=!1)},e.prototype.awaitValidSprites=function(){return r.b(this,void 0,void 0,function(){var t;return r.d(this,function(e){switch(e.label){case 0:return t=[],this.validateSprites.length&&S.each(this.validateSprites,function(e,i){e.invalid&&t.push(new Promise(function(t,i){e.events.once("validated",function(e){t()})}))}),t.length?[4,Promise.all(t)]:[3,2];case 1:e.sent(),e.label=2;case 2:return[2]}})})},e.prototype.processConfig=function(e){y.b.registeredClasses.ExportMenu=o.a,e&&w.hasValue(e.menu)&&!w.hasValue(e.menu.type)&&(e.menu.type="ExportMenu"),t.prototype.processConfig.call(this,e)},e.XLINK="http://www.w3.org/1999/xlink",e}(g.a)},GIxq:function(t,e,i){var n=i("DVYA");t.exports=function(t,e){if("number"!=typeof t&&"Number"!=n(t))throw TypeError(e);return+t}},GQop:function(t,e,i){"use strict";var n=i("AEc5");t.exports=function(t,e){return!!t&&n(function(){e?t.call(null,function(){},1):t.call(null)})}},Gb1H:function(t,e,i){var n=i("T9LF"),r=i("G5U1"),o=i("Vng0"),a=i("wDk4"),s=i("20m4"),u=function t(e,i,u){var l,h,c,p,d=e&t.F,f=e&t.G,g=e&t.P,m=e&t.B,y=f?n:e&t.S?n[i]||(n[i]={}):(n[i]||{}).prototype,b=f?r:r[i]||(r[i]={}),v=b.prototype||(b.prototype={});for(l in f&&(u=i),u)c=((h=!d&&y&&void 0!==y[l])?y:u)[l],p=m&&h?s(c,n):g&&"function"==typeof c?s(Function.call,c):c,y&&a(y,l,c,e&t.U),b[l]!=c&&o(b,l,p),g&&v[l]!=c&&(v[l]=c)};n.core=r,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},Gg2j:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),i.d(e,"PI",function(){return r}),i.d(e,"HALFPI",function(){return o}),i.d(e,"RADIANS",function(){return a}),i.d(e,"DEGREES",function(){return s}),e.toNumberRange=function(t,e,i){if(n.hasValue(t))return l(t=n.toNumber(t),e,i);return t},e.round=u,e.ceil=function(t,e){if(!n.isNumber(e)||e<=0)return Math.ceil(t);var i=Math.pow(10,e);return Math.ceil(t*i)/i},e.stretch=function(t,e,i){return t*(i-e)+e},e.fitToRange=l,e.sin=h,e.tan=function(t){return u(Math.tan(a*t),10)},e.cos=c,e.max=p,e.min=d,e.closest=function(t,e){return t.reduce(function(t,i){return Math.abs(i-e)0)for(var s=0;s<=r;s++){var u=y(t,e,i,n,s/r);o+=f(a,u),a=u}return o},e.getScale=function(t,e,i,n){var r=f(e,n),o=f(t,i);return Math.abs(o/r)},e.getMidPoint=function(t,e,i){n.isNumber(i)||(i=.5);return{x:t.x+(e.x-t.x)*i,y:t.y+(e.y-t.y)*i}},e.getRotation=g,e.getAngle=m,e.getCenterShift=function(t,e,i,n,r){var o=g(e,i,n,r)-90;o<0&&(o+=360);var a=f(e,n),s=Math.cos(o)/a+e.x,u=Math.cos(o)/a+e.y;return{x:s-t.x,y:u-t.y}},e.getBBox=function(t){if(t){var e=t.length;if(0!==e){for(var i,r=void 0,o=void 0,a=void 0,s=0;so)&&(o=u.x),(!n.isNumber(r)||u.xa)&&(a=u.y)}return{x:r,y:i,width:o-r,height:a-i}}}return{x:0,y:0,width:0,height:0}},e.getCommonRectangle=function(t){var e=t.length;if(0!==e){for(var i=void 0,n=void 0,r=void 0,o=void 0,a=0;ai){var n=e;e=i,i=n}t=v(t);var r=(e-v(e))/360;ti&&(t-360>e?t-=360:t=te+(i-e)/2-180?e:i);return t},e.getArcRect=function(t,e,i){var r=Number.MAX_VALUE,o=Number.MAX_VALUE,a=-Number.MAX_VALUE,s=-Number.MAX_VALUE,u=[];n.isNumber(i)||(i=1);u.push(x(i,t)),u.push(x(i,e));for(var l=Math.min(90*Math.floor(t/90),90*Math.floor(e/90)),h=Math.max(90*Math.ceil(t/90),90*Math.ceil(e/90)),c=l;c<=h;c+=90)c>=t&&c<=e&&u.push(x(i,c));for(var p=0;pa&&(a=d.x),d.y>s&&(s=d.y)}return{x:r,y:o,width:a-r,height:s-o}},e.getArcPoint=x,e.isInRectangle=function(t,e){if(t.x>=e.x&&t.x<=e.x+e.width&&t.y>e.y&&t.yi&&(t=i),t}function h(t){return u(Math.sin(a*t),10)}function c(t){return u(Math.cos(a*t),10)}function p(t,e){return n.isNumber(t)?n.isNumber(e)&&e>t?e:t:n.isNumber(e)?e:null}function d(t,e){return n.isNumber(t)?n.isNumber(e)&&e0&&(i.maxWidth=t),e>0&&(i.maxHeight=e),u.n(this.SVGContainer)),i.maxWidth||(i.maxWidth=0),i.maxHeight||(i.maxHeight=0),this.cssScale=1,this.checkTransform(this.htmlElement))},Object.defineProperty(t.prototype,"container",{get:function(){return this._container},set:function(t){this._container=t,this.measure()},enumerable:!0,configurable:!0}),t.prototype.isDisposed=function(){return this._disposed},t.prototype.dispose=function(){this._disposed||l.remove(d,this),l.each(this._disposers,function(t){t.dispose()})},Object.defineProperty(t.prototype,"hideOverflow",{set:function(t){this.SVGContainer.style.overflow=t?"hidden":""},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"modal",{get:function(){return h.hasValue(this._modal)||(this._modal=new o.a,this._modal.container=this.SVGContainer,this._disposers.push(this._modal)),this._modal},enumerable:!0,configurable:!0}),t.prototype.openModal=function(t,e){this.closeModal();var i=this.modal;return i.content=t,i.readerTitle=e,i.open(),i},t.prototype.closeModal=function(){this._modal&&this.modal.close()},Object.defineProperty(t.prototype,"popups",{get:function(){if(!h.hasValue(this._popups)){var t=new r.a;t.container=this.SVGContainer,this._popups=new a.e(t),this._disposers.push(new a.c(this._popups)),this._disposers.push(this._popups.template)}return this._popups},enumerable:!0,configurable:!0}),t.prototype.openPopup=function(t,e){var i=this.popups.create();return i.content=t,h.hasValue(e)&&(i.title=e),i.open(),i},t.prototype.closeAllPopups=function(){this.popups.each(function(t){t.close()})},t.prototype.checkTransform=function(t){if(window.getComputedStyle){if(t&&t.style){var e=window.getComputedStyle(t,null);if(e){var i=e.getPropertyValue("-webkit-transform")||e.getPropertyValue("-moz-transform")||e.getPropertyValue("-ms-transform")||e.getPropertyValue("-o-transform")||e.getPropertyValue("transform");if(i&&"none"!==i){var n=i.split("(")[1].split(")")[0].split(","),r=Number(n[0]),o=Number(n[1]),a=Math.sqrt(r*r+o*o);isNaN(a)||(this.cssScale*=a)}}}t.parentNode&&t.parentNode instanceof HTMLElement&&this.checkTransform(t.parentNode)}},t}()},HW78:function(t,e,i){t.exports=!i("gD3S")&&!i("AEc5")(function(){return 7!=Object.defineProperty(i("+wz8")("div"),"a",{get:function(){return 7}}).a})},HyzE:function(t,e,i){var n=i("Gb1H"),r=i("aPa3");n(n.G+n.F*(parseFloat!=r),{parseFloat:r})},ID9o:function(t,e,i){var n=i("YEtG")("iterator"),r=!1;try{var o=[7][n]();o.return=function(){r=!0},Array.from(o,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!r)return!1;var i=!1;try{var o=[7],a=o[n]();a.next=function(){return{done:i=!0}},o[n]=function(){return a},t(o)}catch(t){}return i}},IGCA:function(t,e,i){"use strict";i("Mvcd")("blink",function(t){return function(){return t(this,"blink","","")}})},ISWh:function(t,e,i){"use strict";i.d(e,"a",function(){return b});var n=i("m4/l"),r=i("C6dT"),o=i("xIv9"),a=i("aGXA"),s=i("zhwk"),u=i("qCRI"),l=i("CnhP"),h=i("aCit"),c=i("WYhe"),p=i("MIZb"),d=i("tjMS"),f=i("Gg2j"),g=i("0FpR"),m=i("Mtpk"),y=i("v9UT"),b=function(t){function e(){var e=t.call(this)||this;e._previousStart=0,e._previousEnd=1,e._prevStart=0,e._prevEnd=1,e._isBusy=!1,e._skipRangeEvents=!1,e.updateWhileMoving=!0,e.className="Scrollbar",e.minHeight=12,e.minWidth=12,e.animationDuration=0,e.animationEasing=g.cubicOut,e.margin(10,10,10,10);var i=new p.a,n=e.background;return n.cornerRadius(10,10,10,10),n.fill=i.getFor("fill"),n.fillOpacity=.5,e.showSystemTooltip=!0,e.startGrip=new o.a,e.endGrip=new o.a,e.events.on("transformed",e.updateThumb,e,!1),e.start=0,e.end=1,e.role="scrollbar",e.thumb.role="slider",e.thumb.readerLive="polite",e.startGrip.role="slider",e.endGrip.role="slider",e.events.once("inited",function(){e._previousStart=void 0,e.dispatchRangeChange()},void 0,!1),e.hideGrips=!1,e.orientation="horizontal",e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),"horizontal"===this.orientation?(m.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Use TAB to select grip buttons or left and right arrows to change selection")),m.hasValue(this.thumb.readerDescription)||(this.thumb.readerDescription=this.language.translate("Use left and right arrows to move selection")),m.hasValue(this.startGrip.readerDescription)||(this.startGrip.readerDescription=this.language.translate("Use left and right arrows to move left selection")),m.hasValue(this.endGrip.readerDescription)||(this.endGrip.readerDescription=this.language.translate("Use left and right arrows to move right selection"))):(m.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Use TAB select grip buttons or up and down arrows to change selection")),m.hasValue(this.thumb.readerDescription)||(this.thumb.readerDescription=this.language.translate("Use up and down arrows to move selection")),m.hasValue(this.startGrip.readerDescription)||(this.startGrip.readerDescription=this.language.translate("Use up and down arrows to move upper selection")),m.hasValue(this.endGrip.readerDescription)||(this.endGrip.readerDescription=this.language.translate("Use up and down arrows to move lower selection")))},e.prototype.validateLayout=function(){this.updateSize(),t.prototype.validateLayout.call(this),this.updateExtremes()},e.prototype.processBackground=function(){t.prototype.processBackground.call(this);var e=this.background;e.clickable=!0,e.events.on("hit",this.handleBgHit,this,void 0)},e.prototype.handleBgHit=function(t){this.makeBusy();var e=t.spritePoint;e=y.spritePointToSprite(e,this.background,this);var i=this.thumb;if("horizontal"==this.orientation){var n=e.x-i.pixelWidth/2;n=f.fitToRange(n,0,this.innerWidth-i.pixelWidth),this._thumbAnimation=i.animate({property:"x",to:n},this.animationDuration,this.animationEasing)}else{var r=e.y-i.pixelHeight/2;r=f.fitToRange(r,0,this.innerHeight-i.pixelHeight),this._thumbAnimation=i.animate({property:"y",to:r},this.animationDuration,this.animationEasing)}this.animationDuration>0?this._thumbAnimation.events.on("animationended",this.makeUnbusy,this,!1):(this._thumb.validate(),this.makeUnbusy())},e.prototype.makeBusy=function(){this._isBusy=!0,this._skipRangeEvents=!1,this._unbusyTimeout&&this.removeDispose(this._unbusyTimeout),this._unbusyTimeout=void 0,this.stopAnimations()},e.prototype.stopAnimations=function(){this._thumbAnimation&&this._thumbAnimation.stop(!0),this._zoomAnimation&&this._zoomAnimation.stop(!0)},e.prototype.makeUnbusy=function(){this._unbusyTimeout=this.setTimeout(this.makeUnbusyReal.bind(this),1.1*this.animationDuration)},e.prototype.makeUnbusyReal=function(){this._usingGrip=void 0,this._isBusy=!1,this.updateWhileMoving||this.dispatchRangeChange()},e.prototype.dispatchRangeChange=function(){this._previousEnd==this.end&&this._previousStart==this.start||(this._previousStart=this.start,this._previousEnd=this.end,this.dispatch("rangechanged"))},e.prototype.updateThumb=function(){if(this.parent){var t=this.thumb,e=this.start,i=this.end,n=this.startGrip,r=this.endGrip;if("horizontal"==this.orientation){var o=this.innerWidth;t.width=o*(i-e),t.maxX=o-t.pixelWidth,t.x=e*o,n.moveTo({x:t.pixelX,y:0},void 0,void 0,!0),r.moveTo({x:t.pixelX+t.pixelWidth,y:0},void 0,void 0,!0),n.readerTitle=this.language.translate("From %1",void 0,this.adapter.apply("positionValue",{value:Math.round(100*e)+"%",position:e}).value),r.readerTitle=this.language.translate("To %1",void 0,this.adapter.apply("positionValue",{value:Math.round(100*i)+"%",position:i}).value)}else{var a=this.innerHeight;t.height=a*(i-e),t.maxY=a-t.pixelHeight,t.y=(1-i)*a,n.moveTo({x:0,y:t.pixelY+t.pixelHeight},void 0,void 0,!0),r.moveTo({x:0,y:t.pixelY},void 0,void 0,!0),n.readerTitle=this.language.translate("To %1",void 0,this.adapter.apply("positionValue",{value:Math.round(100*(1-e))+"%",position:1-e}).value),r.readerTitle=this.language.translate("From %1",void 0,this.adapter.apply("positionValue",{value:Math.round(100*(1-i))+"%",position:1-i}).value)}t.readerTitle=this.language.translate("From %1 to %2",void 0,this.adapter.apply("positionValue",{value:Math.round(100*e)+"%",position:e}).value,this.adapter.apply("positionValue",{value:Math.round(100*i)+"%",position:i}).value),!this._skipRangeEvents&&this.updateWhileMoving&&this.dispatchRangeChange()}},e.prototype.updateExtremes=function(){var t=0,e=0,i=0,n=0;"horizontal"==this.orientation?(i=this.innerWidth,e=n=this.innerHeight/2):(n=this.innerHeight,t=i=this.innerWidth/2);var r=this.startGrip;r.minX=t,r.maxX=i,r.minY=e,r.maxY=n;var o=this.endGrip;o.minX=t,o.maxX=i,o.minY=e,o.maxY=n;var a=this.thumb;a.minX=t,a.maxX=i,a.minY=e,a.maxY=n},e.prototype.updateSize=function(){var t=this.orientation,e=this.startGrip;e&&(e.orientation=t),this.endGrip&&(this.endGrip.orientation=t);var i=this.thumb;i&&("horizontal"==t?(m.isNumber(this._pixelWidth)||this.width instanceof d.a||(this.width=Object(d.c)(100)),m.hasValue(this.percentHeight)&&(this.height=this.minHeight),i.height=this.innerHeight,i.verticalCenter="middle",i.horizontalCenter="left"):(m.isNumber(this._pixelHeight)||this.height instanceof d.a||(this.height=Object(d.c)(100)),m.hasValue(this.percentWidth)&&(this.width=this.minWidth),i.width=this.innerWidth,i.verticalCenter="top",i.horizontalCenter="middle"))},Object.defineProperty(e.prototype,"start",{get:function(){return Math.min(this.getPosition(this._start),this.getPosition(this._end))},set:function(t){this._isBusy||(this.__start=t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"__start",{get:function(){return this._start},set:function(t){this._start=this.getPosition(t),this.updateThumb()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"end",{get:function(){return Math.max(this.getPosition(this._start),this.getPosition(this._end))},set:function(t){this._isBusy||(this.__end=t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"__end",{get:function(){return this._end},set:function(t){this._end=this.getPosition(t),this.updateThumb()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"range",{get:function(){return{start:this.start,end:this.end,priority:this._usingGrip}},enumerable:!0,configurable:!0}),e.prototype.skipRangeEvents=function(){this._isBusy||(this._skipRangeEvents=!0)},e.prototype.fixRange=function(t){t.start==f.round(this._start,2)&&t.end==f.round(this._end,2)||(this._start=t.start,this._end=t.end,this._skipRangeEvents=!0,this.updateThumb(),this._skipRangeEvents=!1,this.thumb.validate(),this.thumb.background.validate())},e.prototype.getPosition=function(t){return f.fitToRange(f.round(t,4),0,1)},Object.defineProperty(e.prototype,"orientation",{get:function(){return this.getPropertyValue("orientation")},set:function(t){this.setPropertyValue("orientation",t)&&("horizontal"===t?(this.startGrip.cursorOverStyle=u.a.horizontalResize,this.endGrip.cursorOverStyle=u.a.horizontalResize):(this.startGrip.cursorOverStyle=u.a.verticalResize,this.endGrip.cursorOverStyle=u.a.verticalResize),this.updateByOrientation(),this.invalidate())},enumerable:!0,configurable:!0}),e.prototype.updateByOrientation=function(){},Object.defineProperty(e.prototype,"startGrip",{get:function(){return this._startGrip},set:function(t){this._startGrip&&this.removeDispose(this._startGrip),this._startGrip=t,this.processGrip(t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endGrip",{get:function(){return this._endGrip},set:function(t){this._endGrip&&this.removeDispose(this._endGrip),this._endGrip=t,this.processGrip(t)},enumerable:!0,configurable:!0}),e.prototype.processGrip=function(t){t.parent=this,t.isMeasured=!1,t.focusable=!0,t.shouldClone=!1,t.zIndex=100,t.events.on("drag",this.handleGripDrag,this,!1),t.events.on("dragstop",this.makeUnbusy,this,!1),t.events.on("down",this.makeBusy,this,!1),this._disposers.push(t)},e.prototype.handleGripDrag=function(t){this.makeBusy(),t.target===this._startGrip?this._usingGrip="start":this._usingGrip="end","horizontal"==this.orientation?(this._start=this.startGrip.pixelX/this.innerWidth,this._end=this.endGrip.pixelX/this.innerWidth):(this._start=1-this.startGrip.pixelY/this.innerHeight,this._end=1-this.endGrip.pixelY/this.innerHeight),this.updateThumb()},Object.defineProperty(e.prototype,"thumb",{get:function(){if(!this._thumb){var t=new a.a;t.background.cornerRadius(10,10,10,10),t.padding(0,0,0,0),this.thumb=t}return this._thumb},set:function(t){var e=this;t&&(this._thumb&&this.removeDispose(this._thumb),this._thumb=t,t.parent=this,t.isMeasured=!1,t.inert=!0,t.draggable=!0,t.clickable=!0,t.hoverable=!0,t.focusable=!0,t.shouldClone=!1,t.zIndex=0,t.cursorOverStyle=u.a.grab,t.cursorDownStyle=u.a.grabbing,t.events.on("dragstart",this.makeBusy,this,!1),t.events.on("dragstop",this.makeUnbusy,this,!1),t.events.on("positionchanged",this.handleThumbPosition,this,!1),t.events.on("sizechanged",this.handleThumbPosition,this,!1),t.events.on("doublehit",this.handleDoubleClick,this,!1),this._disposers.push(Object(s.b)().body.events.on("keyup",function(t){c.b.isKey(t.event,["space","enter"])&&e.thumb.isFocused&&(t.event.preventDefault(),e.handleDoubleClick())})),this._disposers.push(this._thumb))},enumerable:!0,configurable:!0}),e.prototype.handleDoubleClick=function(){this.makeBusy();var t=0,e=1;0!=this.start||1!=this.end?(this._prevStart=this.start,this._prevEnd=this.end):(t=this._prevStart,e=this._prevEnd);var i=this.animate([{property:"__start",to:t},{property:"__end",to:e}],this.animationDuration,this.animationEasing);i&&!i.isFinished()?(i.events.on("animationended",this.makeUnbusy,this,!1),this._zoomAnimation=i):this.makeUnbusy()},e.prototype.handleThumbPosition=function(){var t=this.thumb;if("horizontal"==this.orientation){var e=this.innerWidth,i=t.innerWidth,n=t.pixelX;this._start=n/e,this._end=(n+i)/e,this.updateThumb()}else{var r=this.innerHeight,o=t.innerHeight,a=t.pixelY;this._start=1-(a+o)/r,this._end=1-a/r,this.updateThumb()}},e.prototype.createBackground=function(){return new l.a},Object.defineProperty(e.prototype,"hideGrips",{get:function(){return this._hideGrips},set:function(t){var e=this;this._hideGrips=t,this._overDisposer&&this.removeDispose(this._overDisposer),this._outDisposer&&this.removeDispose(this._outDisposer),t?(this._overDisposer=this.events.on("over",function(){e.startGrip.show(),e.endGrip.show()},void 0,!1),this._outDisposer=this.events.on("out",function(){e.startGrip.hide(),e.endGrip.hide()},void 0,!1),this.startGrip.hide(),this.endGrip.hide()):(this.startGrip.show(),this.endGrip.show())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"animationDuration",{get:function(){return this.getPropertyValue("animationDuration")},set:function(t){this.setPropertyValue("animationDuration",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"animationEasing",{get:function(){return this.getPropertyValue("animationEasing")},set:function(t){this.setPropertyValue("animationEasing",t)},enumerable:!0,configurable:!0}),e.prototype.asFunction=function(e){return"animationEasing"==e||t.prototype.asIs.call(this,e)},e}(r.a);h.b.registeredClasses.Scrollbar=b},ITVZ:function(t,e,i){var n=i("Gb1H"),r=Math.PI/180;n(n.S,"Math",{radians:function(t){return t*r}})},IYrR:function(t,e,i){var n=i("YEtG")("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(i){try{return e[n]=!1,!"/./"[t](e)}catch(t){}}return!0}},IbTV:function(t,e,i){"use strict";i.d(e,"a",function(){return c});var n=i("m4/l"),r=i("TDx+"),o=i("aCit"),a=i("Gg2j"),s=i("Mtpk"),u=i("hGwe"),l=i("v9UT"),h=i("tjMS"),c=function(t){function e(){var e=t.call(this)||this;return e.fdx=0,e.fdy=0,e.className="AxisLabelCircular",e.padding(0,0,0,0),e.location=.5,e.radius=0,e.isMeasured=!1,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"relativeRotation",{get:function(){return this.getPropertyValue("relativeRotation")},set:function(t){if(this.setPropertyValue("relativeRotation",t,!0),!s.hasValue(t)){this.rotation=void 0;var e=this.dataItem;e&&e.component&&e.component.invalidateDataItems()}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"bent",{get:function(){return this.getPropertyValue("bent")},set:function(t){this.setPropertyValue("bent",t,!0),this.setPropertyValue("wrap",!1),this.setPropertyValue("horizontalCenter","none"),this.setPropertyValue("verticalCenter","none"),t&&(this.textAlign="middle")},enumerable:!0,configurable:!0}),e.prototype.pixelRadius=function(t){var e=1;return this.inside&&(e=-1),l.relativeToValue(this.radius,t)*e},e.prototype.pixelRadiusY=function(t,e){var i=1;this.inside&&(i=-1);var n=this.radius;return s.isNumber(n)?(n*=e/t,l.relativeToValue(n,t)*i):l.relativeToValue(n,e)*i},e.prototype.fixPosition=function(t,e,i,n,r){s.isNumber(i)||(i=e),s.isNumber(n)||(n=0),s.isNumber(r)||(r=0);var o={x:e*a.cos(t),y:i*a.sin(t)};this.invalid&&this.validate();var l=!1,c=this.radius;c instanceof h.a&&c.value<0?l=!0:c<0&&(l=!0);var p=this.relativeRotation,d=this.pixelRadius(e);if(this.bent){var f={x:e*a.cos(t+180),y:i*a.sin(t+180)};return this.path=u.moveTo(f)+u.arcTo(t+180,360,e+d,i+d*i/e),void(this.locationOnPath=.5)}if(s.isNumber(p)){this.horizontalCenter="none",this.verticalCenter="none",t=a.fitAngleToRange(t,-180,180);var g=this.bbox.width,m=this.bbox.height,y=this.pixelPaddingBottom,b=this.pixelPaddingTop,v=this.pixelPaddingLeft,x=this.pixelPaddingRight;t>90||t<-90?-90==p&&(p=90,g=0):(-90==p&&(m=-m),90==p&&(p=-90,g=-v-x,m=-m-b-y)),this.rotation=p+t+90;var _=a.sin(p)/2,P=a.cos(p)/2,w=this.rotation;this.dx=m*_*a.sin(w)-g*P*a.cos(w),this.dy=-m*_*a.cos(w)-g*P*a.sin(w),this.inside?t>90||t<-90?d-=(y+b)*a.cos(p)+(v+x)*a.sin(p):d+=(y+this.bbox.height+b)*a.cos(p)+(v+x+this.bbox.width)*a.sin(p):d+=(m+y+b)*a.cos(p)+(g+v+x)*a.sin(p),o.x+=a.cos(t)*d,o.y+=a.sin(t)*d*i/e}else this.horizontalCenter="middle",this.verticalCenter="middle",l?(this.dx=0,this.dy=0,o.x=(e+d)*a.cos(t),o.y=(i+d*i/e)*a.sin(t)):(this.dy=this._measuredHeight/2*a.sin(t),this.dx=this._measuredWidth/2*a.cos(t),o.x+=a.cos(t)*d,o.y+=a.sin(t)*d*i/e);o.x+=n,o.y+=r,this.fdx=this.dx,this.fdy=this.dy,this.moveTo(o)},e}(r.a);o.b.registeredClasses.AxisLabelCircular=c},IcXr:function(t,e,i){var n=i("Gb1H"),r=i("DbOM"),o=i("snR7"),a=(i("T9LF").Reflect||{}).apply,s=Function.apply;n(n.S+n.F*!i("AEc5")(function(){a(function(){})}),"Reflect",{apply:function(t,e,i){var n=r(t),u=o(i);return a?a(n,e,u):s.call(n,e,u)}})},"Ijb/":function(t,e,i){var n=i("Gb1H"),r=i("0C8c");n(n.S+n.F*(r!=Math.expm1),"Math",{expm1:r})},Inf5:function(t,e,i){"use strict";i.d(e,"a",function(){return d});var n=i("m4/l"),r=i("C6dT"),o=i("Vs7R"),a=i("aCit"),s=i("Gg2j"),u=i("hGwe"),l=i("Mtpk"),h=i("v9UT"),c=i("tjMS"),p=i("CuFa"),d=function(t){function e(){var e=t.call(this)||this;return e.className="Slice",e.setPropertyValue("cornerRadius",0),e.setPropertyValue("startAngle",0),e.setPercentProperty("innerRadius",0),e.setPercentProperty("radius",0),e.setPropertyValue("arc",0),e.setPropertyValue("shiftRadius",0),e.strokeOpacity=1,e.setPropertyValue("layout","none"),e.slice=e.createChild(o.a),e.slice.isMeasured=!1,e._disposers.push(e.slice),e.applyTheme(),e}return n.c(e,t),e.prototype.draw=function(){t.prototype.draw.call(this);var e=this.radiusY;this.radius>0&&0==e&&(e=.01),this.slice.path=u.arc(this.startAngle,this.arc,this.radius,this.pixelInnerRadius,e,this.cornerRadius,this.innerCornerRadius),this.slice.invalidate(),this.shiftRadius=this.shiftRadius,this.realFill instanceof p.a&&this.updateGradient(this.realFill),this.realStroke instanceof p.a&&this.updateGradient(this.realStroke)},e.prototype.updateGradient=function(t){t.element.attr({gradientUnits:"userSpaceOnUse"}),t.element.attr({r:this.radius}),t.cx=0,t.cy=0,t.element.attr({radius:this.radius})},Object.defineProperty(e.prototype,"bbox",{get:function(){if(this.definedBBox)return this.definedBBox;if(this.isMeasured){var t=s.getArcRect(this.startAngle,this.startAngle+this.arc,this.pixelInnerRadius),e=s.getArcRect(this.startAngle,this.startAngle+this.arc,this.radius);return s.getCommonRectangle([t,e])}return{x:0,y:0,width:0,height:0}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"startAngle",{get:function(){return this.getPropertyValue("startAngle")},set:function(t){this.setPropertyValue("startAngle",s.normalizeAngle(t),!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"arc",{get:function(){return this.getPropertyValue("arc")},set:function(t){l.isNumber(t)||(t=0),this.setPropertyValue("arc",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){var t=this.getPropertyValue("radius");return l.isNumber(t)||(t=0),t},set:function(t){this.setPropertyValue("radius",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radiusY",{get:function(){var t=this.getPropertyValue("radiusY");return l.isNumber(t)||(t=this.radius),t},set:function(t){this.setPropertyValue("radiusY",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelInnerRadius",{get:function(){return h.relativeToValue(this.innerRadius,this.radius)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"cornerRadius",{get:function(){return this.getPropertyValue("cornerRadius")},set:function(t){this.setPropertyValue("cornerRadius",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"innerCornerRadius",{get:function(){return this.getPropertyValue("innerCornerRadius")},set:function(t){this.setPropertyValue("innerCornerRadius",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"shiftRadius",{get:function(){return this.getPropertyValue("shiftRadius")},set:function(t){this.setPropertyValue("shiftRadius",t),this.dx=t*this.radius*this.ix,this.dy=t*this.radiusY*this.iy},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ix",{get:function(){return s.cos(this.middleAngle)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"iy",{get:function(){return this.radius,s.sin(this.middleAngle)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"middleAngle",{get:function(){return this.startAngle+this.arc/2},enumerable:!0,configurable:!0}),e.prototype.getTooltipX=function(){var t=this.getPropertyValue("tooltipX");if(l.isNumber(t))return t;var e=.5;t instanceof c.a&&(e=t.value);var i=h.relativeToValue(this.innerRadius,this.radius);return this.ix*(i+(this.radius-i)*e)},e.prototype.getTooltipY=function(){var t=this.getPropertyValue("tooltipY");if(l.isNumber(t))return t;var e=.5;t instanceof c.a&&(e=t.value);var i=h.relativeToValue(this.innerRadius,this.radius);return this.iy*(i+(this.radius-i)*e)+this.slice.dy},e}(r.a);a.b.registeredClasses.Slice=d},Iz1H:function(t,e,i){"use strict";i.d(e,"a",function(){return n});var n=function(){function t(){this._disposed=!1,this._disposers=[]}return t.prototype.init=function(){},t.prototype.isDisposed=function(){return this._disposed},t.prototype.dispose=function(){if(!this._disposed){this._disposed=!0;var t=this._disposers;for(this._disposers=null;0!==t.length;){t.shift().dispose()}}},t}()},JNIx:function(t,e,i){"use strict";e.a={_decimalSeparator:".",_thousandSeparator:",",_big_number_suffix_3:"k",_big_number_suffix_6:"M",_big_number_suffix_9:"G",_big_number_suffix_12:"T",_big_number_suffix_15:"P",_big_number_suffix_18:"E",_big_number_suffix_21:"Z",_big_number_suffix_24:"Y",_small_number_suffix_3:"m",_small_number_suffix_6:"μ",_small_number_suffix_9:"n",_small_number_suffix_12:"p",_small_number_suffix_15:"f",_small_number_suffix_18:"a",_small_number_suffix_21:"z",_small_number_suffix_24:"y",_byte_suffix_B:"B",_byte_suffix_KB:"KB",_byte_suffix_MB:"MB",_byte_suffix_GB:"GB",_byte_suffix_TB:"TB",_byte_suffix_PB:"PB",_date:"yyyy-MM-dd",_date_millisecond:"mm:ss SSS",_date_second:"HH:mm:ss",_date_minute:"HH:mm",_date_hour:"HH:mm",_date_day:"MMM dd",_date_week:"ww",_date_month:"MMM",_date_year:"yyyy",_duration_millisecond:"SSS",_duration_millisecond_second:"ss.SSS",_duration_millisecond_minute:"mm:ss SSS",_duration_millisecond_hour:"hh:mm:ss SSS",_duration_millisecond_day:"d'd' mm:ss SSS",_duration_millisecond_week:"d'd' mm:ss SSS",_duration_millisecond_month:"M'm' dd'd' mm:ss SSS",_duration_millisecond_year:"y'y' MM'm' dd'd' mm:ss SSS",_duration_second:"ss",_duration_second_minute:"mm:ss",_duration_second_hour:"hh:mm:ss",_duration_second_day:"d'd' hh:mm:ss",_duration_second_week:"d'd' hh:mm:ss",_duration_second_month:"M'm' dd'd' hh:mm:ss",_duration_second_year:"y'y' MM'm' dd'd' hh:mm:ss",_duration_minute:"mm",_duration_minute_hour:"hh:mm",_duration_minute_day:"d'd' hh:mm",_duration_minute_week:"d'd' hh:mm",_duration_minute_month:"M'm' dd'd' hh:mm",_duration_minute_year:"y'y' MM'm' dd'd' hh:mm",_duration_hour:"hh'h'",_duration_hour_day:"d'd' hh'h'",_duration_hour_week:"d'd' hh'h'",_duration_hour_month:"M'm' dd'd' hh'h'",_duration_hour_year:"y'y' MM'm' dd'd' hh'h'",_duration_day:"d'd'",_duration_day_week:"d'd'",_duration_day_month:"M'm' dd'd'",_duration_day_year:"y'y' MM'm' dd'd'",_duration_week:"w'w'",_duration_week_month:"w'w'",_duration_week_year:"w'w'",_duration_month:"M'm'",_duration_month_year:"y'y' MM'm'",_duration_year:"y'y'",_era_ad:"AD",_era_bc:"BC",A:"",P:"",AM:"",PM:"","A.M.":"","P.M.":"",January:"",February:"",March:"",April:"",May:"",June:"",July:"",August:"",September:"",October:"",November:"",December:"",Jan:"",Feb:"",Mar:"",Apr:"","May(short)":"May",Jun:"",Jul:"",Aug:"",Sep:"",Oct:"",Nov:"",Dec:"",Sunday:"",Monday:"",Tuesday:"",Wednesday:"",Thursday:"",Friday:"",Saturday:"",Sun:"",Mon:"",Tue:"",Wed:"",Thu:"",Fri:"",Sat:"",_dateOrd:function(t){var e="th";if(t<11||t>13)switch(t%10){case 1:e="st";break;case 2:e="nd";break;case 3:e="rd"}return e},"Zoom Out":"",Play:"",Stop:"",Legend:"","Click, tap or press ENTER to toggle":"",Loading:"",Home:"",Chart:"","Serial chart":"","X/Y chart":"","Pie chart":"","Gauge chart":"","Radar chart":"","Sankey diagram":"","Flow diagram":"","Chord diagram":"","TreeMap chart":"","Force directed tree":"","Sliced chart":"",Series:"","Candlestick Series":"","OHLC Series":"","Column Series":"","Line Series":"","Pie Slice Series":"","Funnel Series":"","Pyramid Series":"","X/Y Series":"",Map:"","Press ENTER to zoom in":"","Press ENTER to zoom out":"","Use arrow keys to zoom in and out":"","Use plus and minus keys on your keyboard to zoom in and out":"",Export:"",Image:"",Data:"",Print:"","Click, tap or press ENTER to open":"","Click, tap or press ENTER to print.":"","Click, tap or press ENTER to export as %1.":"",'To save the image, right-click this link and choose "Save picture as..."':"",'To save the image, right-click thumbnail on the left and choose "Save picture as..."':"","(Press ESC to close this message)":"","Image Export Complete":"","Export operation took longer than expected. Something might have gone wrong.":"","Saved from":"",PNG:"",JPG:"",GIF:"",SVG:"",PDF:"",JSON:"",CSV:"",XLSX:"","Use TAB to select grip buttons or left and right arrows to change selection":"","Use left and right arrows to move selection":"","Use left and right arrows to move left selection":"","Use left and right arrows to move right selection":"","Use TAB select grip buttons or up and down arrows to change selection":"","Use up and down arrows to move selection":"","Use up and down arrows to move lower selection":"","Use up and down arrows to move upper selection":"","From %1 to %2":"","From %1":"","To %1":"","No parser available for file: %1":"","Error parsing file: %1":"","Unable to load file: %1":"","Invalid date":"",Close:"",Minimize:""}},JqbS:function(t,e,i){var n=i("snR7"),r=i("DvJ+"),o=i("6w17");t.exports=function(t,e){if(n(t),r(e)&&e.constructor===t)return e;var i=o.f(t);return(0,i.resolve)(e),i.promise}},K0ev:function(t,e,i){var n=i("U3hN"),r=i("vJiZ"),o=i("VYrJ")("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=r(t),n(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},K2Eo:function(t,e,i){"use strict";var n=i("Gb1H"),r=i("oGmz")(!0);n(n.P,"String",{at:function(t){return r(this,t)}})},KfrQ:function(t,e,i){var n=i("Gb1H"),r=i("0C8c"),o=Math.exp;n(n.S,"Math",{tanh:function(t){var e=r(t=+t),i=r(-t);return e==1/0?1:i==1/0?-1:(e-i)/(o(t)+o(-t))}})},Kg3M:function(t,e,i){"use strict";var n=i("oGmz")(!0);i("Uobz")(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,i=this._i;return i>=e.length?{value:void 0,done:!0}:(t=n(e,i),this._i+=t.length,{value:t,done:!1})})},KknQ:function(t,e,i){"use strict";i.d(e,"b",function(){return y}),i.d(e,"a",function(){return b});var n=i("m4/l"),r=i("pR7v"),o=i("vMqJ"),a=i("+qIf"),s=i("9ZsQ"),u=i("aCit"),l=i("L91H"),h=i("Mtpk"),c=i("Wglt"),p=i("Gg2j"),d=i("hJ5i"),f=i("Qkdp"),g=i("v9UT"),m=i("VGgz"),y=function(t){function e(){var e=t.call(this)||this;return e.className="DateAxisDataItem",e.applyTheme(),e.values.date={},e.values.endDate={},e}return n.c(e,t),Object.defineProperty(e.prototype,"date",{get:function(){return this.dates.date},set:function(t){this.setDate("date",t),this.value=t.getTime()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endDate",{get:function(){return this.dates.endDate},set:function(t){this.setDate("endDate",t),this.endValue=t.getTime()},enumerable:!0,configurable:!0}),e}(r.b),b=function(t){function e(){var e=t.call(this)||this;return e._gapBreaks=!1,e.gridIntervals=new o.b,e.groupIntervals=new o.b,e.dateFormats=new a.a,e.periodChangeDateFormats=new a.a,e._baseIntervalReal={timeUnit:"day",count:1},e._minDifference={},e._firstWeekDay=1,e.groupMin={},e.groupMax={},e.className="DateAxis",e.setPropertyValue("markUnitChange",!0),e.snapTooltip=!0,e.tooltipPosition="pointer",e.groupData=!1,e.groupCount=200,e.events.on("parentset",e.getDFFormatter,e,!1),e.gridIntervals.pushAll([{timeUnit:"millisecond",count:1},{timeUnit:"millisecond",count:5},{timeUnit:"millisecond",count:10},{timeUnit:"millisecond",count:50},{timeUnit:"millisecond",count:100},{timeUnit:"millisecond",count:500},{timeUnit:"second",count:1},{timeUnit:"second",count:5},{timeUnit:"second",count:10},{timeUnit:"second",count:30},{timeUnit:"minute",count:1},{timeUnit:"minute",count:5},{timeUnit:"minute",count:10},{timeUnit:"minute",count:15},{timeUnit:"minute",count:30},{timeUnit:"hour",count:1},{timeUnit:"hour",count:3},{timeUnit:"hour",count:6},{timeUnit:"hour",count:12},{timeUnit:"day",count:1},{timeUnit:"day",count:2},{timeUnit:"day",count:3},{timeUnit:"day",count:4},{timeUnit:"day",count:5},{timeUnit:"week",count:1},{timeUnit:"month",count:1},{timeUnit:"month",count:2},{timeUnit:"month",count:3},{timeUnit:"month",count:6},{timeUnit:"year",count:1},{timeUnit:"year",count:2},{timeUnit:"year",count:5},{timeUnit:"year",count:10},{timeUnit:"year",count:50},{timeUnit:"year",count:100},{timeUnit:"year",count:200},{timeUnit:"year",count:500},{timeUnit:"year",count:1e3},{timeUnit:"year",count:2e3},{timeUnit:"year",count:5e3},{timeUnit:"year",count:1e4},{timeUnit:"year",count:1e5}]),e.groupIntervals.pushAll([{timeUnit:"millisecond",count:1},{timeUnit:"millisecond",count:10},{timeUnit:"millisecond",count:100},{timeUnit:"second",count:1},{timeUnit:"second",count:10},{timeUnit:"minute",count:1},{timeUnit:"minute",count:10},{timeUnit:"hour",count:1},{timeUnit:"day",count:1},{timeUnit:"week",count:1},{timeUnit:"month",count:1},{timeUnit:"year",count:1}]),e.axisFieldName="date",e.applyTheme(),e}return n.c(e,t),e.prototype.fillRule=function(t){var e=t.value,i=t.component,n=i._gridInterval,r=l.getDuration(n.timeUnit,n.count);Math.round((e-i.min)/r)/2==Math.round(Math.round((e-i.min)/r)/2)?t.axisFill.__disabled=!0:t.axisFill.__disabled=!1},e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),this.dateFormats.hasKey("millisecond")||this.dateFormats.setKey("millisecond",this.language.translate("_date_millisecond")),this.dateFormats.hasKey("second")||this.dateFormats.setKey("second",this.language.translate("_date_second")),this.dateFormats.hasKey("minute")||this.dateFormats.setKey("minute",this.language.translate("_date_minute")),this.dateFormats.hasKey("hour")||this.dateFormats.setKey("hour",this.language.translate("_date_hour")),this.dateFormats.hasKey("day")||this.dateFormats.setKey("day",this.language.translate("_date_day")),this.dateFormats.hasKey("week")||this.dateFormats.setKey("week",this.language.translate("_date_day")),this.dateFormats.hasKey("month")||this.dateFormats.setKey("month",this.language.translate("_date_month")),this.dateFormats.hasKey("year")||this.dateFormats.setKey("year",this.language.translate("_date_year")),this.periodChangeDateFormats.hasKey("millisecond")||this.periodChangeDateFormats.setKey("millisecond",this.language.translate("_date_millisecond")),this.periodChangeDateFormats.hasKey("second")||this.periodChangeDateFormats.setKey("second",this.language.translate("_date_second")),this.periodChangeDateFormats.hasKey("minute")||this.periodChangeDateFormats.setKey("minute",this.language.translate("_date_minute")),this.periodChangeDateFormats.hasKey("hour")||this.periodChangeDateFormats.setKey("hour",this.language.translate("_date_hour")),this.periodChangeDateFormats.hasKey("day")||this.periodChangeDateFormats.setKey("day",this.language.translate("_date_day")),this.periodChangeDateFormats.hasKey("week")||this.periodChangeDateFormats.setKey("week",this.language.translate("_date_day")),this.periodChangeDateFormats.hasKey("month")||this.periodChangeDateFormats.setKey("month",this.language.translate("_date_month")+" "+this.language.translate("_date_year"))},e.prototype.createDataItem=function(){return new y},e.prototype.createAxisBreak=function(){return new s.a},e.prototype.validateDataItems=function(){var e=this.start,i=this.end,n=this.baseDuration,r=(this.max-this.min)/n;this._firstWeekDay=this.getFirstWeekDay(),this.getDFFormatter(),t.prototype.validateDataItems.call(this);var o=l.getDuration(this.mainBaseInterval.timeUnit,this.mainBaseInterval.count);this.maxZoomFactor=(this.max-this.min)/o,this._deltaMinMax=this.baseDuration/2,e+=(i-e)*(1-r/((this.max-this.min)/n)),this.zoom({start:e,end:i},!1,!0)},e.prototype.handleSelectionExtremesChange=function(){},e.prototype.calculateZoom=function(){var e=this;t.prototype.calculateZoom.call(this);var i=this.adjustDifference(this._minZoomed,this._maxZoomed),r=!1;if(this.groupData&&h.hasValue(i)){var o=this.mainBaseInterval,a=this.chooseInterval(0,i,this.groupCount,this.groupIntervals);(a.timeUnit==o.timeUnit&&a.count0){var r=t.component.dataItems.getIndex(n-1),o=r[i];return!o||o.getTime()t._minDifference[i.uid]&&(e=t._minDifference[i.uid])}),e!=Number.MAX_VALUE&&0!=e||(e=l.getDuration("day")),e},enumerable:!0,configurable:!0}),e.prototype.seriesDataChangeUpdate=function(t){this._minDifference[t.uid]=Number.MAX_VALUE},e.prototype.postProcessSeriesDataItems=function(){var t=this;this.series.each(function(e){JSON.stringify(e._baseInterval[t.uid])!=JSON.stringify(t.mainBaseInterval)&&(e.mainDataSet.each(function(e){t.postProcessSeriesDataItem(e)}),e._baseInterval[t.uid]=t.mainBaseInterval,t.groupSeriesData(e))}),this.addEmptyUnitsBreaks()},e.prototype.groupSeriesData=function(t){var e=this;if(t.baseAxis==this&&t.dataItems.length>0&&!t.dataGrouped){var i=[],n=this.mainBaseInterval,r=l.getDuration(n.timeUnit,n.count);this.groupIntervals.each(function(t){var n=l.getDuration(t.timeUnit,t.count);n>r&&nn||!h.isNumber(o.low))&&(o.low=n),(o.high0&&i.each(function(t){var i=Math.ceil(e._gridCount*(Math.min(e.end,t.endPosition)-Math.max(e.start,t.startPosition))/(e.end-e.start));t.gridInterval=e.chooseInterval(0,t.adjustedEndValue-t.adjustedStartValue,i);var n=l.round(new Date(t.adjustedStartValue),t.gridInterval.timeUnit,t.gridInterval.count,e._firstWeekDay,e._df.utc);n.getTime()>t.startDate.getTime()&&l.add(n,t.gridInterval.timeUnit,t.gridInterval.count,e._df.utc),t.gridDate=n})},e.prototype.getFirstWeekDay=function(){return this._df?this._df.firstDayOfWeek:1},e.prototype.getGridDate=function(t,e){var i=this._gridInterval.timeUnit,n=this._gridInterval.count;l.round(t,i,1,this._firstWeekDay,this._df.utc);var r=t.getTime(),o=l.copy(t),a=l.add(o,i,e,this._df.utc).getTime(),s=this.isInBreak(a);s&&s.endDate&&(o=new Date(s.endDate.getTime()),l.round(o,i,n,this._firstWeekDay,this._df.utc),o.getTime()0){var i=e.gridInterval.timeUnit,n=e.gridInterval.count;if(p.getDistance(e.startPoint,e.endPoint)>4*u.minGridDistance)for(var r,a=e.gridDate.getTime(),s=0,h=function(){var u=l.copy(e.gridDate);if(a=l.add(u,i,n*s,t._df.utc).getTime(),s++,a>e.adjustedStartValue&&athis.baseInterval.count&&(o=r+(o-r)/(this._gridInterval.count/this.baseInterval.count)),t.position=r;var s=t.tick;s&&!s.disabled&&e.updateTickElement(s,r,o);var u=t.grid;u&&!u.disabled&&e.updateGridElement(u,r,o);var l=t.axisFill;l&&!l.disabled&&(e.updateFillElement(l,r,a),t.isRange||this.fillRule(t));var c=t.mask;c&&e.updateFillElement(c,r,o),t.bullet&&e.updateBullet(t.bullet,r,o);var p=t.label;if(p&&!p.disabled){var d=p.location;0==d&&(d=1!=this._gridInterval.count||"week"==this._gridInterval.timeUnit||t.isRange?0:.5),e.updateLabelElement(p,r,o,d)}}},Object.defineProperty(e.prototype,"baseDuration",{get:function(){return l.getDuration(this.baseInterval.timeUnit,this.baseInterval.count)},enumerable:!0,configurable:!0}),e.prototype.adjustMinMax=function(t,e){return{min:t,max:e,step:this.baseDuration}},e.prototype.fixMin=function(t){var e=this.baseInterval,i=l.round(new Date(t),e.timeUnit,e.count,this._firstWeekDay,this._df.utc).getTime();return i+(l.add(new Date(i),e.timeUnit,e.count,this._df.utc).getTime()-i)*this.startLocation},e.prototype.fixMax=function(t){var e=this.baseInterval,i=l.round(new Date(t),e.timeUnit,e.count,this._firstWeekDay,this._df.utc).getTime();return i+(l.add(new Date(i),e.timeUnit,e.count,this._df.utc).getTime()-i)*this.endLocation},e.prototype.chooseInterval=function(t,e,i,r){r||(r=this.gridIntervals);var o=r.getIndex(t),a=l.getDuration(o.timeUnit,o.count),s=r.length-1;if(t>=s)return n.a({},r.getIndex(s));var u=Math.ceil(e/a);return e0?n.a({},r.getIndex(t-1)):u<=i?n.a({},r.getIndex(t)):t+1u&&(this._minDifference[n.uid]=u)}var l=i-s;l>0&&this._minDifference[n.uid]>l&&(this._minDifference[n.uid]=l),this._prevSeriesTime=i,n._baseInterval[this.uid]?this.postProcessSeriesDataItem(t):this._baseInterval&&(n._baseInterval[this.uid]=this._baseInterval,this.postProcessSeriesDataItem(t))}},e.prototype.updateAxisBySeries=function(){t.prototype.updateAxisBySeries.call(this);var e=this.chooseInterval(0,this.minDifference,1);this.minDifference>=l.getDuration("day",27)&&"week"==e.timeUnit&&(e.timeUnit="month",e.count=1),"month"==e.timeUnit&&(this.minDifference>=l.getDuration("day",58)&&1==e.count&&(e.count=2),this.minDifference>=l.getDuration("day",87)&&2==e.count&&(e.count=3),this.minDifference>=l.getDuration("day",174)&&5==e.count&&(e.count=6)),this.minDifference>=l.getDuration("hour",23)&&"hour"==e.timeUnit&&(e.timeUnit="day",e.count=1),this.minDifference>=l.getDuration("week",1)-l.getDuration("hour",1)&&"day"==e.timeUnit&&(e.timeUnit="week",e.count=1),this.minDifference>=l.getDuration("year",1)-l.getDuration("day",1.01)&&"month"==e.timeUnit&&(e.timeUnit="year",e.count=1),this._baseIntervalReal=e,this._mainBaseInterval=e},Object.defineProperty(e.prototype,"baseInterval",{get:function(){return this._groupInterval?this._groupInterval:this._baseInterval?this._baseInterval:this._baseIntervalReal},set:function(t){JSON.stringify(this._baseInterval)!=JSON.stringify(t)&&(this._baseInterval=t,this._mainBaseInterval=t,h.isNumber(t.count)||(t.count=1),this.invalidate(),this.postProcessSeriesDataItems())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"mainBaseInterval",{get:function(){return this._baseInterval?this._baseInterval:this._mainBaseInterval?this._mainBaseInterval:this._baseIntervalReal},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"skipEmptyPeriods",{get:function(){return this.getPropertyValue("skipEmptyPeriods")},set:function(t){if(t){var e=this.axisBreaks.template;e.startLine.disabled=!0,e.endLine.disabled=!0,e.fillShape.disabled=!0,e.breakSize=0}else this._gapBreaks&&(this.axisBreaks.clear(),this._gapBreaks=!1);this.setPropertyValue("skipEmptyPeriods",t)&&(this.invalidate(),this.postProcessSeriesDataItems(),this.invalidateSeries())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tooltipDateFormat",{get:function(){return this.getPropertyValue("tooltipDateFormat")},set:function(t){this.setPropertyValue("tooltipDateFormat",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"markUnitChange",{get:function(){return this.getPropertyValue("markUnitChange")},set:function(t){this.setPropertyValue("markUnitChange",t)&&this.invalidateData()},enumerable:!0,configurable:!0}),e.prototype.getTooltipText=function(t){var e,i=this.positionToDate(t);if(i=l.round(i,this.baseInterval.timeUnit,this.baseInterval.count,this._firstWeekDay,this._df.utc,new Date(this.min)),h.hasValue(this.tooltipDateFormat))e=this._df.format(i,this.tooltipDateFormat);else{var n=this.dateFormats.getKey(this.baseInterval.timeUnit);e=n?this._df.format(i,n):this.getPositionLabel(t)}return this._adapterO?this._adapterO.apply("getTooltipText",e):e},e.prototype.roundPosition=function(t,e,i){var n=this.baseInterval,r=n.timeUnit,o=n.count,a=this.positionToDate(t);if(l.round(a,r,o,this._firstWeekDay,this._df.utc),e>0&&l.add(a,r,e*o,this._df.utc),i>0&&i<1&&a.setTime(a.getTime()+this.baseDuration*i),this.isInBreak(a.getTime()))for(;a.getTime()Math.abs(a.getTime()-o)&&(r=a):r=a}}}),r){var a=r.getTime();r=l.round(new Date(a),this.baseInterval.timeUnit,this.baseInterval.count,this._firstWeekDay,this._df.utc),a=r.getTime();var s=this.renderer.tooltipLocation;0==s&&(s=1e-4),r=new Date(r.getTime()+this.baseDuration*s),e=this.dateToPosition(r),this.series.each(function(t){var e=t.dataItemsByAxis.getKey(n.uid).getKey(a+t.currentDataSetId),i=t.showTooltipAtDataItem(e);i?n.chart._seriesPoints.push({series:t,point:i}):(t.tooltipText||t.tooltipHTML)&&t.hideTooltip()})}}t.prototype.showTooltipAtPosition.call(this,e,!0)},Object.defineProperty(e.prototype,"snapTooltip",{get:function(){return this.getPropertyValue("snapTooltip")},set:function(t){this.setPropertyValue("snapTooltip",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"groupData",{get:function(){return this.getPropertyValue("groupData")},set:function(t){this.setPropertyValue("groupData",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"groupCount",{get:function(){return this.getPropertyValue("groupCount")},set:function(t){this.setPropertyValue("groupCount",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"gridInterval",{get:function(){return this._gridInterval},enumerable:!0,configurable:!0}),e.prototype.makeGap=function(t,e){var i=t.component;if(t&&e&&(!i.connect&&h.isNumber(i.autoGapCount)&&i.baseAxis==this&&t.dates["date"+this.axisLetter].getTime()-e.dates["date"+this.axisLetter].getTime()>i.autoGapCount*this.baseDuration))return!0;return!1},Object.defineProperty(e.prototype,"baseValue",{get:function(){return this.min},enumerable:!0,configurable:!0}),e}(r.a);u.b.registeredClasses.DateAxis=b,u.b.registeredClasses.DateAxisDataItem=y},Kmds:function(t,e,i){var n=i("Gb1H"),r=Math.asinh;n(n.S+n.F*!(r&&1/r(0)>0),"Math",{asinh:function t(e){return isFinite(e=+e)&&0!=e?e<0?-t(-e):Math.log(e+Math.sqrt(e*e+1)):e}})},L2Mu:function(t,e,i){var n=i("ua0L");t.exports=function(t,e){return new(n(t))(e)}},L8kC:function(t,e,i){var n=i("6MWL"),r=i("snR7"),o=n.has,a=n.key;n.exp({hasOwnMetadata:function(t,e){return o(t,r(e),arguments.length<3?void 0:a(arguments[2]))}})},L91H:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),i.d(e,"timeUnitDurations",function(){return r}),e.getNextUnit=o,e.getDuration=a,e.now=s,e.getTime=function(){return s().getTime()},e.copy=function(t){return new Date(t.getTime())},e.checkChange=function t(e,i,n,r){e=new Date(e.getTime());i=new Date(i.getTime());var a=0;var s=0;r||"millisecond"==n||(a=e.getTimezoneOffset(),e.setUTCMinutes(e.getUTCMinutes()-a),s=i.getTimezoneOffset(),i.setUTCMinutes(i.getUTCMinutes()-s));var u=!1;switch(n){case"year":e.getUTCFullYear()!=i.getUTCFullYear()&&(u=!0);break;case"month":e.getUTCFullYear()!=i.getUTCFullYear()?u=!0:e.getUTCMonth()!=i.getUTCMonth()&&(u=!0);break;case"day":e.getUTCMonth()!=i.getUTCMonth()?u=!0:e.getUTCDate()!=i.getUTCDate()&&(u=!0);break;case"hour":e.getUTCHours()!=i.getUTCHours()&&(u=!0);break;case"minute":e.getUTCMinutes()!=i.getUTCMinutes()&&(u=!0);break;case"second":e.getUTCSeconds()!=i.getUTCSeconds()&&(u=!0);break;case"millisecond":e.getTime()!=i.getTime()&&(u=!0)}if(u)return!0;var l=o(n);return!!l&&(e.setUTCMinutes(e.getUTCMinutes()+a),i.setUTCMinutes(i.getUTCMinutes()+s),t(e,i,l,r))},e.add=function(t,e,i,n){var r=0;n||"millisecond"==e||(r=t.getTimezoneOffset(),t.setUTCMinutes(t.getUTCMinutes()-r));switch(e){case"day":var o=t.getUTCDate();t.setUTCDate(o+i);break;case"second":var a=t.getUTCSeconds();t.setUTCSeconds(a+i);break;case"millisecond":var s=t.getUTCMilliseconds();t.setUTCMilliseconds(s+i);break;case"hour":var u=t.getUTCHours();t.setUTCHours(u+i);break;case"minute":var l=t.getUTCMinutes();t.setUTCMinutes(l+i);break;case"year":var h=t.getUTCFullYear();t.setUTCFullYear(h+i);break;case"month":var c=t.getUTCMonth();t.setUTCMonth(c+i);break;case"week":var p=t.getUTCDate();t.setUTCDate(p+7*i)}if(!n&&"millisecond"!=e&&(t.setUTCMinutes(t.getUTCMinutes()+r),"day"==e||"week"==e||"month"==e||"year"==e)){var d=t.getTimezoneOffset();if(d!=r){var f=d-r;t.setUTCMinutes(t.getUTCMinutes()+f),t.getTimezoneOffset()!=d&&t.setUTCMinutes(t.getUTCMinutes()-f)}}return t},e.round=function t(e,i,r,o,s,u){n.isNumber(r)||(r=1);var l=0;s||"millisecond"==i||(l=e.getTimezoneOffset(),e.setUTCMinutes(e.getUTCMinutes()-l));switch(i){case"day":var h=e.getUTCDate();if(r>1){if(u){u=t(u,"day",1);var c=e.getTime()-u.getTime(),p=Math.floor(c/a("day")/r),d=a("day",p*r);e.setTime(u.getTime()+d-l*a("minute"))}}else e.setUTCDate(h);e.setUTCHours(0,0,0,0);break;case"second":var f=e.getUTCSeconds();r>1&&(f=Math.floor(f/r)*r),e.setUTCSeconds(f,0);break;case"millisecond":if(1==r)return e;var g=e.getUTCMilliseconds();g=Math.floor(g/r)*r,e.setUTCMilliseconds(g);break;case"hour":var m=e.getUTCHours();r>1&&(m=Math.floor(m/r)*r),e.setUTCHours(m,0,0,0);break;case"minute":var y=e.getUTCMinutes();g=e.getUTCMilliseconds(),r>1&&(y=Math.floor(y/r)*r),e.setUTCMinutes(y,0,0);break;case"month":var b=e.getUTCMonth();r>1&&(b=Math.floor(b/r)*r),e.setUTCMonth(b,1),e.setUTCHours(0,0,0,0);break;case"year":var v=e.getUTCFullYear();r>1&&(v=Math.floor(v/r)*r),e.setUTCFullYear(v,0,1),e.setUTCHours(0,0,0,0);break;case"week":var x=e.getUTCDate(),_=e.getUTCDay();n.isNumber(o)||(o=1),x=_>=o?x-_+o:x-(7+_)+o,e.setUTCDate(x),e.setUTCHours(0,0,0,0)}if(!s&&"millisecond"!=i&&(e.setUTCMinutes(e.getUTCMinutes()+l),"day"==i||"week"==i||"month"==i||"year"==i)){var P=e.getTimezoneOffset();if(P!=l){var w=P-l;e.setUTCMinutes(e.getUTCMinutes()+w)}}return e};var n=i("Mtpk"),r={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,week:6048e5,month:2592e6,year:31536e6};function o(t){switch(t){case"year":return;case"month":return"year";case"week":case"day":return"month";case"hour":return"day";case"minute":return"hour";case"second":return"minute";case"millisecond":return"second"}}function a(t,e){return n.hasValue(e)||(e=1),r[t]*e}function s(){return new Date}},LBDG:function(t,e,i){"use strict";e.b=function(){return/apple/i.test(navigator.vendor)},e.a=function(){return/MSIE |Trident\//.test(navigator.userAgent)}},"LGy/":function(t,e,i){i("YJIw")("Float64",8,function(t){return function(e,i,n){return t(this,e,i,n)}})},LHMX:function(t,e,i){var n=i("T9LF"),r=i("6/bx"),o=i("hjwn").f,a=i("rkh7").f,s=i("0Zt3"),u=i("x2K9"),l=n.RegExp,h=l,c=l.prototype,p=/a/g,d=/a/g,f=new l(p)!==p;if(i("gD3S")&&(!f||i("AEc5")(function(){return d[i("YEtG")("match")]=!1,l(p)!=p||l(d)==d||"/a/i"!=l(p,"i")}))){l=function(t,e){var i=this instanceof l,n=s(t),o=void 0===e;return!i&&n&&t.constructor===l&&o?t:r(f?new h(n&&!o?t.source:t,e):h((n=t instanceof l)?t.source:t,n&&o?u.call(t):e),i?this:c,l)};for(var g=function(t){t in l||o(l,t,{configurable:!0,get:function(){return h[t]},set:function(e){h[t]=e}})},m=a(h),y=0;m.length>y;)g(m[y++]);c.constructor=l,l.prototype=c,i("wDk4")(n,"RegExp",l)}i("vdWU")("RegExp")},LLsa:function(t,e,i){"use strict";var n=i("Gb1H"),r=i("sc+R");n(n.P+n.F*!i("GQop")([].reduceRight,!0),"Array",{reduceRight:function(t){return r(this,t,arguments.length,arguments[1],!0)}})},LMet:function(t,e,i){i("xdw4")("asyncIterator")},LNZc:function(t,e,i){"use strict";var n=i("T9LF"),r=i("gD3S"),o=i("pb4Y"),a=i("xSzy"),s=i("Vng0"),u=i("cA+3"),l=i("AEc5"),h=i("ypVE"),c=i("4BRe"),p=i("FmWr"),d=i("bytU"),f=i("rkh7").f,g=i("hjwn").f,m=i("lgQj"),y=i("bPwn"),b="prototype",v="Wrong index!",x=n.ArrayBuffer,_=n.DataView,P=n.Math,w=n.RangeError,O=n.Infinity,S=x,T=P.abs,C=P.pow,k=P.floor,I=P.log,D=P.LN2,V=r?"_b":"buffer",M=r?"_l":"byteLength",j=r?"_o":"byteOffset";function A(t,e,i){var n,r,o,a=new Array(i),s=8*i-e-1,u=(1<>1,h=23===e?C(2,-24)-C(2,-77):0,c=0,p=t<0||0===t&&1/t<0?1:0;for((t=T(t))!=t||t===O?(r=t!=t?1:0,n=u):(n=k(I(t)/D),t*(o=C(2,-n))<1&&(n--,o*=2),(t+=n+l>=1?h/o:h*C(2,1-l))*o>=2&&(n++,o/=2),n+l>=u?(r=0,n=u):n+l>=1?(r=(t*o-1)*C(2,e),n+=l):(r=t*C(2,l-1)*C(2,e),n=0));e>=8;a[c++]=255&r,r/=256,e-=8);for(n=n<0;a[c++]=255&n,n/=256,s-=8);return a[--c]|=128*p,a}function F(t,e,i){var n,r=8*i-e-1,o=(1<>1,s=r-7,u=i-1,l=t[u--],h=127&l;for(l>>=7;s>0;h=256*h+t[u],u--,s-=8);for(n=h&(1<<-s)-1,h>>=-s,s+=e;s>0;n=256*n+t[u],u--,s-=8);if(0===h)h=1-a;else{if(h===o)return n?NaN:l?-O:O;n+=C(2,e),h-=a}return(l?-1:1)*n*C(2,h-e)}function E(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]}function R(t){return[255&t]}function L(t){return[255&t,t>>8&255]}function N(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]}function B(t){return A(t,52,8)}function H(t){return A(t,23,4)}function G(t,e,i){g(t[b],e,{get:function(){return this[i]}})}function W(t,e,i,n){var r=d(+i);if(r+e>t[M])throw w(v);var o=t[V]._b,a=r+t[j],s=o.slice(a,a+e);return n?s:s.reverse()}function U(t,e,i,n,r,o){var a=d(+i);if(a+e>t[M])throw w(v);for(var s=t[V]._b,u=a+t[j],l=n(+r),h=0;hK;)(z=X[K++])in x||s(x,z,S[z]);o||(Y.constructor=x)}var Z=new _(new x(2)),q=_[b].setInt8;Z.setInt8(0,2147483648),Z.setInt8(1,2147483649),!Z.getInt8(0)&&Z.getInt8(1)||u(_[b],{setInt8:function(t,e){q.call(this,t,e<<24>>24)},setUint8:function(t,e){q.call(this,t,e<<24>>24)}},!0)}else x=function(t){h(this,x,"ArrayBuffer");var e=d(t);this._b=m.call(new Array(e),0),this[M]=e},_=function(t,e,i){h(this,_,"DataView"),h(t,x,"DataView");var n=t[M],r=c(e);if(r<0||r>n)throw w("Wrong offset!");if(r+(i=void 0===i?n-r:p(i))>n)throw w("Wrong length!");this[V]=t,this[j]=r,this[M]=i},r&&(G(x,"byteLength","_l"),G(_,"buffer","_b"),G(_,"byteLength","_l"),G(_,"byteOffset","_o")),u(_[b],{getInt8:function(t){return W(this,1,t)[0]<<24>>24},getUint8:function(t){return W(this,1,t)[0]},getInt16:function(t){var e=W(this,2,t,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=W(this,2,t,arguments[1]);return e[1]<<8|e[0]},getInt32:function(t){return E(W(this,4,t,arguments[1]))},getUint32:function(t){return E(W(this,4,t,arguments[1]))>>>0},getFloat32:function(t){return F(W(this,4,t,arguments[1]),23,4)},getFloat64:function(t){return F(W(this,8,t,arguments[1]),52,8)},setInt8:function(t,e){U(this,1,t,R,e)},setUint8:function(t,e){U(this,1,t,R,e)},setInt16:function(t,e){U(this,2,t,L,e,arguments[2])},setUint16:function(t,e){U(this,2,t,L,e,arguments[2])},setInt32:function(t,e){U(this,4,t,N,e,arguments[2])},setUint32:function(t,e){U(this,4,t,N,e,arguments[2])},setFloat32:function(t,e){U(this,4,t,H,e,arguments[2])},setFloat64:function(t,e){U(this,8,t,B,e,arguments[2])}});y(x,"ArrayBuffer"),y(_,"DataView"),s(_[b],a.VIEW,!0),e.ArrayBuffer=x,e.DataView=_},LSPs:function(t,e,i){var n=i("Gb1H");n(n.S,"Date",{now:function(){return(new Date).getTime()}})},"Ly/W":function(t,e,i){"use strict";i("Mvcd")("strike",function(t){return function(){return t(this,"strike","","")}})},"M/YL":function(t,e,i){var n=i("YEtG")("unscopables"),r=Array.prototype;void 0==r[n]&&i("Vng0")(r,n,{}),t.exports=function(t){r[n][t]=!0}},MIZb:function(t,e,i){"use strict";i.d(e,"a",function(){return s});var n=i("m4/l"),r=i("Tjl+"),o=i("aCit"),a=i("8ZqG"),s=function(t){function e(){var e=t.call(this)||this;return e._purposes={stroke:Object(a.c)("#e5e5e5"),fill:Object(a.c)("#f3f3f3"),primaryButton:Object(a.c)("#6794dc"),primaryButtonHover:Object(a.c)("#6771dc"),primaryButtonDown:Object(a.c)("#68dc75"),primaryButtonActive:Object(a.c)("#68dc75"),primaryButtonText:Object(a.c)("#FFFFFF"),primaryButtonStroke:Object(a.c)("#FFFFFF"),secondaryButton:Object(a.c)("#d9d9d9"),secondaryButtonHover:Object(a.c)("#d9d9d9").brighten(-.25),secondaryButtonDown:Object(a.c)("#d9d9d9").brighten(-.35),secondaryButtonActive:Object(a.c)("#d9d9d9").brighten(.35),secondaryButtonText:Object(a.c)("#000000"),secondaryButtonStroke:Object(a.c)("#FFFFFF"),grid:Object(a.c)("#000000"),background:Object(a.c)("#ffffff"),alternativeBackground:Object(a.c)("#000000"),text:Object(a.c)("#000000"),alternativeText:Object(a.c)("#FFFFFF"),disabledBackground:Object(a.c)("#999999"),positive:Object(a.c)("#67dc75"),negative:Object(a.c)("#dc6788")},e.className="InterfaceColorSet",e.applyTheme(),e}return n.c(e,t),e.prototype.debug=function(){},e.prototype.getFor=function(t){return this._purposes[t]},e.prototype.setFor=function(t,e){this._purposes[t]=e},e}(r.a);o.b.registeredClasses.InterfaceColorSet=s},"MT+g":function(t,e,i){i("6+x4")("WeakSet")},MXvJ:function(t,e,i){"use strict";i.d(e,"a",function(){return u});var n=i("m4/l"),r=i("jfaP"),o=i("aCit"),a=i("Gg2j"),s=i("hGwe"),u=function(t){function e(){var e=t.call(this)||this;return e.className="Polyarc",e.controlPointDistance=.5,e.controlPointPosition=.5,e.applyTheme(),e}return n.c(e,t),e.prototype.makePath=function(){this._distance=0;var t=this.segments;if(t&&t.length>0){var e="";this._realSegments=[];for(var i=0,n=t.length;i0){e+=s.moveTo(r[0]);for(var u=1;u0)for(var v=0;v<=y;v++){var x=a.getPointOnCubicCurve(l,h,g,m,v/y);o.push(x),this._distance+=a.getDistance(b,x),b=x}else o.push(l)}}}this.path=e}},Object.defineProperty(e.prototype,"controlPointPosition",{get:function(){return this.getPropertyValue("controlPointPosition")},set:function(t){this.setPropertyValue("controlPointPosition",t),this.makePath()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"controlPointDistance",{get:function(){return this.getPropertyValue("controlPointDistance")},set:function(t){this.setPropertyValue("controlPointDistance",t),this.makePath()},enumerable:!0,configurable:!0}),e}(r.a);o.b.registeredClasses.Polyarc=u},MZQ8:function(t,e,i){"use strict";i.d(e,"a",function(){return a});var n=i("m4/l"),r=i("1qam"),o=i("Gg2j"),a=function(t){function e(){var e=t.call(this)||this;return e.className="PointedRectangle",e.element=e.paper.add("path"),e.cornerRadius=6,e.applyTheme(),e}return n.c(e,t),e.prototype.draw=function(){t.prototype.draw.call(this);var e=this.cornerRadius,i=this.innerWidth,n=this.innerHeight;if(i>0&&n>0){var r,a,s=this.pointerX,u=this.pointerY,l=this.pointerBaseWidth/2,h=o.min(i/2,n/2),c=o.fitToRange(e,0,h),p=o.fitToRange(e,0,h),d=o.fitToRange(e,0,h),f=o.fitToRange(e,0,h),g=void 0,m=void 0,y=void 0,b=void 0,v=(s-0)*(n-0)-(u-0)*(i-0),x=(s-0)*(0-n)-(u-n)*(i-0);if(v>0&&x>0)g="M"+c+",0 L"+((r=o.fitToRange(s,c+l,i-l-p))-l)+",0 L"+s+","+(u=o.fitToRange(u,-1/0,0))+" L"+(r+l)+",0 L"+(i-p)+",0";else g="M"+c+",0 L"+(i-p)+",0";if(v<0&&x<0)y=" L"+(i-d)+","+n+" L"+((r=o.fitToRange(s,f+l,i-l-d))+l)+","+n+" L"+s+","+(u=o.fitToRange(u,n,1/0))+" L"+(r-l)+","+n+" L"+f+","+n;else y=" L"+f+","+n;if(v<0&&x>0)b=" L0,"+(n-f)+" L0,"+((a=o.fitToRange(u,c+l,n-f-l))+l)+" L"+(s=o.fitToRange(s,-1/0,0))+","+u+" L0,"+(a-l)+" L0,"+c;else b=" L0,"+c;if(v>0&&x<0)m=" L"+i+","+p+" L"+i+","+((a=o.fitToRange(u,p+l,n-l-d))-l)+" L"+(s=o.fitToRange(s,i,1/0))+","+u+" L"+i+","+(a+l)+" L"+i+","+(n-d);else m=" L"+i+","+(n-d);var _=" a"+p+","+p+" 0 0 1 "+p+","+p,P=" a"+d+","+d+" 0 0 1 -"+d+","+d,w=" a"+f+","+f+" 0 0 1 -"+f+",-"+f,O=" a"+c+","+c+" 0 0 1 "+c+",-"+c;this.path=g+_+m+P+y+w+b+O}},Object.defineProperty(e.prototype,"cornerRadius",{get:function(){return this.getPropertyValue("cornerRadius")},set:function(t){this.setPropertyValue("cornerRadius",t,!0)},enumerable:!0,configurable:!0}),e}(r.a)},MbWG:function(t,e,i){"use strict";var n=i("Gb1H"),r=i("e8Nv");n(n.S+n.F*i("AEc5")(function(){function t(){}return!(Array.of.call(t)instanceof t)}),"Array",{of:function(){for(var t=0,e=arguments.length,i=new("function"==typeof this?this:Array)(e);e>t;)r(i,t,arguments[t++]);return i.length=e,i}})},Meme:function(t,e,i){"use strict";i.d(e,"a",function(){return y});var n=i("m4/l"),r=i("C6dT"),o=i("hD5A"),a=i("AAkI"),s=i("eAid"),u=i("8EhG"),l=i("AaJ4"),h=i("TDx+"),c=i("eN1s"),p=i("vMqJ"),d=i("aCit"),f=i("tjMS"),g=i("Gg2j"),m=i("Mtpk"),y=function(t){function e(){var e=t.call(this)||this;e._chart=new o.d,e.className="AxisRenderer",e.minGridDistance=50,e.inside=!1,e.inversed=!1,e.tooltipLocation=.5,e.fullWidthTooltip=!1,e.cellStartLocation=0,e.cellEndLocation=1,e.minLabelPosition=0,e.maxLabelPosition=1,e.shouldClone=!1;var i=e.createChild(r.a);i.shouldClone=!1,i.layout="none",i.virtualParent=e,i.width=Object(f.c)(100),i.height=Object(f.c)(100),e.gridContainer=i,i.events.on("maxsizechanged",function(){e.inited&&e.invalidateAxisItems()},e,!1);var n=e.createChild(r.a);n.shouldClone=!1,n.isMeasured=!1,n.layout="none",n.width=Object(f.c)(100),n.height=Object(f.c)(100),e.breakContainer=n;var a=e.createChild(r.a);a.shouldClone=!1,a.isMeasured=!1,a.layout="none",a.width=Object(f.c)(100),a.height=Object(f.c)(100),e.bulletsContainer=a,e.line=e.createChild(s.a),e.line.shouldClone=!1,e.line.strokeOpacity=0;var u=e.createChild(l.a);u.shouldClone=!1,e.baseGrid=u;var h=e._disposers;return h.push(u),h.push(e.line),h.push(i),h.push(n),h.push(a),h.push(e._chart),e.ticks.template.disabled=!0,e.axisFills.template.disabled=!0,e.axisFills.template.interactionsEnabled=!1,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"axis",{get:function(){return this._axis},set:function(t){this.setAxis(t)},enumerable:!0,configurable:!0}),e.prototype.setAxis=function(t){this._axis=t,this.baseGrid.parent=t,this.line.parent=t,this.gridContainer.bind("opacity",t)},e.prototype.processRenderer=function(){this.events.on("sizechanged",this.updateTooltip,this,!1),this.events.on("positionchanged",this.updateTooltip,this,!1),this.labels.template.inside=this.inside,this.ticks.template.inside=this.inside},e.prototype.updateTooltip=function(){},Object.defineProperty(e.prototype,"axisLength",{get:function(){return 0},enumerable:!0,configurable:!0}),e.prototype.positionItem=function(t,e){t&&t.moveTo(e)},e.prototype.positionToPoint=function(t,e){return{x:0,y:0}},e.prototype.positionToAngle=function(t){return 0},e.prototype.positionToCoordinate=function(t){var e=this.axis,i=e.axisFullLength;return e.renderer.inversed?(e.end-t)*i:(t-e.start)*i},e.prototype.updateGridContainer=function(){},e.prototype.getHeight=function(){var t=this.gridContainer;return t.parent?t.parent.pixelHeight:this.gridContainer.pixelHeight||0},e.prototype.getWidth=function(){var t=this.gridContainer;return t.parent?t.parent.pixelWidth:this.gridContainer.pixelWidth||0},e.prototype.coordinateToPosition=function(t,e){var i,n=this.axis,r=n.axisFullLength;return i=n.renderer.inversed?n.end-t/r:t/r+n.start,g.round(i,5)},e.prototype.pointToPosition=function(t){return 0},e.prototype.getPositionRangePath=function(t,e){return""},e.prototype.invalidateAxisItems=function(){var t=this.axis;t&&t.invalidateDataItems()},e.prototype.updateGridElement=function(t,e,i){},e.prototype.updateTickElement=function(t,e,i){},e.prototype.updateBullet=function(t,e,i){},e.prototype.updateLabelElement=function(t,e,i,n){},e.prototype.updateFillElement=function(t,e,i){t.startPosition=e,t.endPosition=i},e.prototype.updateAxisLine=function(){},e.prototype.updateBaseGridElement=function(){},e.prototype.updateBreakElement=function(t){this.positionItem(t.startLine,t.startPoint),this.toggleVisibility(t.startLine,t.startPosition,0,1),this.positionItem(t.endLine,t.endPoint),this.toggleVisibility(t.endLine,t.endPosition,0,1)},Object.defineProperty(e.prototype,"minGridDistance",{get:function(){return this.getPropertyValue("minGridDistance")},set:function(t){this.setPropertyValue("minGridDistance",t)&&this.axis&&this.axis.invalidateLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"chart",{get:function(){return this._chart.get()},set:function(t){this._chart.set(t,null)},enumerable:!0,configurable:!0}),e.prototype.toggleVisibility=function(t,e,i,n){var r=this.axis,o=t.dataItem;o&&o instanceof a.b&&(m.isNumber(o.minPosition)&&(i=o.minPosition),m.isNumber(o.maxPosition)&&(n=o.maxPosition));var s=r.start+(r.end-r.start)*(i-1e-4),u=r.start+(r.end-r.start)*(n+1e-4);t.disabled||(t.__disabled=eu)},e.prototype.createBreakSprites=function(t){},Object.defineProperty(e.prototype,"axisFills",{get:function(){if(!this._axisFills){var t=this.createFill(this.axis);this._axisFills=new p.e(t),t.applyOnClones=!0,t.events.on("enabled",this.invalidateAxisItems,this,!1),this._disposers.push(new p.c(this._axisFills)),this._disposers.push(this._axisFills.template)}return this._axisFills},enumerable:!0,configurable:!0}),e.prototype.createFill=function(t){return new u.a(t)},Object.defineProperty(e.prototype,"grid",{get:function(){if(!this._grid){var t=this.createGrid();this._grid=new p.e(t),t.applyOnClones=!0,t.events.on("enabled",this.invalidateAxisItems,this,!1),this._disposers.push(new p.c(this._grid)),this._disposers.push(this._grid.template)}return this._grid},enumerable:!0,configurable:!0}),e.prototype.createGrid=function(){return new l.a},Object.defineProperty(e.prototype,"ticks",{get:function(){if(!this._ticks){var t=this.createTick();t.applyOnClones=!0,t.isMeasured=!1,t.events.on("enabled",this.invalidateAxisItems,this,!1),this._ticks=new p.e(t),this._disposers.push(new p.c(this._ticks)),this._disposers.push(this._ticks.template)}return this._ticks},enumerable:!0,configurable:!0}),e.prototype.createTick=function(){return new c.a},Object.defineProperty(e.prototype,"labels",{get:function(){if(!this._labels){var t=this.createLabel();this._labels=new p.e(t),t.applyOnClones=!0,t.events.on("enabled",this.invalidateAxisItems,this,!1),this._disposers.push(new p.c(this._labels)),this._disposers.push(this._labels.template)}return this._labels},enumerable:!0,configurable:!0}),e.prototype.createLabel=function(){return new h.a},Object.defineProperty(e.prototype,"inside",{get:function(){return this.getPropertyValue("inside")},set:function(t){this.setPropertyValue("inside",t)&&this.axis&&this.axis.invalidate(),t?(this.width=0,this.height=0):(this.width=void 0,this.height=void 0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"opposite",{get:function(){return this.getPropertyValue("opposite")},set:function(t){this.setPropertyValue("opposite",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"fullWidthTooltip",{get:function(){return this.getPropertyValue("fullWidthTooltip")},set:function(t){this.setPropertyValue("fullWidthTooltip",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tooltipLocation",{get:function(){return this.getPropertyValue("tooltipLocation")},set:function(t){this.setPropertyValue("tooltipLocation",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tooltipLocation2",{get:function(){return this.getPropertyValue("tooltipLocation2")},set:function(t){this.setPropertyValue("tooltipLocation2",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"cellStartLocation",{get:function(){return this.getPropertyValue("cellStartLocation")},set:function(t){this.setPropertyValue("cellStartLocation",t)&&this.axis&&this.axis.invalidateSeries()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"cellEndLocation",{get:function(){return this.getPropertyValue("cellEndLocation")},set:function(t){this.setPropertyValue("cellEndLocation",t)&&this.axis&&this.axis.invalidateSeries()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"inversed",{get:function(){return this.getPropertyValue("inversed")},set:function(t){this.setPropertyValue("inversed",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"minLabelPosition",{get:function(){return this.getPropertyValue("minLabelPosition")},set:function(t){this.setPropertyValue("minLabelPosition",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maxLabelPosition",{get:function(){return this.getPropertyValue("maxLabelPosition")},set:function(t){this.setPropertyValue("maxLabelPosition",t,!0)},enumerable:!0,configurable:!0}),e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.grid.template.copyFrom(e.grid.template),this.ticks.template.copyFrom(e.ticks.template),this.labels.template.copyFrom(e.labels.template),this.axisFills.template.copyFrom(e.axisFills.template),this.line.copyFrom(e.line),this.baseGrid.copyFrom(e.baseGrid)},e.prototype.toAxisPosition=function(t){return t},e.prototype.setVisibility=function(e){t.prototype.setVisibility.call(this,e),this.bulletsContainer.visible=e},e}(r.a);d.b.registeredClasses.AxisRenderer=y},MfZA:function(t,e,i){var n=i("DVYA"),r=i("YEtG")("toStringTag"),o="Arguments"==n(function(){return arguments}());t.exports=function(t){var e,i,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(i=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),r))?i:o?n(e):"Object"==(a=n(e))&&"function"==typeof e.callee?"Arguments":a}},MipW:function(t,e,i){"use strict";i.d(e,"a",function(){return c}),e.b=function(){null==n&&(n=new c);return n};var n,r=i("m4/l"),o=i("Tjl+"),a=i("pzs1"),s=i("x79X"),u=i("aCit"),l=i("ScGY"),h=i("Mtpk"),c=function(t){function e(){var e=t.call(this)||this;return e.adapter=new s.a(e),e.className="TextFormatter",e.applyTheme(),e}return r.c(e,t),e.prototype.debug=function(){},e.prototype.format=function(t,e){h.hasValue(e)||(e="svg");var i="",n=(t=this.escape(t)).match(/\[([^\]]*?)\]/gm);if(!n)return this.wrap(t,"",e);for(var r=t.split(/\[[^\[\]]*\]/),o=0,a=r.length;o0&&(u=n[o-1].replace("[","").replace("]","")),i+=this.wrap(s,u,e)}}return i=this.unescape(i),this.cleanUp(i)},e.prototype.escape=function(t){return t.replace(/\[\[/g,u.b.getPlaceholder("1")).replace(/([^\/]{1})\]\]/g,"$1"+u.b.getPlaceholder("2")).replace(/\]\]/g,u.b.getPlaceholder("2")).replace(/\{\{/g,u.b.getPlaceholder("3")).replace(/\}\}/g,u.b.getPlaceholder("4")).replace(/\'\'/g,u.b.getPlaceholder("5"))},e.prototype.unescape=function(t){return t.replace(new RegExp(u.b.getPlaceholder("1"),"g"),"[[").replace(new RegExp(u.b.getPlaceholder("2"),"g"),"]]").replace(new RegExp(u.b.getPlaceholder("3"),"g"),"{{").replace(new RegExp(u.b.getPlaceholder("4"),"g"),"}}").replace(new RegExp(u.b.getPlaceholder("5"),"g"),"'")},e.prototype.cleanUp=function(t){return t.replace(/\[\[/g,"[").replace(/\]\]/g,"]").replace(/\{\{/g,"{").replace(/\}\}/g,"}").replace(/\'\'/g,"'")},e.prototype.wrap=function(t,e,i){switch(""!==e&&"/"!==e||(e=""),i){case"html":return this.wrapHtml(t,this.translateStyleShortcuts(e));default:return this.wrapSvg(t,this.translateStyleShortcuts(e))}},e.prototype.wrapSvg=function(t,e){return""===e?""+t+"":""+t+""},e.prototype.getSvgElement=function(t,e){var i=new a.a("tspan");return i.textContent=t,e&&i.node.setAttribute("style",e),i},e.prototype.wrapHtml=function(t,e){return""===e?""+t+"":""+t+""},e.prototype.getHtmlElement=function(t,e){var i=document.createElement("span");return i.innerHTML=t,e&&i.setAttribute("style",e),i},e.prototype.styleSvgToHtml=function(t){return t=t.replace(/fill:/,"color:")},e.prototype.translateStyleShortcuts=function(t){if(""==t||"[ ]"==t)return"";var e=u.b.getCache("translateStyleShortcuts_"+t);if(e)return e;var i=t.match(/([\w\-]*:[\s]?[^;\s\]]*)|(\#[\w]{1,6})|([\w]+)|(\/)/gi);if(!i)return t;for(var n=0;n1?arguments[1]:void 0)}})},MsQa:function(t,e,i){var n=i("Gb1H");n(n.S,"Math",{scale:i("eh+x")})},Mtpk:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.is=function(t,e){var i=r.b.registeredClasses[e];return null!=i&&t instanceof i},e.isNaN=o,e.getType=a,e.getDefault=function(t,e){return t||e},e.checkString=function(t){if("string"==typeof t)return!0;throw new Error("Expected a string but got "+a(t))},e.checkBoolean=function(t){if("boolean"==typeof t)return!0;throw new Error("Expected a boolean but got "+a(t))},e.checkNumber=function(t){if("number"!=typeof t)throw new Error("Expected a number but got "+a(t));if(o(t))throw new Error("Expected a number but got NaN");return!0},e.checkObject=function(t){var e=a(t);if("[object Object]"===e)return!0;throw new Error("Expected an object but got "+e)},e.checkArray=function(t){if(Array.isArray(t))return!0;throw new Error("Expected an array but got "+a(t))},e.checkDate=function(t){var e=a(t);if("[object Date]"===e)return!0;throw new Error("Expected a date but got "+e)},e.castString=s,e.castNumber=function(t){if("string"==typeof t){var e=+t;if(o(e))throw new Error("Cannot cast string "+JSON.stringify(t)+" to a number");return e}if("number"==typeof t){if(o(t))throw new Error("Expected a number but got NaN");return t}var i=a(t);if("[object Date]"===i)return t.getTime();throw new Error("Expected a string, number, or date but got "+i)},e.toBoolean=function(t){return!!t},e.toNumber=u,e.toText=function(t){if(l(t)&&!h(t)){if(c(t))return s(t);if(p(t))return t.toString()}return t},e.toNumberOrPercent=function(t){if(!l(t)||c(t)||Object(n.b)(t))return t;if(h(t)&&-1!=t.indexOf("%"))return Object(n.c)(u(t));return u(t)},e.hasValue=l,e.getValue=function(t){if(l(t))return t;throw new Error("Value doesn't exist")},e.getValueDefault=function(t,e){return l(t)?t:e},e.isDate=function(t){return"[object Date]"===a(t)},e.isString=h,e.isNumber=c,e.isObject=p,e.isArray=function(t){return Array.isArray(t)};var n=i("tjMS"),r=i("aCit");function o(t){return Number(t)!==t}function a(t){return{}.toString.call(t)}function s(t){if("string"==typeof t)return t;if("number"==typeof t)return""+t;throw new Error("Expected a string or number but got "+a(t))}function u(t){if(l(t)&&!c(t)){var e=Number(t);return o(e)&&h(t)&&""!=t?u(t.replace(/[^0-9.\-]+/g,"")):e}return t}function l(t){return null!=t}function h(t){return"string"==typeof t}function c(t){return"number"==typeof t&&Number(t)==t}function p(t){return"object"==typeof t}},Mvcd:function(t,e,i){var n=i("Gb1H"),r=i("AEc5"),o=i("kcsd"),a=/"/g,s=function(t,e,i,n){var r=String(o(t)),s="<"+e;return""!==i&&(s+=" "+i+'="'+String(n).replace(a,""")+'"'),s+">"+r+""};t.exports=function(t,e){var i={};i[t]=e(s),n(n.P+n.F*r(function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}),"String",i)}},"N/Yk":function(t,e,i){i("vdWU")("Array")},"ND2/":function(t,e,i){"use strict";i.d(e,"a",function(){return u});var n=i("m4/l"),r=i("PTiM"),o=i("8ZqG"),a=i("aFzC"),s=i("hGwe"),u=function(t){function e(){var e=t.call(this)||this;return e.className="WavedLine",e.element=e.paper.add("path"),e.waveLength=16,e.waveHeight=4,e.tension=.8,e.pixelPerfect=!1,e.fill=Object(o.c)(),e.applyTheme(),e}return n.c(e,t),e.prototype.draw=function(){var t={x:this.x1,y:this.y1},e={x:this.x2,y:this.y2};this.path=s.moveTo(t)+Object(a.c)(t,e,this.waveLength,this.waveHeight,this.tension,!0)},Object.defineProperty(e.prototype,"waveLength",{get:function(){return this.getPropertyValue("waveLength")},set:function(t){this.setPropertyValue("waveLength",t),this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"waveHeight",{get:function(){return this.getPropertyValue("waveHeight")},set:function(t){this.setPropertyValue("waveHeight",t),this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tension",{get:function(){return this.getPropertyValue("tension")},set:function(t){this.setPropertyValue("tension",t),this.invalidate()},enumerable:!0,configurable:!0}),e}(r.a)},NKpi:function(t,e,i){var n=i("xCMl"),r=i("WtL7"),o=i("6MWL"),a=i("snR7"),s=i("K0ev"),u=o.keys,l=o.key;o.exp({getMetadataKeys:function(t){return function t(e,i){var o=u(e,i),a=s(e);if(null===a)return o;var l=t(a,i);return l.length?o.length?r(new n(o.concat(l))):l:o}(a(t),arguments.length<2?void 0:l(arguments[1]))}})},NSvu:function(t,e,i){i("YJIw")("Uint8",1,function(t){return function(e,i,n){return t(this,e,i,n)}},!0)},NlGZ:function(t,e,i){"use strict";var n,r;!function(o,a){void 0===(r="function"==typeof(n=a)?n.call(e,i,e,t):n)||(t.exports=r)}("undefined"!=typeof window&&window,function(){if("undefined"==typeof window)return null;var t="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||function(e){return t.setTimeout(e,20)};function i(t,e){var i=Object.prototype.toString.call(t),n="[object Array]"===i||"[object NodeList]"===i||"[object HTMLCollection]"===i||"[object Object]"===i||"undefined"!=typeof jQuery&&t instanceof jQuery||"undefined"!=typeof Elements&&t instanceof Elements,r=0,o=t.length;if(n)for(;r=1?(this._started&&(this._started=void 0),p.b.events.once("enterframe",function(){var t=e.hide();t&&!t.isFinished()?t.events.once("animationended",function(){e.__disabled=!0}):e.__disabled=!0}),this.interactionsEnabled=!1,this.setPropertyValue("progress",0)):t>0&&(this.delay?this._started?this._started+this.delay<=(new Date).getTime()&&(this.__disabled=!1,this.show(),this.interactionsEnabled=!0):this._started=(new Date).getTime():(this.__disabled=!1,this.show(),this.interactionsEnabled=!0))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"delay",{get:function(){return this.getPropertyValue("delay")},set:function(t){this.setPropertyValue("delay",t)},enumerable:!0,configurable:!0}),e}(s.a);p.b.registeredClasses.Preloader=B;var H=i("GtDR"),G=i("xIv9"),W=i("CnhP"),U=i("ISWh"),z=function(t){function e(){var e=t.call(this)||this;return e.className="Slider",e.thumb.opacity=0,e.thumb.interactionsEnabled=!1,e.endGrip.opacity=0,e.endGrip.interactionsEnabled=!1,e.startGrip.events.on("drag",function(){e.endGrip.x=e.startGrip.x,e.endGrip.y=e.startGrip.y}),e.applyTheme(),e}return w.c(e,t),Object.defineProperty(e.prototype,"__end",{get:function(){return this._start},set:function(t){},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"end",{get:function(){return this._start},set:function(t){},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"start",{get:function(){return this._start},set:function(t){this._isBusy||(this.__start=t)},enumerable:!0,configurable:!0}),e}(U.a);p.b.registeredClasses.Slider=z;var Y=i("Trvg"),X=i("cxKZ"),K=i("DziZ"),Z=i("Rnbi"),q=i("Vk33"),J=i("ND2/"),Q=i("w4m0"),$=i("BEgH"),tt=function(t){function e(){var e=t.call(this)||this;e.className="PlayButton",e.padding(12,12,12,12),e.showSystemTooltip=!0;var i=new R.a,n=e.background;n.cornerRadius(25,25,25,25),n.fill=i.getFor("primaryButton"),n.stroke=i.getFor("primaryButtonStroke"),n.strokeOpacity=0,n.states.getKey("hover").properties.fill=i.getFor("primaryButtonHover"),n.states.getKey("down").properties.fill=i.getFor("primaryButtonActive");var r=new Z.a;r.direction="right",r.width=9,r.height=11,r.marginLeft=1,r.marginRight=1,r.horizontalCenter="middle",r.verticalCenter="middle",r.stroke=i.getFor("primaryButtonText"),r.fill=r.stroke,e.icon=r;var o=new W.a;o.width=11,o.height=11,o.horizontalCenter="middle",o.verticalCenter="middle",o.cornerRadius(0,0,0,0),o.stroke=i.getFor("primaryButtonText"),o.fill=r.stroke,e.togglable=!0;var a=e.states.create("active");return a.transitionDuration=0,a.properties.icon=o,e.defaultState.transitionDuration=0,e.applyTheme(),e}return w.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),S.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Play"))},e}(x.a);p.b.registeredClasses.PlayButton=tt;var et=i("ncT3"),it=i("Mr4Y"),nt=i("nPzZ"),rt=i("GAaQ"),ot=i("qJno"),at=i("7XB+"),st=i("akNo"),ut=i("CTEm"),lt=i("MipW"),ht=i("0PyG"),ct=i("zhwk"),pt=i("Oe1l"),dt=i("vbOF"),ft=i("YotE"),gt=i("qCRI"),mt=i("pzs1"),yt=i("cOH5"),bt=i("P7v+"),vt=i("aFzC"),xt=i("HDh7"),_t=i("DA7/"),Pt=i("sxA1"),wt=i("/e9j"),Ot=i("CuFa"),St=function(t){function e(){var e=t.call(this)||this;return e.className="RadialGradientModifier",e.gradient=new Ot.a,e.applyTheme(),e}return w.c(e,t),e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.gradient=e.gradient.clone()},e}(i("3/51").a);p.b.registeredClasses.RadialGradientModifier=St;var Tt=i("WODi"),Ct=i("ZLF9"),kt=i("2gKx"),It=i("ohjg"),Dt=function(t){function e(){var e=t.call(this)||this;return e.className="ColorizeFilter",e.feColorMatrix=e.paper.add("feColorMatrix"),e.feColorMatrix.attr({type:"matrix"}),e.filterPrimitives.push(e.feColorMatrix),e.intensity=1,e.applyTheme(),e}return w.c(e,t),e.prototype.applyFilter=function(){var t,e,i,n=this.intensity,r=1-n,o=this.color;o&&o.rgb?(t=o.rgb.r/255*n,e=o.rgb.g/255*n,i=o.rgb.b/255*n):(t=0,e=0,i=0),this.feColorMatrix.attr({values:r+" 0 0 0 "+t+" 0 "+r+" 0 0 "+e+" 0 0 "+r+" 0 "+i+" 0 0 0 1 0"})},Object.defineProperty(e.prototype,"color",{get:function(){return this.properties.color},set:function(t){this.properties.color=t,this.applyFilter()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"intensity",{get:function(){return this.properties.intensity},set:function(t){this.properties.intensity=t,this.applyFilter()},enumerable:!0,configurable:!0}),e}(It.a);p.b.registeredClasses.ColorizeFilter=Dt;var Vt=i("85D4"),Mt=i("VAFc"),jt=function(t){function e(){var e=t.call(this)||this;return e.className="BlurFilter",e.feGaussianBlur=e.paper.add("feGaussianBlur"),e.feGaussianBlur.attr({result:"blurOut",in:"SourceGraphic"}),e.filterPrimitives.push(e.feGaussianBlur),e.width=200,e.height=200,e.blur=1.5,e.applyTheme(),e}return w.c(e,t),Object.defineProperty(e.prototype,"blur",{get:function(){return this.properties.blur},set:function(t){this.properties.blur=t,this.feGaussianBlur.attr({stdDeviation:t/this.scale})},enumerable:!0,configurable:!0}),e}(It.a);p.b.registeredClasses.BlurFilter=jt;var At=function(t){function e(){var e=t.call(this)||this;return e.className="FocusFilter",e.feFlood=e.paper.add("feFlood"),e.feFlood.attr({"flood-color":(new R.a).getFor("primaryButtonHover"),result:"base"}),e.filterPrimitives.push(e.feFlood),e.feMorphology=e.paper.add("feMorphology"),e.feMorphology.attr({result:"bigger",in:"SourceGraphic",operator:"dilate",radius:"2"}),e.filterPrimitives.push(e.feMorphology),e.feColorMatrix=e.paper.add("feColorMatrix"),e.feColorMatrix.attr({result:"mask",in:"bigger",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0"}),e.filterPrimitives.push(e.feColorMatrix),e.feComposite=e.paper.add("feComposite"),e.feComposite.attr({result:"drop",in:"base",in2:"mask",operator:"in"}),e.filterPrimitives.push(e.feComposite),e.feBlend=e.paper.add("feBlend"),e.feBlend.attr({in:"SourceGraphic",in2:"drop",mode:"normal"}),e.filterPrimitives.push(e.feBlend),e.width=130,e.height=130,e.applyTheme(),e}return w.c(e,t),Object.defineProperty(e.prototype,"stroke",{get:function(){return this.properties.stroke},set:function(t){this.properties.stroke=t,this.feFlood.attr({"flood-color":t})},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"strokeWidth",{get:function(){return this.properties.strokeWidth},set:function(t){this.properties.strokeWidth=t,this.feMorphology.attr({radius:t})},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"opacity",{get:function(){return this.properties.opacity},set:function(t){this.properties.opacity=t,this.feColorMatrix.attr({values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "+t+" 0"})},enumerable:!0,configurable:!0}),e.prototype.setSprite=function(e){this._sprite&&this._sprite!=e&&this._sprite.group.removeStyle("outline"),e.group.addStyle({outline:"none"}),t.prototype.setSprite.call(this,e)},e}(It.a),Ft=i("C84C"),Et=i("x79X"),Rt=i("1yyj"),Lt=i("/9XX"),Nt=i("eCqC"),Bt=i("8ZqG"),Ht=i("DHte"),Gt=i("W0E6"),Wt=i("+qIf"),Ut=i("hD5A"),zt=i("o0Lc"),Yt=i("Wglt"),Xt=i("WYhe"),Kt=i("P/bD"),Zt=i("vMqJ"),qt=i("oC3T"),Jt=i("MlsF"),Qt=i("Iz1H"),$t=i("TGuK"),te=i("VGgz"),ee=i("ScGY"),ie=i("/IEW"),ne=i("hGwe"),re=i("hxI2"),oe=i("0FpR"),ae=i("Gg2j"),se=i("hJ5i"),ue=i("3Cxr"),le=i("Qkdp"),he=i("wUYf"),ce=i("L91H"),pe=i("v9UT"),de=function(t){function e(){var e=t.call(this)||this;e.className="AmChartsLogo",e.valign="bottom";var i=.3;e.opacity=.3,e.defaultState.properties.opacity=.4,e.url="https://www.amcharts.com/",e.urlTarget="_blank",e.showSystemTooltip=!0,e.readerTitle="Chart created using amCharts library",e.width=66,e.height=21,e.background.opacity=0;var n=Object(Bt.c)("#474758");"#ffffff"==(new R.a).getFor("background").alternative.hex&&(n=Object(Bt.c)("#ffffff"));var r=new Pt.a;r.addColor(n),r.addColor(n,1,.75),r.addColor(Object(Bt.c)("#3cabff"),1,.755),r.rotation=-10;var o=r,a=e.createChild(E.a);a.shouldClone=!1,a.isMeasured=!1,a.segments=[[{x:15,y:15},{x:27,y:15},{x:36,y:6},{x:40.5,y:10.5},{x:45,y:6},{x:54,y:15},{x:60,y:15}]],a.strokeWidth=6*i,a.tensionX=.8,a.tensionY=1,a.stroke=Object(Bt.c)("#3cabff");var s=e.createChild(E.a);s.shouldClone=!1,s.isMeasured=!1,s.segments=[[{x:6,y:15},{x:15,y:15},{x:27,y:12*i},{x:39.9,y:15},{x:51,y:15},{x:60,y:15}]],s.strokeWidth=6*i,s.tensionX=.75,s.tensionY=1,s.stroke=o,e._disposers.push(s);var u=new Vt.a;e.filters.push(u);var l=new Vt.a;l.saturation=1;var h=e.states.create("hover");return h.properties.opacity=1,h.filters.push(l),e.applyTheme(),e}return w.c(e,t),e}(s.a),fe=i("pjXm");function ge(t,e){var i=O.q(t);if(i){i.innerHTML="";var n=new xt.a(i),o=new bt.a(n.SVGContainer,"svg-"+(xt.b.length-1)),a=new s.a;a.htmlContainer=i,a.svgContainer=n,a.width=Object(N.c)(100),a.height=Object(N.c)(100),a.background.fillOpacity=0,a.paper=o,o.append(a.group),a.relativeWidth=1,a.relativeHeight=1,n.container=a;var u=a.createChild(e);u.topParent=a;var l=u.uid;p.b.invalidSprites[l]=[],p.b.invalidDatas[l]=[],p.b.invalidPositions[l]=[],p.b.invalidLayouts[l]=[],a.baseId=l,u.isBaseSprite=!0,u.focusFilter=new At,p.b.baseSprites.push(u),p.b.baseSpritesByUid[l]=u,u.maskRectangle={x:0,y:0,width:Math.max(n.width,0),height:Math.max(n.height,0)},a.events.on("maxsizechanged",function(t){0!=t.previousWidth&&0!=t.previousHeight||a.deepInvalidate(),u.maskRectangle&&(u.maskRectangle={x:0,y:0,width:Math.max(n.width,0),height:Math.max(n.height,0)})});var h=null,c=function(){u.isDisposed()?h=null:null==O.r(u.dom)?(fe.b("Chart was not disposed",u.uid),h=null):h=setTimeout(c,1e3)};c(),u.addDisposer(new Ut.b(function(){null!==h&&clearTimeout(h),se.remove(p.b.baseSprites,u),p.b.baseSpritesByUid[u.uid]=void 0})),u.addDisposer(a);var f=a.createChild(s.a);f.topParent=a,f.width=Object(N.c)(100),f.height=Object(N.c)(100),f.isMeasured=!1,a.tooltipContainer=f,u.tooltip=new X.a,u.tooltip.hide(0),u.tooltip.setBounds({x:0,y:0,width:f.maxWidth,height:f.maxHeight}),f.events.on("maxsizechanged",function(){S.getValue(u.tooltip).setBounds({x:0,y:0,width:f.maxWidth,height:f.maxHeight})},void 0,!1);var g=new B;if(g.events.on("inited",function(){g.__disabled=!0},void 0,!1),a.preloader=g,u instanceof s.a&&!u.hasLicense()){var m=f.createChild(de);f.events.on("maxsizechanged",function(t){f.maxWidth<=100||f.maxHeight<=50?m.hide():(m.isHidden||m.isHiding)&&m.show()},void 0,!1),u.logo=m,m.align="left",m.valign="bottom"}if(pe.used(u.numberFormatter),a.isStandaloneInstance=!0,d.a.onlyShowOnViewport)if(O.t(i,d.a.viewportTarget))d.a.queue&&ye(u);else{u.__disabled=!0,u.tooltipContainer.__disabled=!0;var y=[O.g(window,"DOMContentLoaded",function(){ve(u)}),O.g(window,"load",function(){ve(u)}),O.g(window,"resize",function(){ve(u)}),O.g(window,"scroll",function(){ve(u)})];d.a.viewportTarget&&(y.push(O.g(d.a.viewportTarget,"resize",function(){ve(u)})),y.push(O.g(d.a.viewportTarget,"scroll",function(){ve(u)})));var b=new Ut.c(y);u.addDisposer(b),u.vpDisposer=b}else d.a.queue&&ye(u);return u}throw r.b.log("html container not found"),new Error("html container not found")}function me(){for(;0!==p.b.baseSprites.length;)p.b.baseSprites.pop().dispose()}function ye(t){-1==p.b.queue.indexOf(t)&&(t.__disabled=!0,t.tooltipContainer.__disabled=!0,t.events.disableType("appeared"),0==p.b.queue.length&&xe(t),t.addDisposer(new Ut.b(function(){be(t)})),p.b.queue.push(t))}function be(t){var e=p.b.queue.indexOf(t);if(e>=0){p.b.queue.splice(p.b.queue.indexOf(t),1);var i=p.b.queue[e];i&&xe(i)}}function ve(t){t.__disabled&&O.t(t.htmlContainer,d.a.viewportTarget)&&(t.vpDisposer&&t.vpDisposer.dispose(),ye(t))}function xe(t){t.__disabled=!1,t.tooltipContainer.__disabled=!1,t.events.enableType("appeared"),t.showOnInit&&t.events.on("appeared",function(){be(t)}),t.vpDisposer&&t.vpDisposer.dispose(),t instanceof a.a?(t.invalidateData(),t.reinit(),t.events.once("datavalidated",function(){t.showOnInit?t.appear():be(t)})):t.showOnInit?t.appear():be(t)}function _e(t,e){var i;S.isString(e)&&(S.hasValue(p.b.registeredClasses[e])?e=p.b.registeredClasses[e]:(e=p.b.registeredClasses.Container,i=new Error("Class ["+e+"] is not loaded.")));var n=ge(t,e);return i&&n.raiseCriticalError(i),n}function Pe(t,e,i){var n,r;S.hasValue(i)||(i=t.type,delete t.type),S.hasValue(e)||(e=t.container,delete t.container),S.isString(i)&&S.hasValue(p.b.registeredClasses[i])?n=p.b.registeredClasses[i]:"function"!=typeof i?(n=s.a,r=new Error("Class ["+i+"] is not loaded.")):n=i;var o=ge(e,n);return r?o.raiseCriticalError(r):o.config=t,o}function we(t){-1===p.b.themes.indexOf(t)&&p.b.themes.push(t)}function Oe(t){se.remove(p.b.themes,t)}function Se(){p.b.themes=[]}function Te(t){d.a.licenses.push(t)}window.am4core=n,i.p=function(t){return/(.*\/)[^\/]*$/.exec(t)[1]}(function(){if(document.currentScript)return document.currentScript;var t=document.getElementsByTagName("script");return t[t.length-1]}().src)},O8xK:function(t,e,i){"use strict";var n=i("Gb1H"),r=i("G5U1"),o=i("T9LF"),a=i("QXbb"),s=i("JqbS");n(n.P+n.R,"Promise",{finally:function(t){var e=a(this,r.Promise||o.Promise),i="function"==typeof t;return this.then(i?function(i){return s(e,t()).then(function(){return i})}:t,i?function(i){return s(e,t()).then(function(){throw i})}:t)}})},"OB1/":function(t,e,i){var n=i("G5U1"),r=i("T9LF"),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:n.version,mode:i("pb4Y")?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},ODWe:function(t,e,i){var n=i("U3hN"),r=i("EhJv"),o=i("mntN")(!1),a=i("VYrJ")("IE_PROTO");t.exports=function(t,e){var i,s=r(t),u=0,l=[];for(i in s)i!=a&&n(s,i)&&l.push(i);for(;e.length>u;)n(s,i=e[u++])&&(~o(l,i)||l.push(i));return l}},OKlB:function(t,e,i){var n=i("Gb1H");n(n.S,"Number",{isNaN:function(t){return t!=t}})},OVUc:function(t,e,i){"use strict";e.a=function(t,e,i){return new Promise(function(r,o){var a=n.hasValue(i)&&"blob"==i.responseType,s=new XMLHttpRequest;if(s.onload=function(){if(200===s.status){var t,i=void 0;if(a)return void function(t){return new Promise(function(e,i){var n=new FileReader;n.onload=function(t){e(n.result)},n.onerror=function(t){i(t)},n.readAsText(t)})}(t=s.response).then(function(i){var n={xhr:s,error:!1,response:i,blob:t,type:s.getResponseHeader("Content-Type"),target:e};r(n)});i=s.responseText||s.response;var n={xhr:s,error:!1,response:i,blob:t,type:s.getResponseHeader("Content-Type"),target:e};r(n)}else o({xhr:s,error:!0,type:s.getResponseHeader("Content-Type"),target:e})},s.onerror=function(){o({xhr:s,error:!0,type:s.getResponseHeader("Content-Type"),target:e})},s.open("GET",t,!0),i&&i.withCredentials&&(s.withCredentials=!0),n.hasValue(i)){if(n.hasValue(i.requestHeaders))for(var u=0;un+.2)o.hide(0);else{var a=c.spritePointToSprite({x:0,y:0},this.gridContainer,o.parent).x;o.path=h.moveTo({x:0,y:0})+h.lineTo({x:i,y:0}),o.moveTo({x:a,y:r}),o.show(0)}},e.prototype.updateLabelElement=function(t,e,i,n){p.hasValue(n)||(n=t.location),e+=(i-e)*n,t.isMeasured=!t.inside;var r,o=this.positionToPoint(e),a=0,s=this.gridContainer.maxWidth;this.opposite?(t.inside?(r="right","left"==t.align&&(a=-s,r="left"),"center"==t.align&&(a=-s/2,r="middle")):r="left",o.x=0+a):(t.inside?(r="left","right"==t.align&&(a=s,r="right"),"center"==t.align&&(a=s/2,r="middle")):r="right",o.x=this.measuredWidth+a),0==t.rotation&&(t.horizontalCenter=r),this.positionItem(t,o),this.toggleVisibility(t,e,this.minLabelPosition,this.maxLabelPosition)},e.prototype.updateBreakElement=function(e){t.prototype.updateBreakElement.call(this,e);var i=e.startLine,n=e.endLine,r=e.fillShape,o=e.startPoint,a=e.endPoint,s=e.pixelMarginLeft,u=this.getWidth()-e.pixelMarginLeft-e.pixelMarginRight;o.y=l.fitToRange(o.y,-1,this.axisLength+1),a.y=l.fitToRange(a.y,-1,this.axisLength+1),o.y==a.y&&(o.y<0||o.y>this.axisLength)?e.fillShape.__disabled=!0:e.fillShape.__disabled=!1;var h=Math.abs(u-s);i.x=s,i.height=0,i.width=h,n.x=s,n.height=0,n.width=h,r.width=h,r.height=Math.abs(a.y-o.y),r.x=s,r.y=a.y},e.prototype.createBreakSprites=function(t){t.startLine=new o.a,t.endLine=new o.a;var e=new a.a;e.setWavedSides(!0,!1,!0,!1),t.fillShape=e},e.prototype.positionToCoordinate=function(t){var e,i=this.axis,n=i.axisFullLength;return e=i.renderer.inversed?(t-i.start)*n:(i.end-t)*n,l.round(e,1)},e.prototype.updateBullet=function(t,e,i){var n=.5;t instanceof f.a&&(n=t.location),e+=(i-e)*n;var r=this.positionToPoint(e);r.x=c.spritePointToSprite({x:this.line.pixelX,y:0},this.line.parent,this.gridContainer).x,this.positionItem(t,r),this.toggleVisibility(t,e,0,1)},e}(r.a);s.b.registeredClasses.AxisRendererY=g,d.c.push({relevant:d.b.widthS,state:function(t,e){if(t instanceof g){var i=t.states.create(e);return i.properties.inside=!0,i.properties.maxLabelPosition=.9,i.properties.minLabelPosition=.1,i}return null}}),d.c.push({relevant:d.b.widthXS,state:function(t,e){if(t instanceof g){var i=t.states.create(e);return i.properties.disabled=!0,i}return null}})},Obr2:function(t,e,i){"use strict";var n=i("Gb1H"),r=i("vJiZ"),o=i("W0fk"),a=i("K0ev"),s=i("nHHr").f;i("gD3S")&&n(n.P+i("3/+B"),"Object",{__lookupGetter__:function(t){var e,i=r(this),n=o(t,!0);do{if(e=s(i,n))return e.get}while(i=a(i))}})},Oe1l:function(t,e,i){"use strict";i.d(e,"a",function(){return a});var n=i("zhwk"),r=i("Rpw0"),o=i("hJ5i"),a=function(){function t(t,e){this._disposed=!1,this.directionX=0,this.directionY=0,this.interaction=t,this.keyboardEvent=e,this._startedOn=(new Date).getTime(),Object(n.b)().processDragStart(t),r.b.animations.push(this),this.update()}return t.prototype.update=function(){var t=this.interaction,e=Object(n.b)().getKeyboardOption(t,"speed"),i=Object(n.b)().getKeyboardOption(t,"accelleration"),r=Object(n.b)().getKeyboardOption(t,"accellerationDelay"),o={x:0,y:0};this.keyboardEvent.shiftKey?(e*=.5,i=1):this.keyboardEvent.ctrlKey&&(e*=2);var a=(new Date).getTime()-this._startedOn,s=a-r;if(i>0&&s>0){var u=a/r;a=r,o.x+=this.directionX*(e*i*u*s),o.y+=this.directionY*(e*i*u*s)}o.x+=this.directionX*(e*a),o.y+=this.directionY*(e*a),Object(n.b)().handleTransformMove(t,o,{x:0,y:0},this.keyboardEvent,!0,!1)},t.prototype.isDisposed=function(){return this._disposed},t.prototype.dispose=function(){this._disposed||(Object(n.b)().processDragStop(this.interaction),o.remove(r.b.animations,this))},t}()},"Oko+":function(t,e,i){"use strict";var n=i("Gb1H"),r=i("dstF")(3);n(n.P+n.F*!i("GQop")([].some,!0),"Array",{some:function(t){return r(this,t,arguments[1])}})},OuXI:function(t,e,i){var n=i("Gb1H"),r=i("iAlL")(!0);n(n.S,"Object",{entries:function(t){return r(t)}})},OxI3:function(t,e,i){var n=i("Gb1H"),r=i("0C8c"),o=Math.exp;n(n.S+n.F*i("AEc5")(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function(t){return Math.abs(t=+t)<1?(r(t)-r(-t))/2:(o(t-1)-o(-t-1))*(Math.E/2)}})},"P/bD":function(t,e,i){"use strict";i.d(e,"a",function(){return h});var n=i("m4/l"),r=i("Tjl+"),o=i("x79X"),a=i("hJ5i"),s=i("Mtpk"),u=i("JNIx"),l=i("Q4nc"),h=function(t){function e(){var e=t.call(this)||this;return e.adapter=new o.a(e),e._locale=u.a,e._defaultLocale=u.a,e.className="Language",s.hasValue(l.a.defaultLocale)&&(e.locale=l.a.defaultLocale),e.applyTheme(),e}return n.c(e,t),e.prototype.getLocale=function(t){return null==t&&(t=this._locale),this.adapter.apply("locale",{locale:t}).locale},e.prototype.translate=function(t,e){for(var i=[],r=2;rthis._maxRadiusPercent&&(this._maxRadiusPercent=i)}t.prototype.validate.call(this),this.alignLabels&&(this.startAngle>this.endAngle?this._rightItems.reverse():this._leftItems.reverse(),this._rightItems.sort(function(t,e){var i=(t.slice.middleAngle+360)%360,n=(e.slice.middleAngle+360)%360;return i>270&&(i-=360),n>270&&(n-=360),i0){this.ignoreZeroValues&&0==e.value?e.__disabled=!0:e.__disabled=!1;var i=e.slice;if(i.radius=this.pixelRadius,h.isNumber(e.radiusValue)&&(i.radius=this.pixelInnerRadius+(this.pixelRadius-this.pixelInnerRadius)*e.values.radiusValue.percent/this._maxRadiusPercent),i.innerRadius instanceof c.a||(i.innerRadius=this.pixelInnerRadius),i.startAngle=this._currentStartAngle,i.arc=e.values.value.percent*(this.endAngle-this.startAngle)/100,!this.labels.template.disabled){var n=e.label,r=e.tick;r.slice=i,r.label=n;var o=(i.middleAngle+360)%360,a=void 0;if(this.alignLabels){var s=n.pixelRadius(i.radius),u=r.length+s;n.dx=0,n.dy=0,n.verticalCenter="middle";var l=this._arcRect;o>=270||o<=90?(u+=(l.width+l.x)*this.pixelRadius,n.horizontalCenter="left",this._rightItems.push(e)):(u-=l.x*this.pixelRadius,n.horizontalCenter="right",this._leftItems.push(e),u*=-1);var p=i.radius+r.length+s;a={x:u,y:i.iy*p},n.moveTo(a)}else{var d=i.depth;h.isNumber(d)||(d=0),n.fixPosition(i.middleAngle,i.radius,i.radiusY,0,-d)}}this._currentStartAngle+=i.arc,t.prototype.validateDataElement.call(this,e)}},Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!0,!1,10,!1)&&this.invalidateDataItems()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelRadius",{get:function(){return this._pixelRadius},set:function(t){this._pixelRadius!=t&&(this._pixelRadius=t,this.invalidateDataItems())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelInnerRadius",{get:function(){return this._pixelInnerRadius},set:function(t){this._pixelInnerRadius!=t&&(this._pixelInnerRadius=t,this.invalidateDataItems())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"startAngle",{get:function(){return this.getPropertyValue("startAngle")},set:function(t){this.setPropertyValue("startAngle",l.normalizeAngle(t),!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endAngle",{get:function(){return this.getPropertyValue("endAngle")},set:function(t){this.setPropertyValue("endAngle",t,!0)},enumerable:!0,configurable:!0}),e.prototype.positionBullet=function(e){t.prototype.positionBullet.call(this,e);var i=e.dataItem.slice,n=e.locationX;h.isNumber(n)||(n=.5);var r=e.locationY;h.isNumber(r)||(r=1);var o=i.startAngle+i.arc*n;e.x=r*i.radius*l.cos(o),e.y=r*i.radiusY*l.sin(o)},e.prototype.handleSliceMove=function(t){if(!this.alignLabels){var e=t.target,i=e.dataItem;if(i){var n=i.label;n&&(n.dx=n.fdx+e.dx+e.pixelX,n.dy=n.fdy+e.dy+e.pixelY)}}},Object.defineProperty(e.prototype,"bbox",{get:function(){if(this.definedBBox)return this.definedBBox;var t=this.chart;return t?l.getArcRect(t.startAngle,t.endAngle,this.pixelRadius):l.getArcRect(this.startAngle,this.endAngle,this.pixelRadius)},enumerable:!0,configurable:!0}),e}(r.a);u.b.registeredClasses.PieSeries=d,u.b.registeredClasses.PieSeriesDataItem=p},Q4nc:function(t,e,i){"use strict";i.d(e,"a",function(){return n});var n={verbose:!0,commercialLicense:!1,classNamePrefix:"amcharts-",autoSetClassName:!1,minPolylineStep:.5,onlyShowOnViewport:!1,queue:!1,licenses:[]}},QXbb:function(t,e,i){var n=i("snR7"),r=i("DbOM"),o=i("YEtG")("species");t.exports=function(t,e){var i,a=n(t).constructor;return void 0===a||void 0==(i=n(a)[o])?e:r(i)}},QZG2:function(t,e,i){"use strict";var n=i("Gb1H"),r=i("mntN")(!1),o=[].indexOf,a=!!o&&1/[1].indexOf(1,-0)<0;n(n.P+n.F*(a||!i("GQop")(o)),"Array",{indexOf:function(t){return a?o.apply(this,arguments)||0:r(this,t,arguments[1])}})},Qgck:function(t,e,i){var n=i("Gb1H");n(n.S,"Math",{imulh:function(t,e){var i=+t,n=+e,r=65535&i,o=65535&n,a=i>>16,s=n>>16,u=(a*o>>>0)+(r*o>>>16);return a*s+(u>>16)+((r*s>>>0)+(65535&u)>>16)}})},Qkdp:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.entries=function(t){return function(e){for(var i in t)if(s(t,i)&&!e([i,t[i]]))break}},e.keys=o,e.keysOrdered=a,e.hasKey=s,e.getKey=function(t,e){return t[e]},e.eachContinue=u,e.each=function(t,e){u(t,function(t,i){return e(t,i),!0})},e.eachOrdered=function(t,e,i){n.each(a(t,i),function(i){e(i,t[i])})},e.copy=function(t){return Object.assign({},t)},e.merge=function(t,e){return Object.assign({},t,e)},e.copyProperties=l,e.softCopyProperties=function(t,e,i){n.each(i,function(i){r.hasValue(t[i])&&!r.hasValue(e[i])&&(e[i]=t[i])})},e.forceCopyProperties=function(t,e,i){n.each(i,function(i){e[i]=t[i]})},e.copyAllProperties=function(t,e){l(t,e,o(t))};var n=i("hJ5i"),r=i("Mtpk");function o(t){var e=[];for(var i in t)s(t,i)&&e.push(i);return e}function a(t,e){return o(t).sort(e)}function s(t,e){return{}.hasOwnProperty.call(t,e)}function u(t,e){for(var i in t)if(s(t,i)&&!e(i,t[i]))break}function l(t,e,i){n.each(i,function(i){r.hasValue(t[i])&&(e[i]=t[i])})}},QtEf:function(t,e,i){var n=i("Gb1H"),r=Math.atanh;n(n.S+n.F*!(r&&1/r(-0)<0),"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},R6wv:function(t,e,i){"use strict";i.d(e,"a",function(){return l});var n=i("m4/l"),r=i("Vs7R"),o=i("oC3T"),a=i("aCit"),s=i("hGwe"),u=i("Mtpk"),l=function(t){function e(){var e=t.call(this)||this;return e.className="Polygon",e.element=e.paper.add("path"),e.shapeRendering="auto",e._currentPoints=[],e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"points",{get:function(){var t=this.getPropertyValue("points"),e=this.path;if(e&&(!t||0==t.length)){for(var i=e.slice(1,e.length-1).split("ZM"),n=0;n0){var o=r.split("M"),a=o[0],s=o[1];if(a&&a.length>0){var u=a.split("L");if(u.length>0){var l=[],h=[l];t.push(h);for(var c=0;c0){var d=s.split("L");if(d.length>0){var f=[];h.push(f);for(c=d.length-1;c>=0;c--){p=d[c].split(",");f.push({x:+p[0],y:+p[1]})}}}}}}}this.setPropertyValue("points",t),this._currentPoints=t}return t},set:function(t){this.setPropertyValue("points",t,!0),this._currentPoints=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"currentPoints",{get:function(){return this._currentPoints&&0!=this._currentPoints.length||!this.path||(this._currentPoints=this.points),this._currentPoints},set:function(t){this._currentPoints!=t&&(this._currentPoints=t,this.draw())},enumerable:!0,configurable:!0}),e.prototype.draw=function(){var e,i,n,r,o="",a=this._currentPoints;if(a.length>0){for(var l=0,h=a.length;l0){var d=c[0];o+=s.moveTo(d);for(var f=0;fd.x)&&(e=d.x),(!u.isNumber(n)||n>d.y)&&(n=d.y),(!u.isNumber(r)||r0){d=p[0];o+=s.moveTo(d);for(var g=0,m=p.length;g1?arguments[1]:void 0,n=r(e.length),s=void 0===i?n:Math.min(r(i),n),u=String(t);return a?a.call(e,u,s):e.slice(s-u.length,s)===u}})},Rnbi:function(t,e,i){"use strict";i.d(e,"a",function(){return s});var n=i("m4/l"),r=i("Vs7R"),o=i("aCit"),a=i("hGwe"),s=function(t){function e(){var e=t.call(this)||this;return e.className="Triangle",e.element=e.paper.add("path"),e.direction="top",e.applyTheme(),e}return n.c(e,t),e.prototype.draw=function(){t.prototype.draw.call(this);var e,i=this.pixelWidth,n=this.pixelHeight;switch(this.direction){case"right":e=a.moveTo({x:0,y:0})+a.lineTo({x:i,y:n/2})+a.lineTo({x:0,y:n})+a.closePath();break;case"left":e=a.moveTo({x:i,y:0})+a.lineTo({x:0,y:n/2})+a.lineTo({x:i,y:n})+a.closePath();break;case"bottom":e=a.moveTo({x:0,y:0})+a.lineTo({x:i,y:0})+a.lineTo({x:i/2,y:n})+a.closePath();break;case"top":e=a.moveTo({x:i/2,y:0})+a.lineTo({x:i,y:n})+a.lineTo({x:0,y:n})+a.closePath()}this.path=e},Object.defineProperty(e.prototype,"direction",{get:function(){return this.getPropertyValue("direction")},set:function(t){this.setPropertyValue("direction",t,!0)},enumerable:!0,configurable:!0}),e}(r.a);o.b.registeredClasses.Triangle=s},RpVB:function(t,e,i){"use strict";i("Mvcd")("fontcolor",function(t){return function(e){return t(this,"font","color",e)}})},Rpw0:function(t,e,i){"use strict";i.d(e,"a",function(){return h}),i.d(e,"b",function(){return c});var n=i("aCit"),r=i("C6dT"),o=i("/9XX"),a=i("hJ5i"),s=i("Qkdp"),u=i("Mtpk"),l=i("pjXm"),h=function(){function t(){this._isPaused=!1,this.animations=[],this.uid=n.b.getUniqueId(),this.dummyCounter=0,this._frameRequested=!1,this.updateStepDuration=45,this.time=Date.now()}return t.prototype.reportTime=function(t,e){this.dummyCounter,e&&(this.time=Date.now())},t.prototype.update=function(){var t=this;if(!this._isPaused){this._frameRequested=!1;var e=Date.now();n.b.dispatchImmediately("enterframe");for(var i in n.b.invalidDatas)if(s.hasKey(n.b.invalidDatas,i)){for(var r=n.b.invalidDatas[i];r.length>0;){var u=(l=r[0]).dataProvider;if(l.isDisposed())a.remove(r,l);else if(u&&u.dataInvalid)try{if(u.validateData(),u.dataValidationProgress<1)break}catch(t){a.remove(r,u),u.raiseCriticalError(t)}else try{if(l.validateData(),l.dataValidationProgress<1)break}catch(t){a.remove(r,l),l.raiseCriticalError(t)}}if(Date.now()-e>this.updateStepDuration)break}for(;n.b.invalidRawDatas.length>0;){if((l=n.b.invalidRawDatas[0]).isDisposed())a.remove(n.b.invalidRawDatas,l);else try{l.validateRawData()}catch(t){a.remove(n.b.invalidRawDatas,l),l.raiseCriticalError(t)}}for(;n.b.invalidDataItems.length>0;){u=(l=n.b.invalidDataItems[0]).dataProvider;if(l.isDisposed()||l.dataInvalid||u&&u.dataInvalid);else try{l.validateDataItems()}catch(t){a.remove(n.b.invalidDataItems,l),l.raiseCriticalError(t)}a.remove(n.b.invalidDataItems,l)}for(;n.b.invalidDataRange.length>0;){var l;u=(l=n.b.invalidDataRange[0]).dataProvider;if(l.isDisposed()||l.dataInvalid||u&&u.dataInvalid);else try{l.validateDataRange(),l.skipRangeEvent||l.dispatchImmediately("datarangechanged"),l.skipRangeEvent=!1}catch(t){a.remove(n.b.invalidDataRange,l),l.raiseCriticalError(t)}a.remove(n.b.invalidDataRange,l)}var h=[];s.each(n.b.invalidLayouts,function(e){t.validateLayouts(e)}),s.each(n.b.invalidPositions,function(e){t.validatePositions(e)});var c=!1;if(e=Date.now(),s.each(n.b.invalidSprites,function(i,r){for(var o=0;r.length>0;){if(t.validateLayouts(i),t.validatePositions(i),5==++o){if(Date.now()-e>t.updateStepDuration)break;o=0}var s=r[r.length-1];if(s&&!s.isDisposed()){if(s._systemCheckIfValidate())if(t.checkIfValidate2(s))try{s._systemUpdate(h)}catch(t){s.invalid=!1,a.remove(r,s),s.raiseCriticalError(t)}else h.push(s);else h.push(s);s.invalid=!1}a.remove(r,s)}n.b.invalidSprites[i]=n.b.invalidSprites[i].concat(h)}),s.each(n.b.invalidSprites,function(t,e){e.length>0&&(c=!0)}),s.each(n.b.invalidDatas,function(t,e){e.length>0&&(c=!0)}),a.each(a.copy(this.animations),function(t){t.update()}),s.each(n.b.invalidLayouts,function(e){t.validateLayouts(e)}),s.each(n.b.invalidPositions,function(e){t.validatePositions(e)}),Object(o.d)(),s.each(n.b.invalidLayouts,function(e){t.validateLayouts(e)}),s.each(n.b.invalidPositions,function(e){t.validatePositions(e)}),n.b.dispatchImmediately("exitframe"),(c||this.animations.length>0||[].length>0)&&this.requestFrame(),this.updateStepDuration<200){var p=!0;s.each(n.b.invalidDatas,function(t,e){e.length>0&&(p=!1)}),s.each(n.b.invalidSprites,function(t,e){e.length>0&&(p=!1)}),p&&(this.updateStepDuration=200)}}},t.prototype.checkIfValidate2=function(t){return!(t.dataItem&&t.dataItem.component&&t.dataItem.component.dataInvalid&&!t.dataItem.component.isTemplate)},t.prototype.requestFrame=function(){var t=this;this._frameRequested||(Object(o.b)(function(){t.update()}),this._frameRequested=!0)},t.prototype.softInvalidate=function(t){var e=this;t.children.each(function(t){t instanceof r.a&&e.softInvalidate(t),t.measureFailed&&(u.is(t,"Label")?t.hardInvalidate():t.invalidate(),t.measureFailed=!1)})},t.prototype.validatePositions=function(t){for(var e=n.b.invalidPositions[t];e.length>0;){var i=e[e.length-1];if(i.isDisposed())a.remove(e,i);else try{i._systemValidatePositions()}catch(t){i.positionInvalid=!1,a.remove(e,i),i.raiseCriticalError(t)}}},t.prototype.validateLayouts=function(t){for(var e=n.b.invalidLayouts[t];e.length>0;){var i=e[e.length-1];if(i.isDisposed())a.remove(e,i);else try{i.children.each(function(t){t._systemValidateLayouts()}),i.validateLayout()}catch(t){i.layoutInvalid=!1,a.remove(e,i),i.raiseCriticalError(t)}}},t.prototype.log=function(t){l.a(t)},Object.defineProperty(t.prototype,"isPaused",{get:function(){return this._isPaused},set:function(t){this._isPaused=t,t||(this._frameRequested=!1,this.requestFrame())},enumerable:!0,configurable:!0}),t.VERSION="4.7.12",t}(),c=new h},RzG0:function(t,e,i){var n=i("T9LF"),r=i("0v9/").set,o=n.MutationObserver||n.WebKitMutationObserver,a=n.process,s=n.Promise,u="process"==i("DVYA")(a);t.exports=function(){var t,e,i,l=function(){var n,r;for(u&&(n=a.domain)&&n.exit();t;){r=t.fn,t=t.next;try{r()}catch(n){throw t?i():e=void 0,n}}e=void 0,n&&n.enter()};if(u)i=function(){a.nextTick(l)};else if(!o||n.navigator&&n.navigator.standalone)if(s&&s.resolve){var h=s.resolve(void 0);i=function(){h.then(l)}}else i=function(){r.call(n,l)};else{var c=!0,p=document.createTextNode("");new o(l).observe(p,{characterData:!0}),i=function(){p.data=c=!c}}return function(n){var r={fn:n,next:void 0};e&&(e.next=r),t||(t=r,i()),e=r}}},S9D9:function(t,e,i){var n=i("Gb1H");n(n.S,"Math",{log1p:i("AzI1")})},ScGY:function(t,e,i){"use strict";i.d(e,"f",function(){return n}),i.d(e,"g",function(){return r}),i.d(e,"c",function(){return o}),i.d(e,"a",function(){return a}),i.d(e,"b",function(){return s}),i.d(e,"d",function(){return u}),i.d(e,"e",function(){return l});var n="px",r="string",o="number",a="date",s="duration",u="__§§§__",l="__§§§§__"},T3RA:function(t,e,i){"use strict";var n=i("T9LF"),r=i("U3hN"),o=i("DVYA"),a=i("6/bx"),s=i("W0fk"),u=i("AEc5"),l=i("rkh7").f,h=i("nHHr").f,c=i("hjwn").f,p=i("nAZS").trim,d=n.Number,f=d,g=d.prototype,m="Number"==o(i("5+SK")(g)),y="trim"in String.prototype,b=function(t){var e=s(t,!1);if("string"==typeof e&&e.length>2){var i,n,r,o=(e=y?e.trim():p(e,3)).charCodeAt(0);if(43===o||45===o){if(88===(i=e.charCodeAt(2))||120===i)return NaN}else if(48===o){switch(e.charCodeAt(1)){case 66:case 98:n=2,r=49;break;case 79:case 111:n=8,r=55;break;default:return+e}for(var a,u=e.slice(2),l=0,h=u.length;lr)return NaN;return parseInt(u,n)}}return+e};if(!d(" 0o1")||!d("0b1")||d("+0x1")){d=function(t){var e=arguments.length<1?0:t,i=this;return i instanceof d&&(m?u(function(){g.valueOf.call(i)}):"Number"!=o(i))?a(new f(b(e)),i,d):b(e)};for(var v,x=i("gD3S")?l(f):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),_=0;x.length>_;_++)r(f,v=x[_])&&!r(d,v)&&c(d,v,h(f,v));d.prototype=g,g.constructor=d,i("wDk4")(n,"Number",d)}},T3m9:function(t,e,i){"use strict";var n,r,o,a,s=i("pb4Y"),u=i("T9LF"),l=i("20m4"),h=i("MfZA"),c=i("Gb1H"),p=i("DvJ+"),d=i("DbOM"),f=i("ypVE"),g=i("hpnp"),m=i("QXbb"),y=i("0v9/").set,b=i("RzG0")(),v=i("6w17"),x=i("wYgt"),_=i("vSjZ"),P=i("JqbS"),w=u.TypeError,O=u.process,S=O&&O.versions,T=S&&S.v8||"",C=u.Promise,k="process"==h(O),I=function(){},D=r=v.f,V=!!function(){try{var t=C.resolve(1),e=(t.constructor={})[i("YEtG")("species")]=function(t){t(I,I)};return(k||"function"==typeof PromiseRejectionEvent)&&t.then(I)instanceof e&&0!==T.indexOf("6.6")&&-1===_.indexOf("Chrome/66")}catch(t){}}(),M=function(t){var e;return!(!p(t)||"function"!=typeof(e=t.then))&&e},j=function(t,e){if(!t._n){t._n=!0;var i=t._c;b(function(){for(var n=t._v,r=1==t._s,o=0,a=function(e){var i,o,a,s=r?e.ok:e.fail,u=e.resolve,l=e.reject,h=e.domain;try{s?(r||(2==t._h&&E(t),t._h=1),!0===s?i=n:(h&&h.enter(),i=s(n),h&&(h.exit(),a=!0)),i===e.promise?l(w("Promise-chain cycle")):(o=M(i))?o.call(i,u,l):u(i)):l(n)}catch(t){h&&!a&&h.exit(),l(t)}};i.length>o;)a(i[o++]);t._c=[],t._n=!1,e&&!t._h&&A(t)})}},A=function(t){y.call(u,function(){var e,i,n,r=t._v,o=F(t);if(o&&(e=x(function(){k?O.emit("unhandledRejection",r,t):(i=u.onunhandledrejection)?i({promise:t,reason:r}):(n=u.console)&&n.error&&n.error("Unhandled promise rejection",r)}),t._h=k||F(t)?2:1),t._a=void 0,o&&e.e)throw e.v})},F=function(t){return 1!==t._h&&0===(t._a||t._c).length},E=function(t){y.call(u,function(){var e;k?O.emit("rejectionHandled",t):(e=u.onrejectionhandled)&&e({promise:t,reason:t._v})})},R=function(t){var e=this;e._d||(e._d=!0,(e=e._w||e)._v=t,e._s=2,e._a||(e._a=e._c.slice()),j(e,!0))},L=function t(e){var i,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===e)throw w("Promise can't be resolved itself");(i=M(e))?b(function(){var r={_w:n,_d:!1};try{i.call(e,l(t,r,1),l(R,r,1))}catch(t){R.call(r,t)}}):(n._v=e,n._s=1,j(n,!1))}catch(t){R.call({_w:n,_d:!1},t)}}};V||(C=function(t){f(this,C,"Promise","_h"),d(t),n.call(this);try{t(l(L,this,1),l(R,this,1))}catch(t){R.call(this,t)}},(n=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=i("cA+3")(C.prototype,{then:function(t,e){var i=D(m(this,C));return i.ok="function"!=typeof t||t,i.fail="function"==typeof e&&e,i.domain=k?O.domain:void 0,this._c.push(i),this._a&&this._a.push(i),this._s&&j(this,!1),i.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new n;this.promise=t,this.resolve=l(L,t,1),this.reject=l(R,t,1)},v.f=D=function(t){return t===C||t===a?new o(t):r(t)}),c(c.G+c.W+c.F*!V,{Promise:C}),i("bPwn")(C,"Promise"),i("vdWU")("Promise"),a=i("G5U1").Promise,c(c.S+c.F*!V,"Promise",{reject:function(t){var e=D(this);return(0,e.reject)(t),e.promise}}),c(c.S+c.F*(s||!V),"Promise",{resolve:function(t){return P(s&&this===a?C:this,t)}}),c(c.S+c.F*!(V&&i("ID9o")(function(t){C.all(t).catch(I)})),"Promise",{all:function(t){var e=this,i=D(e),n=i.resolve,r=i.reject,o=x(function(){var i=[],o=0,a=1;g(t,!1,function(t){var s=o++,u=!1;i.push(void 0),a++,e.resolve(t).then(function(t){u||(u=!0,i[s]=t,--a||n(i))},r)}),--a||n(i)});return o.e&&r(o.v),i.promise},race:function(t){var e=this,i=D(e),n=i.reject,r=x(function(){g(t,!1,function(t){e.resolve(t).then(i.resolve,n)})});return r.e&&n(r.v),i.promise}})},"T9+M":function(t,e,i){i("6+x4")("Set")},T9LF:function(t,e){var i=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},"TDx+":function(t,e,i){"use strict";i.d(e,"a",function(){return a});var n=i("m4/l"),r=i("p9TX"),o=i("aCit"),a=function(t){function e(){var e=t.call(this)||this;return e.className="AxisLabel",e.isMeasured=!1,e.padding(10,10,10,10),e.location=.5,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"location",{get:function(){return this.getPropertyValue("location")},set:function(t){this.setPropertyValue("location",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"inside",{get:function(){return this.getPropertyValue("inside")},set:function(t){this.setPropertyValue("inside",t,!0)},enumerable:!0,configurable:!0}),e.prototype.setDisabled=function(e){var i=t.prototype.setDisabled.call(this,e);return this.axis&&this.axis.invalidateDataItems(),i},e}(r.a);o.b.registeredClasses.AxisLabel=a},TGuK:function(t,e,i){"use strict";i.d(e,"a",function(){return c}),i.d(e,"c",function(){return p}),i.d(e,"b",function(){return d});var n=i("m4/l"),r=i("Tjl+"),o=i("vMqJ"),a=i("x79X"),s=i("aCit"),u=i("Wglt"),l=i("hJ5i"),h=i("Mtpk"),c=function(t){function e(){var e=t.call(this)||this;return e._rules=new o.b,e._appliedRules={},e._appliedTargets=[],e._useDefault=!0,e.adapter=new a.a(e),e._enabled=!1,e._noStates=[],e.className="Responsive",e.rules.events.on("inserted",e.checkRules,!0),e.rules.events.on("removed",e.checkRules,!0),e._disposers.push(e.rules.events),e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"component",{get:function(){return this._component},set:function(t){t!=this._component&&(this._sizeEventDisposer&&this.removeDispose(this._sizeEventDisposer),this._component=t,this._sizeEventDisposer=h.getValue(this.component).events.on("sizechanged",this.checkRules,this),this._disposers.push(this._sizeEventDisposer),this.enabled=!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"enabled",{get:function(){return this.adapter.apply("enabled",this._enabled)},set:function(t){this._enabled!=t&&(this._enabled=t,this.applyRules())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"useDefault",{get:function(){return this.adapter.apply("useDefault",this._useDefault)},set:function(t){this._useDefault!=t&&(this._useDefault=t,this.applyRules())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"rules",{get:function(){return this.adapter.apply("rules",this._rules)},set:function(t){this._rules=t,this._enabled=!0,this.applyRules()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"defaultRules",{get:function(){return this.adapter.apply("defaultRules",p)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"allRules",{get:function(){var t=new o.b;return this.useDefault&&t.copyFrom(this.defaultRules),t.copyFrom(this.rules),this.adapter.apply("allRules",t)},enumerable:!0,configurable:!0}),e.prototype.isApplied=function(t){var e=this._appliedRules[t];return!!h.hasValue(e)&&e},e.prototype.checkRules=function(){var t=this,e=this.allRules;if(e&&0!=e.length){var i=!1,n=h.getValue(this.component);if(u.each(e.iterator(),function(e){e.id||(e.id=s.b.getUniqueId());var r=e.relevant(n);(r&&!t.isApplied(e.id)||!r&&t.isApplied(e.id))&&(i=!0),t._appliedRules[e.id]=r}),i){if(!this.component.isReady())return n.hidden=!0,void n.events.once("ready",function(e){e.target.show(0),t.applyRules()});this.dispatchImmediately("ruleschanged"),this.applyRules()}}},e.prototype.applyRules=function(t){var e=this,i=h.hasValue(t)?t:h.getValue(this.component),n=!1;this.enabled&&u.each(this.allRules.iterator(),function(t){var r=e.getState(t,i);r&&(n||(-1!==l.indexOf(e._appliedTargets,i.uid)&&i.applyCurrentState(0),n=!0),l.remove(e._appliedTargets,i.uid),e.isApplied(h.getValue(t.id))&&(r.transitionDuration=0,i.setState(r),e.dispatchImmediately("ruleapplied",{rule:t}),l.replace(e._appliedTargets,i.uid)))}),i.children&&u.each(i.children.iterator(),function(t){e.applyRules(t)})},e.prototype.getState=function(t,e){var i="responsive-"+t.id,n=e.uid+"_"+i;if(-1===l.indexOf(this._noStates,n)){if(e.states.hasKey(i))return e.states.getKey(i);var r=t.state(e,i);return r||this._noStates.push(n),r}},e.prototype.getValue=function(t,e){var i=t.getPropertyValue(e);return!h.hasValue(i)&&h.hasValue(t[e])&&(i=t[e]),i},e}(r.b),p=new o.b;p.events.on("inserted",function(t){t.newValue.id=s.b.getUniqueId()});var d=function(){function t(){}return t.widthXXS=function(e){return e.pixelWidth<=t.XXS},t.widthXS=function(e){return e.pixelWidth<=t.XS},t.widthS=function(e){return e.pixelWidth<=t.S},t.widthM=function(e){return e.pixelWidth<=t.M},t.widthL=function(e){return e.pixelWidth<=t.L},t.widthXL=function(e){return e.pixelWidth<=t.XL},t.widthXXL=function(e){return e.pixelWidth<=t.XXL},t.heightXXS=function(e){return e.pixelHeight<=t.XXS},t.heightXS=function(e){return e.pixelHeight<=t.XS},t.heightS=function(e){return e.pixelHeight<=t.S},t.heightM=function(e){return e.pixelHeight<=t.M},t.heightL=function(e){return e.pixelHeight<=t.L},t.heightXL=function(e){return e.pixelHeight<=t.XL},t.heightXXL=function(e){return e.pixelHeight<=t.XXL},t.isXXS=function(e){return e.pixelWidth<=t.XXS&&e.pixelHeight<=t.XXS},t.isXS=function(e){return e.pixelWidth<=t.XS&&e.pixelHeight<=t.XS},t.isS=function(e){return e.pixelWidth<=t.S&&e.pixelHeight<=t.S},t.isM=function(e){return e.pixelWidth<=t.M&&e.pixelHeight<=t.M},t.isL=function(e){return e.pixelWidth<=t.L&&e.pixelHeight<=t.L},t.isXL=function(e){return e.pixelWidth<=t.XL&&e.pixelHeight<=t.XL},t.isXXL=function(e){return e.pixelWidth<=t.XXL&&e.pixelHeight<=t.XXL},t.maybeXXS=function(e){return e.pixelWidth<=t.XXS||e.pixelHeight<=t.XXS},t.maybeXS=function(e){return e.pixelWidth<=t.XS||e.pixelHeight<=t.XS},t.maybeS=function(e){return e.pixelWidth<=t.S||e.pixelHeight<=t.S},t.maybeM=function(e){return e.pixelWidth<=t.M||e.pixelHeight<=t.M},t.maybeL=function(e){return e.pixelWidth<=t.L||e.pixelHeight<=t.L},t.maybeXL=function(e){return e.pixelWidth<=t.XL||e.pixelHeight<=t.XL},t.maybeXXL=function(e){return e.pixelWidth<=t.XXL||e.pixelHeight<=t.XXL},t.XXS=100,t.XS=200,t.S=300,t.M=400,t.L=600,t.XL=800,t.XXL=1e3,t}()},TXRX:function(t,e,i){"use strict";i.d(e,"a",function(){return s});var n=i("m4/l"),r=i("C6dT"),o=i("aCit"),a=i("TGuK"),s=function(t){function e(){var e=t.call(this)||this;return e.className="Bullet",e.isMeasured=!1,e.tooltipX=0,e.tooltipY=0,e.layout="none",e.applyOnClones=!0,e.copyToLegendMarker=!0,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"locationX",{get:function(){return this.getPropertyValue("locationX")},set:function(t){if(this.setPropertyValue("locationX",t)){var e=this.dataItem;e&&e.component&&e.component.invalidate()}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"locationY",{get:function(){return this.getPropertyValue("locationY")},set:function(t){if(this.setPropertyValue("locationY",t)){var e=this.dataItem;e&&e.component&&e.component.invalidate()}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"xField",{get:function(){return this.getPropertyValue("xField")},set:function(t){this.setPropertyValue("xField",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"yField",{get:function(){return this.getPropertyValue("yField")},set:function(t){this.setPropertyValue("yField",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isDynamic",{get:function(){return this.getPropertyValue("isDynamic")},set:function(t){this.setPropertyValue("isDynamic",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"copyToLegendMarker",{get:function(){return this.getPropertyValue("copyToLegendMarker")},set:function(t){this.setPropertyValue("copyToLegendMarker",t)},enumerable:!0,configurable:!0}),e}(r.a);o.b.registeredClasses.Bullet=s,a.c.push({relevant:a.b.isXS,state:function(t,e){if(t instanceof s){var i=t.states.create(e);return i.properties.disabled=!0,i}return null}})},"Tjl+":function(t,e,i){"use strict";i.d(e,"a",function(){return y}),i.d(e,"b",function(){return b});var n=i("m4/l"),r=i("vMqJ"),o=i("VGgz"),a=i("+qIf"),s=i("hD5A"),u=i("o0Lc"),l=i("x79X"),h=i("8ZqG"),c=i("tjMS"),p=i("aCit"),d=i("eCqC"),f=i("hJ5i"),g=i("Qkdp"),m=i("Mtpk"),y=function(){function t(){this._disposed=!1,this._disposers=[],this.className="BaseObject"}return t.prototype.debug=function(){},Object.defineProperty(t.prototype,"uid",{get:function(){return this._uid||(this._uid=p.b.getUniqueId(),p.b.map.setKey(this._uid,this)),this._uid},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"id",{get:function(){return this._id},set:function(t){this._id=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"map",{get:function(){return this._map||(this._map=new a.a),this._map},enumerable:!0,configurable:!0}),t.prototype.applyTheme=function(){var t=this;if(p.b){var e=this.getCurrentThemes();e&&f.each(e,function(e,i){e(t)})}},Object.defineProperty(t.prototype,"themes",{get:function(){return this._themes},set:function(t){this._themes=t},enumerable:!0,configurable:!0}),t.prototype.getCurrentThemes=function(){return this.themes||p.b.themes},t.prototype.isDisposed=function(){return this._disposed},t.prototype.dispose=function(){if(!this._disposed){this._disposed=!0;var t=this._disposers;for(this._disposers=null;0!==t.length;){t.shift().dispose()}this.clearCache(),this.clonedFrom&&this.clonedFrom.clones.removeValue(this);var e=this._uid;null!=e&&p.b.map.removeKey(e)}},t.prototype.addDisposer=function(t){this._disposers.push(t)},t.prototype.removeDispose=function(t){if(!this._disposed){var e=f.indexOf(this._disposers,t);e>-1&&this._disposers.splice(e,1)}t.dispose()},t.prototype.clone=function(t){t||(t="clone-"+p.b.getUniqueId());var e=new this.constructor;return e.cloneId=t,e.copyFrom(this),e},Object.defineProperty(t.prototype,"clones",{get:function(){return this._clones||(this._clones=new r.b),this._clones},enumerable:!0,configurable:!0}),t.prototype.copyFrom=function(t){t.clones.push(this),this.clonedFrom=t},Object.defineProperty(t.prototype,"className",{get:function(){return this._className},set:function(t){this._className=t},enumerable:!0,configurable:!0}),t.prototype.setCache=function(t,e,i){d.b.set(this.uid,t,e,i)},t.prototype.getCache=function(t,e){return void 0===e&&(e=void 0),d.b.get(this.uid,t,e)},t.prototype.clearCache=function(){d.b.clear(this.uid)},t.prototype.setTimeout=function(t,e){var i=this,n=setTimeout(function(){i.removeDispose(r),t()},e),r=new s.b(function(){clearTimeout(n)});return this._disposers.push(r),r},t.prototype.setInterval=function(t,e){var i=this,n=setInterval(function(){i.removeDispose(r),t()},e),r=new s.b(function(){clearTimeout(n)});return this._disposers.push(r),r},Object.defineProperty(t.prototype,"config",{set:function(t){try{this.processConfig(t)}catch(t){this.raiseCriticalError(t)}},enumerable:!0,configurable:!0}),t.prototype.processConfig=function(e){var i=this;if(e){var n=this;if(g.eachOrdered(e,function(e,s){var d,f=s;if("callback"==e&&"function"==typeof s&&s.call(n),i.hasProperty(e))if(!m.isObject(f)||!m.hasValue(f.type)||m.isObject(n[e])&&m.hasValue(n[e].className)&&!f.forceCreate&&n[e].className==f.type||i.asIs(e)?d=n[e]:(d=i.createClassInstance(f.type))?n[e]=d:d=n[e],d instanceof l.a)i.processAdapters(d,f);else if(d instanceof u.a)i.processEvents(d,f);else if("locale"==e&&m.isString(f))document["am4lang_"+f]&&(n[e]=document["am4lang_"+f]);else if("parent"==e&&m.isString(f)){var y=i.map.getKey(f);if(!y)throw Error('Non-existing ID in config: "'+f+'".');n[e]=y}else if(i.asIs(e))n[e]=f;else if(i.asFunction(e)&&m.isString(f)){if(!m.hasValue(p.b.registeredClasses[f]))throw Error("Invalid easing function: "+f);n[e]=p.b.registeredClasses[f]}else if(f instanceof t)n[e]=f;else if(d instanceof t)d.config=f;else if(d instanceof r.e||d instanceof o.b||d instanceof o.d){if(m.isArray(f))d instanceof r.e?i.processListTemplate(f,d):i.processOrderedTemplate(f,d);else if(m.isObject(f))if(f instanceof t)d.template=f;else{var b=void 0;b=m.hasValue(f.template)?f.template:f,d.template instanceof t?d.template.config=b:g.each(b,function(e,n){var o=d.template[e];o instanceof l.a?i.processAdapters(o,n):o instanceof u.a?i.processEvents(o,n):o instanceof a.c?i.processDictionaryTemplate(o,n):d.template[e]instanceof t?d.template[e].config=n:m.isObject(n)&&m.hasValue(n.type)?(o=i.createClassInstance(n.type))?(o instanceof t&&(o.config=n),d.template[e]=o):d.template[e]=n:o instanceof r.b?i.processList(n,o):d.template[e]=i.maybeColorOrPercent(n)}),m.hasValue(f.values)&&(d instanceof r.e?i.processListTemplate(f.values,d):i.processOrderedTemplate(f.values,d))}}else d instanceof r.b?"children"==e?i.processList(f,d,i):i.processList(f,d):d instanceof a.c?i.processDictionaryTemplate(d,f):d instanceof a.a?i.processDictionary(d,f):d instanceof h.a||d instanceof c.a?n[e]=i.maybeColorOrPercent(f):m.isObject(d)&&m.isObject(f)?g.copyAllProperties(f,d):(f=i.maybeColorOrPercent(f),n[e]=f);else i.isReserved(e)||(n[e]=f)},this.configOrder),this.processingErrors.length){var s=this.processingErrors.join("\n");throw this._processingErrors=[],Error(s)}}},t.prototype.maybeColorOrPercent=function(t){if(m.isString(t)){if(t.match(/^[\-]?[0-9.]+\%$/))return Object(c.c)(m.toNumber(t));if(t.match(/^\#[0-9abcdef]{3,}$/i))return Object(h.c)(t)}return t},t.prototype.processAdapters=function(t,e){var i=this;m.isArray(e)?f.each(e,function(e,n){t.add(e.key,e.callback,e.priority||0,i)}):m.isObject(e)&&g.each(e,function(e,i){t.has(e,i)||t.add(e,i)})},t.prototype.processEvents=function(t,e){var i=this;m.isObject(e)?g.each(e,function(e,i){t.has(e,i)||t.on(e,i)}):m.isArray(e)&&f.each(e,function(e,n){t.on(e.type,e.callback,i)})},t.prototype.processDictionaryTemplate=function(e,i){m.isObject(i)&&g.each(i,function(i,n){var r;(r="template"==i?e.template:e.hasKey(i)?e.getKey(i):e.create(i))instanceof t?r.config=n:m.isObject(r)&&m.isObject(n)?g.copyAllProperties(n,r):r.setKey(i,n)})},t.prototype.processDictionary=function(t,e){m.isObject(e)&&g.each(e,function(e,i){t.setKey(e,i)})},t.prototype.processListTemplate=function(e,i){var n=this;for(f.each(e,function(e,r){var o,a=n.getConfigEntryType(e);if(i.hasIndex(r)&&!e.forceCreate)o=i.getIndex(r);else{if(e instanceof t)return void i.push(e);o=a?i.create(a):i.create()}e===o||m.isObject(e)&&(o instanceof t?o.config=e:m.isObject(o)&&m.isObject(e)?g.copyAllProperties(e,o):i.setIndex(i.indexOf(o),e))});e.length>i.length;)i.pop()},t.prototype.processOrderedTemplate=function(e,i){var n=this;f.each(e,function(e,r){var o,a=n.getConfigEntryType(e);o=a?i.create(a):i.create(),m.isObject(e)&&(o instanceof t?o.config=e:m.isObject(o)&&m.isObject(e)?g.copyAllProperties(e,o):i.insert(e))})},t.prototype.processList=function(e,i,n){var r=this;m.isArray(e)||(e=[e]);var o=i.length;for(f.each(e,function(e,a){if(m.isObject(e)){var s=void 0;if(ai.length;)i.pop()},t.prototype.configOrder=function(t,e){return t==e?0:"language"==t?-1:"language"==e?1:0},t.prototype.asIs=function(t){return-1!=f.indexOf(["locale"],t)},t.prototype.asFunction=function(t){return!1},t.prototype.createClassInstance=function(t){if(m.hasValue(p.b.registeredClasses[t]))return new p.b.registeredClasses[t];throw Error('Invalid type: "'+t+'".')},t.prototype.createEntryInstance=function(t){var e;return m.hasValue(t.type)&&(e=this.createClassInstance(t.type)),e||t},t.prototype.getConfigEntryType=function(t){if(m.hasValue(t.type)){if(m.hasValue(p.b.registeredClasses[t.type]))return p.b.registeredClasses[t.type];throw Error('Invalid type: "'+t.type+'".')}},t.prototype.hasProperty=function(t){return t in this},t.prototype.isReserved=function(t){return-1!==["type","forceCreate"].indexOf(t)},Object.defineProperty(t.prototype,"processingErrors",{get:function(){return this._processingErrors||(this._processingErrors=[]),this._processingErrors},enumerable:!0,configurable:!0}),t}(),b=function(t){function e(){var e=t.call(this)||this;return e.className="BaseObjectEvents",e}return n.c(e,t),Object.defineProperty(e.prototype,"events",{get:function(){return this._eventDispatcher||(this._eventDispatcher=new u.a,this._disposers.push(this._eventDispatcher)),this._eventDispatcher},enumerable:!0,configurable:!0}),e.prototype.dispatch=function(t,e){this._eventDispatcher&&this.events.isEnabled(t)&&(e?(e.type=t,e.target=e.target||this,this.events.dispatch(t,{type:t,target:this})):this.events.dispatch(t,{type:t,target:this}))},e.prototype.dispatchImmediately=function(t,e){this._eventDispatcher&&this.events.isEnabled(t)&&(e?(e.type=t,e.target=e.target||this,this.events.dispatchImmediately(t,e)):this.events.dispatchImmediately(t,{type:t,target:this}))},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),e._eventDispatcher&&this.events.copyFrom(e._eventDispatcher)},e}(y)},Trvg:function(t,e,i){"use strict";i.d(e,"a",function(){return u});var n=i("m4/l"),r=i("p9TX"),o=i("qCRI"),a=i("MIZb"),s=i("aCit"),u=function(t){function e(){var e=t.call(this)||this;e.className="TextLink",e.selectable=!0;var i=new a.a;return e.fill=i.getFor("primaryButton").brighten(.3),e.states.create("hover").properties.fill=i.getFor("primaryButtonHover").brighten(.3),e.states.create("down").properties.fill=i.getFor("primaryButtonDown").brighten(.3),e.cursorOverStyle=o.a.pointer,e.applyTheme(),e}return n.c(e,t),e}(r.a);s.b.registeredClasses.TextLink=u},U1Gp:function(t,e,i){"use strict";var n=i("20m4"),r=i("Gb1H"),o=i("vJiZ"),a=i("sNEp"),s=i("a8UT"),u=i("FmWr"),l=i("e8Nv"),h=i("iOZG");r(r.S+r.F*!i("ID9o")(function(t){Array.from(t)}),"Array",{from:function(t){var e,i,r,c,p=o(t),d="function"==typeof this?this:Array,f=arguments.length,g=f>1?arguments[1]:void 0,m=void 0!==g,y=0,b=h(p);if(m&&(g=n(g,f>2?arguments[2]:void 0,2)),void 0==b||d==Array&&s(b))for(i=new d(e=u(p.length));e>y;y++)l(i,y,m?g(p[y],y):p[y]);else for(c=b.call(p),i=new d;!(r=c.next()).done;y++)l(i,y,m?a(c,g,[r.value,y],!0):r.value);return i.length=y,i}})},U3hN:function(t,e){var i={}.hasOwnProperty;t.exports=function(t,e){return i.call(t,e)}},UPxv:function(t,e,i){var n=i("Gb1H");n(n.S,"System",{global:i("T9LF")})},UXfn:function(t,e,i){"use strict";var n=i("Gb1H"),r=i("FmWr"),o=i("zAAN"),a="".startsWith;n(n.P+n.F*i("IYrR")("startsWith"),"String",{startsWith:function(t){var e=o(this,t,"startsWith"),i=r(Math.min(arguments.length>1?arguments[1]:void 0,e.length)),n=String(t);return a?a.call(e,n,i):e.slice(i,i+n.length)===n}})},Uf57:function(t,e,i){"use strict";i.d(e,"b",function(){return _}),i.d(e,"a",function(){return P});var n=i("m4/l"),r=i("aM7D"),o=i("Vs7R"),a=i("pR7v"),s=i("+qIf"),u=i("hD5A"),l=i("0Mwj"),h=i("VB2N"),c=i("KknQ"),p=i("aCit"),d=i("Wglt"),f=i("Gg2j"),g=i("v9UT"),m=i("Mtpk"),y=i("L91H"),b=i("hJ5i"),v=i("Qkdp"),x=i("hGwe"),_=function(t){function e(){var e=t.call(this)||this;return e.className="XYSeriesDataItem",e.values.valueX={stack:0},e.values.valueY={stack:0},e.values.openValueX={},e.values.openValueY={},e.values.dateX={},e.values.dateY={},e.values.openDateX={},e.values.openDateY={},e.setLocation("dateX",.5,0),e.setLocation("dateY",.5,0),e.setLocation("categoryX",.5,0),e.setLocation("categoryY",.5,0),e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"valueX",{get:function(){return this.values.valueX.value},set:function(t){this.setValue("valueX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"valueY",{get:function(){return this.values.valueY.value},set:function(t){this.setValue("valueY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dateX",{get:function(){return this.getDate("dateX")},set:function(t){this.setDate("dateX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dateY",{get:function(){return this.getDate("dateY")},set:function(t){this.setDate("dateY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"categoryX",{get:function(){return this.categories.categoryX},set:function(t){this.setCategory("categoryX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"categoryY",{get:function(){return this.categories.categoryY},set:function(t){this.setCategory("categoryY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"openValueX",{get:function(){return this.values.openValueX.value},set:function(t){this.setValue("openValueX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"openValueY",{get:function(){return this.values.openValueY.value},set:function(t){this.setValue("openValueY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"openDateX",{get:function(){return this.getDate("openDateX")},set:function(t){this.setDate("openDateX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"openDateY",{get:function(){return this.getDate("openDateY")},set:function(t){this.setDate("openDateY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"openCategoryX",{get:function(){return this.categories.openCategoryX},set:function(t){this.setCategory("openCategoryX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"openCategoryY",{get:function(){return this.categories.openCategoryY},set:function(t){this.setCategory("openCategoryY",t)},enumerable:!0,configurable:!0}),e.prototype.getMin=function(t,e,i){var n,r=this;return m.isNumber(i)||(i=0),b.each(t,function(t){var o;o=e?r.getWorkingValue(t):r.getValue(t),((o+=i)n||!m.isNumber(n))&&(n=o)}),n},e}(r.b),P=function(t){function e(){var e=t.call(this)||this;return e.groupFields={},e._xAxis=new u.d,e._yAxis=new u.d,e._xValueFields=[],e._yValueFields=[],e._baseInterval={},e.dataGrouped=!1,e.usesShowFields=!1,e._dataSetChanged=!1,e.className="XYSeries",e.isMeasured=!1,e.groupFields.valueX="close",e.groupFields.valueY="close",e.groupFields.openValueX="open",e.groupFields.openValueY="open",e.cursorTooltipEnabled=!0,e.cursorHoverEnabled=!0,e.excludeFromTotal=!1,e.mainContainer.mask=new o.a,e.mainContainer.mask.setElement(e.paper.add("path")),e.stacked=!1,e.snapTooltip=!1,e.tooltip.pointerOrientation="horizontal",e.tooltip.events.on("hidden",function(){e.returnBulletDefaultState()},void 0,!1),e._disposers.push(e._xAxis),e._disposers.push(e._yAxis),e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),m.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("X/Y Series"))},e.prototype.createDataItem=function(){return new _},e.prototype.dataChangeUpdate=function(){this._tmin.clear(),this._tmax.clear(),this._smin.clear(),this._smax.clear(),this.xAxis&&this.xAxis.seriesDataChangeUpdate(this),this.yAxis&&this.yAxis.seriesDataChangeUpdate(this)},e.prototype.validateData=function(){this._baseInterval={};var e=this.dataFields;if(e.valueYShow||e.openValueXShow||e.openValueXShow||e.openValueYShow?this.usesShowFields=!0:this.usesShowFields=!1,this.defineFields(),this.data.length>0&&this.dataChangeUpdate(),t.prototype.validateData.call(this),this.updateItemReaderText(),this.chart&&(!m.hasValue(this.dataFields[this._xField])||!m.hasValue(this.dataFields[this._yField])))throw Error('Data fields for series "'+(this.name?this.name:this.uid)+'" are not properly defined.');this.dataGrouped=!1},e.prototype.processDataItem=function(e,i){try{t.prototype.processDataItem.call(this,e,i),this.xAxis.processSeriesDataItem(e,"X"),this.yAxis.processSeriesDataItem(e,"Y"),this.setInitialWorkingValues(e)}catch(t){this._chart&&this._chart.raiseCriticalError(t)}},e.prototype.updateDataItem=function(e){t.prototype.updateDataItem.call(this,e),this.xAxis.processSeriesDataItem(e,"X"),this.yAxis.processSeriesDataItem(e,"Y")},e.prototype.setInitialWorkingValues=function(t){},e.prototype.disposeData=function(){t.prototype.disposeData.call(this);var e=this.xAxis,i=this.yAxis;if(e){var n=this.dataItemsByAxis.getKey(e.uid);n&&n.clear(),e instanceof h.a&&this.clearCatAxis(e)}if(i){var r=this.dataItemsByAxis.getKey(i.uid);r&&r.clear(),i instanceof h.a&&this.clearCatAxis(i)}},e.prototype.clearCatAxis=function(t){var e=this.uid;t.dataItems.each(function(t){t.seriesDataItems[e]&&(t.seriesDataItems[e]=[])})},e.prototype.defineFields=function(){var t=this.xAxis,e=this.yAxis;if(t&&e){var i=t.axisFieldName,n=i+"X",r="open"+g.capitalize(i)+"X",o=e.axisFieldName,a=o+"Y",s="open"+g.capitalize(o)+"Y";this._xField=n,this._yField=a,this.dataFields[r]&&(this._xOpenField=r),this.dataFields[s]&&(this._yOpenField=s),this.dataFields[s]||this.baseAxis!=e||(this._yOpenField=a),this.dataFields[r]||this.baseAxis!=t||(this._xOpenField=n),this.stacked&&this.baseAxis==t&&(this._xOpenField=n),this.stacked&&this.baseAxis==e&&(this._yOpenField=a),t instanceof h.a&&e instanceof h.a&&(this._yOpenField||(this._yOpenField=a)),this._xValueFields=[],this._yValueFields=[],this.addValueField(t,this._xValueFields,this._xField),this.addValueField(t,this._xValueFields,this._xOpenField),this.addValueField(e,this._yValueFields,this._yField),this.addValueField(e,this._yValueFields,this._yOpenField)}},e.prototype.addValueField=function(t,e,i){t instanceof a.a&&m.hasValue(this.dataFields[i])&&-1==e.indexOf(i)&&e.push(i)},e.prototype.setCategoryAxisField=function(t,e){m.hasValue(this.dataFields[t])||(this.dataFields[t]=e.dataFields.category)},e.prototype.setDateAxisField=function(t,e){m.hasValue(this.dataFields[t])||(this.dataFields[t]=e.dataFields.date)},e.prototype.afterDraw=function(){t.prototype.afterDraw.call(this),this.createMask()},e.prototype.createMask=function(){if(this.mainContainer.mask){var t=this.getMaskPath();d.each(this.axisRanges.iterator(),function(e){e.axisFill.fillPath&&(e.axisFill.validate(),t+=e.axisFill.fillPath)}),this.mainContainer.mask.path=t}},e.prototype.getMaskPath=function(){return this.xAxis&&this.yAxis?x.rectToPath({x:0,y:0,width:this.xAxis.axisLength,height:this.yAxis.axisLength}):""},e.prototype.getAxisField=function(t){return t==this.xAxis?this.xField:t==this.yAxis?this.yField:void 0},e.prototype.validateDataItems=function(){var e=this.xAxis,i=this.yAxis;e&&i&&(e.updateAxisBySeries(),i.updateAxisBySeries()),t.prototype.validateDataItems.call(this),e&&i&&(e.postProcessSeriesDataItems(),i.postProcessSeriesDataItems())},e.prototype.validateDataRange=function(){var e=this.xAxis,i=this.yAxis;e&&i&&(e.dataRangeInvalid&&e.validateDataRange(),i.dataRangeInvalid&&i.validateDataRange()),t.prototype.validateDataRange.call(this)},e.prototype.validate=function(){var e=this.xAxis,i=this.yAxis;if(e&&i){e.invalid&&e.validate(),i.invalid&&i.validate(),this.y=i.pixelY,this.x=e.pixelX,this._showBullets=!0;var n=this.minBulletDistance;m.isNumber(n)&&this.baseAxis.axisLength/(this.endIndex-this.startIndex)l&&(l=x)),this.baseAxis==n&&(vs&&(s=v)))}i.processSeriesDataItems(),n.processSeriesDataItems();var _=i.uid,P=n.uid;if(!e&&(this._tmin.getKey(_)!=o||this._tmax.getKey(_)!=s||this._tmin.getKey(P)!=u||this._tmax.getKey(P)!=l)){this._tmin.setKey(_,o),this._tmax.setKey(_,s),this._tmin.setKey(P,u),this._tmax.setKey(P,l);var w=this.stackedSeries;w&&(w.isDisposed()?this.stackedSeries=void 0:w.processValues(!1)),this.dispatchImmediately("extremeschanged")}if(h!=d||p!=g){o=1/0,s=-1/0,u=1/0,l=-1/0;for(y=d;yl&&(l=x)),this.baseAxis==n&&(vs&&(s=v)))}}if(this._smin.getKey(_)!=o||this._smax.getKey(_)!=s||this._smin.getKey(P)!=u||this._smax.getKey(P)!=l)if(this._smin.setKey(_,o),this._smax.setKey(_,s),this._smin.setKey(P,u),this._smax.setKey(P,l),o==1/0||s==-1/0||u==1/0||l==-1/0);else if(this.appeared||0!=this.start||1!=this.end||this.dataItems!=this.mainDataSet){var O=!1;if(n instanceof a.a&&!(n instanceof c.a)){var S=this._tmin.getKey(P);(!m.isNumber(S)||(this.usesShowFields||this._dataSetChanged)&&uT)&&(this._tmax.setKey(P,l),O=!0)}if(i instanceof a.a&&!(i instanceof c.a)){S=this._tmin.getKey(_);(!m.isNumber(S)||(this.usesShowFields||this._dataSetChanged)&&oT)&&(this._tmax.setKey(_,s),O=!0)}O&&this.dispatchImmediately("extremeschanged"),this.dispatchImmediately("selectionextremeschanged")}!e&&this.stacked&&this.processValues(!0),this._dataSetChanged=!1}},e.prototype.hideTooltip=function(){t.prototype.hideTooltip.call(this),this.returnBulletDefaultState(),this._prevTooltipDataItem=void 0},e.prototype.showTooltipAtPosition=function(t,e){var i;if(this.visible&&!this.isHiding&&!this.isShowing){var n=this._xAxis.get(),r=this._yAxis.get();n==this.baseAxis&&(i=n.getSeriesDataItem(this,n.toAxisPosition(t),this.snapTooltip)),r==this.baseAxis&&(i=r.getSeriesDataItem(this,r.toAxisPosition(e),this.snapTooltip));var o=this.showTooltipAtDataItem(i);if(o)return o;if(!this.tooltipText)return}this.hideTooltip()},e.prototype.getAdjustedXLocation=function(t,e){return t.locations[e]},e.prototype.getAdjustedYLocation=function(t,e){return t.locations[e]},e.prototype.showTooltipAtDataItem=function(t){var e,i,r=this.chart.cursor;if(r&&r.hideSeriesTooltipsOnSelection&&r.selection.visible&&r.downPoint)this.hideTooltip();else if(this.returnBulletDefaultState(t),t&&t.visible){if(this.updateLegendValue(t),this.cursorTooltipEnabled){this.tooltipDataItem=t;var o=this.tooltipXField,a=this.tooltipYField;if(m.hasValue(t[o])&&m.hasValue(t[a])){var s=this.getPoint(t,o,a,this.getAdjustedXLocation(t,o),this.getAdjustedYLocation(t,a));if(s){if(this.tooltipX=s.x,this.tooltipY=s.y,this._prevTooltipDataItem!=t&&(this.dispatchImmediately("tooltipshownat",{type:"tooltipshownat",target:this,dataItem:t}),this._prevTooltipDataItem=t),this.cursorHoverEnabled)try{for(var u=n.g(t.sprites),l=u.next();!l.done;l=u.next()){var h=l.value;!h.parent.visible||h.isHidden||h.__disabled||h.disabled||h.isHiding||(h.isHover=!0)}}catch(t){e={error:t}}finally{try{l&&!l.done&&(i=u.return)&&i.call(u)}finally{if(e)throw e.error}}return this.showTooltip()?g.spritePointToSvg({x:s.x,y:s.y},this):void 0}}}}else this.updateLegendValue(t,!0)},e.prototype.returnBulletDefaultState=function(t){if(this._prevTooltipDataItem&&this._prevTooltipDataItem!=t)try{for(var e=n.g(this._prevTooltipDataItem.sprites),i=e.next();!i.done;i=e.next()){var r=i.value;r.isDisposed()?this._prevTooltipDataItem=void 0:r.isHover=!1}}catch(t){o={error:t}}finally{try{i&&!i.done&&(a=e.return)&&a.call(e)}finally{if(o)throw o.error}}var o,a},e.prototype.shouldCreateBullet=function(t,e){var i=e.xField;m.hasValue(i)||(i=this.xField);var n=e.yField;if(m.hasValue(n)||(n=this.yField),this.xAxis instanceof a.a&&!t.hasValue([i])||this.yAxis instanceof a.a&&!t.hasValue([n]))return!1;if(e.disabled){var r=e.propertyFields.disabled,o=t.dataContext;return!(!o||!1!==o[r])}return!0},e.prototype.positionBullet=function(e){t.prototype.positionBullet.call(this,e);var i=e.dataItem,n=e.xField;m.hasValue(n)||(n=this.xField);var r=e.yField;m.hasValue(r)||(r=this.yField);var o=this.xAxis,s=this.yAxis;if(o instanceof a.a&&!i.hasValue([n])||s instanceof a.a&&!i.hasValue([r]))e.visible=!1;else{var u=this.getBulletLocationX(e,n),l=this.getBulletLocationY(e,r);if(this.getPoint(i,n,r,u,l)){var p=this.xOpenField,d=this.yOpenField,f=void 0,g=void 0;if(o instanceof c.a){m.isNumber(u)||(u=0);var b=void 0,v=i.getWorkingValue(n);if(p?b=i.getWorkingValue(p):o==this.baseAxis&&(b=o.baseValue),m.isNumber(b)||(b=v),(b+=T=i.getValue("valueX","stack"))==(v+=T)){var x=o.baseInterval,_=o.dateFormatter;b=y.round(new Date(b),x.timeUnit,x.count,_.firstDayOfWeek,_.utc).getTime(),v=y.add(new Date(b),x.timeUnit,x.count,_.utc).getTime()}var P=void 0;P=o==this.baseAxis?b+(v-b)*u:b+(v-b)*(1-u),f=o.valueToPosition(P)}else if(o instanceof a.a){m.isNumber(u)||(u=0);b=void 0,v=i.getWorkingValue(n);b=p?i.getWorkingValue(p):o.baseValue;P=(b+=T=i.getValue("valueX","stack"))+((v+=T)-b)*(1-u);f=o.valueToPosition(P)}else if(o instanceof h.a){var w=this.getAdjustedXLocation(i,n),O=this.getAdjustedXLocation(i,p);f=o.categoryToPosition(i[n],w);var S=void 0;p&&(S=o.categoryToPosition(i[p],O)),m.isNumber(S)||(S=1),f=S+(f-S)*u}if(s instanceof c.a){m.isNumber(l)||(l=0);b=void 0,v=i.getWorkingValue(r);if(d?b=i.getWorkingValue(d):s==this.baseAxis&&(b=s.baseValue),m.isNumber(b)||(b=v),(b+=T=i.getValue("valueY","stack"))==(v+=T)){x=s.baseInterval,_=s.dateFormatter;b=y.round(new Date(b),x.timeUnit,x.count,_.firstDayOfWeek,_.utc).getTime(),v=y.add(new Date(b),x.timeUnit,x.count,_.utc).getTime()}P=void 0;P=s==this.baseAxis?b+(v-b)*l:b+(v-b)*(1-l),g=s.valueToPosition(P)}else if(s instanceof a.a){m.isNumber(l)||(l=0);var T;b=void 0,v=i.getWorkingValue(r);b=d?i.getWorkingValue(d):s.baseValue;P=(b+=T=i.getValue("valueY","stack"))+((v+=T)-b)*(1-l);g=s.valueToPosition(P)}else if(s instanceof h.a){g=s.categoryToPosition(i[r],l);var C=this.getAdjustedYLocation(i,r),k=this.getAdjustedYLocation(i,d);g=s.categoryToPosition(i[r],C);var I=void 0;d&&(I=s.categoryToPosition(i[d],k)),m.isNumber(I)||(I=1),g=I+(g-I)*l}e.visible=!0,this.positionBulletReal(e,f,g)}else e.visible=!1}},e.prototype.positionBulletReal=function(t,e,i){t.x=this.xAxis.renderer.positionToPoint(e,i).x,t.y=this.yAxis.renderer.positionToPoint(i,e).y},e.prototype.getBulletLocationX=function(t,e){var i=t.locationX,n=t.dataItem;return m.isNumber(i)||(i=n.workingLocations[e]),i},e.prototype.getBulletLocationY=function(t,e){var i=t.locationY,n=t.dataItem;return m.isNumber(i)||(i=n.workingLocations[e]),i},Object.defineProperty(e.prototype,"stacked",{get:function(){return this.getPropertyValue("stacked")},set:function(t){this.setPropertyValue("stacked",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"snapTooltip",{get:function(){return this.getPropertyValue("snapTooltip")},set:function(t){this.setPropertyValue("snapTooltip",t)},enumerable:!0,configurable:!0}),e.prototype.show=function(e){var i,n=this;this.xAxis instanceof a.a&&this.xAxis!=this.baseAxis&&(i=this._xValueFields),this.yAxis instanceof a.a&&this.yAxis!=this.baseAxis&&(i=this._yValueFields);var r,o=this.startIndex,s=this.endIndex,u=0,l=this.defaultState.transitionDuration;m.isNumber(e)&&(l=e),d.each(d.indexed(this.dataItems.iterator()),function(t){var e=t[0],a=t[1];n.sequencedInterpolation&&l>0&&(u=n.sequencedInterpolationDelay*e+l*(e-o)/(s-o)),r=a.show(l,u,i)}),this.dataSets.each(function(t,e){e!=n.dataItems&&e.each(function(t){t.events.disable(),t.show(0,0,i),t.events.enable()})}),this.mainDataSet!=this.dataItems&&this.mainDataSet.each(function(t){t.events.disable(),t.show(0,0,i),t.events.enable()});var h=t.prototype.show.call(this,e);return r&&!r.isFinished()&&(h=r),h},e.prototype.hide=function(e){var i,n,r=this,o=this.xAxis;o instanceof a.a&&o!=this.baseAxis&&(i=this._xValueFields,n=this.stacked||o.minZoomedo.baseValue||this.stackedSeries?o.baseValue:o.min);var s=this.yAxis;s instanceof a.a&&s!=this.baseAxis&&(i=this._yValueFields,n=this.stacked||s.minZoomeds.baseValue||this.stackedSeries?s.baseValue:s.min);var u=this.startIndex,l=this.endIndex,h=this.hiddenState.transitionDuration;m.isNumber(e)&&(h=e);var c,p=0;d.each(d.indexed(this.dataItems.iterator()),function(t){var e=t[0],o=t[1];0==h?o.hide(0,0,n,i):(r.sequencedInterpolation&&h>0&&(p=r.sequencedInterpolationDelay*e+h*(e-u)/(l-u)),c=o.hide(h,p,n,i))});var f=t.prototype.hide.call(this,h);return f&&!f.isFinished()&&f.delay(p),c&&!c.isFinished()&&(f=c),this.validateDataElements(),f},e.prototype.handleDataItemWorkingValueChange=function(e,i){t.prototype.handleDataItemWorkingValueChange.call(this,e,i);var n=this.baseAxis.series;d.each(n.iterator(),function(t){t.stacked&&t.invalidateProcessedData()})},e.prototype.getStackValue=function(t,e){var i=this,n=this.xAxis,r=this.yAxis;if(this.stacked&&n&&r){var o,s=this.chart,u=s.series.indexOf(this);n!=this.baseAxis&&n instanceof a.a&&(o=this.xField),r!=this.baseAxis&&r instanceof a.a&&(o=this.yField),o&&(t.setCalculatedValue(o,0,"stack"),d.eachContinue(s.series.range(0,u).backwards().iterator(),function(a){if(a.xAxis==n&&a.yAxis==r){a.stackedSeries=i;var s=a.dataItems.getIndex(t.index);if(s&&s.hasValue(i._xValueFields)&&s.hasValue(i._yValueFields)){var u=t.getValue(o),l=void 0,h=s.getValue(o)+s.getValue(o,"stack");if(l=e?s.getWorkingValue(o)+s.getValue(o,"stack"):s.getValue(o)+s.getValue(o,"stack"),u>=0&&h>=0||u<0&&h<0)return t.setCalculatedValue(o,l,"stack"),!1}else if(!a.stacked)return!1}return!0}))}},Object.defineProperty(e.prototype,"xField",{get:function(){return this._xField},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"yField",{get:function(){return this._yField},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"xOpenField",{get:function(){return this._xOpenField},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"yOpenField",{get:function(){return this._yOpenField},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tooltipXField",{get:function(){return this._tooltipXField?this._tooltipXField:this._xField},set:function(t){this._tooltipXField=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tooltipYField",{get:function(){return this._tooltipYField?this._tooltipYField:this._yField},set:function(t){this._tooltipYField=t},enumerable:!0,configurable:!0}),e.prototype.min=function(t){return this._tmin.getKey(t.uid)},e.prototype.max=function(t){return this._tmax.getKey(t.uid)},e.prototype.selectionMin=function(t){var e=this._smin.getKey(t.uid);return m.isNumber(e)||(e=this.min(t)),e},e.prototype.selectionMax=function(t){var e=this._smax.getKey(t.uid);return m.isNumber(e)||(e=this.max(t)),e},e.prototype.processConfig=function(e){if(e){if(m.hasValue(e.baseAxis)&&m.isString(e.baseAxis)&&(this.map.hasKey(e.baseAxis)?e.baseAxis=this.map.getKey(e.baseAxis):(this.processingErrors.push("[XYSeries ("+(this.name||"unnamed")+')] No axis with id "'+e.baseAxis+'" found for `baseAxis`.'),delete e.baseAxis)),m.hasValue(e.xAxis)&&m.isString(e.xAxis)&&(this.map.hasKey(e.xAxis)?e.xAxis=this.map.getKey(e.xAxis):(this.processingErrors.push("[XYSeries ("+(this.name||"unnamed")+')] No axis with id "'+e.xAxis+'" found for `xAxis`.'),delete e.xAxis)),m.hasValue(e.yAxis)&&m.isString(e.yAxis)&&(this.map.hasKey(e.yAxis)?e.yAxis=this.map.getKey(e.yAxis):(this.processingErrors.push("[XYSeries ("+(this.name||"unnamed")+')] No axis with id "'+e.yAxis+'" found for `yAxis`.'),delete e.yAxis)),m.hasValue(e.axisRanges)&&m.isArray(e.axisRanges))for(var i=0,n=e.axisRanges.length;i=i.dataItems.length&&r--;for(var o=t.uid,a=void 0,s=void 0,u=n;u<=r;u++){var l=i.dataItems.getIndex(u);if(l){var h=l.seriesDataItems[o];if(h)for(var p=0;ps)&&(s=f)}}}}c.isNumber(a)?t.startIndex=a:t.start=i.start,c.isNumber(s)?t.endIndex=s+1:t.end=i.end,i._axisBreaks&&i._axisBreaks.length>0&&t.invalidateDataRange()}})},e.prototype.validate=function(){var e=this;t.prototype.validate.call(this);var i=this.dataItems.length,n=h.fitToRange(Math.floor(this.start*i-1),0,i),r=h.fitToRange(Math.ceil(this.end*i),0,i);this.renderer.invalid&&this.renderer.validate();var o=this.renderer.axisLength/this.renderer.minGridDistance,a=Math.min(this.dataItems.length,Math.ceil((r-n)/o));if(this._startIndex=Math.floor(n/a)*a,this._endIndex=Math.ceil(this.end*i),this.fixAxisBreaks(),this._startIndex==this._endIndex&&this._endIndex++,this._frequency=a,!(this.axisLength<=0)){this.maxZoomFactor=this.dataItems.length,this.dataItems.length<=0&&(this.maxZoomFactor=1),this.resetIterators(),n=h.max(0,this._startIndex-this._frequency),r=h.min(this.dataItems.length,this._endIndex+this._frequency);for(var s=0,u=0;uthis.ghostLabel.measuredWidth||r instanceof o.a&&e.label.measuredHeight>this.ghostLabel.measuredHeight)&&(e.label.html?this.ghostLabel.html=e.label.currentText:this.ghostLabel.text=e.label.currentText));var y=e.axisFill;y&&!y.disabled&&(e.isRange||(u=n+this._frequency,l=this.indexToPosition(n,y.location),h=this.indexToPosition(u,y.location)),r.updateFillElement(y,l,h),e.isRange||this.fillRule(e,i)),e.bullet&&r.updateBullet(e.bullet,p,d);var b=e.mask;b&&r.updateFillElement(b,l,h)},e.prototype.disposeData=function(){this.dataItemsByCategory.clear(),t.prototype.disposeData.call(this)},e.prototype.processDataItem=function(e,i){e&&(t.prototype.processDataItem.call(this,e,i),c.hasValue(e.category)&&this.dataItemsByCategory.setKey(e.category,e))},e.prototype.getDataItem=function(t){var e=t[this.dataFields.category];if(c.hasValue(e)){var i=this.dataItemsByCategory.getKey(e);return i||this.dataItems.create()}},e.prototype.indexToPosition=function(t,e){c.isNumber(e)||(e=.5);var i=this.startIndex,n=this.endIndex,r=this.adjustDifference(i,n),o=this.startLocation;if(r-=o,r-=1-this.endLocation,this._axisBreaks){var a=this._axisBreaks;p.eachContinue(a.iterator(),function(e){var r=e.adjustedStartValue,o=e.adjustedEndValue;if(to?i+=(o-r)*(1-a):t=0;i--){var n=t.dataItems.getIndex(i);if(t.xAxis==this&&n.categoryX==e)return n;if(t.yAxis==this&&n.categoryY==e)return n}},e.prototype.getSeriesDataItem=function(t,e,i){var n=this;if(c.isNumber(e)){var r=this.positionToIndex(e);r>=this.dataItems.length&&r--;var o=this.dataItems.getIndex(r);if(o){var a,s=o.category,u=t.dataItems.getIndex(r);if(u){if(t.xAxis==this&&u.categoryX==s)return u;if(t.yAxis==this&&u.categoryY==s)return u}return t.dataItems.each(function(e){t.xAxis==n&&e.categoryX==s&&(a||(a=e),Math.abs(r-a.index)>Math.abs(r-e.index)&&(a=e)),t.yAxis==n&&e.categoryY==s&&(a||(a=e),Math.abs(r-a.index)>Math.abs(r-e.index)&&(a=e))}),a}}},e.prototype.getX=function(t,e,i,n,r){var o=this.getPositionX(t,e,i,n,r);return c.isNaN(o)?this.basePoint.x:this.renderer.positionToPoint(o).x},e.prototype.getPositionX=function(t,e,i,n,r){var o;return c.hasValue(e)&&(o=this.categoryToPosition(t.categories[e],i)),r&&(o=h.fitToRange(o,r.start,r.end)),o},e.prototype.getY=function(t,e,i,n,r){var o=this.getPositionY(t,e,i,n,r);return c.isNaN(o)?this.basePoint.y:this.renderer.positionToPoint(o).y},e.prototype.getPositionY=function(t,e,i,n,r){var o;return c.hasValue(e)&&(o=this.categoryToPosition(t.categories[e],i)),r&&(o=h.fitToRange(o,r.start,r.end)),o},e.prototype.getAngle=function(t,e,i,n,r){var o=this.categoryToPosition(t.categories[e],i);return r&&(o=h.fitToRange(o,r.start,r.end)),this.positionToAngle(o)},e.prototype.getCellStartPosition=function(t){return this.roundPosition(t,0)},e.prototype.getCellEndPosition=function(t){return this.roundPosition(t,1)},e.prototype.getTooltipText=function(t){var e=this.dataItems.getIndex(this.positionToIndex(t));if(e)return this._adapterO?this._adapterO.apply("getTooltipText",e.category):e.category},e.prototype.positionToIndex=function(t){(t=h.round(t,10))<0&&(t=0),t>1&&(t=1);var e=this.startIndex,i=this.endIndex,n=i-e-this.startLocation-(1-this.endLocation);t+=1/n*this.startLocation;var r=null;if(this._axisBreaks){var o=this._axisBreaks;p.eachContinue(o.iterator(),function(o){var a=o.startPosition,s=o.endPosition,u=o.adjustedStartValue,l=o.adjustedEndValue;u=h.max(u,e),l=h.min(l,i);var c=o.breakSize;if(n-=(l-u)*(1-c),t>s)e+=(l-u)*(1-c);else if(!(t=this.dataItems.length&&(r=this.dataItems.length-1),r},e.prototype.positionToCategory=function(t){return this.getPositionLabel(t)},e.prototype.getPositionLabel=function(t){var e=this.dataItems.getIndex(this.positionToIndex(t));if(e)return e.category},Object.defineProperty(e.prototype,"basePoint",{get:function(){return this.renderer.positionToPoint(1)},enumerable:!0,configurable:!0}),e.prototype.initRenderer=function(){t.prototype.initRenderer.call(this),this.renderer.baseGrid.disabled=!0},Object.defineProperty(e.prototype,"frequency",{get:function(){return this._frequency},enumerable:!0,configurable:!0}),e}(r.a);s.b.registeredClasses.CategoryAxis=g,s.b.registeredClasses.CategoryAxisDataItem=f},VCCo:function(t,e,i){"use strict";var n=i("Gb1H"),r=i("FUSD"),o=i("vSjZ"),a=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);n(n.P+n.F*a,"String",{padStart:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},VGgz:function(t,e,i){"use strict";i.d(e,"a",function(){return u}),i.d(e,"c",function(){return l}),i.d(e,"b",function(){return h}),i.d(e,"d",function(){return c});var n=i("m4/l"),r=i("o0Lc"),o=i("hJ5i"),a=i("Wglt"),s=i("Mtpk"),u=function(){function t(t){this._values=[],this.events=new r.a,null!=t&&this.setAll(t)}return Object.defineProperty(t.prototype,"values",{get:function(){return this._values},enumerable:!0,configurable:!0}),t.prototype._insert=function(t){return this._values.push(t),this._values.length-1},Object.defineProperty(t.prototype,"length",{get:function(){return this._values.length},enumerable:!0,configurable:!0}),t.prototype.indexOf=function(t){return o.indexOf(this._values,t)},t.prototype.contains=function(t){return-1!==this.indexOf(t)},t.prototype.getIndex=function(t){return this._values[t]},Object.defineProperty(t.prototype,"first",{get:function(){return this._values[0]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"last",{get:function(){return this._values[this._values.length-1]},enumerable:!0,configurable:!0}),t.prototype.insert=function(t){var e=this._insert(t);this.events.isEnabled("inserted")&&this.events.dispatchImmediately("inserted",{type:"inserted",target:this,index:e,newValue:t})},t.prototype.remove=function(t){var e=this.indexOf(t);if(-1!==e){var i=this._values[e];o.removeIndex(this._values,e),this.events.isEnabled("removed")&&this.events.dispatchImmediately("removed",{type:"removed",target:this,index:e,oldValue:i})}},t.prototype.setAll=function(t){var e=this;o.eachReverse(this._values,function(t,i){e._values.pop(),e.events.isEnabled("removed")&&e.events.dispatchImmediately("removed",{type:"removed",target:e,index:i,oldValue:t})}),o.each(t,function(t){e.insert(t)})},t.prototype.clear=function(){this.setAll([])},t.prototype.slice=function(e,i){var n=new t;return n._values=this._values.slice(e,i),n},t.prototype.findClosestIndex=function(t,e,i){void 0===i&&(i="any");var n,r,o=-1,u=0;return a.eachContinue(this.iterator(),function(a){var l=e(a);if("any"===i){if(l===t)return o=u,!1;var h=Math.abs(t-l);(!s.hasValue(r)||r>h)&&(o=u,n=l,r=h)}else"left"===i&&l=t&&(!s.hasValue(n)||n>=l)&&(o=u,n=l);return++u,!0}),-1===o&&("left"===i?o=0:"right"===i&&(o=this.length-1)),o},t.prototype.iterator=function(){return a.fromArray(this._values)},t.prototype[Symbol.iterator]=function(){var t,e;return n.d(this,function(i){switch(i.label){case 0:t=this._values.length,e=0,i.label=1;case 1:return e10&&(i.properties.paddingLeft=10),t.pixelPaddingRight>10&&(i.properties.paddingRight=10),i}return null}}),v.c.push({relevant:v.b.heightXS,state:function(t,e){if(t instanceof _){var i=t.states.create(e);return t.pixelPaddingTop>10&&(i.properties.paddingTop=10),t.pixelPaddingBottom>10&&(i.properties.paddingBottom=10),i}return null}}),v.c.push({relevant:v.b.widthXXS,state:function(t,e){if(t instanceof _){var i=t.states.create(e);return i.properties.paddingLeft=0,i.properties.paddingRight=0,i}return null}}),v.c.push({relevant:v.b.heightXXS,state:function(t,e){if(t instanceof _){var i=t.states.create(e);return i.properties.paddingTop=0,i.properties.paddingBottom=0,i}return null}})},VYrJ:function(t,e,i){var n=i("OB1/")("keys"),r=i("7bL/");t.exports=function(t){return n[t]||(n[t]=r(t))}},Vk33:function(t,e,i){"use strict";i.d(e,"a",function(){return h});var n=i("m4/l"),r=i("FzPm"),o=i("aCit"),a=i("hGwe"),s=i("Gg2j"),u=i("v9UT"),l=i("aFzC"),h=function(t){function e(){var e=t.call(this)||this;return e.className="WavedCircle",e.element=e.paper.add("path"),e.waveLength=16,e.waveHeight=4,e.fill=void 0,e.fillOpacity=0,e.tension=.8,e.applyTheme(),e}return n.c(e,t),e.prototype.draw=function(){var t="",e=this.pixelRadius;if(e>0){var i=this.getPoints(e);t=a.moveTo(i[0])+new l.b(this.tension,this.tension).smooth(i)}var n=this.pixelInnerRadius;n>0&&((i=this.getPoints(n)).reverse(),t+=a.moveTo(i[0])+new l.b(this.tension,this.tension).smooth(i));this.path=t},e.prototype.getPoints=function(t){for(var e=t*Math.PI*2,i=this.waveHeight/2,n=e/Math.round(e/this.waveLength),r=n/2,o=[],a=e/n,u=0;u<=a;u++){var l=u*n/e*360,h=(u*n+r)/e*360;o.push({x:(t-i)*s.cos(l),y:(t-i)*s.sin(l)}),o.push({x:(t+i)*s.cos(h),y:(t+i)*s.sin(h)})}return o.pop(),o},Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!0,!1,10,!1),this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelInnerRadius",{get:function(){return u.relativeToValue(this.innerRadius,s.min(this.innerWidth/2,this.innerHeight/2))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"waveLength",{get:function(){return this.getPropertyValue("waveLength")},set:function(t){this.setPropertyValue("waveLength",t),this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"waveHeight",{get:function(){return this.getPropertyValue("waveHeight")},set:function(t){this.setPropertyValue("waveHeight",t),this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tension",{get:function(){return this.getPropertyValue("tension")},set:function(t){this.setPropertyValue("tension",t),this.invalidate()},enumerable:!0,configurable:!0}),e}(r.a);o.b.registeredClasses.WavedCircle=h},Vng0:function(t,e,i){var n=i("hjwn"),r=i("Wbjh");t.exports=i("gD3S")?function(t,e,i){return n.f(t,e,r(1,i))}:function(t,e,i){return t[e]=i,t}},Vs7R:function(t,e,i){"use strict";i.d(e,"b",function(){return R}),i.d(e,"a",function(){return L});var n=i("m4/l"),r=i("ux7t"),o=i("kQxV"),a=i("Tjl+"),s=i("x79X"),u=i("+qIf"),l=i("vMqJ"),h=i("hD5A"),c=i("1yyj"),p=i("P7v+"),d=i("C6dT"),f=i("ZLF9"),g=i("sxA1"),m=i("CuFa"),y=i("8ZqG"),b=i("zhwk"),v=i("qCRI"),x=i("Q4nc"),_=i("aCit"),P=i("CTEm"),w=i("7XB+"),O=i("akNo"),S=i("MipW"),T=i("P/bD"),C=i("GAaQ"),k=i("v9UT"),I=i("Gg2j"),D=i("ScGY"),V=i("hJ5i"),M=i("Qkdp"),j=i("Mtpk"),A=i("Wglt"),F=i("Rpw0"),E=i("tjMS"),R=["fill","fillOpacity","stroke","strokeOpacity","strokeWidth","strokeDasharray","strokeDashoffset"],L=function(t){function e(){var e=t.call(this)||this;return e.properties={},e._eventDispatcher=new o.a(e),e._bindings={},e._isTemplate=!1,e._isPath=!1,e._inited=!1,e._ready=!1,e.isHiding=!1,e._isHidden=!1,e.isShowing=!1,e.isStandaloneInstance=!1,e._isActive=!1,e._mask=new h.d,e._positionPrecision=3,e._language=new h.d,e._exporting=new h.d,e._exportable=!0,e._bbox={x:0,y:0,width:0,height:0},e.invalid=!1,e.positionInvalid=!1,e.propertyFields={},e.applyOnClones=!1,e.maxLeft=0,e.maxRight=0,e.maxTop=0,e.maxBottom=0,e.maxLeftSelf=0,e.maxRightSelf=0,e.maxTopSelf=0,e.maxBottomSelf=0,e._isDragged=!1,e._isResized=!1,e._disabled=!1,e._internalDisabled=!1,e._updateDisabled=!1,e._internalDefaultsApplied=!1,e.rollOutDelay=0,e.isBaseSprite=!1,e.shouldClone=!0,e.appeared=!1,e.ex=0,e.ey=0,e.dragWhileResize=!1,e.measureFailed=!1,e.className="Sprite",e._disposers.push(e._eventDispatcher),k.used(e.uid),e.group=e.paper.addGroup("g"),e.setPropertyValue("scale",1),e.setPropertyValue("rotation",0),e.setPropertyValue("align","none"),e.setPropertyValue("valign","none"),e.setPropertyValue("pixelPerfect",!1),e.setPropertyValue("visible",!0),e.setPropertyValue("tooltipPosition","fixed"),e.setPropertyValue("verticalCenter","none"),e.setPropertyValue("horizontalCenter","none"),e.setPropertyValue("tooltipX",Object(E.c)(50)),e.setPropertyValue("tooltipX",Object(E.c)(50)),e.setPropertyValue("marginTop",0),e.setPropertyValue("marginBottom",0),e.setPropertyValue("marginLeft",0),e.setPropertyValue("marginRight",0),e.setPropertyValue("dx",0),e.setPropertyValue("dy",0),e.setPropertyValue("paddingTop",0),e.setPropertyValue("paddingBottom",0),e.setPropertyValue("paddingRight",0),e.setPropertyValue("paddingLeft",0),e.setPropertyValue("togglable",!1),e.setPropertyValue("hidden",!1),e.setPropertyValue("urlTarget","_self"),e.setPropertyValue("alwaysShowTooltip",!1),e.setPropertyValue("showTooltipOn","hover"),e._prevMeasuredWidth=0,e._prevMeasuredHeight=0,e._measuredWidth=0,e._measuredHeight=0,e._isMeasured=!0,e.invalidate(),e.applyTheme(),e._disposers.push(e.events),e._disposers.push(e.group),e._disposers.push(e._mask),e._disposers.push(e._language),e._disposers.push(e._exporting),e._disposers.push(new h.b(function(){M.each(e._bindings,function(t,e){e.dispose()})})),e.setPropertyValue("interactionsEnabled",!0),e}return n.c(e,t),Object.defineProperty(e.prototype,"events",{get:function(){return this._eventDispatcher},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"adapter",{get:function(){return this._adapterO||(this._adapterO=new s.a(this)),this._adapterO},enumerable:!0,configurable:!0}),e.prototype.applyTheme=function(){t.prototype.applyTheme.call(this),x.a.autoSetClassName&&this.setClassName()},e.prototype.getCurrentThemes=function(){var t=this._themes;if(t)return t;var e=this.parent;return e?e.getCurrentThemes():_.b.themes},e.prototype.applyInternalDefaults=function(){this._internalDefaultsApplied=!0},e.prototype.invalidate=function(){this.disabled||this._isTemplate||this.invalid||(this.invalid=!0,_.b.addToInvalidSprites(this),F.b.requestFrame())},e.prototype.validate=function(){this.dispatchImmediately("beforevalidated"),this._internalDefaultsApplied||this.applyInternalDefaults(),this.beforeDraw(),this.draw(),this.invalid=!1,_.b.removeFromInvalidSprites(this),this.afterDraw()},e.prototype.invalidatePosition=function(){this.disabled||this._isTemplate||this.positionInvalid||(this.positionInvalid=!0,_.b.addToInvalidPositions(this),F.b.requestFrame())},e.prototype.validatePosition=function(){var t=this.pixelX,e=this.pixelY,i=this.dx,n=this.dy,r=t+i,o=e+n;this._updateDisabled&&(this._internalDisabled?this.group.attr({display:"none"}):this.disabled||this.removeSVGAttribute("display"),this._updateDisabled=!1);var a=this.measure(),s=this.group.transformString;this.group.moveTo({x:r,y:o}),this.group.rotation=this.rotation,this.nonScaling?this.group.scale=this.scale/this.globalScale:this.group.scale=this.scale,(s!=this.group.transformString||a)&&(null==s?this.dispatch("transformed"):this.dispatchImmediately("transformed"),this.dispatch("positionchanged"),"hit"!=this.showTooltipOn&&"always"!=this.showTooltipOn||this.updateTooltipPosition()),t+i==r&&e+n==o&&(_.b.removeFromInvalidPositions(this),this.positionInvalid=!1);var u=this._maskRectangle;u&&this._clipElement.moveTo({x:u.x-t,y:u.y-e})},e.prototype.beforeDraw=function(){},e.prototype.draw=function(){},e.prototype.afterDraw=function(){if((this.isMeasured||"none"!==this.horizontalCenter||"none"!==this.verticalCenter)&&this.measureElement(),this._inited)this.dispatch("validated");else{if(this._adapterO)try{for(var t=n.g(this._adapterO.keys()),e=t.next();!e.done;e=t.next()){var i=e.value;switch(i){case"mask":case"fill":case"opacity":case"fillOpacity":case"stroke":case"strokeOpacity":case"strokeWidth":case"shapeRendering":case"strokeDasharray":case"strokeDashoffset":case"strokeLinecap":case"strokeLinejoin":case"textDecoration":case"fontSize":case"fontFamily":case"fontWeight":this[i]=this[i]}}}catch(t){r={error:t}}finally{try{e&&!e.done&&(o=t.return)&&o.call(t)}finally{if(r)throw r.error}}this.applyFilters(),this.visible=this.visible,this.interactionsEnabled=this.getPropertyValue("interactionsEnabled"),this._inited=!0,this.showOnInit||(this.appeared=!0),this.hidden&&this.hide(0),this.applyMask(),this.dispatch("validated"),this.dispatch("inited"),this.dispatchReady()}var r,o;"always"==this.showTooltipOn&&(!this.visible||this.disabled||this.__disabled?this.hideTooltip(0):this.showTooltip())},e.prototype.dispatchReady=function(){this.isReady()||(this._ready=!0,this.dispatch("ready"))},e.prototype.reinit=function(){this._inited=!1,this.setState(this.defaultState),this.invalidate()},e.prototype.handleGlobalScale=function(){this.dispatch("globalscalechanged"),this.nonScalingStroke&&(this.strokeWidth=this.strokeWidth),this.nonScaling&&this.validatePosition(),this.updateFilterScale()},e.prototype.updateFilterScale=function(){var t=this;A.each(this.filters.iterator(),function(e){e.scale=t.globalScale})},e.prototype.removeFromInvalids=function(){_.b.removeFromInvalidSprites(this),_.b.removeFromInvalidPositions(this)},e.prototype.copyFrom=function(e){var i=this;t.prototype.copyFrom.call(this,e),this.isMeasured=e.isMeasured,this.states.copyFrom(e.states),e.filters.length>0&&e.filters.each(function(t){i.filters.push(t.clone())}),e._adapterO&&this.adapter.copyFrom(e._adapterO),e._interaction&&this.interactions.copyFrom(e.interactions),e._plugins&&this.plugins.copyFrom(e.plugins),this.configField=e.configField,this.applyOnClones=e.applyOnClones,this.disabled=e.disabled,this.virtualParent=e.virtualParent,this.exportable=e.exportable,e._tooltip&&(this._tooltip?this._tooltip.copyFrom(e.tooltip):this.tooltip=e.tooltip.clone()),this._showSystemTooltip=e.showSystemTooltip,k.copyProperties(e.propertyFields,this.propertyFields),k.copyProperties(e.properties,this),e.fillModifier&&(this.fillModifier=e.fillModifier.clone()),e.strokeModifier&&(this.strokeModifier=e.strokeModifier.clone())},e.prototype.dispose=function(){if(!this.isDisposed()){if(this.dispatchImmediately("beforedisposed"),this.isBaseSprite){if(this.htmlContainer)for(;this.htmlContainer.childNodes.length>0;)this.htmlContainer.removeChild(this.htmlContainer.firstChild);this.isBaseSprite=!1}if(t.prototype.dispose.call(this),this._adapterO&&this._adapterO.clear(),this.applyOnClones&&this._clones)for(var e=this._clones.length-1;e>=0;e--){this._clones.getIndex(e).dispose()}this._svgContainer&&this._svgContainer.dispose(),this._interactionDisposer&&(this._interactionDisposer.dispose(),this._interactionDisposer=void 0),this._urlDisposer&&this._urlDisposer.dispose(),this.removeFromInvalids(),this.element&&this.element.dispose(),this.group&&this.group.dispose(),this._numberFormatter&&this._numberFormatter.dispose(),this._focusFilter&&this._focusFilter.dispose();var i=this.stroke;!i||i instanceof y.a||!i.dispose||this.clonedFrom&&this.clonedFrom.stroke==i||i.dispose();var n=this.fill;if(!n||n instanceof y.a||!n.dispose||this.clonedFrom&&this.clonedFrom.fill==n||n.dispose(),j.hasValue(this.id)&&this.map.removeKey(this.id),this.parent=void 0,this._filters)for(;this._filters.length>0;){var r=this._filters.getIndex(0);r.dispose(),this._filters.removeValue(r)}this._alwaysShowDisposers=void 0}},Object.defineProperty(e.prototype,"isTemplate",{get:function(){return this._isTemplate},set:function(t){t=j.toBoolean(t),this._isTemplate!=t&&(this._isTemplate=t,this instanceof d.a&&A.each(this.children.iterator(),function(e){e.isTemplate=t}),t?(this.parent=this.parent,this.removeFromInvalids()):this.invalidate())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"showSystemTooltip",{get:function(){return j.hasValue(this._showSystemTooltip)?this._showSystemTooltip:this.virtualParent?this.virtualParent.showSystemTooltip:!!this.parent&&this.parent.showSystemTooltip},set:function(t){t=j.toBoolean(t),this._showSystemTooltip!=t&&(this._showSystemTooltip=t,this.applyAccessibility())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"topParent",{get:function(){return this._topParent?this._topParent:this.parent?this.parent.topParent:void 0},set:function(t){this._topParent=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"parent",{get:function(){return this._parent},set:function(t){if(!this._isTemplate){k.used(this.paper);var e=this._parent;e!=t&&(e&&e.children.removeValue(this),this._parent=t,t?(this.topParent=t.topParent,t.isTemplate&&(this.isTemplate=!0),this.baseId=t.baseId,t.children.push(this),this._tooltip&&!this._tooltipContainer&&(this._tooltip.parent=t.tooltipContainer),this._dataItem||(this.dataItem=t.dataItem),this.handleAlwaysShowTooltip(),this.dispatchImmediately("parentset")):this.topParent=void 0)}},enumerable:!0,configurable:!0}),e.prototype.handleAlwaysShow=function(){this.showTooltip()},e.prototype.handleAlwaysShowTooltip=function(){var t=this,e=this._alwaysShowDisposers;if(e&&V.each(e,function(t){t.dispose()}),this._alwaysShowDisposers=[],"always"==this.showTooltipOn)for(;void 0!=t;){var i=t.events.on("visibilitychanged",this.handleAlwaysShow,this,!1);this.addDisposer(i),this._alwaysShowDisposers.push(i),t=t.parent}},Object.defineProperty(e.prototype,"virtualParent",{get:function(){return this._virtualParent},set:function(t){this._virtualParent=t},enumerable:!0,configurable:!0}),e.prototype.appendDefs=function(){this.filterElement&&this.paper.appendDef(this.filterElement);var t=this.fill;t&&t.element&&this.paper.appendDef(t.element);var e=this.stroke;if(e&&e.element&&this.paper.appendDef(e.element),this.fillModifier&&this.fill instanceof y.a){var i=this.fillModifier.modify(this.fill);i&&i.element&&this.paper.appendDef(i.element)}if(this.strokeModifier&&this.stroke instanceof y.a){var n=this.strokeModifier.modify(this.stroke);n&&n.element&&this.paper.appendDef(n.element)}this._clipPath&&this.paper.appendDef(this._clipPath),!1===this._exportable&&(this.exportable=!1)},Object.defineProperty(e.prototype,"map",{get:function(){var t=this.topParent;return t?t.map:(this._map||(this._map=new u.a),this._map)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"id",{get:function(){return this._id},set:function(t){if(this._id!=t){if(this._id=t,this.map.hasKey(t))throw Error("Duplicate id ("+t+") used on multiple objects.");this.map.setKey(t,this),x.a.autoSetClassName&&this.setClassName()}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dom",{get:function(){return this.group.node},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"paper",{get:function(){return this._paper?this._paper:this.parent?this.parent.paper:Object(p.b)()},set:function(t){this.setPaper(t)},enumerable:!0,configurable:!0}),e.prototype.setPaper=function(t){return this._paper!=t&&(this._paper=t,this.appendDefs(),!0)},Object.defineProperty(e.prototype,"htmlContainer",{get:function(){return this._htmlContainer?this._htmlContainer:this.parent?this.parent.htmlContainer:void 0},set:function(t){this._htmlContainer=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"titleElement",{get:function(){return this._titleElement||(this._titleElement=this.paper.add("title"),this.group.add(this._titleElement)),this._titleElement},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"descriptionElement",{get:function(){return this._descriptionElement||(this._descriptionElement=this.paper.add("desc"),this.group.add(this._descriptionElement)),this._descriptionElement},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"filters",{get:function(){return this._filters||(this._filters=new l.b,this._disposers.push(this._filters.events.onAll(this.applyFilters,this)),this._disposers.push(new l.c(this._filters))),this._filters},enumerable:!0,configurable:!0}),e.prototype.setSVGAttributes=function(){this.fill=this.fill,this.opacity=this.opacity,this.fillOpacity=this.fillOpacity,this.stroke=this.stroke,this.strokeOpacity=this.strokeOpacity,this.shapeRendering=this.shapeRendering,this.strokeDasharray=this.strokeDasharray,this.strokeDashoffset=this.strokeDashoffset,this.strokeLinecap=this.strokeLinecap,this.strokeLinejoin=this.strokeLinejoin,this.focusable=this.focusable,this.tabindex=this.tabindex,this.role=this.role},e.prototype.setSVGAttribute=function(t){this.group.attr(t)},e.prototype.removeSVGAttribute=function(t){this.group.removeAttr(t)},e.prototype.setClassName=function(){var t=this.className,e=x.a.classNamePrefix;this.element&&this.element.addClass(e+t),this.group.addClass(e+t+"-group"),j.hasValue(this.id)&&this.group.addClass(e+this.id)},e.prototype.uidAttr=function(){return this.setSVGAttribute({id:this.uid}),this.uid},e.prototype.updateClipPath=function(){var t=this._clipElement;t&&t.moveTo({x:this.mask.pixelX,y:this.mask.pixelY})},e.prototype.createClipPath=function(){if(!this._clipPath){this._clipPath=this.paper.addGroup("clipPath"),this.paper.appendDef(this._clipPath),this._disposers.push(this._clipPath);var t=_.b.getUniqueId();this._clipPath.attr({id:t}),this.group.attr({"clip-path":'url("'+k.getBaseURI()+t+'")'})}},e.prototype.applyMask=function(){var t=this.mask;if(this._clipPath&&t)if(t instanceof d.a){this._clipElement.attr({width:I.max(0,t.pixelWidth),height:I.max(0,t.pixelHeight)});var e=k.spritePointToSprite({x:t.pixelX,y:t.pixelY},t.parent,this);this._clipPath.x=e.x,this._clipPath.y=e.y}else t.element&&t.element!=this._clipElement&&(this._clipElement=t.element,this._clipPath.add(this._clipElement)),this._clipPath.scale=t.scale,this._clipPath.x=t.pixelX,this._clipPath.y=t.pixelY,this._clipPath.rotation=t.rotation},e.prototype.applyFilters=function(){var t=this;if(this._filters&&this._filters.length>0){var e=100,i=100;this.filterElement?this.filterElement.removeChildNodes():(this.filterElement=this.paper.addGroup("filter"),this._disposers.push(this.filterElement)),this.paper.appendDef(this.filterElement);var n="filter-"+this.uid;this.filterElement.attr({id:n}),A.each(this.filters.iterator(),function(n){n.sprite=t,n.paper=t.paper,n.appendPrimitives(t.filterElement),n.width>e&&(e=n.width),n.height>i&&(i=n.height),n.scale=t.globalScale});var r=e+"%",o=i+"%";this.filterElement.attr({width:r,height:o,x:-(e-100)/2+"%",y:-(i-100)/2+"%"}),this.group.attr({filter:'url("'+k.getBaseURI()+n+'")'})}else this.filterElement&&(this.group.removeAttr("filter"),this.filterElement.removeChildNodes())},e.prototype.removeClipPath=function(){this._clipPath&&(this.removeDispose(this._clipPath),this._clipPath=void 0)},e.prototype.setElement=function(t){this.element=t,this.setSVGAttributes(),this.applyAccessibility()},Object.defineProperty(e.prototype,"element",{get:function(){return this._element},set:function(t){this.removeElement(),this._element=t,this.group.add(t),t.node instanceof SVGPathElement&&(this._isPath=!0),this.invalid||this.validate(),x.a.autoSetClassName&&this.setClassName()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"svgContainer",{get:function(){return this._svgContainer?this._svgContainer:this.parent?this.parent.svgContainer:void 0},set:function(t){this._svgContainer=t},enumerable:!0,configurable:!0}),e.prototype.measureElement=function(){if(this.element)if(this.definedBBox)this._bbox=this.definedBBox;else{var t=this.element.getBBox();this._bbox={x:t.x,y:t.y,width:t.width,height:t.height}}},e.prototype.updateCenter=function(){if(this.element){var t=this.element.transformString,e=this.bbox,i=0,n=0,r=e.x,o=e.y,a=e.width,s=e.height,u=this.pixelPaddingLeft,l=this.pixelPaddingRight,h=this.pixelPaddingTop,c=this.pixelPaddingBottom,p=I.max(a+u+l,this.pixelWidth),d=I.max(s+h+c,this.pixelHeight),f=e.x,g=e.x+p,m=e.y,y=e.y+d,b=this.horizontalCenter,v=this.verticalCenter;switch(b){case"none":i=r+u;break;case"left":i=u;break;case"middle":i=u-(a+l+u)/2;break;case"right":i=-l-a}switch(v){case"none":n=o+h;break;case"top":n=h;break;case"middle":n=h-(s+c+h)/2;break;case"bottom":n=-c-s}this._measuredHeight=d,this._measuredWidth=p;var x=I.round(i-r,this._positionPrecision,!0),_=I.round(n-o,this._positionPrecision,!0);this.ex=x-u,this.ey=_-h,this.maxLeft=f+x-u,this.maxRight=g+x-u,this.maxTop=m+_-h,this.maxBottom=y+_-h,this.pixelPerfect&&(x-=.5,_-=.5),this.element.moveTo({x:x,y:_}),t!=this.element.transformString&&this.dispatchImmediately("transformed")}},e.prototype.measure=function(){this.updateCenter();var t=this._measuredWidth,e=this._measuredHeight,i=this.maxLeft,n=this.maxRight,r=this.maxTop,o=this.maxBottom;this._measuredWidthSelf=t,this._measuredHeightSelf=e;var a=this._positionPrecision;if(this.maxLeftSelf=this.maxLeft,this.maxRightSelf=this.maxRight,this.maxTopSelf=this.maxTop,this.maxBottomSelf=this.maxBottom,0!==this.rotation||1!==this.scale){this.nonScalingStroke&&(this.strokeWidth=this.strokeWidth);var s=this.paper.svg,u=s.createSVGMatrix(),l=this.rotation;u.a=I.cos(l)*this.scale,u.c=-I.sin(l)*this.scale,u.e=0,u.b=I.sin(l)*this.scale,u.d=I.cos(l)*this.scale,u.f=0;var h=s.createSVGPoint();h.x=i,h.y=r;var c=s.createSVGPoint();c.x=n,c.y=r;var p=s.createSVGPoint();p.x=n,p.y=o;var d=s.createSVGPoint();d.x=i,d.y=o;var f=h.matrixTransform(u),g=c.matrixTransform(u),m=p.matrixTransform(u),y=d.matrixTransform(u);i=Math.min(f.x,g.x,m.x,y.x),n=Math.max(f.x,g.x,m.x,y.x),r=Math.min(f.y,g.y,m.y,y.y),t=n-i,e=(o=Math.max(f.y,g.y,m.y,y.y))-r,this.maxLeft=I.round(i,a,!0),this.maxRight=I.round(n,a,!0),this.maxTop=I.round(r,a,!0),this.maxBottom=I.round(o,a,!0)}return this._measuredWidth=I.round(t,a,!0),this._measuredHeight=I.round(e,a,!0),(this._measuredWidth!=this._prevMeasuredWidth||this._measuredHeight!=this._prevMeasuredHeight)&&(this._prevMeasuredHeight=this._measuredHeight,this._prevMeasuredWidth=this._measuredWidth,this.dispatch("sizechanged"),(this.isHover||"hit"==this.showTooltipOn||"always"==this.showTooltipOn)&&this.tooltip&&this.tooltip.visible&&(j.hasValue(this.tooltipText)||j.hasValue(this.tooltipHTML))&&this.updateTooltipPosition(),!0)},e.prototype.insertBefore=function(t){var e=this.parent;if(e){var i=e.children.indexOf(t);-1!==i&&(e.children.moveValue(this,i),e.sortChildren())}return this},e.prototype.insertAfter=function(t){var e=this.parent;if(e){var i=e.children.indexOf(t);-1!==i&&(e.children.moveValue(this,i+1),e.sortChildren())}return this},e.prototype.removeElement=function(){this._element&&(this.removeDispose(this._element),this._element=void 0)},e.prototype.getRelativeX=function(t){return t instanceof E.a?t.value:this.parent?t/this.parent.innerWidth:0},e.prototype.getRelativeY=function(t){return t instanceof E.a?t.value:this.parent?t/this.parent.innerHeight:0},e.prototype.getPixelX=function(t){var e=0;if(j.isNumber(t))e=t;else if(t instanceof E.a){var i=t.value;this.parent&&(e=I.round(this.parent.innerWidth*i,this._positionPrecision,!0))}return e},e.prototype.getPixelY=function(t){var e=0;if(j.isNumber(t))e=t;else if(t instanceof E.a){var i=t.value;this.parent&&(e=I.round(this.parent.innerHeight*i,this._positionPrecision,!0))}return e},e.prototype.moveTo=function(t,e,i,n){this.isDragged&&!n||(t&&(j.isNumber(t.x)&&this.setPropertyValue("x",t.x),j.isNumber(t.y)&&this.setPropertyValue("y",t.y)),j.isNumber(e)&&(this.rotation=e),j.isNumber(i)&&(this.scale=i),this.invalidatePosition())},Object.defineProperty(e.prototype,"mask",{get:function(){return this._adapterO?this._adapterO.apply("mask",this._mask.get()):this._mask.get()},set:function(t){var e=this;this._mask.get()!==t&&(t?(this.createClipPath(),t instanceof d.a?this._clipElement=this.paper.add("rect"):(t.isMeasured=!1,t.element&&(this._clipElement=t.element)),this._clipElement&&this._clipPath.add(this._clipElement),this._mask.set(t,new h.c([t.events.on("maxsizechanged",function(){e.inited&&e.applyMask()},void 0,!1),t.events.on("validated",this.applyMask,this,!1),t.events.on("positionchanged",this.applyMask,this,!1)])),this.applyMask()):(this._mask.reset(),this.group.removeAttr("clip-path"),this.removeClipPath()))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maskRectangle",{get:function(){return this._maskRectangle},set:function(t){t?(this.createClipPath(),this._clipElement||(this._clipElement=this.paper.add("rect"),this._clipPath.add(this._clipElement)),this._clipElement.attr({width:t.width,height:t.height})):(this.removeClipPath(),this._clipElement=void 0),this._maskRectangle=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isMeasured",{get:function(){return this._isMeasured},set:function(t){(t=j.toBoolean(t))||(this._measuredWidth=0,this._measuredHeight=0),this._isMeasured!=t&&(this._isMeasured=t,this.invalidatePosition())},enumerable:!0,configurable:!0}),e.prototype.hitTest=function(t){this.invalid&&this.validate(),t.invalid&&t.validate();var e=this.pixelX,i=this.pixelY,n=e+this.measuredWidth,r=i+this.measuredHeight,o=t.pixelX,a=t.pixelY,s=o+t.measuredWidth,u=a+t.measuredHeight;return!(o>n||sr||u0&&((n=this.animate(o,e,i))&&!n.isFinished()?this._disposers.push(n.events.on("animationended",function(){r.dispatchImmediately("transitionended")})):this.dispatchImmediately("transitionended")),t.filters.length>0){var s=[];A.each(t.filters.iterator(),function(t){var n=t.clone();s.push(n);var o=[];A.each(r.filters.iterator(),function(t){t.className==n.className&&(A.contains(r.defaultState.filters.iterator(),function(t){return t.className===n.className})||r.defaultState.filters.push(t),M.each(n.properties,function(e,i){var n=t.properties[e];n!=i&&o.push({property:e,from:n,to:i})}))}),n.animate(o,e,i)}),this.filters.clear(),this.filters.pushAll(s)}return n},e.prototype.isInTransition=function(){return this.animations.length>0},Object.defineProperty(e.prototype,"isHover",{get:function(){return!!this.isInteractive()&&this.interactions.isHover},set:function(t){(t=j.toBoolean(t))!==this.isHover&&this.isInteractive()&&(this.interactions.isHover=t,t?this.handleOver():this.handleOut())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isDragged",{get:function(){return this._isDragged},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isResized",{get:function(){return this._isResized},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isDown",{get:function(){return!!this.isInteractive()&&this.interactions.isDown},set:function(t){t=j.toBoolean(t),this.isInteractive()&&this.isDown!=t&&(this.interactions.isDown=t,t?this.handleDown():this.handleUp())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isFocused",{get:function(){return!!this.isInteractive()&&this.interactions.isFocused},set:function(t){t=j.toBoolean(t),this.focusable&&this.isFocused!=t&&this.isInteractive()&&(this.interactions.isFocused=t,!0===t?this.handleFocus():this.handleBlur())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isActive",{get:function(){return this._isActive},set:function(t){this.setActive(t)},enumerable:!0,configurable:!0}),e.prototype.setActive=function(t){t=j.toBoolean(t),this._isActive!==t&&(this._isActive=t,t&&this.states.hasKey("active")?(this.setState("active"),this.isHover&&this.states.hasKey("hoverActive")&&this.setState("hoverActive")):this.applyCurrentState(),this.dispatchImmediately("toggled"))},Object.defineProperty(e.prototype,"disabled",{get:function(){var t=this.getPropertyValue("disabled");return j.hasValue(t)?t:this.virtualParent?this.virtualParent.disabled:!!this.parent&&this.parent.disabled},set:function(t){this.setDisabled(t)},enumerable:!0,configurable:!0}),e.prototype.setDisabled=function(t){if(t=j.toBoolean(t),this.getPropertyValue("disabled")!=t){if(this.setPropertyValue("disabled",t,!0),t)this.parent=this.parent,this.removeFromInvalids(),this.group.attr({display:"none"}),this.dispatch("disabled");else{if(this.parent){var e=this.parent.element;e.hasChild(this.group)||e.add(this.group)}this instanceof d.a?this.deepInvalidate():this.invalidate(),this.__disabled||this.removeSVGAttribute("display"),this.dispatch("enabled")}return this.dispatch("transformed"),F.b.requestFrame(),!0}return!1},Object.defineProperty(e.prototype,"__disabled",{get:function(){return this._internalDisabled},set:function(t){this._internalDisabled!=t&&(this._internalDisabled=t,this._updateDisabled=!0,this.invalidatePosition())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"numberFormatter",{get:function(){return this._numberFormatter?this._numberFormatter:this.virtualParent?this.virtualParent.numberFormatter:this.parent?this.parent.numberFormatter:(this._numberFormatter=new P.a,this._numberFormatter.language=this.language,this.numberFormatter)},set:function(t){this._numberFormatter=t,this._numberFormatter.language=this.language},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dateFormatter",{get:function(){return this._dateFormatter?this._dateFormatter:this.virtualParent?this.virtualParent.dateFormatter:this.parent?this.parent.dateFormatter:(this._dateFormatter=new w.a,this._dateFormatter.language=this.language,this.dateFormatter)},set:function(t){this._dateFormatter=t,this._dateFormatter.language=this.language},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"durationFormatter",{get:function(){return this._durationFormatter?this._durationFormatter:this.virtualParent?this.virtualParent.durationFormatter:this.parent?this.parent.durationFormatter:(this._durationFormatter=new O.a,this._durationFormatter.language=this.language,this.durationFormatter)},set:function(t){this._durationFormatter=t,this._durationFormatter.language=this.language},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"language",{get:function(){var t=this._language.get();return t||(this.virtualParent?this.virtualParent.language:this.parent?this.parent.language:(t=new T.a,this.language=t,t))},set:function(t){var e=this;this._language.get()!==t&&this._language.set(t,t.events.on("localechanged",function(t){if(e._numberFormatter&&(e._numberFormatter.language=e.language),e._dateFormatter&&(e._dateFormatter.language=e.language),e._durationFormatter&&(e._durationFormatter.language=e.language),e._exporting.get()){var i=e._exporting.get();i.numberFormatter.language=e.language,i.dateFormatter.language=e.language,i.durationFormatter.language=e.language,i.language=e.language}e instanceof d.a&&e.deepInvalidate()}))},enumerable:!0,configurable:!0}),e.prototype.populateString=function(t,e){if(j.hasValue(t)){t=j.castString(t);var i=(t=Object(S.b)().escape(t)).match(/\{([^}]+)\}/g),n=void 0;if(i)for(n=0;n-1||void 0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"inertiaOptions",{get:function(){return!this.interactions.inertiaOptions&&this.parent?this.parent.inertiaOptions:this.interactions.inertiaOptions},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"draggable",{get:function(){return this.getPropertyValue("draggable")},set:function(t){var e=this;t=j.toBoolean(t),this.setPropertyValue("draggable",t)&&(t||this.isInteractive())&&(this.applyCursorStyle(),this.interactions.draggable=t,this.interactions.setEventDisposer("sprite-draggable",t,function(){return new h.c([e.events.on("down",e.handleDown,e,!1),e.events.on("dragstart",e.handleDragStart,e,!1),e.events.on("drag",e.handleDragMove,e,!1),e.events.on("dragstop",e.handleDragStop,e,!1)])}))},enumerable:!0,configurable:!0}),e.prototype.handleDragStart=function(t){this.interactions.isTouchProtected&&t.touch||(this.interactions.originalPosition={x:this.pixelX,y:this.pixelY},this._isDragged=!0,this.hideTooltip(0))},e.prototype.dragStart=function(t){this._isDragged=!0,Object(b.b)().dragStart(this.interactions,t)},e.prototype.handleDragStop=function(t){this.interactions.isTouchProtected&&t.touch||(this._isDragged=!1,this.showTooltip(),this.interactions.originalPosition=void 0)},e.prototype.dragStop=function(t){this._isDragged=!1,Object(b.b)().dragStop(this.interactions,t)},e.prototype.handleDragMove=function(t){if(!this.interactions.isTouchProtected||!t.touch){var e=this.interactions.originalPosition;if(e&&this._isDragged){var i=this.parent.globalScale*this.svgContainer.cssScale;this.moveTo({x:e.x+t.shift.x/i,y:e.y+t.shift.y/i},void 0,void 0,!0)}this.dispatchImmediately("dragged",t)}},Object.defineProperty(e.prototype,"inert",{get:function(){return this.getPropertyValue("inert")},set:function(t){t=j.toBoolean(t),this.setPropertyValue("inert",t)&&(t||this.isInteractive())&&(this.interactions.inert=t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hoverOptions",{get:function(){if(!this.interactions.hoverOptions){if(this.virtualParent)return this.virtualParent.hoverOptions;if(this.parent)return this.parent.hoverOptions}return this.interactions.hoverOptions},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hoverable",{get:function(){return this.getPropertyValue("hoverable")},set:function(t){var e=this;t=j.toBoolean(t),this.setPropertyValue("hoverable",t)&&(t||this.isInteractive())&&(this.applyCursorStyle(),this.interactions.hoverable=t,this.interactions.setEventDisposer("sprite-hoverable",t,function(){return new h.c([e.events.on("over",e.handleOver,e,!1),e.events.on("out",e.handleOut,e,!1)])}))},enumerable:!0,configurable:!0}),e.prototype.handleOver=function(t){if(this._outTimeout&&this._outTimeout.dispose(),this.isHover){this.states.hasKey("hover")&&(this.isHidden||this.applyCurrentState());var e=void 0;t&&t.pointer&&(e=k.documentPointToSvg(t.pointer.point,this.svgContainer.SVGContainer,this.svgContainer.cssScale)),"hover"==this.showTooltipOn&&this.showTooltip(e)}else"hover"==this.showTooltipOn&&this.hideTooltip(),!this.isHidden&&this.states.hasKey("hover")&&this.applyCurrentState()},e.prototype.handleOut=function(t){var e=this;this.tooltip&&this.tooltip.targetSprite==this&&this.tooltip.keepTargetHover?this._outTimeout=this.setTimeout(function(){e.tooltip.isHover||(e.tooltip.targetSprite==e&&e.hideTooltip(),e._outTimeout=e.setTimeout(e.handleOutReal.bind(e),e.rollOutDelay))},10):("hover"==this.showTooltipOn&&this.hideTooltip(),this._outTimeout=this.setTimeout(this.handleOutReal.bind(this),this.rollOutDelay))},e.prototype.handleOutReal=function(){this.isHidden||this.isHiding||!this.states.hasKey("hover")||this.applyCurrentState()},Object.defineProperty(e.prototype,"hitOptions",{get:function(){if(!this.interactions.hitOptions){if(this.virtualParent)return this.virtualParent.hitOptions;if(this.parent)return this.parent.hitOptions}return this.interactions.hitOptions},enumerable:!0,configurable:!0}),e.prototype.handleDown=function(t){1===this.interactions.downPointers.length&&(this.interactions.originalPosition={x:this.pixelX,y:this.pixelY},this.interactions.originalAngle=this.rotation,this.interactions.originalScale=this.scale,this.states.hasKey("down")&&this.setState("down"))},e.prototype.handleUp=function(t){var e=this;this._isResized=!1,this.states.hasKey("down")&&this.applyCurrentState(),"hit"==this.showTooltipOn&&(this.showTooltip(),this._disposers.push(Object(b.b)().body.events.once("down",function(t){e.hideTooltip()})))},Object.defineProperty(e.prototype,"clickable",{get:function(){return this.getPropertyValue("clickable")},set:function(t){var e=this;t=j.toBoolean(t),this.setPropertyValue("clickable",t)&&(t||this.isInteractive())&&(this.applyCursorStyle(),this.interactions.clickable=t,this.interactions.setEventDisposer("sprite-clickable",t,function(){return new h.c([e.events.on("down",e.handleDown,e,!1),e.events.on("up",e.handleUp,e,!1)])}))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"togglable",{get:function(){return this.getPropertyValue("togglable")},set:function(t){var e=this;t=j.toBoolean(t),this.setPropertyValue("togglable",t)&&(t||this.isInteractive())&&this.interactions.setEventDisposer("sprite-togglable",t,function(){return e.events.on("hit",e.handleToggle,e,!1)})},enumerable:!0,configurable:!0}),e.prototype.handleToggle=function(t){this.isActive=!this.isActive},Object.defineProperty(e.prototype,"contextMenuDisabled",{get:function(){return this.getPropertyValue("contextMenuDisabled")},set:function(t){t=j.toBoolean(t),this.setPropertyValue("contextMenuDisabled",t)&&(this.interactions.contextMenuDisabled=t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"url",{get:function(){return this.getPropertyValue("url")},set:function(t){this.setPropertyValue("url",t)&&(this._urlDisposer&&this._urlDisposer.dispose(),k.isNotEmpty(t)&&(this._urlDisposer=this.events.on("hit",this.urlHandler,this,!1),this.clickable=!0,this.cursorOverStyle=v.a.pointer))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"baseId",{get:function(){return!this._baseId&&this.parent&&(this.baseId=this.parent.baseId),this._baseId},set:function(t){this.setBaseId(t)},enumerable:!0,configurable:!0}),e.prototype.setBaseId=function(t){t!=this._baseId&&(this.invalid&&(this.invalid=!1,_.b.removeFromInvalidSprites(this),this.invalidate()),this._baseId=t)},Object.defineProperty(e.prototype,"baseSprite",{get:function(){return this.isBaseSprite?this:this.parent?this.parent.baseSprite:void 0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"urlTarget",{get:function(){return this.getPropertyValue("urlTarget")},set:function(t){this.setPropertyValue("urlTarget",t)},enumerable:!0,configurable:!0}),e.prototype.urlHandler=function(t){if(k.isNotEmpty(this.url)){var e=this.populateString(this.url);"_self"===this.urlTarget?window.location.href=e:window.open(e,this.urlTarget)}},Object.defineProperty(e.prototype,"swipeOptions",{get:function(){if(!this.interactions.swipeOptions){if(this.virtualParent)return this.virtualParent.swipeOptions;if(this.parent)return this.parent.swipeOptions}return this.interactions.swipeOptions},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"swipeable",{get:function(){return this.getPropertyValue("swipeable")},set:function(t){t=j.toBoolean(t),this.setPropertyValue("swipeable",t)&&(this.applyCursorStyle(),(t||this.isInteractive())&&(this.interactions.swipeable=t))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"trackable",{get:function(){return this.getPropertyValue("trackable")},set:function(t){t=j.toBoolean(t),this.setPropertyValue("trackable",t)&&(t||this.isInteractive())&&(this.applyCursorStyle(),this.interactions.trackable=t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"wheelable",{get:function(){return this.getPropertyValue("wheelable")},set:function(t){this.setPropertyValue("wheelable",t)&&(t||this.isInteractive())&&(this.applyCursorStyle(),this.interactions.wheelable=t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"resizable",{get:function(){return this.getPropertyValue("resizable")},set:function(t){var e=this;t=j.toBoolean(t),this.setPropertyValue("resizable",t)&&(t||this.isInteractive())&&(this.applyCursorStyle(),this.interactions.resizable=t,this.interactions.setEventDisposer("sprite-resizable",t,function(){return new h.c([e.events.on("down",e.handleDown,e,!1),e.events.on("resize",e.handleResize,e,!1)])}))},enumerable:!0,configurable:!0}),e.prototype.handleResize=function(t){if((!this.interactions.isTouchProtected||!t.touch)&&(this._isResized=!0,this.scale=this.interactions.originalScale*t.scale,this.validatePosition(),this.draggable||this.dragWhileResize)){this._isDragged=!1;var e=k.documentPointToSvg(t.point1,this.htmlContainer,this.svgContainer.cssScale),i=k.documentPointToSvg(t.point2,this.htmlContainer,this.svgContainer.cssScale),n=I.getMidPoint(e,i),r=k.documentPointToSprite(t.startPoint1,this.parent),o=k.documentPointToSprite(t.startPoint2,this.parent),a=this.interactions.originalPosition,s=this.interactions.originalScale;if(a){var u={x:(r.x-a.x)/s,y:(r.y-a.y)/s},l={x:(o.x-a.x)/s,y:(o.y-a.y)/s},h=I.getMidPoint(u,l),c=k.svgPointToSprite(n,this.parent);this.moveTo({x:c.x-h.x*this.scale,y:c.y-h.y*this.scale},void 0,void 0,!0)}}},Object.defineProperty(e.prototype,"cursorOptions",{get:function(){if(!this.interactions.cursorOptions){if(this.virtualParent)return this.virtualParent.cursorOptions;if(this.parent)return this.parent.cursorOptions}return this.interactions.cursorOptions},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"cursorOverStyle",{set:function(t){this.cursorOptions.overStyle||(this.interactions.cursorOptions={defaultStyle:this.cursorOptions.defaultStyle}),this.cursorOptions.overStyle=t,Object(b.b)().applyCursorOverStyle(this.interactions)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"cursorDownStyle",{set:function(t){this.cursorOptions.downStyle=t},enumerable:!0,configurable:!0}),e.prototype.applyCursorStyle=function(){},Object.defineProperty(e.prototype,"interactionsEnabled",{get:function(){return!1!==this.getPropertyValue("interactionsEnabled")&&(this.virtualParent?this.virtualParent.interactionsEnabled:!this.parent||this.parent.interactionsEnabled)},set:function(t){if(t=j.toBoolean(t),this.setPropertyValue("interactionsEnabled",t)){var e=null;t?this.group.node.style.pointerEvents="":e="none",this.group.node.style.pointerEvents=e}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"exporting",{get:function(){return this.getExporting()},set:function(t){this._exporting.set(t,t)},enumerable:!0,configurable:!0}),e.prototype.getExporting=function(){var t=this._exporting.get();return t||(!this.isStandaloneInstance&&this.parent?this.parent.exporting:((t=new C.a(this.svgContainer.SVGContainer)).sprite=this,t.language=this.language,t.numberFormatter=this.numberFormatter,t.dateFormatter=this.dateFormatter,t.durationFormatter=this.durationFormatter,this._exporting.set(t,t),t))},Object.defineProperty(e.prototype,"exportable",{get:function(){return this._exportable},set:function(t){var e=this.svgContainer;this._exportable=t,e&&(t?V.remove(e.nonExportableSprites,this):-1==V.indexOf(e.nonExportableSprites,this)&&e.nonExportableSprites.push(this))},enumerable:!0,configurable:!0}),e.prototype.modalPrefix=function(t){return t=x.a.classNamePrefix+t},Object.defineProperty(e.prototype,"modal",{get:function(){var t=this.svgContainer;if(t){var e=t.modal;return e.adapter.has("classPrefix",this.modalPrefix)||e.adapter.add("classPrefix",this.modalPrefix),e}},enumerable:!0,configurable:!0}),e.prototype.openModal=function(t,e){var i=this.svgContainer;if(i)return i.openModal(t,e)},e.prototype.closeModal=function(){var t=this.svgContainer;t&&t.closeModal()},Object.defineProperty(e.prototype,"popups",{get:function(){var t=this.svgContainer;if(t){var e=t.popups;return e.template.sprite=this,e.template.adapter.has("classPrefix",this.modalPrefix)||e.template.adapter.add("classPrefix",this.modalPrefix),e}},enumerable:!0,configurable:!0}),e.prototype.openPopup=function(t,e){var i=this.svgContainer;if(i)return i.openPopup(t,e)},e.prototype.closeAllPopups=function(){var t=this.svgContainer;t&&t.closeAllPopups()},Object.defineProperty(e.prototype,"x",{get:function(){return this.getPropertyValue("x")},set:function(t){this.isDragged||this.setPercentProperty("x",t,!1,!0,this._positionPrecision,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelX",{get:function(){var t=I.fitToRange(this.getPixelX(this.x),this.minX,this.maxX);return this._adapterO?this._adapterO.apply("pixelX",t):t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"relativeX",{get:function(){return this._adapterO?this._adapterO.apply("relativeX",this.getRelativeX(this.x)):this.getRelativeX(this.x)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"minX",{get:function(){return this.getPropertyValue("minX")},set:function(t){j.isNumber(t)&&(t=I.round(t,this._positionPrecision,!0),this.setPropertyValue("minX",t,!1,!0))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maxX",{get:function(){return this.getPropertyValue("maxX")},set:function(t){j.isNumber(t)&&(t=I.round(t,this._positionPrecision,!0),this.setPropertyValue("maxX",t,!1,!0))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"y",{get:function(){return this.getPropertyValue("y")},set:function(t){this.isDragged||this.setPercentProperty("y",t,!1,!0,this._positionPrecision,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelY",{get:function(){var t=I.fitToRange(this.getPixelY(this.y),this.minY,this.maxY);return this._adapterO?this._adapterO.apply("pixelY",t):t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"relativeY",{get:function(){return this._adapterO?this._adapterO.apply("relativeY",this.getRelativeX(this.y)):this.getRelativeX(this.y)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"minY",{get:function(){return this.getPropertyValue("minY")},set:function(t){j.isNumber(t)&&(t=I.round(t,this._positionPrecision,!0),this.setPropertyValue("minY",t,!1,!0))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maxY",{get:function(){return this.getPropertyValue("maxY")},set:function(t){j.isNumber(t)&&(t=I.round(t,this._positionPrecision,!0),this.setPropertyValue("maxY",t,!1,!0))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dx",{get:function(){return this.getPropertyValue("dx")},set:function(t){j.isNumber(t)&&(t=I.round(t,this._positionPrecision,!0),this.setPropertyValue("dx",t,!1,!0))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dy",{get:function(){return this.getPropertyValue("dy")},set:function(t){j.isNumber(t)&&(t=I.round(t,this._positionPrecision,!0),this.setPropertyValue("dy",t,!1,!0))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"rotation",{get:function(){return this.getPropertyValue("rotation")},set:function(t){t=j.toNumber(t),j.isNumber(t)||(t=0),this.setPropertyValue("rotation",t,!1,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"align",{get:function(){return this.getPropertyValue("align")},set:function(t){t=j.toText(t),this.setPropertyValue("align",t)&&this.parent&&this.parent.invalidateLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"valign",{get:function(){return this.getPropertyValue("valign")},set:function(t){t=j.toText(t),this.setPropertyValue("valign",t)&&this.parent&&this.parent.invalidateLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"horizontalCenter",{get:function(){return this.getPropertyValue("horizontalCenter")},set:function(t){t=j.toText(t),this.setPropertyValue("horizontalCenter",t)&&this.updateCenter()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"verticalCenter",{get:function(){return this.getPropertyValue("verticalCenter")},set:function(t){t=j.toText(t),this.setPropertyValue("verticalCenter",t)&&this.updateCenter()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maxWidth",{get:function(){var t=this.getPropertyValue("maxWidth");return!j.isNumber(t)&&this.parent?this.parent.maxWidth:t},set:function(t){this.setMaxWidth(t)},enumerable:!0,configurable:!0}),e.prototype.setMaxWidth=function(t){var e=this.maxWidth,i=this.maxHeight;if(this.setPropertyValue("maxWidth",t)){j.isNumber(this.relativeWidth)&&this.invalidate();var n={type:"maxsizechanged",target:this,previousWidth:e,previousHeight:i};this.dispatchImmediately("maxsizechanged",n)}},Object.defineProperty(e.prototype,"maxHeight",{get:function(){var t=this.getPropertyValue("maxHeight");return!j.isNumber(t)&&this.parent?this.parent.maxHeight:t},set:function(t){this.setMaxHeight(t)},enumerable:!0,configurable:!0}),e.prototype.setMaxHeight=function(t){var e=this.maxWidth,i=this.maxHeight;if(this.setPropertyValue("maxHeight",t)){j.isNumber(this.relativeHeight)&&this.invalidate();var n={type:"maxsizechanged",target:this,previousWidth:e,previousHeight:i};this.dispatchImmediately("maxsizechanged",n)}},Object.defineProperty(e.prototype,"minWidth",{get:function(){return this.getPropertyValue("minWidth")},set:function(t){this.setPropertyValue("minWidth",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"minHeight",{get:function(){return this.getPropertyValue("minHeight")},set:function(t){this.setPropertyValue("minHeight",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"width",{get:function(){return this.getPropertyValue("width")},set:function(t){this.setPercentProperty("width",t,!0,!1,this._positionPrecision,!0)&&(this.percentWidth=void 0,this.relativeWidth=void 0,t instanceof E.a?(this.percentWidth=t.percent,j.isNumber(this._pixelWidth)&&(this.maxWidth=void 0),this._pixelWidth=void 0):(this._pixelWidth=Number(t),this.maxWidth=this._pixelWidth),this.invalidatePosition())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"height",{get:function(){return this.getPropertyValue("height")},set:function(t){this.setPercentProperty("height",t,!0,!1,this._positionPrecision,!0)&&(this.percentHeight=void 0,this._relativeHeight=void 0,t instanceof E.a?(this.percentHeight=t.percent,j.isNumber(this._pixelHeight)&&(this.maxHeight=void 0),this._pixelHeight=void 0):(this._pixelHeight=Number(t),this.maxHeight=this._pixelHeight),this.invalidatePosition())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelWidth",{get:function(){var t;t=j.isNumber(this.percentWidth)?this.maxWidth:j.isNumber(this._pixelWidth)?this._pixelWidth:0;var e=this.minWidth;null!=e&&tt?e:t}var l=function(){function t(t,e){this.createNewItems=!1,this.list=t,this._create=e,this.reset()}return t.prototype.reset=function(){this._listCopy=o(this.list.iterator())},t.prototype.clear=function(){this._listCopy.length=0},t.prototype.getFirst=function(){return this.returnItem(0)},t.prototype.getLast=function(){return this.returnItem(this._listCopy.length-1)},t.prototype.find=function(t){var e=n.findIndex(this._listCopy,t);if(-1!==e){var i=this._listCopy[e];return n.remove(this._listCopy,i),i}return this.getLast()},t.prototype.removeItem=function(t){return n.remove(this._listCopy,t)},t.prototype.returnItem=function(t){if(t>=0&&t0;)this.data.shift(),e--;this.invalidateData()},e.prototype.removeData=function(t){if(x.isNumber(t)){for(;t>0;){var e=this.mainDataSet.getIndex(0);e&&this.mainDataSet.remove(e),this.dataUsers.each(function(t){if(!t.data||0==t.data.length){var e=t.dataItems.getIndex(0);e&&t.dataItems.remove(e)}}),this.data.shift(),this._parseDataFrom>0&&this._parseDataFrom--,t--}this.invalidateData()}},e.prototype.invalidateData=function(){this.disabled||this.isTemplate||(d.b.addToInvalidComponents(this),c.b.requestFrame(),this.dataInvalid=!0,b.each(this.dataUsers.iterator(),function(t){t.invalidateDataItems()}))},e.prototype.invalidateDataUsers=function(){b.each(this.dataUsers.iterator(),function(t){t.invalidate()})},e.prototype.invalidateDataItems=function(){this.disabled||this.isTemplate||(g.move(d.b.invalidDataItems,this),c.b.requestFrame(),this.dataItemsInvalid=!0,b.each(this.dataUsers.iterator(),function(t){t.invalidateDataItems()}))},e.prototype.invalidateDataRange=function(){this.disabled||this.isTemplate||(this.dataRangeInvalid=!0,g.move(d.b.invalidDataRange,this),c.b.requestFrame())},e.prototype.validateDataRange=function(){g.remove(d.b.invalidDataRange,this),this.dataRangeInvalid=!1,this.startIndex==this._prevStartIndex&&this.endIndex==this._prevEndIndex||(this.rangeChangeUpdate(),this.appendDataItems(),this.invalidate(),this.dispatchImmediately("datarangechanged"))},e.prototype.sliceData=function(){this._workingStartIndex=this.startIndex,this._workingEndIndex=this.endIndex},e.prototype.rangeChangeUpdate=function(){this.sliceData(),this._prevStartIndex=this.startIndex,this._prevEndIndex=this.endIndex},e.prototype.appendDataItems=function(){for(var t=this.endIndex,e=this.startIndex;e0&&this.disposeData(),this.data.length>0){var e=this.preloader;b.each(this.dataUsers.iterator(),function(t){t._startIndex=void 0,t._endIndex=void 0});for(var i=0,n=Date.now(),r=this._parseDataFrom,o=this.data.length,a=function(){var t=s.data[r];if(s._usesData){var o=s.getDataItem(t);s.processDataItem(o,t)}if((s.dataUsers.each(function(e){if(0==e.data.length){var i=e.getDataItem(t);e.processDataItem(i,t)}}),100==++i)&&(i=0,Date.now()-n>s.parsingStepDuration&&r.5&&!e.visible||(e.progress=r/s.data.length)),s.dataValidationProgress=r/s.data.length,r=s.data.length,s.invalidateData(),{value:void 0}},s=this;r0&&this.invalidateData()},e.prototype.getDataSource=function(t){var e=this;return x.hasValue(this._dataSources[t])||(this._dataSources[t]=new l.a,this._dataSources[t].component=this,this.setDataSourceEvents(this._dataSources[t],t),this._dataSources[t].adapter.add("dateFields",function(t){return e.dataSourceDateFields(t)}),this._dataSources[t].adapter.add("numberFields",function(t){return e.dataSourceNumberFields(t)}),this.events.on("inited",function(){e.loadData(t)},this,!1)),this._dataSources[t]},Object.defineProperty(e.prototype,"dataSource",{get:function(){return this._dataSources.data||this.getDataSource("data"),this._dataSources.data},set:function(t){var e=this;this._dataSources.data&&this.removeDispose(this._dataSources.data),this._dataSources.data=t,this._dataSources.data.component=this,this.events.on("inited",function(){e.loadData("data")},this,!1),this.setDataSourceEvents(t,"data")},enumerable:!0,configurable:!0}),e.prototype.loadData=function(t){this._dataSources[t].load()},e.prototype.dataSourceDateFields=function(t){return t},e.prototype.dataSourceNumberFields=function(t){return t},e.prototype.populateDataSourceFields=function(t,e,i){return g.each(i,function(i){e[i]&&-1===g.indexOf(t,e[i])&&t.push(e[i])}),t},e.prototype.setDataSourceEvents=function(t,e){var i=this;t.events.on("started",function(t){var e=i.preloader;e&&(e.progress=0)},void 0,!1),t.events.on("loadstarted",function(t){var e=i.preloader;e&&(e.progress=.25)},void 0,!1),t.events.on("loadended",function(t){var e=i.preloader;e&&(e.progress=.5)},void 0,!1),t.events.on("parseended",function(t){var e=i.preloader;e&&(e.progress=.75)},void 0,!1),t.events.on("ended",function(t){var e=i.preloader;e&&(e.progress=1)},void 0,!1),t.events.on("error",function(t){var e=i.preloader;e&&(e.progress=1),i.openModal(t.message)},void 0,!1),e&&t.events.on("done",function(n){var r=i.preloader;r&&(r.progress=1),"data"!=e||x.isArray(n.data)||(n.data=[n.data]),t.incremental&&"data"==e&&i.data.length?i.addData(n.data,t.keepCount?n.data.length:0):t.updateCurrentData&&"data"==e&&i.data.length?(g.each(i.data,function(t,e){x.hasValue(n.data[e])&&v.each(t,function(i,r){x.hasValue(n.data[e][i])&&(t[i]=n.data[e][i])})}),i.invalidateRawData()):i[e]=n.data})},Object.defineProperty(e.prototype,"responsive",{get:function(){return this._responsive||(this._responsive=new h.a,this._responsive.component=this),this._responsive},set:function(t){this._responsive=t,this._responsive.component=this},enumerable:!0,configurable:!0}),e.prototype.zoom=function(t,e,i,n){var r=this;void 0===e&&(e=!1),void 0===i&&(i=!1);var o=t.start,a=t.end,s=t.priority;if("end"==s&&1==a&&0!=o&&othis.end&&(s="end"),x.isNumber(n)||(n=this.maxZoomDeclination),!x.isNumber(o)||!x.isNumber(a))return{start:this.start,end:this.end};if(this._finalStart!=o||this._finalEnd!=a){var u=this.maxZoomFactor/this.minZoomCount,l=this.maxZoomFactor/this.maxZoomCount;if("start"==s?(this.maxZoomCount>0&&1/(a-o)u&&(a=o+1/u),a>1&&a-o<1/u&&(o=a-1/u)):(this.maxZoomCount>0&&1/(a-o)u&&(o=a-1/u),o<0&&a-o<1/u&&(a=o+1/u)),o<-n&&(o=-n),1/(a-o)>u&&(a=o+1/u),a>1+n&&(a=1+n),1/(a-o)>u&&(o=a-1/u),this._finalEnd=a,this._finalStart=o,this.skipRangeEvent=e,this.rangeChangeDuration>0&&!i){var h=this.rangeChangeAnimation;if(h&&h.progress<1){var c=h.animationOptions;if(c.length>1){if(c[0].to==o&&c[1].to==a)return{start:o,end:a};h.isDisposed()||h.stop()}}this.dispatchImmediately("rangechangestarted"),this.rangeChangeAnimation&&this.rangeChangeAnimation.kill(),h=this.animate([{property:"start",to:o},{property:"end",to:a}],this.rangeChangeDuration,this.rangeChangeEasing),this.rangeChangeAnimation=h,h&&!h.isFinished()?h.events.on("animationended",function(){r.dispatchImmediately("rangechangeended")}):this.dispatchImmediately("rangechangeended")}else this.start=o,this.end=a}return{start:o,end:a}},e.prototype.zoomToIndexes=function(t,e,i,n){if(x.isNumber(t)&&x.isNumber(e)){var r=t/this.dataItems.length,o=e/this.dataItems.length;this.zoom({start:r,end:o},i,n)}},Object.defineProperty(e.prototype,"zoomFactor",{get:function(){return f.fitToRange(1/(this.end-this.start),1,this.maxZoomFactor)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maxZoomFactor",{get:function(){return this.getPropertyValue("maxZoomFactor")},set:function(t){this.setPropertyValue("maxZoomFactor",t)&&(1==t&&(this.maxZoomDeclination=0),this.invalidateDataRange())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maxZoomDeclination",{get:function(){return this.getPropertyValue("maxZoomDeclination")},set:function(t){this.setPropertyValue("maxZoomDeclination",t)&&this.invalidateDataRange()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"startIndex",{get:function(){return x.isNumber(this._startIndex)||(this._startIndex=0),this._startIndex},set:function(t){this._startIndex=f.fitToRange(Math.round(t),0,this.dataItems.length),this.start=this.indexToPosition(this._startIndex)},enumerable:!0,configurable:!0}),e.prototype.indexToPosition=function(t){return t/this.dataItems.length},Object.defineProperty(e.prototype,"endIndex",{get:function(){var t=this.dataItems.length;return(!x.isNumber(this._endIndex)||this._endIndex>t)&&(this._endIndex=t),this._endIndex},set:function(t){this._endIndex=f.fitToRange(Math.round(t),0,this.dataItems.length),this.end=this.indexToPosition(this._endIndex)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"start",{get:function(){return this._adapterO?this._adapterO.apply("start",this._start):this._start},set:function(t){if(this._start!=t){this._start=t;var e=Math.max(0,Math.floor(this.dataItems.length*t)||0);this._startIndex=Math.min(e,this.dataItems.length),this.invalidateDataRange(),this.invalidate(),this.dispatchImmediately("startchanged"),this.dispatch("startendchanged")}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"end",{get:function(){return this._adapterO?this._adapterO.apply("end",this._end):this._end},set:function(t){this._end!=t&&(this._end=t,this._endIndex=Math.min(this.dataItems.length,Math.ceil(this.dataItems.length*t)||0),this.invalidateDataRange(),this.invalidate(),this.dispatchImmediately("endchanged"),this.dispatch("startendchanged"))},enumerable:!0,configurable:!0}),e.prototype.removeFromInvalids=function(){t.prototype.removeFromInvalids.call(this),d.b.removeFromInvalidComponents(this),g.remove(d.b.invalidDataItems,this),g.remove(d.b.invalidDataRange,this),g.remove(d.b.invalidRawDatas,this)},Object.defineProperty(e.prototype,"dataItems",{get:function(){if(""!=this._currentDataSetId){var t=this.dataSets.getKey(this._currentDataSetId);if(t)return t}return this._dataItems},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dataSets",{get:function(){return this._dataSets||(this._dataSets=new s.a),this._dataSets},enumerable:!0,configurable:!0}),e.prototype.setDataSet=function(t){if(this._currentDataSetId!=t){if(this.dataSets.getKey(t))return this.dataItems.each(function(t){t.__disabled=!0}),this._currentDataSetId=t,this.invalidateDataRange(),this._prevStartIndex=void 0,this.dataItems.each(function(t){t.__disabled=!1}),!0;if(""!=this._currentDataSetId)return this.dataItems.each(function(t){t.__disabled=!0}),this._currentDataSetId="",this.invalidateDataRange(),this._prevStartIndex=void 0,this.dataItems.each(function(t){t.__disabled=!1}),!0}return!1},Object.defineProperty(e.prototype,"currentDataSetId",{get:function(){return this._currentDataSetId},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"mainDataSet",{get:function(){return this._dataItems},enumerable:!0,configurable:!0}),e.prototype._updateDataItemIndexes=function(t){for(var e=this.mainDataSet.values,i=e.length,n=t;nr;)q(t,i=n[r++],e[i]);return t},Q=function(t){var e=N.call(this,t=w(t,!0));return!(this===W&&o(H,t)&&!o(G,t))&&(!(e||!o(this,t)||!o(H,t)||o(this,R)&&this[R][t])||e)},$=function(t,e){if(t=P(t),e=w(e,!0),t!==W||!o(H,e)||o(G,e)){var i=V(t,e);return!i||!o(H,e)||o(t,R)&&t[R][e]||(i.enumerable=!0),i}},tt=function(t){for(var e,i=j(P(t)),n=[],r=0;i.length>r;)o(H,e=i[r++])||e==R||e==l||n.push(e);return n},et=function(t){for(var e,i=t===W,n=j(i?G:P(t)),r=[],a=0;n.length>a;)!o(H,e=n[a++])||i&&!o(W,e)||r.push(H[e]);return r};U||(u((A=function(){if(this instanceof A)throw TypeError("Symbol is not a constructor!");var t=d(arguments.length>0?arguments[0]:void 0);return a&&Y&&X(W,t,{configurable:!0,set:function e(i){this===W&&e.call(G,i),o(this,R)&&o(this[R],t)&&(this[R][t]=!1),X(this,t,O(1,i))}}),K(t)}).prototype,"toString",function(){return this._k}),C.f=$,I.f=q,i("rkh7").f=T.f=tt,i("eBSV").f=Q,k.f=et,a&&!i("pb4Y")&&u(W,"propertyIsEnumerable",Q,!0),g.f=function(t){return K(f(t))}),s(s.G+s.W+s.F*!U,{Symbol:A});for(var it="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),nt=0;it.length>nt;)f(it[nt++]);for(var rt=D(f.store),ot=0;rt.length>ot;)m(rt[ot++]);s(s.S+s.F*!U,"Symbol",{for:function(t){return o(B,t+="")?B[t]:B[t]=A(t)},keyFor:function(t){if(!Z(t))throw TypeError(t+" is not a symbol!");for(var e in B)if(B[e]===t)return e},useSetter:function(){Y=!0},useSimple:function(){Y=!1}}),s(s.S+s.F*!U,"Object",{create:function(t,e){return void 0===e?S(t):J(S(t),e)},defineProperty:q,defineProperties:J,getOwnPropertyDescriptor:$,getOwnPropertyNames:tt,getOwnPropertySymbols:et});var at=h(function(){k.f(1)});s(s.S+s.F*at,"Object",{getOwnPropertySymbols:function(t){return k.f(_(t))}}),F&&s(s.S+s.F*(!U||h(function(){var t=A();return"[null]"!=E([t])||"{}"!=E({a:t})||"{}"!=E(Object(t))})),"JSON",{stringify:function(t){for(var e,i,n=[t],r=1;arguments.length>r;)n.push(arguments[r++]);if(i=e=n[1],(x(e)||void 0!==t)&&!Z(t))return b(e)||(e=function(t,e){if("function"==typeof i&&(e=i.call(this,t,e)),!Z(e))return e}),n[1]=e,E.apply(F,n)}}),A.prototype[L]||i("Vng0")(A.prototype,L,A.prototype.valueOf),p(A,"Symbol"),p(Math,"Math",!0),p(r.JSON,"JSON",!0)},YEtG:function(t,e,i){var n=i("OB1/")("wks"),r=i("7bL/"),o=i("T9LF").Symbol,a="function"==typeof o;(t.exports=function(t){return n[t]||(n[t]=a&&o[t]||(a?o:r)("Symbol."+t))}).store=n},YF4K:function(t,e,i){var n=i("Gb1H");n(n.S,"Math",{DEG_PER_RAD:Math.PI/180})},YJIw:function(t,e,i){"use strict";function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}if(i("gD3S")){var r=i("pb4Y"),o=i("T9LF"),a=i("AEc5"),s=i("Gb1H"),u=i("xSzy"),l=i("LNZc"),h=i("20m4"),c=i("ypVE"),p=i("Wbjh"),d=i("Vng0"),f=i("cA+3"),g=i("4BRe"),m=i("FmWr"),y=i("bytU"),b=i("UwWU"),v=i("W0fk"),x=i("U3hN"),_=i("MfZA"),P=i("DvJ+"),w=i("vJiZ"),O=i("a8UT"),S=i("5+SK"),T=i("K0ev"),C=i("rkh7").f,k=i("iOZG"),I=i("7bL/"),D=i("YEtG"),V=i("dstF"),M=i("mntN"),j=i("QXbb"),A=i("2/6D"),F=i("9BM3"),E=i("ID9o"),R=i("vdWU"),L=i("lgQj"),N=i("y2pX"),B=i("hjwn"),H=i("nHHr"),G=B.f,W=H.f,U=o.RangeError,z=o.TypeError,Y=o.Uint8Array,X=Array.prototype,K=l.ArrayBuffer,Z=l.DataView,q=V(0),J=V(2),Q=V(3),$=V(4),tt=V(5),et=V(6),it=M(!0),nt=M(!1),rt=A.values,ot=A.keys,at=A.entries,st=X.lastIndexOf,ut=X.reduce,lt=X.reduceRight,ht=X.join,ct=X.sort,pt=X.slice,dt=X.toString,ft=X.toLocaleString,gt=D("iterator"),mt=D("toStringTag"),yt=I("typed_constructor"),bt=I("def_constructor"),vt=u.CONSTR,xt=u.TYPED,_t=u.VIEW,Pt=V(1,function(t,e){return Ct(j(t,t[bt]),e)}),wt=a(function(){return 1===new Y(new Uint16Array([1]).buffer)[0]}),Ot=!!Y&&!!Y.prototype.set&&a(function(){new Y(1).set({})}),St=function(t,e){var i=g(t);if(i<0||i%e)throw U("Wrong offset!");return i},Tt=function(t){if(P(t)&&xt in t)return t;throw z(t+" is not a typed array!")},Ct=function(t,e){if(!(P(t)&&yt in t))throw z("It is not a typed array constructor!");return new t(e)},kt=function(t,e){return It(j(t,t[bt]),e)},It=function(t,e){for(var i=0,n=e.length,r=Ct(t,n);n>i;)r[i]=e[i++];return r},Dt=function(t,e,i){G(t,e,{get:function(){return this._d[i]}})},Vt=function(t){var e,i,n,r,o,a,s=w(t),u=arguments.length,l=u>1?arguments[1]:void 0,c=void 0!==l,p=k(s);if(void 0!=p&&!O(p)){for(a=p.call(s),n=[],e=0;!(o=a.next()).done;e++)n.push(o.value);s=n}for(c&&u>2&&(l=h(l,arguments[2],2)),e=0,i=m(s.length),r=Ct(this,i);i>e;e++)r[e]=c?l(s[e],e):s[e];return r},Mt=function(){for(var t=0,e=arguments.length,i=Ct(this,e);e>t;)i[t]=arguments[t++];return i},jt=!!Y&&a(function(){ft.call(new Y(1))}),At=function(){return ft.apply(jt?pt.call(Tt(this)):Tt(this),arguments)},Ft={copyWithin:function(t,e){return N.call(Tt(this),t,e,arguments.length>2?arguments[2]:void 0)},every:function(t){return $(Tt(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return L.apply(Tt(this),arguments)},filter:function(t){return kt(this,J(Tt(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return tt(Tt(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return et(Tt(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){q(Tt(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return nt(Tt(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return it(Tt(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return ht.apply(Tt(this),arguments)},lastIndexOf:function(t){return st.apply(Tt(this),arguments)},map:function(t){return Pt(Tt(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return ut.apply(Tt(this),arguments)},reduceRight:function(t){return lt.apply(Tt(this),arguments)},reverse:function(){for(var t,e=Tt(this).length,i=Math.floor(e/2),n=0;n1?arguments[1]:void 0)},sort:function(t){return ct.call(Tt(this),t)},subarray:function(t,e){var i=Tt(this),n=i.length,r=b(t,n);return new(j(i,i[bt]))(i.buffer,i.byteOffset+r*i.BYTES_PER_ELEMENT,m((void 0===e?n:b(e,n))-r))}},Et=function(t,e){return kt(this,pt.call(Tt(this),t,e))},Rt=function(t){Tt(this);var e=St(arguments[1],1),i=this.length,n=w(t),r=m(n.length),o=0;if(r+e>i)throw U("Wrong length!");for(;o255?255:255&r),o.v[p](i*e+o.o,r,wt)}(this,i,t)},enumerable:!0})};v?(f=i(function(t,i,n,r){c(t,f,l,"_d");var o,a,s,u,h=0,p=0;if(P(i)){if(!(i instanceof K||"ArrayBuffer"==(u=_(i))||"SharedArrayBuffer"==u))return xt in i?It(f,i):Vt.call(f,i);o=i,p=St(n,e);var g=i.byteLength;if(void 0===r){if(g%e)throw U("Wrong length!");if((a=g-p)<0)throw U("Wrong length!")}else if((a=m(r)*e)+p>g)throw U("Wrong length!");s=a/e}else s=y(i),o=new K(a=s*e);for(d(t,"_d",{b:o,o:p,l:a,e:s,v:new Z(o)});h0&&e.length>0){var r=s.moveTo({x:t[0].x-.2,y:t[0].y-.2})+s.moveTo(t[0])+new h.b(i,n).smooth(t);0==this.strokeOpacity||0==this.strokeSprite.strokeOpacity||(this.strokeSprite.path=r),(this.fillOpacity>0||this.fillSprite.fillOpacity>0)&&(r+=s.lineTo(e[0])+new h.b(i,n).smooth(e),r+=s.lineTo(t[0]),r+=s.closePath(),this.fillSprite.path=r)}else this.fillSprite.path="",this.strokeSprite.path=""},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e);var i=this.strokeSprite;u.copyProperties(e,i.properties,o.b),i.events.copyFrom(e.strokeSprite.events),i.fillOpacity=0;var n=this.fillSprite;u.copyProperties(e,n.properties,o.b),n.events.copyFrom(e.fillSprite.events),n.strokeOpacity=0},e}(r.a);a.b.registeredClasses.LineSeriesSegment=c},Ybtf:function(t,e,i){"use strict";i.d(e,"a",function(){return a});var n=i("m4/l"),r=i("FzPm"),o=i("aCit"),a=function(t){function e(){var e=t.call(this)||this;return e.className="Ellipse",e.element=e.paper.add("ellipse"),e.applyTheme(),e}return n.c(e,t),e.prototype.draw=function(){t.prototype.draw.call(this),this.element.attr({rx:this.radius}),this.element.attr({ry:this.radiusY})},Object.defineProperty(e.prototype,"radiusY",{get:function(){return this.innerHeight/2},set:function(t){this.height=2*t,this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){return this.innerWidth/2},set:function(t){this.width=2*t,this.invalidate()},enumerable:!0,configurable:!0}),e}(r.a);o.b.registeredClasses.Ellipse=a},YnyG:function(t,e,i){var n=i("Gb1H"),r=i("K0ev"),o=i("snR7");n(n.S,"Reflect",{getPrototypeOf:function(t){return r(o(t))}})},YotE:function(t,e,i){"use strict";i.d(e,"a",function(){return a});var n=i("m4/l"),r=i("o0Lc"),o=i("hD5A"),a=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._domEvents={},e}return n.c(e,t),e.prototype._addDOMEvent=function(t,e,i,n){var r=this;if(!this._domEvents[t]){var a=function(t){i.call(n,e,t)};this.target.element.addEventListener(t,a,!1),this._domEvents[t]=new o.a(function(){delete r._domEvents[t],r.target.element.removeEventListener(t,a,!1)})}return this._domEvents[t].increment()},e.prototype._dispatchKeyboardEvent=function(t,e){this.target.events.isEnabled(t)&&this.target.events.dispatchImmediately(t,{type:t,target:this.target,event:e})},e.prototype._on=function(e,i,n,r,a,s){var u=t.prototype._on.call(this,e,i,n,r,a,s),l=[u.disposer];switch(i){case"hit":case"doublehit":case"rightclick":case"down":case"up":this.target.clickable=!0;break;case"drag":case"dragstart":case"dragstop":this.target.draggable=!0;break;case"track":this.target.trackable=!0;break;case"resize":this.target.resizable=!0;break;case"swipe":case"swipeleft":case"swiperight":this.target.swipeable=!0;break;case"wheel":case"wheelup":case"wheeldown":case"wheelleft":case"wheelright":this.target.wheelable=!0;break;case"over":case"out":this.target.hoverable=!0;break;case"focus":case"blur":case"focusin":case"focusout":this.target.focusable=!0;break;case"keydown":case"keyup":case"keypress":case"input":l.push(this._addDOMEvent(i,i,this._dispatchKeyboardEvent,this))}return u.disposer=new o.c(l),u},e}(r.b)},YxCF:function(t,e,i){"use strict";var n=i("oGmz")(!0);t.exports=function(t,e,i){return e+(i?n(t,e).length:1)}},ZLF9:function(t,e,i){"use strict";i.d(e,"a",function(){return d});var n=i("m4/l"),r=i("Tjl+"),o=i("P7v+"),a=i("vMqJ"),s=i("1yyj"),u=i("aCit"),l=i("MIZb"),h=i("Wglt"),c=i("Qkdp"),p=i("Mtpk"),d=function(t){function e(){var e=t.call(this)||this;e._elements=new a.b,e.properties={},e.className="Pattern",e.width=10,e.height=10,e.x=0,e.y=0,e.patternUnits="userSpaceOnUse";var i=new l.a;return e.backgroundFill=i.getFor("background"),e.backgroundOpacity=0,e.fillOpacity=1,e.fill=i.getFor("alternativeBackground"),e.stroke=i.getFor("alternativeBackground"),e.strokeOpacity=1,e.strokeWidth=1,e.shapeRendering="crispEdges",e.rotation=0,e.element=e.paper.addGroup("pattern"),e.id="pattern-"+u.b.getUniqueId(),e.element.attr({id:e.id}),e._disposers.push(e.element),e._disposers.push(new a.c(e._elements)),e.patternUnits=e.patternUnits,e.width=e.width,e.height=e.height,e.applyTheme(),e}return n.c(e,t),e.prototype.draw=function(){var t=this,e=this.element;if(e){e.removeChildNodes();var i=this.paper.add("rect");i.attr({width:this.width,height:this.height,"shape-rendering":"crispEdges",fill:this.backgroundFill.hex,"fill-opacity":this.backgroundOpacity,stroke:this.backgroundFill.hex,"stroke-opacity":this.backgroundOpacity}),e.add(i),e.attr({x:this.x,y:this.y,width:this.width,height:this.height,stroke:this.stroke.hex,fill:this.fill.hex,"fill-opacity":this.fillOpacity,"stroke-opacity":this.strokeOpacity,"stroke-width":this.strokeWidth,"shape-rendering":this.shapeRendering,patternUnits:this.patternUnits,"stroke-dasharray":this.strokeDasharray}),h.each(this._elements.iterator(),function(e){e.rotation=t.rotation,e.rotationX=t.properties.rotationX,e.rotationY=t.properties.rotationY,t.element.add(e)})}},e.prototype.animate=function(t,e,i){return new s.a(this,t,e,i).start()},e.prototype.addElement=function(t){this._elements.push(t),this._disposers.push(t)},e.prototype.removeElement=function(t){this._elements.removeValue(t),this.removeDispose(t)},Object.defineProperty(e.prototype,"elements",{get:function(){return this._elements},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"fillOpacity",{get:function(){return this.properties.fillOpacity},set:function(t){this.properties.fillOpacity=t,this.draw()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"fill",{get:function(){return this.properties.fill},set:function(t){this.properties.fill=t,this.draw()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"backgroundFill",{get:function(){return this.properties.backgroundFill},set:function(t){this.properties.backgroundFill=t,this.draw()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"backgroundOpacity",{get:function(){return this.properties.backgroundOpacity},set:function(t){this.properties.backgroundOpacity=t,this.draw()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"stroke",{get:function(){return this.properties.stroke},set:function(t){this.properties.stroke=t,this.draw()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"strokeOpacity",{get:function(){return this.properties.strokeOpacity},set:function(t){this.properties.strokeOpacity=t,this.draw()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"strokeWidth",{get:function(){return this.properties.strokeWidth},set:function(t){this.properties.strokeWidth=t,this.draw()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"shapeRendering",{get:function(){return this.properties.shapeRendering},set:function(t){this.properties.shapeRendering=t,this.draw()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"rotation",{get:function(){return this.properties.rotation},set:function(t){this.properties.rotation=t,this.draw()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"patternUnits",{get:function(){return this.properties.patternUnits},set:function(t){this.properties.patternUnits=t,this.draw()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"width",{get:function(){return this.properties.width},set:function(t){this.properties.width=t,this.draw()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"height",{get:function(){return this.properties.height},set:function(t){this.properties.height=t,this.draw()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"x",{get:function(){return this.properties.x},set:function(t){this.properties.x=t,this.draw()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"y",{get:function(){return this.properties.y},set:function(t){this.properties.y=t,this.draw()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"paper",{get:function(){return this._paper?this._paper:Object(o.b)()},set:function(t){this._paper!=t&&(this._paper=t,this.draw(),t.appendDef(this.element))},enumerable:!0,configurable:!0}),e.prototype.copyFrom=function(e){var i=this;t.prototype.copyFrom.call(this,e),c.each(e.properties,function(t,e){i[t]=e})},Object.defineProperty(e.prototype,"animations",{get:function(){return this._animations||(this._animations=[],this._disposers.push(new s.b(this._animations))),this._animations},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"strokeDasharray",{get:function(){return this.properties.strokeDashArray},set:function(t){this.properties.strokeDashArray=t,this.draw()},enumerable:!0,configurable:!0}),e.prototype.processConfig=function(e){if(e&&p.hasValue(e.elements)&&p.isArray(e.elements))for(var i=0,n=e.elements.length;i1&&(n=Math.min(n,o(arguments[1]))),n<0&&(n=i+n);n>=0;n--)if(n in e&&e[n]===t)return n||0;return-1}})},ZytL:function(t,e,i){i("6+x4")("Map")},a8UT:function(t,e,i){var n=i("9BM3"),r=i("YEtG")("iterator"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(n.Array===t||o[r]===t)}},aCit:function(t,e,i){"use strict";i.d(e,"a",function(){return l}),i.d(e,"b",function(){return h});var n=i("o0Lc"),r=i("+qIf"),o=i("eCqC"),a=i("Mtpk"),s=i("wUYf"),u=i("hJ5i"),l=function(){function t(){this.events=new n.a,this.themes=[],this.loadedThemes={},this._uidCount=0,this.registeredClasses={},this._placeholders={},this.invalidSprites={},this.invalidDatas={},this.invalidRawDatas=[],this.invalidDataItems=[],this.invalidDataRange=[],this.invalidPositions={},this.invalidLayouts={},this.baseSprites=[],this.baseSpritesByUid={},this.queue=[],this.uid=this.getUniqueId(),this.invalidSprites.noBase=[],this.invalidDatas.noBase=[],this.invalidLayouts.noBase=[],this.invalidPositions.noBase=[]}return t.prototype.getUniqueId=function(){var t=this._uidCount;return this._uidCount+=1,"id-"+t},Object.defineProperty(t.prototype,"map",{get:function(){return this._map||(this._map=new r.a),this._map},enumerable:!0,configurable:!0}),t.prototype.setCache=function(t,e,i){o.b.set(this.uid,t,e,i)},t.prototype.getCache=function(t,e){return void 0===e&&(e=void 0),o.b.get(this.uid,t,e)},t.prototype.dispatch=function(t,e){this.events.isEnabled(t)&&(e?(e.type=t,e.target=e.target||this,this.events.dispatch(t,{type:t,target:this})):this.events.dispatch(t,{type:t,target:this}))},t.prototype.dispatchImmediately=function(t,e){this.events.isEnabled(t)&&(e?(e.type=t,e.target=e.target||this,this.events.dispatchImmediately(t,e)):this.events.dispatchImmediately(t,{type:t,target:this}))},t.prototype.getPlaceholder=function(t){return a.hasValue(this._placeholders[t])?this._placeholders[t]:(this._placeholders[t]="__amcharts_"+t+"_"+s.random(8)+"__",this._placeholders[t])},t.prototype.addToInvalidComponents=function(t){t.baseId?u.move(this.invalidDatas[t.baseId],t):u.move(this.invalidDatas.noBase,t)},t.prototype.removeFromInvalidComponents=function(t){t.baseId&&u.remove(this.invalidDatas[t.baseId],t),u.remove(this.invalidDatas.noBase,t)},t.prototype.addToInvalidSprites=function(t){t.baseId?u.add(this.invalidSprites[t.baseId],t):u.add(this.invalidSprites.noBase,t)},t.prototype.removeFromInvalidSprites=function(t){t.baseId&&u.remove(this.invalidSprites[t.baseId],t),u.remove(this.invalidSprites.noBase,t)},t.prototype.addToInvalidPositions=function(t){t.baseId?u.add(this.invalidPositions[t.baseId],t):u.add(this.invalidPositions.noBase,t)},t.prototype.removeFromInvalidPositions=function(t){t.baseId&&u.remove(this.invalidPositions[t.baseId],t),u.remove(this.invalidPositions.noBase,t)},t.prototype.addToInvalidLayouts=function(t){t.baseId?u.add(this.invalidLayouts[t.baseId],t):u.add(this.invalidLayouts.noBase,t)},t.prototype.removeFromInvalidLayouts=function(t){t.baseId&&u.remove(this.invalidLayouts[t.baseId],t),u.remove(this.invalidLayouts.noBase,t)},t}(),h=new l},aFzC:function(t,e,i){"use strict";i.d(e,"b",function(){return u}),e.c=function(t,e,i,o,l,h){var c=t.x,p=t.y,d=e.x,f=e.y,g=s.getDistance(t,e);h&&(i=g/Math.round(g/i));var m=n.b.getCache(a.stringify(["wavedLine",t.x,e.x,t.y,e.y,i,o]));if(!m){if(g>0){var y=Math.atan2(f-p,d-c),b=Math.cos(y),v=Math.sin(y),x=i*b,_=i*v;if(i<=1||o<=1)m=r.lineTo(e);else{var P=Math.round(2*g/i),w=[],O=1;d=1&&i>=1)return r.polyline(t);var n=t[0],o=t[t.length-1],a=!1;s.round(n.x,3)==s.round(o.x)&&s.round(n.y)==s.round(o.y)&&(a=!0);for(var u="",l=0,h=t.length-1;l0&&e=0;i--){var n=this.dataItems.getIndex(i).getActualWorkingValue(t);if(_.isNumber(n))return n}return null},e.prototype.getAbsoluteFirstValue=function(t){for(var e=0;e0){var f=i.getIndex(p-1);x.each(f.values,function(t,e){var i=f.getActualWorkingValue(t);_.isNumber(i)&&(l[t]=i)})}for(var g=function(t){var d=i.getIndex(t);x.each(d.values,function(t,i){var f=d.getActualWorkingValue(t);if(_.isNumber(f)){_.isNumber(n[t])||(n[t]=0),n[t]++,_.isNumber(r[t])||(r[t]=0),r[t]+=f,_.isNumber(s[t])||(s[t]=f),u[t]=f,_.isNumber(o[t])?o[t]>f&&(o[t]=f):o[t]=f,_.isNumber(a[t])?a[t]0){n==i&&(i=e.values[t].value);var o=n/i*100;e.setCalculatedValue(t,o,"percent")}else e.setCalculatedValue(t,0,"percent")})};for(m=p;m0){var v=i.getIndex(p-1);x.each(v.values,function(t){var e=v.values[t].value;v.setCalculatedValue(t,e-s[t],"change"),v.setCalculatedValue(t,(e-s[t])/s[t]*100,"changePercent")})}var P=this.dataItem;x.each(P.values,function(t){P.setCalculatedValue(t,r[t],"sum"),P.setCalculatedValue(t,r[t]/n[t],"average"),P.setCalculatedValue(t,s[t],"open"),P.setCalculatedValue(t,u[t],"close"),P.setCalculatedValue(t,o[t],"low"),P.setCalculatedValue(t,a[t],"high"),P.setCalculatedValue(t,n[t],"count")})}},e.prototype.validate=function(){m.each(this.axisRanges.iterator(),function(t){t.validate()}),t.prototype.validate.call(this);var e=this.bulletsContainer;if(e.fill=this.fill,e.stroke=this.stroke,e.x=this.pixelX,e.y=this.pixelY,this.bulletsContainer.children.length>0)if(this._showBullets){for(var i=0;ithis.endIndex;i--){var n;(n=this.dataItems.getIndex(i))&&n.bullets.each(function(t,e){e.__disabled=!0})}}else this.bulletsContainer.children.each(function(t){t.__disabled=!0});this.updateTooltipBounds()},e.prototype.updateTooltipBounds=function(){this.topParent&&this.tooltip.setBounds({x:0,y:0,width:this.topParent.maxWidth,height:this.topParent.maxHeight})},e.prototype.shouldCreateBullet=function(t,e){return!0},e.prototype.validateDataElement=function(e){var i=this;t.prototype.validateDataElement.call(this,e),this._showBullets?(this.isHidden||(this.bulletsContainer.visible=!0),this.bullets.each(function(t){var n=e.bullets.getKey(t.uid);if(i.shouldCreateBullet(e,t)){if(!n){var r=t.propertyFields.disabled,o=e.dataContext;r&&o&&!1===o[r]?(t.applyOnClones=!1,t.disabled=!1,n=t.clone(),t.disabled=!0,t.applyOnClones=!0):n=t.clone(),n.shouldClone=!1,e.addSprite(n),i.visible&&!i.isHiding||n.hide(0)}var a=n.dataItem;if(a!=e){a&&a.bullets.setKey(t.uid,void 0);var s=i.itemReaderText;n instanceof c.a&&(s||(s="{"+n.xField+"}: {"+n.yField+"}"),n.isDynamic&&(e.events.on("workingvaluechanged",n.deepInvalidate,n,!1),i.dataItem.events.on("workingvaluechanged",n.deepInvalidate,n,!1)),n.deepInvalidate()),n.focusable&&(n.events.on("focus",function(t){n.readerTitle=i.populateString(s,n.dataItem)},void 0,!1),n.events.on("blur",function(t){n.readerTitle=""},void 0,!1)),n.hoverable&&(n.events.on("over",function(t){n.readerTitle=i.populateString(s,n.dataItem)},void 0,!1),n.events.on("out",function(t){n.readerTitle=""},void 0,!1))}n.parent=i.bulletsContainer,e.bullets.setKey(t.uid,n),n.maxWidth=e.itemWidth,n.maxHeight=e.itemHeight,n.__disabled=!1,i.positionBullet(n)}})):this.bulletsContainer.visible=!1},e.prototype.handleDataItemWorkingValueChange=function(t,e){this.dataRangeInvalid||this.invalidateProcessedData()},Object.defineProperty(e.prototype,"ignoreMinMax",{get:function(){return this._ignoreMinMax},set:function(t){this._ignoreMinMax=t,this.invalidateDataItems()},enumerable:!0,configurable:!0}),e.prototype.createMask=function(){},e.prototype.processAxisRange=function(t){this.rangesContainer||(this.rangesContainer=this.createChild(l.a),this.rangesContainer.shouldClone=!1,this.rangesContainer.isMeasured=!1);var e=t.newValue;e&&(e.contents.parent=this.rangesContainer,e.isRange=!0,e.events.on("valuechanged",this.invalidateDataItems,this,!1))},e.prototype.getAxisField=function(t){},e.prototype.showTooltipAtPosition=function(t,e){},Object.defineProperty(e.prototype,"minBulletDistance",{get:function(){return this.getPropertyValue("minBulletDistance")},set:function(t){this.setPropertyValue("minBulletDistance",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"bullets",{get:function(){return this._bullets||(this._bullets=new a.e(new c.a),this._bullets.template.virtualParent=this,this._bullets.events.on("inserted",this.processBullet,this,!1),this._bullets.events.on("removed",this.removeBullet,this,!1),this._disposers.push(new a.c(this._bullets)),this._disposers.push(this._bullets.template)),this._bullets},enumerable:!0,configurable:!0}),e.prototype.createLegendMarker=function(t){},Object.defineProperty(e.prototype,"hiddenInLegend",{get:function(){return this.getPropertyValue("hiddenInLegend")},set:function(t){this.setPropertyValue("hiddenInLegend",t)&&this.chart&&this.chart.feedLegend()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"name",{get:function(){return this.getPropertyValue("name")},set:function(t){this.setPropertyValue("name",t);var e=this.legendDataItem;e&&(e.component.invalidate(),e.component.invalidateRawData()),this.readerTitle=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"itemReaderText",{get:function(){var t=this._itemReaderText;return t||(this.tooltipText?t=v.plainText(this.tooltipText):this.tooltipHTML&&(t=v.plainText(this.tooltipHTML))),this._adapterO?this._adapterO.apply("itemReaderText",t):t},set:function(t){this._itemReaderText=t,this._itemReaderTextChanged=!0},enumerable:!0,configurable:!0}),e.prototype.itemsFocusable=function(){return!(this.dataItems.length>=this.skipFocusThreshold)},Object.defineProperty(e.prototype,"legendDataItem",{get:function(){return this._legendDataItem},set:function(t){this._legendDataItem=t,this._legendDataItem.itemContainer.deepInvalidate()},enumerable:!0,configurable:!0}),e.prototype.updateLegendValue=function(t,e){if(this.legendDataItem){var i=this.legendSettings,n=this.legendDataItem,r=n.label,o=n.valueLabel;t||e?(o&&(i.itemValueText&&(o.text=i.itemValueText),o.dataItem=t),r&&(i.itemLabelText&&(r.text=i.itemLabelText),r.dataItem=t)):(r&&((i.labelText||void 0!=i.itemLabelText)&&(r.text=i.labelText),r.dataItem=this.dataItem),o&&((i.valueText||void 0!=i.itemValueText)&&(o.text=i.valueText),o.dataItem=this.dataItem))}},e.prototype.copyFrom=function(e){this.bullets.copyFrom(e.bullets),this.bulletsContainer.copyFrom(e.bulletsContainer),this.calculatePercent=e.calculatePercent,this.simplifiedProcessing=e.simplifiedProcessing,t.prototype.copyFrom.call(this,e)},e.prototype.raiseCriticalError=function(t){this._chart&&this._chart.modal&&(this._chart.modal.content=this._chart.adapter.apply("criticalError",t).message,this._chart.modal.closable=!1,this._chart.modal.open(),this._chart.disabled=!0),d.a.verbose&&console.log(t)},e.prototype.applyFilters=function(){var e=this;t.prototype.applyFilters.call(this),this.bulletsContainer.filters.clear(),m.each(this.filters.iterator(),function(t){e.bulletsContainer.filters.push(t.clone())})},Object.defineProperty(e.prototype,"heatRules",{get:function(){var t=this;return this._heatRules||(this._heatRules=new a.b,this._heatRules.events.on("inserted",function(e){var i=e.newValue,n=i.target;if(n){var r=i.dataField;_.hasValue(r)||(r="value");var a=i.min,s=i.max,u=t.dataItem,h=i.property,c=_.toNumber(i.minValue),p=_.toNumber(i.maxValue);_.isNumber(c)||_.isNumber(p)||t.dataItem.events.on("calculatedvaluechanged",function(e){e.property==r&&m.each(t.dataItems.iterator(),function(t){var e=!1;P.each(t.sprites,function(t){if(t.clonedFrom==n){var i=t;i[h]=i[h],e=!0}}),e||P.each(t.sprites,function(t){t instanceof l.a&&m.each(t.children.iterator(),function(t){if(t.className==n.className){var e=t;e[h]=e[h]}else t instanceof l.a&&t.deepInvalidate()})})})}),t.dataItems.template.events.on("workingvaluechanged",function(t){if(t.property==r){var e=t.target,i=!1;P.each(e.sprites,function(t){if(t.clonedFrom==n){var e=t;e[h]=e[h],i=!0}}),i||P.each(e.sprites,function(t){t instanceof l.a&&m.each(t.children.iterator(),function(t){if(t.className==n.className){var e=t;e[h]=e[h]}else t instanceof l.a&&t.deepInvalidate()})})}}),n.adapter.add(h,function(t,e,n){var l=_.toNumber(i.minValue),h=_.toNumber(i.maxValue);if(e instanceof o.a){var c=e.propertyFields[n];if(c&&e.dataItem){var p=e.dataItem.dataContext;if(p&&_.hasValue(p[c]))return t}}var d=e.dataItem;if((_.isNumber(l)||(l=u.values[r].low),_.isNumber(h)||(h=u.values[r].high),d)&&d.values[r]){var g=d.getActualWorkingValue(r);if(_.hasValue(a)&&_.hasValue(s)&&_.isNumber(l)&&_.isNumber(h)&&_.isNumber(g)){var m=(g-l)/(h-l);if(_.isNumber(g)&&!_.isNumber(m)&&(m=.5),_.isNumber(a))return a+(s-a)*m;if(a instanceof f.a)return new f.a(w.interpolate(a.rgb,s.rgb,m))}}return t})}})),this._heatRules},enumerable:!0,configurable:!0}),e.prototype.processConfig=function(e){var i;if(e){if(_.hasValue(e.bullets)&&_.isArray(e.bullets))for(var n=0,r=e.bullets.length;n0)m=t(e,i,f,o(f.length),m,c-1)-1;else{if(m>=9007199254740991)throw TypeError();e[m]=f}m++}y++}return m}},aae5:function(t,e,i){var n=i("Gb1H");n(n.P,"String",{repeat:i("lhvN")})},akNo:function(t,e,i){"use strict";i.d(e,"a",function(){return d});var n=i("m4/l"),r=i("P/bD"),o=i("Tjl+"),a=i("MipW"),s=i("aCit"),u=i("ScGY"),l=i("Qkdp"),h=i("v9UT"),c=i("Mtpk"),p=i("Gg2j"),d=function(t){function e(){var e=t.call(this)||this;return e._negativeBase=0,e._baseUnit="second",e._outputFormat="svg",e._unitValues={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,week:6048e5,month:2592e6,year:31536e6},e._unitAliases={Y:"y",D:"d",H:"h",K:"h",k:"h",n:"S"},e.className="DurationFormatter",e.applyTheme(),e}return n.c(e,t),e.prototype.format=function(t,e,i){this.language||(this.sprite?this.language=this.sprite.language:this.language=new r.a);var n=i||this._baseUnit;void 0!==e&&""!==e||(e=c.hasValue(this.durationFormat)?this.durationFormat:this.getFormat(c.toNumber(t),null,n)),e=h.cleanFormat(e);var o,a=this.parseFormat(e,n),s=Number(t);o=s>this._negativeBase?a.positive:s"+u+"":"html"===this._outputFormat&&(u=""+u+"")),u},e.prototype.parseFormat=function(t,e){var i=this,n=this.getCache(t);if(c.hasValue(n))return n;var r=e||this._baseUnit,o={positive:{color:"",template:"",parts:[],source:"",baseUnit:r,parsed:!1,absolute:!1},negative:{color:"",template:"",parts:[],source:"",baseUnit:r,parsed:!1,absolute:!1},zero:{color:"",template:"",parts:[],source:"",baseUnit:r,parsed:!1,absolute:!1}},s=(t=t.replace("||",u.e)).split("|");return o.positive.source=s[0],void 0===s[2]?o.zero=o.positive:o.zero.source=s[2],void 0===s[1]?o.negative=o.positive:o.negative.source=s[1],l.each(o,function(t,e){if(!e.parsed)if(void 0===i.getCache(e.source)){var n,r=e.source;(n=e.source.match(/^\[([^\]]*)\]/))&&n.length&&""!==n[0]&&(r=e.source.substr(n[0].length),e.color=n[1]);for(var s=Object(a.b)().chunk(r,!0),l=0;lh;)for(var d,f=u(arguments[h++]),g=c?r(f).concat(c(f)):r(f),m=g.length,y=0;m>y;)d=g[y++],n&&!p.call(f,d)||(i[d]=f[d]);return i}:l},brDO:function(t,e){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},bytU:function(t,e,i){var n=i("4BRe"),r=i("FmWr");t.exports=function(t){if(void 0===t)return 0;var e=n(t),i=r(e);if(e!==i)throw RangeError("Wrong length!");return i}},"cA+3":function(t,e,i){var n=i("wDk4");t.exports=function(t,e,i){for(var r in e)n(t,r,e[r],i);return t}},cOH5:function(t,e,i){"use strict";i.d(e,"a",function(){return r});var n=i("m4/l"),r=function(t){function e(e){return t.call(this,e)||this}return n.c(e,t),e.prototype.add=function(t){t&&this.node.appendChild(t.node)},e.prototype.addToBack=function(t){if(t){var e=this.node.childNodes[0];e?e!=t.node&&this.node.insertBefore(t.node,e):this.node.appendChild(t.node)}},e.prototype.removeElement=function(t){if(t)try{t.node&&t.node.parentNode==this.node&&this.node.removeChild(t.node)}catch(t){}},e.prototype.hasChild=function(t){for(var e=0;e0;){var t=this.node.firstChild;t&&t.parentNode&&t.parentNode.removeChild(t)}},e}(i("pzs1").a)},ch2R:function(t,e,i){var n=i("hjwn"),r=i("Gb1H"),o=i("snR7"),a=i("W0fk");r(r.S+r.F*i("AEc5")(function(){Reflect.defineProperty(n.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(t,e,i){o(t),e=a(e,!0),o(i);try{return n.f(t,e,i),!0}catch(t){return!1}}})},cm0w:function(t,e,i){var n=i("Gb1H");n(n.S,"Math",{umulh:function(t,e){var i=+t,n=+e,r=65535&i,o=65535&n,a=i>>>16,s=n>>>16,u=(a*o>>>0)+(r*o>>>16);return a*s+(u>>>16)+((r*s>>>0)+(65535&u)>>>16)}})},cxKZ:function(t,e,i){"use strict";i.d(e,"a",function(){return f});var n=i("m4/l"),r=i("C6dT"),o=i("aCit"),a=i("MZQ8"),s=i("p9TX"),u=i("1yyj"),l=i("8ZqG"),h=i("VAFc"),c=i("Gg2j"),p=i("0FpR"),d=i("v9UT"),f=function(t){function e(){var e=t.call(this)||this;e._boundingRect={x:-4e4,y:-4e4,width:8e4,height:8e4},e._pointTo={x:0,y:0},e.fitPointerToBounds=!1,e._verticalOrientation="up",e.className="Tooltip",e.isMeasured=!1,e.getFillFromObject=!0,e.margin(5,5,5,5),e.defaultState.transitionDuration=1,e.hiddenState.transitionDuration=1;var i=e.background;i.interactionsEnabled=!1,i.fillOpacity=.9,i.strokeWidth=1,i.strokeOpacity=1,i.stroke=Object(l.c)("#ffffff"),i.cornerRadius=3,i.pointerLength=6,i.pointerBaseWidth=10;var n=new h.a;n.dy=1,n.dx=1,n.opacity=.5,i.filters.push(n),e.autoTextColor=!0;var r=e.createChild(s.a);return r.shouldClone=!1,e.label=r,r.padding(7,12,4,12),r.interactionsEnabled=!1,r.horizontalCenter="middle",r.fill=Object(l.c)("#ffffff"),e._disposers.push(r),e.label.events.on("sizechanged",e.drawBackground,e),e.label.zIndex=1,e.pointerOrientation="vertical",e.animationDuration=0,e.animationEasing=p.cubicOut,e.setPropertyValue("showInViewport",!1),e.role="tooltip",e.visible=!1,e.opacity=0,e.x=0,e.y=0,e.events.on("visibilitychanged",e.handleVisibility,e),e.applyTheme(),e}return n.c(e,t),e.prototype.handleVisibility=function(){this.visible&&this.label.invalidate()},Object.defineProperty(e.prototype,"getStrokeFromObject",{get:function(){return this.getPropertyValue("getStrokeFromObject")},set:function(t){this.setPropertyValue("getStrokeFromObject",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"autoTextColor",{get:function(){return this.getPropertyValue("autoTextColor")},set:function(t){this.setPropertyValue("autoTextColor",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"keepTargetHover",{get:function(){return this.getPropertyValue("keepTargetHover")},set:function(t){var e=this;this.setPropertyValue("keepTargetHover",t,!0)&&t&&(this.hoverable=!0,this.background.interactionsEnabled=!0,this._disposers.push(this.events.on("over",function(t){e.targetSprite&&e.targetSprite.hoverable&&(e.targetSprite.isHover=!0)})),this._disposers.push(this.events.on("out",function(t){e.targetSprite&&e.targetSprite.hoverable&&(e.targetSprite.isHover=!1)})))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"showInViewport",{get:function(){return this.getPropertyValue("showInViewport")},set:function(t){this.setPropertyValue("showInViewport",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"getFillFromObject",{get:function(){return this.getPropertyValue("getFillFromObject")},set:function(t){this.setPropertyValue("getFillFromObject",t,!0)},enumerable:!0,configurable:!0}),e.prototype.createBackground=function(){return new a.a},Object.defineProperty(e.prototype,"pointerOrientation",{get:function(){return this.getPropertyValue("pointerOrientation")},set:function(t){this.setPropertyValue("pointerOrientation",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"animationDuration",{get:function(){return this.getPropertyValue("animationDuration")},set:function(t){this.setPropertyValue("animationDuration",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"animationEasing",{get:function(){return this.getPropertyValue("animationEasing")},set:function(t){this.setPropertyValue("animationEasing",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"html",{get:function(){return this.label.html},set:function(t){this.label.html!=t&&(this.label.html=t,this.invalidate())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"text",{get:function(){return this.label.text},set:function(t){this.label.text!=t&&(this.label.text=t,this.invalidate())},enumerable:!0,configurable:!0}),e.prototype.draw=function(){t.prototype.draw.call(this);var e=this.label;e.invalid&&e.validate();var i,n,r=this._pointTo.x,o=this._pointTo.y,a=this._boundingRect,s=e.measuredWidth,u=e.measuredHeight,l=this.background.pointerLength;if(s>a.width){d.spritePointToDocument({x:a.x,y:a.y},this.parent);var h=d.spritePointToDocument({x:a.x+a.width,y:a.y+a.height},this.parent),p=document.body.offsetWidth;d.used(document.body.offsetHeight),h.x>p/2?a.x=a.width-s:a.width=a.x+s}var f=this.pointerOrientation;"horizontal"==f||"left"==f||"right"==f?(n=-u/2,i="horizontal"==f?r>a.x+a.width/2?-s/2-l:s/2+l:"left"==f?s/2+l:-s/2-l):(i=c.fitToRange(0,a.x-r+s/2,a.x-r+a.width-s/2),"vertical"==f?o>a.y+u+l?(n=-u-l,this._verticalOrientation="up"):(n=l,this._verticalOrientation="down"):"down"==f?(n=-u-l,this._verticalOrientation="up"):(n=l,this._verticalOrientation="down")),n=c.fitToRange(n,a.y-o,a.y+a.height-u-o),e.x=i,e.y=n,this.drawBackground()},e.prototype.updateBackground=function(){this.group.addToBack(this.background.group)},e.prototype.drawBackground=function(){var t=this.label,e=this.background,i=t.measuredWidth,n=t.measuredHeight,r=this._boundingRect,o=i,a=t.pixelX-i/2,s=n,u=t.pixelY,l=this._pointTo.x,h=this._pointTo.y,p=r.x-l,d=p+r.width,f=r.y-h,g=f+r.height;e.x=a,e.y=u,e.width=o,e.height=s,this.fitPointerToBounds?(e.pointerX=c.fitToRange(-e.x,p-e.x,d-e.x),e.pointerY=c.fitToRange(-e.y,f-e.y,g-e.y)):(e.pointerX=-e.x,e.pointerY=-e.y),e.validate()},e.prototype.pointTo=function(t,e){this._pointTo.x==t.x&&this._pointTo.y==t.y||(this._pointTo=t,this.invalidate(),!this.visible||e?(this.moveTo(this._pointTo),this._animation&&this._animation.kill()):0==this.pixelX&&0==this.pixelY?this.moveTo(this._pointTo):(this._animation&&this._animation.kill(),this._animation=new u.a(this,[{property:"x",to:t.x,from:this.pixelX},{property:"y",to:t.y,from:this.pixelY}],this.animationDuration,this.animationEasing).start()))},e.prototype.setBounds=function(t){var e=this._boundingRect;e.x==t.x&&e.y==t.y&&e.width==t.width&&e.height==t.height||(this._boundingRect=t,this.invalidate())},Object.defineProperty(e.prototype,"boundingContainer",{set:function(t){this._boundingContainer=t,t.events.on("sizechanged",this.updateBounds,this),t.events.on("positionchanged",this.updateBounds,this)},enumerable:!0,configurable:!0}),e.prototype.updateBounds=function(){var t=this._boundingContainer,e=d.spriteRectToSvg({x:t.pixelX,y:t.pixelY,width:t.maxWidth,height:t.maxHeight},t);this.setBounds(e)},Object.defineProperty(e.prototype,"verticalOrientation",{get:function(){return this._verticalOrientation},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tooltip",{get:function(){},enumerable:!0,configurable:!0}),e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.label.copyFrom(e.label),e._boundingRect&&(this._boundingRect=e._boundingRect)},e.prototype.asFunction=function(e){return"animationEasing"==e||t.prototype.asIs.call(this,e)},e}(r.a);o.b.registeredClasses.Tooltip=f},d5pU:function(t,e,i){i("6+x4")("WeakMap")},dJEq:function(t,e,i){var n=i("MfZA"),r=i("WtL7");t.exports=function(t){return function(){if(n(this)!=t)throw TypeError(t+"#toJSON isn't generic");return r(this)}}},dLrC:function(t,e,i){"use strict";var n=i("hgv4"),r=i("rFJX");t.exports=i("/Xnt")("Map",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var e=n.getEntry(r(this,"Map"),t);return e&&e.v},set:function(t,e){return n.def(r(this,"Map"),0===t?0:t,e)}},n,!0)},"dS+R":function(t,e,i){i("YJIw")("Int8",1,function(t){return function(e,i,n){return t(this,e,i,n)}})},ds6r:function(t,e,i){"use strict";var n=i("Gb1H"),r=i("dstF")(1);n(n.P+n.F*!i("GQop")([].map,!0),"Array",{map:function(t){return r(this,t,arguments[1])}})},dstF:function(t,e,i){var n=i("20m4"),r=i("sHIJ"),o=i("vJiZ"),a=i("FmWr"),s=i("L2Mu");t.exports=function(t,e){var i=1==t,u=2==t,l=3==t,h=4==t,c=6==t,p=5==t||c,d=e||s;return function(e,s,f){for(var g,m,y=o(e),b=r(y),v=n(s,f,3),x=a(b.length),_=0,P=i?d(e,x):u?d(e,0):void 0;x>_;_++)if((p||_ in b)&&(m=v(g=b[_],_,y),t))if(i)P[_]=m;else if(m)switch(t){case 3:return!0;case 5:return g;case 6:return _;case 2:P.push(g)}else if(h)return!1;return c?-1:l||h?h:P}}},"e/xe":function(t,e,i){var n=i("Gb1H");n(n.S,"Object",{is:i("DVvQ")})},e8Nv:function(t,e,i){"use strict";var n=i("hjwn"),r=i("Wbjh");t.exports=function(t,e,i){e in t?n.f(t,e,r(0,i)):t[e]=i}},"e8Y+":function(t,e,i){var n=i("Gb1H");n(n.S,"Math",{fround:i("kg8J")})},eAid:function(t,e,i){"use strict";i.d(e,"a",function(){return u});var n=i("m4/l"),r=i("Vs7R"),o=i("aCit"),a=i("8ZqG"),s=i("MIZb"),u=function(t){function e(){var e=t.call(this)||this;e.className="AxisLine",e.element=e.paper.add("path");var i=new s.a;return e.stroke=i.getFor("grid"),e.strokeOpacity=.15,e.pixelPerfect=!0,e.fill=Object(a.c)(),e.applyTheme(),e.interactionsEnabled=!1,e}return n.c(e,t),e}(r.a);o.b.registeredClasses.AxisLine=u},eBSV:function(t,e){e.f={}.propertyIsEnumerable},eCqC:function(t,e,i){"use strict";i.d(e,"a",function(){return o}),i.d(e,"b",function(){return a});var n=i("+qIf"),r=i("Mtpk"),o=function(){function t(){this._storage=new n.a,this.ttl=1e3}return t.prototype.set=function(t,e,i,o){var a=this._storage.insertKeyIfEmpty(t,function(){return new n.a}),s={touched:(new Date).getTime(),ttl:r.isNumber(o)?o:this.ttl,value:i};a.setKey(e,s)},t.prototype.get=function(t,e,i){if(void 0===i&&(i=void 0),this._storage.hasKey(t)){var n=this._storage.getKey(t);if(n.hasKey(e)){var r=n.getKey(e);return r.ttl&&r.touched+r.ttl<(new Date).getTime()&&(r.expired=!0),r.expired?(n.removeKey(e),i):r.value}return i}return i},t.prototype.clear=function(t){t?this._storage.removeKey(t):this._storage.clear()},t}(),a=new o},eN1s:function(t,e,i){"use strict";i.d(e,"a",function(){return a});var n=i("m4/l"),r=i("qzbU"),o=i("aCit"),a=function(t){function e(){var e=t.call(this)||this;return e.className="AxisTick",e.element=e.paper.add("path"),e.location=.5,e.above=!1,e.isMeasured=!1,e.pixelPerfect=!0,e.strokeOpacity=0,e.length=5,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"location",{get:function(){return this.getPropertyValue("location")},set:function(t){this.setPropertyValue("location",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"inside",{get:function(){return this.getPropertyValue("inside")},set:function(t){this.setPropertyValue("inside",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"above",{get:function(){return this.getPropertyValue("above")},set:function(t){this.setPropertyValue("above",t,!0)},enumerable:!0,configurable:!0}),e.prototype.setDisabled=function(e){var i=t.prototype.setDisabled.call(this,e);return this.axis&&this.axis.invalidateDataItems(),i},e}(r.a);o.b.registeredClasses.AxisTick=a},eaU5:function(t,e,i){"use strict";i("Mvcd")("fixed",function(t){return function(){return t(this,"tt","","")}})},"eh+x":function(t,e){t.exports=Math.scale||function(t,e,i,n,r){return 0===arguments.length||t!=t||e!=e||i!=i||n!=n||r!=r?NaN:t===1/0||t===-1/0?t:(t-e)*(r-n)/(i-e)+n}},f5kt:function(t,e,i){"use strict";var n=i("Gb1H"),r=i("dstF")(5),o=!0;"find"in[]&&Array(1).find(function(){o=!1}),n(n.P+n.F*o,"Array",{find:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),i("M/YL")("find")},fDnL:function(t,e,i){var n=i("Gb1H"),r=i("RzG0")(),o=i("T9LF").process,a="process"==i("DVYA")(o);n(n.G,{asap:function(t){var e=a&&o.domain;r(e?e.bind(t):t)}})},fL7J:function(t,e,i){var n=i("Gb1H");n(n.S,"Math",{log10:function(t){return Math.log(t)*Math.LOG10E}})},fRTO:function(t,e,i){var n=i("vJiZ"),r=i("K0ev");i("5lay")("getPrototypeOf",function(){return function(t){return r(n(t))}})},fTgz:function(t,e,i){var n=i("Gb1H");n(n.S,"Math",{log2:function(t){return Math.log(t)/Math.LN2}})},fi6C:function(t,e,i){"use strict";i("Mvcd")("link",function(t){return function(e){return t(this,"a","href",e)}})},fyXH:function(t,e,i){var n=i("Gb1H");n(n.P,"Function",{bind:i("lLkc")})},g2OP:function(t,e,i){var n=i("DvJ+"),r=i("kFp5").onFreeze;i("5lay")("seal",function(t){return function(e){return t&&n(e)?t(r(e)):e}})},gD3S:function(t,e,i){t.exports=!i("AEc5")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},gJSe:function(t,e,i){var n=i("6MWL"),r=i("snR7"),o=i("K0ev"),a=n.has,s=n.get,u=n.key;n.exp({getMetadata:function(t,e){return function t(e,i,n){if(a(e,i,n))return s(e,i,n);var r=o(i);return null!==r?t(e,r,n):void 0}(t,r(e),arguments.length<3?void 0:u(arguments[2]))}})},gc4I:function(t,e,i){"use strict";var n=i("Gb1H"),r=i("Ax3V"),o=i("DVYA"),a=i("UwWU"),s=i("FmWr"),u=[].slice;n(n.P+n.F*i("AEc5")(function(){r&&u.call(r)}),"Array",{slice:function(t,e){var i=s(this.length),n=o(this);if(e=void 0===e?i:e,"Array"==n)return u.call(this,t,e);for(var r=a(t,i),l=a(e,i),h=s(l-r),c=new Array(h),p=0;p3&&"pan"==this._generalBehavior&&(this.getPanningRanges(),this.dispatch("panning"))},e.prototype.updateLinePositions=function(t){t=this.fixPoint(this.point),this.lineX&&this.lineX.visible&&!this.xAxis&&(this.lineX.x=t.x),this.lineY&&this.lineY.visible&&!this.yAxis&&(this.lineY.y=t.y),this.updateSelection()},e.prototype.triggerDownReal=function(e){if(this.visible&&!this.isHiding)if("select"==this._generalBehavior&&(this.selection.parent=this.parent),this.fitsToBounds(e)){this.downPoint={x:e.x,y:e.y},this.updatePoint(e),this.point.x=this.downPoint.x,this.point.y=this.downPoint.y;var i=this.selection,n=this.downPoint.x,r=this.downPoint.y;this._usesSelection&&(i.x=n,i.y=r,i.path="",i.show()),t.prototype.triggerDownReal.call(this,e)}else this.downPoint=void 0;else this.downPoint=void 0},e.prototype.updatePoint=function(t){this.lineX&&(t.x=this.lineX.pixelX),this.lineY&&(t.y=this.lineY.pixelY)},e.prototype.triggerUpReal=function(e){if(p.getDistance(this._upPointOrig,this._downPointOrig)>Object(h.b)().getHitOption(this.interactions,"hitTolerance"))this.downPoint&&(this.upPoint=e,this.updatePoint(this.upPoint),"pan"!=this._generalBehavior&&this.getRanges(),"select"!=this._generalBehavior&&this.selection.hide(),t.prototype.triggerUpReal.call(this,e));else{if("select"!=this._generalBehavior?this.selection.hide(0):(this.xRange=void 0,this.yRange=void 0,this.dispatchImmediately("selectended")),"pan"==this._generalBehavior)Object(h.b)().setGlobalStyle(c.a.default);this.dispatchImmediately("behaviorcanceled")}this.downPoint=void 0,this.dispatch("cursorpositionchanged")},e.prototype.getPanningRanges=function(){var t=p.round(this.downPoint.x/this.innerWidth,5),e=1-p.round(this.downPoint.y/this.innerHeight,5),i=t-p.round(this.point.x/this.innerWidth,5),n=e-(1-p.round(this.point.y/this.innerHeight,5));this.xRange={start:i,end:1+i},this.yRange={start:n,end:1+n},"panX"==this.behavior&&(this.yRange.start=0,this.yRange.end=1),"panY"==this.behavior&&(this.xRange.start=0,this.xRange.end=1)},e.prototype.getRanges=function(){this.lineX&&(this.upPoint.x=this.lineX.pixelX),this.lineY&&(this.upPoint.y=this.lineY.pixelY),d.used(this.selection);var t=p.round(this.downPoint.x/this.innerWidth,5),e=p.round(this.upPoint.x/this.innerWidth,5),i=1-p.round(this.downPoint.y/this.innerHeight,5),n=1-p.round(this.upPoint.y/this.innerHeight,5);this.xRange={start:p.min(t,e),end:p.max(t,e)},this.yRange={start:p.min(i,n),end:p.max(i,n)}},Object.defineProperty(e.prototype,"behavior",{get:function(){return this.getPropertyValue("behavior")},set:function(t){this.setPropertyValue("behavior",t,!0),this._usesSelection=!1,-1!=t.indexOf("zoom")&&(this._generalBehavior="zoom",this._usesSelection=!0),-1!=t.indexOf("select")&&(this._generalBehavior="select",this._usesSelection=!0),-1!=t.indexOf("pan")&&(this._generalBehavior="pan",this._usesSelection=!1)},enumerable:!0,configurable:!0}),e.prototype.shouldPreventGestures=function(t){return!(this.interactions.isTouchProtected&&t||"none"==this.behavior)},Object.defineProperty(e.prototype,"fullWidthLineX",{get:function(){return this.getPropertyValue("fullWidthLineX")},set:function(t){this.setPropertyValue("fullWidthLineX",t),t||this.updateSize()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"fullWidthLineY",{get:function(){return this.getPropertyValue("fullWidthLineY")},set:function(t){this.setPropertyValue("fullWidthLineY",t),t||this.updateSize()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hideSeriesTooltipsOnSelection",{get:function(){return this.getPropertyValue("hideSeriesTooltipsOnSelection")},set:function(t){this.setPropertyValue("hideSeriesTooltipsOnSelection",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maxPanOut",{get:function(){return this.getPropertyValue("maxPanOut")},set:function(t){this.setPropertyValue("maxPanOut",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"xAxis",{get:function(){return this._xAxis.get()},set:function(t){this._xAxis.get()!=t&&this._xAxis.set(t,new a.c([t.tooltip.events.on("positionchanged",this.handleXTooltipPosition,this,!1)]))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"yAxis",{get:function(){return this._yAxis.get()},set:function(t){this._yAxis.get()!=t&&this._yAxis.set(t,new a.c([t.tooltip.events.on("positionchanged",this.handleYTooltipPosition,this,!1)]))},enumerable:!0,configurable:!0}),e.prototype.handleXTooltipPosition=function(t){var e=this.xAxis.tooltip,i=d.svgPointToSprite({x:e.pixelX,y:e.pixelY},this),n=i.x;if(i.y=1,this.lineX&&(this.lineX.x=n,this.fitsToBounds(i)||this.hide()),this.xAxis&&this.fullWidthLineX){var r=this.xAxis.currentItemStartPoint,o=this.xAxis.currentItemEndPoint;if(r&&o){this.lineX.x=n;var a=o.x-r.x;this.lineX.path=g.rectangle(a,this.innerHeight,-a/2)}}},e.prototype.handleYTooltipPosition=function(t){var e=this.yAxis.tooltip,i=d.svgPointToSprite({x:e.pixelX,y:e.pixelY},this),n=i.y;if(i.x=1,this.lineY&&(this.lineY.y=n,this.fitsToBounds(i)||this.hide()),this.yAxis&&this.fullWidthLineY){var r=this.yAxis.currentItemStartPoint,o=this.yAxis.currentItemEndPoint;if(r&&o){this.lineY.y=n;var a=o.y-r.y;this.lineY.path=g.rectangle(this.innerWidth,a,0,-a/2)}}},Object.defineProperty(e.prototype,"lineX",{get:function(){return this._lineX.get()},set:function(t){t?(t.setElement(this.paper.add("path")),this._lineX.set(t,t.events.on("positionchanged",this.updateSelection,this,!1)),t.interactionsEnabled=!1,t.parent=this):this._lineX.reset()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"lineY",{get:function(){return this._lineY.get()},set:function(t){t?(t.setElement(this.paper.add("path")),this._lineY.set(t,t.events.on("positionchanged",this.updateSelection,this,!1)),t.parent=this,t.interactionsEnabled=!1):this._lineY.reset()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"selection",{get:function(){return this._selection},set:function(t){this._selection=t,t&&(t.element=this.paper.add("path"),t.parent=this)},enumerable:!0,configurable:!0}),e.prototype.processConfig=function(e){e&&(f.hasValue(e.xAxis)&&f.isString(e.xAxis)&&(this.map.hasKey(e.xAxis)?e.xAxis=this.map.getKey(e.xAxis):(this.processingErrors.push('[XYCursor] No axis with id "'+e.xAxis+'" found for `xAxis`'),delete e.xAxis)),f.hasValue(e.yAxis)&&f.isString(e.yAxis)&&(this.map.hasKey(e.yAxis)?e.yAxis=this.map.getKey(e.yAxis):(this.processingErrors.push('[XYCursor] No axis with id "'+e.yAxis+'" found for `yAxis`'),delete e.yAxis)),f.hasValue(e.snapToSeries)&&f.isString(e.snapToSeries)&&(this.map.hasKey(e.snapToSeries)?e.snapToSeries=this.map.getKey(e.snapToSeries):(this.processingErrors.push('[XYCursor] No series with id "'+e.snapToSeries+'" found for `series`'),delete e.snapToSeries))),t.prototype.processConfig.call(this,e)},Object.defineProperty(e.prototype,"snapToSeries",{get:function(){return this.getPropertyValue("snapToSeries")},set:function(t){this.setPropertyValue("snapToSeries",t)&&(this._snapToDisposer&&this._snapToDisposer.dispose(),t&&(this._snapToDisposer=t.events.on("tooltipshownat",this.handleSnap,this,!1)))},enumerable:!0,configurable:!0}),e.prototype.handleSnap=function(){var t=this.snapToSeries,e=t.getTooltipX(),i=t.getTooltipY();this.xAxis&&this.xAxis.renderer.opposite&&(i-=this.pixelHeight),this.point={x:e,y:i},this.getPositions();var n=e,r=i;e-=this.pixelWidth,this.yAxis&&this.yAxis.renderer.opposite&&(e+=this.pixelWidth);var o=t.tooltip,a=o.animationDuration,s=o.animationEasing;t.baseAxis==t.xAxis&&t.yAxis.showTooltipAtPosition(this.yPosition),t.baseAxis==t.yAxis&&t.xAxis.showTooltipAtPosition(this.xPosition),this.lineX.animate([{property:"y",to:i}],a,s),this.lineY.animate([{property:"x",to:e}],a,s),this.xAxis||this.lineX.animate([{property:"x",to:n}],a,s),this.yAxis||this.lineY.animate([{property:"y",to:r}],a,s)},e.prototype.dispose=function(){this.hide(0),t.prototype.dispose.call(this)},e}(r.a);s.b.registeredClasses.XYCursor=m},hD5A:function(t,e,i){"use strict";i.d(e,"b",function(){return a}),i.d(e,"c",function(){return s}),i.d(e,"d",function(){return u}),i.d(e,"a",function(){return l});var n=i("m4/l"),r=i("hJ5i"),o=i("Mtpk"),a=function(){function t(t){this._disposed=!1,this._dispose=t}return t.prototype.isDisposed=function(){return this._disposed},t.prototype.dispose=function(){this._disposed||(this._disposed=!0,this._dispose())},t}(),s=function(t){function e(e){return t.call(this,function(){r.each(e,function(t){t.dispose()})})||this}return n.c(e,t),e}(a),u=function(t){function e(){var e=t.call(this,function(){o.hasValue(e._disposer)&&(e._disposer.dispose(),e._disposer=void 0)})||this;return e}return n.c(e,t),e.prototype.get=function(){return this._value},e.prototype.set=function(t,e){o.hasValue(this._disposer)&&this._disposer.dispose(),this._disposer=e,this._value=t},e.prototype.reset=function(){this.set(void 0,void 0)},e}(a),l=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._counter=0,e}return n.c(e,t),e.prototype.increment=function(){var t=this;return++this._counter,new a(function(){--t._counter,0===t._counter&&t.dispose()})},e}(a)},hGwe:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.polyline=function(t){var e=u(t[0]),i={x:0,y:0},o=a.a.minPolylineStep;r.isNumber(o)||(o=.5);for(var s=0,l=t.length;so&&(e+=u(h),i=h)}return e},e.moveTo=s,e.lineTo=u,e.quadraticCurveTo=function(t,e){return" Q"+n.round(e.x,4)+","+n.round(e.y,4)+" "+n.round(t.x,4)+","+n.round(t.y,4)},e.cubicCurveTo=function(t,e,i){return" C"+n.round(e.x,4)+","+n.round(e.y,4)+" "+n.round(i.x,4)+","+n.round(i.y,4)+" "+n.round(t.x,4)+","+n.round(t.y,4)},e.closePath=l,e.arcTo=h,e.arc=function(t,e,i,o,a,l,p){if(0==e)return"";r.isNumber(o)||(o=0);if(0==i&&o<=0)return"";if(i(f-t)/2&&(D=O);var V="";360==e?V=s(T):(V=s(S),V+=u(T),V+=c(I,l,y,!0));V+=h(t+v,e-2*v,i,a),r.isNumber(o)&&0!=o?(360==e&&0==l?V+=s(k):(V+=c(C,l,y,!0),V+=u(k),V+=c(D,p,b,!0)),V+=h(f-_,-(e-2*_),o,m),(e<360||l>0)&&(V+=c(S,p,b,!0)),V+=u(S)):(V+=c(C,l,y,!0),e<360&&(V+=u(S)));return V},e.arcToPoint=c,e.rectangle=function(t,e,i,n){r.isNumber(i)||(i=0);r.isNumber(n)||(n=0);return s({x:i,y:n})+u({x:i+t,y:n})+u({x:i+t,y:n+e})+u({x:i,y:n+e})+" Z"},e.rectToPath=function(t,e){var i=",",n=" L";return e?"M"+t.x+i+t.y+n+t.x+i+(t.y+t.height)+n+(t.x+t.width)+i+(t.y+t.height)+n+(t.x+t.width)+i+t.y+n+t.x+i+t.y:"M"+t.x+i+t.y+n+(t.x+t.width)+i+t.y+n+(t.x+t.width)+i+(t.y+t.height)+n+t.x+i+(t.y+t.height)+n+t.x+i+t.y},e.pathToPoints=function(t,e){var i=Object(o.b)().add("path").node;if(i.setAttribute("d",t),i.getPointAtLength&&i.getTotalLength){for(var n=i.getTotalLength(),r=[],a=0;ac&&(f=2*c),(p+=2*Math.asin(f/2/c))*n.DEGREES>h+(i-a)/u*360)break;var g=p*n.DEGREES,m={x:t+c*Math.cos(p),y:e+c*o/i*Math.sin(p)};d.push(m),c=a+g/360*u}return d.shift(),d},e.pointsToPath=function(t){if(!t||0==t.length)return"";var e=s(t[0]);if(t&&t.length>0)for(var i=1;i3e3){var g=t+e;return u({x:y=n.round(n.cos(g)*i,4),y:b=n.round(n.sin(g)*o,4)})}for(var m=0;m>1,s=e(i,t[a]);s<0?r=a:0===s?(o=!0,n=a+1):n=a+1}return{found:o,index:o?n-1:n}},e.findIndex=h,e.find=function(t,e){var i=h(t,e);if(-1!==i)return t[i]},e.shuffle=function(t){var e,i,n=t.length;for(;0!==n;)i=Math.floor(Math.random()*n),e=t[n-=1],t[n]=t[i],t[i]=e};var n=i("Gg2j"),r=i("Mtpk");function o(t,e){for(var i=t.length,n=0;n1?arguments[1]:void 0,3);i=i?i.n:this._f;)for(n(i.v,i.k,this);i&&i.r;)i=i.p},has:function(t){return!!m(f(this,e),t)}}),p&&n(h.prototype,"size",{get:function(){return f(this,e)[g]}}),h},def:function(t,e,i){var n,r,o=m(t,e);return o?o.v=i:(t._l=o={i:r=d(e,!0),k:e,v:i,p:n=t._l,n:void 0,r:!1},t._f||(t._f=o),n&&(n.n=o),t[g]++,"F"!==r&&(t._i[r]=o)),t},getEntry:m,setStrong:function(t,e,i){l(t,e,function(t,i){this._t=f(t,e),this._k=i,this._l=void 0},function(){for(var t=this._k,e=this._l;e&&e.r;)e=e.p;return this._t&&(this._l=e=e?e.n:this._t._f)?h(0,"keys"==t?e.k:"values"==t?e.v:[e.k,e.v]):(this._t=void 0,h(1))},i?"entries":"values",!i,!0),c(e)}}},hjwn:function(t,e,i){var n=i("snR7"),r=i("HW78"),o=i("W0fk"),a=Object.defineProperty;e.f=i("gD3S")?Object.defineProperty:function(t,e,i){if(n(t),e=o(e,!0),n(i),r)try{return a(t,e,i)}catch(t){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(t[e]=i.value),t}},hpNl:function(t,e,i){"use strict";i.d(e,"a",function(){return r});var n=i("8ZqG"),r=function(){function t(){}return t.opacity=1,t.strokeOpacity=1,t.strokeWidth=1,t.fillOpacity=1,t.fill=Object(n.c)("#000000"),t.stroke=Object(n.c)("#000000"),t.focusable=void 0,t.tabindex=0,t}()},hpnp:function(t,e,i){var n=i("20m4"),r=i("sNEp"),o=i("a8UT"),a=i("snR7"),s=i("FmWr"),u=i("iOZG"),l={},h={};(e=t.exports=function(t,e,i,c,p){var d,f,g,m,y=p?function(){return t}:u(t),b=n(i,c,e?2:1),v=0;if("function"!=typeof y)throw TypeError(t+" is not iterable!");if(o(y)){for(d=s(t.length);d>v;v++)if((m=e?b(a(f=t[v])[0],f[1]):b(t[v]))===l||m===h)return m}else for(g=y.call(t);!(f=g.next()).done;)if((m=r(g,b,f.value,e))===l||m===h)return m}).BREAK=l,e.RETURN=h},hxI2:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.rgb=function(t,e){var i;o[t]?i=o[t]:"#"===t.charAt(0)?i=a(t):t.match(/^rgba?\(/)&&(i=s(t));i||(i={r:0,g:0,b:0,a:1});r.hasValue(e)&&(i.a=e);return i},e.hexToRgb=a,e.rgbaToRgb=s,e.rgbToHex=function(t){return"#"+u(t.r.toString(16))+u(t.g.toString(16))+u(t.b.toString(16))},e.rgbToRGBA=function(t){return r.hasValue(t.a)&&1!==t.a?"rgba("+t.r+","+t.g+","+t.b+","+t.a+")":"rgb("+t.r+","+t.g+","+t.b+")"},e.pad2=u,e.interpolate=function(t,e,i){return i=n.fitToRange(i,0,1),t?e?{r:t.r+Math.round((e.r-t.r)*i),g:t.g+Math.round((e.g-t.g)*i),b:t.b+Math.round((e.b-t.b)*i),a:(t.a||1)+Math.round(((e.a||1)-(t.a||1))*i)}:t:e||t},e.lighten=function(t,e){return t?{r:Math.max(0,Math.min(255,t.r+l(t.r,e))),g:Math.max(0,Math.min(255,t.g+l(t.g,e))),b:Math.max(0,Math.min(255,t.b+l(t.b,e))),a:t.a}:t},e.getLightnessStep=l,e.brighten=function(t,e){if(t){var i=Math.min(Math.max(t.r,t.g,t.b),230),n=l(i,e);return{r:Math.max(0,Math.min(255,Math.round(t.r+n))),g:Math.max(0,Math.min(255,Math.round(t.g+n))),b:Math.max(0,Math.min(255,Math.round(t.b+n))),a:t.a}}return t},e.getBrightnessStep=function(t,e){return Math.round(255*e)},e.saturate=function(t,e){if(null==t||1==e)return t;var i=c(t);return i.s=e,h(i)},e.hslToRgb=h,e.rgbToHsl=c,e.rgbToHsv=function(t){var e=t.r/255,i=t.g/255,n=t.b/255,r=Math.max(e,i,n),o=Math.min(e,i,n),a=0,s=0,u=r,l=r-o;if(s=0==r?0:l/r,r==o)a=0;else{switch(r){case e:a=(i-n)/l+(i=128};var n=i("Gg2j"),r=i("Mtpk"),o={aliceblue:{r:240,g:248,b:255},antiquewhite:{r:250,g:235,b:215},aqua:{r:0,g:255,b:255},aquamarine:{r:127,g:255,b:212},azure:{r:240,g:255,b:255},beige:{r:245,g:245,b:220},bisque:{r:255,g:228,b:196},black:{r:0,g:0,b:0},blanchedalmond:{r:255,g:235,b:205},blue:{r:0,g:0,b:255},blueviolet:{r:138,g:43,b:226},brown:{r:165,g:42,b:42},burlywood:{r:222,g:184,b:135},cadetblue:{r:95,g:158,b:160},chartreuse:{r:127,g:255,b:0},chocolate:{r:210,g:105,b:30},coral:{r:255,g:127,b:80},cornflowerblue:{r:100,g:149,b:237},cornsilk:{r:255,g:248,b:220},crimson:{r:220,g:20,b:60},cyan:{r:0,g:255,b:255},darkblue:{r:0,g:0,b:139},darkcyan:{r:0,g:139,b:139},darkgoldenrod:{r:184,g:134,b:11},darkgray:{r:169,g:169,b:169},darkgrey:{r:169,g:169,b:169},darkgreen:{r:0,g:100,b:0},darkkhaki:{r:189,g:183,b:107},darkmagenta:{r:139,g:0,b:139},darkolivegreen:{r:85,g:107,b:47},darkorange:{r:255,g:140,b:0},darkorchid:{r:153,g:50,b:204},darkred:{r:139,g:0,b:0},darksalmon:{r:233,g:150,b:122},darkseagreen:{r:143,g:188,b:143},darkslateblue:{r:72,g:61,b:139},darkslategray:{r:47,g:79,b:79},darkslategrey:{r:47,g:79,b:79},darkturquoise:{r:0,g:206,b:209},darkviolet:{r:148,g:0,b:211},deeppink:{r:255,g:20,b:147},deepskyblue:{r:0,g:191,b:255},dimgray:{r:105,g:105,b:105},dimgrey:{r:105,g:105,b:105},dodgerblue:{r:30,g:144,b:255},firebrick:{r:178,g:34,b:34},floralwhite:{r:255,g:250,b:240},forestgreen:{r:34,g:139,b:34},fuchsia:{r:255,g:0,b:255},gainsboro:{r:220,g:220,b:220},ghostwhite:{r:248,g:248,b:255},gold:{r:255,g:215,b:0},goldenrod:{r:218,g:165,b:32},gray:{r:128,g:128,b:128},grey:{r:128,g:128,b:128},green:{r:0,g:128,b:0},greenyellow:{r:173,g:255,b:47},honeydew:{r:240,g:255,b:240},hotpink:{r:255,g:105,b:180},indianred:{r:205,g:92,b:92},indigo:{r:75,g:0,b:130},ivory:{r:255,g:255,b:240},khaki:{r:240,g:230,b:140},lavender:{r:230,g:230,b:250},lavenderblush:{r:255,g:240,b:245},lawngreen:{r:124,g:252,b:0},lemonchiffon:{r:255,g:250,b:205},lightblue:{r:173,g:216,b:230},lightcoral:{r:240,g:128,b:128},lightcyan:{r:224,g:255,b:255},lightgoldenrodyellow:{r:250,g:250,b:210},lightgray:{r:211,g:211,b:211},lightgrey:{r:211,g:211,b:211},lightgreen:{r:144,g:238,b:144},lightpink:{r:255,g:182,b:193},lightsalmon:{r:255,g:160,b:122},lightseagreen:{r:32,g:178,b:170},lightskyblue:{r:135,g:206,b:250},lightslategray:{r:119,g:136,b:153},lightslategrey:{r:119,g:136,b:153},lightsteelblue:{r:176,g:196,b:222},lightyellow:{r:255,g:255,b:224},lime:{r:0,g:255,b:0},limegreen:{r:50,g:205,b:50},linen:{r:250,g:240,b:230},magenta:{r:255,g:0,b:255},maroon:{r:128,g:0,b:0},mediumaquamarine:{r:102,g:205,b:170},mediumblue:{r:0,g:0,b:205},mediumorchid:{r:186,g:85,b:211},mediumpurple:{r:147,g:112,b:219},mediumseagreen:{r:60,g:179,b:113},mediumslateblue:{r:123,g:104,b:238},mediumspringgreen:{r:0,g:250,b:154},mediumturquoise:{r:72,g:209,b:204},mediumvioletred:{r:199,g:21,b:133},midnightblue:{r:25,g:25,b:112},mintcream:{r:245,g:255,b:250},mistyrose:{r:255,g:228,b:225},moccasin:{r:255,g:228,b:181},navajowhite:{r:255,g:222,b:173},navy:{r:0,g:0,b:128},oldlace:{r:253,g:245,b:230},olive:{r:128,g:128,b:0},olivedrab:{r:107,g:142,b:35},orange:{r:255,g:165,b:0},orangered:{r:255,g:69,b:0},orchid:{r:218,g:112,b:214},palegoldenrod:{r:238,g:232,b:170},palegreen:{r:152,g:251,b:152},paleturquoise:{r:175,g:238,b:238},palevioletred:{r:219,g:112,b:147},papayawhip:{r:255,g:239,b:213},peachpuff:{r:255,g:218,b:185},peru:{r:205,g:133,b:63},pink:{r:255,g:192,b:203},plum:{r:221,g:160,b:221},powderblue:{r:176,g:224,b:230},purple:{r:128,g:0,b:128},rebeccapurple:{r:102,g:51,b:153},red:{r:255,g:0,b:0},rosybrown:{r:188,g:143,b:143},royalblue:{r:65,g:105,b:225},saddlebrown:{r:139,g:69,b:19},salmon:{r:250,g:128,b:114},sandybrown:{r:244,g:164,b:96},seagreen:{r:46,g:139,b:87},seashell:{r:255,g:245,b:238},sienna:{r:160,g:82,b:45},silver:{r:192,g:192,b:192},skyblue:{r:135,g:206,b:235},slateblue:{r:106,g:90,b:205},slategray:{r:112,g:128,b:144},slategrey:{r:112,g:128,b:144},snow:{r:255,g:250,b:250},springgreen:{r:0,g:255,b:127},steelblue:{r:70,g:130,b:180},tan:{r:210,g:180,b:140},teal:{r:0,g:128,b:128},thistle:{r:216,g:191,b:216},tomato:{r:255,g:99,b:71},turquoise:{r:64,g:224,b:208},violet:{r:238,g:130,b:238},wheat:{r:245,g:222,b:179},white:{r:255,g:255,b:255},whitesmoke:{r:245,g:245,b:245},yellow:{r:255,g:255,b:0},yellowgreen:{r:154,g:205,b:50}};function a(t){t=t.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(t,e,i,n){return e+e+i+i+n+n});var e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:void 0}function s(t){var e=(t=t.replace(/[ ]/g,"")).match(/^rgb\(([0-9]*),([0-9]*),([0-9]*)\)/i);if(e)e.push("1");else if(!(e=t.match(/^rgba\(([0-9]*),([0-9]*),([0-9]*),([.0-9]*)\)/i)))return;return{r:parseInt(e[1]),g:parseInt(e[2]),b:parseInt(e[3]),a:parseFloat(e[4])}}function u(t){return 1==t.length?"0"+t:""+t}function l(t,e){var i=e>0?255-t:t;return Math.round(i*e)}function h(t){var e,i,n,r=t.h,o=t.s,a=t.l;if(0==o)e=i=n=a;else{var s=function(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+6*(e-t)*i:i<.5?e:i<2/3?t+(e-t)*(2/3-i)*6:t},u=a<.5?a*(1+o):a+o-a*o,l=2*a-u;e=s(l,u,r+1/3),i=s(l,u,r),n=s(l,u,r-1/3)}return{r:Math.round(255*e),g:Math.round(255*i),b:Math.round(255*n)}}function c(t){var e=t.r/255,i=t.g/255,n=t.b/255,r=Math.max(e,i,n),o=Math.min(e,i,n),a=0,s=0,u=(r+o)/2;if(r===o)a=s=0;else{var l=r-o;switch(s=u>.5?l/(2-r-o):l/(r+o),r){case e:a=(i-n)/l+(ih;)i=u[h++],n&&!a.call(s,i)||c.push(t?[i,s[i]]:s[i]);return c}}},iOZG:function(t,e,i){var n=i("MfZA"),r=i("YEtG")("iterator"),o=i("9BM3");t.exports=i("G5U1").getIteratorMethod=function(t){if(void 0!=t)return t[r]||t["@@iterator"]||o[n(t)]}},iTz5:function(t,e,i){var n=i("Gb1H"),r=i("UwWU"),o=String.fromCharCode,a=String.fromCodePoint;n(n.S+n.F*(!!a&&1!=a.length),"String",{fromCodePoint:function(t){for(var e,i=[],n=arguments.length,a=0;n>a;){if(e=+arguments[a++],r(e,1114111)!==e)throw RangeError(e+" is not a valid code point");i.push(e<65536?o(e):o(55296+((e-=65536)>>10),e%1024+56320))}return i.join("")}})},iYyY:function(t,e,i){"use strict";var n=i("Gb1H"),r=i("snR7"),o=function(t){this._t=r(t),this._i=0;var e,i=this._k=[];for(e in t)i.push(e)};i("Cekr")(o,"Object",function(){var t,e=this._k;do{if(this._i>=e.length)return{value:void 0,done:!0}}while(!((t=e[this._i++])in this._t));return{value:t,done:!1}}),n(n.S,"Reflect",{enumerate:function(t){return new o(t)}})},icDv:function(t,e,i){"use strict";var n=i("Gb1H"),r=i("aZcm"),o=i("vJiZ"),a=i("FmWr"),s=i("DbOM"),u=i("L2Mu");n(n.P,"Array",{flatMap:function(t){var e,i,n=o(this);return s(t),e=a(n.length),i=u(n,0),r(i,n,n,e,0,1,t,arguments[1]),i}}),i("M/YL")("flatMap")},iuHC:function(t,e,i){var n=i("Gb1H"),r=i("17ao");n(n.S+n.F*(Number.parseInt!=r),"Number",{parseInt:r})},izpu:function(t,e,i){var n=i("Gb1H");n(n.G,{global:i("T9LF")})},j2vi:function(t,e,i){var n=i("Gb1H"),r=i("snR7"),o=Object.preventExtensions;n(n.S,"Reflect",{preventExtensions:function(t){r(t);try{return o&&o(t),!0}catch(t){return!1}}})},jfaP:function(t,e,i){"use strict";i.d(e,"a",function(){return l});var n=i("m4/l"),r=i("Vs7R"),o=i("8ZqG"),a=i("aCit"),s=i("hGwe"),u=i("Gg2j"),l=function(t){function e(){var e=t.call(this)||this;return e._distance=0,e.className="Polyline",e.element=e.paper.add("path"),e.shapeRendering="auto",e.fill=Object(o.c)(),e.strokeOpacity=1,e.applyTheme(),e}return n.c(e,t),e.prototype.makePath=function(){this._distance=0;var t=this.segments;if(t&&t.length>0){for(var e="",i=0,n=t.length;i0){e+=s.moveTo(r[0]);for(var o=1;o1){for(var p=1;pt){h=i.length;break}}else 1==c.length&&(s=c[0],l=c[0],o=0,a=1)}if(s&&l){var d=(t-o)/(a-o),f=u.getMidPoint(s,l,d);return{x:f.x,y:f.y,angle:e+u.getAngle(s,l)}}}return{x:0,y:0,angle:0}},Object.defineProperty(e.prototype,"realSegments",{get:function(){return this._realSegments},enumerable:!0,configurable:!0}),e}(r.a);a.b.registeredClasses.Polyline=l},jgQn:function(t,e,i){i("gD3S")&&"g"!=/./g.flags&&i("hjwn").f(RegExp.prototype,"flags",{configurable:!0,get:i("x2K9")})},jvLk:function(t,e,i){"use strict";i("jgQn");var n=i("snR7"),r=i("x2K9"),o=i("gD3S"),a=/./.toString,s=function(t){i("wDk4")(RegExp.prototype,"toString",t,!0)};i("AEc5")(function(){return"/a/b"!=a.call({source:"a",flags:"b"})})?s(function(){var t=n(this);return"/".concat(t.source,"/","flags"in t?t.flags:!o&&t instanceof RegExp?r.call(t):void 0)}):"toString"!=a.name&&s(function(){return a.call(this)})},k6kv:function(t,e,i){"use strict";i.d(e,"a",function(){return g});var n=i("m4/l"),r=i("Meme"),o=i("5xph"),a=i("ND2/"),s=i("w4m0"),u=i("aCit"),l=i("tjMS"),h=i("Gg2j"),c=i("hGwe"),p=i("v9UT"),d=i("Mtpk"),f=i("TGuK"),g=function(t){function e(){var e=t.call(this)||this;return e.className="AxisRendererX",e.minGridDistance=120,e.opposite=!1,e.rotation=0,e.width=Object(l.c)(100),e.labels.template.horizontalCenter="middle",e.applyTheme(),e}return n.c(e,t),e.prototype.setAxis=function(e){t.prototype.setAxis.call(this,e),e.layout="vertical"},e.prototype.updateGridContainer=function(){var t=this.axis;if(t){var e=this.gridContainer;e.x=t.pixelX,e.width=t.axisLength}},e.prototype.processRenderer=function(){t.prototype.processRenderer.call(this);var e=this.axis;if(e){e.width instanceof l.a||(e.width=Object(l.c)(100)),p.used(this.line);var i=e.title;i.rotation=0,i.align="center",this.opposite?(this.line.toFront(),i.toBack()):(i.toFront(),this.toBack(),this.line.toBack())}},e.prototype.updateTooltip=function(){if(this.axis){var t=this.line.pixelX,e=this.line.pixelY,i=this.axisLength,n=1e3;this.opposite?this.inside||(e=-1e3,n=1e3):this.inside&&(e=-1e3,n=1e3),this.axis.updateTooltip("vertical",{x:t,y:e,width:i,height:n})}},e.prototype.updateLabelElement=function(t,e,i,n){d.hasValue(n)||(n=t.location),e+=(i-e)*n;var r=this.positionToPoint(e);t.isMeasured=!t.inside;var o,a=0,s=this.gridContainer.maxHeight;this.opposite?(t.inside?(o="top","bottom"==t.valign&&(a=s,o="bottom"),"middle"==t.valign&&(a=s/2,o="middle")):o="bottom",r.y=a):(t.inside?(o="bottom","top"==t.valign&&(a=-s,o="top"),"middle"==t.valign&&(a=-s/2,o="middle")):o="top",r.y+=a),0==t.rotation&&(t.verticalCenter=o),this.positionItem(t,r),this.toggleVisibility(t,e,this.minLabelPosition,this.maxLabelPosition)},Object.defineProperty(e.prototype,"axisLength",{get:function(){var t=this.axis;return t.measuredWidth-t.pixelPaddingRight-t.pixelPaddingLeft||0},enumerable:!0,configurable:!0}),e.prototype.positionToPoint=function(t,e){return{x:this.positionToCoordinate(t),y:0}},e.prototype.pointToPosition=function(t){return this.coordinateToPosition(t.x,t.y)},e.prototype.getPositionRangePath=function(t,e){var i=h.fitToRange(this.positionToCoordinate(t),0,this.axisLength),n=h.fitToRange(this.positionToCoordinate(e),0,this.axisLength),r=Math.abs(n-i),o=this.getHeight(),a=Math.min(i,n);return c.rectToPath({x:a,y:0,width:r,height:o},!0)},e.prototype.updateBreakElement=function(e){t.prototype.updateBreakElement.call(this,e);var i=e.startLine,n=e.endLine,r=e.fillShape,o=e.startPoint,a=e.endPoint,s=e.pixelMarginLeft,u=this.getHeight()-e.pixelMarginTop-e.pixelMarginBottom;o.x=h.fitToRange(o.x,-1,this.axisLength+1),a.x=h.fitToRange(a.x,-1,this.axisLength+1),o.x==a.x&&(o.x<0||o.x>this.axisLength)?e.fillShape.__disabled=!0:e.fillShape.__disabled=!1,i.y=s,i.width=0,i.height=u,n.y=s,n.width=0,n.height=u,r.height=u,r.width=Math.abs(a.x-o.x),r.y=s,r.x=o.x},e.prototype.updateGridElement=function(t,e,i){e+=(i-e)*t.location;var n=this.positionToPoint(e);t.path=c.moveTo({x:0,y:0})+c.lineTo({x:0,y:this.getHeight()}),this.positionItem(t,n),this.toggleVisibility(t,e,0,1)},e.prototype.updateTickElement=function(t,e,i){e+=(i-e)*t.location;var n=this.positionToPoint(e),r=t.length;n.y=p.spritePointToSprite({x:0,y:this.line.pixelY},this.line.parent,this.gridContainer).y,this.opposite?r*=t.inside?1:-1:r*=t.inside?-1:1,t.path=c.moveTo({x:0,y:0})+c.lineTo({x:0,y:r}),this.positionItem(t,n),this.toggleVisibility(t,e,0,1)},e.prototype.updateAxisLine=function(){this.line.path=c.moveTo({x:0,y:0})+c.lineTo({x:this.axisLength,y:0})},e.prototype.updateBaseGridElement=function(){t.prototype.updateBaseGridElement.call(this);var e=this.axis,i=this.getHeight(),n=this.axisLength,r=this.baseGrid,o=e.basePoint.x;if(o<-.2||o>n+.2)r.hide(0);else{var a=p.spritePointToSprite({x:0,y:0},this.gridContainer,r.parent).y;r.path=c.moveTo({x:0,y:0})+c.lineTo({x:0,y:i}),r.moveTo({x:o,y:a}),r.show(0)}},e.prototype.createBreakSprites=function(t){t.startLine=new a.a,t.endLine=new a.a;var e=new s.a;e.setWavedSides(!1,!0,!1,!0),t.fillShape=e},e.prototype.toAxisPosition=function(t){var e=t,i=this.axis;if(i){var n=i.relativePositionSprite,r=i.pixelX;if(n?r=p.spritePointToSprite({x:this.pixelX,y:0},this.parent,n).x:n=i.parent,n)return(e-r/n.innerWidth)/(i.axisLength/n.innerWidth)}return t},e.prototype.updateBullet=function(t,e,i){var n=.5;t instanceof o.a&&(n=t.location),e+=(i-e)*n;var r=this.positionToPoint(e);r.y=p.spritePointToSprite({x:0,y:this.line.pixelY},this.line.parent,this.gridContainer).y,this.positionItem(t,r),this.toggleVisibility(t,e,0,1)},e}(r.a);u.b.registeredClasses.AxisRendererX=g,f.c.push({relevant:f.b.heightXS,state:function(t,e){if(t instanceof g){var i=t.states.create(e);return i.properties.inside=!0,i.properties.maxLabelPosition=.9,i.properties.minLabelPosition=.1,i}return null}}),f.c.push({relevant:f.b.heightXXS,state:function(t,e){if(t instanceof g){var i=t.states.create(e);return i.properties.disabled=!0,i}return null}})},kFp5:function(t,e,i){function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=i("7bL/")("meta"),o=i("DvJ+"),a=i("U3hN"),s=i("hjwn").f,u=0,l=Object.isExtensible||function(){return!0},h=!i("AEc5")(function(){return l(Object.preventExtensions({}))}),c=function(t){s(t,r,{value:{i:"O"+ ++u,w:{}}})},p=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==n(t)?t:("string"==typeof t?"S":"P")+t;if(!a(t,r)){if(!l(t))return"F";if(!e)return"E";c(t)}return t[r].i},getWeak:function(t,e){if(!a(t,r)){if(!l(t))return!0;if(!e)return!1;c(t)}return t[r].w},onFreeze:function(t){return h&&p.NEED&&l(t)&&!a(t,r)&&c(t),t}}},kHwJ:function(t,e,i){var n=i("DVYA");t.exports=Array.isArray||function(t){return"Array"==n(t)}},kJ6f:function(t,e,i){"use strict";var n=i("snR7"),r=i("W0fk");t.exports=function(t){if("string"!==t&&"number"!==t&&"default"!==t)throw TypeError("Incorrect hint");return r(n(this),"number"!=t)}},kQxV:function(t,e,i){"use strict";i.d(e,"a",function(){return l});var n=i("m4/l"),r=i("+qIf"),o=i("o0Lc"),a=i("hD5A"),s=i("v9UT"),u=i("Qkdp"),l=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._interactionEvents=new r.a,e}return n.c(e,t),e.prototype._dispatchSpriteEvent=function(t){if(!this.target.disabled&&!this.target.isTemplate&&this.target.events.isEnabled(t.type)){var e=u.merge(t,{target:this.target});this.target.events.dispatchImmediately(e.type,e)}},e.prototype._dispatchSpritePointEvent=function(t){if(!this.target.disabled&&!this.target.isTemplate&&this.target.events.isEnabled(t.type)){var e=u.merge(t,{target:this.target,spritePoint:s.documentPointToSprite(t.point,this.target),svgPoint:this.target.getSvgPoint(t.point)});this.target.events.dispatchImmediately(e.type,e)}},e.prototype._addInteractionObjectEvent=function(t,e,i,n){var r=this;return this._interactionEvents.insertKeyIfEmpty(t,function(){var o=r.target.interactions.events.on(t,e,i,n);return new a.a(function(){r._interactionEvents.removeKey(t),o.dispose()})}).increment()},e.prototype._on=function(e,i,n,r,o,s){var u=t.prototype._on.call(this,e,i,n,r,o,s),l=[u.disposer];switch(i){case"hit":case"track":case"doublehit":case"wheel":case"wheelup":case"wheeldown":case"wheelleft":case"wheelright":l.push(this._addInteractionObjectEvent(i,this._dispatchSpritePointEvent,this,o));break;case"rightclick":case"down":case"up":case"drag":case"dragged":case"dragstart":case"dragstop":case"over":case"out":case"swipe":case"swipeleft":case"swiperight":case"resize":case"focus":case"blur":case"toggled":l.push(this._addInteractionObjectEvent(i,this._dispatchSpriteEvent,this,o))}switch(i){case"hit":case"doublehit":case"rightclick":case"down":case"up":this.target.clickable=!0;break;case"toggled":this.target.togglable=!0;break;case"drag":case"dragstart":case"dragstop":this.target.draggable=!0;break;case"track":this.target.trackable=!0;break;case"resize":this.target.resizable=!0;break;case"swipe":case"swipeleft":case"swiperight":this.target.swipeable=!0;break;case"wheel":case"wheelup":case"wheeldown":case"wheelleft":case"wheelright":this.target.wheelable=!0;break;case"over":this.target.hoverable=!0;case"out":this.target.hoverable=!0;break;case"focus":case"blur":this.target.focusable=!0}return u.disposer=new a.c(l),u},e}(o.b)},kcsd:function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},kg8J:function(t,e,i){var n=i("sxbc"),r=Math.pow,o=r(2,-52),a=r(2,-23),s=r(2,127)*(2-a),u=r(2,-126);t.exports=Math.fround||function(t){var e,i,r=Math.abs(t),l=n(t);return rs||i!=i?l*(1/0):l*i}},l2gh:function(t,e,i){var n=i("Gb1H");n(n.S,"Math",{iaddh:function(t,e,i,n){var r=t>>>0,o=i>>>0;return(e>>>0)+(n>>>0)+((r&o|(r|o)&~(r+o>>>0))>>>31)|0}})},l3rq:function(t,e,i){var n=i("Gb1H");n(n.S,"Math",{isubh:function(t,e,i,n){var r=t>>>0,o=i>>>0;return(e>>>0)-(n>>>0)-((~r&o|~(r^o)&r-o>>>0)>>>31)|0}})},l3wE:function(t,e,i){i("5lay")("getOwnPropertyNames",function(){return i("8rbL").f})},l9Vx:function(t,e,i){"use strict";var n=i("Gb1H"),r=i("oGmz")(!1);n(n.P,"String",{codePointAt:function(t){return r(this,t)}})},lKl7:function(t,e,i){var n=i("Gb1H");n(n.P,"Array",{fill:i("lgQj")}),i("M/YL")("fill")},lLkc:function(t,e,i){"use strict";var n=i("DbOM"),r=i("DvJ+"),o=i("yOPk"),a=[].slice,s={};t.exports=Function.bind||function(t){var e=n(this),i=a.call(arguments,1),u=function n(){var r=i.concat(a.call(arguments));return this instanceof n?function(t,e,i){if(!(e in s)){for(var n=[],r=0;r1?arguments[1]:void 0,i),u=a>2?arguments[2]:void 0,l=void 0===u?i:r(u,i);l>s;)e[s++]=t;return e}},lhvN:function(t,e,i){"use strict";var n=i("4BRe"),r=i("kcsd");t.exports=function(t){var e=String(r(this)),i="",o=n(t);if(o<0||o==1/0)throw RangeError("Count can't be negative");for(;o>0;(o>>>=1)&&(e+=e))1&o&&(i+=e);return i}},"m4/l":function(t,e,i){"use strict";e.c=function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)},i.d(e,"a",function(){return r}),e.b=function(t,e,i,n){return new(i||(i=Promise))(function(r,o){function a(t){try{u(n.next(t))}catch(t){o(t)}}function s(t){try{u(n.throw(t))}catch(t){o(t)}}function u(t){t.done?r(t.value):new i(function(e){e(t.value)}).then(a,s)}u((n=n.apply(t,e||[])).next())})},e.d=function(t,e){var i,n,r,o,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(i)throw new TypeError("Generator is already executing.");for(;a;)try{if(i=1,n&&(r=2&o[0]?n.return:o[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,o[1])).done)return r;switch(n=0,r&&(o=[2&o[0],r.value]),o[0]){case 0:case 1:r=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(r=(r=a.trys).length>0&&r[r.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}}}function a(t,e){var i="function"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,r,o=i.call(t),a=[];try{for(;(void 0===e||e-->0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){r={error:t}}finally{try{n&&!n.done&&(i=o.return)&&i.call(o)}finally{if(r)throw r.error}}return a}},mIpt:function(t,e,i){"use strict";i.d(e,"a",function(){return a});var n=i("7XB+"),r=i("v9UT"),o=i("Mtpk"),a=function(){function t(){}return t.prototype.parse=function(t){return[]},Object.defineProperty(t.prototype,"parsableNumbers",{get:function(){return this.options.numberFields&&this.options.numberFields.length>0},enumerable:!0,configurable:!0}),t.prototype.maybeToNumber=function(t,e){return-1!==this.options.numberFields.indexOf(t)?r.anyToNumber(e):e},Object.defineProperty(t.prototype,"parsableDates",{get:function(){return this.options.dateFields&&this.options.dateFields.length>0},enumerable:!0,configurable:!0}),t.prototype.maybeToDate=function(t,e){return-1!==this.options.dateFields.indexOf(t)?this.options.dateFormatter.parse(e,this.dateFormat):e},t.prototype.maybeToEmpty=function(t){return o.hasValue(t)&&""!=t||!o.hasValue(this.options.emptyAs)?t:this.options.emptyAs},Object.defineProperty(t.prototype,"dateFormatter",{get:function(){return this.options.dateFormatter||(this.options.dateFormatter=new n.a,this.options.dateFormat&&(this.options.dateFormat=this.options.dateFormat)),this.options.dateFormatter},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"dateFormat",{get:function(){return this.options.dateFormat||this.dateFormatter.inputDateFormat},enumerable:!0,configurable:!0}),t}()},mL9U:function(t,e,i){var n=i("Gb1H");n(n.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},mOSd:function(t,e,i){var n=i("Gb1H"),r=i("iAlL")(!1);n(n.S,"Object",{values:function(t){return r(t)}})},ma7z:function(t,e,i){var n=i("6MWL"),r=i("snR7"),o=n.key,a=n.map,s=n.store;n.exp({deleteMetadata:function(t,e){var i=arguments.length<3?void 0:o(arguments[2]),n=a(r(e),i,!1);if(void 0===n||!n.delete(t))return!1;if(n.size)return!0;var u=s.get(e);return u.delete(i),!!u.size||s.delete(e)}})},mntN:function(t,e,i){var n=i("EhJv"),r=i("FmWr"),o=i("UwWU");t.exports=function(t){return function(e,i,a){var s,u=n(e),l=r(u.length),h=o(a,l);if(t&&i!=i){for(;l>h;)if((s=u[h++])!=s)return!0}else for(;l>h;h++)if((t||h in u)&&u[h]===i)return t||h||0;return!t&&-1}}},nAZS:function(t,e,i){var n=i("Gb1H"),r=i("kcsd"),o=i("AEc5"),a=i("brDO"),s="["+a+"]",u=RegExp("^"+s+s+"*"),l=RegExp(s+s+"*$"),h=function(t,e,i){var r={},s=o(function(){return!!a[t]()||"​…"!="​…"[t]()}),u=r[t]=s?e(c):a[t];i&&(r[i]=u),n(n.P+n.F*s,"String",r)},c=h.trim=function(t,e){return t=String(r(t)),1&e&&(t=t.replace(u,"")),2&e&&(t=t.replace(l,"")),t};t.exports=h},nEmP:function(t,e,i){"use strict";i("nAZS")("trimRight",function(t){return function(){return t(this,2)}},"trimEnd")},nHHr:function(t,e,i){var n=i("eBSV"),r=i("Wbjh"),o=i("EhJv"),a=i("W0fk"),s=i("U3hN"),u=i("HW78"),l=Object.getOwnPropertyDescriptor;e.f=i("gD3S")?l:function(t,e){if(t=o(t),e=a(e,!0),u)try{return l(t,e)}catch(t){}if(s(t,e))return r(!n.f.call(t,e),t[e])}},nPzZ:function(t,e,i){"use strict";i.d(e,"a",function(){return d});var n=i("m4/l"),r=i("Inf5"),o=i("Vs7R"),a=i("Gg2j"),s=i("hGwe"),u=i("Mtpk"),l=i("8ZqG"),h=i("CuFa"),c=i("sxA1"),p=i("C84C"),d=function(t){function e(){var e=t.call(this)||this;e.className="Slice3D",e.layout="none";var i=e.createChild(o.a);e.edge=i,i.shouldClone=!1,i.isMeasured=!1,i.toBack(),e.angle=30,e.depth=20;var n=e.createChild(o.a);e.sideA=n,n.shouldClone=!1,n.isMeasured=!1;var r=e.createChild(o.a);return e.sideB=r,r.shouldClone=!1,r.isMeasured=!1,e.applyTheme(),e}return n.c(e,t),e.prototype.setFill=function(e){var i;if(t.prototype.setFill.call(this,e),e instanceof l.a)i=e.hex;else if(e instanceof c.a||e instanceof h.a)i=e.stops.getIndex(0).color.hex;else{var n=new p.a;n.lightness=-.25,this.edge.filters.push(n),this.sideA.filters.push(n.clone()),this.sideB.filters.push(n.clone())}if(i){var r=Object(l.c)(i).lighten(-.25);this.edge.fill=r,this.sideA.fill=r,this.sideB.fill=r,this.edge.stroke=r,this.sideA.stroke=r,this.sideB.stroke=r}},e.prototype.draw=function(){if(this.cornerRadius=0,this.innerCornerRadius=0,t.prototype.draw.call(this),0!==this.arc&&this.radius>0&&this.depth>0){this.sideB.show(0),this.sideA.show(0),this.edge.show(0);for(var e=this.startAngle,i=this.arc,n=this.pixelInnerRadius||0,r=this.radiusY||0,o=this.radius,u=e+i,l=r/o*n,h={x:a.cos(e)*n,y:a.sin(e)*l},c={x:a.cos(e)*o,y:a.sin(e)*r},p={x:a.cos(u)*o,y:a.sin(u)*r},d={x:a.cos(u)*n,y:a.sin(u)*l},f=this.depth,g={x:h.x,y:h.y-f},m={x:c.x,y:c.y-f},y={x:p.x,y:p.y-f},b={x:d.x,y:d.y-f},v="",x=Math.ceil(i/5),_=i/x,P=e,w=m,O=0;O0&&P<180){v+=s.moveTo(w);var S={x:a.cos(P)*o,y:a.sin(P)*r-f};v+=s.lineTo({x:w.x,y:w.y+f}),v+=s.arcToPoint({x:S.x,y:S.y+f},o,r,!0),v+=s.lineTo(S),v+=s.arcToPoint(w,o,r),v+="z",w=S}else{v+=s.moveTo(w);S={x:a.cos(P)*o,y:a.sin(P)*r-f};v+=s.arcToPoint(S,o,r,!0),v+=s.lineTo({x:S.x,y:S.y+f}),v+=s.arcToPoint({x:w.x,y:w.y+f},o,r),v+=s.lineTo(w),v+="z",w=S}w=g,P=e;for(O=0;O0&&P<180){v+=s.moveTo(w);S={x:a.cos(P)*n,y:a.sin(P)*l-f};v+=s.lineTo({x:w.x,y:w.y+f}),v+=s.arcToPoint({x:S.x,y:S.y+f},n,l,!0),v+=s.lineTo(S),v+=s.arcToPoint(w,n,l),v+="z",w=S}else{v+=s.moveTo(w);S={x:a.cos(P)*n,y:a.sin(P)*l-f};v+=s.arcToPoint(S,n,l,!0),v+=s.lineTo({x:S.x,y:S.y+f}),v+=s.arcToPoint({x:w.x,y:w.y+f},n,l),v+=s.lineTo(w),v+="z",w=S}this.edge.path=v,this.sideA.path=s.moveTo(h)+s.lineTo(c)+s.lineTo(m)+s.lineTo(g)+s.closePath(),this.sideB.path=s.moveTo(p)+s.lineTo(d)+s.lineTo(b)+s.lineTo(y)+s.closePath(),this.startAngle<90?this.sideA.toBack():this.sideA.toFront(),this.startAngle+this.arc>90?this.sideB.toBack():this.sideB.toFront(),this.slice.dy=-f}else this.sideA.hide(0),this.sideB.hide(0),this.edge.hide(0)},Object.defineProperty(e.prototype,"depth",{get:function(){return this.getPropertyValue("depth")},set:function(t){this.setPropertyValue("depth",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"angle",{get:function(){var t=this.getPropertyValue("angle");return u.isNumber(t)||(t=0),t},set:function(t){this.setPropertyValue("angle",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radiusY",{get:function(){var t=this.getPropertyValue("radiusY");return u.isNumber(t)||(t=this.radius-this.radius*this.angle/90),t},set:function(t){this.setPropertyValue("radiusY",t,!0)},enumerable:!0,configurable:!0}),e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.edge.copyFrom(e.edge),this.sideA.copyFrom(e.sideA),this.sideB.copyFrom(e.sideB)},e}(r.a)},nZH2:function(t,e,i){var n=i("Gb1H");n(n.P,"Array",{copyWithin:i("y2pX")}),i("M/YL")("copyWithin")},ncT3:function(t,e,i){"use strict";i.d(e,"a",function(){return c});var n=i("m4/l"),r=i("C6dT"),o=i("Vs7R"),a=i("Ybtf"),s=i("/e9j"),u=i("tjMS"),l=i("Qkdp"),h=i("hGwe"),c=function(t){function e(){var e=t.call(this)||this;return e.className="Cone",e.angle=30,e.radius=Object(u.c)(100),e.topRadius=Object(u.c)(100),e.top=e.createChild(a.a),e.top.shouldClone=!1,e.bottom=e.createChild(a.a),e.bottom.shouldClone=!1,e.body=e.createChild(o.a),e.body.shouldClone=!1,e.body.setElement(e.paper.add("path")),e.layout="none",e.bodyFillModifier=new s.a,e.bodyFillModifier.lightnesses=[0,-.25,0],e.body.fillModifier=e.bodyFillModifier,e.applyTheme(),e}return n.c(e,t),e.prototype.draw=function(){t.prototype.draw.call(this),l.copyProperties(this,this.top,o.b),l.copyProperties(this,this.bottom,o.b),l.copyProperties(this,this.body,o.b);var e,i,n,r=this.innerWidth,a=this.innerHeight,s=this.bottom,u=this.top,c=this.angle;"horizontal"==this.orientation?(e=a/2,s.y=a/2,u.y=a/2,u.x=r,i=(90-c)/90,n=0,this.bodyFillModifier.gradient.rotation=90):(i=0,n=(90-c)/90,e=r/2,s.y=a,s.x=r/2,u.x=r/2,this.bodyFillModifier.gradient.rotation=0);var p,d=this.radius.value*e,f=this.topRadius.value*e;s.radius=d-d*i,s.radiusY=d-d*n,u.radius=f-f*i,u.radiusY=f-f*n,p="horizontal"==this.orientation?h.moveTo({x:0,y:a/2-s.radiusY})+h.arcTo(-90,-180,s.radius,s.radiusY)+h.lineTo({x:r,y:a/2+u.radiusY})+h.arcTo(90,180,u.radius,u.radiusY)+h.closePath():h.moveTo({x:r/2-u.radius,y:0})+h.arcTo(180,-180,u.radius,u.radiusY)+h.lineTo({x:r/2+s.radius,y:a})+h.arcTo(0,180,s.radius,s.radiusY)+h.closePath(),this.body.path=p},Object.defineProperty(e.prototype,"angle",{get:function(){return this.getPropertyValue("angle")},set:function(t){this.setPropertyValue("angle",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPropertyValue("radius",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"topRadius",{get:function(){return this.getPropertyValue("topRadius")},set:function(t){this.setPropertyValue("topRadius",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"orientation",{get:function(){return this.getPropertyValue("orientation")},set:function(t){this.setPropertyValue("orientation",t,!0)},enumerable:!0,configurable:!0}),e}(r.a)},necU:function(t,e,i){var n=i("Gb1H");n(n.S,"Reflect",{has:function(t,e){return e in t}})},o0Lc:function(t,e,i){"use strict";i.d(e,"a",function(){return u}),i.d(e,"b",function(){return l});var n=i("m4/l"),r=i("hD5A"),o=i("hJ5i"),a=i("/9XX"),s=i("Mtpk"),u=function(){function t(){this._listeners=[],this._killed=[],this._disabled={},this._iterating=0,this._enabled=!0,this._disposed=!1}return t.prototype.isDisposed=function(){return this._disposed},t.prototype.dispose=function(){if(!this._disposed){this._disposed=!0;var t=this._listeners;this._iterating=1,this._listeners=null,this._disabled=null;try{o.each(t,function(t){t.disposer.dispose()})}finally{this._killed=null,this._iterating=null}}},t.prototype.hasListeners=function(){return 0!==this._listeners.length},t.prototype.hasListenersByType=function(t){return o.any(this._listeners,function(e){return(null===e.type||e.type===t)&&!e.killed})},t.prototype.enable=function(){this._enabled=!0},t.prototype.disable=function(){this._enabled=!1},t.prototype.enableType=function(t){delete this._disabled[t]},t.prototype.disableType=function(t,e){void 0===e&&(e=1/0),this._disabled[t]=e},t.prototype._removeListener=function(t){if(0===this._iterating){var e=this._listeners.indexOf(t);if(-1===e)throw new Error("Invalid state: could not remove listener");this._listeners.splice(e,1)}else this._killed.push(t)},t.prototype._removeExistingListener=function(t,e,i,n){if(this._disposed)throw new Error("EventDispatcher is disposed");this._eachListener(function(r){r.once!==t||r.type!==e||null!=i&&r.callback!==i||r.context!==n||r.disposer.dispose()})},t.prototype.isEnabled=function(t){if(this._disposed)throw new Error("EventDispatcher is disposed");return this._enabled&&this._listeners.length>0&&this.hasListenersByType(t)&&null==this._disabled[t]},t.prototype.has=function(t,e,i){return-1!==o.findIndex(this._listeners,function(n){return!0!==n.once&&n.type===t&&(null==e||n.callback===e)&&n.context===i})},t.prototype._shouldDispatch=function(t){if(this._disposed)throw new Error("EventDispatcher is disposed");var e=this._disabled[t];return s.isNumber(e)?(e<=1?delete this._disabled[t]:--this._disabled[t],!1):this._enabled},t.prototype._eachListener=function(t){var e=this;++this._iterating;try{o.each(this._listeners,t)}finally{--this._iterating,0===this._iterating&&0!==this._killed.length&&(o.each(this._killed,function(t){e._removeListener(t)}),this._killed.length=0)}},t.prototype.dispatchImmediately=function(t,e){this._shouldDispatch(t)&&this._eachListener(function(i){i.killed||null!==i.type&&i.type!==t||i.dispatch(t,e)})},t.prototype.dispatch=function(t,e){this._shouldDispatch(t)&&this._eachListener(function(i){i.killed||null!==i.type&&i.type!==t||a.e(function(){i.killed||i.dispatch(t,e)})})},t.prototype._on=function(t,e,i,n,o,a){var s=this;if(this._disposed)throw new Error("EventDispatcher is disposed");this._removeExistingListener(t,e,i,n);var u={type:e,callback:i,context:n,shouldClone:o,dispatch:a,killed:!1,once:t,disposer:new r.b(function(){u.killed=!0,s._removeListener(u)})};return this._listeners.push(u),u},t.prototype.onAll=function(t,e,i){return void 0===i&&(i=!0),this._on(!1,null,t,e,i,function(i,n){return t.call(e,i,n)}).disposer},t.prototype.on=function(t,e,i,n){return void 0===n&&(n=!0),this._on(!1,t,e,i,n,function(t,n){return e.call(i,n)}).disposer},t.prototype.once=function(t,e,i,n){void 0===n&&(n=!0);var r=this._on(!0,t,e,i,n,function(t,n){r.disposer.dispose(),e.call(i,n)});return r.disposer},t.prototype.off=function(t,e,i){this._removeExistingListener(!1,t,e,i)},t.prototype.copyFrom=function(t){var e=this;if(this._disposed)throw new Error("EventDispatcher is disposed");if(t===this)throw new Error("Cannot copyFrom the same TargetedEventDispatcher");o.each(t._listeners,function(t){!t.killed&&t.shouldClone&&(null===t.type?e.onAll(t.callback,t.context):t.once?e.once(t.type,t.callback,t.context):e.on(t.type,t.callback,t.context))})},t}(),l=function(t){function e(e){var i=t.call(this)||this;return i.target=e,i}return n.c(e,t),e.prototype.copyFrom=function(t){var e=this;if(this._disposed)throw new Error("EventDispatcher is disposed");if(t===this)throw new Error("Cannot copyFrom the same TargetedEventDispatcher");o.each(t._listeners,function(i){i.context!==t.target&&!i.killed&&i.shouldClone&&(null===i.type?e.onAll(i.callback,i.context):i.once?e.once(i.type,i.callback,i.context):e.on(i.type,i.callback,i.context))})},e}(u)},oAPj:function(t,e,i){var n=i("nHHr"),r=i("Gb1H"),o=i("snR7");r(r.S,"Reflect",{getOwnPropertyDescriptor:function(t,e){return n.f(o(t),e)}})},oC3T:function(t,e,i){"use strict";i.d(e,"a",function(){return l});var n=i("m4/l"),r=i("Tjl+"),o=i("1yyj"),a=i("Gg2j"),s=i("0FpR"),u=i("Mtpk"),l=function(t){function e(e){var i=t.call(this)||this;return i._bboxes=[],i.morphDuration=800,i.morphEasing=s.cubicOut,i.morphToSingle=!0,i.scaleRatio=1,i.className="Morpher",i.morphable=e,i.applyTheme(),i}return n.c(e,t),e.prototype.morphToPolygon=function(t,e,i){var n=this.morphable.currentPoints;if(n&&t){this.sortPoints(n),this.sortPoints(t),this._morphFromPointsReal=[],this._morphToPointsReal=[],u.hasValue(e)||(e=this.morphDuration),u.hasValue(i)||(i=this.morphEasing),this._morphFromPointsReal=this.normalizePoints(t,n),this._morphToPointsReal=this.normalizePoints(n,t),this.morphable.currentPoints=this._morphFromPointsReal;var r=new o.a(this,{property:"morphProgress",from:0,to:1},e,i);return this._disposers.push(r),r.start(),r}},e.prototype.normalizePoints=function(t,e){for(var i=0,n=t.length;in.width*n.height?-1:1});for(var e=[],i=0,n=t.length;iv&&(v=h.length);for(var x=360/((v=(d=this.addPoints(h,v)).length)-1),_=0;_0)for(var O=0,S=c.length;O0){var c=t[t.length-1];for(u=n.length;u0)for(var v=d.x+d.width/2,x=d.y+d.height/2,_=0,P=h.length;_0&&l&&l.length>0){for(var c=[],p=0,d=s.length;p0&&h&&h.length>0){for(var y=[],b=0,v=u.length;b=l?t?"":void 0:(o=s.charCodeAt(u))<55296||o>56319||u+1===l||(a=s.charCodeAt(u+1))<56320||a>57343?t?s.charAt(u):o:t?s.slice(u,u+2):a-56320+(o-55296<<10)+65536}}},oMjf:function(t,e,i){var n=i("6MWL"),r=i("snR7"),o=n.get,a=n.key;n.exp({getOwnMetadata:function(t,e){return o(t,r(e),arguments.length<3?void 0:a(arguments[2]))}})},oVsg:function(t,e,i){var n=i("Gb1H"),r=i("nHHr").f,o=i("snR7");n(n.S,"Reflect",{deleteProperty:function(t,e){var i=r(o(t),e);return!(i&&!i.configurable)&&delete t[e]}})},"of/x":function(t,e,i){"use strict";i("nAZS")("trimLeft",function(t){return function(){return t(this,1)}},"trimStart")},ohjg:function(t,e,i){"use strict";i.d(e,"a",function(){return h});var n=i("m4/l"),r=i("Tjl+"),o=i("P7v+"),a=i("1yyj"),s=i("vMqJ"),u=i("Qkdp"),l=i("Wglt"),h=function(t){function e(){var e=t.call(this)||this;return e.properties={},e.isTemplate=!1,e._scale=1,e._nonScaling=!0,e.className="Filter",e.filterPrimitives=new s.b,e.filterPrimitives.events.on("inserted",function(t){e._disposers.push(t.newValue)}),e.width=120,e.height=120,e.applyTheme(),e}return n.c(e,t),e.prototype.appendPrimitives=function(t){l.each(this.filterPrimitives.iterator(),function(e){t.add(e)})},e.prototype.animate=function(t,e,i){return new a.a(this,t,e,i).start()},Object.defineProperty(e.prototype,"width",{get:function(){return this.properties.width},set:function(t){this.properties.width=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"height",{get:function(){return this.properties.height},set:function(t){this.properties.height=t},enumerable:!0,configurable:!0}),e.prototype.copyFrom=function(e){var i=this;t.prototype.copyFrom.call(this,e),u.each(e.properties,function(t,e){i[t]=e})},Object.defineProperty(e.prototype,"paper",{get:function(){return this._paper?this._paper:Object(o.b)()},set:function(t){this._paper!=t&&(this._paper=t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"animations",{get:function(){return this._animations||(this._animations=[],this._disposers.push(new a.b(this._animations))),this._animations},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"scale",{get:function(){return this._scale},set:function(t){this._scale=t,this.updateScale()},enumerable:!0,configurable:!0}),e.prototype.updateScale=function(){},Object.defineProperty(e.prototype,"nonScaling",{get:function(){return this._nonScaling},set:function(t){this._nonScaling=t,t||(this._scale=1),this.updateScale()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"sprite",{set:function(t){this.setSprite(t)},enumerable:!0,configurable:!0}),e.prototype.setSprite=function(t){this._sprite&&this._sprite!=t&&this._sprite.filters.removeValue(this),this._sprite=t},e}(r.a)},osLN:function(t,e,i){var n=i("Gb1H");n(n.P+n.R,"Set",{toJSON:i("dJEq")("Set")})},p3CN:function(t,e,i){var n=i("hjwn"),r=i("snR7"),o=i("3BzE");t.exports=i("gD3S")?Object.defineProperties:function(t,e){r(t);for(var i,a=o(e),s=a.length,u=0;s>u;)n.f(t,i=a[u++],e[i]);return t}},p4R3:function(t,e,i){var n=i("Gb1H");n(n.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},p9TX:function(t,e,i){"use strict";i.d(e,"a",function(){return f});var n=i("m4/l"),r=i("C6dT"),o=i("aCit"),a=i("MipW"),s=i("hD5A"),u=i("MIZb"),l=i("Gg2j"),h=i("v9UT"),c=i("Mtpk"),p=i("58Sn"),d=i("TGuK"),f=function(t){function e(){var e=t.call(this)||this;return e.isOversized=!1,e.className="Label",e.fill=(new u.a).getFor("text"),e.wrap=!1,e.truncate=!1,e.fullWords=!0,e.ellipsis="...",e.textAlign="start",e.textValign="top",e.layout="absolute",e.baseLineRatio=-.27,e.events.on("maxsizechanged",function(){e.inited&&e.handleMaxSize()},e,!1),e.events.once("validated",e.handleValidate,e,!1),e.applyTheme(),e}return n.c(e,t),e.prototype.afterDraw=function(){t.prototype.afterDraw.call(this),this.validatePosition()},e.prototype.setPaper=function(e){var i=t.prototype.setPaper.call(this,e);return i&&this.hardInvalidate(),i},e.prototype.handleValidate=function(){!this.currentText&&!this.text||0!=this.bbox.width&&0!=this.bbox.height||o.b.events.once("exitframe",this.hardInvalidate,this)},e.prototype.handleMaxSize=function(){this.bbox.width>this.availableWidth||this.bbox.widththis.availableHeight||this.bbox.heightr){this.isOversized=!0;var k=O.element.textContent,I=O.bbox.width/k.length,D=l.min(Math.ceil((O.bbox.width-r)/I),k.length);if(this.truncate){var V=!1,M=O.element.node;if(M&&M.childNodes)for(var j=O.element.node.childNodes.length-1;j>=0;j--){var A=O.element.node.childNodes[j];if(V&&O.bbox.width<=r&&(A.textContent+=" "+this.ellipsis,O.bbox=O.element.getBBox(),O.bbox.width=Math.floor(O.bbox.width),O.bbox.width<=r))break;V=!1;var F=A.textContent;for(k=O.element.textContent,D=l.min(Math.ceil((O.bbox.width-r)/I),k.length);O.bbox.width>r&&D<=k.length&&D>0;){(L=l.max(F.length-D-this.ellipsis.length,1))<=1&&(D=0,j>0&&(V=!0,O.element.node.removeChild(A))),(F=h.truncateWithEllipsis(F,L,this.ellipsis,this.fullWords,this.rtl)).length>L&&this.fullWords&&(F=h.truncateWithEllipsis(F,L,this.ellipsis,!1,this.rtl)),A.textContent=F,O.bbox=O.element.getBBox(),O.bbox.width=Math.floor(O.bbox.width),D=Math.ceil(1.1*D)}w=!0}}else{if(O.element.node){for(var E=O.element.node.lastChild,R=void 0;O.bbox.width>r&&D<=k.length&&D>0;){var L=l.max(T.text.length-D,1);P?R=h.splitTextByCharCount(T.text,L,!0,this.rtl):((R=h.splitTextByCharCount(T.text,L,!0,this.rtl))[0].length>L||1===L)&&(O.element.node.removeChild(E),D=0),D>0&&(E.textContent=Object(a.b)().cleanUp(h.trim(R.shift()))),O.bbox=O.element.getBBox(),O.bbox.width=Math.floor(O.bbox.width),D=Math.ceil(1.1*D)}if(R.length>0){var N="";c.hasValue(R)&&(this.rtl?N+=R.join("")+y:N+=y+R.join("").replace(/([\[\]]{1})/g,"$1$1"));for(var B=S+1;B0&&(m+=W),g.removeElement(G)}}this.maybeHideOversized(),this.measureFailed=!1,0!=this.bbox.width&&0!=this.bbox.height||(this.measureFailed=!0),this._measuredWidth=l.max(this.bbox.width,this.pixelWidth-this.pixelPaddingLeft-this.pixelPaddingRight),this._measuredHeight=l.max(this.bbox.height,this.pixelHeight-this.pixelPaddingTop-this.pixelPaddingBottom),this.alignSVGText(),this.bbox.width=this._measuredWidth,this.bbox.height=this._measuredHeight,i==this._measuredHeight&&e==this._measuredWidth||this.dispatch("transformed"),this.hideUnused(d.length)}else{this.element.removeAttr("display"),this.resetBBox(),(g=this.element).removeChildren();var U=this.paper.foreignObject();g.add(U),this.maxWidth&&U.attr({width:this.maxWidth}),this.maxHeight&&U.attr({height:this.maxHeight});var z=this.getHTMLLineElement(p);U.node.appendChild(z),z.style.display="inline-block";var Y=z.clientWidth,X=z.clientHeight;z.style.display="block",this._bbox={x:0,y:0,width:Y,height:X},U.attr({width:Y,height:X}),this.maybeHideOversized(),this._measuredWidth=l.max(this.bbox.width,this.pixelWidth-this.pixelPaddingLeft-this.pixelPaddingRight),this._measuredHeight=l.max(this.bbox.height,this.pixelHeight-this.pixelPaddingTop-this.pixelPaddingBottom),this.bbox.width=this._measuredWidth,this.bbox.height=this._measuredHeight,this.truncate&&(z.style.overflow="hidden"),(Y>r||X>o)&&(this.isOversized=!0)}this.setStyles(),this.updateCenter(),this.updateBackground(),"none"==f&&this.group.attr({display:"none"}),this.pathElement&&this.paper.appendDef(this.pathElement)}else this.element.attr({display:"none"})}}else n.events.once("maxsizechanged",this.hardInvalidate,this,!1)},e.prototype.maybeHideOversized=function(){this.hideOversized&&(this.availableWidth=0;r--){var o=e[r];if(o.setAttribute("text-anchor",this.textAlign),this.textPathElement)o.removeAttribute("x"),o.removeAttribute("y");else{switch(this.textAlign){case"middle":o.setAttribute("x",(i/2).toString()+"px");break;case"end":this.rtl||o.setAttribute("x",i.toString());break;default:this.rtl?o.setAttribute("x",i.toString()):o.removeAttribute("text-anchor")}var a=c.toNumber(o.getAttribute("y"));switch(this.textValign){case"middle":o.setAttribute("y",(a+(n-this.bbox.height)/2).toString());break;case"bottom":o.setAttribute("y",(a+n-this.bbox.height).toString());break;default:o.setAttribute("y",a.toString())}}}}},e.prototype.getSVGLineElement=function(t,e){var i=this.paper.addGroup("text");return i.textContent=t,i.attr({x:"0"}),c.hasValue(e)&&i.attr({y:e.toString()}),(this.truncate||this.wrap)&&i.attr({overflow:"hidden"}),this.rtl&&i.attr({direction:"rtl"}),i},e.prototype.resetBBox=function(){this._bbox={x:0,y:0,width:0,height:0}},e.prototype.getHTMLLineElement=function(t){var e=document.createElement("div");switch(e.innerHTML=t,this.textAlign){case"middle":e.style.textAlign="center";break;case"end":e.style.textAlign="right"}return this.wrap?e.style.wordWrap="break-word":e.style.whiteSpace="nowrap",this.rtl&&(e.style.direction="rtl"),c.hasValue(this.fill)&&(e.style.color=this.fill.toString()),e},e.prototype.setStyles=function(){var t=this.element;!this.selectable||this.draggable||this.resizable||this.swipeable?t.addStyle({webkitUserSelect:"none",msUserSelect:"none"}):this.selectable&&(t.removeStyle("webkitUserSelect"),t.removeStyle("msUserSelect"))},e.prototype.hideUnused=function(t){this.initLineCache();var e=this.getCache("lineInfo");if(e.length>=t)for(var i=t;it?e[t]:void 0},e.prototype.addLineInfo=function(t,e){this.initLineCache(),this.getCache("lineInfo")[e]=t},e.prototype.initLineCache=function(){c.hasValue(this.getCache("lineInfo"))||this.setCache("lineInfo",[],0)},e.prototype.setDataItem=function(e){this._sourceDataItemEvents&&this._sourceDataItemEvents.dispose(),e&&(this._sourceDataItemEvents=new s.c([e.events.on("valuechanged",this.invalidate,this,!1),e.events.on("workingvaluechanged",this.invalidate,this,!1),e.events.on("calculatedvaluechanged",this.invalidate,this,!1),e.events.on("propertychanged",this.invalidate,this,!1)])),t.prototype.setDataItem.call(this,e)},Object.defineProperty(e.prototype,"availableWidth",{get:function(){return c.hasValue(this.maxWidth)?this.maxWidth:this.pixelWidth},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"availableHeight",{get:function(){return c.hasValue(this.maxHeight)?this.maxHeight:this.pixelHeight},enumerable:!0,configurable:!0}),e.prototype.getSvgElement=function(t,e){var i=this.paper.add("tspan");return i.textContent=t,e&&i.node.setAttribute("style",e),i},e.prototype.deepInvalidate=function(){t.prototype.deepInvalidate.call(this),this.hardInvalidate()},Object.defineProperty(e.prototype,"readerTitle",{get:function(){var t=this.getPropertyValue("readerTitle");return t||(t=this.populateString(h.plainText(h.isNotEmpty(this.html)?this.html:this.text))),t},set:function(t){t=c.toText(t),this.setPropertyValue("readerTitle",t)&&this.applyAccessibility()},enumerable:!0,configurable:!0}),e}(r.a);o.b.registeredClasses.Label=f,d.c.push({relevant:d.b.heightXS,state:function(t,e){if(t instanceof f&&t.parent&&t.parent.isBaseSprite){var i=t.states.create(e);return i.properties.disabled=!0,i}return null}})},pR7v:function(t,e,i){"use strict";i.d(e,"b",function(){return f}),i.d(e,"a",function(){return g});var n=i("m4/l"),r=i("AAkI"),o=i("OXm9"),a=i("hD5A"),s=i("aCit"),u=i("ZoDA"),l=i("Gg2j"),h=i("Wglt"),c=i("Qkdp"),p=i("Mtpk"),d=i("v9UT"),f=function(t){function e(){var e=t.call(this)||this;return e.className="ValueAxisDataItem",e.values.value={},e.values.endValue={},e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"value",{get:function(){return this.values.value.value},set:function(t){this.setValue("value",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endValue",{get:function(){return this.values.endValue.value},set:function(t){this.setValue("endValue",t)},enumerable:!0,configurable:!0}),e}(r.b),g=function(t){function e(){var e=t.call(this)||this;return e._stepDecimalPlaces=0,e._baseValue=0,e._adjustedStart=0,e._adjustedEnd=1,e._extremesChanged=!1,e._deltaMinMax=1,e.calculateTotals=!1,e.className="ValueAxis",e.axisFieldName="value",e.setPropertyValue("maxZoomFactor",1e3),e.setPropertyValue("extraMin",0),e.setPropertyValue("extraMax",0),e.setPropertyValue("strictMinMax",!1),e.setPropertyValue("maxPrecision",Number.MAX_VALUE),e.keepSelection=!1,e.includeRangesInMinMax=!1,e.applyTheme(),e}return n.c(e,t),e.prototype.fillRule=function(t){var e=t.value,i=t.component;t.axisFill.disabled||(l.round(e/i.step/2,5)==Math.round(e/i.step/2)?t.axisFill.__disabled=!0:t.axisFill.__disabled=!1)},e.prototype.createDataItem=function(){return new f},e.prototype.createAxisBreak=function(){return new u.a},e.prototype.dataChangeUpdate=function(){this.keepSelection?(0!=this._start&&this.dispatchImmediately("startchanged"),1!=this._end&&this.dispatchImmediately("endchanged"),0==this._start&&1==this._end||this.dispatchImmediately("startendchanged")):0==this._start&&1==this._end||(this._start=0,this._end=1,this.dispatchImmediately("startendchanged")),this._maxZoomed=this._maxDefined,this._minZoomed=this._minDefined,this._maxAdjusted=this._maxDefined,this._minAdjusted=this._minDefined},e.prototype.processSeriesDataItems=function(){if(this.calculateTotals){var t=this.series.getIndex(0),e=t.startIndex;if(t.dataItems.length>0){e>0&&e--;var i=t.endIndex;i1?e=Math.pow(10,Math.log(this.min)*Math.LOG10E):0==(e=Math.floor(this.minZoomed/this._step)*this._step)&&(e=this.minZoomed);else e=Math.floor(e/this._step)*this._step;var i=this._maxZoomed+this._step;this.resetIterators();for(var n=this._dataItemsIterator,r=0;e<=i;){if(!this.isInBreak(e)){var o=n.find(function(t){return t.value===e});o.__disabled&&(o.__disabled=!1),this.appendDataItem(o),o.axisBreak=void 0,o.value!=e&&(o.value=e,o.text=this.formatLabel(e),o.label&&o.label.invalid&&o.label.validate(),o.value>=this.min&&o.value<=this.max&&o.label&&("Y"==this.axisLetter&&o.label.measuredWidth>this.ghostLabel.measuredWidth||"X"==this.axisLetter&&o.label.measuredHeight>this.ghostLabel.measuredHeight)&&(this.ghostLabel.text=o.label.currentText,this.ghostLabel.validate())),this.validateDataElement(o)}if(r++,this.logarithmic)Math.log(this.max)*Math.LOG10E-Math.log(this.min)*Math.LOG10E>1?e=Math.pow(10,Math.log(this.min)*Math.LOG10E+r):e+=this._step;else e+=this._step;var a=Math.pow(10,Math.floor(Math.log(Math.abs(this._step))*Math.LOG10E));if(a<1){var s=Math.round(Math.abs(Math.log(Math.abs(a))*Math.LOG10E))+2;e=l.round(e,s)}}var u=this._axisBreaks;if(u){var c=this.renderer;h.each(u.iterator(),function(e){if(e.breakSize>0&&l.getDistance(e.startPoint,e.endPoint)>c.minGridDistance)for(var i=e.adjustedMin;i<=e.adjustedMax;){if(i>=e.adjustedStartValue&&i<=e.adjustedEndValue){var r=n.find(function(t){return t.value===i});r.__disabled&&(r.__disabled=!1),t.appendDataItem(r),r.axisBreak=e,r.value!=i&&(r.value=i,r.text=t.formatLabel(i),r.label&&r.label.invalid&&r.label.validate()),t.validateDataElement(r)}i+=e.adjustedStep}})}}},e.prototype.validateDataElement=function(e){t.prototype.validateDataElement.call(this,e),e.itemIndex=this._axisItemCount,this._axisItemCount++;var i=this.renderer,n=e.value,r=e.endValue,o=this.valueToPosition(n);e.position=o;var a=o,s=this.valueToPosition(n+this._step);p.isNumber(r)&&(s=a=this.valueToPosition(r)),e.point=i.positionToPoint(o);var u=e.tick;u&&!u.disabled&&i.updateTickElement(u,o,a);var l=e.grid;l&&!l.disabled&&i.updateGridElement(l,o,a);var h=e.label;h&&!h.disabled&&i.updateLabelElement(h,o,a);var c=e.axisFill;c&&!c.disabled&&(i.updateFillElement(c,o,s),e.isRange||this.fillRule(e)),e.bullet&&i.updateBullet(e.bullet,o,a);var d=e.mask;d&&i.updateFillElement(d,o,s)},e.prototype.formatLabel=function(t){return this.numberFormatter.format(t)},Object.defineProperty(e.prototype,"basePoint",{get:function(){var t=this.baseValue,e=this.valueToPosition(t);return this.renderer.positionToPoint(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"baseValue",{get:function(){return this.logarithmic?this.min:this._baseValue},set:function(t){this._baseValue=t,this.invalidateLayout(),this.invalidateSeries()},enumerable:!0,configurable:!0}),e.prototype.anyToPosition=function(t){return this.valueToPosition(t)},e.prototype.valueToPoint=function(t){var e=this.valueToPosition(t),i=this.renderer.positionToPoint(e),n=this.renderer.positionToAngle(e);return{x:i.x,y:i.y,angle:n}},e.prototype.anyToPoint=function(t){return this.valueToPoint(t)},e.prototype.valueToPosition=function(t){if(p.isNumber(t)){var e=this.min,i=this.max;if(p.isNumber(e)&&p.isNumber(i)){var n=this._difference,r=this._axisBreaks;r&&r.length>0&&h.eachContinue(r.iterator(),function(n){var r=n.adjustedStartValue,o=n.adjustedEndValue;if(p.isNumber(r)&&p.isNumber(o)){if(to?e+=(o-r)*(1-a):t0&&h.eachContinue(o.iterator(),function(o){var a=o.startPosition,s=o.endPosition,u=o.adjustedStartValue,h=o.adjustedEndValue;if(p.isNumber(u)&&p.isNumber(h)){if(u>i)return!1;if(l.intersect({start:u,end:h},{start:e,end:i})){u=l.max(u,e),h=l.min(h,i);var c=o.breakSize;if(n-=(h-u)*(1-c),t>s)e+=(h-u)*(1-c);else if(!(ti&&(i=o)}}),this.includeRangesInMinMax&&this.axisRanges.each(function(t){if(!t.ignoreMinMax){var n=l.min(t.value,t.endValue),r=l.max(t.value,t.endValue);(ni||!p.isNumber(i))&&(i=r)}})),this.logarithmic&&e<=0)throw Error("Logarithmic value axis can not have vales <= 0.");if(0==e&&0==i&&(i=.9,e=-.9),p.isNumber(this._minDefined)&&(e=this._minDefined),p.isNumber(this._maxDefined)&&(i=this._maxDefined),p.isNumber(e)&&p.isNumber(i)){this._minReal=e,this._maxReal=i,e==Number.POSITIVE_INFINITY&&(e=void 0),i==Number.NEGATIVE_INFINITY&&(i=void 0);var n=this.adjustDifference(e,i);if(e=this.fixMin(e),(i=this.fixMax(i))-e<=1/Math.pow(10,15)){if(i-e!=0)this._deltaMinMax=(i-e)/2;else{var r=Math.log(Math.abs(i))*Math.LOG10E,o=Math.pow(10,Math.floor(r));o/=10,this._deltaMinMax=o}e-=this._deltaMinMax,i+=this._deltaMinMax}e-=(i-e)*this.extraMin,i+=(i-e)*this.extraMax;var a=this.strictMinMax;p.isNumber(this._maxDefined)&&(a=!0);var s=this.adjustMinMax(e,i,n,this._gridCount,a);if(e=s.min,n=(i=s.max)-e,s=this.adjustMinMax(e,i,i-e,this._gridCount,!0),e=s.min,i=s.max,this.strictMinMax&&(e=p.isNumber(this._minDefined)?this._minDefined:this._minReal,(i=p.isNumber(this._maxDefined)?this._maxDefined:this._maxReal)-e<=1e-8&&(e-=this._deltaMinMax,i+=this._deltaMinMax),e-=(i-e)*this.extraMin,i+=(i-e)*this.extraMax),(this._minAdjusted!=e||this._maxAdjusted!=i)&&p.isNumber(e)&&p.isNumber(i)){var u=this._minMaxAnimation;if(this._extremesChanged&&p.isNumber(this._minAdjusted)&&p.isNumber(this._maxAdjusted)&&this.inited){if(u&&!u.isFinished()&&this._finalMax==i&&this._finalMin==e)return;this._finalMin=e,this._finalMax=i,(u=this.animateMinMax(e,i))&&!u.isFinished()?(u.events.on("animationprogress",this.validateDataItems,this),u.events.on("animationended",function(){t.series.each(function(t){t.validate()}),t.validateDataItems(),t.handleSelectionExtremesChange()}),this._minMaxAnimation=u):this.series.each(function(t){t.validate()}),this.validateDataItems(),this.dispatchImmediately("extremeschanged"),this.handleSelectionExtremesChange()}else{if(u&&!u.isFinished()&&this._finalMax==i&&this._finalMin==e)return;this._minAdjusted=e,this._maxAdjusted=i,this._finalMin=e,this._finalMax=i,this.invalidateDataItems(),this.dispatchImmediately("extremeschanged")}}this._extremesChanged=!1,this._difference=this.adjustDifference(e,i)}},e.prototype.fixMin=function(t){return t},e.prototype.fixMax=function(t){return t},e.prototype.adjustMinMax=function(t,e,i,n,r){n<=1&&(n=1),n=Math.round(n);var o=t,a=e;0===i&&(i=Math.abs(e));var s=Math.log(Math.abs(i))*Math.LOG10E,u=Math.pow(10,Math.floor(s)),h=u/=10;r&&(h=0),this.logarithmic?(t<=0&&(t=this.baseValue),t==1/0&&(t=1),e==-1/0&&(e=10),t=Math.pow(10,Math.floor(Math.log(Math.abs(t))*Math.LOG10E)),e=Math.pow(10,Math.ceil(Math.log(Math.abs(e))*Math.LOG10E))):(r?(t=Math.floor(t/u)*u,e=Math.ceil(e/u)*u):(t=Math.ceil(t/u)*u-h,e=Math.floor(e/u)*u+h),t<0&&o>=0&&(t=0),e>0&&a<=0&&(e=0)),s=Math.log(Math.abs(i))*Math.LOG10E,u=Math.pow(10,Math.floor(s)),u/=10;var c=Math.ceil(i/n/u)*u,p=Math.pow(10,Math.floor(Math.log(Math.abs(c))*Math.LOG10E)),d=Math.ceil(c/p);d>5?d=10:d<=5&&d>2&&(d=5),c=Math.ceil(c/(p*d))*p*d,this.maxPrecisiono&&(t-=c)}return{min:t,max:e,step:c}},Object.defineProperty(e.prototype,"min",{get:function(){var t=this._minAdjusted;return p.isNumber(t)||(t=this._minDefined),t},set:function(t){this._minDefined!=t&&(this._minDefined=t,this.invalidate())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"minDefined",{get:function(){return this._minDefined},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maxDefined",{get:function(){return this._maxDefined},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"extraMin",{get:function(){return this.getPropertyValue("extraMin")},set:function(t){this.setPropertyValue("extraMin",t)&&this.invalidateDataItems()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"extraMax",{get:function(){return this.getPropertyValue("extraMax")},set:function(t){this.setPropertyValue("extraMax",t)&&this.invalidateDataItems()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"step",{get:function(){return this._step},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"max",{get:function(){var t=this._maxAdjusted;return p.isNumber(t)||(t=this._maxDefined),t},set:function(t){this._maxDefined!=t&&(this._maxDefined=t,this.invalidate())},enumerable:!0,configurable:!0}),e.prototype.registerSeries=function(e){return new a.c([t.prototype.registerSeries.call(this,e),e.events.on("extremeschanged",this.handleExtremesChange,this,!1),e.events.on("selectionextremeschanged",this.handleSelectionExtremesChange,this,!1),this.events.on("extremeschanged",e.invalidate,e,!1)])},e.prototype.handleSelectionExtremesChange=function(){var t,e,i=this,n=!0;if(h.each(this.series.iterator(),function(r){if(!r.ignoreMinMax&&!r.isHidden){r.visible&&!r.isHiding&&(n=!1);var o=r.selectionMin(i),a=r.selectionMax(i);p.isNumber(o)&&(!p.isNumber(t)||oe)&&(e=a)}}),this.includeRangesInMinMax&&this.axisRanges.each(function(t){if(!t.ignoreMinMax){var i=l.min(t.value,t.endValue),n=l.max(t.value,t.endValue);ie&&(e=n)}}),p.isNumber(this._minDefined)?t=this.strictMinMax?this._minDefined:this.min:this.strictMinMax&&(t=this._minReal),p.isNumber(this._maxDefined)?e=this.strictMinMax?this._maxDefined:this.max:this.strictMinMax&&(e=this._maxReal),t==e){t-=this._deltaMinMax,e+=this._deltaMinMax;var r=this.adjustMinMax(t,e,0,this._gridCount,this.strictMinMax);t=r.min,e=r.max}var o=this.adjustDifference(t,e),a=this.adjustMinMax(t,e,o,this._gridCount);t=a.min,e=a.max,t-=(e-t)*this.extraMin,e+=(e-t)*this.extraMax,t=l.fitToRange(t,this.min,this.max),e=l.fitToRange(e,this.min,this.max),o=this.adjustDifference(t,e),a=this.adjustMinMax(t,e,o,this._gridCount,!0),t=a.min,e=a.max,this.strictMinMax&&(t=l.max(t,this._minDefined),e=l.min(e,this._maxDefined)),this._minZoomed=t,this._maxZoomed=e,this._step=a.step;var s=this.valueToPosition(t),u=this.valueToPosition(e);n&&(s=0,u=1),this.keepSelection||this.zoom({start:s,end:u},!1,!1,0)},Object.defineProperty(e.prototype,"strictMinMax",{get:function(){return this.getPropertyValue("strictMinMax")},set:function(t){this.setPropertyValue("strictMinMax",t)&&this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"logarithmic",{get:function(){return this.getPropertyValue("logarithmic")},set:function(t){this.setPropertyValue("logarithmic",t)&&this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"keepSelection",{get:function(){return this.getPropertyValue("keepSelection")},set:function(t){this.setPropertyValue("keepSelection",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"includeRangesInMinMax",{get:function(){return this.getPropertyValue("includeRangesInMinMax")},set:function(t){this.setPropertyValue("includeRangesInMinMax",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maxPrecision",{get:function(){return this.getPropertyValue("maxPrecision")},set:function(t){this.setPropertyValue("maxPrecision",t)&&this.invalidate()},enumerable:!0,configurable:!0}),e.prototype.handleExtremesChange=function(){var t=this;if(this._extremesChanged=!0,this.getMinMax(),this.ghostLabel){this.dataItems.each(function(e){e.label&&e.label.pixelWidth>0&&(t.ghostLabel.text=e.label.currentText)})}},e.prototype.getX=function(t,e,i,n,r){return this.renderer.positionToPoint(this.getPositionX(t,e,i,n,r)).x},e.prototype.getPositionX=function(t,e,i,n,r){var o=t.getWorkingValue(e);p.hasValue(n)||(n="valueX");var a=t.getValue(n,"stack");p.isNumber(o)||(o=this.baseValue,this.logarithmic&&a>0&&(o=0));var s=this.valueToPosition(o+a);return r&&(s=l.fitToRange(s,r.start,r.end)),s},e.prototype.getY=function(t,e,i,n,r){return this.renderer.positionToPoint(this.getPositionY(t,e,i,n,r)).y},e.prototype.getPositionY=function(t,e,i,n,r){var o=t.getWorkingValue(e);p.hasValue(n)||(n="valueY");var a=t.getValue(n,"stack");p.isNumber(o)||(o=this.baseValue,this.logarithmic&&a>0&&(o=0));var s=this.valueToPosition(o+a);return r&&(s=l.fitToRange(s,r.start,r.end)),s},e.prototype.getAngle=function(t,e,i,n,r){var o=t.getWorkingValue(e),a=t.getValue(n,"stack");p.isNumber(o)||(o=this.baseValue);var s=this.valueToPosition(o+a);return r&&(s=l.fitToRange(s,r.start,r.end)),this.positionToAngle(s)},e.prototype.getAnyRangePath=function(t,e,i){var n=this.valueToPosition(t),r=this.valueToPosition(e);return this.getPositionRangePath(n,r)},e.prototype.getTooltipText=function(t){var e=l.round(this.positionToValue(t),this._stepDecimalPlaces),i=this.tooltip.numberFormatter.format(e);return this._adapterO?this._adapterO.apply("getTooltipText",i):i},e.prototype.zoomToValues=function(t,e,i,n){var r=(t-this.min)/(this.max-this.min),o=(e-this.min)/(this.max-this.min);this.zoom({start:r,end:o},i,n)},Object.defineProperty(e.prototype,"minZoomed",{get:function(){return l.max(this.min,this._minZoomed)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maxZoomed",{get:function(){return l.min(this.max,this._maxZoomed)},enumerable:!0,configurable:!0}),e.prototype.fixAxisBreaks=function(){var e=this;t.prototype.fixAxisBreaks.call(this);var i=this._axisBreaks;i&&i.length>0&&i.each(function(t){var i=t.adjustedStartValue,n=t.adjustedEndValue,r=n-i,o=Math.ceil(r*t.breakSize)*e._gridCount/(e.max-e.min),a=e.adjustMinMax(i,n,r,o,!0);t.adjustedStep=a.step,t.adjustedMin=a.min,t.adjustedMax=a.max}),this._difference=this.adjustDifference(this.min,this.max)},e.prototype.getPositionLabel=function(t){var e=this.positionToValue(t);return this.numberFormatter.format(e)},e.prototype.showTooltipAt=function(t){this.showTooltipAtPosition(this.valueToPosition(t))},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.min=e.min,this.max=e.max,this.calculateTotals=e.calculateTotals,this._baseValue=e.baseValue},e}(r.a);s.b.registeredClasses.ValueAxis=g,s.b.registeredClasses.ValueAxisDataItem=f},pb4Y:function(t,e){t.exports=!1},pjXm:function(t,e,i){"use strict";e.a=function(){for(var t=[],e=0;e0;)this.node.removeChild(this.node.firstChild)},t.prototype.isDisposed=function(){return this._isDisposed},t.prototype.dispose=function(){this.removeNode()},t}()},"q+2p":function(t,e,i){var n=Date.prototype,r=n.toString,o=n.getTime;new Date(NaN)+""!="Invalid Date"&&i("wDk4")(n,"toString",function(){var t=o.call(this);return t==t?r.call(this):"Invalid Date"})},qCRI:function(t,e,i){"use strict";i.d(e,"a",function(){return n});var n=function(){function t(){}return t.grab=[{property:"cursor",value:"move"},{property:"cursor",value:"grab"},{property:"cursor",value:"-webkit-grab"}],t.grabbing=[{property:"cursor",value:"move"},{property:"cursor",value:"grabbing"},{property:"cursor",value:"-webkit-grabbing"}],t.pointer=[{property:"cursor",value:"pointer"}],t.default=[{property:"cursor",value:"default"}],t.horizontalResize=[{property:"cursor",value:"ew-resize"}],t.verticalResize=[{property:"cursor",value:"ns-resize"}],t}()},qJno:function(t,e,i){"use strict";var n=i("m4/l"),r=i("58Sn"),o=i("MIZb"),a=i("+qIf"),s=i("hD5A"),u=new a.a,l=i("x79X"),h=i("vMqJ"),c=i("zhwk"),p=i("P/bD"),d=i("/IEW"),f=i("WYhe"),g=i("v9UT"),m=i("Wglt"),y=i("Mtpk");i.d(e,"a",function(){return b});var b=function(t){function e(){var e=t.call(this)||this;return e.adapter=new l.a(e),e.closeDelay=1e3,e.closeOnClick=!0,e._language=new s.d,e._menuTag="ul",e._itemTag="li",e._labelTag="a",e._iconTag="img",e._classPrefix="amexport",e._defaultStyles=!0,e._align="right",e._verticalAlign="top",e._tabindex=0,e._ignoreNextClose=!1,e._items=[{label:"...",menu:[{label:"Image",menu:[{type:"png",label:"PNG"},{type:"jpg",label:"JPG"},{type:"svg",label:"SVG"},{type:"pdf",label:"PDF"}]},{label:"Data",menu:[{type:"json",label:"JSON"},{type:"csv",label:"CSV"},{type:"xlsx",label:"XLSX"},{type:"html",label:"HTML"},{type:"pdfdata",label:"PDF"}]},{label:"Print",type:"print"}]}],e.className="ExportMenu",e._disposers.push(e._language),e.invalidate(),e.applyTheme(),e}return n.c(e,t),e.prototype.validate=function(){this.draw(),t.prototype.validate.call(this)},e.prototype.draw=function(){var t=this;this._element?(this._element.innerHTML="",this._element.className=this.getMenuItemClass(0)):this._element=this.createMenuElement(0),this.defaultStyles&&(this._element.style.display="none"),y.getValue(this._container).appendChild(this._element);for(var e=this.adapter.apply("items",{items:this._items}).items,i=e.length,n=0;n a",{padding:"0","text-align":"center",overflow:"hidden"}),new r.c("."+e+"-item."+e+"-item-level-0:before",{display:"block"}),new r.c("."+e+"-item",{position:"relative",display:"block",opacity:"0","z-index":"1","border-radius":"3px","background-color":i.getFor("secondaryButton").hex,padding:"0",margin:"1px 1px 0 0",color:i.getFor("secondaryButton").alternative.hex,transition:"all 100ms ease-in-out, opacity 0.5s ease 0.5s"}),new r.c("."+e+"-left ."+e+"-item",{margin:"1px 0 0 1px"}),new r.c("."+e+"-item:hover, ."+e+"-item.active",{background:i.getFor("secondaryButtonHover").hex,color:i.getFor("secondaryButtonText").hex}),new r.c("."+e+"-item > ."+e+"-menu",{position:"absolute",top:"-1px",right:"0","margin-right":"100%"}),new r.c("."+e+"-left ."+e+"-item > ."+e+"-menu",{left:"0",right:"auto","margin-left":"100%","margin-right":"auto"}),new r.c("."+e+"-right ."+e+"-item > ."+e+"-menu",{left:"auto",right:"0","margin-left":"auto","margin-right":"100%"}),new r.c("."+e+"-top ."+e+"-item > ."+e+"-menu",{top:"-1px",bottom:"auto"}),new r.c("."+e+"-bottom ."+e+"-item > ."+e+"-menu",{top:"auto",bottom:"0"}),new r.c("."+e+"-item > ."+e+"-menu",{display:"none"}),new r.c("."+e+"-item:hover > ."+e+"-menu, ."+e+"-item.active > ."+e+"-menu",{display:"block"}),new r.c("."+e+"-item:hover > ."+e+"-menu > ."+e+"-item, ."+e+"-item.active > ."+e+"-menu > ."+e+"-item",{opacity:"1"}),new r.c("."+e+"-menu",{display:"block","list-style":"none",margin:"0",padding:"0"}),new r.c("."+e+"-label",{display:"block",cursor:"default",padding:"0.5em 1em"}),new r.c("."+e+"-icon",{display:"block",cursor:"default",padding:"0.2em 0.4em",width:"1.2em",height:"1.2em","min-width":"20px","min-height":"20px",margin:"auto auto","border-radius":"3px"}),new r.c("."+e+"-item-level-0 > ."+e+"-icon",{padding:"0.1em 0.2em"}),new r.c("."+e+"-clickable",{cursor:"pointer"})]);return new s.a(function(){u.removeKey(e),t.dispose()})}).increment()}(this.classPrefix)),this._element&&(this._element.style.display="")},Object.defineProperty(e.prototype,"tabindex",{get:function(){return this.adapter.apply("tabindex",{tabindex:this._tabindex}).tabindex},set:function(t){this._tabindex=t,this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"language",{get:function(){var t=this,e=this._language.get();return null==e&&(e=new p.a,this._language.set(e,e.events.on("localechanged",function(e){t.invalidate()}))),e},set:function(t){var e=this;this._language.set(t,t.events.on("localechanged",function(t){e.invalidate()})),this.invalidate()},enumerable:!0,configurable:!0}),e.prototype.close=function(){var t=this;if(this._ignoreNextClose)this._ignoreNextClose=!1;else{if(this.closeOnClick&&(this._element.style.pointerEvents="none",setTimeout(function(){t._element.style.pointerEvents="auto"},100)),this._currentSelection&&(this.setBlur(this._currentSelection),this._currentSelection=void 0),this._element)for(var e=this._element.getElementsByClassName("active"),i=e.length-1;i>=0;i--)e[i]&&r.x(e[i],"active");this.events.dispatchImmediately("closed",{type:"closed",target:this})}},e.prototype.selectBranch=function(t){var e=this;if(t.closeTimeout&&(this.removeDispose(t.closeTimeout),t.closeTimeout=void 0),r.f(t.interactions.element.parentElement,"active"),this._currentSelection&&this._currentSelection!==t&&this._currentSelection.ascendants&&m.each(m.concat(m.fromArray([this._currentSelection]),this._currentSelection.ascendants.iterator()),function(i){t.ascendants.contains(i)||t===i||e.unselectBranch(i,!0)}),m.each(t.ascendants.iterator(),function(t){t.closeTimeout&&(e.removeDispose(t.closeTimeout),t.closeTimeout=void 0),r.f(t.interactions.element.parentElement,"active")}),this._currentSelection=t,this.events.isEnabled("branchselected")){var i={type:"branchselected",target:this,branch:t};this.events.dispatchImmediately("branchselected",i)}},e.prototype.unselectBranch=function(t,e){if(r.x(t.interactions.element.parentElement,"active"),this._currentSelection==t&&(this._currentSelection=void 0),this.events.isEnabled("branchunselected")){var i={type:"branchunselected",target:this,branch:t};this.events.dispatchImmediately("branchunselected",i)}},e.prototype.delayUnselectBranch=function(t,e){var i=this;t.closeTimeout&&(this.removeDispose(t.closeTimeout),t.closeTimeout=void 0),t.closeTimeout=this.setTimeout(function(){i.unselectBranch(t,e)},this.closeDelay),!0!==e&&t.ascendants&&m.each(t.ascendants.iterator(),function(t){i.delayUnselectBranch(t,!0)})},e.prototype.moveSelection=function(t){if(this._currentSelection){var e;if("up"==t)e=this.getPrevSibling(this._currentSelection);else if("down"==t)e=this.getNextSibling(this._currentSelection);else if("left"==t&&"right"==this.align||"right"==t&&"left"==this.align){var i=this.getSubMenu(this._currentSelection);null!=i&&(e=i[0])}else("right"==t&&"right"==this.align||"left"==t&&"left"==this.align)&&(e=this.getParentItem(this._currentSelection));e&&e!==this._currentSelection&&(this.selectBranch(e),this.setFocus(e),this._currentSelection=e)}},e.prototype.getSiblings=function(t){var e=this.getParentItem(t);return e&&e.menu?e.menu:[]},e.prototype.getParentItem=function(t){return t.ascendants&&t.ascendants.length?t.ascendants.getIndex(t.ascendants.length-1):void 0},e.prototype.getNextSibling=function(t){var e=this.getSiblings(t);if(e.length>1){var i=e.indexOf(t)+1;return e[i=e.length==i?0:i].unsupported?this.getNextSibling(e[i]):e[i]}return t},e.prototype.getPrevSibling=function(t){var e=this.getSiblings(t);if(e.length>1){var i=e.indexOf(t)-1;return e[i=-1==i?e.length-1:i].unsupported?this.getPrevSibling(e[i]):e[i]}return t},e.prototype.setFocus=function(t){if(t.interactions)try{t.interactions.element.focus()}catch(t){}},e.prototype.setBlur=function(t){if(t.interactions)try{t.interactions.element.blur()}catch(t){}},e.prototype.hideBranch=function(t){t.element.style.display="none"},e.prototype.showBranch=function(t){t.element.style.display=""},e}(d.a)},qgJR:function(t,e,i){"use strict";var n=i("snR7"),r=i("DVvQ"),o=i("2i0j");i("7V6K")("search",1,function(t,e,i,a){return[function(i){var n=t(this),r=void 0==i?void 0:i[e];return void 0!==r?r.call(i,n):new RegExp(i)[e](String(n))},function(t){var e=a(i,t,this);if(e.done)return e.value;var s=n(t),u=String(this),l=s.lastIndex;r(l,0)||(s.lastIndex=0);var h=o(s,u);return r(s.lastIndex,l)||(s.lastIndex=l),null===h?-1:h.index}]})},quKg:function(t,e,i){"use strict";i.d(e,"b",function(){return p}),i.d(e,"a",function(){return d});var n=i("m4/l"),r=i("DXFp"),o=i("tjMS"),a=i("Puh1"),s=i("aCit"),u=i("Wglt"),l=i("v9UT"),h=i("Gg2j"),c=i("Mtpk"),p=function(t){function e(){var e=t.call(this)||this;return e.className="PieChartDataItem",e.applyTheme(),e}return n.c(e,t),e}(r.b),d=function(t){function e(){var e=t.call(this)||this;e.className="PieChart",e.innerRadius=0,e.radius=Object(o.c)(80),e.align="none",e.valign="none",e.startAngle=-90,e.endAngle=270;var i=e.seriesContainer;return i.isMeasured=!0,i.valign="middle",i.align="center",i.layout="absolute",i.width=void 0,i.height=void 0,e.chartContainer.minHeight=50,e.chartContainer.minWidth=50,e.chartContainer.events.on("maxsizechanged",e.updateRadius,e,!1),e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),c.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Pie chart"))},e.prototype.validateLayout=function(){t.prototype.validateLayout.call(this),this.updateRadius()},e.prototype.handleSeriesAdded=function(e){t.prototype.handleSeriesAdded.call(this,e),this._chartPixelRadius=void 0,this.updateSeriesAngles()},e.prototype.updateSeriesAngles=function(){var t=this;this.series.each(function(e){e.startAngle=t.startAngle,e.endAngle=t.endAngle,e.defaultState.properties.startAngle=t.startAngle,e.defaultState.properties.endAngle=t.endAngle})},e.prototype.updateRadius=function(){var t=this.chartContainer,e=h.getArcRect(this.startAngle,this.endAngle,1),i={x:0,y:0,width:0,height:0},n=this.innerRadius;n instanceof o.a&&(i=h.getArcRect(this.startAngle,this.endAngle,n.value)),e=h.getCommonRectangle([e,i]);var r=Math.min(t.innerWidth/e.width,t.innerHeight/e.height);c.isNumber(r)||(r=0);var a=l.relativeRadiusToValue(this.radius,r),s=l.relativeRadiusToValue(this.innerRadius,r),p=(a-s)/this.series.length;a==this._chartPixelRadius&&s==this._chartPixelInnerRadius||(this._chartPixelRadius=a,this._chartPixelInnerRadius=s,u.each(u.indexed(this.series.iterator()),function(t){var e=t[0],i=t[1],n=s+l.relativeRadiusToValue(i.radius,a-s),r=s+l.relativeRadiusToValue(i.innerRadius,a-s);c.isNumber(n)||(n=s+p*(e+1)),c.isNumber(r)||(r=s+p*e),i.pixelRadius=n,i.pixelInnerRadius=r}),this.seriesContainer.definedBBox={x:a*e.x,y:a*e.y,width:a*e.width,height:a*e.height},this.seriesContainer.invalidateLayout(),this.bulletsContainer.x=this.seriesContainer.x,this.bulletsContainer.y=this.seriesContainer.y)},Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!0,!1,10,!1)&&this.invalidateLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),e.prototype.createSeries=function(){return new a.a},Object.defineProperty(e.prototype,"startAngle",{get:function(){return this.getPropertyValue("startAngle")},set:function(t){this.setPropertyValue("startAngle",t)&&(this.updateRadius(),this.updateSeriesAngles())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endAngle",{get:function(){return this.getPropertyValue("endAngle")},set:function(t){this.setPropertyValue("endAngle",t)&&(this.updateRadius(),this.updateSeriesAngles())},enumerable:!0,configurable:!0}),e}(r.a);s.b.registeredClasses.PieChart=d,s.b.registeredClasses.PieChartDataItem=p},qzbU:function(t,e,i){"use strict";i.d(e,"a",function(){return s});var n=i("m4/l"),r=i("Vs7R"),o=i("aCit"),a=i("MIZb"),s=function(t){function e(){var e=t.call(this)||this;e.className="Tick";var i=new a.a;return e.fillOpacity=0,e.length=6,e.strokeOpacity=.2,e.stroke=i.getFor("grid"),e.isMeasured=!1,e.nonScalingStroke=!0,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"length",{get:function(){return this.disabled?0:this.getPropertyValue("length")},set:function(t){this.setPropertyValue("length",t,!0)},enumerable:!0,configurable:!0}),e}(r.a);o.b.registeredClasses.Tick=s},r7ZX:function(t,e,i){i("3mH9")("Set")},rFJX:function(t,e,i){var n=i("DvJ+");t.exports=function(t,e){if(!n(t)||t._t!==e)throw TypeError("Incompatible receiver, "+e+" required!");return t}},rTLi:function(t,e,i){"use strict";i("Mvcd")("small",function(t){return function(){return t(this,"small","","")}})},"rU+O":function(t,e,i){"use strict";var n=i("snR7"),r=i("vJiZ"),o=i("FmWr"),a=i("4BRe"),s=i("YxCF"),u=i("2i0j"),l=Math.max,h=Math.min,c=Math.floor,p=/\$([$&`']|\d\d?|<[^>]*>)/g,d=/\$([$&`']|\d\d?)/g,f=function(t){return void 0===t?t:String(t)};i("7V6K")("replace",2,function(t,e,i,g){return[function(n,r){var o=t(this),a=void 0==n?void 0:n[e];return void 0!==a?a.call(n,o,r):i.call(String(o),n,r)},function(t,e){var r=g(i,t,this,e);if(r.done)return r.value;var c=n(t),p=String(this),d="function"==typeof e;d||(e=String(e));var y=c.global;if(y){var b=c.unicode;c.lastIndex=0}for(var v=[];;){var x=u(c,p);if(null===x)break;if(v.push(x),!y)break;""===String(x[0])&&(c.lastIndex=s(p,o(c.lastIndex),b))}for(var _="",P=0,w=0;w=P&&(_+=p.slice(P,S)+D,P=S+O.length)}return _+p.slice(P)}];function m(t,e,n,o,a,s){var u=n+t.length,l=o.length,h=d;return void 0!==a&&(a=r(a),h=p),i.call(s,h,function(i,r){var s;switch(r.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,n);case"'":return e.slice(u);case"<":s=a[r.slice(1,-1)];break;default:var h=+r;if(0===h)return i;if(h>l){var p=c(h/10);return 0===p?i:p<=l?void 0===o[p-1]?r.charAt(1):o[p-1]+r.charAt(1):i}s=o[h-1]}return void 0===s?"":s})}})},rU6r:function(t,e,i){i("YJIw")("Uint8",1,function(t){return function(e,i,n){return t(this,e,i,n)}})},rkh7:function(t,e,i){var n=i("ODWe"),r=i("heQh").concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return n(t,r)}},rutD:function(t,e,i){"use strict";var n=i("Gb1H"),r=i("4BRe"),o=i("GIxq"),a=i("lhvN"),s=1..toFixed,u=Math.floor,l=[0,0,0,0,0,0],h="Number.toFixed: incorrect invocation!",c=function(t,e){for(var i=-1,n=e;++i<6;)n+=t*l[i],l[i]=n%1e7,n=u(n/1e7)},p=function(t){for(var e=6,i=0;--e>=0;)i+=l[e],l[e]=u(i/t),i=i%t*1e7},d=function(){for(var t=6,e="";--t>=0;)if(""!==e||0===t||0!==l[t]){var i=String(l[t]);e=""===e?i:e+a.call("0",7-i.length)+i}return e},f=function t(e,i,n){return 0===i?n:i%2==1?t(e,i-1,n*e):t(e*e,i/2,n)};n(n.P+n.F*(!!s&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!i("AEc5")(function(){s.call({})})),"Number",{toFixed:function(t){var e,i,n,s,u=o(this,h),l=r(t),g="",m="0";if(l<0||l>20)throw RangeError(h);if(u!=u)return"NaN";if(u<=-1e21||u>=1e21)return String(u);if(u<0&&(g="-",u=-u),u>1e-21)if(i=(e=function(t){for(var e=0,i=t;i>=4096;)e+=12,i/=4096;for(;i>=2;)e+=1,i/=2;return e}(u*f(2,69,1))-69)<0?u*f(2,-e,1):u/f(2,e,1),i*=4503599627370496,(e=52-e)>0){for(c(0,i),n=l;n>=7;)c(1e7,0),n-=7;for(c(f(10,n,1),0),n=e-1;n>=23;)p(1<<23),n-=23;p(1<0?g+((s=m.length)<=l?"0."+a.call("0",l-s)+m:m.slice(0,s-l)+"."+m.slice(s-l)):g+m}})},sHIJ:function(t,e,i){var n=i("DVYA");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==n(t)?t.split(""):Object(t)}},sNEp:function(t,e,i){var n=i("snR7");t.exports=function(t,e,i,r){try{return r?e(n(i)[0],i[1]):e(i)}catch(e){var o=t.return;throw void 0!==o&&n(o.call(t)),e}}},"sc+R":function(t,e,i){var n=i("DbOM"),r=i("vJiZ"),o=i("sHIJ"),a=i("FmWr");t.exports=function(t,e,i,s,u){n(e);var l=r(t),h=o(l),c=a(l.length),p=u?c-1:0,d=u?-1:1;if(i<2)for(;;){if(p in h){s=h[p],p+=d;break}if(p+=d,u?p<0:c<=p)throw TypeError("Reduce of empty array with no initial value")}for(;u?p>=0:c>p;p+=d)p in h&&(s=e(s,h[p],p,l));return s}},snR7:function(t,e,i){var n=i("DvJ+");t.exports=function(t){if(!n(t))throw TypeError(t+" is not an object!");return t}},ssJO:function(t,e,i){"use strict";var n=i("Gb1H"),r=i("dstF")(0),o=i("GQop")([].forEach,!0);n(n.P+n.F*!o,"Array",{forEach:function(t){return r(this,t,arguments[1])}})},sxA1:function(t,e,i){"use strict";i.d(e,"a",function(){return c});var n=i("m4/l"),r=i("Tjl+"),o=i("vMqJ"),a=i("P7v+"),s=i("aCit"),u=i("Wglt"),l=i("Gg2j"),h=i("Mtpk"),c=function(t){function e(){var e=t.call(this)||this;return e._stops=new o.b,e._rotation=0,e.className="LinearGradient",e._stops.events.on("setIndex",e.validate,e),e._stops.events.on("inserted",e.validate,e),e.element=e.paper.addGroup("linearGradient"),e.id="gradient-"+s.b.getUniqueId(),e.element.attr({id:e.id}),e._disposers.push(e.element),e.applyTheme(),e}return n.c(e,t),e.prototype.validate=function(){var t=this,e=(this._rotation+90)*l.RADIANS,i=Math.round(50+50*Math.sin(e+Math.PI))+"%",n=Math.round(50+50*Math.cos(e))+"%",r=Math.round(50+50*Math.sin(e))+"%",o=Math.round(50+50*Math.cos(e+Math.PI))+"%",a=this.element;a.removeChildNodes(),a.attr({x1:i,x2:r,y1:n,y2:o}),u.each(u.indexed(this._stops.iterator()),function(e){var i=e[0],n=e[1],r=n.offset;h.isNumber(r)||(r=i/(t._stops.length-1));var o=t.paper.add("stop");h.hasValue(n.color)&&o.attr({"stop-color":n.color.toString()}),h.isNumber(n.opacity)&&o.attr({"stop-opacity":n.opacity}),h.isNumber(r)&&o.attr({offset:r}),a.add(o)})},e.prototype.clear=function(){this._stops.clear()},e.prototype.addColor=function(t,e,i){this._stops.push({color:t,opacity:e,offset:i})},Object.defineProperty(e.prototype,"stops",{get:function(){return this._stops},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"paper",{get:function(){return this._paper?this._paper:Object(a.b)()},set:function(t){this._paper!=t&&(this._paper=t,this.validate(),t.appendDef(this.element))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"rotation",{get:function(){return this._rotation},set:function(t){this._rotation=t,this.validate()},enumerable:!0,configurable:!0}),e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.stops.copyFrom(e.stops),this._rotation=e.rotation},e}(r.a);s.b.registeredClasses.LinearGradient=c},sxbc:function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},t3Ma:function(t,e,i){"use strict";i("Mvcd")("bold",function(t){return function(){return t(this,"b","","")}})},tIuN:function(t,e,i){var n=i("Gb1H");n(n.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},tYpR:function(t,e,i){i("3mH9")("WeakMap")},tjMS:function(t,e,i){"use strict";i.d(e,"a",function(){return n}),e.c=function(t){return new n(t)},e.b=function(t){return t instanceof n};var n=function(){function t(t){this._value=t}return Object.defineProperty(t.prototype,"value",{get:function(){return this._value/100},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"percent",{get:function(){return this._value},enumerable:!0,configurable:!0}),t.prototype.toString=function(){return this._value+"%"},t}()},tzvs:function(t,e,i){var n=i("EhJv"),r=i("nHHr").f;i("5lay")("getOwnPropertyDescriptor",function(){return function(t,e){return r(n(t),e)}})},uWmK:function(t,e,i){"use strict";i.d(e,"b",function(){return _}),i.d(e,"c",function(){return P}),i.d(e,"a",function(){return w});var n=i("m4/l"),r=i("Y9w3"),o=i("A6AV"),a=i("vMqJ"),s=i("CnhP"),u=i("C6dT"),l=i("p9TX"),h=i("WYhe"),c=i("aCit"),p=i("zhwk"),d=i("tjMS"),f=i("MIZb"),g=i("v9UT"),m=i("Mtpk"),y=i("Vs7R"),b=i("hD5A"),v=i("qCRI"),x=i("TGuK"),_=function(t){function e(){var e=t.call(this)||this;return e.childrenCreated=!1,e.className="LegendDataItem",e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"label",{get:function(){var t=this;if(!this._label){var e=this.component.labels.create();this._label=e,this.addSprite(e),this._disposers.push(e),e.parent=this.itemContainer,this._disposers.push(new b.b(function(){m.hasValue(t.component)&&t.component.labels.removeValue(e)}))}return this._label},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"color",{get:function(){return this.properties.color},set:function(t){this.setProperty("color",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"valueLabel",{get:function(){var t=this;if(!this._valueLabel){var e=this.component.valueLabels.create();this._valueLabel=e,this.addSprite(e),this._disposers.push(e),e.parent=this.itemContainer,this._disposers.push(new b.b(function(){m.hasValue(t.component)&&t.component.valueLabels.removeValue(e)}))}return this._valueLabel},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"itemContainer",{get:function(){var t=this;if(!this._itemContainer){var e=this.component,i=e.itemContainers.create();i.parent=e,this._itemContainer=i,this.addSprite(i),this._disposers.push(i),i.togglable&&i.events.on("toggled",function(t){e.toggleDataItem(t.target.dataItem)},void 0,!1),i.focusable&&(i.events.on("focus",function(t){e.focusedItem=t.target.dataItem},void 0,!1),i.events.on("blur",function(t){e.focusedItem=void 0},void 0,!1)),this._disposers.push(new b.b(function(){m.hasValue(t.component)&&t.component.itemContainers.removeValue(i)})),this.dataContext.uidAttr&&(i.readerControls=this.dataContext.uidAttr(),i.readerLabelledBy=this.dataContext.uidAttr());var n=this.dataContext;(n instanceof o.a||n instanceof y.a)&&!n.isDisposed()&&(i.addDisposer(n.events.on("visibilitychanged",function(t){i.readerChecked=t.visible,i.events.disableType("toggled"),i.isActive=!t.visible,i.events.enableType("toggled")},void 0,!1)),n.addDisposer(new b.b(function(){t.component&&t.component.dataItems.remove(t)})),n instanceof y.a&&(i.addDisposer(n.events.on("hidden",function(t){i.readerChecked=!1,i.events.disableType("toggled"),i.isActive=!0,i.events.enableType("toggled")},void 0,!1)),i.addDisposer(n.events.on("shown",function(t){i.readerChecked=!0,i.events.disableType("toggled"),i.isActive=!1,i.events.enableType("toggled")},void 0,!1))))}return this._itemContainer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"marker",{get:function(){var t=this;if(!this._marker){var e=this.component.markers.create();this._marker=e,e.parent=this.itemContainer,this.addSprite(e),this._disposers.push(e),this._disposers.push(new b.b(function(){m.hasValue(t.component)&&t.component.markers.removeValue(e)}))}return this._marker},enumerable:!0,configurable:!0}),e}(o.a),P=function(){return function(){this.createMarker=!0}}(),w=function(t){function e(){var e=t.call(this)||this;e.className="Legend",e.layout="grid",e.setPropertyValue("useDefaultMarker",!1),e.setPropertyValue("contentAlign","center");var i=new u.a;i.applyOnClones=!0,i.padding(10,0,10,0),i.margin(0,10,0,0),i.layout="horizontal",i.clickable=!0,i.focusable=!0,i.role="switch",i.togglable=!0,i.cursorOverStyle=v.a.pointer,i.background.fillOpacity=0,e.itemContainers=new a.e(i),e._disposers.push(new a.c(e.itemContainers)),e._disposers.push(e.itemContainers.template),e._disposers.push(Object(p.b)().body.events.on("keyup",function(t){h.b.isKey(t.event,"enter")&&e.focusedItem&&e.focusedItem.itemContainer.clickable&&e.toggleDataItem(e.focusedItem)},e));var n=new f.a,r=new u.a;r.width=23,r.height=23,r.interactionsEnabled=!1,r.applyOnClones=!0,r.setStateOnChildren=!0,r.background.fillOpacity=0,r.background.strokeOpacity=0,r.propertyFields.fill="fill",r.valign="middle";var o=n.getFor("disabledBackground");r.events.on("childadded",function(t){var e=t.newValue.states.create("active");e.properties.stroke=o,e.properties.fill=o}),e.markers=new a.e(r),e._disposers.push(new a.c(e.markers)),e._disposers.push(e.markers.template);var c=r.createChild(s.a);c.width=Object(d.c)(100),c.height=Object(d.c)(100),c.applyOnClones=!0,c.propertyFields.fill="fill",c.strokeOpacity=0;var g=new l.a;g.text="{name}",g.margin(0,5,0,5),g.valign="middle",g.applyOnClones=!0,g.states.create("active").properties.fill=n.getFor("disabledBackground"),e.labels=new a.e(g),e._disposers.push(new a.c(e.labels)),e._disposers.push(e.labels.template),g.interactionsEnabled=!1;var m=new l.a;return m.margin(0,5,0,0),m.valign="middle",m.width=50,m.align="right",m.textAlign="end",m.applyOnClones=!0,m.states.create("active").properties.fill=n.getFor("disabledBackground"),m.interactionsEnabled=!1,e.valueLabels=new a.e(m),e._disposers.push(new a.c(e.valueLabels)),e._disposers.push(e.valueLabels.template),e.position="bottom",i.states.create("active"),i.setStateOnChildren=!0,e.role="group",e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),m.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Legend"))},e.prototype.createDataItem=function(){return new _},e.prototype.validateDataElement=function(e){t.prototype.validateDataElement.call(this,e);var i=e.itemContainer,n=e.marker;g.used(e.label);var r=e.valueLabel;i.readerChecked=e.dataContext.visible,e.dataContext.legendDataItem=e;var o=e.dataContext.legendSettings,a=e.dataContext;!a.createLegendMarker||this.useDefaultMarker&&a instanceof y.a||e.childrenCreated||(a.createLegendMarker(n),e.childrenCreated=!0),a.updateLegendValue&&a.updateLegendValue(),a.component&&a.component.updateLegendValue&&a.component.updateLegendValue(a),r.invalid&&r.validate(),""==r.currentText||void 0==r.currentText?r.__disabled=!0:r.__disabled=!1,!o||void 0==o.itemValueText&&void 0==o.valueText||(r.__disabled=!1);var s=e.dataContext.visible;void 0===s&&(s=!0),s=m.toBoolean(s),e.dataContext.visible=s,i.events.disableType("toggled"),i.isActive=!s,i.events.enableType("toggled")},Object.defineProperty(e.prototype,"position",{get:function(){return this.getPropertyValue("position")},set:function(t){this.setPropertyValue("position",t)&&("left"==t||"right"==t?(this.margin(10,20,10,20),this.valign="middle",this.itemContainers.template.width=Object(d.c)(100),this.valueLabels.template.width=Object(d.c)(100),this.labels.template.truncate=!0,this.labels.template.fullWords=!1):(this.itemContainers.template.width=void 0,this.itemContainers.template.maxWidth=void 0,this.valueLabels.template.width=50,this.labels.template.truncate=!1,this.width=Object(d.c)(100)),this.invalidate())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"useDefaultMarker",{get:function(){return this.getPropertyValue("useDefaultMarker")},set:function(t){this.setPropertyValue("useDefaultMarker",t,!0)},enumerable:!0,configurable:!0}),e.prototype.toggleDataItem=function(t){var e=t.dataContext;!e.visible||e.isHiding||e instanceof y.a&&e.isHidden?(t.color=t.colorOrig,t.itemContainer.isActive=!1,!0===e.hidden&&(e.hidden=!1),e.show?e.show():e.visible=!0):(t.itemContainer.isActive=!0,e.hide?e.hide():e.visible=!1,t.color=(new f.a).getFor("disabledBackground"))},Object.defineProperty(e.prototype,"preloader",{get:function(){},enumerable:!0,configurable:!0}),e.prototype.handleDataItemPropertyChange=function(t,e){t.valueLabel.invalidate(),t.label.invalidate()},e}(r.a);c.b.registeredClasses.Legend=w,x.c.push({relevant:x.b.widthXS,state:function(t,e){if(t instanceof w&&("left"==t.position||"right"==t.position)){var i=t.states.create(e);return i.properties.position="bottom",i}return null}}),x.c.push({relevant:x.b.heightXS,state:function(t,e){if(t instanceof w&&("top"==t.position||"bottom"==t.position)){var i=t.states.create(e);return i.properties.position="right",i}return null}}),x.c.push({relevant:x.b.isXS,state:function(t,e){if(t instanceof w){var i=t.states.create(e);return i.properties.disabled=!0,i}return null}})},ua0L:function(t,e,i){var n=i("DvJ+"),r=i("kHwJ"),o=i("YEtG")("species");t.exports=function(t){var e;return r(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!r(e.prototype)||(e=void 0),n(e)&&null===(e=e[o])&&(e=void 0)),void 0===e?Array:e}},"uc+e":function(t,e,i){i("xdw4")("observable")},uqxK:function(t,e,i){var n=i("6MWL"),r=i("snR7"),o=n.key,a=n.set;n.exp({defineMetadata:function(t,e,i,n){a(t,e,r(i),o(n))}})},uuf2:function(t,e,i){var n=i("Gb1H"),r=Math.exp;n(n.S,"Math",{cosh:function(t){return(r(t=+t)+r(-t))/2}})},ux7t:function(t,e,i){"use strict";i.d(e,"a",function(){return f});var n=i("m4/l"),r=i("Tjl+"),o=i("aCit"),a=i("x79X"),s=i("vMqJ"),u=i("8ZqG"),l=i("tjMS"),h=i("v9UT"),c=i("0FpR"),p=i("Qkdp"),d=i("Mtpk"),f=function(t){function e(){var e=t.call(this)||this;return e.transitionDuration=0,e.transitionEasing=c.cubicOut,e.properties={},e.propertyFields={},e.filters=new s.b,e.isTemplate=!1,e.className="SpriteState",e._disposers.push(new s.c(e.filters)),e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"adapter",{get:function(){var t=this;return this._adapterO||(this._adapterO=new a.a(this),this._adapterO.events.on("inserted",function(e){t[e.newValue.key]=t[e.newValue.key]},void 0,!1),this._adapterO.events.on("removed",function(e){t[e.newValue.key]=t[e.newValue.key]},void 0,!1)),this._adapterO},enumerable:!0,configurable:!0}),e.prototype.getPropertyValue=function(t){var e=this.properties[t],i=this.sprite;if(i){var n=this.propertyFields[t];if(d.hasValue(n)&&i.dataItem&&(e=i.dataItem.dataContext[n]),d.hasValue(e))this._adapterO&&(e=this._adapterO.apply(t,e));else{var r=i.getPropertyValue(t);(e=this._adapterO?this._adapterO.apply(t,r):r)==r&&(e=void 0)}}return e},e.prototype.copyFrom=function(t){t&&t!=this&&(this.transitionDuration=t.transitionDuration,this.transitionEasing=t.transitionEasing,h.copyProperties(t.properties,this.properties),h.copyProperties(t.propertyFields,this.propertyFields),this.filters.copyFrom(t.filters),t._adapterO&&this.adapter.copyFrom(t._adapterO))},Object.defineProperty(e.prototype,"allValues",{get:function(){var t=this,e={};if(p.each(this.properties,function(i,n){e[i]=t.getPropertyValue(i)}),this._adapterO){var i=this._adapterO.keys();p.each(i,function(i,n){var r=t.getPropertyValue(n);e[n]=r})}var n=this.propertyFields;return p.each(n,function(i){var n=t.getPropertyValue(i);e[i]=n}),e},enumerable:!0,configurable:!0}),e.prototype.reset=function(){this.properties={},this.filters.clear()},e.prototype.processConfig=function(e){d.hasValue(e)&&d.hasValue(e.properties)&&p.each(e.properties,function(t,i){d.isString(i)&&(i.match(/^[0-9.\-]+\%$/)?e.properties[t]=Object(l.c)(d.toNumber(i)):i.match(/^\#[0-9abcdef]{3,}$/i)&&(e.properties[t]=Object(u.e)(i)))}),t.prototype.processConfig.call(this,e)},e.prototype.asFunction=function(e){return"transitionEasing"==e||t.prototype.asIs.call(this,e)},e}(r.a);o.b.registeredClasses.SpriteState=f},v36H:function(t,e,i){"use strict";i.d(e,"b",function(){return _}),i.d(e,"a",function(){return P});var n=i("m4/l"),r=i("Uf57"),o=i("Vs7R"),a=i("C6dT"),s=i("vMqJ"),u=i("YOID"),l=i("pR7v"),h=i("KknQ"),c=i("VB2N"),p=i("aCit"),d=i("PTiM"),f=i("p9TX"),g=i("GtDR"),m=i("Wglt"),y=i("Qkdp"),b=i("Mtpk"),v=i("hJ5i"),x=i("TXRX"),_=function(t){function e(){var e=t.call(this)||this;return e.className="LineSeriesDataItem",e}return n.c(e,t),e}(r.b),P=function(t){function e(){var e=t.call(this)||this;return e.minDistance=.5,e.segments=new s.e(e.createSegment()),e.segments.template.applyOnClones=!0,e._disposers.push(new s.c(e.segments)),e._disposers.push(e.segments.template),e._segmentsIterator=new m.ListIterator(e.segments,function(){return e.segments.create()}),e._segmentsIterator.createNewItems=!0,e.className="LineSeries",e.strokeOpacity=1,e.fillOpacity=0,e.connect=!0,e.tensionX=1,e.tensionY=1,e.autoGapCount=1.1,e.segmentsContainer=e.mainContainer.createChild(a.a),e.segmentsContainer.isMeasured=!1,e.bulletsContainer.toFront(),e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),b.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Line Series"))},e.prototype.createSegment=function(){return new u.a},e.prototype.createDataItem=function(){return new _},e.prototype.setInitialWorkingValues=function(t){var e=this._yAxis.get(),i=this._xAxis.get();if(this.appeared&&this.visible){var n=this.dataItems.getIndex(t.index-1);if(t.component=this,this.baseAxis==i&&e instanceof l.a){var r=e.minZoomed;n&&(r=n.values.valueY.workingValue),t.setWorkingValue("valueY",r,0),t.setWorkingValue("valueY",t.values.valueY.value),i instanceof h.a&&(t.setWorkingLocation("dateX",t.locations.dateX-1,0),t.setWorkingLocation("dateX",t.locations.dateX))}if(this.baseAxis==e&&i instanceof l.a){var o=i.minZoomed;n&&(o=n.values.valueX.workingValue),t.setWorkingValue("valueX",o,0),t.setWorkingValue("valueX",t.values.valueX.value),e instanceof h.a&&(t.setWorkingLocation("dateY",t.locations.dateX-1,0),t.setWorkingLocation("dateY",t.locations.dateY))}}else this.baseAxis==i&&e instanceof l.a&&(i instanceof h.a&&t.setWorkingLocation("dateX",t.locations.dateX),i instanceof c.a&&t.setWorkingLocation("categoryX",t.locations.categoryX)),this.baseAxis==e&&i instanceof l.a&&(e instanceof h.a&&t.setWorkingLocation("dateY",t.locations.dateY),e instanceof c.a&&t.setWorkingLocation("categoryY",t.locations.categoryY))},e.prototype.updateLegendValue=function(e,i){t.prototype.updateLegendValue.call(this,e,i),e&&e.segment&&(this.tooltipColorSource=e.segment)},e.prototype.validate=function(){var e=this;t.prototype.validate.call(this),this.xAxis&&this.yAxis&&(this._segmentsIterator.reset(),this.openSegmentWrapper(this._adjustedStartIndex),m.each(this.axisRanges.iterator(),function(t){e.openSegmentWrapper(e._adjustedStartIndex,t)}),m.each(this._segmentsIterator.iterator(),function(t){t.__disabled=!0}))},e.prototype.sliceData=function(){for(var t=this.startIndex,e=this.endIndex,i=this.startIndex-1;i>=0;i--){if((r=this.dataItems.getIndex(i))&&r.hasValue(this._xValueFields)&&r.hasValue(this._yValueFields)){t=i;break}}this._adjustedStartIndex=this.findAdjustedIndex(t,["stroke","strokeWidth","strokeDasharray","strokeOpacity","fill","fillOpacity","opacity"]);i=this.endIndex;for(var n=this.dataItems.length;i=0;o--){var a=i.dataItems.getIndex(o);if(a&&b.hasValue(a.properties[e])){t>o&&(t=o);break}}}),t},e.prototype.openSegmentWrapper=function(t,e){var i={index:t,axisRange:e};do{i=this.openSegment(i.index,i.axisRange)}while(i)},e.prototype.openSegment=function(t,e){var i=!1,n=[];t=Math.min(t,this.dataItems.length);var r,a=Math.min(this._workingEndIndex,this.dataItems.length);this._workingEndIndex=Math.min(this._workingEndIndex,this.dataItems.length);var s=!1,u=this._segmentsIterator.getFirst();u.__disabled=!1,e?(u.parent=e.contents,y.copyProperties(e.contents,u,o.b)):(y.copyProperties(this,u,o.b),u.filters.clear(),u.parent=this.segmentsContainer);for(var l=this.connect,c=!1,p=t;p=i;s--){var u=this.dataItems.getIndex(s);u.hasValue(this._xValueFields)&&u.hasValue(this._yValueFields)&&this.addPoints(a,u,this.xOpenField,this.yOpenField,!0)}else{var l=this.baseAxis,h=e.length,c=this.xAxis,p=this.yAxis;h>0&&(l==c?(a.push({x:e[h-1].x,y:p.basePoint.y}),a.push({x:e[0].x,y:p.basePoint.y})):(a.push({x:c.basePoint.x,y:e[h-1].y}),a.push({x:c.basePoint.x,y:e[0].y})))}return this.drawSegment(t,e,a),o&&n++,n0){var s=t.createChild(g.a);y.copyProperties(this,s,o.b),s.width=i,s.height=n,s.y=0,s.strokeOpacity=0,s.visible=!0,r.y=0}var u=t.dataItem;u.color=this.stroke,u.colorOrig=this.fill,m.eachContinue(this.bullets.iterator(),function(r){if(r instanceof x.a&&!r.copyToLegendMarker)return!1;var o=!1;if(r instanceof a.a&&m.each(r.children.iterator(),function(t){if(t instanceof f.a)return o=!0,!0}),!o){var s=r.clone();return s.parent=t,s.isMeasured=!0,s.tooltipText=void 0,s.x=i/2,e.fillOpacity>0?s.y=0:s.y=n/2,s.visible=!0,b.hasValue(s.fill)||(s.fill=e.fill),b.hasValue(s.stroke)||(s.stroke=e.stroke),!1}})},e.prototype.disposeData=function(){t.prototype.disposeData.call(this),this.segments.clear()},Object.defineProperty(e.prototype,"autoGapCount",{get:function(){return this.getPropertyValue("autoGapCount")},set:function(t){this.setPropertyValue("autoGapCount",t,!0)},enumerable:!0,configurable:!0}),e}(r.a);p.b.registeredClasses.LineSeries=P,p.b.registeredClasses.LineSeriesDataItem=_},v9UT:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.used=function(t){},e.copyProperties=function(t,e){return l.each(t,function(t,i){a.hasValue(i)&&(e[t]=i)}),e},e.stripHash=c,e.getBaseURI=function(){var t="#";if(Object(r.b)()){var e=document.baseURI;if(e){e=c(e);var i=c(location.href);e!==i&&(t=i+t)}}return t},e.softCopyProperties=function(t,e){return l.each(t,function(t,i){a.hasValue(i)&&!a.hasValue(e[t])&&(e[t]=i)}),e},e.copy=function(t,e){return l.each(t,function(t,i){e[t]=i}),e},e.isNotEmpty=function(t){return a.hasValue(t)&&""!==t.toString()},e.relativeToValue=function(t,e){return a.isNumber(t)?t:null!=t&&a.isNumber(t.value)&&a.isNumber(e)?e*t.value:0},e.relativeRadiusToValue=function(t,e,i){var n;a.isNumber(t)?(n=t)<0&&(n=i?e+n:e-n):null!=t&&a.isNumber(t.value)&&(n=e*t.value);return n},e.valueToRelative=function(t,e){return t instanceof n.a?t.value:t/e},e.getPixelRatio=function(){return window.devicePixelRatio||1},e.camelToDashed=function(t){return t.replace(/\W+/g,"-").replace(/([a-z\d])([A-Z])/g,"$1-$2").toLowerCase()},e.capitalize=function(t){var e=t.split("");return e[0]=e[0].toUpperCase(),e.join("")},e.stringify=function(t){return JSON.stringify(t)},e.escapeForRgex=function(t){return t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},e.splitTextByCharCount=p,e.truncateWithEllipsis=function(t,e,i,n,r){if(t.length<=e)return t;(e-=i.length)<1&&(e=1);return(p(t,e,n,r)[0]||"")+i},e.trim=function(t){return t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},e.rtrim=function(t){return t.replace(/[\s\uFEFF\xA0]+$/g,"")},e.ltrim=function(t){return t.replace(/^[\s\uFEFF\xA0]+/g,"")},e.reverseString=d,e.unquote=function(t){var e=t.trim();(e=t.replace(/^'(.*)'$/,"$1"))==t&&(e=t.replace(/^"(.*)"$/,"$1"));return e},e.padString=function(t,e,i){void 0===e&&(e=0);void 0===i&&(i="0");"string"!=typeof t&&(t=t.toString());return e>t.length?Array(e-t.length+1).join(i)+t:t},e.getFormat=function(t){if(void 0===t)return u.g;var e=(t=(t=(t=t.toLowerCase().replace(/^\[[^\]]*\]/,"")).replace(/\[[^\]]+\]/,"")).trim()).match(/\/(date|number|duration)$/);if(e)return e[1];if(t===u.c)return u.c;if(t===u.a)return u.a;if(t===u.b)return u.b;if(t.match(/[#0]/))return u.c;if(t.match(/[ymwdhnsqaxkzgtei]/))return u.a;return u.g},e.cleanFormat=function(t){return t.replace(/\/(date|number|duration)$/i,"")},e.stripTags=f,e.plainText=function(t){return t?f(t.replace(/[\n\r]+/g,". ")):t},e.numberToString=function(t){if(a.isNaN(t))return"NaN";if(t===1/0)return"Infinity";if(t===-1/0)return"-Infinity";if(0===t&&1/t==-1/0)return"-0";var e=t<0;t=Math.abs(t);var i,n=a.getValue(/^([0-9]+)(?:\.([0-9]+))?(?:e[\+\-]([0-9]+))?$/.exec(""+t)),r=n[1],o=n[2]||"";if(null==n[3])i=""===o?r:r+"."+o;else{var u=+n[3];if(t<1){var l=u-1;i="0."+s.repeat("0",l)+r+o}else{var l=u-o.length;i=0===l?r+o:l<0?r+o.slice(0,l)+"."+o.slice(l):r+o+s.repeat("0",l)}}return e?"-"+i:i},e.anyToDate=function(t){if(a.isDate(t))return new Date(t);if(a.isNumber(t))return new Date(t);var e=Number(t);return a.isNumber(e)?new Date(e):new Date(t)},e.anyToNumber=function(t){if(a.isDate(t))return t.getTime();if(a.isNumber(t))return t;if(a.isString(t)){var e=Number(t);return a.isNumber(e)?e:void 0}},e.getYearDay=g,e.getWeek=m,e.getMonthWeek=function(t,e){void 0===e&&(e=!1);var i=m(new Date(t.getFullYear(),t.getMonth(),1),e),n=m(t,e);1==n&&(n=53);return n-i+1},e.getDayFromWeek=function(t,e,i,n){void 0===i&&(i=1);void 0===n&&(n=!1);var r=new Date(e,0,4,0,0,0,0);n&&r.setUTCFullYear(e);return 7*t+i-((r.getDay()||7)+3)},e.get12Hours=function(t,e){t>12?t-=12:0===t&&(t=12);return a.hasValue(e)?t+(e-1):t},e.getTimeZone=function(t,e,i,n){void 0===e&&(e=!1);void 0===i&&(i=!1);void 0===n&&(n=!1);if(n)return e?"Coordinated Universal Time":"UTC";var r=t.toLocaleString("UTC"),o=t.toLocaleString("UTC",{timeZoneName:e?"long":"short"}).substr(r.length);!1===i&&(o=o.replace(/ (standard|daylight|summer|winter) /i," "));return o},e.random=function(t,e){return Math.floor(Math.random()*e)+t},e.fitNumber=function(t,e,i){if(t>i)return i;if(ti?t=e+(t-n*Math.floor(t/n)):t1&&r.pop(),h.pushAll(r,o),i.path=r.join("/"),""!==i.path&&"/"!==i.path[0])throw new Error("URL path must start with /")}return i.query=n.query,i.hash=n.hash,w(i)}return w(n)},e.isIE=function(){return!!window.MSInputMethodContext&&!!document.documentMode};var n=i("tjMS"),r=i("LBDG"),o=i("Gg2j"),a=i("Mtpk"),s=i("wUYf"),u=i("ScGY"),l=i("Qkdp"),h=i("hJ5i");function c(t){return/^[^#]*/.exec(t)[0]}function p(t,e,i,n){if(t.length<=e)return[t];var r=[];if(i)for(var o=-1,a=t.replace(/([,;:!?\\\/\.\s]+)/g,u.d+"$1"+u.d).split(u.d),s=0;se){if(n&&(l=d(l)),c=l.match(new RegExp(".{1,"+e+"}","g"))){if(n)for(var p=0;pe&&""!==r[o]&&(r.push(""),o++),r[o]+=l;o=r.length-1}}else if(c=t.match(new RegExp(".{1,"+e+"}","g"))){if(n)for(p=0;pe&&(r=[]),r}function d(t){return t.split("").reverse().join("")}function f(t){return t?t.replace(/<[^>]*>/g,""):t}function g(t,e){void 0===e&&(e=!1);var i=new Date(t.getFullYear(),0,1,0,0,0,0);return Math.floor((t.getTime()-i.getTime())/864e5)+1}function m(t,e){void 0===e&&(e=!1);var i=g(t,e)-1,n=Math.floor((i-(t.getDay()||7)+10)/7);return 0===n?n=53:53===n&&(n=1),n}function y(t,e){var i=t.x,n=t.y,r=[];if(e){for(;a.hasValue(e.parent);)r.push(e),e=e.parent;r.reverse();for(var s=0;s=t._end&&e(t._array[i]);--i);}},t.prototype.backwards=function(){return new t(this._array,this._end,this._start)},t.prototype.range=function(e,i){if(e<=i){if(this._start===this._end)return this;if(this._start=0&&t=0&&t0);if(o>=a)return a;this.swap(o,a)}},t.prototype.sort=function(t){this._sortQuicksort(0,this._values.length-1,t)},t.prototype.swap=function(t,e){var i=this._values.length;if(c(t,i),c(e,i),t!==e){var n=this._values[t],r=this._values[e];this._values[t]=r,this.events.isEnabled("setIndex")&&this.events.dispatchImmediately("setIndex",{type:"setIndex",target:this,index:t,oldValue:n,newValue:r}),this._values[e]=n,this.events.isEnabled("setIndex")&&this.events.dispatchImmediately("setIndex",{type:"setIndex",target:this,index:e,oldValue:r,newValue:n})}},t.prototype.removeIndex=function(t){c(t,this._values.length);var e=this._values[t];return a.removeIndex(this._values,t),this.events.isEnabled("removeIndex")&&this.events.dispatchImmediately("removeIndex",{type:"removeIndex",target:this,index:t,oldValue:e}),this.events.isEnabled("removed")&&this.events.dispatchImmediately("removed",{type:"removed",target:this,oldValue:e}),e},t.prototype.moveValue=function(t,e){var i=this.indexOf(t);if(-1!==i){var n=this._values[i];a.removeIndex(this._values,i),this.events.isEnabled("removeIndex")&&this.events.dispatchImmediately("removeIndex",{type:"removeIndex",target:this,index:i,oldValue:n})}null==e?(e=this._values.length,this._values.push(t)):a.insertIndex(this._values,e,t),this.events.isEnabled("insertIndex")&&this.events.dispatchImmediately("insertIndex",{type:"insertIndex",target:this,index:e,newValue:t}),-1===i&&this.events.isEnabled("inserted")&&this.events.dispatchImmediately("inserted",{type:"inserted",target:this,newValue:t})},t.prototype.push=function(t){var e=this._values.push(t)-1;return this.events.isEnabled("insertIndex")&&this.events.dispatchImmediately("insertIndex",{type:"insertIndex",target:this,index:e,newValue:t}),this.events.isEnabled("inserted")&&this.events.dispatchImmediately("inserted",{type:"inserted",target:this,newValue:t}),t},t.prototype.unshift=function(t){this.insertIndex(0,t)},t.prototype.pushAll=function(t){var e=this;a.each(t,function(t){e.push(t)})},t.prototype.copyFrom=function(t){this.pushAll(t._values)},t.prototype.pop=function(){return this._values.length-1<0?void 0:this.removeIndex(this._values.length-1)},t.prototype.shift=function(){return this._values.length?this.removeIndex(0):void 0},t.prototype.setAll=function(t){var e=this,i=a.copy(this._values);this._values.length=0,a.each(t,function(t){e._values.push(t)}),this.events.isEnabled("setAll")&&this.events.dispatchImmediately("setAll",{type:"setAll",target:this,oldArray:i,newArray:this._values}),this.events.isEnabled("removed")&&a.each(i,function(t){e.events.dispatchImmediately("removed",{type:"removed",target:e,oldValue:t})}),this.events.isEnabled("inserted")&&a.each(this._values,function(t){e.events.dispatchImmediately("inserted",{type:"inserted",target:e,newValue:t})})},t.prototype.clear=function(){this.setAll([])},t.prototype.iterator=function(){return s.fromArray(this._values)},t.prototype[Symbol.iterator]=function(){var t,e;return n.d(this,function(i){switch(i.label){case 0:t=this._values.length,e=0,i.label=1;case 1:return e0?arguments[0]:void 0)}},{add:function(t){return n.def(r(this,"WeakSet"),t,!0)}},n,!1,!0)},vbOF:function(t,e,i){"use strict";i.d(e,"a",function(){return h});var n=i("m4/l"),r=i("YotE"),o=i("Tjl+"),a=i("vMqJ"),s=i("+qIf"),u=i("zhwk"),l=i("Mtpk"),h=function(t){function e(e){var i=t.call(this)||this;return i._eventDispatcher=new r.a(i),i.eventDisposers=new s.a,i.replacedStyles=new s.a,i._clickable=!1,i._contextMenuDisabled=!1,i._hoverable=!1,i._trackable=!1,i._draggable=!1,i._swipeable=!1,i._resizable=!1,i._wheelable=!1,i._inert=!1,i._isHover=!1,i._isHoverByTouch=!1,i._isDown=!1,i._isFocused=!1,i._isTouchProtected=!1,i._inertiaOptions=new s.a,i.inertias=new s.a,i._hitOptions={},i._hoverOptions={},i._swipeOptions={},i._keyboardOptions={},i._mouseOptions={},i._cursorOptions={defaultStyle:[{property:"cursor",value:"default"}]},i._disposers.push(i._eventDispatcher),i._element=e,i.className="InteractionObject",i._disposers.push(new s.b(i.inertias)),i._disposers.push(new s.b(i.eventDisposers)),i.applyTheme(),i}return n.c(e,t),Object.defineProperty(e.prototype,"events",{get:function(){return this._eventDispatcher},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isHover",{get:function(){return this._isHover},set:function(t){this.isHover!=t&&(this._isHover=t,t?Object(u.b)().overObjects.moveValue(this):Object(u.b)().overObjects.removeValue(this))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isHoverByTouch",{get:function(){return this._isHoverByTouch},set:function(t){this.isHoverByTouch!=t&&(this._isHoverByTouch=t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"overPointers",{get:function(){return this._overPointers||(this._overPointers=new a.b),this._overPointers},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isDown",{get:function(){return this._isDown},set:function(t){this.isDown!=t&&(this._isDown=t,t?Object(u.b)().downObjects.moveValue(this):Object(u.b)().downObjects.removeValue(this))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"downPointers",{get:function(){return this._downPointers||(this._downPointers=new a.b),this._downPointers},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isFocused",{get:function(){return this._isFocused},set:function(t){this.isFocused!=t&&(this._isFocused=t,Object(u.b)().focusedObject=t?this:void 0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isTouchProtected",{get:function(){return this._isTouchProtected},set:function(t){this._isTouchProtected!=t&&(this._isTouchProtected=t,t?Object(u.b)().unprepElement(this):(this.draggable||this.swipeable||this.trackable||this.resizable)&&Object(u.b)().prepElement(this))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"clickable",{get:function(){return this._clickable},set:function(t){this._clickable!==t&&(this._clickable=t,Object(u.b)().processClickable(this))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"contextMenuDisabled",{get:function(){return this._contextMenuDisabled},set:function(t){this._contextMenuDisabled!==t&&(this._contextMenuDisabled=t,Object(u.b)().processContextMenu(this))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hoverable",{get:function(){return this._hoverable},set:function(t){this._hoverable!==t&&(this._hoverable=t,Object(u.b)().processHoverable(this))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"trackable",{get:function(){return this._trackable},set:function(t){this._trackable!==t&&(this._trackable=t,Object(u.b)().processTrackable(this))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"draggable",{get:function(){return this._draggable},set:function(t){this._draggable!==t&&(this._draggable=t,Object(u.b)().processDraggable(this))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"swipeable",{get:function(){return this._swipeable},set:function(t){this._swipeable!==t&&(this._swipeable=t,Object(u.b)().processSwipeable(this))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"resizable",{get:function(){return this._resizable},set:function(t){this._resizable!==t&&(this._resizable=t,Object(u.b)().processResizable(this))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"wheelable",{get:function(){return this._wheelable},set:function(t){this._wheelable!==t&&(this._wheelable=t,Object(u.b)().processWheelable(this))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"inert",{get:function(){return this._inert},set:function(t){this._inert!==t&&(this._inert=t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"focusable",{get:function(){return this._focusable},set:function(t){this._focusable!==t&&(this._focusable=t,this._focusable&&-1==this.tabindex&&(this._tabindex=1),Object(u.b)().processFocusable(this))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tabindex",{get:function(){return l.getValueDefault(this._tabindex,-1)},set:function(t){this._tabindex!==t&&(this._tabindex=t,t>-1&&(this.focusable=!0),Object(u.b)().processFocusable(this))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"element",{get:function(){return this._element},set:function(t){this._element=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"originalPosition",{get:function(){return this._originalPosition||{x:0,y:0}},set:function(t){this._originalPosition=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"originalScale",{get:function(){return l.getValueDefault(this._originalScale,1)},set:function(t){this._originalScale!==t&&(this._originalScale=t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"originalAngle",{get:function(){return l.getValueDefault(this._originalAngle,0)},set:function(t){this._originalAngle!==t&&(this._originalAngle=t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"inertiaOptions",{get:function(){return this.sprite&&this.sprite._adapterO?this.sprite._adapterO.apply("inertiaOptions",this._inertiaOptions):this._inertiaOptions},set:function(t){this._inertiaOptions=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hitOptions",{get:function(){return this.sprite&&this.sprite._adapterO?this.sprite._adapterO.apply("hitOptions",this._hitOptions):this._hitOptions},set:function(t){this._hitOptions=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hoverOptions",{get:function(){return this.sprite&&this.sprite._adapterO?this.sprite._adapterO.apply("hoverOptions",this._hoverOptions):this._hoverOptions},set:function(t){this._hoverOptions=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"swipeOptions",{get:function(){return this.sprite&&this.sprite._adapterO?this.sprite._adapterO.apply("swipeOptions",this._swipeOptions):this._swipeOptions},set:function(t){this._swipeOptions=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"keyboardOptions",{get:function(){return this.sprite&&this.sprite._adapterO?this.sprite._adapterO.apply("keyboardOptions",this._keyboardOptions):this._keyboardOptions},set:function(t){this._keyboardOptions=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"mouseOptions",{get:function(){return this.sprite&&this.sprite._adapterO?this.sprite._adapterO.apply("mouseOptions",this._mouseOptions):this._mouseOptions},set:function(t){this._mouseOptions=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"cursorOptions",{get:function(){return this.sprite&&this.sprite._adapterO?this.sprite._adapterO.apply("cursorOptions",this._cursorOptions):this._cursorOptions},set:function(t){this._cursorOptions=t},enumerable:!0,configurable:!0}),e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.inertiaOptions=e.inertiaOptions,this.hitOptions=e.hitOptions,this.hoverOptions=e.hoverOptions,this.swipeOptions=e.swipeOptions,this.keyboardOptions=e.keyboardOptions,this.cursorOptions=e.cursorOptions,this.contextMenuDisabled=e.contextMenuDisabled,Object(u.b)().applyCursorOverStyle(this)},e.prototype.setEventDisposer=function(t,e,i){var n=this.eventDisposers.getKey(t);e?null==n&&this.eventDisposers.setKey(t,i()):null!=n&&(n.dispose(),this.eventDisposers.removeKey(t))},e.prototype.dispose=function(){t.prototype.dispose.call(this);var e=Object(u.b)();e.overObjects.removeValue(this),e.downObjects.removeValue(this),e.trackedObjects.removeValue(this),e.transformedObjects.removeValue(this),this.isHover&&this.wheelable&&e.unlockWheel(),e.focusedObject===this&&(e.focusedObject=void 0)},e}(o.b)},vdWU:function(t,e,i){"use strict";var n=i("T9LF"),r=i("hjwn"),o=i("gD3S"),a=i("YEtG")("species");t.exports=function(t){var e=n[t];o&&e&&!e[a]&&r.f(e,a,{configurable:!0,get:function(){return this}})}},vsTS:function(t,e,i){var n=i("hjwn"),r=i("nHHr"),o=i("K0ev"),a=i("U3hN"),s=i("Gb1H"),u=i("Wbjh"),l=i("snR7"),h=i("DvJ+");s(s.S,"Reflect",{set:function t(e,i,s){var c,p,d=arguments.length<4?e:arguments[3],f=r.f(l(e),i);if(!f){if(h(p=o(e)))return t(p,i,s,d);f=u(0)}if(a(f,"value")){if(!1===f.writable||!h(d))return!1;if(c=r.f(d,i)){if(c.get||c.set||!1===c.writable)return!1;c.value=s,n.f(d,i,c)}else n.f(d,i,u(0,s));return!0}return void 0!==f.set&&(f.set.call(d,s),!0)}})},w1yl:function(t,e,i){var n=i("YEtG")("toPrimitive"),r=Date.prototype;n in r||i("Vng0")(r,n,i("kJ6f"))},w4m0:function(t,e,i){"use strict";i.d(e,"a",function(){return s});var n=i("m4/l"),r=i("GtDR"),o=i("aFzC"),a=i("hGwe"),s=function(t){function e(){var e=t.call(this)||this;return e.className="WavedRectangle",e.element=e.paper.add("path"),e.waveLength=16,e.waveHeight=4,e.tension=.8,e.setPropertyValue("wavedLeft",!0),e.setPropertyValue("wavedRight",!0),e.setPropertyValue("wavedTop",!0),e.setPropertyValue("wavedBottom",!0),e.applyTheme(),e}return n.c(e,t),e.prototype.draw=function(){t.prototype.draw.call(this);var e=this.pixelWidth,i=this.pixelHeight;if(e>0&&i>0){var n={x:0,y:0},r={x:e,y:0},s={x:e,y:i},u={x:0,y:i},l=Math.min(e,this.waveLength),h=Math.min(i,this.waveHeight),c=Math.min(i,this.waveLength),p=Math.min(e,this.waveHeight),d="",f="",g="",m="";this.wavedTop&&(d=Object(o.c)(n,r,l,h,this.tension,!0)),this.wavedRight&&(f=Object(o.c)(r,s,c,p,this.tension,!0)),this.wavedBottom&&(g=Object(o.c)(s,u,l,h,this.tension,!0)),this.wavedLeft&&(m=Object(o.c)(u,n,c,p,this.tension,!0)),this.path=a.moveTo(n)+d+a.lineTo(r)+f+a.lineTo(s)+g+a.lineTo(u)+m+"z"}},Object.defineProperty(e.prototype,"waveLength",{get:function(){return this.getPropertyValue("waveLength")},set:function(t){this.setPropertyValue("waveLength",t),this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"waveHeight",{get:function(){return this.getPropertyValue("waveHeight")},set:function(t){this.setPropertyValue("waveHeight",t),this.invalidate()},enumerable:!0,configurable:!0}),e.prototype.setWavedSides=function(t,e,i,n){this.wavedTop=t,this.wavedRight=e,this.wavedBottom=i,this.wavedLeft=n},Object.defineProperty(e.prototype,"tension",{get:function(){return this.getPropertyValue("tension")},set:function(t){this.setPropertyValue("tension",t),this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"wavedRight",{get:function(){return this.getPropertyValue("wavedRight")},set:function(t){this.setPropertyValue("wavedRight",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"wavedLeft",{get:function(){return this.getPropertyValue("wavedLeft")},set:function(t){this.setPropertyValue("wavedLeft",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"wavedTop",{get:function(){return this.getPropertyValue("wavedTop")},set:function(t){this.setPropertyValue("wavedTop",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"wavedBottom",{get:function(){return this.getPropertyValue("wavedBottom")},set:function(t){this.setPropertyValue("wavedBottom",t,!0)},enumerable:!0,configurable:!0}),e}(r.a)},wDk4:function(t,e,i){var n=i("T9LF"),r=i("Vng0"),o=i("U3hN"),a=i("7bL/")("src"),s=i("+BwA"),u=(""+s).split("toString");i("G5U1").inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,i,s){var l="function"==typeof i;l&&(o(i,"name")||r(i,"name",e)),t[e]!==i&&(l&&(o(i,a)||r(i,a,t[e]?""+t[e]:u.join(String(e)))),t===n?t[e]=i:s?t[e]?t[e]=i:r(t,e,i):(delete t[e],r(t,e,i)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[a]||s.call(this)})},wUYf:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.order=function(t,e){return t===e?0:tc;)void 0!==(i=u(n,e=l[c++]))&&s(h,e,i);return h}})},x2K9:function(t,e,i){"use strict";var n=i("snR7");t.exports=function(){var t=n(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},x79X:function(t,e,i){"use strict";i.d(e,"b",function(){return l}),i.d(e,"c",function(){return h}),i.d(e,"a",function(){return c});var n=i("VGgz"),r=i("3Cxr"),o=i("MlsF"),a=i("Wglt"),s=i("hJ5i"),u=i("Mtpk"),l=function(){function t(){this._callbackId=0,this._callbacks=new n.c(function(t,e){return o.a(r.order(t.priority,e.priority),r.order(t.id,e.id))})}return t.prototype.addAll=function(t,e,i,n,r){void 0===n&&(n=0),this._callbacks.insert({id:++this._callbackId,key:e,callback:i,priority:n,scope:r,type:t})},t.prototype.isEnabled=function(t,e){return this._callbacks.length>0},t.prototype.applyAll=function(t,e,i){var n=this._callbacks.values,r=n.length;if(0==r)return i;for(var o=0;o0||h.isEnabled(this.object,t)},t.prototype.apply=function(t,e){var i=this._callbacks.values,n=i.length;if(n>0)for(var r=0;r0?arguments[0]:void 0)}},{add:function(t){return n.def(r(this,"Set"),t=0===t?0:t,t)}},n)},xDSx:function(t,e,i){var n=i("DvJ+"),r=i("kFp5").onFreeze;i("5lay")("freeze",function(t){return function(e){return t&&n(e)?t(r(e)):e}})},xEZ5:function(t,e,i){"use strict";i("Mvcd")("anchor",function(t){return function(e){return t(this,"a","name",e)}})},xIv9:function(t,e,i){"use strict";i.d(e,"a",function(){return l});var n=i("m4/l"),r=i("aGXA"),o=i("Vs7R"),a=i("MIZb"),s=i("aCit"),u=i("hGwe"),l=function(t){function e(){var e=t.call(this)||this;e.className="ResizeButton",e.orientation="horizontal",e.layout="absolute",e.horizontalCenter="middle",e.verticalCenter="middle",e.draggable=!0,e.padding(8,8,8,8),e.background.cornerRadius(20,20,20,20);var i=new o.a;i.element=e.paper.add("path");var n=u.moveTo({x:-2,y:-6});return n+=u.lineTo({x:-2,y:6}),n+=u.moveTo({x:2,y:-6}),n+=u.lineTo({x:2,y:6}),i.path=n,i.pixelPerfect=!0,i.padding(0,4,0,4),i.stroke=(new a.a).getFor("alternativeText"),i.strokeOpacity=.7,e.icon=i,e.label.dispose(),e.label=void 0,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"orientation",{set:function(t){var e=this.icon;e&&(e.rotation="horizontal"==t?0:-90)},enumerable:!0,configurable:!0}),e}(r.a);s.b.registeredClasses.ResizeButton=l},xSzy:function(t,e,i){for(var n,r=i("T9LF"),o=i("Vng0"),a=i("7bL/"),s=a("typed_array"),u=a("view"),l=!(!r.ArrayBuffer||!r.DataView),h=l,c=0,p="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");c<9;)(n=r[p[c++]])?(o(n.prototype,s,!0),o(n.prototype,u,!0)):h=!1;t.exports={ABV:l,CONSTR:h,TYPED:s,VIEW:u}},xdw4:function(t,e,i){var n=i("T9LF"),r=i("G5U1"),o=i("pb4Y"),a=i("xxwE"),s=i("hjwn").f;t.exports=function(t){var e=r.Symbol||(r.Symbol=o?{}:n.Symbol||{});"_"==t.charAt(0)||t in e||s(e,t,{value:a.f(t)})}},xgTw:function(t,e,i){"use strict";i.d(e,"a",function(){return l});var n=i("m4/l"),r=i("jfaP"),o=i("aCit"),a=i("Gg2j"),s=i("Mtpk"),u=i("hGwe"),l=function(t){function e(){var e=t.call(this)||this;return e.className="Polyspline",e.tensionX=.5,e.tensionY=.5,e.applyTheme(),e}return n.c(e,t),e.prototype.makePath=function(){this._distance=0;var t=this.segments,e=this.tensionX,i=this.tensionY;if(this.allPoints=[],t&&t.length>0){var n="";this._realSegments=[];for(var r=0,o=t.length;r0){var h=s[0],c=s[s.length-1],p=!1;a.round(h.x,3)==a.round(c.x)&&a.round(h.y)==a.round(c.y)&&(p=!0),n+=u.moveTo(s[0]);for(var d=0;d0)for(var P=0;P<=x;P++){var w=a.getPointOnCubicCurve(g,m,b,v,P/x);if(w.x!=_.x||w.y!=_.y){l.push(w);var O=a.round(a.getAngle(_,w),5);this._distance+=a.getDistance(_,w),this.allPoints[Math.floor(this._distance)]={x:w.x,y:w.y,angle:O},_=w}}else l.push(f)}}var S=this.allPoints;if(S.length>1)for(var T=0;T1)S[T]=S[T-1];else for(var C=1;C1)for(var r=1;r1){if(e&&r>3){if(t<0){t<-.01&&(t=-.01);var o=n[0],u=n[1];return{x:l=o.x-(o.x-u.x)*r*t,y:h=o.y-(o.y-u.y)*r*t,angle:a.getAngle(o,u)}}if(t>1){t>1.01&&(t=1.01);var l,h;o=n[n.length-2],u=n[n.length-3];return{x:l=o.x+(o.x-u.x)*r*(t-1),y:h=o.y+(o.y-u.y)*r*(t-1),angle:a.getAngle(o,{x:l,y:h})}}if(1==t){var c=n[n.length-1];return{x:c.x,y:c.y,angle:c.angle}}}else t<0&&(t=Math.abs(t),i=180),t>=1&&(t=.9999999999999);var p;return{x:(p=n[Math.floor(t*r)]).x,y:p.y,angle:p.angle+i}}return 1==r?{x:(p=n[0]).x,y:p.y,angle:p.angle}:{x:0,y:0,angle:0}},e}(r.a);o.b.registeredClasses.Polyspline=l},xwvB:function(t,e,i){"use strict";var n=i("Gb1H"),r=i("DbOM"),o=i("vJiZ"),a=i("AEc5"),s=[].sort,u=[1,2,3];n(n.P+n.F*(a(function(){u.sort(void 0)})||!a(function(){u.sort(null)})||!i("GQop")(s)),"Array",{sort:function(t){return void 0===t?s.call(o(this)):s.call(o(this),r(t))}})},xxwE:function(t,e,i){e.f=i("YEtG")},y2pX:function(t,e,i){"use strict";var n=i("vJiZ"),r=i("UwWU"),o=i("FmWr");t.exports=[].copyWithin||function(t,e){var i=n(this),a=o(i.length),s=r(t,a),u=r(e,a),l=arguments.length>2?arguments[2]:void 0,h=Math.min((void 0===l?a:r(l,a))-u,a-s),c=1;for(u0;)u in i?i[s]=i[u]:delete i[s],s+=c,u+=c;return i}},yBbu:function(t,e,i){var n=i("6MWL"),r=i("snR7"),o=n.keys,a=n.key;n.exp({getOwnMetadataKeys:function(t){return o(r(t),arguments.length<2?void 0:a(arguments[1]))}})},yOPk:function(t,e){t.exports=function(t,e,i){var n=void 0===i;switch(e.length){case 0:return n?t():t.call(i);case 1:return n?t(e[0]):t.call(i,e[0]);case 2:return n?t(e[0],e[1]):t.call(i,e[0],e[1]);case 3:return n?t(e[0],e[1],e[2]):t.call(i,e[0],e[1],e[2]);case 4:return n?t(e[0],e[1],e[2],e[3]):t.call(i,e[0],e[1],e[2],e[3])}return t.apply(i,e)}},ybeA:function(t,e,i){var n=i("T9LF"),r=i("Gb1H"),o=i("vSjZ"),a=[].slice,s=/MSIE .\./.test(o),u=function(t){return function(e,i){var n=arguments.length>2,r=!!n&&a.call(arguments,2);return t(n?function(){("function"==typeof e?e:Function(e)).apply(this,r)}:e,i)}};r(r.G+r.B+r.F*s,{setTimeout:u(n.setTimeout),setInterval:u(n.setInterval)})},yl71:function(t,e,i){var n=i("Gb1H"),r=i("EhJv"),o=i("FmWr");n(n.S,"String",{raw:function(t){for(var e=r(t.raw),i=o(e.length),n=arguments.length,a=[],s=0;i>s;)a.push(String(e[s++])),s-1&&!this._useTouchEventsOnly)t.eventDisposers.hasKey("focusable")||t.eventDisposers.setKey("focusable",new s.c([Object(p.g)(t.element,"focus",function(i){return e.handleFocus(t,i)}),Object(p.g)(t.element,"blur",function(i){return e.handleBlur(t,i)}),Object(p.g)(t.element,this._pointerEvents.pointerdown,function(i){return e.handleFocusBlur(t,i)}),Object(p.g)(t.element,"touchstart",function(i){return e.handleFocusBlur(t,i)},!!this._passiveSupported&&{passive:!1})]));else{var i=t.eventDisposers.getKey("focusable");null!=i&&(i.dispose(),t.eventDisposers.removeKey("focusable"))}},e.prototype.processTouchable=function(t){var e=this;if(t.clickable||t.hoverable||t.trackable||t.draggable||t.swipeable||t.resizable)this.addGlobalEvents(),t.eventDisposers.hasKey("touchable")||(this._useTouchEventsOnly||this._usePointerEventsOnly?this._useTouchEventsOnly?this._usePointerEventsOnly||t.eventDisposers.setKey("touchable",Object(p.g)(t.element,"touchstart",function(i){return e.handleTouchDown(t,i)},!!this._passiveSupported&&{passive:!1})):t.eventDisposers.setKey("touchable",Object(p.g)(t.element,this._pointerEvents.pointerdown,function(i){return e.handlePointerDown(t,i)})):t.eventDisposers.setKey("touchable",new s.c([Object(p.g)(t.element,this._pointerEvents.pointerdown,function(i){return e.handlePointerDown(t,i)}),Object(p.g)(t.element,"touchstart",function(i){return e.handleTouchDown(t,i)},!!this._passiveSupported&&{passive:!1})])));else{var i=t.eventDisposers.getKey("touchable");null!=i&&(i.dispose(),t.eventDisposers.removeKey("touchable"))}},e.prototype.handleFocus=function(t,e){if(t.focusable){if(t.isFocused=!0,t.events.isEnabled("focus")&&!f.b.isPaused){var i={type:"focus",target:t,event:e};t.events.dispatchImmediately("focus",i)}}else e.preventDefault()},e.prototype.handleFocusBlur=function(t,e){!1!==t.focusable&&this.getHitOption(t,"noFocus")&&t.events.once("focus",function(){t.events.disableType("blur"),p.h(),t.sprite&&t.sprite.handleBlur(),t.events.enableType("blur")})},e.prototype.handleBlur=function(t,e){if(t.focusable){if(t.isFocused=!1,t.events.isEnabled("blur")&&!f.b.isPaused){var i={type:"blur",target:t,event:e};t.events.dispatchImmediately("blur",i)}}else e.preventDefault()},e.prototype.handleGlobalKeyDown=function(t){if(this.focusedObject)if(d.b.isKey(t,"esc"))p.h();else if(this.focusedObject.draggable&&d.b.isKey(t,["up","down","left","right"])){t.preventDefault();var e=this.focusedObject;if(e.eventDisposers.hasKey("interactionKeyboardObject"))return;var i=new l.a(e,t);switch(e.eventDisposers.setKey("interactionKeyboardObject",i),d.b.getEventKey(t)){case"up":i.directionY=-1;break;case"down":i.directionY=1;break;case"left":i.directionX=-1;break;case"right":i.directionX=1}}},e.prototype.handleGlobalKeyUp=function(t){if(this.focusedObject){var e=this.focusedObject.eventDisposers.getKey("interactionKeyboardObject");null!=e&&(t.preventDefault(),e.dispose(),this.focusedObject.eventDisposers.removeKey("interactionKeyboardObject"))}},e.prototype.handleGlobalPointerMove=function(t){var e=this.getPointer(t);if(e.point=this.getPointerPoint(t),this.events.isEnabled("track")&&!f.b.isPaused){var i={type:"track",target:this,event:t,pointer:e,touch:e.touch};this.events.dispatchImmediately("track",i)}this.addBreadCrumb(e,e.point),this.handleGlobalMove(e,t)},e.prototype.handleGlobalPointerDown=function(t){this.processDelayed();var e=this.getPointer(t);if(this.events.isEnabled("down")&&!f.b.isPaused){var i={type:"down",target:this,event:t,pointer:e,touch:e.touch};this.events.dispatchImmediately("down",i)}},e.prototype.preventTouchAction=function(t){t.defaultPrevented||t.preventDefault()},e.prototype.handleGlobalPointerUp=function(t,e){void 0===e&&(e=!1);var i=this.getPointer(t);if(this.events.isEnabled("up")&&!f.b.isPaused){var n={type:"up",target:this,event:t,pointer:i,touch:i.touch};this.events.dispatchImmediately("up",n)}this.handleGlobalUp(i,t,e)},e.prototype.handleGlobalTouchMove=function(t){for(var e=0;e=n-this.getHitOption(t,"doubleHitTime")){if(n-t.lastHit<100)return;if(t.lastHit=void 0,t.lastHitPointer=void 0,t.events.isEnabled("doublehit")&&!f.b.isPaused){var r={type:"doublehit",target:t,point:e.point,event:i,touch:e.touch};t.events.dispatchImmediately("doublehit",r)}}else if(t.lastHit=n,t.lastHitPointer=e,3===e.button){if(t.events.isEnabled("rightclick")&&!f.b.isPaused){r={type:"rightclick",target:t,event:i};t.events.dispatchImmediately("rightclick",r)}}else if(t.events.isEnabled("hit")&&!f.b.isPaused){r={type:"hit",target:t,event:i,point:e.point,touch:e.touch};t.events.dispatchImmediately("hit",r)}},e.prototype.handleOver=function(t,e,i,n){if(void 0===n&&(n=!1),t.hoverable&&(this.processDelayed(),t.overPointers.moveValue(e),!t.isHover&&(t.isHover=!0,this.overObjects.moveValue(t),this.handleTrack(this.body,e,i,!0),t.events.isEnabled("over")&&!f.b.isPaused))){var r={type:"over",target:t,event:i,pointer:e,touch:e.touch};t.events.dispatchImmediately("over",r)}},e.prototype.handleOut=function(t,e,i,n,r){var o=this;if(void 0===n&&(n=!1),void 0===r&&(r=!1),t.hoverable&&(t.overPointers.removeValue(e),t.isHover&&(!t.hasDelayedOut||r))){if(n&&t.overPointers.length)return;if(e.touch&&!r&&!this.old(e)){var a=this.getHoverOption(t,"touchOutBehavior");if("leave"==a)return this._delayedEvents.out.push({type:"out",io:t,pointer:e,event:i,keepUntil:v.getTime()+500}),void(t.hasDelayedOut=!0);if("delay"==a&&this.getHoverOption(t,"touchOutDelay"))return void this._delayedEvents.out.push({type:"out",io:t,pointer:e,event:i,keepUntil:v.getTime()+500,timeout:this.setTimeout(function(){o.handleOut(t,e,i,!0)},this.getHoverOption(t,"touchOutDelay"))})}if(t.isHover=!1,this.overObjects.removeValue(t),t.events.isEnabled("out")&&!f.b.isPaused){var s={type:"out",target:t,event:i,pointer:e,touch:e.touch};t.events.dispatchImmediately("out",s)}t.overPointers.clear(),t.hasDelayedOut=!1}},e.prototype.processDelayed=function(){for(var t;t=this._delayedEvents.out.pop();)t.timeout&&t.timeout.dispose(),this.handleOut(t.io,t.pointer,t.event,!1,!0)},e.prototype.handleDown=function(t,e,i){if(this.maybePreventDefault(t,i,e),t.inert&&this.stopInertia(t),this.handleOver(t,e,i,!0),t.downPointers.moveValue(e),this.applyCursorDownStyle(t,e),t.isDown||(!1!==t.focusable&&this.getHitOption(t,"noFocus")&&this.focusedObject&&p.h(),t.isDown=!0,this.downObjects.moveValue(t),t.draggable&&this.processDragStart(t,e,i),t.resizable&&this.processResizeStart(t,e,i)),t.events.isEnabled("down")&&!f.b.isPaused){var n={type:"down",target:t,event:i,pointer:e,touch:e.touch};t.events.dispatchImmediately("down",n)}},e.prototype.handleGlobalUp=function(t,e,i){var n=this;void 0===i&&(i=!1),y.each(this.downObjects.backwards().iterator(),function(r){r&&r.downPointers.contains(t)&&n.handleUp(r,t,e,i)})},e.prototype.handleUp=function(t,e,i,n){if(void 0===n&&(n=!1),this.restoreCursorDownStyle(t,e),t.downPointers.removeValue(e),(e.touch||this._useTouchEventsOnly)&&this.handleOut(t,e,i,!0),t.isDown){if(0==t.downPointers.length&&(t.isDown=!1,this.downObjects.removeValue(t)),t.events.isEnabled("up")&&!f.b.isPaused){var r={type:"up",target:t,event:i,pointer:e,touch:e.touch};t.events.dispatchImmediately("up",r)}n||(t.swipeable&&this.swiped(t,e)?this.handleSwipe(t,e,i):(t.clickable&&!this.moved(e,this.getHitOption(t,"hitTolerance"))&&this.handleHit(t,e,i),t.inert&&this.moved(e,this.getHitOption(t,"hitTolerance"))?this.handleInertia(t,e):t.draggable&&this.processDragStop(t,e,i),t.resizable&&this.processResizeStop(t,e,i)))}},e.prototype.maybePreventDefault=function(t,e,i){!b.hasValue(e)||!(t.draggable||t.swipeable||t.trackable||t.resizable)||this.isGlobalElement(t)||!1===e.cancelable||t.isTouchProtected&&i&&i.touch||e.preventDefault()},e.prototype.handleGlobalMove=function(t,e){var i=this;if(!t.touch){var n=p.k(t.lastEvent);y.each(this.overObjects.backwards().iterator(),function(r){if(r&&r.overPointers.contains(t)&&r.hoverable){var o=!1;r.element&&t.lastEvent&&p.i(r.element,n)||(o=!0),o&&i.handleOut(r,t,e,!0)}})}y.each(this.transformedObjects.backwards().iterator(),function(n){!n.downPointers.contains(t)||n.swipeable&&i.swiping(n,t)||!n.draggable&&!n.resizable||i.handleTransform(n,e)}),y.each(this.trackedObjects.backwards().iterator(),function(n){n.overPointers.contains(t)||i.handleTrack(n,t,e)})},e.prototype.handleTrack=function(t,e,i,n){if(void 0===n&&(n=!1),(n||this.moved(e,0))&&t.events.isEnabled("track")&&!f.b.isPaused){var r={type:"track",target:t,event:i,point:e.point,pointer:e,touch:e.touch};t.events.dispatchImmediately("track",r)}},e.prototype.handleSwipe=function(t,e,i){if(t.events.isEnabled("swipe")&&!f.b.isPaused){var n={type:"swipe",target:t,event:i,touch:e.touch};t.events.dispatchImmediately("swipe",n)}if(e.startPoint.x0?t.events.isEnabled("swiperight")&&!f.b.isPaused&&t.events.dispatchImmediately("wheelright",{type:"wheelright",target:t,event:r,point:e.point,shift:o}):n<0?t.events.isEnabled("wheelup")&&!f.b.isPaused&&t.events.dispatchImmediately("wheelup",{type:"wheelup",target:t,event:r,point:e.point,shift:o}):n>0&&t.events.isEnabled("wheeldown")&&!f.b.isPaused&&t.events.dispatchImmediately("wheeldown",{type:"wheeldown",target:t,event:r,point:e.point,shift:o})},e.prototype.handleInertia=function(t,e){t.draggable&&0===t.downPointers.length&&this.handleMoveInertia(t,e),t.resizable&&t.downPointers.length>1&&this.handleResizeInertia(t,e)},e.prototype.handleMoveInertia=function(t,e){var i=t,n={x:e.point.x,y:e.point.y},r={x:e.startPoint.x,y:e.startPoint.y},o=new c.a(i,"move",n,r),s=this.getTrailPoint(e,v.getTime()-this.getInertiaOption(t,"move","time"));if(void 0!==s){var u=this.getInertiaOption(t,"move","factor"),l=[{to:e.point.x+(e.point.x-s.point.x)*u,property:"x"},{to:e.point.y+(e.point.y-s.point.y)*u,property:"y"}],h=new a.a(o,l,this.getInertiaOption(t,"move","duration"),this.getInertiaOption(t,"move","easing")).start();this._disposers.push(h.events.on("animationended",function(t){o.done()})),t.inertias.setKey("move",o)}else this.processDragStop(t,e,e.lastUpEvent)},e.prototype.handleResizeInertia=function(t,e){},e.prototype.handleTransform=function(t,e){var i,n,r,o=t.downPointers.getIndex(0),a=null,s=null;o&&(a=o.point,s=o.startPoint),r=n={x:t.originalPosition.x,y:t.originalPosition.y};for(var u=!0,l=1;li-this.getSwipeOption(t,"time"))},e.prototype.swiped=function(t,e){var i=v.getTime();return!e.swipeCanceled&&(Math.abs(e.startPoint.x-e.point.x)>this.getSwipeOption(t,"horizontalThreshold")&&Math.abs(e.startPoint.y-e.point.y)i-this.getSwipeOption(t,"time"))},e.prototype.applyCursorOverStyle=function(t){var e=t.cursorOptions;if(b.hasValue(e.overStyle))for(var i=0;ie||Math.abs(n.y)>e},e.prototype.old=function(t,e){return void 0===e&&(e=300),v.getTime()-t.startTime>e},e.prototype.getShift=function(t){return{x:t.startPoint.x-t.point.x,y:t.startPoint.y-t.point.y}},e.prototype.getTrailPoint=function(t,e){for(var i,n=0;n=e){i=t.track[n];break}return i},e.prototype.pointerExists=function(t,e){var i=!1;return t.each(function(t){t!=e&&(i=t.point.x==e.point.x&&t.point.y==e.point.y)}),i},e.prototype.getInteraction=function(t){return new u.a(t)},e.prototype.setTemporaryStyle=function(t,e,i){var n=t.element;b.hasValue(n.style[e])&&!t.replacedStyles.hasKey(e)&&t.replacedStyles.setKey(e,n.style[e]),p.y(n,e,i)},e.prototype.restoreStyle=function(t,e){t.replacedStyles.hasKey(e)?(t.element.style[e]=t.replacedStyles.getKey(e),t.replacedStyles.removeKey(e)):delete t.element.style[e]},e.prototype.restoreAllStyles=function(t){y.each(t.replacedStyles.iterator(),function(e){var i=e[0],n=e[1];t.element.style[i]=n,t.replacedStyles.removeKey(i)})},e.prototype.dispose=function(){this.isDisposed()||(t.prototype.dispose.call(this),this.restoreAllStyles(this.body),this.unlockWheel())},e.prototype.log=function(t,e,i){if(e.changedTouches)for(var n=0;nd?void 0:{x:h*u.cos(c),y:h*u.sin(c)}},t.prototype.addPoints=function(e,t,i,n,r){var a=this.getPoint(t,i,n,t.locations[i],t.locations[n]);a&&e.push(a)},t.prototype.getMaskPath=function(){var e=this.yAxis.renderer;return h.arc(e.startAngle,e.endAngle-e.startAngle,e.pixelRadius,e.pixelInnerRadius)},t.prototype.drawSegment=function(t,i,n){var r=this.yAxis.renderer;this.connectEnds&&360==Math.abs(r.endAngle-r.startAngle)&&(this.dataFields[this._xOpenField]||this.dataFields[this._yOpenField]||this.stacked)&&(i.push(i[0]),n.length>0&&n.unshift(n[n.length-1])),e.prototype.drawSegment.call(this,t,i,n)},Object.defineProperty(t.prototype,"connectEnds",{get:function(){return this.getPropertyValue("connectEnds")},set:function(e){this.setPropertyValue("connectEnds",e,!0)},enumerable:!0,configurable:!0}),t.prototype.positionBulletReal=function(e,t,i){var n=this.xAxis,r=this.yAxis;(tn.end||ir.end)&&(e.visible=!1),e.moveTo(this.xAxis.renderer.positionToPoint(t,i))},t.prototype.setXAxis=function(t){e.prototype.setXAxis.call(this,t),this.updateRendererRefs()},t.prototype.setYAxis=function(t){e.prototype.setYAxis.call(this,t),this.updateRendererRefs()},t.prototype.updateRendererRefs=function(){var e=this.xAxis.renderer,t=this.yAxis.renderer;e.axisRendererY=t},t}(s.a);l.b.registeredClasses.RadarSeries=p,l.b.registeredClasses.RadarSeriesDataItem=c;var d=i("C6dT"),y=i("FzPm"),g=i("Meme"),f=i("8EhG"),m=i("Mtpk"),v=function(e){function t(t){var i=e.call(this,t)||this;return i.className="AxisFillCircular",i.element=i.paper.add("path"),i.radius=Object(o.c)(100),i.applyTheme(),i}return r.c(t,e),t.prototype.draw=function(){if(e.prototype.draw.call(this),!this.__disabled&&!this.disabled&&this.axis){var t=this.axis.renderer;this.fillPath=t.getPositionRangePath(this.startPosition,this.endPosition,this.radius,m.hasValue(this.innerRadius)?this.innerRadius:t.innerRadius,this.cornerRadius),this.path=this.fillPath}},Object.defineProperty(t.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(e){this.setPercentProperty("innerRadius",e,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(e){this.setPercentProperty("radius",e,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"cornerRadius",{get:function(){return this.getPropertyValue("cornerRadius")},set:function(e){this.setPropertyValue("cornerRadius",e,!0)},enumerable:!0,configurable:!0}),t}(f.a);l.b.registeredClasses.AxisFillCircular=v;var x=i("AaJ4"),b=function(e){function t(){var t=e.call(this)||this;return t.className="GridCircular",t.pixelPerfect=!1,t.applyTheme(),t}return r.c(t,e),Object.defineProperty(t.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(e){this.setPercentProperty("innerRadius",e,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(e){this.setPercentProperty("radius",e,!0,!1,10,!1)},enumerable:!0,configurable:!0}),t}(x.a);l.b.registeredClasses.GridCircular=b;var P=i("IbTV"),C=i("v9UT"),A=i("5xph"),D=function(e){function t(){var t=e.call(this)||this;return t.pixelRadiusReal=0,t.layout="none",t.className="AxisRendererCircular",t.isMeasured=!1,t.startAngle=-90,t.endAngle=270,t.useChartAngles=!0,t.radius=Object(o.c)(100),t.isMeasured=!1,t.grid.template.location=0,t.labels.template.location=0,t.labels.template.radius=15,t.ticks.template.location=0,t.ticks.template.pixelPerfect=!1,t.tooltipLocation=0,t.line.strokeOpacity=0,t.applyTheme(),t}return r.c(t,e),t.prototype.setAxis=function(t){var i=this;e.prototype.setAxis.call(this,t),t.isMeasured=!1;var n=t.tooltip;n.adapter.add("dx",function(e,t){var n=C.svgPointToSprite({x:t.pixelX,y:t.pixelY},i);return i.pixelRadius*Math.cos(Math.atan2(n.y,n.x))-n.x}),n.adapter.add("dy",function(e,t){var n=C.svgPointToSprite({x:t.pixelX,y:t.pixelY},i);return i.pixelRadius*Math.sin(Math.atan2(n.y,n.x))-n.y})},t.prototype.validate=function(){this.chart&&this.chart.invalid&&this.chart.validate(),e.prototype.validate.call(this)},Object.defineProperty(t.prototype,"axisLength",{get:function(){return 2*Math.PI*this.pixelRadius},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(e){this.setPercentProperty("radius",e,!1,!1,10,!1)&&this.axis&&this.axis.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"pixelRadius",{get:function(){return C.relativeRadiusToValue(this.radius,this.pixelRadiusReal)||0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(e){this.setPercentProperty("innerRadius",e,!1,!1,10,!1)&&this.axis&&this.axis.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"useChartAngles",{get:function(){return this.getPropertyValue("useChartAngles")},set:function(e){this.setPropertyValue("useChartAngles",e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"pixelInnerRadius",{get:function(){return C.relativeRadiusToValue(this.innerRadius,this.pixelRadiusReal)||0},enumerable:!0,configurable:!0}),t.prototype.positionToPoint=function(e,t){m.isNumber(t)||(t=1);var i=this.positionToCoordinate(e),n=this.startAngle+(this.endAngle-this.startAngle)*i/this.axisLength,r=this.pixelRadius,a=this.pixelInnerRadius;if(this.axisRendererY){var o=u.fitToRange(this.axisRendererY.positionToCoordinate(t),0,1/0);return{x:o*u.cos(n),y:o*u.sin(n)}}return{x:u.cos(n)*a+(r-a)*u.cos(n)*t,y:u.sin(n)*a+(r-a)*u.sin(n)*t}},t.prototype.positionToAngle=function(e){var t,i=this.axis,n=(this.endAngle-this.startAngle)/(i.end-i.start);return t=i.renderer.inversed?this.startAngle+(i.end-e)*n:this.startAngle+(e-i.start)*n,u.round(t,3)},t.prototype.updateAxisLine=function(){var e=this.pixelRadius,t=this.startAngle,i=this.endAngle-t;this.line.path=h.moveTo({x:e*u.cos(t),y:e*u.sin(t)})+h.arcTo(t,i,e,e)},t.prototype.updateGridElement=function(e,t,i){t+=(i-t)*e.location;var n=this.positionToPoint(t);if(m.isNumber(n.x)&&m.isNumber(n.y)&&e.element){var r=u.DEGREES*Math.atan2(n.y,n.x),a=C.relativeRadiusToValue(m.hasValue(e.radius)?e.radius:Object(o.c)(100),this.pixelRadius),s=C.relativeRadiusToValue(e.innerRadius,this.pixelRadius);e.zIndex=0;var l=C.relativeRadiusToValue(m.isNumber(s)?s:this.innerRadius,this.pixelRadius,!0);e.path=h.moveTo({x:l*u.cos(r),y:l*u.sin(r)})+h.lineTo({x:a*u.cos(r),y:a*u.sin(r)})}this.toggleVisibility(e,t,0,1)},t.prototype.updateTickElement=function(e,t,i){t+=(i-t)*e.location;var n=this.positionToPoint(t);if(e.element){var r=this.pixelRadius,a=u.DEGREES*Math.atan2(n.y,n.x),o=e.length;e.inside&&(o=-o),e.zIndex=1,e.path=h.moveTo({x:r*u.cos(a),y:r*u.sin(a)})+h.lineTo({x:(r+o)*u.cos(a),y:(r+o)*u.sin(a)})}this.toggleVisibility(e,t,0,1)},t.prototype.updateBullet=function(e,t,i){var n=.5;e instanceof A.a&&(n=e.location),t+=(i-t)*n;var r=this.positionToPoint(t),a=this.pixelRadius,o=u.DEGREES*Math.atan2(r.y,r.x);r={x:a*u.cos(o),y:a*u.sin(o)},this.positionItem(e,r),this.toggleVisibility(e,t,0,1)},t.prototype.updateLabelElement=function(e,t,i,n){m.hasValue(n)||(n=e.location),t+=(i-t)*n,e.fixPosition(this.positionToAngle(t),this.pixelRadius),e.zIndex=2,this.toggleVisibility(e,t,this.minLabelPosition,this.maxLabelPosition)},t.prototype.fitsToBounds=function(e){return!0},Object.defineProperty(t.prototype,"startAngle",{get:function(){return this.getPropertyValue("startAngle")},set:function(e){this.setPropertyValue("startAngle",e)&&(this.invalidateAxisItems(),this.axis&&this.axis.invalidateSeries())},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"endAngle",{get:function(){return this.getPropertyValue("endAngle")},set:function(e){this.setPropertyValue("endAngle",e)&&(this.invalidateAxisItems(),this.axis&&this.axis.invalidateSeries())},enumerable:!0,configurable:!0}),t.prototype.getPositionRangePath=function(e,t,i,n,r){var a="";if(m.isNumber(e)&&m.isNumber(t)){m.hasValue(i)||(i=this.radius),e=u.max(e,this.axis.start),(t=u.min(t,this.axis.end))0&&d&&c&&c instanceof T.a){var y=c.renderer.grid.template.location,g=c.getAngle(d.dataItems.getIndex(0),"categoryX",y);n=h.moveTo({x:a*u.cos(g),y:a*u.sin(g)});for(var f=1;f0&&d&&p&&p instanceof T.a){var g=p.renderer.grid.template.location,f=p.getAngle(d.dataItems.getIndex(0),"categoryX",g);i=h.moveTo({x:o*u.cos(f),y:o*u.sin(f)});for(var m=1;m=0;m--)f=p.getAngle(d.dataItems.getIndex(m),"categoryX",g),i+=h.lineTo({x:a*u.cos(f),y:a*u.sin(f)})}else i=h.arc(s,l,o,a);return i},t.prototype.updateBreakElement=function(e){var t=e.startLine,i=e.endLine,n=e.fillShape,r=e.startPoint,a=e.endPoint;t.radius=Math.abs(r.y),i.radius=Math.abs(a.y),n.radius=Math.abs(a.y),n.innerRadius=Math.abs(r.y)},t.prototype.createBreakSprites=function(e){e.startLine=new V.a,e.endLine=new V.a,e.fillShape=new V.a},t.prototype.updateTooltip=function(){if(this.axis){var e=this.axisAngle;e<0&&(e+=360);var t="vertical";(e>45&&e<135||e>225&&e<315)&&(t="horizontal"),this.axis.updateTooltip(t,{x:-4e3,y:-4e3,width:8e3,height:8e3})}},t.prototype.updateTickElement=function(e,t){var i=this.positionToPoint(t);if(e.element){var n=u.normalizeAngle(this.axisAngle+90);n/90!=Math.round(n/90)?e.pixelPerfect=!1:e.pixelPerfect=!0;var r=-e.length;e.inside&&(r*=-1),e.path=h.moveTo({x:0,y:0})+h.lineTo({x:r*u.cos(n),y:r*u.sin(n)})}this.positionItem(e,i),this.toggleVisibility(e,t,0,1)},t.prototype.updateBullet=function(e,t,i){var n=.5;e instanceof A.a&&(n=e.location),t+=(i-t)*n;var r=this.positionToPoint(t);this.positionItem(e,r),this.toggleVisibility(e,t,0,1)},t.prototype.positionToCoordinate=function(e){var t,i=this.axis,n=i.axisFullLength,r=this.pixelInnerRadius;return t=i.renderer.inversed?(i.end-e)*n+r:(e-i.start)*n+r,u.round(t,1)},t.prototype.pointToPosition=function(e){var t=u.getDistance(e)-this.pixelInnerRadius;return this.coordinateToPosition(t)},t}(I.a);l.b.registeredClasses.AxisRendererRadial=L;var k=i("Wglt"),O=function(e){function t(){var t=e.call(this)||this;return t.className="RadarChartDataItem",t.applyTheme(),t}return r.c(t,e),t}(a.b),R=function(e){function t(){var t=e.call(this)||this;t._axisRendererX=D,t._axisRendererY=L,t.innerRadiusModifyer=1,t.className="RadarChart",t.startAngle=-90,t.endAngle=270,t.radius=Object(o.c)(80),t.innerRadius=0;var i=t.plotContainer.createChild(d.a);return i.shouldClone=!1,i.layout="absolute",i.align="center",i.valign="middle",t.seriesContainer.parent=i,t.radarContainer=i,t.bulletsContainer.parent=i,t.axisBulletsContainer=i,t._cursorContainer=i,t._bulletMask=i.createChild(y.a),t._bulletMask.shouldClone=!1,t._bulletMask.element=t.paper.add("path"),t._bulletMask.opacity=0,t.applyTheme(),t}return r.c(t,e),t.prototype.applyInternalDefaults=function(){e.prototype.applyInternalDefaults.call(this),m.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Radar chart"))},t.prototype.processAxis=function(t){e.prototype.processAxis.call(this,t);var i=t.renderer;i.gridContainer.parent=i,i.breakContainer.parent=i,t.parent=this.radarContainer,i.toBack()},t.prototype.handleXAxisRangeChange=function(){e.prototype.handleXAxisRangeChange.call(this),k.each(this.yAxes.iterator(),function(e){e.invalidate()})},t.prototype.handleYAxisRangeChange=function(){e.prototype.handleYAxisRangeChange.call(this),k.each(this.xAxes.iterator(),function(e){e.invalidate()})},t.prototype.processConfig=function(t){if(t&&(m.hasValue(t.cursor)&&!m.hasValue(t.cursor.type)&&(t.cursor.type="RadarCursor"),m.hasValue(t.series)&&m.isArray(t.series)))for(var i=0,n=t.series.length;ir&&(this.rotation=r+360),this.animate({property:"rotation",to:n},t,i)}},Object.defineProperty(t.prototype,"value",{get:function(){return this._value},set:function(e){this.showValue(e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"axis",{get:function(){return this._axis.get()},set:function(e){if(this.axis!=e&&this._axis.set(e,new _.c([e.events.on("datavalidated",this.updateValue,this,!1),e.events.on("datarangechanged",this.updateValue,this,!1),e.events.on("dataitemsvalidated",this.updateValue,this,!1),e.events.on("propertychanged",this.invalidate,this,!1)])),e){var t=e.chart;t&&(this.rotation=t.startAngle)}this.parent=e.renderer,this.zIndex=5},enumerable:!0,configurable:!0}),t.prototype.updateValue=function(){this.value=this.value},t.prototype.processConfig=function(t){t&&m.hasValue(t.axis)&&m.isString(t.axis)&&this.map.hasKey(t.axis)&&(t.axis=this.map.getKey(t.axis)),e.prototype.processConfig.call(this,t)},t}(d.a);l.b.registeredClasses.ClockHand=j;var F=function(e){function t(){var t=e.call(this)||this;return t.className="GaugeChartDataItem",t.applyTheme(),t}return r.c(t,e),t}(O),Y=function(e){function t(){var t=e.call(this)||this;return t.className="GaugeChart",t.startAngle=180,t.endAngle=360,t.hands=new S.e(new j),t.hands.events.on("inserted",t.processHand,t,!1),t._disposers.push(new S.c(t.hands)),t._disposers.push(t.hands.template),t.applyTheme(),t}return r.c(t,e),t.prototype.applyInternalDefaults=function(){e.prototype.applyInternalDefaults.call(this),m.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Gauge chart"))},t.prototype.processHand=function(e){var t=e.newValue;t.axis||(t.axis=this.xAxes.getIndex(0))},t.prototype.configOrder=function(t,i){return t==i?0:"hands"==t?1:"hands"==i?-1:e.prototype.configOrder.call(this,t,i)},t}(R);l.b.registeredClasses.GaugeChart=Y;var M=i("2I/e"),W=i("quKg"),X=i("Puh1"),H=i("nPzZ"),B=function(e){function t(){var t=e.call(this)||this;return t.className="PieSeries3DDataItem",t.values.depthValue={},t.applyTheme(),t}return r.c(t,e),Object.defineProperty(t.prototype,"depthValue",{get:function(){return this.values.depthValue.value},set:function(e){this.setValue("depthValue",e)},enumerable:!0,configurable:!0}),t}(X.b),z=function(e){function t(){var t=e.call(this)||this;return t.className="PieSeries3D",t.applyTheme(),t}return r.c(t,e),t.prototype.createDataItem=function(){return new B},t.prototype.createSlice=function(){return new H.a},t.prototype.validateDataElement=function(t){var i=t.slice,n=this.depth;m.isNumber(n)||(n=this.chart.depth);var r=t.values.depthValue.percent;m.isNumber(r)||(r=100),i.depth=r*n/100;var a=this.angle;m.isNumber(a)||(a=this.chart.angle),i.angle=a,e.prototype.validateDataElement.call(this,t)},t.prototype.validate=function(){e.prototype.validate.call(this);for(var t=this._workingStartIndex;t=-90&&n<90?i.toFront():n>=90&&i.toBack()}},Object.defineProperty(t.prototype,"depth",{get:function(){return this.getPropertyValue("depth")},set:function(e){this.setPropertyValue("depth",e,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"angle",{get:function(){return this.getPropertyValue("angle")},set:function(e){this.setPropertyValue("angle",e)},enumerable:!0,configurable:!0}),t.prototype.positionBullet=function(t){e.prototype.positionBullet.call(this,t);var i=t.dataItem.slice;t.y=t.pixelY-i.depth},t}(X.a);l.b.registeredClasses.PieSeries3D=z,l.b.registeredClasses.PieSeries3DDataItem=B;var E=function(e){function t(){var t=e.call(this)||this;return t.className="PieChart3DDataItem",t.applyTheme(),t}return r.c(t,e),t}(W.b),G=function(e){function t(){var t=e.call(this)||this;return t.className="PieChart3D",t.depth=20,t.angle=10,t.applyTheme(),t}return r.c(t,e),Object.defineProperty(t.prototype,"depth",{get:function(){return this.getPropertyValue("depth")},set:function(e){this.setPropertyValue("depth",e)&&this.invalidateDataUsers()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"angle",{get:function(){return this.getPropertyValue("angle")},set:function(e){e=u.fitToRange(e,0,90),this.setPropertyValue("angle",e)&&this.invalidateDataUsers()},enumerable:!0,configurable:!0}),t.prototype.createSeries=function(){return new z},t}(W.a);l.b.registeredClasses.PieChart3D=G;var q=i("DXFp"),U=function(e){function t(){var t=e.call(this)||this;return t.className="SlicedChartDataItem",t.applyTheme(),t}return r.c(t,e),t}(q.b),K=function(e){function t(){var t=e.call(this)||this;return t.className="SlicedChart",t.seriesContainer.layout="horizontal",t.padding(15,15,15,15),t.applyTheme(),t}return r.c(t,e),t.prototype.applyInternalDefaults=function(){e.prototype.applyInternalDefaults.call(this),m.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Sliced chart"))},t.prototype.validate=function(){e.prototype.validate.call(this)},t}(q.a);l.b.registeredClasses.SlicedChart=K,l.b.registeredClasses.SlicedChartDataItem=U;var Z=i("VIOb"),Q=i("+qIf"),J=i("Vs7R"),$=i("wUYf"),ee=i("MlsF"),te=i("3Cxr"),ie=i("CnhP"),ne=i("Qkdp"),re=i("uWmK"),ae=function(e){function t(){var t=e.call(this)||this;return t.legendSettings=new re.c,t.className="FlowDiagramNode",t.isMeasured=!1,new N.a,t.draggable=!0,t.inert=!0,t.setStateOnChildren=!0,t.events.on("positionchanged",t.invalidateLinks,t,!1),t.events.on("sizechanged",t.invalidateLinks,t,!1),t}return r.c(t,e),t.prototype.handleHit=function(e){this.isHidden||this.isHiding?this.show():this.hide()},t.prototype.show=function(t){var i=e.prototype.show.call(this,t);return this.outgoingDataItems.each(function(e){(!e.toNode||e.toNode&&!e.toNode.isHidden)&&e.setWorkingValue("value",e.getValue("value"),t)}),this.incomingDataItems.each(function(e){(!e.fromNode||e.fromNode&&!e.fromNode.isHidden)&&e.setWorkingValue("value",e.getValue("value"),t)}),i},t.prototype.hide=function(t){var i=e.prototype.hide.call(this,t);return this.outgoingDataItems.each(function(e){e.setWorkingValue("value",0,t)}),this.incomingDataItems.each(function(e){e.setWorkingValue("value",0,t)}),i},t.prototype.validate=function(){this.isDisposed()||(e.prototype.validate.call(this),this.invalidateLinks())},t.prototype.invalidateLinks=function(){var e=this;this.outgoingDataItems.each(function(t){var i=t.link;if("fromNode"==i.colorMode&&(i.fill=i.dataItem.fromNode.color),"gradient"==i.colorMode){i.fill=i.gradient,i.stroke=i.gradient;var n=i.gradient.stops.getIndex(0);n&&(n.color=e.color,i.gradient.validate())}}),this.incomingDataItems.each(function(t){var i=t.link;if("toNode"==i.colorMode&&(i.fill=i.dataItem.toNode.color),"gradient"==i.colorMode){i.fill=i.gradient,i.stroke=i.gradient;var n=i.gradient.stops.getIndex(1);n&&(n.color=e.color,i.gradient.validate())}})},Object.defineProperty(t.prototype,"incomingDataItems",{get:function(){var e=this;if(!this._incomingDataItems){var t=new S.b;t.events.on("inserted",function(){"name"==e.chart.sortBy?e._incomingSorted=k.sort(e._incomingDataItems.iterator(),function(e,t){return $.order(e.fromName,t.fromName)}):"value"==e.chart.sortBy?e._incomingSorted=k.sort(e._incomingDataItems.iterator(),function(e,t){return ee.b(te.order(e.value,t.value))}):e._incomingSorted=e._incomingDataItems.iterator()},void 0,!1),this._incomingDataItems=t}return this._incomingDataItems},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"outgoingDataItems",{get:function(){var e=this;if(!this._outgoingDataItems){var t=new S.b;t.events.on("inserted",function(){"name"==e.chart.sortBy?e._outgoingSorted=k.sort(e._outgoingDataItems.iterator(),function(e,t){return $.order(e.fromName,t.fromName)}):"value"==e.chart.sortBy?e._outgoingSorted=k.sort(e._outgoingDataItems.iterator(),function(e,t){return ee.b(te.order(e.value,t.value))}):e._outgoingSorted=e._outgoingDataItems.iterator()},void 0,!1),this._outgoingDataItems=t}return this._outgoingDataItems},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"name",{get:function(){return this.getPropertyValue("name")},set:function(e){this.setPropertyValue("name",e,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"total",{get:function(){return this.getPropertyValue("total")},set:function(e){this.setPropertyValue("total",e,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"totalIncoming",{get:function(){return this.getPropertyValue("totalIncoming")},set:function(e){this.setPropertyValue("totalIncoming",e,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"totalOutgoing",{get:function(){return this.getPropertyValue("totalOutgoing")},set:function(e){this.setPropertyValue("totalOutgoing",e,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"color",{get:function(){return this.getPropertyValue("color")},set:function(e){this.setColorProperty("color",e),this._background&&(this._background.fill=e),this.fill=e},enumerable:!0,configurable:!0}),t.prototype.createLegendMarker=function(e){var t=e.pixelWidth,i=e.pixelHeight;e.removeChildren();var n=e.createChild(ie.a);n.shouldClone=!1,ne.copyProperties(this,n,J.b),n.stroke=this.fill,n.copyFrom(this),n.padding(0,0,0,0),n.width=t,n.height=i;var r=e.dataItem;r.color=n.fill,r.colorOrig=n.fill},Object.defineProperty(t.prototype,"legendDataItem",{get:function(){return this._legendDataItem},set:function(e){this._legendDataItem=e,this._legendDataItem.itemContainer.deepInvalidate()},enumerable:!0,configurable:!0}),t}(d.a);l.b.registeredClasses.FlowDiagramNode=ae;var oe=i("sxA1"),se=i("TXRX"),le=i("8ZqG"),ue=i("jfaP"),he=i("PTiM"),ce=function(e){function t(){var t=e.call(this)||this;t.className="FlowDiagramLink";var i=new N.a;return t.maskBullets=!1,t.colorMode="fromNode",t.layout="none",t.isMeasured=!1,t.startAngle=0,t.endAngle=0,t.strokeOpacity=0,t.verticalCenter="none",t.horizontalCenter="none",t.tooltipText="{fromName}→{toName}:{value.value}",t.tooltipLocation=.5,t.link=t.createChild(J.a),t.link.shouldClone=!1,t.link.setElement(t.paper.add("path")),t.link.isMeasured=!1,t.fillOpacity=.2,t.fill=i.getFor("alternativeBackground"),t.applyTheme(),t}return r.c(t,e),t.prototype.positionBullets=function(){var e=this;k.each(this.bullets.iterator(),function(t){t.parent=e.bulletsContainer,t.maxWidth=e.maxWidth,t.maxHeight=e.maxHeight,e.positionBullet(t)})},Object.defineProperty(t.prototype,"bulletsContainer",{get:function(){if(!this._bulletsContainer){var e=this.createChild(d.a);e.shouldClone=!1,e.layout="none",this._bulletsContainer=e}return this._bulletsContainer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bulletsMask",{get:function(){if(!this._bulletsMask){var e=this.createChild(J.a);e.shouldClone=!1,e.setElement(this.paper.add("path")),e.isMeasured=!1,this._bulletsMask=e}return this._bulletsMask},enumerable:!0,configurable:!0}),t.prototype.positionBullet=function(e){var t=e.locationX;m.isNumber(t)||(t=e.locationY),m.isNumber(t)||(t=.5);var i=this.middleLine.positionToPoint(t);e.moveTo(i);var n,r=e.propertyFields.rotation;e.dataItem&&(n=e.dataItem.dataContext[r]);m.isNumber(n)||(n=i.angle),e.rotation=n},Object.defineProperty(t.prototype,"startAngle",{get:function(){return this.getPropertyValue("startAngle")},set:function(e){this.setPropertyValue("startAngle",e,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"endAngle",{get:function(){return this.getPropertyValue("endAngle")},set:function(e){this.setPropertyValue("endAngle",e,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"colorMode",{get:function(){return this.getPropertyValue("colorMode")},set:function(e){if("gradient"==e){var t=this.fill;this.gradient.stops.clear(),t instanceof le.a&&(this.gradient.addColor(t),this.gradient.addColor(t)),this.fill=this.gradient,this.stroke=this.gradient}this.setPropertyValue("colorMode",e,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"maskBullets",{get:function(){return this.getPropertyValue("maskBullets")},set:function(e){this.setPropertyValue("maskBullets",e,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"tooltipLocation",{get:function(){return this.getPropertyValue("tooltipLocation")},set:function(e){this.setPropertyValue("tooltipLocation",e,!0)},enumerable:!0,configurable:!0}),t.prototype.setFill=function(t){e.prototype.setFill.call(this,t);var i=this._gradient;i&&t instanceof le.a&&(i.stops.clear(),i.addColor(t),i.addColor(t))},t.prototype.measureElement=function(){},Object.defineProperty(t.prototype,"bullets",{get:function(){var e=this;return this._bullets||(this._bullets=new S.e(new se.a),this._disposers.push(new S.c(this._bullets)),this._disposers.push(this._bullets.template),this._bullets.events.on("inserted",function(t){t.newValue.events.on("propertychanged",function(t){"locationX"!=t.property&&"locationY"!=t.property||e.positionBullet(t.target)},void 0,!1)},void 0,!1)),this._bullets},enumerable:!0,configurable:!0}),t.prototype.copyFrom=function(t){e.prototype.copyFrom.call(this,t),this.bullets.copyFrom(t.bullets);var i=this.middleLine;i&&(i instanceof he.a&&t.middleLine instanceof he.a&&i.copyFrom(t.middleLine),i instanceof ue.a&&t.middleLine instanceof ue.a&&i.copyFrom(t.middleLine)),this.link.copyFrom(t.link)},t.prototype.getTooltipX=function(){if(this.middleLine)return this.middleLine.positionToPoint(this.tooltipLocation).x},t.prototype.getTooltipY=function(){if(this.middleLine)return this.middleLine.positionToPoint(this.tooltipLocation).y},Object.defineProperty(t.prototype,"gradient",{get:function(){return this._gradient||(this._gradient=new oe.a),this._gradient},enumerable:!0,configurable:!0}),t}(d.a);l.b.registeredClasses.FlowDiagramLink=ce;var pe=i("/e9j"),de=i("DHte"),ye=function(e){function t(){var t=e.call(this)||this;return t.className="FlowDiagramDataItem",t.values.value={},t.applyTheme(),t}return r.c(t,e),Object.defineProperty(t.prototype,"fromName",{get:function(){return this.properties.fromName},set:function(e){this.setProperty("fromName",e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"toName",{get:function(){return this.properties.toName},set:function(e){this.setProperty("toName",e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"color",{get:function(){return this.properties.color},set:function(e){this.setProperty("color",Object(le.e)(e))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"value",{get:function(){return this.values.value.value},set:function(e){this.setValue("value",e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"link",{get:function(){var e=this;if(!this._link){var t=this.component.links.create();this._link=t,this.addSprite(t),this._disposers.push(new _.b(function(){e.component&&e.component.links.removeValue(t)}))}return this._link},enumerable:!0,configurable:!0}),t}(Z.b),ge=function(e){function t(){var t=e.call(this)||this;t.colors=new de.a,t.className="FlowDiagram",t.nodePadding=20,t.sortBy="none",t.sequencedInterpolation=!0,t.colors.step=2,t.minNodeSize=.02;var i=t.chartContainer.createChild(d.a);i.shouldClone=!1,i.layout="none",i.isMeasured=!1,t.linksContainer=i;var n=t.chartContainer.createChild(d.a);return n.shouldClone=!1,n.layout="none",n.isMeasured=!1,t.nodesContainer=n,t.dataItem=t.createDataItem(),t.dataItem.component=t,t.applyTheme(),t}return r.c(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this),this.dataItem.dispose()},t.prototype.validateData=function(){var t=this;0==this._parseDataFrom&&this.nodes.clear(),this.sortNodes(),this.colors.reset(),e.prototype.validateData.call(this);var i,n,r=0,a=0;k.each(this.dataItems.iterator(),function(e){var o=e.fromName;o&&((s=t.nodes.getKey(o))||((s=t.nodes.create(o)).name=o,s.chart=t,s.dataItem=e),e.fromNode=s,e.fromNode.outgoingDataItems.push(e));var s,l=e.toName;l&&((s=t.nodes.getKey(l))||((s=t.nodes.create(l)).name=l,s.chart=t,s.dataItem=e),e.toNode=s,e.toNode.incomingDataItems.push(e));if(!e.fromNode){var u=new pe.a;u.opacities=[0,1],e.link.strokeModifier=u}if(!e.toNode){var h=new pe.a;h.opacities=[1,0],e.link.strokeModifier=h}var c=e.value;m.isNumber(c)&&(r+=c,a++,(i>c||!m.isNumber(i))&&(i=c),(nl||!m.isNumber(n))&&(n=l,e.maxSum=o,i=m.toNumber(r))}),this._maxSumLevel=i;var a=this._levelNodesCount[this._maxSumLevel],o=(t-(a-1)*this.nodePadding)/this.maxSum;if(m.isNumber(this.valueHeight)){var s=void 0;try{s=this._heightAnimation.animationOptions[0].to}catch(e){}if(s!=o){var l=this.interpolationDuration;try{l=this.nodes.template.states.getKey("active").transitionDuration}catch(e){}this._heightAnimation=new Ce.a(this,{property:"valueHeight",from:this.valueHeight,to:o},l,this.interpolationEasing).start(),this._disposers.push(this._heightAnimation)}}else this.valueHeight=o},t.prototype.validate=function(){var t=this;e.prototype.validate.call(this),this.calculateValueHeight();var i=this.nodesContainer,n={},r=this._levelNodesCount[this._maxSumLevel],a=this.dataItem.values.value.sum;k.each(this._sorted,function(e){var o,s,l,u=e[1],h=u.level,c=0,p=t._levelNodesCount[h];switch(t.nodeAlign){case"bottom":c=(t.maxSum-t._levelSum[h])*t.valueHeight-(p-r)*t.nodePadding;break;case"middle":c=(t.maxSum-t._levelSum[h])*t.valueHeight/2-(p-r)*t.nodePadding/2}u.parent=i;var d=Math.max(u.totalIncoming,u.totalOutgoing);if(d/a0){var n=this.nodesContainer,r=0;k.each(this.links.iterator(),function(e){e.hide(0)}),k.each(this._sorted,function(e){var t,a=e[1];"horizontal"==i.orientation?(a.dx=-(n.pixelWidth-a.pixelWidth)/i._levelCount,t="dx"):(a.dy=-(n.pixelHeight-a.pixelHeight)/i._levelCount,t="dy");var o=0,s=i.interpolationDuration;i.sequencedInterpolation&&(o=i.sequencedInterpolationDelay*r+s*r/k.length(i.nodes.iterator())),a.opacity=0,a.invalidateLinks(),a.animate([{property:"opacity",from:0,to:1},{property:t,to:0}],i.interpolationDuration,i.interpolationEasing).delay(o),k.each(a.outgoingDataItems.iterator(),function(e){var t=e.link.show(i.interpolationDuration);t&&!t.isFinished()&&t.delay(o)}),k.each(a.incomingDataItems.iterator(),function(e){if(!e.fromNode){var t=e.link.show(i.interpolationDuration);t&&!t.isFinished()&&t.delay(o)}}),r++})}return e.prototype.showReal.call(this)},t.prototype.changeSorting=function(){var e=this;this.sortNodes();var t={};k.each(this._sorted,function(i){var n,r,a=i[1],o=a.level,s=(e.maxSum-e._levelSum[o])*e.valueHeight/2;"horizontal"==e.orientation?(n="y",r=a.pixelHeight):(n="x",r=a.pixelWidth),a.animate({property:n,to:t[o]||s},e.interpolationDuration,e.interpolationEasing),t[o]=(t[o]||s)+r+e.nodePadding,a.invalidateLinks()})},t.prototype.applyInternalDefaults=function(){e.prototype.applyInternalDefaults.call(this),m.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Sankey diagram"))},t.prototype.createDataItem=function(){return new Ae},Object.defineProperty(t.prototype,"nodeAlign",{get:function(){return this.getPropertyValue("nodeAlign")},set:function(e){this.setPropertyValue("nodeAlign",e),this.changeSorting()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"orientation",{get:function(){return this.getPropertyValue("orientation")},set:function(e){this.setPropertyValue("orientation",e,!0);var t=this.nodes.template.nameLabel;"vertical"==e?(this.nodes.template.width=void 0,t.label.horizontalCenter="middle",t.locationX=.5):(this.nodes.template.height=void 0,t.label.horizontalCenter="left",t.locationX=1)},enumerable:!0,configurable:!0}),t.prototype.createNode=function(){var e=new ve;return this._disposers.push(e),e},t.prototype.createLink=function(){var e=new Pe;return this._disposers.push(e),e},Object.defineProperty(t.prototype,"valueHeight",{get:function(){return this._valueHeight},set:function(e){e!=this._valueHeight&&(this._valueHeight=e,this.invalidate())},enumerable:!0,configurable:!0}),t.prototype.disposeData=function(){e.prototype.disposeData.call(this),this._sorted=this.nodes.iterator()},t}(ge);l.b.registeredClasses.SankeyDiagram=De;var Ie=i("Inf5"),Te=function(e){function t(){var t=e.call(this)||this;t.className="ChordNode";var i=t.createChild(P.a);i.location=.5,i.radius=5,i.text="{name}",i.zIndex=1,i.shouldClone=!1,t.label=i,t.layout="none",t.events.on("positionchanged",t.updateRotation,t,!1),t.isMeasured=!1,t.slice=t.createChild(Ie.a),t.slice.isMeasured=!1;var n=t.hiddenState;return n.properties.fill=(new N.a).getFor("disabledBackground"),n.properties.opacity=.5,n.properties.visible=!0,t.setStateOnChildren=!1,t.slice.hiddenState.properties.visible=!0,t.adapter.add("tooltipX",function(e,t){return t.slice.ix*(t.slice.radius-(t.slice.radius-t.slice.pixelInnerRadius)/2)}),t.adapter.add("tooltipY",function(e,t){return t.slice.iy*(t.slice.radius-(t.slice.radius-t.slice.pixelInnerRadius)/2)}),t}return r.c(t,e),t.prototype.invalidateLinks=function(){var t=this;e.prototype.invalidateLinks.call(this);var i=this.label,n=this.slice,r=this.chart;if(r&&n){var a=this.total,o=n.arc,s=n.startAngle;this.children.each(function(e){if(e instanceof se.a){var t=e.locationX;m.isNumber(t)||(t=.5);var i=e.locationY;m.isNumber(i)||(i=1);var r=s+o*t,a=i*n.radius;e.x=a*u.cos(r),e.y=a*u.sin(r)}});var l=s+o*i.location,h=s+(1-a/this.adjustedTotal)*o*.5;m.isNaN(h)&&(h=s),i.fixPosition(l,n.radius),this.nextAngle=h,this._outgoingSorted&&k.each(this._outgoingSorted,function(e){var i=e.link;i.parent=t.chart.linksContainer;var a=e.getWorkingValue("value");if(m.isNumber(a)){if(r.nonRibbon){var l=i.percentWidth;m.isNumber(l)||(l=5),l/=100,i.startAngle=s+o/2-o/2*l,i.arc=o*l}else i.arc=a*r.valueAngle,i.startAngle=t.nextAngle,t.nextAngle+=i.arc;e.toNode||(i.endAngle=i.startAngle),i.radius=n.pixelInnerRadius}}),this._incomingSorted&&k.each(this._incomingSorted,function(e){var i=e.link;if(i.radius=n.pixelInnerRadius,r.nonRibbon){var a=i.percentWidth;m.isNumber(a)||(a=5),a/=100,i.endAngle=s+o/2-o/2*a,i.arc=o*a}else{i.endAngle=t.nextAngle;var l=e.getWorkingValue("value");m.isNumber(l)&&(i.arc=l*r.valueAngle,t.nextAngle+=i.arc)}e.fromNode||(i.startAngle=i.endAngle)})}},t.prototype.updateRotation=function(){var e=this.slice,t=this.trueStartAngle+e.arc/2,i=e.radius,n=i*u.cos(t),r=i*u.sin(t),a=u.getAngle({x:n+this.pixelX,y:r+this.pixelY});e.startAngle=this.trueStartAngle+(a-t),this.dx=-this.pixelX,this.dy=-this.pixelY},t.prototype.copyFrom=function(t){e.prototype.copyFrom.call(this,t),this.label.copyFrom(t.label),this.slice.copyFrom(t.slice)},t}(ae);l.b.registeredClasses.ChordNode=Te;var Ve=function(e){function t(){var t=e.call(this)||this;return t.className="QuadraticCurve",t.element=t.paper.add("path"),t.pixelPerfect=!1,t.fill=Object(le.c)(),t.applyTheme(),t}return r.c(t,e),t.prototype.draw=function(){if(m.isNumber(this.x1+this.x2+this.y1+this.y2+this.cpx+this.cpy)){var e={x:this.x1,y:this.y1},t={x:this.x2,y:this.y2},i={x:this.cpx,y:this.cpy},n=h.moveTo(e)+h.quadraticCurveTo(t,i);this.path=n}},Object.defineProperty(t.prototype,"cpx",{get:function(){return this.getPropertyValue("cpx")},set:function(e){this.setPropertyValue("cpx",e,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"cpy",{get:function(){return this.getPropertyValue("cpy")},set:function(e){this.setPropertyValue("cpy",e,!0)},enumerable:!0,configurable:!0}),t.prototype.positionToPoint=function(e){var t={x:this.x1,y:this.y1},i={x:this.cpx,y:this.cpy},n={x:this.x2,y:this.y2},r=u.getPointOnQuadraticCurve(t,n,i,e),a=u.getPointOnQuadraticCurve(t,n,i,e+.001);return{x:r.x,y:r.y,angle:u.getAngle(r,a)}},t}(he.a),_e=function(e){function t(){var t=e.call(this)||this;return t.className="ChordLink",t.middleLine=t.createChild(Ve),t.middleLine.shouldClone=!1,t.middleLine.strokeOpacity=0,t.applyTheme(),t}return r.c(t,e),t.prototype.validate=function(){if(e.prototype.validate.call(this),!this.isTemplate){var t=this.startAngle,i=this.endAngle,n=this.arc,r=this.radius,a=this.dataItem.fromNode,o=this.dataItem.toNode,s=0,l=0;a&&(s=a.pixelX+a.dx,l=a.pixelY+a.dy);var c=0,p=0;if(o&&(c=o.pixelX+o.dx,p=o.pixelY+o.dy),r>0){var d=r*u.cos(t)+s,y=r*u.sin(t)+l,g=r*u.cos(i)+c,f=r*u.sin(i)+p,m={x:0,y:0},v=h.moveTo({x:d,y:y});v+=h.arcTo(t,n,r),v+=h.quadraticCurveTo({x:g,y:f},m),v+=h.arcTo(i,n,r),v+=h.quadraticCurveTo({x:d,y:y},m),this.link.path=n>0?v:"",this.maskBullets&&(this.bulletsMask.path=v,this.bulletsContainer.mask=this.bulletsMask);var x=t+n/2,b=i+n/2,P=this.middleLine;P.x1=r*u.cos(x)+s,P.y1=r*u.sin(x)+l,P.x2=r*u.cos(b)+c,P.y2=r*u.sin(b)+p,P.cpx=0,P.cpy=0,P.stroke=this.fill,this.positionBullets()}}},Object.defineProperty(t.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(e){this.setPropertyValue("radius",e,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"arc",{get:function(){return this.getPropertyValue("arc")},set:function(e){this.setPropertyValue("arc",e,!0)},enumerable:!0,configurable:!0}),t}(ce);l.b.registeredClasses.ChordLink=_e;var Le=function(e){function t(){var t=e.call(this)||this;return t.className="ChordDiagramDataItem",t.applyTheme(),t}return r.c(t,e),t}(ye),ke=function(e){function t(){var t=e.call(this)||this;t.valueAngle=0,t.className="ChordDiagram",t.startAngle=-90,t.endAngle=270,t.radius=Object(o.c)(80),t.innerRadius=-15,t.nodePadding=5;var i=t.chartContainer.createChild(d.a);return i.align="center",i.valign="middle",i.shouldClone=!1,i.layout="absolute",t.chordContainer=i,t.nodesContainer.parent=i,t.linksContainer.parent=i,t.chartContainer.events.on("maxsizechanged",t.invalidate,t,!1),t.applyTheme(),t}return r.c(t,e),t.prototype.validate=function(){var t=this,i=this.chartContainer,n=this.endAngle,r=this.startAngle+this.nodePadding/2,a=u.getArcRect(this.startAngle,this.endAngle,1);a=u.getCommonRectangle([a,{x:0,y:0,width:0,height:0}]);var o=Math.min(i.innerWidth/a.width,i.innerHeight/a.height);m.isNumber(o)||(o=0);var s=C.relativeRadiusToValue(this.radius,o),l=C.relativeRadiusToValue(this.innerRadius,s,!0),h=this.dataItem.values.value.sum,c=0,p=0;k.each(this._sorted,function(e){var i=e[1];t.getNodeValue(i),c++;var n=i.total;i.total/hthis.currentLevel||e.children&&e.children.length>0)&&(i.columns.template.cursorOverStyle=Ne.a.pointer,this.zoomable&&i.columns.template.events.on("hit",function(i){var n=i.target.dataItem;e.level>t.currentLevel?t.zoomToChartDataItem(n.treeMapDataItem.parent):t.zoomToSeriesDataItem(n)},this,void 0))}this._tempSeries.push(e.series)},t.prototype.toggleBullets=function(e){var t=this;k.each(this.series.iterator(),function(i){-1==t._tempSeries.indexOf(i)?(i.columnsContainer.hide(),i.bulletsContainer.hide(e)):(i.columnsContainer.show(),i.bulletsContainer.show(e),i.dataItems.each(function(e){e.bullets.each(function(e,t){t.show()})}),i.level1&&i.dataItems.each(function(e){e.treeMapDataItem.children&&e.bullets.each(function(e,t){t.hide()})}))})},t.prototype.zoomToSeriesDataItem=function(e){this.zoomToChartDataItem(e.treeMapDataItem)},t.prototype.zoomToChartDataItem=function(e){var t=this,i=this.zoomOutButton;if(i&&(e!=this._homeDataItem?i.show():i.hide()),e&&e.children){this.xAxis.zoomToValues(e.x0,e.x1),this.yAxis.zoomToValues(e.y0,e.y1),this.currentLevel=e.level,this.currentlyZoomed=e,this.createTreeSeries(e);var n=this.xAxis.rangeChangeAnimation||this.yAxis.rangeChangeAnimation;!n||n.isDisposed()||n.isFinished()?this.toggleBullets():(this._dataDisposers.push(n),n.events.once("animationended",function(){t.toggleBullets()}))}},t.prototype.applyInternalDefaults=function(){e.prototype.applyInternalDefaults.call(this),m.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("TreeMap chart"))},t.prototype.createDataItem=function(){return new Fe},Object.defineProperty(t.prototype,"maxLevels",{get:function(){return this.getPropertyValue("maxLevels")},set:function(e){this.setPropertyValue("maxLevels",e,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"currentLevel",{get:function(){return this.getPropertyValue("currentLevel")},set:function(e){this.setPropertyValue("currentLevel",e,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"hideParentColumns",{get:function(){return this.getPropertyValue("hideParentColumns")},set:function(e){this.setPropertyValue("hideParentColumns",e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"sorting",{get:function(){return this.getPropertyValue("sorting")},set:function(e){this.setPropertyValue("sorting",e,!0)},enumerable:!0,configurable:!0}),t.prototype.createSeries=function(){return new we},Object.defineProperty(t.prototype,"homeText",{get:function(){return this._homeText},set:function(e){this._homeText=e,this._homeDataItem&&(this._homeDataItem.name=this._homeText)},enumerable:!0,configurable:!0}),t.prototype.processConfig=function(t){if(t){if(m.hasValue(t.layoutAlgorithm)&&m.isString(t.layoutAlgorithm))switch(t.layoutAlgorithm){case"squarify":t.layoutAlgorithm=this.squarify;break;case"binaryTree":t.layoutAlgorithm=this.binaryTree;break;case"slice":t.layoutAlgorithm=this.slice;break;case"dice":t.layoutAlgorithm=this.dice;break;case"sliceDice":t.layoutAlgorithm=this.sliceDice;break;default:delete t.layoutAlgorithm}m.hasValue(t.navigationBar)&&!m.hasValue(t.navigationBar.type)&&(t.navigationBar.type="NavigationBar"),e.prototype.processConfig.call(this,t)}},t.prototype.validateLayout=function(){e.prototype.validateLayout.call(this),this.layoutItems(this.currentlyZoomed)},t.prototype.validateDataItems=function(){e.prototype.validateDataItems.call(this),this.layoutItems(this._homeDataItem),k.each(this.series.iterator(),function(e){e.validateRawData()}),this.zoomToChartDataItem(this._homeDataItem)},t.prototype.binaryTree=function(e){var t,i,n=e.children,r=n.length,a=new Array(r+1);for(a[0]=i=t=0;t=i-1){var h=n.getIndex(t);return h.x0=o,h.y0=s,h.x1=l,void(h.y1=u)}var c=a[t],p=r/2+c,d=t+1,y=i-1;for(;d>>1;a[g]u-s){var v=(o*m+l*f)/r;e(t,d,f,o,s,v,u),e(d,i,m,v,s,l,u)}else{var x=(s*m+u*f)/r;e(t,d,f,o,s,l,x),e(d,i,m,o,x,l,u)}}(0,r,e.value,e.x0,e.y0,e.x1,e.y1)},t.prototype.slice=function(e){for(var t,i=e.x0,n=e.x1,r=e.y0,a=e.y1,o=e.children,s=-1,l=o.length,u=e.value&&(a-r)/e.value;++so&&(o=t),h=r*r*u,(s=Math.max(o/h,h/a))>l){r-=t;break}l=s}var P=this.dataItems.template.clone();P.value=r,P.dice=i1?e:1==e.children.length?this.getLegendLevel(e.children.getIndex(0)):e},t.prototype.feedLegend=function(){var e=this.legend;if(e){e.dataFields.name="name";var t=this.getLegendLevel(this._homeDataItem);if(t){var i=[];t.children.each(function(e){i.push(e)}),e.data=i}}},t.prototype.disposeData=function(){e.prototype.disposeData.call(this),this._homeDataItem=void 0,this.series.clear(),this.navigationBar&&this.navigationBar.disposeData(),this.xAxis.disposeData(),this.yAxis.disposeData()},t.prototype.getExporting=function(){var t=this,i=e.prototype.getExporting.call(this);return i.adapter.add("formatDataFields",function(e){return"csv"!=e.format&&"xlsx"!=e.format||m.hasValue(t.dataFields.children)&&delete e.dataFields[t.dataFields.children],e}),i},t}(a.a);l.b.registeredClasses.TreeMap=Ye;var Me=i("k6kv"),We=function(e){function t(){var t=e.call(this)||this;return t._chart=new _.d,t.className="AxisRendererX3D",t._disposers.push(t._chart),t.applyTheme(),t}return r.c(t,e),t.prototype.updateGridElement=function(e,t,i){t+=(i-t)*e.location;var n=this.positionToPoint(t);if(e.element){var r=this.chart.dx3D||0,a=this.chart.dy3D||0,o=this.getHeight();e.path=h.moveTo({x:r,y:a})+h.lineTo({x:r,y:o+a})+h.lineTo({x:0,y:o})}this.positionItem(e,n),this.toggleVisibility(e,t,0,1)},t.prototype.updateBaseGridElement=function(){e.prototype.updateBaseGridElement.call(this);var t=this.getHeight(),i=this.chart.dx3D||0,n=this.chart.dy3D||0;this.baseGrid.path=h.moveTo({x:i,y:n})+h.lineTo({x:0,y:0})+h.lineTo({x:0,y:t})},Object.defineProperty(t.prototype,"chart",{get:function(){return this._chart.get()},set:function(e){e&&this._chart.set(e,e.events.on("propertychanged",this.handle3DChanged,this,!1))},enumerable:!0,configurable:!0}),t.prototype.handle3DChanged=function(e){"depth"!=e.property&&"angle"!=e.property||this.invalidate()},t}(Me.a);l.b.registeredClasses.AxisRendererX3D=We;var Xe=function(e){function t(){var t=e.call(this)||this;return t._chart=new _.d,t.className="AxisRendererY3D",t._disposers.push(t._chart),t.applyTheme(),t}return r.c(t,e),t.prototype.updateGridElement=function(e,t,i){t+=(i-t)*e.location;var n=this.positionToPoint(t);if(e.element){var r=this.chart.dx3D||0,a=this.chart.dy3D||0,o=this.getWidth();e.path=h.moveTo({x:0,y:0})+h.lineTo({x:r,y:a})+h.lineTo({x:o+r,y:a})}this.positionItem(e,n),this.toggleVisibility(e,t,0,1)},t.prototype.updateBaseGridElement=function(){e.prototype.updateBaseGridElement.call(this);var t=this.chart.dx3D||0,i=this.chart.dy3D||0,n=this.getWidth();this.baseGrid.path=h.moveTo({x:0,y:0})+h.lineTo({x:n,y:0})+h.lineTo({x:n+t,y:i})},Object.defineProperty(t.prototype,"chart",{get:function(){return this._chart.get()},set:function(e){e&&this._chart.set(e,e.events.on("propertychanged",this.handle3DChanged,this,!1))},enumerable:!0,configurable:!0}),t.prototype.handle3DChanged=function(e){"depth"!=e.property&&"angle"!=e.property||this.invalidate()},t}(I.a),He=i("DG6Q"),Be=i("Mr4Y"),ze=function(e){function t(){var t=e.call(this)||this;return t.className="Column3D",t}return r.c(t,e),t.prototype.createAssets=function(){this.column3D=this.createChild(Be.a),this.column3D.shouldClone=!1,this.column3D.strokeOpacity=0,this.column=this.column3D},t.prototype.validate=function(){e.prototype.validate.call(this),this.column3D&&(this.column3D.width=this.pixelWidth,this.column3D.height=this.pixelHeight,this.column3D.invalid&&this.column3D.validate())},t.prototype.copyFrom=function(t){e.prototype.copyFrom.call(this,t),this.column3D&&this.column3D.copyFrom(t.column3D)},t.prototype.setFill=function(t){e.prototype.setFill.call(this,t),this.column.fill=t},t}(He.a);l.b.registeredClasses.Column3D=ze;var Ee=function(e){function t(){var t=e.call(this)||this;return t.className="ColumnSeries3DDataItem",t.applyTheme(),t}return r.c(t,e),t}(Re.b),Ge=function(e){function t(){var t=e.call(this)||this;return t.className="ColumnSeries3D",t.columns.template.column3D.applyOnClones=!0,t.columns.template.hiddenState.properties.visible=!0,t.applyTheme(),t}return r.c(t,e),Object.defineProperty(t.prototype,"columnsContainer",{get:function(){var e=this.chart;return e&&e.columnsContainer&&"vertical"!=e.leftAxesContainer.layout&&"vertical"!=e.rightAxesContainer.layout&&"horizontal"!=e.bottomAxesContainer.layout&&"horizontal"!=e.topAxesContainer.layout?e.columnsContainer:this._columnsContainer},enumerable:!0,configurable:!0}),t.prototype.validateDataElementReal=function(t){e.prototype.validateDataElementReal.call(this,t),t.column&&(t.column.dx=this.dx,t.column.dy=this.dy)},t.prototype.validateDataElements=function(){e.prototype.validateDataElements.call(this),this.chart&&this.chart.invalidateLayout()},t.prototype.createColumnTemplate=function(){return new ze},Object.defineProperty(t.prototype,"depth",{get:function(){return this.getPropertyValue("depth")},set:function(e){this.setPropertyValue("depth",e,!0),this.columns.template.column3D.depth=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"angle",{get:function(){return this.getPropertyValue("angle")},set:function(e){this.setPropertyValue("angle",e),this.columns.template.column3D.angle=e},enumerable:!0,configurable:!0}),t}(Re.a);l.b.registeredClasses.ColumnSeries3D=Ge,l.b.registeredClasses.ColumnSeries3DDataItem=Ee;var qe=function(e){function t(){var t=e.call(this)||this;return t.className="XYChart3DDataItem",t.applyTheme(),t}return r.c(t,e),t}(a.b),Ue=function(e){function t(){var t=e.call(this)||this;t._axisRendererX=We,t._axisRendererY=Xe,t.className="XYChart3D",t.depth=30,t.angle=30;var i=t.seriesContainer.createChild(d.a);return i.shouldClone=!1,i.isMeasured=!1,i.layout="none",t.columnsContainer=i,t.columnsContainer.mask=t.createChild(J.a),t.applyTheme(),t}return r.c(t,e),t.prototype.updateSeriesMasks=function(){if(e.prototype.updateSeriesMasks.call(this),C.isIE()){var t=this.columnsContainer,i=t.mask;t.mask=void 0,t.mask=i}},Object.defineProperty(t.prototype,"depth",{get:function(){return this.getPropertyValue("depth")},set:function(e){this.setPropertyValue("depth",e),this.fixLayout(),this.invalidateDataUsers()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"angle",{get:function(){return this.getPropertyValue("angle")},set:function(e){this.setPropertyValue("angle",e),this.fixLayout(),this.invalidateDataUsers()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"dx3D",{get:function(){return u.cos(this.angle)*this.depth},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"dy3D",{get:function(){return-u.sin(this.angle)*this.depth},enumerable:!0,configurable:!0}),t.prototype.validateLayout=function(){e.prototype.validateLayout.call(this),this.fixColumns()},t.prototype.fixLayout=function(){this.chartContainer.marginTop=-this.dy3D,this.chartContainer.paddingRight=this.dx3D,this.scrollbarX&&(this.scrollbarX.dy=this.dy3D,this.scrollbarX.dx=this.dx3D),this.scrollbarY&&(this.scrollbarY.dy=this.dy3D,this.scrollbarY.dx=this.dx3D),this.fixColumns(),e.prototype.fixLayout.call(this)},t.prototype.fixColumns=function(){var e=this,t=1,i=0;k.each(this.series.iterator(),function(e){e instanceof Ge&&(!e.clustered&&i>0&&t++,e.depthIndex=t-1,i++)});var n=0;k.each(this.series.iterator(),function(i){if(i instanceof Ge){i.depth=e.depth/t,i.angle=e.angle,i.columnsContainer==e.columnsContainer&&(i.dx=e.depth/t*u.cos(e.angle)*i.depthIndex,i.dy=-e.depth/t*u.sin(e.angle)*i.depthIndex);var r=!1;(i.baseAxis==i.xAxis&&i.xAxis.renderer.inversed||i.baseAxis==i.yAxis&&i.yAxis.renderer.inversed)&&(r=!0);var a=1;i.dataItems.each(function(e){var t=e.column;t&&(t.zIndex=r?1e3*(1e3-a)+n-100*i.depthIndex:1e3*a+n-100*i.depthIndex,a++)}),r?n--:n++}}),this.maskColumns()},t.prototype.processConfig=function(t){if(t&&m.hasValue(t.series)&&m.isArray(t.series))for(var i=0,n=t.series.length;i0&&t.length>0)if(r){var o=h.moveTo(e[0]);if(e.length>0)for(var s=1;s0||this.fillSprite.fillOpacity>0)&&(o=h.moveTo(e[0])+h.polyline(e),o+=h.lineTo(t[0])+h.polyline(t),o+=h.lineTo(e[0]),o+=h.closePath(),this.fillSprite.path=o)}else{o=h.moveTo(e[0])+h.polyline(e);this.strokeSprite.path=o,(this.fillOpacity>0||this.fillSprite.fillOpacity>0)&&(o+=h.lineTo(t[0])+h.polyline(t),o+=h.lineTo(e[0]),o+=h.closePath(),this.fillSprite.path=o)}},t}(Je.a);l.b.registeredClasses.StepLineSeriesSegment=at;var ot=function(e){function t(){var t=e.call(this)||this;return t.className="StepLineSeriesDataItem",t.applyTheme(),t}return r.c(t,e),t}(s.b),st=function(e){function t(){var t=e.call(this)||this;return t.className="StepLineSeries",t.applyTheme(),t.startLocation=0,t.endLocation=1,t}return r.c(t,e),t.prototype.createDataItem=function(){return new ot},t.prototype.addPoints=function(e,t,i,n,r){var a,o,s,l;this.baseAxis==this.xAxis&&(a=this.startLocation,o=this.endLocation,s=this.getAdjustedXLocation(t,this.yOpenField),l=this.getAdjustedXLocation(t,this.yField)),this.baseAxis==this.yAxis&&(s=this.startLocation,l=this.endLocation,a=this.getAdjustedXLocation(t,this.xOpenField),o=this.getAdjustedXLocation(t,this.xField));var h=this.xAxis.getX(t,i,a),c=this.yAxis.getY(t,n,s),p=this.xAxis.getX(t,i,o),d=this.yAxis.getY(t,n,l);if(h=u.fitToRange(h,-1e5,1e5),c=u.fitToRange(c,-1e5,1e5),p=u.fitToRange(p,-1e5,1e5),d=u.fitToRange(d,-1e5,1e5),!this.noRisers&&e.length>1){var y=e[e.length-1];this.baseAxis==this.xAxis&&(r?e.push({x:y.x,y:d}):e.push({x:h,y:y.y})),this.baseAxis==this.yAxis&&(r?e.push({x:p,y:y.y}):e.push({x:y.x,y:c}))}var g={x:h,y:c},f={x:p,y:d};r?e.push(f,g):e.push(g,f)},t.prototype.drawSegment=function(e,t,i){var n=!1;this.yAxis==this.baseAxis&&(n=!0),e.drawSegment(t,i,this.tensionX,this.tensionY,this.noRisers,n)},t.prototype.createSegment=function(){return new at},Object.defineProperty(t.prototype,"noRisers",{get:function(){return this.getPropertyValue("noRisers")},set:function(e){this.setPropertyValue("noRisers",e,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"startLocation",{get:function(){return this.getPropertyValue("startLocation")},set:function(e){this.setPropertyValue("startLocation",e,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"endLocation",{get:function(){return this.getPropertyValue("endLocation")},set:function(e){this.setPropertyValue("endLocation",e,!0)},enumerable:!0,configurable:!0}),t}(s.a);l.b.registeredClasses.StepLineSeries=st,l.b.registeredClasses.StepLineSeriesDataItem=ot;var lt=function(e){function t(){var t=e.call(this)||this;return t.className="RadarColumn",t}return r.c(t,e),t.prototype.createAssets=function(){this.radarColumn=this.createChild(Ie.a),this.radarColumn.shouldClone=!1,this.radarColumn.strokeOpacity=void 0,this.column=this.radarColumn},t.prototype.copyFrom=function(t){e.prototype.copyFrom.call(this,t),this.radarColumn&&this.radarColumn.copyFrom(t.radarColumn)},t.prototype.getTooltipX=function(){var e=this.getPropertyValue("tooltipX");return m.isNumber(e)?e:this.radarColumn.getTooltipX()},t.prototype.getTooltipY=function(){var e=this.getPropertyValue("tooltipX");return m.isNumber(e)?e:this.radarColumn.getTooltipY()},t}(He.a);l.b.registeredClasses.RadarColumn=lt;var ut=function(e){function t(){var t=e.call(this)||this;return t.className="ColumnSeriesDataItem",t.applyTheme(),t}return r.c(t,e),t}(Re.b),ht=function(e){function t(){var t=e.call(this)||this;return t.className="RadarColumnSeries",t.applyTheme(),t}return r.c(t,e),t.prototype.createColumnTemplate=function(){return new lt},t.prototype.validate=function(){this.chart.invalid&&this.chart.validate(),e.prototype.validate.call(this)},t.prototype.disableUnusedColumns=function(e){e&&(e.column&&(e.column.__disabled=!0),k.each(this.axisRanges.iterator(),function(t){var i=e.rangesColumns.getKey(t.uid);i&&(i.__disabled=!0)}))},t.prototype.validateDataElementReal=function(e){var t,i,n,r,a=this,s=this.chart.startAngle,l=this.chart.endAngle,h=this.yField,c=this.yOpenField,p=this.xField,d=this.xOpenField,y=this.getStartLocation(e),g=this.getEndLocation(e),f=(l-s)/(this.dataItems.length*(this.end-this.start)),m=e.column;m||(m=this.columns.create(),e.column=m,ne.forceCopyProperties(this.columns.template,m,J.b),e.addSprite(m),m.paper=this.paper,this.setColumnStates(m));var v=m.width,x=100;v instanceof o.a&&(x=v.percent);var b=u.round((g-y)*(1-x/100)/2,5);if(y+=b,g-=b,this.baseAxis==this.xAxis?(n=u.getDistance({x:this.yAxis.getX(e,h,e.locations[h],"valueY"),y:this.yAxis.getY(e,h,e.locations[h],"valueY")}),r=u.getDistance({x:this.yAxis.getX(e,c,e.locations[c],"valueY"),y:this.yAxis.getY(e,c,e.locations[c],"valueY")}),t=this.xAxis.getAngle(e,d,y,"valueX"),i=this.xAxis.getAngle(e,p,g,"valueX"),s+=y*f,l-=(1-g)*f):(n=u.getDistance({x:this.yAxis.getX(e,h,y,"valueY"),y:this.yAxis.getY(e,h,y,"valueY")}),r=u.getDistance({x:this.yAxis.getX(e,c,g,"valueY"),y:this.yAxis.getY(e,c,g,"valueY")}),t=this.xAxis.getAngle(e,p,e.locations[p],"valueX"),i=this.xAxis.getAngle(e,d,e.locations[d],"valueX")),i0?(C.arc=A,C.radius=n,C.innerRadius=r,m.__disabled=!1,m.parent=this.columnsContainer,k.each(this.axisRanges.iterator(),function(i){var o=e.rangesColumns.getKey(i.uid);o||(o=a.columns.create(),ne.forceCopyProperties(a.columns.template,o,J.b),ne.copyProperties(i.contents,o,J.b),o.dataItem&&je.remove(o.dataItem.sprites,o),e.addSprite(o),o.paper=a.paper,a.setColumnStates(o),e.rangesColumns.setKey(i.uid,o));var s=o.radarColumn;s.startAngle=t,s.arc=A,s.radius=n,s.innerRadius=r,s.invalid&&(s.paper=a.paper,s.validate()),o.__disabled=!1,o.parent=i.contents})):this.disableUnusedColumns(e)},t.prototype.getPoint=function(e,t,i,n,r,a,o){a||(a="valueX"),o||(o="valueY");var s=this.yAxis.getX(e,i,r,o),l=this.yAxis.getY(e,i,r,o),h=u.getDistance({x:s,y:l});0==h&&(h=1e-5);var c=this.xAxis.getAngle(e,t,n,a);return{x:h*u.cos(c),y:h*u.sin(c)}},t.prototype.getMaskPath=function(){var e=this.yAxis.renderer;return h.arc(e.startAngle,e.endAngle-e.startAngle,e.pixelRadius,e.pixelInnerRadius)},t.prototype.positionBulletReal=function(e,t,i){var n=this.xAxis,r=this.yAxis;(tn.end||ir.end)&&(e.visible=!1),e.moveTo(this.xAxis.renderer.positionToPoint(t,i))},t.prototype.setXAxis=function(t){e.prototype.setXAxis.call(this,t),this.updateRendererRefs()},t.prototype.setYAxis=function(t){e.prototype.setYAxis.call(this,t),this.updateRendererRefs()},t.prototype.updateRendererRefs=function(){var e=this.xAxis.renderer,t=this.yAxis.renderer;e.axisRendererY=t},t}(Re.a);l.b.registeredClasses.RadarColumnSeries=ht,l.b.registeredClasses.RadarColumnSeriesDataItem=ut;var ct=i("AC2I"),pt=function(e){function t(){var t=e.call(this)||this;return t.slice=t.createChild(J.a),t.slice.shouldClone=!1,t.slice.setElement(t.paper.add("path")),t.slice.isMeasured=!1,t.orientation="vertical",t.bottomWidth=Object(o.c)(100),t.topWidth=Object(o.c)(100),t.isMeasured=!1,t.width=10,t.height=10,t.expandDistance=0,t.className="FunnelSlice",t.applyTheme(),t}return r.c(t,e),t.prototype.draw=function(){e.prototype.draw.call(this);var t=this.pixelPaddingTop,i=this.pixelPaddingBottom,n=this.pixelPaddingRight,r=this.pixelPaddingLeft,a=this.pixelWidth-n-r,o=this.pixelHeight-t-i,s=this.expandDistance,l="";if("vertical"==this.orientation){var u={x:(a-(v=C.relativeToValue(this.topWidth,a)))/2+r,y:t},c={x:(a+v)/2+r,y:t},p={x:(a+(x=C.relativeToValue(this.bottomWidth,a)))/2+r,y:t+o},d={x:(a-x)/2+r,y:t+o},y={x:c.x+(p.x-c.x)/2+s*o,y:c.y+.5*o},g={x:u.x+(d.x-u.x)/2-s*o,y:u.y+.5*o},f=h.lineTo(p),m="";0!=s&&(f=h.quadraticCurveTo(p,y),m=h.quadraticCurveTo(u,g)),l=h.moveTo(u)+h.lineTo(c)+f+h.lineTo(d)+m,this.tickPoint={x:c.x+(p.x-c.x)/2,y:c.y+(p.y-c.y)/2}}else{var v,x,b={x:r,y:(o-(v=C.relativeToValue(this.topWidth,o)))/2+t},P={x:r,y:(o+v)/2+t},A={x:r+a,y:(o-(x=C.relativeToValue(this.bottomWidth,o)))/2+t},D={x:r+a,y:(o+x)/2+t};y={y:b.y+(A.y-b.y)/2-s*a,x:b.x+.5*a},g={y:P.y+(D.y-P.y)/2+s*a,x:P.x+.5*a},f=h.lineTo(A),m="";0!=s&&(f=h.quadraticCurveTo(A,y),m=h.quadraticCurveTo(P,g)),l=h.moveTo(P)+h.lineTo(b)+f+h.lineTo(D)+m,this.tickPoint={y:P.y+(D.y-P.y)/2,x:P.x+(D.x-P.x)/2}}this.slice.path=l,this.invalidateLayout()},t.prototype.getPoint=function(e,t){var i=this.pixelPaddingTop,n=this.pixelPaddingBottom,r=this.pixelPaddingRight,a=this.pixelPaddingLeft,o=this.pixelWidth-r-a,s=this.pixelHeight-i-n;if("vertical"==this.orientation){var l={x:(o-(p=C.relativeToValue(this.topWidth,o)))/2+a,y:i},u={x:(o+p)/2+a,y:i},h={x:(o+(d=C.relativeToValue(this.bottomWidth,o)))/2+a,y:i+s},c=l.x+({x:(o-d)/2+a,y:i+s}.x-l.x)*t;return{x:c+(u.x+(h.x-u.x)*t-c)*e,y:u.y+(h.y-u.y)*t}}var p,d,y={x:a,y:(s-(p=C.relativeToValue(this.topWidth,s)))/2+i},g={x:a,y:(s+p)/2+i},f={x:a+o,y:(s-(d=C.relativeToValue(this.bottomWidth,s)))/2+i},m=y.y+(f.y-y.y)*e;return{y:m+(g.y+({x:a+o,y:(s+d)/2+i}.y-g.y)*e-m)*t,x:y.x+(f.x-y.x)*e}},Object.defineProperty(t.prototype,"bottomWidth",{get:function(){return this.getPropertyValue("bottomWidth")},set:function(e){this.setPercentProperty("bottomWidth",e,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"topWidth",{get:function(){return this.getPropertyValue("topWidth")},set:function(e){this.setPercentProperty("topWidth",e,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"orientation",{get:function(){return this.getPropertyValue("orientation")},set:function(e){this.setPropertyValue("orientation",e,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"expandDistance",{get:function(){return this.getPropertyValue("expandDistance")},set:function(e){this.setPropertyValue("expandDistance",e,!0)},enumerable:!0,configurable:!0}),t.prototype.copyFrom=function(t){e.prototype.copyFrom.call(this,t),this.slice&&this.slice.copyFrom(t.slice)},t}(d.a);l.b.registeredClasses.FunnelSlice=pt;var dt=i("qzbU"),yt=function(e){function t(){var t=e.call(this)||this;return t._label=new _.d,t._slice=new _.d,t.className="FunnelTick",t.element=t.paper.add("path"),t._disposers.push(t._label),t._disposers.push(t._slice),t.setPropertyValue("locationX",0),t.setPropertyValue("locationY",0),t.applyTheme(),t}return r.c(t,e),t.prototype.draw=function(){e.prototype.draw.call(this);var t=this.slice,i=t.getPoint(this.locationX,this.locationY);if(i){var n=this.label,r=t.dataItem.component;if("vertical"==r.orientation){var a=n.pixelX,o=n.pixelY;r.labelsOpposite||(a+=n.maxRight);var s=C.spritePointToSprite(i,t,this.parent),l=C.spritePointToSprite({x:a,y:o},n.parent,this.parent);this.path=h.moveTo(s)+h.lineTo(l)}else{a=n.pixelX,o=n.pixelY;r.labelsOpposite||(o+=n.maxBottom);s=C.spritePointToSprite(i,t,this.parent),l=C.spritePointToSprite({x:a,y:o},n.parent,this.parent);this.path=h.moveTo(s)+h.lineTo(l)}}},Object.defineProperty(t.prototype,"slice",{get:function(){return this._slice.get()},set:function(e){this._slice.set(e,new _.c([e.events.on("transformed",this.invalidate,this,!1),e.events.on("validated",this.invalidate,this,!1)]))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"label",{get:function(){return this._label.get()},set:function(e){this._label.set(e,e.events.on("transformed",this.invalidate,this,!1))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"locationX",{get:function(){return this.getPropertyValue("locationX")},set:function(e){this.setPropertyValue("locationX",e,!1,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"locationY",{get:function(){return this.getPropertyValue("locationY")},set:function(e){this.setPropertyValue("locationY",e,!1,!0)},enumerable:!0,configurable:!0}),t}(dt.a);l.b.registeredClasses.FunnelTick=yt;var gt=function(e){function t(){var t=e.call(this)||this;return t.className="FunnelSeriesDataItem",t.events.on("visibilitychanged",function(){t.component&&t.component.invalidateDataItems()},t,!1),t.applyTheme(),t}return r.c(t,e),Object.defineProperty(t.prototype,"sliceLink",{get:function(){var e=this;if(!this._sliceLink){var t=this.component.sliceLinks.create();this._sliceLink=t,this._disposers.push(t),t.parent=this.component.slicesContainer,this._disposers.push(new _.b(function(){e.component&&e.component.sliceLinks.removeValue(t)})),this.addSprite(t),t.visible=this.visible}return this._sliceLink},enumerable:!0,configurable:!0}),t}(ct.b),ft=function(e){function t(){var t=e.call(this)||this;return t._nextY=0,t.className="FunnelSeries",t.orientation="vertical",t.width=Object(o.c)(100),t.height=Object(o.c)(100),t.slicesContainer.width=Object(o.c)(100),t.slicesContainer.height=Object(o.c)(100),t._disposers.push(t.slicesContainer.events.on("maxsizechanged",t.invalidateDataItems,t,!1)),t.labelsOpposite=!0,t.labelsContainer.layout="absolute",t.bottomRatio=0,t.applyTheme(),t}return r.c(t,e),t.prototype.createSlice=function(){return new pt},t.prototype.createTick=function(){return new yt},t.prototype.applyInternalDefaults=function(){e.prototype.applyInternalDefaults.call(this),m.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Funnel Series"))},t.prototype.createDataItem=function(){return new gt},t.prototype.initSlice=function(e){e.isMeasured=!1,e.defaultState.properties.scale=1,e.observe("scale",this.handleSliceScale,this),e.observe(["dx","dy","x","y"],this.handleSliceMove,this),e.tooltipText="{category}: {value.percent.formatNumber('#.#')}% ({value.value})",e.states.create("hover").properties.expandDistance=.2},t.prototype.initLabel=function(t){e.prototype.initLabel.call(this,t),t.verticalCenter="middle",t.horizontalCenter="middle",t.isMeasured=!0,t.padding(5,5,5,5)},t.prototype.validate=function(){e.prototype.validate.call(this),this._nextY=0},t.prototype.validateDataElements=function(){var t=this,i=this.slicesContainer,n=this.labelsContainer,r=this.labels.template;this.alignLabels?(r.interactionsEnabled=!0,i.isMeasured=!0,n.isMeasured=!0):(r.interactionsEnabled=!1,i.isMeasured=!1,n.isMeasured=!1);var a=0,o=0;this.dataItems.each(function(e){m.hasValue(e.value)&&(o++,e.value>0?a+=e.getWorkingValue("value")/e.value:t.ignoreZeroValues?o--:!e.visible||e.__disabled||e.isHiding?o--:a+=1)}),this._total=1/o*a,this._count=o,e.prototype.validateDataElements.call(this),this.arrangeLabels()},t.prototype.getNextValue=function(e){var t=e.index,i=e.getWorkingValue("value");if(t0){var t=this.labels.getIndex(e);return t.__disabled||!t.visible?this.getLastLabel(e-1):t}},t.prototype.arrangeLabels=function(){if(this.alignLabels){var e=this.labels.length;if(e>1){var t=this.getLastLabel(e-1);if(t){var i=t.pixelY,n=t.pixelX;if(e>1){for(var r=e-2;r>=0;r--){(a=this.labels.getIndex(r)).visible&&!a.__disabled&&(a.invalid&&a.validate(),"vertical"==this.orientation?a.pixelY+a.measuredHeight>i&&(a.y=Math.min(1e6,i-a.measuredHeight)):a.pixelX+a.measuredWidth>n&&(a.x=Math.min(1e6,n-a.measuredWidth)),i=a.pixelY,n=a.pixelX)}i=0,n=0;for(r=0;r0){var r=e.getWorkingValue("value")/e.value,a=e.sliceLink;"vertical"==t.orientation?n-=a.pixelHeight*r:i-=a.pixelWidth*r}}),this._pyramidHeight=C.relativeToValue(this.pyramidHeight,n),this._pyramidWidth=C.relativeToValue(this.pyramidHeight,i),"vertical"==this.orientation){var r=(n-this._pyramidHeight)/2;this.slicesContainer.y=r,this.labelsContainer.y=r,this.ticksContainer.y=r}else{var a=(i-this._pyramidWidth)/2;this.slicesContainer.x=a,this.labelsContainer.x=a,this.ticksContainer.x=a}e.prototype.validateDataElements.call(this)},t.prototype.decorateSlice=function(e){var t=this.dataItem.values.value.sum;if(0!=t){var i=e.slice,n=e.sliceLink,r=e.label,a=e.tick;this.getNextValue(e);var o=Math.abs(e.getWorkingValue("value"));0==o&&(o=1e-6);var s=this._pyramidWidth,l=this._pyramidHeight,u=this.slicesContainer.innerWidth,h=this.slicesContainer.innerHeight,c=n.pixelWidth,p=n.pixelHeight;if(0==e.value&&this.ignoreZeroValues?e.__disabled=!0:e.__disabled=!1,"vertical"==this.orientation){var d=C.relativeToValue(this.topWidth,u);m.isNumber(this._nextWidth)||(this._nextWidth=d);var y=C.relativeToValue(this.bottomWidth,u),g=this._nextWidth,f=Math.atan2(l,d-y);0==(A=Math.tan(Math.PI/2-f))&&(A=1e-8);var v=void 0,x=void 0;if("area"==this.valueIs){var b=(d+y)/2*l*o/t,P=Math.abs(g*g-2*b*A);x=(2*b-(v=(g-Math.sqrt(P))/A)*g)/v}else{x=g-(v=l*o/this.dataItem.values.value.sum)*A}i.height=v,i.width=u,i.bottomWidth=x,i.topWidth=g,n.topWidth=i.bottomWidth,n.bottomWidth=i.bottomWidth,i.y=this._nextY,this.alignLabels?r.x=0:r.x=u/2,r.y=i.pixelY+i.pixelHeight*a.locationY+i.dy,this._nextY+=i.pixelHeight+p*o/Math.max(Math.abs(e.value),1e-8),n.y=this._nextY-p,n.x=u/2}else{d=C.relativeToValue(this.topWidth,h);m.isNumber(this._nextWidth)||(this._nextWidth=d);var A;y=C.relativeToValue(this.bottomWidth,h),g=this._nextWidth,f=Math.atan2(s,d-y);0==(A=Math.tan(Math.PI/2-f))&&(A=1e-8);var D=void 0;x=void 0;if("area"==this.valueIs)x=(2*(b=(d+y)/2*s*o/this.dataItem.values.value.sum)-(D=(g-Math.sqrt(g*g-2*b*A))/A)*g)/D;else x=g-(D=s*o/this.dataItem.values.value.sum)*A;i.width=D,i.height=h,i.bottomWidth=x,i.topWidth=g,n.topWidth=i.bottomWidth,n.bottomWidth=i.bottomWidth,i.x=this._nextY,this.alignLabels?r.y=this.labelsContainer.measuredHeight:r.y=h/2,r.x=i.pixelX+i.pixelWidth*a.locationX+i.dx,this._nextY+=i.pixelWidth+c*o/Math.max(Math.abs(e.value),1e-8),n.x=this._nextY-c,n.y=h/2}this._nextWidth=i.bottomWidth}},Object.defineProperty(t.prototype,"topWidth",{get:function(){return this.getPropertyValue("topWidth")},set:function(e){this.setPercentProperty("topWidth",e,!1,!1,10,!1)&&this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"pyramidHeight",{get:function(){return this.getPropertyValue("pyramidHeight")},set:function(e){this.setPercentProperty("pyramidHeight",e,!1,!1,10,!1)&&this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bottomWidth",{get:function(){return this.getPropertyValue("bottomWidth")},set:function(e){this.setPercentProperty("bottomWidth",e,!1,!1,10,!1)&&this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"valueIs",{get:function(){return this.getPropertyValue("valueIs")},set:function(e){this.setPropertyValue("valueIs",e)&&this.invalidate()},enumerable:!0,configurable:!0}),t}(ft);l.b.registeredClasses.PyramidSeries=vt,l.b.registeredClasses.PyramidSeriesDataItem=mt;var xt=function(e){function t(){var t=e.call(this)||this;return t.className="PictorialStackedSeriesDataItem",t.applyTheme(),t}return r.c(t,e),t}(mt),bt=function(e){function t(){var t=e.call(this)||this;return t.className="PictorialStackedSeries",t.topWidth=Object(o.c)(100),t.bottomWidth=Object(o.c)(100),t.valueIs="height",t.applyTheme(),t.startLocation=0,t.endLocation=1,t.align="center",t.valign="middle",t._maskSprite=t.slicesContainer.createChild(J.a),t._maskSprite.visible=!1,t._maskSprite.zIndex=100,t._maskSprite.shouldClone=!1,t}return r.c(t,e),t.prototype.validateDataElements=function(){var t=this.slicesContainer.maxWidth,i=this.slicesContainer.maxHeight,n=this._maskSprite,r=n.measuredWidth/n.scale,a=n.measuredHeight/n.scale,o=u.min(i/a,t/r);o==1/0&&(o=1),o=u.max(.001,o);var s,l,h=this.startLocation,c=this.endLocation,p=u.min(t,r*o),d=u.min(i,a*o);n.scale=o,"vertical"==this.orientation?(this.topWidth=p+4,this.bottomWidth=p+4,this.pyramidHeight=d*(c-h),n.x=t/2,n.y=d/2):(this.topWidth=d+4,this.bottomWidth=d+4,this.pyramidHeight=p*(c-h),n.valign="middle",n.x=p/2,n.y=i/2),n.verticalCenter="middle",n.horizontalCenter="middle",e.prototype.validateDataElements.call(this),"vertical"==this.orientation?("bottom"==this.valign&&(s=i-d),"middle"==this.valign&&(s=(i-d)/2),"top"==this.valign&&(s=0),"left"==this.align&&(l=-(t-p)/2),"center"==this.align&&(l=0),"right"==this.align&&(l=(t-p)/2),this.slices.template.dy=h*d,this.alignLabels&&(this.slicesContainer.dx=l)):("bottom"==this.valign&&(s=(i-d)/2),"middle"==this.valign&&(s=0),"top"==this.valign&&(s=-(i-d)/2),"left"==this.align&&(l=0),"center"==this.align&&(l=(t-p)/2),"right"==this.align&&(l=t-p),this.slices.template.dx=h*p,this.alignLabels&&(this.slicesContainer.dy=s)),this.slicesContainer.x=l,this.labelsContainer.x=l,this.ticksContainer.x=l,this.slicesContainer.y=s,this.labelsContainer.y=s,this.ticksContainer.y=s,p>0&&d>0&&(this.slicesContainer.mask=n)},t.prototype.applyInternalDefaults=function(){e.prototype.applyInternalDefaults.call(this),m.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Pyramid Series"))},t.prototype.createDataItem=function(){return new xt},Object.defineProperty(t.prototype,"maskSprite",{get:function(){return this._maskSprite},enumerable:!0,configurable:!0}),t.prototype.initSlice=function(t){e.prototype.initSlice.call(this,t);var i=t.states.getKey("hover");i&&(i.properties.expandDistance=0)},Object.defineProperty(t.prototype,"startLocation",{get:function(){return this.getPropertyValue("startLocation")},set:function(e){this.setPropertyValue("startLocation",e)&&this.invalidateDataItems()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"endLocation",{get:function(){return this.getPropertyValue("endLocation")},set:function(e){this.setPropertyValue("endLocation",e)&&this.invalidateDataItems()},enumerable:!0,configurable:!0}),t}(vt);l.b.registeredClasses.PictorialStackedSeries=bt,l.b.registeredClasses.PictorialStackedSeriesDataItem=xt;var Pt=i("BmDP"),Ct=i("ncT3"),At=function(e){function t(){var t=e.call(this)||this;return t.className="ConeColumn",t}return r.c(t,e),t.prototype.createAssets=function(){this.coneColumn=this.createChild(Ct.a),this.coneColumn.shouldClone=!1,this.column=this.coneColumn},t.prototype.copyFrom=function(t){e.prototype.copyFrom.call(this,t),this.coneColumn&&this.coneColumn.copyFrom(t.coneColumn)},t}(He.a);l.b.registeredClasses.ConeColumn=At;var Dt=function(e){function t(){var t=e.call(this)||this;return t.className="ConeSeriesDataItem",t.applyTheme(),t}return r.c(t,e),t}(Re.b),It=function(e){function t(){var t=e.call(this)||this;return t.className="ConeSeries",t.applyTheme(),t}return r.c(t,e),t.prototype.createColumnTemplate=function(){return new At},t.prototype.getMaskPath=function(){var e=0,t=0,i=this.columns.getIndex(0);if(i)return this.baseAxis==this.xAxis?t=i.coneColumn.bottom.radiusY+1:e=i.coneColumn.bottom.radiusY+1,h.rectToPath({x:-e,y:0,width:this.xAxis.axisLength+e,height:this.yAxis.axisLength+t})},t.prototype.validateDataElementReal=function(t){if(e.prototype.validateDataElementReal.call(this,t),t.column){var i=t.column.coneColumn;i.fill=t.column.fill,this.baseAxis==this.yAxis?i.orientation="horizontal":i.orientation="vertical"}},t}(Re.a);l.b.registeredClasses.ConeSeries=It,l.b.registeredClasses.ConeSeriesDataItem=Dt;var Tt=function(e){function t(){var t=e.call(this)||this;return t.className="CurvedColumn",t}return r.c(t,e),t.prototype.createAssets=function(){this.curvedColumn=this.createChild(J.a),this.curvedColumn.shouldClone=!1,this.setPropertyValue("tension",.7),this.width=Object(o.c)(120),this.height=Object(o.c)(120),this.column=this.curvedColumn},t.prototype.draw=function(){e.prototype.draw.call(this);var t,i=this.realWidth,n=this.realHeight,r=this.realX-this.pixelX,a=this.realY-this.pixelY;C.used(this.width);var o=1,s=1;"vertical"==this.orientation?(o=this.tension,t=[{x:0,y:n+a},{x:i/2,y:a},{x:i,y:n+a}]):(s=this.tension,t=[{x:r,y:0},{x:r+i,y:n/2},{x:r,y:n}]);var l=h.moveTo(t[0])+new be.b(o,s).smooth(t);this.column.path=l},t.prototype.copyFrom=function(t){e.prototype.copyFrom.call(this,t),this.curvedColumn&&this.curvedColumn.copyFrom(t.curvedColumn)},Object.defineProperty(t.prototype,"tension",{get:function(){return this.getPropertyValue("tension")},set:function(e){this.setPropertyValue("tension",e,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"orientation",{get:function(){return this.getPropertyValue("orientation")},set:function(e){this.setPropertyValue("orientation",e,!0)},enumerable:!0,configurable:!0}),t}(He.a);l.b.registeredClasses.CurvedColumn=Tt;var Vt=function(e){function t(){var t=e.call(this)||this;return t.className="CurvedColumnSeriesDataItem",t.applyTheme(),t}return r.c(t,e),t}(Re.b),_t=function(e){function t(){var t=e.call(this)||this;return t.className="CurvedColumnSeries",t.applyTheme(),t}return r.c(t,e),t.prototype.createColumnTemplate=function(){return new Tt},t.prototype.validateDataElementReal=function(t){e.prototype.validateDataElementReal.call(this,t);var i=t.column;(i=t.column)&&(t.column.curvedColumn.fill=t.column.fill,this.baseAxis==this.yAxis?i.orientation="horizontal":i.orientation="vertical")},t}(Re.a);l.b.registeredClasses.CurvedColumnSeries=_t,l.b.registeredClasses.CurvedColumnSeriesDataItem=Vt;var Lt=i("AAkI"),kt=i("eN1s"),Ot=i("TDx+"),Rt=i("eAid"),St=i("Uslz"),wt=i("+K/x"),Nt=i("KknQ"),jt=function(e){function t(){var t=e.call(this)||this;return t.className="DurationAxisDataItem",t.applyTheme(),t}return r.c(t,e),t}(Oe.b),Ft=function(e){function t(){var t=e.call(this)||this;return t._baseUnit="second",t.className="DurationAxis",t.setPropertyValue("maxZoomFactor",1e6),t.applyTheme(),t}return r.c(t,e),t.prototype.formatLabel=function(e,t){return this.durationFormatter.format(e,t||this.axisDurationFormat)},t.prototype.adjustMinMax=function(t,i,n,a,o){var s,l,h,c=this.baseUnit;if(this.setPropertyValue("maxPrecision",0),"millisecond"==c||"second"==c||"minute"==c||"hour"==c){a<=1&&(a=1),a=Math.round(a);var p=t,d=i;0===n&&(n=Math.abs(i));var y,g=[60,30,20,15,10,2,1],f=1;"hour"==c&&(g=[24,12,6,4,2,1]);try{for(var m=r.g(g),v=m.next();!v.done;v=m.next()){var x=v.value;if(n/x>a){f=x;break}}}catch(e){l={error:e}}finally{try{v&&!v.done&&(h=m.return)&&h.call(m)}finally{if(l)throw l.error}}var b=Math.ceil((i-t)/f/a),P=Math.log(Math.abs(b))*Math.LOG10E,C=Math.pow(10,Math.floor(P))/10,A=b/C;y=f*(b=u.closest(g,A)*C),this.durationFormatter.getValueUnit(y,this.baseUnit),t=Math.floor(t/y)*y,i=Math.ceil(i/y)*y,o&&((t-=y)<0&&p>=0&&(t=0),(i+=y)>0&&d<=0&&(i=0)),s={min:t,max:i,step:y}}else s=e.prototype.adjustMinMax.call(this,t,i,n,a,o);return this.axisDurationFormat=this.durationFormatter.getFormat(s.step,s.max,this.baseUnit),s},Object.defineProperty(t.prototype,"tooltipDurationFormat",{get:function(){return this._tooltipDurationFormat},set:function(e){this._tooltipDurationFormat=e},enumerable:!0,configurable:!0}),t.prototype.getTooltipText=function(e){var t=u.round(this.positionToValue(e),this._stepDecimalPlaces),i=this.formatLabel(t,this.tooltipDurationFormat);return this._adapterO?this._adapterO.apply("getTooltipText",i):i},Object.defineProperty(t.prototype,"baseUnit",{get:function(){return this._baseUnit},set:function(e){this._baseUnit!=e&&(this._baseUnit=e,this.durationFormatter.baseUnit=e,this.invalidate())},enumerable:!0,configurable:!0}),t.prototype.copyFrom=function(t){e.prototype.copyFrom.call(this,t),this.baseUnit=t.baseUnit},t}(Oe.a);l.b.registeredClasses.DurationAxis=Ft,l.b.registeredClasses.DurationAxisDataItem=jt;var Yt=i("9ZsQ"),Mt=i("ZoDA"),Wt=function(e){function t(){var t=e.call(this)||this;t.className="CircleBullet";var i=t.createChild(y.a);return i.shouldClone=!1,i.radius=5,i.isMeasured=!1,t.circle=i,t.applyTheme(),t}return r.c(t,e),t.prototype.copyFrom=function(t){e.prototype.copyFrom.call(this,t),this.circle.copyFrom(t.circle)},t}(se.a);l.b.registeredClasses.CircleBullet=Wt;var Xt=function(e){function t(){var t=e.call(this)||this;return t.className="ErrorBullet",t.errorLine=t.createChild(J.a),t.errorLine.shouldClone=!1,t.width=20,t.height=20,t.strokeOpacity=1,t.isDynamic=!0,t}return r.c(t,e),t.prototype.validatePosition=function(){e.prototype.validatePosition.call(this);var t=this.pixelWidth/2,i=this.pixelHeight/2;this.errorLine.path=h.moveTo({x:-t,y:-i})+h.lineTo({x:t,y:-i})+h.moveTo({x:0,y:-i})+h.lineTo({x:0,y:i})+h.moveTo({x:-t,y:i})+h.lineTo({x:t,y:i})},t.prototype.copyFrom=function(t){e.prototype.copyFrom.call(this,t),this.errorLine.copyFrom(t.errorLine)},t}(se.a);l.b.registeredClasses.ErrorBullet=Xt;var Ht=i("C6Lh"),Bt=i("Y9w3"),zt=i("A6AV"),Et=i("Trvg"),Gt=i("Rnbi"),qt=function(e){function t(){var t=e.call(this)||this;return t.className="NavigationBarDataItem",t.applyTheme(),t}return r.c(t,e),Object.defineProperty(t.prototype,"name",{get:function(){return this.properties.name},set:function(e){this.setProperty("name",e)},enumerable:!0,configurable:!0}),t}(zt.a),Ut=function(e){function t(){var t=e.call(this)||this;t.className="NavigationBar";var i=new N.a,n=new Et.a;n.valign="middle",n.paddingTop=8,n.paddingBottom=8,t.paddingBottom=2,t.links=new S.e(n),t._disposers.push(new S.c(t.links)),t._disposers.push(n),t._linksIterator=new k.ListIterator(t.links,function(){return t.links.create()}),t._linksIterator.createNewItems=!0;var r=new Gt.a;r.direction="right",r.width=8,r.height=12,r.fill=i.getFor("alternativeBackground"),r.fillOpacity=.5,r.valign="middle",r.marginLeft=10,r.marginRight=10,t.separators=new S.e(r),t._disposers.push(new S.c(t.separators)),t._disposers.push(r);var a=new Et.a;return t.activeLink=a,a.copyFrom(n),a.valign="middle",a.fontWeight="bold",t.width=Object(o.c)(100),t.layout="grid",t.dataFields.name="name",t.applyTheme(),t}return r.c(t,e),t.prototype.validateDataElements=function(){this.removeChildren(),this._linksIterator.reset(),e.prototype.validateDataElements.call(this)},t.prototype.validateDataElement=function(t){var i;if(e.prototype.validateDataElement.call(this,t),t.indexthis.pixelInnerRadius-1},Object.defineProperty(t.prototype,"startAngle",{get:function(){return this.getPropertyValue("startAngle")},set:function(e){this.setPropertyValue("startAngle",e,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"endAngle",{get:function(){return this.getPropertyValue("endAngle")},set:function(e){this.setPropertyValue("endAngle",e,!0)},enumerable:!0,configurable:!0}),t.prototype.triggerMoveReal=function(t){this.xAxis&&(!this.xAxis||this.xAxis.cursorTooltipEnabled&&!this.xAxis.tooltip.disabled)||this.updateLineX(this.point),this.yAxis&&(!this.yAxis||this.yAxis.cursorTooltipEnabled&&!this.yAxis.tooltip.disabled)||this.updateLineY(this.point),this.updateSelection(),e.prototype.triggerMoveReal.call(this,t)},t.prototype.updateLineX=function(e){var t=this.pixelRadius,i=this.startAngle,n=this.endAngle,r=this.pixelInnerRadius;if(t>0&&m.isNumber(i)&&m.isNumber(n)&&m.isNumber(r)){var a=u.fitAngleToRange(u.getAngle(e),i,n),o=void 0;if(this.lineX&&this.lineX.visible){if(this.lineX.moveTo({x:0,y:0}),this.xAxis&&this.fullWidthLineX){var s=this.xAxis.currentItemStartPoint,l=this.xAxis.currentItemEndPoint;if(s&&l){var c=u.fitAngleToRange(u.getAngle(s),i,n),p=u.fitAngleToRange(u.getAngle(l),i,n)-c;i0&&(p-=360),a-=p/2,o=h.moveTo({x:r*u.cos(a),y:r*u.sin(a)})+h.lineTo({x:t*u.cos(a),y:t*u.sin(a)})+h.arcTo(a,p,t)+h.lineTo({x:r*u.cos(a+p),y:r*u.sin(a+p)})+h.arcTo(a+p,-p,r)}}o||(o=h.moveTo({x:r*u.cos(a),y:r*u.sin(a)})+h.lineTo({x:t*u.cos(a),y:t*u.sin(a)})),this.lineX.path=o}}},t.prototype.updateLineY=function(e){if(this.lineY&&this.lineY.visible){var t=this.startAngle,i=this.endAngle,n=this.truePixelRadius,r=u.fitToRange(u.getDistance(e),0,this.truePixelRadius);if(m.isNumber(r)&&m.isNumber(t)){this.lineY.moveTo({x:0,y:0});var a=void 0,o=i-t;if(this.yAxis&&this.fullWidthLineY){var s=this.yAxis.currentItemStartPoint,l=this.yAxis.currentItemEndPoint;if(s&&l){var c=u.fitToRange(u.getDistance(s),0,n);r=u.fitToRange(u.getDistance(l),0,n),a=h.moveTo({x:r*u.cos(t),y:r*u.sin(t)})+h.arcTo(t,o,r),a+=h.moveTo({x:c*u.cos(i),y:c*u.sin(i)})+h.arcTo(i,-o,c)}}a||(a=h.moveTo({x:r*u.cos(t),y:r*u.sin(t)})+h.arcTo(t,i-t,r)),this.lineY.path=a}}},t.prototype.updateSelection=function(){if(this._usesSelection){var e=this.downPoint;if(e){var t=this.point,i=this.pixelRadius,n=this.truePixelRadius,r=this.pixelInnerRadius,a=Math.min(this.startAngle,this.endAngle),o=Math.max(this.startAngle,this.endAngle),s=u.fitAngleToRange(u.getAngle(e),a,o),l=u.fitAngleToRange(u.getAngle(t),a,o),c=u.getDistance(e);if(c + * @license MIT + */ +e.exports=function(e){return null!=e&&null!=e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}},function(e,t,n){"use strict";function r(e){this.defaults=e,this.interceptors={request:new i,response:new i}}var o=n(2),s=n(6),i=n(7),a=n(8),u=n(22);r.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{},e.url=arguments[0]):e=e||{},e=u(this.defaults,e),e.method=e.method?e.method.toLowerCase():"get";var t=[a,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n},r.prototype.getUri=function(e){return e=u(this.defaults,e),s(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},o.forEach(["delete","get","head","options"],function(e){r.prototype[e]=function(t,n){return this.request(o.merge(n||{},{method:e,url:t}))}}),o.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(o.merge(r||{},{method:e,url:t,data:n}))}}),e.exports=r},function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var o=n(2);e.exports=function(e,t,n){if(!t)return e;var s;if(n)s=n(t);else if(o.isURLSearchParams(t))s=t.toString();else{var i=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)?t+="[]":e=[e],o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),i.push(r(t)+"="+r(e))}))}),s=i.join("&")}if(s){var a=e.indexOf("#");a!==-1&&(e=e.slice(0,a)),e+=(e.indexOf("?")===-1?"?":"&")+s}return e}},function(e,t,n){"use strict";function r(){this.handlers=[]}var o=n(2);r.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},r.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},r.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=r},function(e,t,n){"use strict";function r(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var o=n(2),s=n(9),i=n(10),a=n(11),u=n(20),c=n(21);e.exports=function(e){r(e),e.baseURL&&!u(e.url)&&(e.url=c(e.baseURL,e.url)),e.headers=e.headers||{},e.data=s(e.data,e.headers,e.transformRequest),e.headers=o.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),o.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=e.adapter||a.adapter;return t(e).then(function(t){return r(e),t.data=s(t.data,t.headers,e.transformResponse),t},function(t){return i(t)||(r(e),t&&t.response&&(t.response.data=s(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,t,n){"use strict";function r(e,t){!s.isUndefined(e)&&s.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function o(){var e;return"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process)?e=n(13):"undefined"!=typeof XMLHttpRequest&&(e=n(13)),e}var s=n(2),i=n(12),a={"Content-Type":"application/x-www-form-urlencoded"},u={adapter:o(),transformRequest:[function(e,t){return i(t,"Accept"),i(t,"Content-Type"),s.isFormData(e)||s.isArrayBuffer(e)||s.isBuffer(e)||s.isStream(e)||s.isFile(e)||s.isBlob(e)?e:s.isArrayBufferView(e)?e.buffer:s.isURLSearchParams(e)?(r(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):s.isObject(e)?(r(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},s.forEach(["delete","get","head"],function(e){u.headers[e]={}}),s.forEach(["post","put","patch"],function(e){u.headers[e]=s.merge(a)}),e.exports=u},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},function(e,t,n){"use strict";var r=n(2),o=n(14),s=n(6),i=n(17),a=n(18),u=n(15);e.exports=function(e){return new Promise(function(t,c){var f=e.data,p=e.headers;r.isFormData(f)&&delete p["Content-Type"];var d=new XMLHttpRequest;if(e.auth){var l=e.auth.username||"",h=e.auth.password||"";p.Authorization="Basic "+btoa(l+":"+h)}if(d.open(e.method.toUpperCase(),s(e.url,e.params,e.paramsSerializer),!0),d.timeout=e.timeout,d.onreadystatechange=function(){if(d&&4===d.readyState&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in d?i(d.getAllResponseHeaders()):null,r=e.responseType&&"text"!==e.responseType?d.response:d.responseText,s={data:r,status:d.status,statusText:d.statusText,headers:n,config:e,request:d};o(t,c,s),d=null}},d.onabort=function(){d&&(c(u("Request aborted",e,"ECONNABORTED",d)),d=null)},d.onerror=function(){c(u("Network Error",e,null,d)),d=null},d.ontimeout=function(){c(u("timeout of "+e.timeout+"ms exceeded",e,"ECONNABORTED",d)),d=null},r.isStandardBrowserEnv()){var m=n(19),y=(e.withCredentials||a(e.url))&&e.xsrfCookieName?m.read(e.xsrfCookieName):void 0;y&&(p[e.xsrfHeaderName]=y)}if("setRequestHeader"in d&&r.forEach(p,function(e,t){"undefined"==typeof f&&"content-type"===t.toLowerCase()?delete p[t]:d.setRequestHeader(t,e)}),e.withCredentials&&(d.withCredentials=!0),e.responseType)try{d.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&d.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){d&&(d.abort(),c(e),d=null)}),void 0===f&&(f=null),d.send(f)})}},function(e,t,n){"use strict";var r=n(15);e.exports=function(e,t,n){var o=n.config.validateStatus;!o||o(n.status)?e(n):t(r("Request failed with status code "+n.status,n.config,null,n.request,n))}},function(e,t,n){"use strict";var r=n(16);e.exports=function(e,t,n,o,s){var i=new Error(e);return r(i,t,n,o,s)}},function(e,t){"use strict";e.exports=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},function(e,t,n){"use strict";var r=n(2),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,s,i={};return e?(r.forEach(e.split("\n"),function(e){if(s=e.indexOf(":"),t=r.trim(e.substr(0,s)).toLowerCase(),n=r.trim(e.substr(s+1)),t){if(i[t]&&o.indexOf(t)>=0)return;"set-cookie"===t?i[t]=(i[t]?i[t]:[]).concat([n]):i[t]=i[t]?i[t]+", "+n:n}}),i):i}},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,s,i){var a=[];a.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),r.isString(o)&&a.push("path="+o),r.isString(s)&&a.push("domain="+s),i===!0&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},function(e,t){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){t=t||{};var n={};return r.forEach(["url","method","params","data"],function(e){"undefined"!=typeof t[e]&&(n[e]=t[e])}),r.forEach(["headers","auth","proxy"],function(o){r.isObject(t[o])?n[o]=r.deepMerge(e[o],t[o]):"undefined"!=typeof t[o]?n[o]=t[o]:r.isObject(e[o])?n[o]=r.deepMerge(e[o]):"undefined"!=typeof e[o]&&(n[o]=e[o])}),r.forEach(["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"],function(r){"undefined"!=typeof t[r]?n[r]=t[r]:"undefined"!=typeof e[r]&&(n[r]=e[r])}),n}},function(e,t){"use strict";function n(e){this.message=e}n.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},n.prototype.__CANCEL__=!0,e.exports=n},function(e,t,n){"use strict";function r(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new o(e),t(n.reason))})}var o=n(23);r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var e,t=new r(function(t){e=t});return{token:t,cancel:e}},e.exports=r},function(e,t){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}}])}); +//# sourceMappingURL=axios.min.map \ No newline at end of file diff --git a/static/libs/bootstrap.min.js b/static/libs/bootstrap.min.js new file mode 100644 index 0000000..6b7bc2e --- /dev/null +++ b/static/libs/bootstrap.min.js @@ -0,0 +1,473 @@ +/*! + * Bootstrap v4.4.1 (https://getbootstrap.com/) + * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +! function(t, e) { "object" == typeof exports && "undefined" != typeof module ? e(exports, require("jquery"), require("popper.js")) : "function" == typeof define && define.amd ? define(["exports", "jquery", "popper.js"], e) : e((t = t || self).bootstrap = {}, t.jQuery, t.Popper) }(this, function(t, g, u) { "use strict"; + + function i(t, e) { for (var n = 0; n < e.length; n++) { var i = e[n]; + i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i) } } + + function s(t, e, n) { return e && i(t.prototype, e), n && i(t, n), t } + + function e(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var i = Object.getOwnPropertySymbols(e); + t && (i = i.filter(function(t) { return Object.getOwnPropertyDescriptor(e, t).enumerable })), n.push.apply(n, i) } return n } + + function l(o) { for (var t = 1; t < arguments.length; t++) { var r = null != arguments[t] ? arguments[t] : {}; + t % 2 ? e(Object(r), !0).forEach(function(t) { var e, n, i; + e = o, i = r[n = t], n in e ? Object.defineProperty(e, n, { value: i, enumerable: !0, configurable: !0, writable: !0 }) : e[n] = i }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(o, Object.getOwnPropertyDescriptors(r)) : e(Object(r)).forEach(function(t) { Object.defineProperty(o, t, Object.getOwnPropertyDescriptor(r, t)) }) } return o } + g = g && g.hasOwnProperty("default") ? g.default : g, u = u && u.hasOwnProperty("default") ? u.default : u; var n = "transitionend"; + + function o(t) { var e = this, + n = !1; return g(this).one(_.TRANSITION_END, function() { n = !0 }), setTimeout(function() { n || _.triggerTransitionEnd(e) }, t), this } var _ = { TRANSITION_END: "bsTransitionEnd", getUID: function(t) { for (; t += ~~(1e6 * Math.random()), document.getElementById(t);); return t }, getSelectorFromElement: function(t) { var e = t.getAttribute("data-target"); if (!e || "#" === e) { var n = t.getAttribute("href"); + e = n && "#" !== n ? n.trim() : "" } try { return document.querySelector(e) ? e : null } catch (t) { return null } }, getTransitionDurationFromElement: function(t) { if (!t) return 0; var e = g(t).css("transition-duration"), + n = g(t).css("transition-delay"), + i = parseFloat(e), + o = parseFloat(n); return i || o ? (e = e.split(",")[0], n = n.split(",")[0], 1e3 * (parseFloat(e) + parseFloat(n))) : 0 }, reflow: function(t) { return t.offsetHeight }, triggerTransitionEnd: function(t) { g(t).trigger(n) }, supportsTransitionEnd: function() { return Boolean(n) }, isElement: function(t) { return (t[0] || t).nodeType }, typeCheckConfig: function(t, e, n) { for (var i in n) + if (Object.prototype.hasOwnProperty.call(n, i)) { var o = n[i], + r = e[i], + s = r && _.isElement(r) ? "element" : (a = r, {}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase()); if (!new RegExp(o).test(s)) throw new Error(t.toUpperCase() + ': Option "' + i + '" provided type "' + s + '" but expected type "' + o + '".') } + var a }, findShadowRoot: function(t) { if (!document.documentElement.attachShadow) return null; if ("function" != typeof t.getRootNode) return t instanceof ShadowRoot ? t : t.parentNode ? _.findShadowRoot(t.parentNode) : null; var e = t.getRootNode(); return e instanceof ShadowRoot ? e : null }, jQueryDetection: function() { if ("undefined" == typeof g) throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript."); var t = g.fn.jquery.split(" ")[0].split("."); if (t[0] < 2 && t[1] < 9 || 1 === t[0] && 9 === t[1] && t[2] < 1 || 4 <= t[0]) throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0") } }; + _.jQueryDetection(), g.fn.emulateTransitionEnd = o, g.event.special[_.TRANSITION_END] = { bindType: n, delegateType: n, handle: function(t) { if (g(t.target).is(this)) return t.handleObj.handler.apply(this, arguments) } }; var r = "alert", + a = "bs.alert", + c = "." + a, + h = g.fn[r], + f = { CLOSE: "close" + c, CLOSED: "closed" + c, CLICK_DATA_API: "click" + c + ".data-api" }, + d = "alert", + m = "fade", + p = "show", + v = function() { + function i(t) { this._element = t } var t = i.prototype; return t.close = function(t) { var e = this._element; + t && (e = this._getRootElement(t)), this._triggerCloseEvent(e).isDefaultPrevented() || this._removeElement(e) }, t.dispose = function() { g.removeData(this._element, a), this._element = null }, t._getRootElement = function(t) { var e = _.getSelectorFromElement(t), + n = !1; return e && (n = document.querySelector(e)), n = n || g(t).closest("." + d)[0] }, t._triggerCloseEvent = function(t) { var e = g.Event(f.CLOSE); return g(t).trigger(e), e }, t._removeElement = function(e) { var n = this; if (g(e).removeClass(p), g(e).hasClass(m)) { var t = _.getTransitionDurationFromElement(e); + g(e).one(_.TRANSITION_END, function(t) { return n._destroyElement(e, t) }).emulateTransitionEnd(t) } else this._destroyElement(e) }, t._destroyElement = function(t) { g(t).detach().trigger(f.CLOSED).remove() }, i._jQueryInterface = function(n) { return this.each(function() { var t = g(this), + e = t.data(a); + e || (e = new i(this), t.data(a, e)), "close" === n && e[n](this) }) }, i._handleDismiss = function(e) { return function(t) { t && t.preventDefault(), e.close(this) } }, s(i, null, [{ key: "VERSION", get: function() { return "4.4.1" } }]), i }(); + g(document).on(f.CLICK_DATA_API, '[data-dismiss="alert"]', v._handleDismiss(new v)), g.fn[r] = v._jQueryInterface, g.fn[r].Constructor = v, g.fn[r].noConflict = function() { return g.fn[r] = h, v._jQueryInterface }; var y = "button", + E = "bs.button", + C = "." + E, + T = ".data-api", + b = g.fn[y], + S = "active", + D = "btn", + I = "focus", + w = '[data-toggle^="button"]', + A = '[data-toggle="buttons"]', + N = '[data-toggle="button"]', + O = '[data-toggle="buttons"] .btn', + k = 'input:not([type="hidden"])', + P = ".active", + L = ".btn", + j = { CLICK_DATA_API: "click" + C + T, FOCUS_BLUR_DATA_API: "focus" + C + T + " blur" + C + T, LOAD_DATA_API: "load" + C + T }, + H = function() { + function n(t) { this._element = t } var t = n.prototype; return t.toggle = function() { var t = !0, + e = !0, + n = g(this._element).closest(A)[0]; if (n) { var i = this._element.querySelector(k); if (i) { if ("radio" === i.type) + if (i.checked && this._element.classList.contains(S)) t = !1; + else { var o = n.querySelector(P); + o && g(o).removeClass(S) } + else "checkbox" === i.type ? "LABEL" === this._element.tagName && i.checked === this._element.classList.contains(S) && (t = !1) : t = !1; + t && (i.checked = !this._element.classList.contains(S), g(i).trigger("change")), i.focus(), e = !1 } } + this._element.hasAttribute("disabled") || this._element.classList.contains("disabled") || (e && this._element.setAttribute("aria-pressed", !this._element.classList.contains(S)), t && g(this._element).toggleClass(S)) }, t.dispose = function() { g.removeData(this._element, E), this._element = null }, n._jQueryInterface = function(e) { return this.each(function() { var t = g(this).data(E); + t || (t = new n(this), g(this).data(E, t)), "toggle" === e && t[e]() }) }, s(n, null, [{ key: "VERSION", get: function() { return "4.4.1" } }]), n }(); + g(document).on(j.CLICK_DATA_API, w, function(t) { var e = t.target; if (g(e).hasClass(D) || (e = g(e).closest(L)[0]), !e || e.hasAttribute("disabled") || e.classList.contains("disabled")) t.preventDefault(); + else { var n = e.querySelector(k); if (n && (n.hasAttribute("disabled") || n.classList.contains("disabled"))) return void t.preventDefault(); + H._jQueryInterface.call(g(e), "toggle") } }).on(j.FOCUS_BLUR_DATA_API, w, function(t) { var e = g(t.target).closest(L)[0]; + g(e).toggleClass(I, /^focus(in)?$/.test(t.type)) }), g(window).on(j.LOAD_DATA_API, function() { for (var t = [].slice.call(document.querySelectorAll(O)), e = 0, n = t.length; e < n; e++) { var i = t[e], + o = i.querySelector(k); + o.checked || o.hasAttribute("checked") ? i.classList.add(S) : i.classList.remove(S) } for (var r = 0, s = (t = [].slice.call(document.querySelectorAll(N))).length; r < s; r++) { var a = t[r]; "true" === a.getAttribute("aria-pressed") ? a.classList.add(S) : a.classList.remove(S) } }), g.fn[y] = H._jQueryInterface, g.fn[y].Constructor = H, g.fn[y].noConflict = function() { return g.fn[y] = b, H._jQueryInterface }; var R = "carousel", + x = "bs.carousel", + F = "." + x, + U = ".data-api", + W = g.fn[R], + q = { interval: 5e3, keyboard: !0, slide: !1, pause: "hover", wrap: !0, touch: !0 }, + M = { interval: "(number|boolean)", keyboard: "boolean", slide: "(boolean|string)", pause: "(string|boolean)", wrap: "boolean", touch: "boolean" }, + K = "next", + Q = "prev", + B = "left", + V = "right", + Y = { SLIDE: "slide" + F, SLID: "slid" + F, KEYDOWN: "keydown" + F, MOUSEENTER: "mouseenter" + F, MOUSELEAVE: "mouseleave" + F, TOUCHSTART: "touchstart" + F, TOUCHMOVE: "touchmove" + F, TOUCHEND: "touchend" + F, POINTERDOWN: "pointerdown" + F, POINTERUP: "pointerup" + F, DRAG_START: "dragstart" + F, LOAD_DATA_API: "load" + F + U, CLICK_DATA_API: "click" + F + U }, + z = "carousel", + X = "active", + $ = "slide", + G = "carousel-item-right", + J = "carousel-item-left", + Z = "carousel-item-next", + tt = "carousel-item-prev", + et = "pointer-event", + nt = ".active", + it = ".active.carousel-item", + ot = ".carousel-item", + rt = ".carousel-item img", + st = ".carousel-item-next, .carousel-item-prev", + at = ".carousel-indicators", + lt = "[data-slide], [data-slide-to]", + ct = '[data-ride="carousel"]', + ht = { TOUCH: "touch", PEN: "pen" }, + ut = function() { + function r(t, e) { this._items = null, this._interval = null, this._activeElement = null, this._isPaused = !1, this._isSliding = !1, this.touchTimeout = null, this.touchStartX = 0, this.touchDeltaX = 0, this._config = this._getConfig(e), this._element = t, this._indicatorsElement = this._element.querySelector(at), this._touchSupported = "ontouchstart" in document.documentElement || 0 < navigator.maxTouchPoints, this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent), this._addEventListeners() } var t = r.prototype; return t.next = function() { this._isSliding || this._slide(K) }, t.nextWhenVisible = function() {!document.hidden && g(this._element).is(":visible") && "hidden" !== g(this._element).css("visibility") && this.next() }, t.prev = function() { this._isSliding || this._slide(Q) }, t.pause = function(t) { t || (this._isPaused = !0), this._element.querySelector(st) && (_.triggerTransitionEnd(this._element), this.cycle(!0)), clearInterval(this._interval), this._interval = null }, t.cycle = function(t) { t || (this._isPaused = !1), this._interval && (clearInterval(this._interval), this._interval = null), this._config.interval && !this._isPaused && (this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval)) }, t.to = function(t) { var e = this; + this._activeElement = this._element.querySelector(it); var n = this._getItemIndex(this._activeElement); if (!(t > this._items.length - 1 || t < 0)) + if (this._isSliding) g(this._element).one(Y.SLID, function() { return e.to(t) }); + else { if (n === t) return this.pause(), void this.cycle(); var i = n < t ? K : Q; + this._slide(i, this._items[t]) } }, t.dispose = function() { g(this._element).off(F), g.removeData(this._element, x), this._items = null, this._config = null, this._element = null, this._interval = null, this._isPaused = null, this._isSliding = null, this._activeElement = null, this._indicatorsElement = null }, t._getConfig = function(t) { return t = l({}, q, {}, t), _.typeCheckConfig(R, t, M), t }, t._handleSwipe = function() { var t = Math.abs(this.touchDeltaX); if (!(t <= 40)) { var e = t / this.touchDeltaX; + (this.touchDeltaX = 0) < e && this.prev(), e < 0 && this.next() } }, t._addEventListeners = function() { var e = this; + this._config.keyboard && g(this._element).on(Y.KEYDOWN, function(t) { return e._keydown(t) }), "hover" === this._config.pause && g(this._element).on(Y.MOUSEENTER, function(t) { return e.pause(t) }).on(Y.MOUSELEAVE, function(t) { return e.cycle(t) }), this._config.touch && this._addTouchEventListeners() }, t._addTouchEventListeners = function() { var e = this; if (this._touchSupported) { var n = function(t) { e._pointerEvent && ht[t.originalEvent.pointerType.toUpperCase()] ? e.touchStartX = t.originalEvent.clientX : e._pointerEvent || (e.touchStartX = t.originalEvent.touches[0].clientX) }, + i = function(t) { e._pointerEvent && ht[t.originalEvent.pointerType.toUpperCase()] && (e.touchDeltaX = t.originalEvent.clientX - e.touchStartX), e._handleSwipe(), "hover" === e._config.pause && (e.pause(), e.touchTimeout && clearTimeout(e.touchTimeout), e.touchTimeout = setTimeout(function(t) { return e.cycle(t) }, 500 + e._config.interval)) }; + g(this._element.querySelectorAll(rt)).on(Y.DRAG_START, function(t) { return t.preventDefault() }), this._pointerEvent ? (g(this._element).on(Y.POINTERDOWN, function(t) { return n(t) }), g(this._element).on(Y.POINTERUP, function(t) { return i(t) }), this._element.classList.add(et)) : (g(this._element).on(Y.TOUCHSTART, function(t) { return n(t) }), g(this._element).on(Y.TOUCHMOVE, function(t) { return function(t) { t.originalEvent.touches && 1 < t.originalEvent.touches.length ? e.touchDeltaX = 0 : e.touchDeltaX = t.originalEvent.touches[0].clientX - e.touchStartX }(t) }), g(this._element).on(Y.TOUCHEND, function(t) { return i(t) })) } }, t._keydown = function(t) { if (!/input|textarea/i.test(t.target.tagName)) switch (t.which) { + case 37: + t.preventDefault(), this.prev(); break; + case 39: + t.preventDefault(), this.next() } }, t._getItemIndex = function(t) { return this._items = t && t.parentNode ? [].slice.call(t.parentNode.querySelectorAll(ot)) : [], this._items.indexOf(t) }, t._getItemByDirection = function(t, e) { var n = t === K, + i = t === Q, + o = this._getItemIndex(e), + r = this._items.length - 1; if ((i && 0 === o || n && o === r) && !this._config.wrap) return e; var s = (o + (t === Q ? -1 : 1)) % this._items.length; return -1 == s ? this._items[this._items.length - 1] : this._items[s] }, t._triggerSlideEvent = function(t, e) { var n = this._getItemIndex(t), + i = this._getItemIndex(this._element.querySelector(it)), + o = g.Event(Y.SLIDE, { relatedTarget: t, direction: e, from: i, to: n }); return g(this._element).trigger(o), o }, t._setActiveIndicatorElement = function(t) { if (this._indicatorsElement) { var e = [].slice.call(this._indicatorsElement.querySelectorAll(nt)); + g(e).removeClass(X); var n = this._indicatorsElement.children[this._getItemIndex(t)]; + n && g(n).addClass(X) } }, t._slide = function(t, e) { var n, i, o, r = this, + s = this._element.querySelector(it), + a = this._getItemIndex(s), + l = e || s && this._getItemByDirection(t, s), + c = this._getItemIndex(l), + h = Boolean(this._interval); if (o = t === K ? (n = J, i = Z, B) : (n = G, i = tt, V), l && g(l).hasClass(X)) this._isSliding = !1; + else if (!this._triggerSlideEvent(l, o).isDefaultPrevented() && s && l) { this._isSliding = !0, h && this.pause(), this._setActiveIndicatorElement(l); var u = g.Event(Y.SLID, { relatedTarget: l, direction: o, from: a, to: c }); if (g(this._element).hasClass($)) { g(l).addClass(i), _.reflow(l), g(s).addClass(n), g(l).addClass(n); var f = parseInt(l.getAttribute("data-interval"), 10); + f ? (this._config.defaultInterval = this._config.defaultInterval || this._config.interval, this._config.interval = f) : this._config.interval = this._config.defaultInterval || this._config.interval; var d = _.getTransitionDurationFromElement(s); + g(s).one(_.TRANSITION_END, function() { g(l).removeClass(n + " " + i).addClass(X), g(s).removeClass(X + " " + i + " " + n), r._isSliding = !1, setTimeout(function() { return g(r._element).trigger(u) }, 0) }).emulateTransitionEnd(d) } else g(s).removeClass(X), g(l).addClass(X), this._isSliding = !1, g(this._element).trigger(u); + h && this.cycle() } }, r._jQueryInterface = function(i) { return this.each(function() { var t = g(this).data(x), + e = l({}, q, {}, g(this).data()); "object" == typeof i && (e = l({}, e, {}, i)); var n = "string" == typeof i ? i : e.slide; if (t || (t = new r(this, e), g(this).data(x, t)), "number" == typeof i) t.to(i); + else if ("string" == typeof n) { if ("undefined" == typeof t[n]) throw new TypeError('No method named "' + n + '"'); + t[n]() } else e.interval && e.ride && (t.pause(), t.cycle()) }) }, r._dataApiClickHandler = function(t) { var e = _.getSelectorFromElement(this); if (e) { var n = g(e)[0]; if (n && g(n).hasClass(z)) { var i = l({}, g(n).data(), {}, g(this).data()), + o = this.getAttribute("data-slide-to"); + o && (i.interval = !1), r._jQueryInterface.call(g(n), i), o && g(n).data(x).to(o), t.preventDefault() } } }, s(r, null, [{ key: "VERSION", get: function() { return "4.4.1" } }, { key: "Default", get: function() { return q } }]), r }(); + g(document).on(Y.CLICK_DATA_API, lt, ut._dataApiClickHandler), g(window).on(Y.LOAD_DATA_API, function() { for (var t = [].slice.call(document.querySelectorAll(ct)), e = 0, n = t.length; e < n; e++) { var i = g(t[e]); + ut._jQueryInterface.call(i, i.data()) } }), g.fn[R] = ut._jQueryInterface, g.fn[R].Constructor = ut, g.fn[R].noConflict = function() { return g.fn[R] = W, ut._jQueryInterface }; var ft = "collapse", + dt = "bs.collapse", + gt = "." + dt, + _t = g.fn[ft], + mt = { toggle: !0, parent: "" }, + pt = { toggle: "boolean", parent: "(string|element)" }, + vt = { SHOW: "show" + gt, SHOWN: "shown" + gt, HIDE: "hide" + gt, HIDDEN: "hidden" + gt, CLICK_DATA_API: "click" + gt + ".data-api" }, + yt = "show", + Et = "collapse", + Ct = "collapsing", + Tt = "collapsed", + bt = "width", + St = "height", + Dt = ".show, .collapsing", + It = '[data-toggle="collapse"]', + wt = function() { + function a(e, t) { this._isTransitioning = !1, this._element = e, this._config = this._getConfig(t), this._triggerArray = [].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#' + e.id + '"],[data-toggle="collapse"][data-target="#' + e.id + '"]')); for (var n = [].slice.call(document.querySelectorAll(It)), i = 0, o = n.length; i < o; i++) { var r = n[i], + s = _.getSelectorFromElement(r), + a = [].slice.call(document.querySelectorAll(s)).filter(function(t) { return t === e }); + null !== s && 0 < a.length && (this._selector = s, this._triggerArray.push(r)) } + this._parent = this._config.parent ? this._getParent() : null, this._config.parent || this._addAriaAndCollapsedClass(this._element, this._triggerArray), this._config.toggle && this.toggle() } var t = a.prototype; return t.toggle = function() { g(this._element).hasClass(yt) ? this.hide() : this.show() }, t.show = function() { var t, e, n = this; if (!this._isTransitioning && !g(this._element).hasClass(yt) && (this._parent && 0 === (t = [].slice.call(this._parent.querySelectorAll(Dt)).filter(function(t) { return "string" == typeof n._config.parent ? t.getAttribute("data-parent") === n._config.parent : t.classList.contains(Et) })).length && (t = null), !(t && (e = g(t).not(this._selector).data(dt)) && e._isTransitioning))) { var i = g.Event(vt.SHOW); if (g(this._element).trigger(i), !i.isDefaultPrevented()) { t && (a._jQueryInterface.call(g(t).not(this._selector), "hide"), e || g(t).data(dt, null)); var o = this._getDimension(); + g(this._element).removeClass(Et).addClass(Ct), this._element.style[o] = 0, this._triggerArray.length && g(this._triggerArray).removeClass(Tt).attr("aria-expanded", !0), this.setTransitioning(!0); var r = "scroll" + (o[0].toUpperCase() + o.slice(1)), + s = _.getTransitionDurationFromElement(this._element); + g(this._element).one(_.TRANSITION_END, function() { g(n._element).removeClass(Ct).addClass(Et).addClass(yt), n._element.style[o] = "", n.setTransitioning(!1), g(n._element).trigger(vt.SHOWN) }).emulateTransitionEnd(s), this._element.style[o] = this._element[r] + "px" } } }, t.hide = function() { var t = this; if (!this._isTransitioning && g(this._element).hasClass(yt)) { var e = g.Event(vt.HIDE); if (g(this._element).trigger(e), !e.isDefaultPrevented()) { var n = this._getDimension(); + this._element.style[n] = this._element.getBoundingClientRect()[n] + "px", _.reflow(this._element), g(this._element).addClass(Ct).removeClass(Et).removeClass(yt); var i = this._triggerArray.length; if (0 < i) + for (var o = 0; o < i; o++) { var r = this._triggerArray[o], + s = _.getSelectorFromElement(r); if (null !== s) g([].slice.call(document.querySelectorAll(s))).hasClass(yt) || g(r).addClass(Tt).attr("aria-expanded", !1) } + this.setTransitioning(!0); + this._element.style[n] = ""; var a = _.getTransitionDurationFromElement(this._element); + g(this._element).one(_.TRANSITION_END, function() { t.setTransitioning(!1), g(t._element).removeClass(Ct).addClass(Et).trigger(vt.HIDDEN) }).emulateTransitionEnd(a) } } }, t.setTransitioning = function(t) { this._isTransitioning = t }, t.dispose = function() { g.removeData(this._element, dt), this._config = null, this._parent = null, this._element = null, this._triggerArray = null, this._isTransitioning = null }, t._getConfig = function(t) { return (t = l({}, mt, {}, t)).toggle = Boolean(t.toggle), _.typeCheckConfig(ft, t, pt), t }, t._getDimension = function() { return g(this._element).hasClass(bt) ? bt : St }, t._getParent = function() { var t, n = this; + _.isElement(this._config.parent) ? (t = this._config.parent, "undefined" != typeof this._config.parent.jquery && (t = this._config.parent[0])) : t = document.querySelector(this._config.parent); var e = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]', + i = [].slice.call(t.querySelectorAll(e)); return g(i).each(function(t, e) { n._addAriaAndCollapsedClass(a._getTargetFromElement(e), [e]) }), t }, t._addAriaAndCollapsedClass = function(t, e) { var n = g(t).hasClass(yt); + e.length && g(e).toggleClass(Tt, !n).attr("aria-expanded", n) }, a._getTargetFromElement = function(t) { var e = _.getSelectorFromElement(t); return e ? document.querySelector(e) : null }, a._jQueryInterface = function(i) { return this.each(function() { var t = g(this), + e = t.data(dt), + n = l({}, mt, {}, t.data(), {}, "object" == typeof i && i ? i : {}); if (!e && n.toggle && /show|hide/.test(i) && (n.toggle = !1), e || (e = new a(this, n), t.data(dt, e)), "string" == typeof i) { if ("undefined" == typeof e[i]) throw new TypeError('No method named "' + i + '"'); + e[i]() } }) }, s(a, null, [{ key: "VERSION", get: function() { return "4.4.1" } }, { key: "Default", get: function() { return mt } }]), a }(); + g(document).on(vt.CLICK_DATA_API, It, function(t) { "A" === t.currentTarget.tagName && t.preventDefault(); var n = g(this), + e = _.getSelectorFromElement(this), + i = [].slice.call(document.querySelectorAll(e)); + g(i).each(function() { var t = g(this), + e = t.data(dt) ? "toggle" : n.data(); + wt._jQueryInterface.call(t, e) }) }), g.fn[ft] = wt._jQueryInterface, g.fn[ft].Constructor = wt, g.fn[ft].noConflict = function() { return g.fn[ft] = _t, wt._jQueryInterface }; var At = "dropdown", + Nt = "bs.dropdown", + Ot = "." + Nt, + kt = ".data-api", + Pt = g.fn[At], + Lt = new RegExp("38|40|27"), + jt = { HIDE: "hide" + Ot, HIDDEN: "hidden" + Ot, SHOW: "show" + Ot, SHOWN: "shown" + Ot, CLICK: "click" + Ot, CLICK_DATA_API: "click" + Ot + kt, KEYDOWN_DATA_API: "keydown" + Ot + kt, KEYUP_DATA_API: "keyup" + Ot + kt }, + Ht = "disabled", + Rt = "show", + xt = "dropup", + Ft = "dropright", + Ut = "dropleft", + Wt = "dropdown-menu-right", + qt = "position-static", + Mt = '[data-toggle="dropdown"]', + Kt = ".dropdown form", + Qt = ".dropdown-menu", + Bt = ".navbar-nav", + Vt = ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)", + Yt = "top-start", + zt = "top-end", + Xt = "bottom-start", + $t = "bottom-end", + Gt = "right-start", + Jt = "left-start", + Zt = { offset: 0, flip: !0, boundary: "scrollParent", reference: "toggle", display: "dynamic", popperConfig: null }, + te = { offset: "(number|string|function)", flip: "boolean", boundary: "(string|element)", reference: "(string|element)", display: "string", popperConfig: "(null|object)" }, + ee = function() { + function c(t, e) { this._element = t, this._popper = null, this._config = this._getConfig(e), this._menu = this._getMenuElement(), this._inNavbar = this._detectNavbar(), this._addEventListeners() } var t = c.prototype; return t.toggle = function() { if (!this._element.disabled && !g(this._element).hasClass(Ht)) { var t = g(this._menu).hasClass(Rt); + c._clearMenus(), t || this.show(!0) } }, t.show = function(t) { if (void 0 === t && (t = !1), !(this._element.disabled || g(this._element).hasClass(Ht) || g(this._menu).hasClass(Rt))) { var e = { relatedTarget: this._element }, + n = g.Event(jt.SHOW, e), + i = c._getParentFromElement(this._element); if (g(i).trigger(n), !n.isDefaultPrevented()) { if (!this._inNavbar && t) { if ("undefined" == typeof u) throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)"); var o = this._element; "parent" === this._config.reference ? o = i : _.isElement(this._config.reference) && (o = this._config.reference, "undefined" != typeof this._config.reference.jquery && (o = this._config.reference[0])), "scrollParent" !== this._config.boundary && g(i).addClass(qt), this._popper = new u(o, this._menu, this._getPopperConfig()) } "ontouchstart" in document.documentElement && 0 === g(i).closest(Bt).length && g(document.body).children().on("mouseover", null, g.noop), this._element.focus(), this._element.setAttribute("aria-expanded", !0), g(this._menu).toggleClass(Rt), g(i).toggleClass(Rt).trigger(g.Event(jt.SHOWN, e)) } } }, t.hide = function() { if (!this._element.disabled && !g(this._element).hasClass(Ht) && g(this._menu).hasClass(Rt)) { var t = { relatedTarget: this._element }, + e = g.Event(jt.HIDE, t), + n = c._getParentFromElement(this._element); + g(n).trigger(e), e.isDefaultPrevented() || (this._popper && this._popper.destroy(), g(this._menu).toggleClass(Rt), g(n).toggleClass(Rt).trigger(g.Event(jt.HIDDEN, t))) } }, t.dispose = function() { g.removeData(this._element, Nt), g(this._element).off(Ot), this._element = null, (this._menu = null) !== this._popper && (this._popper.destroy(), this._popper = null) }, t.update = function() { this._inNavbar = this._detectNavbar(), null !== this._popper && this._popper.scheduleUpdate() }, t._addEventListeners = function() { var e = this; + g(this._element).on(jt.CLICK, function(t) { t.preventDefault(), t.stopPropagation(), e.toggle() }) }, t._getConfig = function(t) { return t = l({}, this.constructor.Default, {}, g(this._element).data(), {}, t), _.typeCheckConfig(At, t, this.constructor.DefaultType), t }, t._getMenuElement = function() { if (!this._menu) { var t = c._getParentFromElement(this._element); + t && (this._menu = t.querySelector(Qt)) } return this._menu }, t._getPlacement = function() { var t = g(this._element.parentNode), + e = Xt; return t.hasClass(xt) ? (e = Yt, g(this._menu).hasClass(Wt) && (e = zt)) : t.hasClass(Ft) ? e = Gt : t.hasClass(Ut) ? e = Jt : g(this._menu).hasClass(Wt) && (e = $t), e }, t._detectNavbar = function() { return 0 < g(this._element).closest(".navbar").length }, t._getOffset = function() { var e = this, + t = {}; return "function" == typeof this._config.offset ? t.fn = function(t) { return t.offsets = l({}, t.offsets, {}, e._config.offset(t.offsets, e._element) || {}), t } : t.offset = this._config.offset, t }, t._getPopperConfig = function() { var t = { placement: this._getPlacement(), modifiers: { offset: this._getOffset(), flip: { enabled: this._config.flip }, preventOverflow: { boundariesElement: this._config.boundary } } }; return "static" === this._config.display && (t.modifiers.applyStyle = { enabled: !1 }), l({}, t, {}, this._config.popperConfig) }, c._jQueryInterface = function(e) { return this.each(function() { var t = g(this).data(Nt); if (t || (t = new c(this, "object" == typeof e ? e : null), g(this).data(Nt, t)), "string" == typeof e) { if ("undefined" == typeof t[e]) throw new TypeError('No method named "' + e + '"'); + t[e]() } }) }, c._clearMenus = function(t) { if (!t || 3 !== t.which && ("keyup" !== t.type || 9 === t.which)) + for (var e = [].slice.call(document.querySelectorAll(Mt)), n = 0, i = e.length; n < i; n++) { var o = c._getParentFromElement(e[n]), + r = g(e[n]).data(Nt), + s = { relatedTarget: e[n] }; if (t && "click" === t.type && (s.clickEvent = t), r) { var a = r._menu; if (g(o).hasClass(Rt) && !(t && ("click" === t.type && /input|textarea/i.test(t.target.tagName) || "keyup" === t.type && 9 === t.which) && g.contains(o, t.target))) { var l = g.Event(jt.HIDE, s); + g(o).trigger(l), l.isDefaultPrevented() || ("ontouchstart" in document.documentElement && g(document.body).children().off("mouseover", null, g.noop), e[n].setAttribute("aria-expanded", "false"), r._popper && r._popper.destroy(), g(a).removeClass(Rt), g(o).removeClass(Rt).trigger(g.Event(jt.HIDDEN, s))) } } } }, c._getParentFromElement = function(t) { var e, n = _.getSelectorFromElement(t); return n && (e = document.querySelector(n)), e || t.parentNode }, c._dataApiKeydownHandler = function(t) { if ((/input|textarea/i.test(t.target.tagName) ? !(32 === t.which || 27 !== t.which && (40 !== t.which && 38 !== t.which || g(t.target).closest(Qt).length)) : Lt.test(t.which)) && (t.preventDefault(), t.stopPropagation(), !this.disabled && !g(this).hasClass(Ht))) { var e = c._getParentFromElement(this), + n = g(e).hasClass(Rt); if (n || 27 !== t.which) + if (n && (!n || 27 !== t.which && 32 !== t.which)) { var i = [].slice.call(e.querySelectorAll(Vt)).filter(function(t) { return g(t).is(":visible") }); if (0 !== i.length) { var o = i.indexOf(t.target); + 38 === t.which && 0 < o && o--, 40 === t.which && o < i.length - 1 && o++, o < 0 && (o = 0), i[o].focus() } } else { if (27 === t.which) { var r = e.querySelector(Mt); + g(r).trigger("focus") } + g(this).trigger("click") } } }, s(c, null, [{ key: "VERSION", get: function() { return "4.4.1" } }, { key: "Default", get: function() { return Zt } }, { key: "DefaultType", get: function() { return te } }]), c }(); + g(document).on(jt.KEYDOWN_DATA_API, Mt, ee._dataApiKeydownHandler).on(jt.KEYDOWN_DATA_API, Qt, ee._dataApiKeydownHandler).on(jt.CLICK_DATA_API + " " + jt.KEYUP_DATA_API, ee._clearMenus).on(jt.CLICK_DATA_API, Mt, function(t) { t.preventDefault(), t.stopPropagation(), ee._jQueryInterface.call(g(this), "toggle") }).on(jt.CLICK_DATA_API, Kt, function(t) { t.stopPropagation() }), g.fn[At] = ee._jQueryInterface, g.fn[At].Constructor = ee, g.fn[At].noConflict = function() { return g.fn[At] = Pt, ee._jQueryInterface }; var ne = "modal", + ie = "bs.modal", + oe = "." + ie, + re = g.fn[ne], + se = { backdrop: !0, keyboard: !0, focus: !0, show: !0 }, + ae = { backdrop: "(boolean|string)", keyboard: "boolean", focus: "boolean", show: "boolean" }, + le = { HIDE: "hide" + oe, HIDE_PREVENTED: "hidePrevented" + oe, HIDDEN: "hidden" + oe, SHOW: "show" + oe, SHOWN: "shown" + oe, FOCUSIN: "focusin" + oe, RESIZE: "resize" + oe, CLICK_DISMISS: "click.dismiss" + oe, KEYDOWN_DISMISS: "keydown.dismiss" + oe, MOUSEUP_DISMISS: "mouseup.dismiss" + oe, MOUSEDOWN_DISMISS: "mousedown.dismiss" + oe, CLICK_DATA_API: "click" + oe + ".data-api" }, + ce = "modal-dialog-scrollable", + he = "modal-scrollbar-measure", + ue = "modal-backdrop", + fe = "modal-open", + de = "fade", + ge = "show", + _e = "modal-static", + me = ".modal-dialog", + pe = ".modal-body", + ve = '[data-toggle="modal"]', + ye = '[data-dismiss="modal"]', + Ee = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top", + Ce = ".sticky-top", + Te = function() { + function o(t, e) { this._config = this._getConfig(e), this._element = t, this._dialog = t.querySelector(me), this._backdrop = null, this._isShown = !1, this._isBodyOverflowing = !1, this._ignoreBackdropClick = !1, this._isTransitioning = !1, this._scrollbarWidth = 0 } var t = o.prototype; return t.toggle = function(t) { return this._isShown ? this.hide() : this.show(t) }, t.show = function(t) { var e = this; if (!this._isShown && !this._isTransitioning) { g(this._element).hasClass(de) && (this._isTransitioning = !0); var n = g.Event(le.SHOW, { relatedTarget: t }); + g(this._element).trigger(n), this._isShown || n.isDefaultPrevented() || (this._isShown = !0, this._checkScrollbar(), this._setScrollbar(), this._adjustDialog(), this._setEscapeEvent(), this._setResizeEvent(), g(this._element).on(le.CLICK_DISMISS, ye, function(t) { return e.hide(t) }), g(this._dialog).on(le.MOUSEDOWN_DISMISS, function() { g(e._element).one(le.MOUSEUP_DISMISS, function(t) { g(t.target).is(e._element) && (e._ignoreBackdropClick = !0) }) }), this._showBackdrop(function() { return e._showElement(t) })) } }, t.hide = function(t) { var e = this; if (t && t.preventDefault(), this._isShown && !this._isTransitioning) { var n = g.Event(le.HIDE); if (g(this._element).trigger(n), this._isShown && !n.isDefaultPrevented()) { this._isShown = !1; var i = g(this._element).hasClass(de); if (i && (this._isTransitioning = !0), this._setEscapeEvent(), this._setResizeEvent(), g(document).off(le.FOCUSIN), g(this._element).removeClass(ge), g(this._element).off(le.CLICK_DISMISS), g(this._dialog).off(le.MOUSEDOWN_DISMISS), i) { var o = _.getTransitionDurationFromElement(this._element); + g(this._element).one(_.TRANSITION_END, function(t) { return e._hideModal(t) }).emulateTransitionEnd(o) } else this._hideModal() } } }, t.dispose = function() { + [window, this._element, this._dialog].forEach(function(t) { return g(t).off(oe) }), g(document).off(le.FOCUSIN), g.removeData(this._element, ie), this._config = null, this._element = null, this._dialog = null, this._backdrop = null, this._isShown = null, this._isBodyOverflowing = null, this._ignoreBackdropClick = null, this._isTransitioning = null, this._scrollbarWidth = null }, t.handleUpdate = function() { this._adjustDialog() }, t._getConfig = function(t) { return t = l({}, se, {}, t), _.typeCheckConfig(ne, t, ae), t }, t._triggerBackdropTransition = function() { var t = this; if ("static" === this._config.backdrop) { var e = g.Event(le.HIDE_PREVENTED); if (g(this._element).trigger(e), e.defaultPrevented) return; + this._element.classList.add(_e); var n = _.getTransitionDurationFromElement(this._element); + g(this._element).one(_.TRANSITION_END, function() { t._element.classList.remove(_e) }).emulateTransitionEnd(n), this._element.focus() } else this.hide() }, t._showElement = function(t) { var e = this, + n = g(this._element).hasClass(de), + i = this._dialog ? this._dialog.querySelector(pe) : null; + this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE || document.body.appendChild(this._element), this._element.style.display = "block", this._element.removeAttribute("aria-hidden"), this._element.setAttribute("aria-modal", !0), g(this._dialog).hasClass(ce) && i ? i.scrollTop = 0 : this._element.scrollTop = 0, n && _.reflow(this._element), g(this._element).addClass(ge), this._config.focus && this._enforceFocus(); + + function o() { e._config.focus && e._element.focus(), e._isTransitioning = !1, g(e._element).trigger(r) } var r = g.Event(le.SHOWN, { relatedTarget: t }); if (n) { var s = _.getTransitionDurationFromElement(this._dialog); + g(this._dialog).one(_.TRANSITION_END, o).emulateTransitionEnd(s) } else o() }, t._enforceFocus = function() { var e = this; + g(document).off(le.FOCUSIN).on(le.FOCUSIN, function(t) { document !== t.target && e._element !== t.target && 0 === g(e._element).has(t.target).length && e._element.focus() }) }, t._setEscapeEvent = function() { var e = this; + this._isShown && this._config.keyboard ? g(this._element).on(le.KEYDOWN_DISMISS, function(t) { 27 === t.which && e._triggerBackdropTransition() }) : this._isShown || g(this._element).off(le.KEYDOWN_DISMISS) }, t._setResizeEvent = function() { var e = this; + this._isShown ? g(window).on(le.RESIZE, function(t) { return e.handleUpdate(t) }) : g(window).off(le.RESIZE) }, t._hideModal = function() { var t = this; + this._element.style.display = "none", this._element.setAttribute("aria-hidden", !0), this._element.removeAttribute("aria-modal"), this._isTransitioning = !1, this._showBackdrop(function() { g(document.body).removeClass(fe), t._resetAdjustments(), t._resetScrollbar(), g(t._element).trigger(le.HIDDEN) }) }, t._removeBackdrop = function() { this._backdrop && (g(this._backdrop).remove(), this._backdrop = null) }, t._showBackdrop = function(t) { var e = this, + n = g(this._element).hasClass(de) ? de : ""; if (this._isShown && this._config.backdrop) { if (this._backdrop = document.createElement("div"), this._backdrop.className = ue, n && this._backdrop.classList.add(n), g(this._backdrop).appendTo(document.body), g(this._element).on(le.CLICK_DISMISS, function(t) { e._ignoreBackdropClick ? e._ignoreBackdropClick = !1 : t.target === t.currentTarget && e._triggerBackdropTransition() }), n && _.reflow(this._backdrop), g(this._backdrop).addClass(ge), !t) return; if (!n) return void t(); var i = _.getTransitionDurationFromElement(this._backdrop); + g(this._backdrop).one(_.TRANSITION_END, t).emulateTransitionEnd(i) } else if (!this._isShown && this._backdrop) { g(this._backdrop).removeClass(ge); var o = function() { e._removeBackdrop(), t && t() }; if (g(this._element).hasClass(de)) { var r = _.getTransitionDurationFromElement(this._backdrop); + g(this._backdrop).one(_.TRANSITION_END, o).emulateTransitionEnd(r) } else o() } else t && t() }, t._adjustDialog = function() { var t = this._element.scrollHeight > document.documentElement.clientHeight;!this._isBodyOverflowing && t && (this._element.style.paddingLeft = this._scrollbarWidth + "px"), this._isBodyOverflowing && !t && (this._element.style.paddingRight = this._scrollbarWidth + "px") }, t._resetAdjustments = function() { this._element.style.paddingLeft = "", this._element.style.paddingRight = "" }, t._checkScrollbar = function() { var t = document.body.getBoundingClientRect(); + this._isBodyOverflowing = t.left + t.right < window.innerWidth, this._scrollbarWidth = this._getScrollbarWidth() }, t._setScrollbar = function() { var o = this; if (this._isBodyOverflowing) { var t = [].slice.call(document.querySelectorAll(Ee)), + e = [].slice.call(document.querySelectorAll(Ce)); + g(t).each(function(t, e) { var n = e.style.paddingRight, + i = g(e).css("padding-right"); + g(e).data("padding-right", n).css("padding-right", parseFloat(i) + o._scrollbarWidth + "px") }), g(e).each(function(t, e) { var n = e.style.marginRight, + i = g(e).css("margin-right"); + g(e).data("margin-right", n).css("margin-right", parseFloat(i) - o._scrollbarWidth + "px") }); var n = document.body.style.paddingRight, + i = g(document.body).css("padding-right"); + g(document.body).data("padding-right", n).css("padding-right", parseFloat(i) + this._scrollbarWidth + "px") } + g(document.body).addClass(fe) }, t._resetScrollbar = function() { var t = [].slice.call(document.querySelectorAll(Ee)); + g(t).each(function(t, e) { var n = g(e).data("padding-right"); + g(e).removeData("padding-right"), e.style.paddingRight = n || "" }); var e = [].slice.call(document.querySelectorAll("" + Ce)); + g(e).each(function(t, e) { var n = g(e).data("margin-right"); "undefined" != typeof n && g(e).css("margin-right", n).removeData("margin-right") }); var n = g(document.body).data("padding-right"); + g(document.body).removeData("padding-right"), document.body.style.paddingRight = n || "" }, t._getScrollbarWidth = function() { var t = document.createElement("div"); + t.className = he, document.body.appendChild(t); var e = t.getBoundingClientRect().width - t.clientWidth; return document.body.removeChild(t), e }, o._jQueryInterface = function(n, i) { return this.each(function() { var t = g(this).data(ie), + e = l({}, se, {}, g(this).data(), {}, "object" == typeof n && n ? n : {}); if (t || (t = new o(this, e), g(this).data(ie, t)), "string" == typeof n) { if ("undefined" == typeof t[n]) throw new TypeError('No method named "' + n + '"'); + t[n](i) } else e.show && t.show(i) }) }, s(o, null, [{ key: "VERSION", get: function() { return "4.4.1" } }, { key: "Default", get: function() { return se } }]), o }(); + g(document).on(le.CLICK_DATA_API, ve, function(t) { var e, n = this, + i = _.getSelectorFromElement(this); + i && (e = document.querySelector(i)); var o = g(e).data(ie) ? "toggle" : l({}, g(e).data(), {}, g(this).data()); "A" !== this.tagName && "AREA" !== this.tagName || t.preventDefault(); var r = g(e).one(le.SHOW, function(t) { t.isDefaultPrevented() || r.one(le.HIDDEN, function() { g(n).is(":visible") && n.focus() }) }); + Te._jQueryInterface.call(g(e), o, this) }), g.fn[ne] = Te._jQueryInterface, g.fn[ne].Constructor = Te, g.fn[ne].noConflict = function() { return g.fn[ne] = re, Te._jQueryInterface }; var be = ["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"], + Se = { "*": ["class", "dir", "id", "lang", "role", /^aria-[\w-]*$/i], a: ["target", "href", "title", "rel"], area: [], b: [], br: [], col: [], code: [], div: [], em: [], hr: [], h1: [], h2: [], h3: [], h4: [], h5: [], h6: [], i: [], img: ["src", "alt", "title", "width", "height"], li: [], ol: [], p: [], pre: [], s: [], small: [], span: [], sub: [], sup: [], strong: [], u: [], ul: [] }, + De = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi, + Ie = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i; + + function we(t, r, e) { if (0 === t.length) return t; if (e && "function" == typeof e) return e(t); for (var n = (new window.DOMParser).parseFromString(t, "text/html"), s = Object.keys(r), a = [].slice.call(n.body.querySelectorAll("*")), i = function(t) { var e = a[t], + n = e.nodeName.toLowerCase(); if (-1 === s.indexOf(e.nodeName.toLowerCase())) return e.parentNode.removeChild(e), "continue"; var i = [].slice.call(e.attributes), + o = [].concat(r["*"] || [], r[n] || []); + i.forEach(function(t) {! function(t, e) { var n = t.nodeName.toLowerCase(); if (-1 !== e.indexOf(n)) return -1 === be.indexOf(n) || Boolean(t.nodeValue.match(De) || t.nodeValue.match(Ie)); for (var i = e.filter(function(t) { return t instanceof RegExp }), o = 0, r = i.length; o < r; o++) + if (n.match(i[o])) return !0; + return !1 }(t, o) && e.removeAttribute(t.nodeName) }) }, o = 0, l = a.length; o < l; o++) i(o); return n.body.innerHTML } var Ae = "tooltip", + Ne = "bs.tooltip", + Oe = "." + Ne, + ke = g.fn[Ae], + Pe = "bs-tooltip", + Le = new RegExp("(^|\\s)" + Pe + "\\S+", "g"), + je = ["sanitize", "whiteList", "sanitizeFn"], + He = { animation: "boolean", template: "string", title: "(string|element|function)", trigger: "string", delay: "(number|object)", html: "boolean", selector: "(string|boolean)", placement: "(string|function)", offset: "(number|string|function)", container: "(string|element|boolean)", fallbackPlacement: "(string|array)", boundary: "(string|element)", sanitize: "boolean", sanitizeFn: "(null|function)", whiteList: "object", popperConfig: "(null|object)" }, + Re = { AUTO: "auto", TOP: "top", RIGHT: "right", BOTTOM: "bottom", LEFT: "left" }, + xe = { animation: !0, template: '', trigger: "hover focus", title: "", delay: 0, html: !1, selector: !1, placement: "top", offset: 0, container: !1, fallbackPlacement: "flip", boundary: "scrollParent", sanitize: !0, sanitizeFn: null, whiteList: Se, popperConfig: null }, + Fe = "show", + Ue = "out", + We = { HIDE: "hide" + Oe, HIDDEN: "hidden" + Oe, SHOW: "show" + Oe, SHOWN: "shown" + Oe, INSERTED: "inserted" + Oe, CLICK: "click" + Oe, FOCUSIN: "focusin" + Oe, FOCUSOUT: "focusout" + Oe, MOUSEENTER: "mouseenter" + Oe, MOUSELEAVE: "mouseleave" + Oe }, + qe = "fade", + Me = "show", + Ke = ".tooltip-inner", + Qe = ".arrow", + Be = "hover", + Ve = "focus", + Ye = "click", + ze = "manual", + Xe = function() { + function i(t, e) { if ("undefined" == typeof u) throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)"); + this._isEnabled = !0, this._timeout = 0, this._hoverState = "", this._activeTrigger = {}, this._popper = null, this.element = t, this.config = this._getConfig(e), this.tip = null, this._setListeners() } var t = i.prototype; return t.enable = function() { this._isEnabled = !0 }, t.disable = function() { this._isEnabled = !1 }, t.toggleEnabled = function() { this._isEnabled = !this._isEnabled }, t.toggle = function(t) { if (this._isEnabled) + if (t) { var e = this.constructor.DATA_KEY, + n = g(t.currentTarget).data(e); + n || (n = new this.constructor(t.currentTarget, this._getDelegateConfig()), g(t.currentTarget).data(e, n)), n._activeTrigger.click = !n._activeTrigger.click, n._isWithActiveTrigger() ? n._enter(null, n) : n._leave(null, n) } else { if (g(this.getTipElement()).hasClass(Me)) return void this._leave(null, this); + this._enter(null, this) } }, t.dispose = function() { clearTimeout(this._timeout), g.removeData(this.element, this.constructor.DATA_KEY), g(this.element).off(this.constructor.EVENT_KEY), g(this.element).closest(".modal").off("hide.bs.modal", this._hideModalHandler), this.tip && g(this.tip).remove(), this._isEnabled = null, this._timeout = null, this._hoverState = null, this._activeTrigger = null, this._popper && this._popper.destroy(), this._popper = null, this.element = null, this.config = null, this.tip = null }, t.show = function() { var e = this; if ("none" === g(this.element).css("display")) throw new Error("Please use show on visible elements"); var t = g.Event(this.constructor.Event.SHOW); if (this.isWithContent() && this._isEnabled) { g(this.element).trigger(t); var n = _.findShadowRoot(this.element), + i = g.contains(null !== n ? n : this.element.ownerDocument.documentElement, this.element); if (t.isDefaultPrevented() || !i) return; var o = this.getTipElement(), + r = _.getUID(this.constructor.NAME); + o.setAttribute("id", r), this.element.setAttribute("aria-describedby", r), this.setContent(), this.config.animation && g(o).addClass(qe); var s = "function" == typeof this.config.placement ? this.config.placement.call(this, o, this.element) : this.config.placement, + a = this._getAttachment(s); + this.addAttachmentClass(a); var l = this._getContainer(); + g(o).data(this.constructor.DATA_KEY, this), g.contains(this.element.ownerDocument.documentElement, this.tip) || g(o).appendTo(l), g(this.element).trigger(this.constructor.Event.INSERTED), this._popper = new u(this.element, o, this._getPopperConfig(a)), g(o).addClass(Me), "ontouchstart" in document.documentElement && g(document.body).children().on("mouseover", null, g.noop); var c = function() { e.config.animation && e._fixTransition(); var t = e._hoverState; + e._hoverState = null, g(e.element).trigger(e.constructor.Event.SHOWN), t === Ue && e._leave(null, e) }; if (g(this.tip).hasClass(qe)) { var h = _.getTransitionDurationFromElement(this.tip); + g(this.tip).one(_.TRANSITION_END, c).emulateTransitionEnd(h) } else c() } }, t.hide = function(t) { + function e() { n._hoverState !== Fe && i.parentNode && i.parentNode.removeChild(i), n._cleanTipClass(), n.element.removeAttribute("aria-describedby"), g(n.element).trigger(n.constructor.Event.HIDDEN), null !== n._popper && n._popper.destroy(), t && t() } var n = this, + i = this.getTipElement(), + o = g.Event(this.constructor.Event.HIDE); if (g(this.element).trigger(o), !o.isDefaultPrevented()) { if (g(i).removeClass(Me), "ontouchstart" in document.documentElement && g(document.body).children().off("mouseover", null, g.noop), this._activeTrigger[Ye] = !1, this._activeTrigger[Ve] = !1, this._activeTrigger[Be] = !1, g(this.tip).hasClass(qe)) { var r = _.getTransitionDurationFromElement(i); + g(i).one(_.TRANSITION_END, e).emulateTransitionEnd(r) } else e(); + this._hoverState = "" } }, t.update = function() { null !== this._popper && this._popper.scheduleUpdate() }, t.isWithContent = function() { return Boolean(this.getTitle()) }, t.addAttachmentClass = function(t) { g(this.getTipElement()).addClass(Pe + "-" + t) }, t.getTipElement = function() { return this.tip = this.tip || g(this.config.template)[0], this.tip }, t.setContent = function() { var t = this.getTipElement(); + this.setElementContent(g(t.querySelectorAll(Ke)), this.getTitle()), g(t).removeClass(qe + " " + Me) }, t.setElementContent = function(t, e) { "object" != typeof e || !e.nodeType && !e.jquery ? this.config.html ? (this.config.sanitize && (e = we(e, this.config.whiteList, this.config.sanitizeFn)), t.html(e)) : t.text(e) : this.config.html ? g(e).parent().is(t) || t.empty().append(e) : t.text(g(e).text()) }, t.getTitle = function() { var t = this.element.getAttribute("data-original-title"); return t = t || ("function" == typeof this.config.title ? this.config.title.call(this.element) : this.config.title) }, t._getPopperConfig = function(t) { var e = this; return l({}, { placement: t, modifiers: { offset: this._getOffset(), flip: { behavior: this.config.fallbackPlacement }, arrow: { element: Qe }, preventOverflow: { boundariesElement: this.config.boundary } }, onCreate: function(t) { t.originalPlacement !== t.placement && e._handlePopperPlacementChange(t) }, onUpdate: function(t) { return e._handlePopperPlacementChange(t) } }, {}, this.config.popperConfig) }, t._getOffset = function() { var e = this, + t = {}; return "function" == typeof this.config.offset ? t.fn = function(t) { return t.offsets = l({}, t.offsets, {}, e.config.offset(t.offsets, e.element) || {}), t } : t.offset = this.config.offset, t }, t._getContainer = function() { return !1 === this.config.container ? document.body : _.isElement(this.config.container) ? g(this.config.container) : g(document).find(this.config.container) }, t._getAttachment = function(t) { return Re[t.toUpperCase()] }, t._setListeners = function() { var i = this; + this.config.trigger.split(" ").forEach(function(t) { if ("click" === t) g(i.element).on(i.constructor.Event.CLICK, i.config.selector, function(t) { return i.toggle(t) }); + else if (t !== ze) { var e = t === Be ? i.constructor.Event.MOUSEENTER : i.constructor.Event.FOCUSIN, + n = t === Be ? i.constructor.Event.MOUSELEAVE : i.constructor.Event.FOCUSOUT; + g(i.element).on(e, i.config.selector, function(t) { return i._enter(t) }).on(n, i.config.selector, function(t) { return i._leave(t) }) } }), this._hideModalHandler = function() { i.element && i.hide() }, g(this.element).closest(".modal").on("hide.bs.modal", this._hideModalHandler), this.config.selector ? this.config = l({}, this.config, { trigger: "manual", selector: "" }) : this._fixTitle() }, t._fixTitle = function() { var t = typeof this.element.getAttribute("data-original-title");!this.element.getAttribute("title") && "string" == t || (this.element.setAttribute("data-original-title", this.element.getAttribute("title") || ""), this.element.setAttribute("title", "")) }, t._enter = function(t, e) { var n = this.constructor.DATA_KEY; + (e = e || g(t.currentTarget).data(n)) || (e = new this.constructor(t.currentTarget, this._getDelegateConfig()), g(t.currentTarget).data(n, e)), t && (e._activeTrigger["focusin" === t.type ? Ve : Be] = !0), g(e.getTipElement()).hasClass(Me) || e._hoverState === Fe ? e._hoverState = Fe : (clearTimeout(e._timeout), e._hoverState = Fe, e.config.delay && e.config.delay.show ? e._timeout = setTimeout(function() { e._hoverState === Fe && e.show() }, e.config.delay.show) : e.show()) }, t._leave = function(t, e) { var n = this.constructor.DATA_KEY; + (e = e || g(t.currentTarget).data(n)) || (e = new this.constructor(t.currentTarget, this._getDelegateConfig()), g(t.currentTarget).data(n, e)), t && (e._activeTrigger["focusout" === t.type ? Ve : Be] = !1), e._isWithActiveTrigger() || (clearTimeout(e._timeout), e._hoverState = Ue, e.config.delay && e.config.delay.hide ? e._timeout = setTimeout(function() { e._hoverState === Ue && e.hide() }, e.config.delay.hide) : e.hide()) }, t._isWithActiveTrigger = function() { for (var t in this._activeTrigger) + if (this._activeTrigger[t]) return !0; + return !1 }, t._getConfig = function(t) { var e = g(this.element).data(); return Object.keys(e).forEach(function(t) {-1 !== je.indexOf(t) && delete e[t] }), "number" == typeof(t = l({}, this.constructor.Default, {}, e, {}, "object" == typeof t && t ? t : {})).delay && (t.delay = { show: t.delay, hide: t.delay }), "number" == typeof t.title && (t.title = t.title.toString()), "number" == typeof t.content && (t.content = t.content.toString()), _.typeCheckConfig(Ae, t, this.constructor.DefaultType), t.sanitize && (t.template = we(t.template, t.whiteList, t.sanitizeFn)), t }, t._getDelegateConfig = function() { var t = {}; if (this.config) + for (var e in this.config) this.constructor.Default[e] !== this.config[e] && (t[e] = this.config[e]); return t }, t._cleanTipClass = function() { var t = g(this.getTipElement()), + e = t.attr("class").match(Le); + null !== e && e.length && t.removeClass(e.join("")) }, t._handlePopperPlacementChange = function(t) { var e = t.instance; + this.tip = e.popper, this._cleanTipClass(), this.addAttachmentClass(this._getAttachment(t.placement)) }, t._fixTransition = function() { var t = this.getTipElement(), + e = this.config.animation; + null === t.getAttribute("x-placement") && (g(t).removeClass(qe), this.config.animation = !1, this.hide(), this.show(), this.config.animation = e) }, i._jQueryInterface = function(n) { return this.each(function() { var t = g(this).data(Ne), + e = "object" == typeof n && n; if ((t || !/dispose|hide/.test(n)) && (t || (t = new i(this, e), g(this).data(Ne, t)), "string" == typeof n)) { if ("undefined" == typeof t[n]) throw new TypeError('No method named "' + n + '"'); + t[n]() } }) }, s(i, null, [{ key: "VERSION", get: function() { return "4.4.1" } }, { key: "Default", get: function() { return xe } }, { key: "NAME", get: function() { return Ae } }, { key: "DATA_KEY", get: function() { return Ne } }, { key: "Event", get: function() { return We } }, { key: "EVENT_KEY", get: function() { return Oe } }, { key: "DefaultType", get: function() { return He } }]), i }(); + g.fn[Ae] = Xe._jQueryInterface, g.fn[Ae].Constructor = Xe, g.fn[Ae].noConflict = function() { return g.fn[Ae] = ke, Xe._jQueryInterface }; var $e = "popover", + Ge = "bs.popover", + Je = "." + Ge, + Ze = g.fn[$e], + tn = "bs-popover", + en = new RegExp("(^|\\s)" + tn + "\\S+", "g"), + nn = l({}, Xe.Default, { placement: "right", trigger: "click", content: "", template: '' }), + on = l({}, Xe.DefaultType, { content: "(string|element|function)" }), + rn = "fade", + sn = "show", + an = ".popover-header", + ln = ".popover-body", + cn = { HIDE: "hide" + Je, HIDDEN: "hidden" + Je, SHOW: "show" + Je, SHOWN: "shown" + Je, INSERTED: "inserted" + Je, CLICK: "click" + Je, FOCUSIN: "focusin" + Je, FOCUSOUT: "focusout" + Je, MOUSEENTER: "mouseenter" + Je, MOUSELEAVE: "mouseleave" + Je }, + hn = function(t) { + function i() { return t.apply(this, arguments) || this }! function(t, e) { t.prototype = Object.create(e.prototype), (t.prototype.constructor = t).__proto__ = e }(i, t); var e = i.prototype; return e.isWithContent = function() { return this.getTitle() || this._getContent() }, e.addAttachmentClass = function(t) { g(this.getTipElement()).addClass(tn + "-" + t) }, e.getTipElement = function() { return this.tip = this.tip || g(this.config.template)[0], this.tip }, e.setContent = function() { var t = g(this.getTipElement()); + this.setElementContent(t.find(an), this.getTitle()); var e = this._getContent(); "function" == typeof e && (e = e.call(this.element)), this.setElementContent(t.find(ln), e), t.removeClass(rn + " " + sn) }, e._getContent = function() { return this.element.getAttribute("data-content") || this.config.content }, e._cleanTipClass = function() { var t = g(this.getTipElement()), + e = t.attr("class").match(en); + null !== e && 0 < e.length && t.removeClass(e.join("")) }, i._jQueryInterface = function(n) { return this.each(function() { var t = g(this).data(Ge), + e = "object" == typeof n ? n : null; if ((t || !/dispose|hide/.test(n)) && (t || (t = new i(this, e), g(this).data(Ge, t)), "string" == typeof n)) { if ("undefined" == typeof t[n]) throw new TypeError('No method named "' + n + '"'); + t[n]() } }) }, s(i, null, [{ key: "VERSION", get: function() { return "4.4.1" } }, { key: "Default", get: function() { return nn } }, { key: "NAME", get: function() { return $e } }, { key: "DATA_KEY", get: function() { return Ge } }, { key: "Event", get: function() { return cn } }, { key: "EVENT_KEY", get: function() { return Je } }, { key: "DefaultType", get: function() { return on } }]), i }(Xe); + g.fn[$e] = hn._jQueryInterface, g.fn[$e].Constructor = hn, g.fn[$e].noConflict = function() { return g.fn[$e] = Ze, hn._jQueryInterface }; var un = "scrollspy", + fn = "bs.scrollspy", + dn = "." + fn, + gn = g.fn[un], + _n = { offset: 10, method: "auto", target: "" }, + mn = { offset: "number", method: "string", target: "(string|element)" }, + pn = { ACTIVATE: "activate" + dn, SCROLL: "scroll" + dn, LOAD_DATA_API: "load" + dn + ".data-api" }, + vn = "dropdown-item", + yn = "active", + En = '[data-spy="scroll"]', + Cn = ".nav, .list-group", + Tn = ".nav-link", + bn = ".nav-item", + Sn = ".list-group-item", + Dn = ".dropdown", + In = ".dropdown-item", + wn = ".dropdown-toggle", + An = "offset", + Nn = "position", + On = function() { + function n(t, e) { var n = this; + this._element = t, this._scrollElement = "BODY" === t.tagName ? window : t, this._config = this._getConfig(e), this._selector = this._config.target + " " + Tn + "," + this._config.target + " " + Sn + "," + this._config.target + " " + In, this._offsets = [], this._targets = [], this._activeTarget = null, this._scrollHeight = 0, g(this._scrollElement).on(pn.SCROLL, function(t) { return n._process(t) }), this.refresh(), this._process() } var t = n.prototype; return t.refresh = function() { var e = this, + t = this._scrollElement === this._scrollElement.window ? An : Nn, + o = "auto" === this._config.method ? t : this._config.method, + r = o === Nn ? this._getScrollTop() : 0; + this._offsets = [], this._targets = [], this._scrollHeight = this._getScrollHeight(), [].slice.call(document.querySelectorAll(this._selector)).map(function(t) { var e, n = _.getSelectorFromElement(t); if (n && (e = document.querySelector(n)), e) { var i = e.getBoundingClientRect(); if (i.width || i.height) return [g(e)[o]().top + r, n] } return null }).filter(function(t) { return t }).sort(function(t, e) { return t[0] - e[0] }).forEach(function(t) { e._offsets.push(t[0]), e._targets.push(t[1]) }) }, t.dispose = function() { g.removeData(this._element, fn), g(this._scrollElement).off(dn), this._element = null, this._scrollElement = null, this._config = null, this._selector = null, this._offsets = null, this._targets = null, this._activeTarget = null, this._scrollHeight = null }, t._getConfig = function(t) { if ("string" != typeof(t = l({}, _n, {}, "object" == typeof t && t ? t : {})).target) { var e = g(t.target).attr("id"); + e || (e = _.getUID(un), g(t.target).attr("id", e)), t.target = "#" + e } return _.typeCheckConfig(un, t, mn), t }, t._getScrollTop = function() { return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop }, t._getScrollHeight = function() { return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight) }, t._getOffsetHeight = function() { return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height }, t._process = function() { var t = this._getScrollTop() + this._config.offset, + e = this._getScrollHeight(), + n = this._config.offset + e - this._getOffsetHeight(); if (this._scrollHeight !== e && this.refresh(), n <= t) { var i = this._targets[this._targets.length - 1]; + this._activeTarget !== i && this._activate(i) } else { if (this._activeTarget && t < this._offsets[0] && 0 < this._offsets[0]) return this._activeTarget = null, void this._clear(); for (var o = this._offsets.length; o--;) { this._activeTarget !== this._targets[o] && t >= this._offsets[o] && ("undefined" == typeof this._offsets[o + 1] || t < this._offsets[o + 1]) && this._activate(this._targets[o]) } } }, t._activate = function(e) { this._activeTarget = e, this._clear(); var t = this._selector.split(",").map(function(t) { return t + '[data-target="' + e + '"],' + t + '[href="' + e + '"]' }), + n = g([].slice.call(document.querySelectorAll(t.join(",")))); + n.hasClass(vn) ? (n.closest(Dn).find(wn).addClass(yn), n.addClass(yn)) : (n.addClass(yn), n.parents(Cn).prev(Tn + ", " + Sn).addClass(yn), n.parents(Cn).prev(bn).children(Tn).addClass(yn)), g(this._scrollElement).trigger(pn.ACTIVATE, { relatedTarget: e }) }, t._clear = function() { + [].slice.call(document.querySelectorAll(this._selector)).filter(function(t) { return t.classList.contains(yn) }).forEach(function(t) { return t.classList.remove(yn) }) }, n._jQueryInterface = function(e) { return this.each(function() { var t = g(this).data(fn); if (t || (t = new n(this, "object" == typeof e && e), g(this).data(fn, t)), "string" == typeof e) { if ("undefined" == typeof t[e]) throw new TypeError('No method named "' + e + '"'); + t[e]() } }) }, s(n, null, [{ key: "VERSION", get: function() { return "4.4.1" } }, { key: "Default", get: function() { return _n } }]), n }(); + g(window).on(pn.LOAD_DATA_API, function() { for (var t = [].slice.call(document.querySelectorAll(En)), e = t.length; e--;) { var n = g(t[e]); + On._jQueryInterface.call(n, n.data()) } }), g.fn[un] = On._jQueryInterface, g.fn[un].Constructor = On, g.fn[un].noConflict = function() { return g.fn[un] = gn, On._jQueryInterface }; var kn = "bs.tab", + Pn = "." + kn, + Ln = g.fn.tab, + jn = { HIDE: "hide" + Pn, HIDDEN: "hidden" + Pn, SHOW: "show" + Pn, SHOWN: "shown" + Pn, CLICK_DATA_API: "click" + Pn + ".data-api" }, + Hn = "dropdown-menu", + Rn = "active", + xn = "disabled", + Fn = "fade", + Un = "show", + Wn = ".dropdown", + qn = ".nav, .list-group", + Mn = ".active", + Kn = "> li > .active", + Qn = '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]', + Bn = ".dropdown-toggle", + Vn = "> .dropdown-menu .active", + Yn = function() { + function i(t) { this._element = t } var t = i.prototype; return t.show = function() { var n = this; if (!(this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && g(this._element).hasClass(Rn) || g(this._element).hasClass(xn))) { var t, i, e = g(this._element).closest(qn)[0], + o = _.getSelectorFromElement(this._element); if (e) { var r = "UL" === e.nodeName || "OL" === e.nodeName ? Kn : Mn; + i = (i = g.makeArray(g(e).find(r)))[i.length - 1] } var s = g.Event(jn.HIDE, { relatedTarget: this._element }), + a = g.Event(jn.SHOW, { relatedTarget: i }); if (i && g(i).trigger(s), g(this._element).trigger(a), !a.isDefaultPrevented() && !s.isDefaultPrevented()) { o && (t = document.querySelector(o)), this._activate(this._element, e); var l = function() { var t = g.Event(jn.HIDDEN, { relatedTarget: n._element }), + e = g.Event(jn.SHOWN, { relatedTarget: i }); + g(i).trigger(t), g(n._element).trigger(e) }; + t ? this._activate(t, t.parentNode, l) : l() } } }, t.dispose = function() { g.removeData(this._element, kn), this._element = null }, t._activate = function(t, e, n) { + function i() { return o._transitionComplete(t, r, n) } var o = this, + r = (!e || "UL" !== e.nodeName && "OL" !== e.nodeName ? g(e).children(Mn) : g(e).find(Kn))[0], + s = n && r && g(r).hasClass(Fn); if (r && s) { var a = _.getTransitionDurationFromElement(r); + g(r).removeClass(Un).one(_.TRANSITION_END, i).emulateTransitionEnd(a) } else i() }, t._transitionComplete = function(t, e, n) { if (e) { g(e).removeClass(Rn); var i = g(e.parentNode).find(Vn)[0]; + i && g(i).removeClass(Rn), "tab" === e.getAttribute("role") && e.setAttribute("aria-selected", !1) } if (g(t).addClass(Rn), "tab" === t.getAttribute("role") && t.setAttribute("aria-selected", !0), _.reflow(t), t.classList.contains(Fn) && t.classList.add(Un), t.parentNode && g(t.parentNode).hasClass(Hn)) { var o = g(t).closest(Wn)[0]; if (o) { var r = [].slice.call(o.querySelectorAll(Bn)); + g(r).addClass(Rn) } + t.setAttribute("aria-expanded", !0) } + n && n() }, i._jQueryInterface = function(n) { return this.each(function() { var t = g(this), + e = t.data(kn); if (e || (e = new i(this), t.data(kn, e)), "string" == typeof n) { if ("undefined" == typeof e[n]) throw new TypeError('No method named "' + n + '"'); + e[n]() } }) }, s(i, null, [{ key: "VERSION", get: function() { return "4.4.1" } }]), i }(); + g(document).on(jn.CLICK_DATA_API, Qn, function(t) { t.preventDefault(), Yn._jQueryInterface.call(g(this), "show") }), g.fn.tab = Yn._jQueryInterface, g.fn.tab.Constructor = Yn, g.fn.tab.noConflict = function() { return g.fn.tab = Ln, Yn._jQueryInterface }; var zn = "toast", + Xn = "bs.toast", + $n = "." + Xn, + Gn = g.fn[zn], + Jn = { CLICK_DISMISS: "click.dismiss" + $n, HIDE: "hide" + $n, HIDDEN: "hidden" + $n, SHOW: "show" + $n, SHOWN: "shown" + $n }, + Zn = "fade", + ti = "hide", + ei = "show", + ni = "showing", + ii = { animation: "boolean", autohide: "boolean", delay: "number" }, + oi = { animation: !0, autohide: !0, delay: 500 }, + ri = '[data-dismiss="toast"]', + si = function() { + function i(t, e) { this._element = t, this._config = this._getConfig(e), this._timeout = null, this._setListeners() } var t = i.prototype; return t.show = function() { var t = this, + e = g.Event(Jn.SHOW); if (g(this._element).trigger(e), !e.isDefaultPrevented()) { this._config.animation && this._element.classList.add(Zn); var n = function() { t._element.classList.remove(ni), t._element.classList.add(ei), g(t._element).trigger(Jn.SHOWN), t._config.autohide && (t._timeout = setTimeout(function() { t.hide() }, t._config.delay)) }; if (this._element.classList.remove(ti), _.reflow(this._element), this._element.classList.add(ni), this._config.animation) { var i = _.getTransitionDurationFromElement(this._element); + g(this._element).one(_.TRANSITION_END, n).emulateTransitionEnd(i) } else n() } }, t.hide = function() { if (this._element.classList.contains(ei)) { var t = g.Event(Jn.HIDE); + g(this._element).trigger(t), t.isDefaultPrevented() || this._close() } }, t.dispose = function() { clearTimeout(this._timeout), this._timeout = null, this._element.classList.contains(ei) && this._element.classList.remove(ei), g(this._element).off(Jn.CLICK_DISMISS), g.removeData(this._element, Xn), this._element = null, this._config = null }, t._getConfig = function(t) { return t = l({}, oi, {}, g(this._element).data(), {}, "object" == typeof t && t ? t : {}), _.typeCheckConfig(zn, t, this.constructor.DefaultType), t }, t._setListeners = function() { var t = this; + g(this._element).on(Jn.CLICK_DISMISS, ri, function() { return t.hide() }) }, t._close = function() { + function t() { e._element.classList.add(ti), g(e._element).trigger(Jn.HIDDEN) } var e = this; if (this._element.classList.remove(ei), this._config.animation) { var n = _.getTransitionDurationFromElement(this._element); + g(this._element).one(_.TRANSITION_END, t).emulateTransitionEnd(n) } else t() }, i._jQueryInterface = function(n) { return this.each(function() { var t = g(this), + e = t.data(Xn); if (e || (e = new i(this, "object" == typeof n && n), t.data(Xn, e)), "string" == typeof n) { if ("undefined" == typeof e[n]) throw new TypeError('No method named "' + n + '"'); + e[n](this) } }) }, s(i, null, [{ key: "VERSION", get: function() { return "4.4.1" } }, { key: "DefaultType", get: function() { return ii } }, { key: "Default", get: function() { return oi } }]), i }(); + g.fn[zn] = si._jQueryInterface, g.fn[zn].Constructor = si, g.fn[zn].noConflict = function() { return g.fn[zn] = Gn, si._jQueryInterface }, t.Alert = v, t.Button = H, t.Carousel = ut, t.Collapse = wt, t.Dropdown = ee, t.Modal = Te, t.Popover = hn, t.Scrollspy = On, t.Tab = Yn, t.Toast = si, t.Tooltip = Xe, t.Util = _, Object.defineProperty(t, "__esModule", { value: !0 }) }); \ No newline at end of file diff --git a/static/libs/charts.js b/static/libs/charts.js new file mode 100644 index 0000000..ba67f4f --- /dev/null +++ b/static/libs/charts.js @@ -0,0 +1,308 @@ +/*! + * Charts - ICOCrypto v1.9.0 by Softnio. +**/ +NioApp = (function (NioApp, $, window) { + "use strict"; + var $chart = $('.chart-data'), $chart_s2 = $('.chart-data-s2'), $chart_s1 = $('.chart-data-s1'); + + NioApp.Chart = {}; + + var $win = $(window); + + // ChartsJS @v1.0 + NioApp.Chart.ChartJs = function () { + + NioApp.Chart.ChartJs.Doughnut = function (_canvas, _titles, _colors, _amounts, _canvas_border, _canvas_cutout) { + if ($('#'+_canvas).length) { + var _canvas_el = document.getElementById(_canvas).getContext("2d"); + var doughnut_chart = new Chart(_canvas_el, { + type: 'doughnut', + data: { + labels: _titles, + datasets: [{ + label: "949", + lineTension: 0, + backgroundColor: _colors, + borderColor: _canvas_border, + borderWidth:2, + hoverBorderColor:_canvas_border, + data: _amounts, + }] + }, + options: { + legend: { + display: false, + labels: { + boxWidth:10, + fontColor: '#000' + } + }, + rotation: -2, + cutoutPercentage:_canvas_cutout, + responsive: true, + maintainAspectRatio: false, + tooltips: { + callbacks: { + title: function(tooltipItem, data) { + return data['labels'][tooltipItem[0]['index']]; + }, + label: function(tooltipItem, data) { + return data['datasets'][0]['data'][tooltipItem['index']] + ' %'; + } + }, + backgroundColor: '#eff6ff', + titleFontSize: 13, + titleFontColor: '#6783b8', + titleMarginBottom:10, + bodyFontColor: '#9eaecf', + bodyFontSize: 14, + bodySpacing:4, + yPadding: 15, + xPadding: 15, + footerMarginTop: 5, + displayColors: false + } + } + }); + // Resize Chart + $win.on('resize', function(){ + doughnut_chart.resize(); + }); + } + } + + + + + NioApp.Chart.ChartJs.Doughnut2 = function (_canvas, _titles, _colors, _amounts, _canvas_border, _canvas_cutout) { + if ($('#'+_canvas).length) { + var _canvas_el = document.getElementById(_canvas).getContext("2d"); + var doughnut_chart = new Chart(_canvas_el, { + type: 'doughnut', + data: { + labels: _titles, + datasets: [{ + label: "949", + lineTension: 0, + backgroundColor: _colors, + borderColor: _canvas_border, + borderWidth: 3, + hoverBorderColor:_canvas_border, + data: _amounts, + }] + }, + options: { + legend: { + display: false, + labels: { + boxWidth:10, + fontColor: '#000' + } + }, + rotation: -2, + cutoutPercentage:_canvas_cutout, + responsive: true, + maintainAspectRatio: false, + tooltips: { + callbacks: { + title: function(tooltipItem, data) { + return data['labels'][tooltipItem[0]['index']]; + }, + label: function(tooltipItem, data) { + return data['datasets'][0]['data'][tooltipItem['index']] + ' %'; + } + }, + backgroundColor: '#eff6ff', + titleFontSize: 13, + titleFontColor: '#6783b8', + titleMarginBottom:10, + bodyFontColor: '#9eaecf', + bodyFontSize: 14, + bodySpacing:4, + yPadding: 15, + xPadding: 15, + footerMarginTop: 5, + displayColors: false + }, + hover: { + onHover: function(e, i) { + if(i.length) { + var _cur_idx = i[0]._index + 1, _self_can = i[0]._chart.canvas.id; + $('[data-canvas="'+_self_can+'"] li').removeClass('active'); + $('[data-canvas="'+_self_can+'"] li:nth-child('+_cur_idx+')').addClass('active'); + }else{ + $('[data-canvas="'+_self_can+'"] li').removeClass('active'); + } + }, + } + } + }); + + // Resize Chart + $win.on('resize', function(){ + doughnut_chart.resize(); + }); + } + } + + // @since v1.6 + NioApp.Chart.ChartJs.Pie = function (_canvas, _label, _title, _colors, _colors_hover, _amounts, _canvas_border, _canvas_cutout) { + if ($('#'+_canvas).length) { + var _canvas_el = document.getElementById(_canvas).getContext("2d"); + + var data_set = { + labels: _label, + titles: _title, + datasets: [{ + label: "949", + lineTension: 0, + backgroundColor: _colors, + hoverBackgroundColor: _colors_hover, + borderColor: _canvas_border, + borderWidth:2, + hoverBorderColor:_canvas_border, + data: _amounts, + animationDuration: 400, + }] + }; + var options_set = { + legend: false, + cutoutPercentage:0, + responsive: true, + maintainAspectRatio: false, + tooltips: { + callbacks: { + title: function(tooltipItem, data) { + return data['labels'][tooltipItem[0]['index']]; + }, + label: function(tooltipItem, data) { + return data['datasets'][0]['data'][tooltipItem['index']] + ' %'; + } + }, + backgroundColor: 'transparent', + titleFontSize: 11, + bodyFontColor: '#fff', + bodyFontSize: 14, + bodyFontStyle: 'bold', + bodySpacing:0, + yPadding: 0, + xPadding: 0, + yAlign: 'center', + xAlign: 'center', + footerMarginTop: 5, + displayColors: false + }, + hover: { + onHover: function(e, i) { + if(i.length) { + var _cur_idx = i[0]._index + 1, _self_can = i[0]._chart.canvas.id; + $('[data-canvas="'+_self_can+'"] li').removeClass('active'); + $('[data-canvas="'+_self_can+'"] li:nth-child('+_cur_idx+')').addClass('active'); + }else{ + $('[data-canvas="'+_self_can+'"] li').removeClass('active'); + } + } + } + }; + + var pie_chart = new Chart(_canvas_el, { + type: 'pie', + data: data_set, + options: options_set + }); + + // Resize Chart + $win.on('resize', function(){ + pie_chart.resize(); + }); + } + } + + if($chart.length > 0){ + $chart.each(function(){ + var $chart_data = $(this).children('li'), _canvas = $(this).data('canvas'), + _canvas_border = $(this).data('border-color') ? $(this).data('border-color') : '#fff', + _canvas_cutout = $(this).data('canvas-cutout') ? $(this).data('canvas-cutout') : '70', + _canvas_type = $(this).data('canvas-type'); + _canvas_type = (typeof _canvas_type==='undefined' || _canvas_type==='') ? 'doughnut' : _canvas_type; + if(typeof _canvas!=='undefined' && _canvas !=='') { + var item_label = [], item_color = [], item_percent = []; + $chart_data.each(function(){ + var l = $(this).data('title'), c = $(this).data('color'), p = $(this).data('amount'); + item_label.push(l); item_color.push(c); item_percent.push(p); + $(this).html('' + l + '' + p +'%') + }); + if (_canvas_type==='doughnut') { + NioApp.Chart.ChartJs.Doughnut(_canvas, item_label, item_color, item_percent,_canvas_border,_canvas_cutout); + } else if(_canvas_type==='pie') { + NioApp.Chart.ChartJs.Pie(_canvas, item_label, item_color, item_percent,_canvas_border); + } else if(_canvas_type==='linechart') { + NioApp.Chart.ChartJs.Doughnut(_canvas, item_label, item_color, item_percent,_canvas_border); + } + } else { + console.log('Unable to draw canvas: '+_canvas); + } + }); + } + + // @since v1.6 + if($chart_s2.length > 0){ + $chart_s2.each(function(){ + var $chart_data = $(this).children('li'), _canvas = $(this).data('canvas'), + _canvas_border = $(this).data('border-color') ? $(this).data('border-color') : '#fff', + _canvas_cutout = $(this).data('canvas-cutout') ? $(this).data('canvas-cutout') : '40', + _canvas_type = $(this).data('canvas-type'); + _canvas_type = (typeof _canvas_type==='undefined' || _canvas_type==='') ? 'doughnut' : _canvas_type; + if(typeof _canvas!=='undefined' && _canvas !=='') { + var item_label = [], item_title = [], item_color = [], item_color_hover = [], item_percent = []; + $chart_data.each(function(){ + var l = $(this).data('label'), t = $(this).data('title'), sl = $(this).data('subtitle'), c = $(this).data('color'), hc = $(this).data('color-hover'), p = $(this).data('amount'); + item_label.push(l);item_title.push(t); item_color.push(c); item_color_hover.push(hc); item_percent.push(p); + $(this).html('
      ' + t + '' + p +'% ' + sl + '
      ') + }); + if (_canvas_type==='doughnut') { + NioApp.Chart.ChartJs.Doughnut(_canvas, item_label, item_title, item_color, item_percent, _canvas_border,_canvas_cutout); + } else if(_canvas_type==='pie') { + NioApp.Chart.ChartJs.Pie(_canvas, item_label, item_title, item_color, item_color_hover, item_percent, _canvas_border); + } else if(_canvas_type==='linechart') { + NioApp.Chart.ChartJs.Doughnut(_canvas, item_label, item_title, item_color, item_percent, _canvas_border); + } + } else { + console.log('Unable to draw canvas: '+_canvas); + } + }); + } + + if($chart_s1.length > 0){ + $chart_s1.each(function(){ + var $chart_data = $(this).children('li'), _canvas = $(this).data('canvas'), + _canvas_border = $(this).data('border-color') ? $(this).data('border-color') : '#122272', + _canvas_cutout = $(this).data('canvas-cutout') ? $(this).data('canvas-cutout') : '40', + _canvas_type = $(this).data('canvas-type'); + _canvas_type = (typeof _canvas_type==='undefined' || _canvas_type==='') ? 'doughnut' : _canvas_type; + if(typeof _canvas!=='undefined' && _canvas !=='') { + var item_label = [], item_color = [], item_color_hover = [], item_percent = []; + $chart_data.each(function(){ + var l = $(this).data('title'), sl = $(this).data('subtitle'), c = $(this).data('color'), hc = $(this).data('color-hover'), p = $(this).data('amount'); + item_label.push(l); item_color.push(c); item_color_hover.push(hc); item_percent.push(p); + $(this).html('' + l + '' + p +'%') + }); + for(var i=0; i < $chart_data.length + 1; i++){ + $chart_data.eq(i-1).addClass('chart-index-'+i); + } + if (_canvas_type==='doughnut') { + NioApp.Chart.ChartJs.Doughnut2(_canvas, item_label, item_color, item_percent, _canvas_border,_canvas_cutout); + } else if(_canvas_type==='pie') { + NioApp.Chart.ChartJs.Pie(_canvas, item_label, item_color, item_color_hover, item_percent, _canvas_border); + } else if(_canvas_type==='linechart') { + NioApp.Chart.ChartJs.Doughnut(_canvas, item_label, item_color, item_percent, _canvas_border); + } + } else { + console.log('Unable to draw canvas: '+_canvas); + } + }); + } + }; + NioApp.components.docReady.push(NioApp.Chart.ChartJs); + return NioApp; +})(NioApp, jQuery, window); \ No newline at end of file diff --git a/static/libs/jquery-3.4.1.min.js b/static/libs/jquery-3.4.1.min.js new file mode 100644 index 0000000..a1c07fd --- /dev/null +++ b/static/libs/jquery-3.4.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"
      ","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
      ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0=0&&n0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w(" + + + + + diff --git a/static/libs/swiper-5.3.8/demos/020-navigation.html b/static/libs/swiper-5.3.8/demos/020-navigation.html new file mode 100644 index 0000000..2169658 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/020-navigation.html @@ -0,0 +1,83 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/030-pagination.html b/static/libs/swiper-5.3.8/demos/030-pagination.html new file mode 100644 index 0000000..c0894c8 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/030-pagination.html @@ -0,0 +1,81 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/040-pagination-dynamic.html b/static/libs/swiper-5.3.8/demos/040-pagination-dynamic.html new file mode 100644 index 0000000..e26f7ea --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/040-pagination-dynamic.html @@ -0,0 +1,82 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/050-pagination-progress.html b/static/libs/swiper-5.3.8/demos/050-pagination-progress.html new file mode 100644 index 0000000..b0d943a --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/050-pagination-progress.html @@ -0,0 +1,87 @@ + + + + + Swiper demo + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      + +
      +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/060-pagination-fraction.html b/static/libs/swiper-5.3.8/demos/060-pagination-fraction.html new file mode 100644 index 0000000..07d2965 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/060-pagination-fraction.html @@ -0,0 +1,87 @@ + + + + + Swiper demo + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      + +
      +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/070-pagination-custom.html b/static/libs/swiper-5.3.8/demos/070-pagination-custom.html new file mode 100644 index 0000000..b5491ad --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/070-pagination-custom.html @@ -0,0 +1,99 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/080-scrollbar.html b/static/libs/swiper-5.3.8/demos/080-scrollbar.html new file mode 100644 index 0000000..04e01ea --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/080-scrollbar.html @@ -0,0 +1,82 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/090-vertical.html b/static/libs/swiper-5.3.8/demos/090-vertical.html new file mode 100644 index 0000000..1c4759a --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/090-vertical.html @@ -0,0 +1,83 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/100-space-between.html b/static/libs/swiper-5.3.8/demos/100-space-between.html new file mode 100644 index 0000000..f50d659 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/100-space-between.html @@ -0,0 +1,83 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/110-slides-per-view.html b/static/libs/swiper-5.3.8/demos/110-slides-per-view.html new file mode 100644 index 0000000..7e54450 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/110-slides-per-view.html @@ -0,0 +1,84 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/120-slides-per-view-auto.html b/static/libs/swiper-5.3.8/demos/120-slides-per-view-auto.html new file mode 100644 index 0000000..d7ca86c --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/120-slides-per-view-auto.html @@ -0,0 +1,91 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/130-centered.html b/static/libs/swiper-5.3.8/demos/130-centered.html new file mode 100644 index 0000000..0c9a7a0 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/130-centered.html @@ -0,0 +1,85 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/140-centered-auto.html b/static/libs/swiper-5.3.8/demos/140-centered-auto.html new file mode 100644 index 0000000..5e4f5d5 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/140-centered-auto.html @@ -0,0 +1,92 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/145-css-mode.html b/static/libs/swiper-5.3.8/demos/145-css-mode.html new file mode 100644 index 0000000..be6d014 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/145-css-mode.html @@ -0,0 +1,91 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/150-freemode.html b/static/libs/swiper-5.3.8/demos/150-freemode.html new file mode 100644 index 0000000..97d1549 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/150-freemode.html @@ -0,0 +1,85 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/160-scroll-container.html b/static/libs/swiper-5.3.8/demos/160-scroll-container.html new file mode 100644 index 0000000..449f9d9 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/160-scroll-container.html @@ -0,0 +1,76 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      +

      Scroll Container

      +

      Lorem ipsum dolor sit amet, consectetur adipiscing elit. In luctus, ex eu sagittis faucibus, ligula ipsum sagittis magna, et imperdiet dolor lectus eu libero. Vestibulum venenatis eget turpis sed faucibus. Maecenas in ullamcorper orci, eu ullamcorper sem. Etiam elit ante, luctus non ante sit amet, sodales vulputate odio. Aenean tristique nisl tellus, sit amet fringilla nisl volutpat cursus. Quisque dignissim lectus ac nunc consectetur mattis. Proin vel hendrerit ipsum, et lobortis dolor. Vestibulum convallis, nibh et tincidunt tristique, nisl risus facilisis lectus, ut interdum orci nisl ac nunc. Cras et aliquam felis. Quisque vel ipsum at elit sodales posuere eget non est. Fusce convallis vestibulum dolor non volutpat. Vivamus vestibulum quam ut ultricies pretium.

      +

      Suspendisse rhoncus fringilla nisl. Mauris eget lorem ac urna consectetur convallis non vel mi. Donec libero dolor, volutpat ut urna sit amet, aliquet molestie purus. Phasellus faucibus, leo vel scelerisque lobortis, ipsum leo sollicitudin metus, eget sagittis ante orci eu ipsum. Nulla ac mauris eu risus sagittis scelerisque iaculis bibendum mauris. Cras ut egestas orci. Cras odio risus, sagittis ut nunc vitae, aliquam consectetur purus. Vivamus ornare nunc vel tellus facilisis, quis dictum elit tincidunt. Donec accumsan nisi at laoreet sodales. Cras at ullamcorper massa. Maecenas at facilisis ex. Nam mollis dignissim purus id efficitur.

      +

      Curabitur eget aliquam erat. Curabitur a neque vitae purus volutpat elementum. Vivamus quis vestibulum leo, efficitur ullamcorper velit. Integer tincidunt finibus metus vel porta. Mauris sed mauris congue, pretium est nec, malesuada purus. Nulla hendrerit consectetur arcu et lacinia. Suspendisse augue justo, convallis eget arcu in, pretium tempor ligula. Nullam vulputate tincidunt est ut ullamcorper.

      +

      Curabitur sed sodales leo. Nulla facilisi. Etiam condimentum, nisi id tempor vulputate, nisi justo cursus justo, pellentesque condimentum diam arcu sit amet leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In placerat tellus a posuere vehicula. Donec diam massa, efficitur vitae mattis et, pretium in augue. Fusce iaculis mi quis ante venenatis, sit amet pellentesque orci aliquam. Vestibulum elementum posuere vehicula.

      +

      Sed tincidunt diam a massa pharetra faucibus. Praesent condimentum id arcu nec fringilla. Maecenas faucibus, ante et venenatis interdum, erat mi eleifend dui, at convallis nisl est nec arcu. Duis vitae arcu rhoncus, faucibus magna ut, tempus metus. Cras in nibh sed ipsum consequat rhoncus. Proin fringilla nulla ut augue tempor fermentum. Nunc hendrerit non nisi vitae finibus. Donec eget ornare libero. Aliquam auctor erat enim, a semper risus semper at. In ut dui in metus tincidunt euismod eget et lacus. Aenean et dictum urna, sed rhoncus lorem. Duis pharetra sagittis odio. Etiam a libero ut nisi feugiat tincidunt vel vitae turpis. Maecenas vel orci sit amet lorem hendrerit venenatis sollicitudin ut dui. Quisque rhoncus nibh in massa pretium scelerisque.

      +

      Lorem ipsum dolor sit amet, consectetur adipiscing elit. In luctus, ex eu sagittis faucibus, ligula ipsum sagittis magna, et imperdiet dolor lectus eu libero. Vestibulum venenatis eget turpis sed faucibus. Maecenas in ullamcorper orci, eu ullamcorper sem. Etiam elit ante, luctus non ante sit amet, sodales vulputate odio. Aenean tristique nisl tellus, sit amet fringilla nisl volutpat cursus. Quisque dignissim lectus ac nunc consectetur mattis. Proin vel hendrerit ipsum, et lobortis dolor. Vestibulum convallis, nibh et tincidunt tristique, nisl risus facilisis lectus, ut interdum orci nisl ac nunc. Cras et aliquam felis. Quisque vel ipsum at elit sodales posuere eget non est. Fusce convallis vestibulum dolor non volutpat. Vivamus vestibulum quam ut ultricies pretium.

      +

      Suspendisse rhoncus fringilla nisl. Mauris eget lorem ac urna consectetur convallis non vel mi. Donec libero dolor, volutpat ut urna sit amet, aliquet molestie purus. Phasellus faucibus, leo vel scelerisque lobortis, ipsum leo sollicitudin metus, eget sagittis ante orci eu ipsum. Nulla ac mauris eu risus sagittis scelerisque iaculis bibendum mauris. Cras ut egestas orci. Cras odio risus, sagittis ut nunc vitae, aliquam consectetur purus. Vivamus ornare nunc vel tellus facilisis, quis dictum elit tincidunt. Donec accumsan nisi at laoreet sodales. Cras at ullamcorper massa. Maecenas at facilisis ex. Nam mollis dignissim purus id efficitur.

      +

      Curabitur eget aliquam erat. Curabitur a neque vitae purus volutpat elementum. Vivamus quis vestibulum leo, efficitur ullamcorper velit. Integer tincidunt finibus metus vel porta. Mauris sed mauris congue, pretium est nec, malesuada purus. Nulla hendrerit consectetur arcu et lacinia. Suspendisse augue justo, convallis eget arcu in, pretium tempor ligula. Nullam vulputate tincidunt est ut ullamcorper.

      +

      Curabitur sed sodales leo. Nulla facilisi. Etiam condimentum, nisi id tempor vulputate, nisi justo cursus justo, pellentesque condimentum diam arcu sit amet leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In placerat tellus a posuere vehicula. Donec diam massa, efficitur vitae mattis et, pretium in augue. Fusce iaculis mi quis ante venenatis, sit amet pellentesque orci aliquam. Vestibulum elementum posuere vehicula.

      +

      Sed tincidunt diam a massa pharetra faucibus. Praesent condimentum id arcu nec fringilla. Maecenas faucibus, ante et venenatis interdum, erat mi eleifend dui, at convallis nisl est nec arcu. Duis vitae arcu rhoncus, faucibus magna ut, tempus metus. Cras in nibh sed ipsum consequat rhoncus. Proin fringilla nulla ut augue tempor fermentum. Nunc hendrerit non nisi vitae finibus. Donec eget ornare libero. Aliquam auctor erat enim, a semper risus semper at. In ut dui in metus tincidunt euismod eget et lacus. Aenean et dictum urna, sed rhoncus lorem. Duis pharetra sagittis odio. Etiam a libero ut nisi feugiat tincidunt vel vitae turpis. Maecenas vel orci sit amet lorem hendrerit venenatis sollicitudin ut dui. Quisque rhoncus nibh in massa pretium scelerisque.

      +
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/170-slides-per-column.html b/static/libs/swiper-5.3.8/demos/170-slides-per-column.html new file mode 100644 index 0000000..09ebc70 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/170-slides-per-column.html @@ -0,0 +1,89 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/180-nested.html b/static/libs/swiper-5.3.8/demos/180-nested.html new file mode 100644 index 0000000..3433451 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/180-nested.html @@ -0,0 +1,99 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Horizontal Slide 1
      +
      +
      +
      +
      Vertical Slide 1
      +
      Vertical Slide 2
      +
      Vertical Slide 3
      +
      Vertical Slide 4
      +
      Vertical Slide 5
      +
      +
      +
      +
      +
      Horizontal Slide 3
      +
      Horizontal Slide 4
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/190-grab-cursor.html b/static/libs/swiper-5.3.8/demos/190-grab-cursor.html new file mode 100644 index 0000000..1dc9ef9 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/190-grab-cursor.html @@ -0,0 +1,86 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/200-infinite-loop.html b/static/libs/swiper-5.3.8/demos/200-infinite-loop.html new file mode 100644 index 0000000..ac9b50b --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/200-infinite-loop.html @@ -0,0 +1,94 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      + +
      +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/210-infinite-loop-with-slides-per-group.html b/static/libs/swiper-5.3.8/demos/210-infinite-loop-with-slides-per-group.html new file mode 100644 index 0000000..a24901e --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/210-infinite-loop-with-slides-per-group.html @@ -0,0 +1,94 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      + +
      +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/211-slides-per-group-skip.html b/static/libs/swiper-5.3.8/demos/211-slides-per-group-skip.html new file mode 100644 index 0000000..5fd4c67 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/211-slides-per-group-skip.html @@ -0,0 +1,84 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/220-effect-fade.html b/static/libs/swiper-5.3.8/demos/220-effect-fade.html new file mode 100644 index 0000000..2d400af --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/220-effect-fade.html @@ -0,0 +1,71 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      +
      +
      +
      +
      +
      + +
      + +
      +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/230-effect-cube.html b/static/libs/swiper-5.3.8/demos/230-effect-cube.html new file mode 100644 index 0000000..fe0b8ac --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/230-effect-cube.html @@ -0,0 +1,74 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      +
      +
      +
      +
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/240-effect-coverflow.html b/static/libs/swiper-5.3.8/demos/240-effect-coverflow.html new file mode 100644 index 0000000..784c720 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/240-effect-coverflow.html @@ -0,0 +1,77 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/250-effect-flip.html b/static/libs/swiper-5.3.8/demos/250-effect-flip.html new file mode 100644 index 0000000..a13723f --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/250-effect-flip.html @@ -0,0 +1,72 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      +
      +
      +
      +
      +
      +
      + + +
      + + +
      +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/260-keyboard-control.html b/static/libs/swiper-5.3.8/demos/260-keyboard-control.html new file mode 100644 index 0000000..d48565d --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/260-keyboard-control.html @@ -0,0 +1,96 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      + +
      +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/270-mousewheel-control.html b/static/libs/swiper-5.3.8/demos/270-mousewheel-control.html new file mode 100644 index 0000000..09643ad --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/270-mousewheel-control.html @@ -0,0 +1,88 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/280-autoplay.html b/static/libs/swiper-5.3.8/demos/280-autoplay.html new file mode 100644 index 0000000..7d9a35c --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/280-autoplay.html @@ -0,0 +1,96 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      + +
      +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/290-dynamic-slides.html b/static/libs/swiper-5.3.8/demos/290-dynamic-slides.html new file mode 100644 index 0000000..890079f --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/290-dynamic-slides.html @@ -0,0 +1,126 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      + +
      + +
      +
      +
      +

      + Prepend 2 Slides + Prepend Slide + Append Slide + Append 2 Slides +

      + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/300-thumbs-gallery.html b/static/libs/swiper-5.3.8/demos/300-thumbs-gallery.html new file mode 100644 index 0000000..eec0b9e --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/300-thumbs-gallery.html @@ -0,0 +1,112 @@ + + + + + Swiper demo + + + + + + + + + + + + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/310-thumbs-gallery-loop.html b/static/libs/swiper-5.3.8/demos/310-thumbs-gallery-loop.html new file mode 100644 index 0000000..c3164b9 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/310-thumbs-gallery-loop.html @@ -0,0 +1,115 @@ + + + + + Swiper demo + + + + + + + + + + + + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/320-multiple-swipers.html b/static/libs/swiper-5.3.8/demos/320-multiple-swipers.html new file mode 100644 index 0000000..5046552 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/320-multiple-swipers.html @@ -0,0 +1,130 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/330-hash-navigation.html b/static/libs/swiper-5.3.8/demos/330-hash-navigation.html new file mode 100644 index 0000000..a4e337c --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/330-hash-navigation.html @@ -0,0 +1,93 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      + +
      +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/340-history.html b/static/libs/swiper-5.3.8/demos/340-history.html new file mode 100644 index 0000000..40d4863 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/340-history.html @@ -0,0 +1,83 @@ + + + + + Swiper Playground + + + + + +
      +
      +
      +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      +
      +
      + + + + diff --git a/static/libs/swiper-5.3.8/demos/350-rtl.html b/static/libs/swiper-5.3.8/demos/350-rtl.html new file mode 100644 index 0000000..c3085be --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/350-rtl.html @@ -0,0 +1,89 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      + +
      +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/360-parallax.html b/static/libs/swiper-5.3.8/demos/360-parallax.html new file mode 100644 index 0000000..ebd1898 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/360-parallax.html @@ -0,0 +1,115 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      +
      +
      Slide 1
      +
      Subtitle
      +
      +

      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam dictum mattis velit, sit amet faucibus felis iaculis nec. Nulla laoreet justo vitae porttitor porttitor. Suspendisse in sem justo. Integer laoreet magna nec elit suscipit, ac laoreet nibh euismod. Aliquam hendrerit lorem at elit facilisis rutrum. Ut at ullamcorper velit. Nulla ligula nisi, imperdiet ut lacinia nec, tincidunt ut libero. Aenean feugiat non eros quis feugiat.

      +
      +
      +
      +
      Slide 2
      +
      Subtitle
      +
      +

      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam dictum mattis velit, sit amet faucibus felis iaculis nec. Nulla laoreet justo vitae porttitor porttitor. Suspendisse in sem justo. Integer laoreet magna nec elit suscipit, ac laoreet nibh euismod. Aliquam hendrerit lorem at elit facilisis rutrum. Ut at ullamcorper velit. Nulla ligula nisi, imperdiet ut lacinia nec, tincidunt ut libero. Aenean feugiat non eros quis feugiat.

      +
      +
      +
      +
      Slide 3
      +
      Subtitle
      +
      +

      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam dictum mattis velit, sit amet faucibus felis iaculis nec. Nulla laoreet justo vitae porttitor porttitor. Suspendisse in sem justo. Integer laoreet magna nec elit suscipit, ac laoreet nibh euismod. Aliquam hendrerit lorem at elit facilisis rutrum. Ut at ullamcorper velit. Nulla ligula nisi, imperdiet ut lacinia nec, tincidunt ut libero. Aenean feugiat non eros quis feugiat.

      +
      +
      +
      + +
      + +
      +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/370-lazy-load-images.html b/static/libs/swiper-5.3.8/demos/370-lazy-load-images.html new file mode 100644 index 0000000..91bf1b3 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/370-lazy-load-images.html @@ -0,0 +1,109 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      + + + +
      +
      +
      + +
      +
      +
      + +
      +
      +
      + +
      +
      +
      + +
      +
      +
      + +
      +
      + +
      + +
      + +
      +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/380-responsive-breakpoints.html b/static/libs/swiper-5.3.8/demos/380-responsive-breakpoints.html new file mode 100644 index 0000000..e6fe4be --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/380-responsive-breakpoints.html @@ -0,0 +1,99 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/381-ratio-breakpoints.html b/static/libs/swiper-5.3.8/demos/381-ratio-breakpoints.html new file mode 100644 index 0000000..b792aa2 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/381-ratio-breakpoints.html @@ -0,0 +1,103 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/390-autoheight.html b/static/libs/swiper-5.3.8/demos/390-autoheight.html new file mode 100644 index 0000000..d7b4a6e --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/390-autoheight.html @@ -0,0 +1,83 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      + +
      +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/400-zoom.html b/static/libs/swiper-5.3.8/demos/400-zoom.html new file mode 100644 index 0000000..63dcffb --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/400-zoom.html @@ -0,0 +1,78 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      + +
      + +
      +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/410-virtual-slides.html b/static/libs/swiper-5.3.8/demos/410-virtual-slides.html new file mode 100644 index 0000000..70dbbb0 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/410-virtual-slides.html @@ -0,0 +1,132 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      + +
      + +
      +
      +
      +

      + Prepend 2 Slides + Slide 1 + Slide 250 + Slide 500 + Append Slide +

      + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/420-custom-plugin.html b/static/libs/swiper-5.3.8/demos/420-custom-plugin.html new file mode 100644 index 0000000..8265dcb --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/420-custom-plugin.html @@ -0,0 +1,161 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      + +
      + +
      +
      +
      + + + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/430-slideable-menu.html b/static/libs/swiper-5.3.8/demos/430-slideable-menu.html new file mode 100644 index 0000000..114fbde --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/430-slideable-menu.html @@ -0,0 +1,192 @@ + + + + + Swiper demo + + + + + + + + + + +
      +
      + +
      + + Content slide +
      +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/440-change-direction.html b/static/libs/swiper-5.3.8/demos/440-change-direction.html new file mode 100644 index 0000000..ea9a62e --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/440-change-direction.html @@ -0,0 +1,107 @@ + + + + + Swiper demo + + + + + + + + + +
      +
      +
      Resize me!
      +
      Resize me!
      +
      Resize me!
      +
      Resize me!
      +
      Resize me!
      +
      Resize me!
      +
      Resize me!
      +
      Resize me!
      +
      Resize me!
      +
      Resize me!
      +
      +
      +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/450-watchSlidesVisibility.html b/static/libs/swiper-5.3.8/demos/450-watchSlidesVisibility.html new file mode 100644 index 0000000..2b05876 --- /dev/null +++ b/static/libs/swiper-5.3.8/demos/450-watchSlidesVisibility.html @@ -0,0 +1,74 @@ + + + + + + Swiper demo + + + + + + + + + +

      Slider5 is visible when you slide to 2,3, or 4, and slider5 has "swiper-slide-visible" className


      + +
      +
      +
      + slider1
      +
      + slider2
      +
      + slider3
      +
      + slider4
      +
      + slider5
      +
      + slider6
      +
      + slider7
      +
      + slider8
      +
      +
      + + + + + + + + diff --git a/static/libs/swiper-5.3.8/demos/images/nature-1.jpg b/static/libs/swiper-5.3.8/demos/images/nature-1.jpg new file mode 100644 index 0000000..0ad3893 Binary files /dev/null and b/static/libs/swiper-5.3.8/demos/images/nature-1.jpg differ diff --git a/static/libs/swiper-5.3.8/demos/images/nature-10.jpg b/static/libs/swiper-5.3.8/demos/images/nature-10.jpg new file mode 100644 index 0000000..f73e987 Binary files /dev/null and b/static/libs/swiper-5.3.8/demos/images/nature-10.jpg differ diff --git a/static/libs/swiper-5.3.8/demos/images/nature-2.jpg b/static/libs/swiper-5.3.8/demos/images/nature-2.jpg new file mode 100644 index 0000000..e698f66 Binary files /dev/null and b/static/libs/swiper-5.3.8/demos/images/nature-2.jpg differ diff --git a/static/libs/swiper-5.3.8/demos/images/nature-3.jpg b/static/libs/swiper-5.3.8/demos/images/nature-3.jpg new file mode 100644 index 0000000..980b98f Binary files /dev/null and b/static/libs/swiper-5.3.8/demos/images/nature-3.jpg differ diff --git a/static/libs/swiper-5.3.8/demos/images/nature-4.jpg b/static/libs/swiper-5.3.8/demos/images/nature-4.jpg new file mode 100644 index 0000000..82d69c4 Binary files /dev/null and b/static/libs/swiper-5.3.8/demos/images/nature-4.jpg differ diff --git a/static/libs/swiper-5.3.8/demos/images/nature-5.jpg b/static/libs/swiper-5.3.8/demos/images/nature-5.jpg new file mode 100644 index 0000000..c4c5d2c Binary files /dev/null and b/static/libs/swiper-5.3.8/demos/images/nature-5.jpg differ diff --git a/static/libs/swiper-5.3.8/demos/images/nature-6.jpg b/static/libs/swiper-5.3.8/demos/images/nature-6.jpg new file mode 100644 index 0000000..4d49ddf Binary files /dev/null and b/static/libs/swiper-5.3.8/demos/images/nature-6.jpg differ diff --git a/static/libs/swiper-5.3.8/demos/images/nature-7.jpg b/static/libs/swiper-5.3.8/demos/images/nature-7.jpg new file mode 100644 index 0000000..9f0407a Binary files /dev/null and b/static/libs/swiper-5.3.8/demos/images/nature-7.jpg differ diff --git a/static/libs/swiper-5.3.8/demos/images/nature-8.jpg b/static/libs/swiper-5.3.8/demos/images/nature-8.jpg new file mode 100644 index 0000000..2e5c89b Binary files /dev/null and b/static/libs/swiper-5.3.8/demos/images/nature-8.jpg differ diff --git a/static/libs/swiper-5.3.8/demos/images/nature-9.jpg b/static/libs/swiper-5.3.8/demos/images/nature-9.jpg new file mode 100644 index 0000000..377eefb Binary files /dev/null and b/static/libs/swiper-5.3.8/demos/images/nature-9.jpg differ diff --git a/static/libs/swiper-5.3.8/gulpfile.js b/static/libs/swiper-5.3.8/gulpfile.js new file mode 100644 index 0000000..365c637 --- /dev/null +++ b/static/libs/swiper-5.3.8/gulpfile.js @@ -0,0 +1 @@ +require('./scripts/gulpfile'); diff --git a/static/libs/swiper-5.3.8/package-lock.json b/static/libs/swiper-5.3.8/package-lock.json new file mode 100644 index 0000000..12ee3d4 --- /dev/null +++ b/static/libs/swiper-5.3.8/package-lock.json @@ -0,0 +1,6689 @@ +{ + "name": "swiper-src", + "version": "5.3.6", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "dev": true + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@rollup/plugin-buble": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-buble/-/plugin-buble-0.21.1.tgz", + "integrity": "sha512-Tmd4V95cVyGTwh7qc9ZNkg53E/isFY4q/sqZK7mSyGajYp9Wb0gbJyZWAzYlg9kZxEHmwCDlvcHDcn56SpOCCQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.4", + "@types/buble": "^0.19.2", + "buble": "^0.19.8" + } + }, + "@rollup/plugin-node-resolve": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.1.tgz", + "integrity": "sha512-14ddhD7TnemeHE97a4rLOhobfYvUVcaYuqTnL8Ti7Jxi9V9Jr5LY7Gko4HZ5k4h4vqQM0gBQt6tsp9xXW94WPA==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.6", + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.14.2" + }, + "dependencies": { + "builtin-modules": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", + "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", + "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 + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "@rollup/plugin-replace": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.3.1.tgz", + "integrity": "sha512-qDcXj2VOa5+j0iudjb+LiwZHvBRRgWbHPhRmo1qde2KItTjuxDVQO21rp9/jOlzKR5YO0EsgRQoyox7fnL7y/A==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.4", + "magic-string": "^0.25.5" + }, + "dependencies": { + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + } + } + }, + "@rollup/pluginutils": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.0.8.tgz", + "integrity": "sha512-rYGeAc4sxcZ+kPG/Tw4/fwJODC3IXHYDH4qusdN/b6aLw5LPUbzpecYbEJh4sVQGPFJxd2dBU4kc1H3oy9/bnw==", + "dev": true, + "requires": { + "estree-walker": "^1.0.1" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@types/buble": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@types/buble/-/buble-0.19.2.tgz", + "integrity": "sha512-uUD8zIfXMKThmFkahTXDGI3CthFH1kMg2dOm3KLi4GlC5cbARA64bEcUMbbWdWdE73eoc/iBB9PiTMqH0dNS2Q==", + "dev": true, + "requires": { + "magic-string": "^0.25.0" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@types/node": { + "version": "12.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.5.tgz", + "integrity": "sha512-9fq4jZVhPNW8r+UYKnxF1e2HkDWOWKM5bC2/7c9wPV835I0aOrVbS/Hw/pWPk2uKrNXQqg9Z959Kz+IYDd5p3w==", + "dev": true + }, + "@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "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 + }, + "acorn-jsx": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz", + "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==", + "dev": true + }, + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "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 + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "dev": true, + "requires": { + "buffer-equal": "^1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "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-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "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-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "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-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "dev": true, + "requires": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dev": true, + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dev": true, + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "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 + } + } + }, + "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 + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true, + "optional": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + }, + "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 + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + }, + "dependencies": { + "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 + } + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "dev": true, + "requires": { + "async-done": "^1.2.2" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true, + "optional": 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.7.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.6.tgz", + "integrity": "sha512-F7cYpbN7uVVhACZTeeIeealwdGM6wMtfWARVLTy5xmKtgVdBNJvbDRoCK3YO1orcs7gv/KwYlb3iXwu9Ug9BkQ==", + "dev": true, + "requires": { + "browserslist": "^4.11.1", + "caniuse-lite": "^1.0.30001039", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.27", + "postcss-value-parser": "^4.0.3" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true, + "optional": true + }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "dev": true, + "requires": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + } + }, + "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" + } + } + } + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "body": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", + "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", + "dev": true, + "requires": { + "continuable-cache": "^0.3.1", + "error": "^7.0.0", + "raw-body": "~1.1.0", + "safe-json-parse": "~1.0.1" + } + }, + "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" + } + } + } + }, + "browserslist": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.1.tgz", + "integrity": "sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001038", + "electron-to-chromium": "^1.3.390", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" + } + }, + "buble": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/buble/-/buble-0.19.8.tgz", + "integrity": "sha512-IoGZzrUTY5fKXVkgGHw3QeXFMUNBFv+9l8a4QJKG1JhG3nCMHTdEX1DCOg8568E2Q9qvAQIiSokv6Jsgx8p2cA==", + "dev": true, + "requires": { + "acorn": "^6.1.1", + "acorn-dynamic-import": "^4.0.0", + "acorn-jsx": "^5.0.1", + "chalk": "^2.4.2", + "magic-string": "^0.25.3", + "minimist": "^1.2.0", + "os-homedir": "^2.0.0", + "regexpu-core": "^4.5.4" + }, + "dependencies": { + "acorn": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", + "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "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 + }, + "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 + }, + "bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "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" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "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-lite": { + "version": "1.0.30001040", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001040.tgz", + "integrity": "sha512-Ep0tEPeI5wCvmJNrXjE3etgfI+lkl1fTDU6Y3ZH1mhrjkPlVI9W4pcKbMo+BQLpEWKVYYp2EmYaRsqpPC3k7lQ==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true, + "optional": 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" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "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" + } + } + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", + "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "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" + } + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + } + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.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.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "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-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + }, + "dependencies": { + "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 + }, + "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" + } + }, + "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" + } + } + } + }, + "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-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "dev": true, + "requires": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "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-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-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colors": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.3.tgz", + "integrity": "sha512-qTfM2pNFeMZcLvf/RbrVAzDEVttZjFhaApfx9dplNjvHSX88Ui66zBRb/4YGob/xUWxDceirgoC1lT676asfCQ==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "optional": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "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 + }, + "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" + } + }, + "confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", + "dev": true + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + }, + "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" + } + } + } + }, + "connect-livereload": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.6.0.tgz", + "integrity": "sha1-+fAJh0rWg3GDr7FwtMTjhXodfOs=", + "dev": true + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "continuable-cache": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", + "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-props": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", + "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", + "dev": true, + "requires": { + "each-props": "^1.3.0", + "is-plain-object": "^2.0.1" + } + }, + "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 + }, + "cross-env": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.0.tgz", + "integrity": "sha512-rV6M9ldNgmwP7bx5u6rZsTbYidzwvrwIYZnT08hSGLcQCcggofgFW+sNe7IhA1SRauPS0QuLbbX+wdNtpqE5CQ==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "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" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "^0.10.9" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dev": true, + "requires": { + "kind-of": "^5.0.2" + }, + "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 + } + } + }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", + "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, + "optional": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom7": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/dom7/-/dom7-2.1.3.tgz", + "integrity": "sha512-QTxHHDox+M6ZFz1zHPAHZKI3JOHY5iY4i9BK2uctlggxKQwRhO3q3HHFq1BKsT25Bm/ySSj70K6Wk/G4bs9rMQ==", + "requires": { + "ssr-window": "^1.0.1" + } + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.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, + "optional": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.402", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.402.tgz", + "integrity": "sha512-gaCDfX7IUH0s3JmBiHCDPrvVcdnTTP1r4WLJc2dHkYYbLmXZ2XHiJCcGQ9Balf91aKTvuCKCyu2JjJYRykoI1w==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "optional": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", + "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", + "dev": true, + "requires": { + "string-template": "~0.2.1", + "xtend": "~4.0.0" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.48", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.48.tgz", + "integrity": "sha512-CdRvPlX/24Mj5L4NVxTs4804sxiS2CjVprgCmrgoDkdmjdY4D+ySHa7K3jJf8R40dFg0tIm3z/dk326LrnuSGw==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.14", + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "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" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-config-airbnb-base": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.1.0.tgz", + "integrity": "sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw==", + "dev": true, + "requires": { + "confusing-browser-globals": "^1.0.9", + "object.assign": "^4.1.0", + "object.entries": "^1.1.1" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.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" + } + }, + "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 + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.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" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.20.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz", + "integrity": "sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.1", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.12.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" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "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 + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "dev": true + } + } + }, + "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 + }, + "esquery": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.2.0.tgz", + "integrity": "sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q==", + "dev": true, + "requires": { + "estraverse": "^5.0.0" + }, + "dependencies": { + "estraverse": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.0.0.tgz", + "integrity": "sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A==", + "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.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "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" + } + } + } + }, + "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" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "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, + "optional": true + }, + "fancy-log": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", + "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "time-stamp": "^1.0.0" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.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" + } + } + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.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" + } + } + } + }, + "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" + } + }, + "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" + } + } + } + }, + "fined": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.1.tgz", + "integrity": "sha512-jQp949ZmEbiYHk3gkbdtpJ0G1+kgtLQBNdP5edFP7Fh+WAYceLQz6yO1SBj72Xkg8GVyTB3bBzAYrHJVh5Xd5g==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "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 + }, + "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" + } + }, + "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" + } + } + } + }, + "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, + "optional": 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, + "optional": 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" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.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": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "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.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "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.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "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.7.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 + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "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-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, + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "dependencies": { + "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" + } + }, + "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" + } + } + } + }, + "glob-watcher": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", + "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "object.defaults": "^1.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-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": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "glogg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", + "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dev": true, + "requires": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "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" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "gulp-cli": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz", + "integrity": "sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.1.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.0.1", + "yargs": "^7.1.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" + } + }, + "liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + } + } + }, + "gulp-connect": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/gulp-connect/-/gulp-connect-5.7.0.tgz", + "integrity": "sha512-8tRcC6wgXMLakpPw9M7GRJIhxkYdgZsXwn7n56BA2bQYGLR9NOPhMzx7js+qYDy6vhNkbApGKURjAw1FjY4pNA==", + "dev": true, + "requires": { + "ansi-colors": "^2.0.5", + "connect": "^3.6.6", + "connect-livereload": "^0.6.0", + "fancy-log": "^1.3.2", + "map-stream": "^0.0.7", + "send": "^0.16.2", + "serve-index": "^1.9.1", + "serve-static": "^1.13.2", + "tiny-lr": "^1.1.1" + }, + "dependencies": { + "ansi-colors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-2.0.5.tgz", + "integrity": "sha512-yAdfUZ+c2wetVNIFsNRn44THW+Lty6S5TwMpUfLA/UaGhiXbBv/F8E60/1hMLd0cnF/CDoWH8vzVaI5bAcHCjw==", + "dev": true + } + } + }, + "gulp-open": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/gulp-open/-/gulp-open-3.0.1.tgz", + "integrity": "sha512-dohokw+npnt48AsD0hhvCLEHLnDMqM35F+amvIfJlX1H2nNHYUClR0Oy1rI0TvbL1/pHiHGNLmohhk+kvwIKjA==", + "dev": true, + "requires": { + "colors": "^1.1.2", + "opn": "5.2.0", + "plugin-log": "^0.1.0", + "through2": "^2.0.1" + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "^1.0.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "optional": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "optional": 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" + } + }, + "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-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" + } + } + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "dependencies": { + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", + "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "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" + } + }, + "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 + }, + "inquirer": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "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": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.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.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.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.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "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-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": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.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-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-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + } + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true, + "optional": true + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", + "dev": true + }, + "is-windows": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.1.tgz", + "integrity": "sha1-MQ23D3QtJZoWo2kgK1GvhCMzENk=", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "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, + "optional": 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.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "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, + "optional": true + }, + "jsesc": { + "version": "0.5.0", + "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true, + "optional": 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-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "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, + "optional": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "just-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", + "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "dev": true, + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, + "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" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "dev": true, + "requires": { + "flush-write-stream": "^1.0.2" + } + }, + "less": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/less/-/less-3.11.1.tgz", + "integrity": "sha512-tlWX341RECuTOvoDIvtFqXsKj072hm3+9ymRBe76/mD6O5ZZecnlAOVDlWAleF2+aohFrxNidXhv2773f6kY7g==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0", + "tslib": "^1.10.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, + "optional": true + } + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "livereload-js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", + "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==", + "dev": true + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.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" + }, + "dependencies": { + "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 + } + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "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" + } + }, + "magic-string": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz", + "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "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-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", + "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" + } + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "dev": true, + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + } + }, + "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" + }, + "dependencies": { + "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" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + } + } + }, + "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" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "requires": { + "mime-db": "~1.33.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "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.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "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" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": 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" + }, + "dependencies": { + "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 + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "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-releases": { + "version": "1.1.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", + "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "dev": true + }, + "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 + }, + "now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "requires": { + "once": "^1.3.2" + } + }, + "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, + "optional": 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-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "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.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.entries": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", + "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "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.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "opn": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.2.0.tgz", + "integrity": "sha512-Jd/GpzPyHF4P2/aNOVmS3lfMSWV9J7cOhCG1s08XCEAsPkB7lp6ddiU0J7XzyQRDUh8BqJ7PchfINjR8jyofRQ==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "os-homedir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-2.0.0.tgz", + "integrity": "sha512-saRNz0DSC5C/I++gFIaJTXoFJMRwiP5zHar5vV3xQ2TkgEw6hDCcU5F272JjUylpiVgBrZNQHnfjkLabTfb92Q==", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "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 + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "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" + } + }, + "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 + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "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.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true, + "optional": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "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" + } + } + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "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" + } + } + } + }, + "plugin-log": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/plugin-log/-/plugin-log-0.1.0.tgz", + "integrity": "sha1-hgSc9qsQgzOYqTHzaJy67nteEzM=", + "dev": true, + "requires": { + "chalk": "^1.1.1", + "dateformat": "^1.0.11" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.3.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" + } + } + } + }, + "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.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "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-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true, + "optional": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true, + "optional": true + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "qs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.6.0.tgz", + "integrity": "sha512-KIJqT9jQJDQx5h5uAVPimw6yVg2SekOKu959OCtktD3FjzbpvaPr8i4zzg07DOMz+igA4W/aNM7OV8H37pFYfA==", + "dev": true + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", + "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", + "dev": true, + "requires": { + "bytes": "1", + "string_decoder": "0.10" + }, + "dependencies": { + "string_decoder": { + "version": "0.10.31", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "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" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "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": "8.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", + "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "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" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "regexpu-core": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.5.tgz", + "integrity": "sha512-FpI67+ky9J+cDizQUJlIlNZFKual/lUkFr1AG6zOCpwZ9cLrg8UUVakyUQJD7fCDIe9Z2nwTQJNPyonatNmDFQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.1.0", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "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" + } + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "dev": true, + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "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" + } + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "optional": 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.3", + "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.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "dev": true, + "optional": true + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "dev": true, + "optional": true, + "requires": { + "mime-db": "1.43.0" + } + }, + "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, + "optional": true + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true, + "optional": true + } + } + }, + "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-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.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "resolve-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": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "dev": true, + "requires": { + "value-or-function": "^3.0.0" + } + }, + "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 + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "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 + }, + "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" + } + }, + "rollup": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.4.0.tgz", + "integrity": "sha512-dYE2ZKl9+kxuFKDaaSuauZjIPa8hcKDqI7WrOq1pTXYG4GJw+6ypLifGIvCKw5yJpSmuFohuimYpg0wfRXTCLw==", + "dev": true, + "requires": { + "fsevents": "~2.1.2" + }, + "dependencies": { + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "dev": true, + "optional": true + } + } + }, + "run-async": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", + "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "safe-json-parse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", + "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "http://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 + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "dev": true, + "requires": { + "sver-compat": "^1.5.0" + } + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "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" + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + } + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "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" + } + } + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "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" + } + } + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "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 + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.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 + } + } + }, + "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" + } + } + } + }, + "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-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.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "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 + }, + "sourcemap-codec": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz", + "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==", + "dev": true + }, + "sparkles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", + "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", + "dev": true + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "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.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "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, + "optional": 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" + } + }, + "ssr-window": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-1.0.1.tgz", + "integrity": "sha512-dgFqB+f00LJTEgb6UXhx0h+SrG50LJvti2yMKMqAgzfUmUXZrLSv2fjULF7AWGwK25EXu8+smLR3jYsJQChPsg==" + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "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" + } + } + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", + "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "dev": true, + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "terser": { + "version": "4.6.11", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.11.tgz", + "integrity": "sha512-76Ynm7OXUG5xhOpblhytE7X58oeNSmC8xnNhjWVo8CksHit0U0kO4hfNbPrrYwowLWFgM2n9L176VNx2QaHmtA==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "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 + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "tiny-lr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", + "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==", + "dev": true, + "requires": { + "body": "^5.1.0", + "debug": "^3.1.0", + "faye-websocket": "~0.10.0", + "livereload-js": "^2.3.0", + "object-assign": "^4.1.0", + "qs": "^6.4.0" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, + "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" + } + }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "dev": true, + "requires": { + "through2": "^2.0.3" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "optional": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", + "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, + "optional": 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, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "undertaker": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz", + "integrity": "sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", + "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.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.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.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "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 + }, + "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-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true, + "optional": true + }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "dev": true + }, + "v8flags": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", + "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "dev": true, + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "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": { + "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 + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "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 + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + } + } +} diff --git a/static/libs/swiper-5.3.8/package.json b/static/libs/swiper-5.3.8/package.json new file mode 100644 index 0000000..7de6ff9 --- /dev/null +++ b/static/libs/swiper-5.3.8/package.json @@ -0,0 +1,79 @@ +{ + "name": "swiper-src", + "version": "5.3.8", + "description": "Most modern mobile touch slider and framework with hardware accelerated transitions", + "scripts": { + "build:dev": "cross-env NODE_ENV=development gulp build", + "build:prod": "cross-env NODE_ENV=production gulp build", + "build-icons-font": "python ./scripts/icon-font/generate.py", + "dev": "cross-env NODE_ENV=development gulp build && cross-env NODE_ENV=development gulp playground && cross-env NODE_ENV=development gulp server", + "prod": "cross-env NODE_ENV=production gulp playground && cross-env NODE_ENV=production gulp server", + "lint": "eslint .", + "lint-fix": "eslint . --fix", + "test": "npm run lint && npm run build:dev" + }, + "repository": { + "type": "git", + "url": "https://github.com/nolimits4web/Swiper.git" + }, + "keywords": [ + "swiper", + "swipe", + "slider", + "touch", + "ios", + "mobile", + "cordova", + "phonegap", + "app", + "framework", + "framework7", + "carousel", + "gallery", + "plugin" + ], + "author": "Vladimir Kharlampidi", + "license": "MIT", + "bugs": { + "url": "https://github.com/nolimits4web/Swiper/issues" + }, + "homepage": "http://swiperjs.com", + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/vladimirkharlampidi" + }, + "engines": { + "node": ">= 4.7.0" + }, + "browserslist": [ + "Android >= 7", + "IOS >= 11", + "Safari >= 11", + "Chrome >= 49", + "Firefox >= 31", + "Samsung >= 5" + ], + "devDependencies": { + "@rollup/plugin-buble": "^0.21.1", + "@rollup/plugin-node-resolve": "^7.1.1", + "@rollup/plugin-replace": "^2.3.1", + "autoprefixer": "^9.7.6", + "clean-css": "^4.2.3", + "cross-env": "^7.0.0", + "eslint": "^6.8.0", + "eslint-config-airbnb-base": "^14.1.0", + "eslint-plugin-import": "^2.20.2", + "glob": "^7.1.6", + "gulp": "^4.0.2", + "gulp-connect": "^5.7.0", + "gulp-open": "^3.0.1", + "less": "^3.11.1", + "postcss": "^7.0.27", + "rollup": "^2.4.0", + "terser": "^4.6.11" + }, + "dependencies": { + "dom7": "^2.1.3", + "ssr-window": "^1.0.1" + } +} diff --git a/static/libs/swiper-5.3.8/package/LICENSE b/static/libs/swiper-5.3.8/package/LICENSE new file mode 100644 index 0000000..a7876ca --- /dev/null +++ b/static/libs/swiper-5.3.8/package/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2019 Vladimir Kharlampidi + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/static/libs/swiper-5.3.8/package/README.md b/static/libs/swiper-5.3.8/package/README.md new file mode 100644 index 0000000..85a7aff --- /dev/null +++ b/static/libs/swiper-5.3.8/package/README.md @@ -0,0 +1,11 @@ +Swiper +========== + +Swiper - is the free and most modern mobile touch slider with hardware accelerated transitions and amazing native behavior. It is intended to be used in mobile websites, mobile web apps, and mobile native/hybrid apps. + +Swiper is not compatible with all platforms, it is a modern touch slider which is focused only on modern apps/platforms to bring the best experience and simplicity. + +# Getting Started + * [Getting Started Guide](https://swiperjs.com/get-started/) + * [API](https://swiperjs.com/api/) + * [Demos](https://swiperjs.com/demos/) diff --git a/static/libs/swiper-5.3.8/package/components/a11y/a11y.less b/static/libs/swiper-5.3.8/package/components/a11y/a11y.less new file mode 100644 index 0000000..0f55f89 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/a11y/a11y.less @@ -0,0 +1,9 @@ +/* a11y */ +.swiper-container .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/static/libs/swiper-5.3.8/package/components/a11y/a11y.scss b/static/libs/swiper-5.3.8/package/components/a11y/a11y.scss new file mode 100644 index 0000000..0f55f89 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/a11y/a11y.scss @@ -0,0 +1,9 @@ +/* a11y */ +.swiper-container .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/static/libs/swiper-5.3.8/package/components/controller/controller.less b/static/libs/swiper-5.3.8/package/components/controller/controller.less new file mode 100644 index 0000000..e69de29 diff --git a/static/libs/swiper-5.3.8/package/components/controller/controller.scss b/static/libs/swiper-5.3.8/package/components/controller/controller.scss new file mode 100644 index 0000000..e69de29 diff --git a/static/libs/swiper-5.3.8/package/components/core/core.less b/static/libs/swiper-5.3.8/package/components/core/core.less new file mode 100644 index 0000000..e5fcf28 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/core/core.less @@ -0,0 +1,111 @@ +:root { + --swiper-theme-color: @themeColor; +} +.swiper-container { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index:1; +} +.swiper-container-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position:relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property:transform; + box-sizing: content-box; +} +.swiper-container-android .swiper-slide, .swiper-wrapper { + transform:translate3d(0px,0,0); +} +.swiper-container-multirow > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-container-multirow-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} +.swiper-container-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-container-autoheight, .swiper-container-autoheight .swiper-slide { + height: auto; +} +.swiper-container-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} + +/* 3D Effects */ +.swiper-container-3d { + perspective: 1200px; + .swiper-wrapper, .swiper-slide, .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-cube-shadow { + transform-style: preserve-3d; + } + .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } +} + +/* CSS Mode */ +.swiper-container-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } +} +.swiper-container-horizontal.swiper-container-css-mode { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } +} +.swiper-container-vertical.swiper-container-css-mode { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } +} diff --git a/static/libs/swiper-5.3.8/package/components/core/core.scss b/static/libs/swiper-5.3.8/package/components/core/core.scss new file mode 100644 index 0000000..e4df1f2 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/core/core.scss @@ -0,0 +1,115 @@ +:root { + --swiper-theme-color: #{$themeColor}; +} +.swiper-container { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index:1; +} +.swiper-container-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position:relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property:transform; + box-sizing: content-box; +} +.swiper-container-android .swiper-slide, +.swiper-wrapper { + transform:translate3d(0px,0,0); +} +.swiper-container-multirow > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-container-multirow-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} +.swiper-container-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-container-autoheight { + &, .swiper-slide { + height: auto; + } + + .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; + } +} + +/* 3D Effects */ +.swiper-container-3d { + perspective: 1200px; + .swiper-wrapper, .swiper-slide, .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-cube-shadow { + transform-style: preserve-3d; + } + .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } +} + +/* CSS Mode */ +.swiper-container-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } +} +.swiper-container-horizontal.swiper-container-css-mode { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } +} +.swiper-container-vertical.swiper-container-css-mode { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } +} diff --git a/static/libs/swiper-5.3.8/package/components/effect-coverflow/effect-coverflow.less b/static/libs/swiper-5.3.8/package/components/effect-coverflow/effect-coverflow.less new file mode 100644 index 0000000..99f258b --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/effect-coverflow/effect-coverflow.less @@ -0,0 +1 @@ +.swiper-container-coverflow {} diff --git a/static/libs/swiper-5.3.8/package/components/effect-coverflow/effect-coverflow.scss b/static/libs/swiper-5.3.8/package/components/effect-coverflow/effect-coverflow.scss new file mode 100644 index 0000000..99f258b --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/effect-coverflow/effect-coverflow.scss @@ -0,0 +1 @@ +.swiper-container-coverflow {} diff --git a/static/libs/swiper-5.3.8/package/components/effect-cube/effect-cube.less b/static/libs/swiper-5.3.8/package/components/effect-cube/effect-cube.less new file mode 100644 index 0000000..cbb0ead --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/effect-cube/effect-cube.less @@ -0,0 +1,43 @@ +.swiper-container-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-container-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, .swiper-slide-next, .swiper-slide-prev, .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } + .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + background: #000; + opacity: 0.6; + -webkit-filter: blur(50px); + filter: blur(50px); + z-index: 0; + } +} diff --git a/static/libs/swiper-5.3.8/package/components/effect-cube/effect-cube.scss b/static/libs/swiper-5.3.8/package/components/effect-cube/effect-cube.scss new file mode 100644 index 0000000..cbb0ead --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/effect-cube/effect-cube.scss @@ -0,0 +1,43 @@ +.swiper-container-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-container-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, .swiper-slide-next, .swiper-slide-prev, .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } + .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + background: #000; + opacity: 0.6; + -webkit-filter: blur(50px); + filter: blur(50px); + z-index: 0; + } +} diff --git a/static/libs/swiper-5.3.8/package/components/effect-fade/effect-fade.less b/static/libs/swiper-5.3.8/package/components/effect-fade/effect-fade.less new file mode 100644 index 0000000..1b146b0 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/effect-fade/effect-fade.less @@ -0,0 +1,19 @@ +.swiper-container-fade { + &.swiper-container-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/static/libs/swiper-5.3.8/package/components/effect-fade/effect-fade.scss b/static/libs/swiper-5.3.8/package/components/effect-fade/effect-fade.scss new file mode 100644 index 0000000..1b146b0 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/effect-fade/effect-fade.scss @@ -0,0 +1,19 @@ +.swiper-container-fade { + &.swiper-container-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/static/libs/swiper-5.3.8/package/components/effect-flip/effect-flip.less b/static/libs/swiper-5.3.8/package/components/effect-flip/effect-flip.less new file mode 100644 index 0000000..3989cfb --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/effect-flip/effect-flip.less @@ -0,0 +1,20 @@ +.swiper-container-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} diff --git a/static/libs/swiper-5.3.8/package/components/effect-flip/effect-flip.scss b/static/libs/swiper-5.3.8/package/components/effect-flip/effect-flip.scss new file mode 100644 index 0000000..3989cfb --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/effect-flip/effect-flip.scss @@ -0,0 +1,20 @@ +.swiper-container-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} diff --git a/static/libs/swiper-5.3.8/package/components/lazy/lazy.less b/static/libs/swiper-5.3.8/package/components/lazy/lazy.less new file mode 100644 index 0000000..caaf125 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/lazy/lazy.less @@ -0,0 +1,34 @@ +/* Preloader */ +:root { + /* + --swiper-preloader-color: var(--swiper-theme-color); + */ +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + animation: swiper-preloader-spin 1s infinite linear; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} + +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 100% { + transform: rotate(360deg); + } +} diff --git a/static/libs/swiper-5.3.8/package/components/lazy/lazy.scss b/static/libs/swiper-5.3.8/package/components/lazy/lazy.scss new file mode 100644 index 0000000..caaf125 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/lazy/lazy.scss @@ -0,0 +1,34 @@ +/* Preloader */ +:root { + /* + --swiper-preloader-color: var(--swiper-theme-color); + */ +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + animation: swiper-preloader-spin 1s infinite linear; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} + +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 100% { + transform: rotate(360deg); + } +} diff --git a/static/libs/swiper-5.3.8/package/components/navigation/navigation.less b/static/libs/swiper-5.3.8/package/components/navigation/navigation.less new file mode 100644 index 0000000..96043fd --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/navigation/navigation.less @@ -0,0 +1,60 @@ +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, .swiper-button-next { + position: absolute; + top: 50%; + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(-1 * var(--swiper-navigation-size) / 2); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + text-transform: none; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-container-rtl .swiper-button-next { + &:after { + content: 'prev'; + } + left: 10px; + right: auto; +} +.swiper-button-next, +.swiper-container-rtl .swiper-button-prev { + &:after { + content: 'next'; + } + right: 10px; + left: auto; +} +.navigation-color-loop({ + .swiper-button-prev, + .swiper-button-next { + &.swiper-button-@{navColorName} { + --swiper-navigation-color: @navColorValue; + } + } +}); +.swiper-button-lock { + display: none; +} diff --git a/static/libs/swiper-5.3.8/package/components/navigation/navigation.scss b/static/libs/swiper-5.3.8/package/components/navigation/navigation.scss new file mode 100644 index 0000000..bdca5ef --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/navigation/navigation.scss @@ -0,0 +1,61 @@ +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, .swiper-button-next { + position: absolute; + top: 50%; + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(-1 * var(--swiper-navigation-size) / 2); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + text-transform: none; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-container-rtl .swiper-button-next { + &:after { + content: 'prev'; + } + left: 10px; + right: auto; +} +.swiper-button-next, +.swiper-container-rtl .swiper-button-prev { + &:after { + content: 'next'; + } + right: 10px; + left: auto; +} + +@each $navColorName, $navColorValue in $colors { + .swiper-button-prev, + .swiper-button-next { + &.swiper-button-#{$navColorName} { + --swiper-navigation-color: #{$navColorValue}; + } + } +} +.swiper-button-lock { + display: none; +} diff --git a/static/libs/swiper-5.3.8/package/components/pagination/pagination.less b/static/libs/swiper-5.3.8/package/components/pagination/pagination.less new file mode 100644 index 0000000..8db644e --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/pagination/pagination.less @@ -0,0 +1,149 @@ +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0,0,0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } +} +/* Common Styles */ +.swiper-pagination-fraction, .swiper-pagination-custom, .swiper-container-horizontal > .swiper-pagination-bullets{ + bottom: 10px; + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: 8px; + height: 8px; + display: inline-block; + border-radius: 100%; + background: #000; + opacity: 0.2; + button& { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } +} +.swiper-pagination-bullet-active { + opacity: 1; + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-container-vertical { + > .swiper-pagination-bullets { + right: 10px; + top: 50%; + transform:translate3d(0px,-50%,0); + .swiper-pagination-bullet { + margin: 6px 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, 200ms top; + } + } + } +} +.swiper-container-horizontal { + > .swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 4px; + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: 200ms transform, 200ms left; + } + } + } + &.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, 200ms right; + } +} +/* Progress */ +.swiper-pagination-progressbar { + background: rgba(0,0,0,0.25); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-container-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-container-horizontal > &, + .swiper-container-vertical > &.swiper-pagination-progressbar-opposite { + width: 100%; + height: 4px; + left: 0; + top: 0; + } + .swiper-container-vertical > &, + .swiper-container-horizontal > &.swiper-pagination-progressbar-opposite { + width: 4px; + height: 100%; + left: 0; + top: 0; + } +} +.pagination-color-loop({ + .swiper-pagination-@{paginationColorName} { + --swiper-pagination-color: @paginationColorValue; + } +}); +.swiper-pagination-lock { + display: none; +} diff --git a/static/libs/swiper-5.3.8/package/components/pagination/pagination.scss b/static/libs/swiper-5.3.8/package/components/pagination/pagination.scss new file mode 100644 index 0000000..759331e --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/pagination/pagination.scss @@ -0,0 +1,149 @@ +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0,0,0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } +} +/* Common Styles */ +.swiper-pagination-fraction, .swiper-pagination-custom, .swiper-container-horizontal > .swiper-pagination-bullets{ + bottom: 10px; + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: 8px; + height: 8px; + display: inline-block; + border-radius: 100%; + background: #000; + opacity: 0.2; + @at-root button#{&} { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } +} +.swiper-pagination-bullet-active { + opacity: 1; + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-container-vertical { + > .swiper-pagination-bullets { + right: 10px; + top: 50%; + transform:translate3d(0px,-50%,0); + .swiper-pagination-bullet { + margin: 6px 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, 200ms top; + } + } + } +} +.swiper-container-horizontal { + > .swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 4px; + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: 200ms transform, 200ms left; + } + } + } + &.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, 200ms right; + } +} +/* Progress */ +.swiper-pagination-progressbar { + background: rgba(0,0,0,0.25); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-container-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-container-horizontal > &, + .swiper-container-vertical > &.swiper-pagination-progressbar-opposite { + width: 100%; + height: 4px; + left: 0; + top: 0; + } + .swiper-container-vertical > &, + .swiper-container-horizontal > &.swiper-pagination-progressbar-opposite { + width: 4px; + height: 100%; + left: 0; + top: 0; + } +} +@each $paginationColorName, $paginationColorValue in $colors { + .swiper-pagination-#{$paginationColorName} { + --swiper-pagination-color: #{$paginationColorValue}; + } +} +.swiper-pagination-lock { + display: none; +} diff --git a/static/libs/swiper-5.3.8/package/components/scrollbar/scrollbar.less b/static/libs/swiper-5.3.8/package/components/scrollbar/scrollbar.less new file mode 100644 index 0000000..abe1843 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/scrollbar/scrollbar.less @@ -0,0 +1,38 @@ +/* Scrollbar */ +.swiper-scrollbar { + border-radius: 10px; + position: relative; + -ms-touch-action: none; + background: rgba(0,0,0,0.1); + .swiper-container-horizontal > & { + position: absolute; + left: 1%; + bottom: 3px; + z-index: 50; + height: 5px; + width: 98%; + } + .swiper-container-vertical > & { + position: absolute; + right: 3px; + top: 1%; + z-index: 50; + width: 5px; + height: 98%; + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: rgba(0,0,0,0.5); + border-radius: 10px; + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/package/components/scrollbar/scrollbar.scss b/static/libs/swiper-5.3.8/package/components/scrollbar/scrollbar.scss new file mode 100644 index 0000000..abe1843 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/scrollbar/scrollbar.scss @@ -0,0 +1,38 @@ +/* Scrollbar */ +.swiper-scrollbar { + border-radius: 10px; + position: relative; + -ms-touch-action: none; + background: rgba(0,0,0,0.1); + .swiper-container-horizontal > & { + position: absolute; + left: 1%; + bottom: 3px; + z-index: 50; + height: 5px; + width: 98%; + } + .swiper-container-vertical > & { + position: absolute; + right: 3px; + top: 1%; + z-index: 50; + width: 5px; + height: 98%; + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: rgba(0,0,0,0.5); + border-radius: 10px; + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/package/components/thumbs/thumbs.less b/static/libs/swiper-5.3.8/package/components/thumbs/thumbs.less new file mode 100644 index 0000000..05ac723 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/thumbs/thumbs.less @@ -0,0 +1,5 @@ +.swiper-container-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/package/components/thumbs/thumbs.scss b/static/libs/swiper-5.3.8/package/components/thumbs/thumbs.scss new file mode 100644 index 0000000..05ac723 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/thumbs/thumbs.scss @@ -0,0 +1,5 @@ +.swiper-container-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/package/components/zoom/zoom.less b/static/libs/swiper-5.3.8/package/components/zoom/zoom.less new file mode 100644 index 0000000..50b5305 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/zoom/zoom.less @@ -0,0 +1,18 @@ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, > svg, > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} + +.swiper-slide-zoomed { + cursor: move; +} diff --git a/static/libs/swiper-5.3.8/package/components/zoom/zoom.scss b/static/libs/swiper-5.3.8/package/components/zoom/zoom.scss new file mode 100644 index 0000000..50b5305 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/components/zoom/zoom.scss @@ -0,0 +1,18 @@ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, > svg, > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} + +.swiper-slide-zoomed { + cursor: move; +} diff --git a/static/libs/swiper-5.3.8/package/css/swiper.css b/static/libs/swiper-5.3.8/package/css/swiper.css new file mode 100644 index 0000000..d84dc3a --- /dev/null +++ b/static/libs/swiper-5.3.8/package/css/swiper.css @@ -0,0 +1,532 @@ +/** + * Swiper 5.3.8 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * http://swiperjs.com + * + * Copyright 2014-2020 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: April 24, 2020 + */ + +@font-face { + font-family: 'swiper-icons'; + src: url("data:application/font-woff;charset=utf-8;base64, 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") format("woff"); + font-weight: 400; + font-style: normal; +} +:root { + --swiper-theme-color: #007aff; +} +.swiper-container { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; +} +.swiper-container-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + box-sizing: content-box; +} +.swiper-container-android .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-container-multirow > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-container-multirow-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} +.swiper-container-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-container-autoheight, +.swiper-container-autoheight .swiper-slide { + height: auto; +} +.swiper-container-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +/* 3D Effects */ +.swiper-container-3d { + perspective: 1200px; +} +.swiper-container-3d .swiper-wrapper, +.swiper-container-3d .swiper-slide, +.swiper-container-3d .swiper-slide-shadow-left, +.swiper-container-3d .swiper-slide-shadow-right, +.swiper-container-3d .swiper-slide-shadow-top, +.swiper-container-3d .swiper-slide-shadow-bottom, +.swiper-container-3d .swiper-cube-shadow { + transform-style: preserve-3d; +} +.swiper-container-3d .swiper-slide-shadow-left, +.swiper-container-3d .swiper-slide-shadow-right, +.swiper-container-3d .swiper-slide-shadow-top, +.swiper-container-3d .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; +} +.swiper-container-3d .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-container-3d .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-container-3d .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-container-3d .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +/* CSS Mode */ +.swiper-container-css-mode > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; + /* For Firefox */ + -ms-overflow-style: none; + /* For Internet Explorer and Edge */ +} +.swiper-container-css-mode > .swiper-wrapper::-webkit-scrollbar { + display: none; +} +.swiper-container-css-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; +} +.swiper-container-horizontal.swiper-container-css-mode > .swiper-wrapper { + scroll-snap-type: x mandatory; +} +.swiper-container-vertical.swiper-container-css-mode > .swiper-wrapper { + scroll-snap-type: y mandatory; +} +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: 50%; + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(-1 * var(--swiper-navigation-size) / 2); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev:after, +.swiper-button-next:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + text-transform: none; + font-variant: initial; + line-height: 1; +} +.swiper-button-prev, +.swiper-container-rtl .swiper-button-next { + left: 10px; + right: auto; +} +.swiper-button-prev:after, +.swiper-container-rtl .swiper-button-next:after { + content: 'prev'; +} +.swiper-button-next, +.swiper-container-rtl .swiper-button-prev { + right: 10px; + left: auto; +} +.swiper-button-next:after, +.swiper-container-rtl .swiper-button-prev:after { + content: 'next'; +} +.swiper-button-prev.swiper-button-white, +.swiper-button-next.swiper-button-white { + --swiper-navigation-color: #ffffff; +} +.swiper-button-prev.swiper-button-black, +.swiper-button-next.swiper-button-black { + --swiper-navigation-color: #000000; +} +.swiper-button-lock { + display: none; +} +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-container-horizontal > .swiper-pagination-bullets { + bottom: 10px; + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: 8px; + height: 8px; + display: inline-block; + border-radius: 100%; + background: #000; + opacity: 0.2; +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet-active { + opacity: 1; + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-container-vertical > .swiper-pagination-bullets { + right: 10px; + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-container-vertical > .swiper-pagination-bullets .swiper-pagination-bullet { + margin: 6px 0; + display: block; +} +.swiper-container-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-container-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, 200ms top; +} +.swiper-container-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 4px; +} +.swiper-container-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-container-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, 200ms left; +} +.swiper-container-horizontal.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, 200ms right; +} +/* Progress */ +.swiper-pagination-progressbar { + background: rgba(0, 0, 0, 0.25); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-container-horizontal > .swiper-pagination-progressbar, +.swiper-container-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite { + width: 100%; + height: 4px; + left: 0; + top: 0; +} +.swiper-container-vertical > .swiper-pagination-progressbar, +.swiper-container-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite { + width: 4px; + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-white { + --swiper-pagination-color: #ffffff; +} +.swiper-pagination-black { + --swiper-pagination-color: #000000; +} +.swiper-pagination-lock { + display: none; +} +/* Scrollbar */ +.swiper-scrollbar { + border-radius: 10px; + position: relative; + -ms-touch-action: none; + background: rgba(0, 0, 0, 0.1); +} +.swiper-container-horizontal > .swiper-scrollbar { + position: absolute; + left: 1%; + bottom: 3px; + z-index: 50; + height: 5px; + width: 98%; +} +.swiper-container-vertical > .swiper-scrollbar { + position: absolute; + right: 3px; + top: 1%; + z-index: 50; + width: 5px; + height: 98%; +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: rgba(0, 0, 0, 0.5); + border-radius: 10px; + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; +} +.swiper-zoom-container > img, +.swiper-zoom-container > svg, +.swiper-zoom-container > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; +} +.swiper-slide-zoomed { + cursor: move; +} +/* Preloader */ +:root { + /* + --swiper-preloader-color: var(--swiper-theme-color); + */ +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + animation: swiper-preloader-spin 1s infinite linear; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 100% { + transform: rotate(360deg); + } +} +/* a11y */ +.swiper-container .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} +.swiper-container-fade.swiper-container-free-mode .swiper-slide { + transition-timing-function: ease-out; +} +.swiper-container-fade .swiper-slide { + pointer-events: none; + transition-property: opacity; +} +.swiper-container-fade .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-container-fade .swiper-slide-active, +.swiper-container-fade .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-container-cube { + overflow: visible; +} +.swiper-container-cube .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-container-cube .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-container-cube.swiper-container-rtl .swiper-slide { + transform-origin: 100% 0; +} +.swiper-container-cube .swiper-slide-active, +.swiper-container-cube .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-container-cube .swiper-slide-active, +.swiper-container-cube .swiper-slide-next, +.swiper-container-cube .swiper-slide-prev, +.swiper-container-cube .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; +} +.swiper-container-cube .swiper-slide-shadow-top, +.swiper-container-cube .swiper-slide-shadow-bottom, +.swiper-container-cube .swiper-slide-shadow-left, +.swiper-container-cube .swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +.swiper-container-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + background: #000; + opacity: 0.6; + -webkit-filter: blur(50px); + filter: blur(50px); + z-index: 0; +} +.swiper-container-flip { + overflow: visible; +} +.swiper-container-flip .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-container-flip .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-container-flip .swiper-slide-active, +.swiper-container-flip .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-container-flip .swiper-slide-shadow-top, +.swiper-container-flip .swiper-slide-shadow-bottom, +.swiper-container-flip .swiper-slide-shadow-left, +.swiper-container-flip .swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} diff --git a/static/libs/swiper-5.3.8/package/css/swiper.min.css b/static/libs/swiper-5.3.8/package/css/swiper.min.css new file mode 100644 index 0000000..d6ba2eb --- /dev/null +++ b/static/libs/swiper-5.3.8/package/css/swiper.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 5.3.8 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * http://swiperjs.com + * + * Copyright 2014-2020 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: April 24, 2020 + */ + +@font-face{font-family:swiper-icons;src:url("data:application/font-woff;charset=utf-8;base64, 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") format("woff");font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}.swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-container-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-container-android .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-container-multirow>.swiper-wrapper{flex-wrap:wrap}.swiper-container-multirow-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-container-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-container-3d{perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-container-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-container-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-container-horizontal.swiper-container-css-mode>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-container-vertical.swiper-container-css-mode>.swiper-wrapper{scroll-snap-type:y mandatory}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(-1 * var(--swiper-navigation-size)/ 2);z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;text-transform:none;font-variant:initial;line-height:1}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-container-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-container-rtl .swiper-button-prev:after{content:'next'}.swiper-button-next.swiper-button-white,.swiper-button-prev.swiper-button-white{--swiper-navigation-color:#ffffff}.swiper-button-next.swiper-button-black,.swiper-button-prev.swiper-button-black{--swiper-navigation-color:#000000}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-container-horizontal>.swiper-pagination-bullets,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:100%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet-active{opacity:1;background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-container-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0px,-50%,0)}.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:6px 0;display:block}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 4px}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-container-horizontal.swiper-container-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-container-horizontal>.swiper-pagination-progressbar,.swiper-container-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-container-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-container-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-white{--swiper-pagination-color:#ffffff}.swiper-pagination-black{--swiper-pagination-color:#000000}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;animation:swiper-preloader-spin 1s infinite linear;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{100%{transform:rotate(360deg)}}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-container-fade.swiper-container-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-container-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube{overflow:visible}.swiper-container-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-container-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-cube.swiper-container-rtl .swiper-slide{transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;background:#000;opacity:.6;-webkit-filter:blur(50px);filter:blur(50px);z-index:0}.swiper-container-flip{overflow:visible}.swiper-container-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-container-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden} \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/package/js/swiper.esm.browser.bundle.js b/static/libs/swiper-5.3.8/package/js/swiper.esm.browser.bundle.js new file mode 100644 index 0000000..c09f3ea --- /dev/null +++ b/static/libs/swiper-5.3.8/package/js/swiper.esm.browser.bundle.js @@ -0,0 +1,8497 @@ +/** + * Swiper 5.3.8 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * http://swiperjs.com + * + * Copyright 2014-2020 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: April 24, 2020 + */ + +/** + * SSR Window 1.0.1 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2018, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: July 18, 2018 + */ +var doc = (typeof document === 'undefined') ? { + body: {}, + addEventListener: function addEventListener() {}, + removeEventListener: function removeEventListener() {}, + activeElement: { + blur: function blur() {}, + nodeName: '', + }, + querySelector: function querySelector() { + return null; + }, + querySelectorAll: function querySelectorAll() { + return []; + }, + getElementById: function getElementById() { + return null; + }, + createEvent: function createEvent() { + return { + initEvent: function initEvent() {}, + }; + }, + createElement: function createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute: function setAttribute() {}, + getElementsByTagName: function getElementsByTagName() { + return []; + }, + }; + }, + location: { hash: '' }, +} : document; // eslint-disable-line + +var win = (typeof window === 'undefined') ? { + document: doc, + navigator: { + userAgent: '', + }, + location: {}, + history: {}, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener: function addEventListener() {}, + removeEventListener: function removeEventListener() {}, + getComputedStyle: function getComputedStyle() { + return { + getPropertyValue: function getPropertyValue() { + return ''; + }, + }; + }, + Image: function Image() {}, + Date: function Date() {}, + screen: {}, + setTimeout: function setTimeout() {}, + clearTimeout: function clearTimeout() {}, +} : window; // eslint-disable-line + +/** + * Dom7 2.1.3 + * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API + * http://framework7.io/docs/dom.html + * + * Copyright 2019, Vladimir Kharlampidi + * The iDangero.us + * http://www.idangero.us/ + * + * Licensed under MIT + * + * Released on: February 11, 2019 + */ + +class Dom7 { + constructor(arr) { + const self = this; + // Create array-like object + for (let i = 0; i < arr.length; i += 1) { + self[i] = arr[i]; + } + self.length = arr.length; + // Return collection with methods + return this; + } +} + +function $(selector, context) { + const arr = []; + let i = 0; + if (selector && !context) { + if (selector instanceof Dom7) { + return selector; + } + } + if (selector) { + // String + if (typeof selector === 'string') { + let els; + let tempParent; + const html = selector.trim(); + if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { + let toCreate = 'div'; + if (html.indexOf(':~]/)) { + // Pure ID selector + els = [doc.getElementById(selector.trim().split('#')[1])]; + } else { + // Other selectors + els = (context || doc).querySelectorAll(selector.trim()); + } + for (i = 0; i < els.length; i += 1) { + if (els[i]) arr.push(els[i]); + } + } + } else if (selector.nodeType || selector === win || selector === doc) { + // Node/element + arr.push(selector); + } else if (selector.length > 0 && selector[0].nodeType) { + // Array of elements or instance of Dom + for (i = 0; i < selector.length; i += 1) { + arr.push(selector[i]); + } + } + } + return new Dom7(arr); +} + +$.fn = Dom7.prototype; +$.Class = Dom7; +$.Dom7 = Dom7; + +function unique(arr) { + const uniqueArray = []; + for (let i = 0; i < arr.length; i += 1) { + if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]); + } + return uniqueArray; +} + +// Classes and attributes +function addClass(className) { + if (typeof className === 'undefined') { + return this; + } + const classes = className.split(' '); + for (let i = 0; i < classes.length; i += 1) { + for (let j = 0; j < this.length; j += 1) { + if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]); + } + } + return this; +} +function removeClass(className) { + const classes = className.split(' '); + for (let i = 0; i < classes.length; i += 1) { + for (let j = 0; j < this.length; j += 1) { + if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]); + } + } + return this; +} +function hasClass(className) { + if (!this[0]) return false; + return this[0].classList.contains(className); +} +function toggleClass(className) { + const classes = className.split(' '); + for (let i = 0; i < classes.length; i += 1) { + for (let j = 0; j < this.length; j += 1) { + if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]); + } + } + return this; +} +function attr(attrs, value) { + if (arguments.length === 1 && typeof attrs === 'string') { + // Get attr + if (this[0]) return this[0].getAttribute(attrs); + return undefined; + } + + // Set attrs + for (let i = 0; i < this.length; i += 1) { + if (arguments.length === 2) { + // String + this[i].setAttribute(attrs, value); + } else { + // Object + // eslint-disable-next-line + for (const attrName in attrs) { + this[i][attrName] = attrs[attrName]; + this[i].setAttribute(attrName, attrs[attrName]); + } + } + } + return this; +} +// eslint-disable-next-line +function removeAttr(attr) { + for (let i = 0; i < this.length; i += 1) { + this[i].removeAttribute(attr); + } + return this; +} +function data(key, value) { + let el; + if (typeof value === 'undefined') { + el = this[0]; + // Get value + if (el) { + if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) { + return el.dom7ElementDataStorage[key]; + } + + const dataKey = el.getAttribute(`data-${key}`); + if (dataKey) { + return dataKey; + } + return undefined; + } + return undefined; + } + + // Set value + for (let i = 0; i < this.length; i += 1) { + el = this[i]; + if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {}; + el.dom7ElementDataStorage[key] = value; + } + return this; +} +// Transforms +// eslint-disable-next-line +function transform(transform) { + for (let i = 0; i < this.length; i += 1) { + const elStyle = this[i].style; + elStyle.webkitTransform = transform; + elStyle.transform = transform; + } + return this; +} +function transition(duration) { + if (typeof duration !== 'string') { + duration = `${duration}ms`; // eslint-disable-line + } + for (let i = 0; i < this.length; i += 1) { + const elStyle = this[i].style; + elStyle.webkitTransitionDuration = duration; + elStyle.transitionDuration = duration; + } + return this; +} +// Events +function on(...args) { + let [eventType, targetSelector, listener, capture] = args; + if (typeof args[1] === 'function') { + [eventType, listener, capture] = args; + targetSelector = undefined; + } + if (!capture) capture = false; + + function handleLiveEvent(e) { + const target = e.target; + if (!target) return; + const eventData = e.target.dom7EventData || []; + if (eventData.indexOf(e) < 0) { + eventData.unshift(e); + } + if ($(target).is(targetSelector)) listener.apply(target, eventData); + else { + const parents = $(target).parents(); // eslint-disable-line + for (let k = 0; k < parents.length; k += 1) { + if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData); + } + } + } + function handleEvent(e) { + const eventData = e && e.target ? e.target.dom7EventData || [] : []; + if (eventData.indexOf(e) < 0) { + eventData.unshift(e); + } + listener.apply(this, eventData); + } + const events = eventType.split(' '); + let j; + for (let i = 0; i < this.length; i += 1) { + const el = this[i]; + if (!targetSelector) { + for (j = 0; j < events.length; j += 1) { + const event = events[j]; + if (!el.dom7Listeners) el.dom7Listeners = {}; + if (!el.dom7Listeners[event]) el.dom7Listeners[event] = []; + el.dom7Listeners[event].push({ + listener, + proxyListener: handleEvent, + }); + el.addEventListener(event, handleEvent, capture); + } + } else { + // Live events + for (j = 0; j < events.length; j += 1) { + const event = events[j]; + if (!el.dom7LiveListeners) el.dom7LiveListeners = {}; + if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = []; + el.dom7LiveListeners[event].push({ + listener, + proxyListener: handleLiveEvent, + }); + el.addEventListener(event, handleLiveEvent, capture); + } + } + } + return this; +} +function off(...args) { + let [eventType, targetSelector, listener, capture] = args; + if (typeof args[1] === 'function') { + [eventType, listener, capture] = args; + targetSelector = undefined; + } + if (!capture) capture = false; + + const events = eventType.split(' '); + for (let i = 0; i < events.length; i += 1) { + const event = events[i]; + for (let j = 0; j < this.length; j += 1) { + const el = this[j]; + let handlers; + if (!targetSelector && el.dom7Listeners) { + handlers = el.dom7Listeners[event]; + } else if (targetSelector && el.dom7LiveListeners) { + handlers = el.dom7LiveListeners[event]; + } + if (handlers && handlers.length) { + for (let k = handlers.length - 1; k >= 0; k -= 1) { + const handler = handlers[k]; + if (listener && handler.listener === listener) { + el.removeEventListener(event, handler.proxyListener, capture); + handlers.splice(k, 1); + } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) { + el.removeEventListener(event, handler.proxyListener, capture); + handlers.splice(k, 1); + } else if (!listener) { + el.removeEventListener(event, handler.proxyListener, capture); + handlers.splice(k, 1); + } + } + } + } + } + return this; +} +function trigger(...args) { + const events = args[0].split(' '); + const eventData = args[1]; + for (let i = 0; i < events.length; i += 1) { + const event = events[i]; + for (let j = 0; j < this.length; j += 1) { + const el = this[j]; + let evt; + try { + evt = new win.CustomEvent(event, { + detail: eventData, + bubbles: true, + cancelable: true, + }); + } catch (e) { + evt = doc.createEvent('Event'); + evt.initEvent(event, true, true); + evt.detail = eventData; + } + // eslint-disable-next-line + el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0); + el.dispatchEvent(evt); + el.dom7EventData = []; + delete el.dom7EventData; + } + } + return this; +} +function transitionEnd(callback) { + const events = ['webkitTransitionEnd', 'transitionend']; + const dom = this; + let i; + function fireCallBack(e) { + /* jshint validthis:true */ + if (e.target !== this) return; + callback.call(this, e); + for (i = 0; i < events.length; i += 1) { + dom.off(events[i], fireCallBack); + } + } + if (callback) { + for (i = 0; i < events.length; i += 1) { + dom.on(events[i], fireCallBack); + } + } + return this; +} +function outerWidth(includeMargins) { + if (this.length > 0) { + if (includeMargins) { + // eslint-disable-next-line + const styles = this.styles(); + return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); + } + return this[0].offsetWidth; + } + return null; +} +function outerHeight(includeMargins) { + if (this.length > 0) { + if (includeMargins) { + // eslint-disable-next-line + const styles = this.styles(); + return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); + } + return this[0].offsetHeight; + } + return null; +} +function offset() { + if (this.length > 0) { + const el = this[0]; + const box = el.getBoundingClientRect(); + const body = doc.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === win ? win.scrollY : el.scrollTop; + const scrollLeft = el === win ? win.scrollX : el.scrollLeft; + return { + top: (box.top + scrollTop) - clientTop, + left: (box.left + scrollLeft) - clientLeft, + }; + } + + return null; +} +function styles() { + if (this[0]) return win.getComputedStyle(this[0], null); + return {}; +} +function css(props, value) { + let i; + if (arguments.length === 1) { + if (typeof props === 'string') { + if (this[0]) return win.getComputedStyle(this[0], null).getPropertyValue(props); + } else { + for (i = 0; i < this.length; i += 1) { + // eslint-disable-next-line + for (let prop in props) { + this[i].style[prop] = props[prop]; + } + } + return this; + } + } + if (arguments.length === 2 && typeof props === 'string') { + for (i = 0; i < this.length; i += 1) { + this[i].style[props] = value; + } + return this; + } + return this; +} +// Iterate over the collection passing elements to `callback` +function each(callback) { + // Don't bother continuing without a callback + if (!callback) return this; + // Iterate over the current collection + for (let i = 0; i < this.length; i += 1) { + // If the callback returns false + if (callback.call(this[i], i, this[i]) === false) { + // End the loop early + return this; + } + } + // Return `this` to allow chained DOM operations + return this; +} +function filter(callback) { + const matchedItems = []; + const dom = this; + for (let i = 0; i < dom.length; i += 1) { + if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]); + } + return new Dom7(matchedItems); +} +// eslint-disable-next-line +function html(html) { + if (typeof html === 'undefined') { + return this[0] ? this[0].innerHTML : undefined; + } + + for (let i = 0; i < this.length; i += 1) { + this[i].innerHTML = html; + } + return this; +} +// eslint-disable-next-line +function text(text) { + if (typeof text === 'undefined') { + if (this[0]) { + return this[0].textContent.trim(); + } + return null; + } + + for (let i = 0; i < this.length; i += 1) { + this[i].textContent = text; + } + return this; +} +function is(selector) { + const el = this[0]; + let compareWith; + let i; + if (!el || typeof selector === 'undefined') return false; + if (typeof selector === 'string') { + if (el.matches) return el.matches(selector); + else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector); + else if (el.msMatchesSelector) return el.msMatchesSelector(selector); + + compareWith = $(selector); + for (i = 0; i < compareWith.length; i += 1) { + if (compareWith[i] === el) return true; + } + return false; + } else if (selector === doc) return el === doc; + else if (selector === win) return el === win; + + if (selector.nodeType || selector instanceof Dom7) { + compareWith = selector.nodeType ? [selector] : selector; + for (i = 0; i < compareWith.length; i += 1) { + if (compareWith[i] === el) return true; + } + return false; + } + return false; +} +function index() { + let child = this[0]; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; +} +// eslint-disable-next-line +function eq(index) { + if (typeof index === 'undefined') return this; + const length = this.length; + let returnIndex; + if (index > length - 1) { + return new Dom7([]); + } + if (index < 0) { + returnIndex = length + index; + if (returnIndex < 0) return new Dom7([]); + return new Dom7([this[returnIndex]]); + } + return new Dom7([this[index]]); +} +function append(...args) { + let newChild; + + for (let k = 0; k < args.length; k += 1) { + newChild = args[k]; + for (let i = 0; i < this.length; i += 1) { + if (typeof newChild === 'string') { + const tempDiv = doc.createElement('div'); + tempDiv.innerHTML = newChild; + while (tempDiv.firstChild) { + this[i].appendChild(tempDiv.firstChild); + } + } else if (newChild instanceof Dom7) { + for (let j = 0; j < newChild.length; j += 1) { + this[i].appendChild(newChild[j]); + } + } else { + this[i].appendChild(newChild); + } + } + } + + return this; +} +function prepend(newChild) { + let i; + let j; + for (i = 0; i < this.length; i += 1) { + if (typeof newChild === 'string') { + const tempDiv = doc.createElement('div'); + tempDiv.innerHTML = newChild; + for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { + this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); + } + } else if (newChild instanceof Dom7) { + for (j = 0; j < newChild.length; j += 1) { + this[i].insertBefore(newChild[j], this[i].childNodes[0]); + } + } else { + this[i].insertBefore(newChild, this[i].childNodes[0]); + } + } + return this; +} +function next(selector) { + if (this.length > 0) { + if (selector) { + if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { + return new Dom7([this[0].nextElementSibling]); + } + return new Dom7([]); + } + + if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]); + return new Dom7([]); + } + return new Dom7([]); +} +function nextAll(selector) { + const nextEls = []; + let el = this[0]; + if (!el) return new Dom7([]); + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if ($(next).is(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return new Dom7(nextEls); +} +function prev(selector) { + if (this.length > 0) { + const el = this[0]; + if (selector) { + if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { + return new Dom7([el.previousElementSibling]); + } + return new Dom7([]); + } + + if (el.previousElementSibling) return new Dom7([el.previousElementSibling]); + return new Dom7([]); + } + return new Dom7([]); +} +function prevAll(selector) { + const prevEls = []; + let el = this[0]; + if (!el) return new Dom7([]); + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if ($(prev).is(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return new Dom7(prevEls); +} +function parent(selector) { + const parents = []; // eslint-disable-line + for (let i = 0; i < this.length; i += 1) { + if (this[i].parentNode !== null) { + if (selector) { + if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode); + } else { + parents.push(this[i].parentNode); + } + } + } + return $(unique(parents)); +} +function parents(selector) { + const parents = []; // eslint-disable-line + for (let i = 0; i < this.length; i += 1) { + let parent = this[i].parentNode; // eslint-disable-line + while (parent) { + if (selector) { + if ($(parent).is(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentNode; + } + } + return $(unique(parents)); +} +function closest(selector) { + let closest = this; // eslint-disable-line + if (typeof selector === 'undefined') { + return new Dom7([]); + } + if (!closest.is(selector)) { + closest = closest.parents(selector).eq(0); + } + return closest; +} +function find(selector) { + const foundElements = []; + for (let i = 0; i < this.length; i += 1) { + const found = this[i].querySelectorAll(selector); + for (let j = 0; j < found.length; j += 1) { + foundElements.push(found[j]); + } + } + return new Dom7(foundElements); +} +function children(selector) { + const children = []; // eslint-disable-line + for (let i = 0; i < this.length; i += 1) { + const childNodes = this[i].childNodes; + + for (let j = 0; j < childNodes.length; j += 1) { + if (!selector) { + if (childNodes[j].nodeType === 1) children.push(childNodes[j]); + } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) { + children.push(childNodes[j]); + } + } + } + return new Dom7(unique(children)); +} +function remove() { + for (let i = 0; i < this.length; i += 1) { + if (this[i].parentNode) this[i].parentNode.removeChild(this[i]); + } + return this; +} +function add(...args) { + const dom = this; + let i; + let j; + for (i = 0; i < args.length; i += 1) { + const toAdd = $(args[i]); + for (j = 0; j < toAdd.length; j += 1) { + dom[dom.length] = toAdd[j]; + dom.length += 1; + } + } + return dom; +} + +const Methods = { + addClass, + removeClass, + hasClass, + toggleClass, + attr, + removeAttr, + data, + transform, + transition, + on, + off, + trigger, + transitionEnd, + outerWidth, + outerHeight, + offset, + css, + each, + html, + text, + is, + index, + eq, + append, + prepend, + next, + nextAll, + prev, + prevAll, + parent, + parents, + closest, + find, + children, + filter, + remove, + add, + styles, +}; + +Object.keys(Methods).forEach((methodName) => { + $.fn[methodName] = $.fn[methodName] || Methods[methodName]; +}); + +const Utils = { + deleteProps(obj) { + const object = obj; + Object.keys(object).forEach((key) => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + }, + nextTick(callback, delay = 0) { + return setTimeout(callback, delay); + }, + now() { + return Date.now(); + }, + getTranslate(el, axis = 'x') { + let matrix; + let curTransform; + let transformMatrix; + + const curStyle = win.getComputedStyle(el, null); + + if (win.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new win.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (win.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (win.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + }, + parseUrlQuery(url) { + const query = {}; + let urlToParse = url || win.location.href; + let i; + let params; + let param; + let length; + if (typeof urlToParse === 'string' && urlToParse.length) { + urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : ''; + params = urlToParse.split('&').filter((paramsPart) => paramsPart !== ''); + length = params.length; + + for (i = 0; i < length; i += 1) { + param = params[i].replace(/#\S+/g, '').split('='); + query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || ''; + } + } + return query; + }, + isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object; + }, + extend(...args) { + const to = Object(args[0]); + for (let i = 1; i < args.length; i += 1) { + const nextSource = args[i]; + if (nextSource !== undefined && nextSource !== null) { + const keysArray = Object.keys(Object(nextSource)); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) { + Utils.extend(to[nextKey], nextSource[nextKey]); + } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) { + to[nextKey] = {}; + Utils.extend(to[nextKey], nextSource[nextKey]); + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + }, +}; + +const Support = (function Support() { + return { + touch: (win.Modernizr && win.Modernizr.touch === true) || (function checkTouch() { + return !!((win.navigator.maxTouchPoints > 0) || ('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch)); + }()), + + pointerEvents: !!win.PointerEvent && ('maxTouchPoints' in win.navigator) && win.navigator.maxTouchPoints > 0, + + observer: (function checkObserver() { + return ('MutationObserver' in win || 'WebkitMutationObserver' in win); + }()), + + passiveListener: (function checkPassiveListener() { + let supportsPassive = false; + try { + const opts = Object.defineProperty({}, 'passive', { + // eslint-disable-next-line + get() { + supportsPassive = true; + }, + }); + win.addEventListener('testPassiveListener', null, opts); + } catch (e) { + // No support + } + return supportsPassive; + }()), + + gestures: (function checkGestures() { + return 'ongesturestart' in win; + }()), + }; +}()); + +class SwiperClass { + constructor(params = {}) { + const self = this; + self.params = params; + + // Events + self.eventsListeners = {}; + + if (self.params && self.params.on) { + Object.keys(self.params.on).forEach((eventName) => { + self.on(eventName, self.params.on[eventName]); + }); + } + } + + on(events, handler, priority) { + const self = this; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach((event) => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + } + + once(events, handler, priority) { + const self = this; + if (typeof handler !== 'function') return self; + function onceHandler(...args) { + self.off(events, onceHandler); + if (onceHandler.f7proxy) { + delete onceHandler.f7proxy; + } + handler.apply(self, args); + } + onceHandler.f7proxy = handler; + return self.on(events, onceHandler, priority); + } + + off(events, handler) { + const self = this; + if (!self.eventsListeners) return self; + events.split(' ').forEach((event) => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event] && self.eventsListeners[event].length) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + } + + emit(...args) { + const self = this; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach((event) => { + if (self.eventsListeners && self.eventsListeners[event]) { + const handlers = []; + self.eventsListeners[event].forEach((eventHandler) => { + handlers.push(eventHandler); + }); + handlers.forEach((eventHandler) => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + + useModulesParams(instanceParams) { + const instance = this; + if (!instance.modules) return; + Object.keys(instance.modules).forEach((moduleName) => { + const module = instance.modules[moduleName]; + // Extend params + if (module.params) { + Utils.extend(instanceParams, module.params); + } + }); + } + + useModules(modulesParams = {}) { + const instance = this; + if (!instance.modules) return; + Object.keys(instance.modules).forEach((moduleName) => { + const module = instance.modules[moduleName]; + const moduleParams = modulesParams[moduleName] || {}; + // Extend instance methods and props + if (module.instance) { + Object.keys(module.instance).forEach((modulePropName) => { + const moduleProp = module.instance[modulePropName]; + if (typeof moduleProp === 'function') { + instance[modulePropName] = moduleProp.bind(instance); + } else { + instance[modulePropName] = moduleProp; + } + }); + } + // Add event listeners + if (module.on && instance.on) { + Object.keys(module.on).forEach((moduleEventName) => { + instance.on(moduleEventName, module.on[moduleEventName]); + }); + } + + // Module create callback + if (module.create) { + module.create.bind(instance)(moduleParams); + } + }); + } + + static set components(components) { + const Class = this; + if (!Class.use) return; + Class.use(components); + } + + static installModule(module, ...params) { + const Class = this; + if (!Class.prototype.modules) Class.prototype.modules = {}; + const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`); + Class.prototype.modules[name] = module; + // Prototype + if (module.proto) { + Object.keys(module.proto).forEach((key) => { + Class.prototype[key] = module.proto[key]; + }); + } + // Class + if (module.static) { + Object.keys(module.static).forEach((key) => { + Class[key] = module.static[key]; + }); + } + // Callback + if (module.install) { + module.install.apply(Class, params); + } + return Class; + } + + static use(module, ...params) { + const Class = this; + if (Array.isArray(module)) { + module.forEach((m) => Class.installModule(m)); + return Class; + } + return Class.installModule(module, ...params); + } +} + +function updateSize () { + const swiper = this; + let width; + let height; + const $el = swiper.$el; + if (typeof swiper.params.width !== 'undefined') { + width = swiper.params.width; + } else { + width = $el[0].clientWidth; + } + if (typeof swiper.params.height !== 'undefined') { + height = swiper.params.height; + } else { + height = $el[0].clientHeight; + } + if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) { + return; + } + + // Subtract paddings + width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10); + height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10); + + Utils.extend(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height, + }); +} + +function updateSlides () { + const swiper = this; + const params = swiper.params; + + const { + $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL, + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = $wrapperEl.children(`.${swiper.params.slideClass}`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + + function slidesForMargin(slideIndex) { + if (!params.cssMode) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + } + + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.snapGrid.length; + + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize; + } + + swiper.virtualSize = -spaceBetween; + + // reset margins + if (rtl) slides.css({ marginLeft: '', marginTop: '' }); + else slides.css({ marginRight: '', marginBottom: '' }); + + let slidesNumberEvenToRows; + if (params.slidesPerColumn > 1) { + if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn; + } + if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn); + } + } + + // Calc slides + let slideSize; + const slidesPerColumn = params.slidesPerColumn; + const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn; + const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn); + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + const slide = slides.eq(i); + if (params.slidesPerColumn > 1) { + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn)); + const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 + ? params.slidesPerGroup + : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup; + + newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn); + slide + .css({ + '-webkit-box-ordinal-group': newSlideOrderIndex, + '-moz-box-ordinal-group': newSlideOrderIndex, + '-ms-flex-order': newSlideOrderIndex, + '-webkit-order': newSlideOrderIndex, + order: newSlideOrderIndex, + }); + } else if (params.slidesPerColumnFill === 'column') { + column = Math.floor(i / slidesPerColumn); + row = i - (column * slidesPerColumn); + if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) { + row += 1; + if (row >= slidesPerColumn) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - (row * slidesPerRow); + } + slide.css( + `margin-${swiper.isHorizontal() ? 'top' : 'left'}`, + (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`) + ); + } + if (slide.css('display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + const slideStyles = win.getComputedStyle(slide[0], null); + const currentTransform = slide[0].style.transform; + const currentWebKitTransform = slide[0].style.webkitTransform; + if (currentTransform) { + slide[0].style.transform = 'none'; + } + if (currentWebKitTransform) { + slide[0].style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() + ? slide.outerWidth(true) + : slide.outerHeight(true); + } else { + // eslint-disable-next-line + if (swiper.isHorizontal()) { + const width = parseFloat(slideStyles.getPropertyValue('width')); + const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left')); + const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right')); + const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left')); + const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right')); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight; + } + } else { + const height = parseFloat(slideStyles.getPropertyValue('height')); + const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top')); + const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom')); + const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top')); + const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom')); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = height + marginTop + marginBottom; + } else { + slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom; + } + } + } + if (currentTransform) { + slide[0].style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide[0].style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + + if (slides[i]) { + if (swiper.isHorizontal()) { + slides[i].style.width = `${slideSize}px`; + } else { + slides[i].style.height = `${slideSize}px`; + } + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + + + if (params.centeredSlides) { + slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; + if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + + swiper.virtualSize += slideSize + spaceBetween; + + prevSlideSize = slideSize; + + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + let newSlidesGrid; + + if ( + rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` }); + } + if (params.setWrapperSize) { + if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` }); + else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` }); + } + + if (params.slidesPerColumn > 1) { + swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween; + if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` }); + else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` }); + if (params.centeredSlides) { + newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid = newSlidesGrid; + } + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (snapGrid.length === 0) snapGrid = [0]; + + if (params.spaceBetween !== 0) { + if (swiper.isHorizontal()) { + if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` }); + else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` }); + } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` }); + } + + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach((slideSizeValue) => { + allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); + }); + allSlidesSize -= params.spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map((snap) => { + if (snap < 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach((slideSizeValue) => { + allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); + }); + allSlidesSize -= params.spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + + Utils.extend(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid, + }); + + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + + if (params.watchSlidesProgress || params.watchSlidesVisibility) { + swiper.updateSlidesOffset(); + } +} + +function updateAutoHeight (speed) { + const swiper = this; + const activeSlides = []; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + swiper.visibleSlides.each((index, slide) => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length) break; + activeSlides.push(swiper.slides.eq(index)[0]); + } + } + } else { + activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`); +} + +function updateSlidesOffset () { + const swiper = this; + const slides = swiper.slides; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; + } +} + +function updateSlidesProgress (translate = (this && this.translate) || 0) { + const swiper = this; + const params = swiper.params; + + const { slides, rtlTranslate: rtl } = swiper; + + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.removeClass(params.slideVisibleClass); + + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + const slideProgress = ( + (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset + ) / (slide.swiperSlideSize + params.spaceBetween); + if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) { + const slideBefore = -(offsetCenter - slide.swiperSlideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1) + || (slideAfter > 1 && slideAfter <= swiper.size) + || (slideBefore <= 0 && slideAfter >= swiper.size); + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides.eq(i).addClass(params.slideVisibleClass); + } + } + slide.progress = rtl ? -slideProgress : slideProgress; + } + swiper.visibleSlides = $(swiper.visibleSlides); +} + +function updateProgress (translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { progress, isBeginning, isEnd } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / (translatesDiff); + isBeginning = progress <= 0; + isEnd = progress >= 1; + } + Utils.extend(swiper, { + progress, + isBeginning, + isEnd, + }); + + if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate); + + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) { + swiper.emit('fromEdge'); + } + + swiper.emit('progress', progress); +} + +function updateSlidesClasses () { + const swiper = this; + + const { + slides, params, $wrapperEl, activeIndex, realIndex, + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + + slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`); + + let activeSlide; + if (isVirtual) { + activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`); + } else { + activeSlide = slides.eq(activeIndex); + } + + // Active classes + activeSlide.addClass(params.slideActiveClass); + + if (params.loop) { + // Duplicate to all looped slides + if (activeSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl + .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`) + .addClass(params.slideDuplicateActiveClass); + } else { + $wrapperEl + .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`) + .addClass(params.slideDuplicateActiveClass); + } + } + // Next Slide + let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass); + if (params.loop && nextSlide.length === 0) { + nextSlide = slides.eq(0); + nextSlide.addClass(params.slideNextClass); + } + // Prev Slide + let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass); + if (params.loop && prevSlide.length === 0) { + prevSlide = slides.eq(-1); + prevSlide.addClass(params.slidePrevClass); + } + if (params.loop) { + // Duplicate to all looped slides + if (nextSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl + .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicateNextClass); + } else { + $wrapperEl + .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicateNextClass); + } + if (prevSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl + .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicatePrevClass); + } else { + $wrapperEl + .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicatePrevClass); + } + } +} + +function updateActiveIndex (newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex, + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + if (typeof activeIndex === 'undefined') { + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + + // Get real index + const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); + + Utils.extend(swiper, { + snapIndex, + realIndex, + previousIndex, + activeIndex, + }); + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + swiper.emit('slideChange'); + } +} + +function updateClickedSlide (e) { + const swiper = this; + const params = swiper.params; + const slide = $(e.target).closest(`.${params.slideClass}`)[0]; + let slideFound = false; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) slideFound = true; + } + } + + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = $(slide).index(); + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } +} + +var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide, +}; + +function getTranslate (axis = this.isHorizontal() ? 'x' : 'y') { + const swiper = this; + + const { + params, rtlTranslate: rtl, translate, $wrapperEl, + } = swiper; + + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + + let currentTranslate = Utils.getTranslate($wrapperEl[0], axis); + if (rtl) currentTranslate = -currentTranslate; + + return currentTranslate || 0; +} + +function setTranslate (translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress, + } = swiper; + let x = 0; + let y = 0; + const z = 0; + + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / (translatesDiff); + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + + swiper.emit('setTranslate', swiper.translate, byController); +} + +function minTranslate () { + return (-this.snapGrid[0]); +} + +function maxTranslate () { + return (-this.snapGrid[this.snapGrid.length - 1]); +} + +function translateTo (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) { + const swiper = this; + + const { + params, + wrapperEl, + } = swiper; + + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate; + else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate; + else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + // eslint-disable-next-line + if (wrapperEl.scrollTo) { + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth', + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } + } + return true; + } + + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); + } + } + + return true; +} + +var translate = { + getTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo, +}; + +function setTransition (duration, byController) { + const swiper = this; + + if (!swiper.params.cssMode) { + swiper.$wrapperEl.transition(duration); + } + + swiper.emit('setTransition', duration, byController); +} + +function transitionStart (runCallbacks = true, direction) { + const swiper = this; + const { activeIndex, params, previousIndex } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next'; + else if (activeIndex < previousIndex) dir = 'prev'; + else dir = 'reset'; + } + + swiper.emit('transitionStart'); + + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit('slideResetTransitionStart'); + return; + } + swiper.emit('slideChangeTransitionStart'); + if (dir === 'next') { + swiper.emit('slideNextTransitionStart'); + } else { + swiper.emit('slidePrevTransitionStart'); + } + } +} + +function transitionEnd$1 (runCallbacks = true, direction) { + const swiper = this; + const { activeIndex, previousIndex, params } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next'; + else if (activeIndex < previousIndex) dir = 'prev'; + else dir = 'reset'; + } + + swiper.emit('transitionEnd'); + + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit('slideResetTransitionEnd'); + return; + } + swiper.emit('slideChangeTransitionEnd'); + if (dir === 'next') { + swiper.emit('slideNextTransitionEnd'); + } else { + swiper.emit('slidePrevTransitionEnd'); + } + } +} + +var transition$1 = { + setTransition, + transitionStart, + transitionEnd: transitionEnd$1, +}; + +function slideTo (index = 0, speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + + const { + params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl, + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + + if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + const translate = -snapGrid[snapIndex]; + + // Update progress + swiper.updateProgress(translate); + + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) return false; + } + } + + let direction; + if (slideIndex > activeIndex) direction = 'next'; + else if (slideIndex < activeIndex) direction = 'prev'; + else direction = 'reset'; + + + // Update Index + if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + let t = -translate; + if (rtl) { + t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t; + } + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } else { + // eslint-disable-next-line + if (wrapperEl.scrollTo) { + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth', + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + } + return true; + } + + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } else { + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); + } + } + + return true; +} + +function slideToLoop (index = 0, speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + let newIndex = index; + if (swiper.params.loop) { + newIndex += swiper.loopedSlides; + } + + return swiper.slideTo(newIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideNext (speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + const { params, animating } = swiper; + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup; + if (params.loop) { + if (animating) return false; + swiper.loopFix(); + // eslint-disable-next-line + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slidePrev (speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + const { + params, animating, snapGrid, slidesGrid, rtlTranslate, + } = swiper; + + if (params.loop) { + if (animating) return false; + swiper.loopFix(); + // eslint-disable-next-line + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map((val) => normalize(val)); + const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val)); + + const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)]; + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + snapGrid.forEach((snap) => { + if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap; + }); + } + let prevIndex; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideReset (speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideToClosest (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) { + const swiper = this; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + + return swiper.slideTo(index, speed, runCallbacks, internal); +} + +function slideToClickedSlide () { + const swiper = this; + const { params, $wrapperEl } = swiper; + + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if ( + (slideToIndex < swiper.loopedSlides - (slidesPerView / 2)) + || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2)) + ) { + swiper.loopFix(); + slideToIndex = $wrapperEl + .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`) + .eq(0) + .index(); + + Utils.nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = $wrapperEl + .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`) + .eq(0) + .index(); + + Utils.nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } +} + +var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide, +}; + +function loopCreate () { + const swiper = this; + const { params, $wrapperEl } = swiper; + // Remove duplicated slides + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove(); + + let slides = $wrapperEl.children(`.${params.slideClass}`); + + if (params.loopFillGroupWithBlank) { + const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup); + if (blankSlidesNum !== params.slidesPerGroup) { + for (let i = 0; i < blankSlidesNum; i += 1) { + const blankNode = $(doc.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`); + $wrapperEl.append(blankNode); + } + slides = $wrapperEl.children(`.${params.slideClass}`); + } + } + + if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length; + + swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10)); + swiper.loopedSlides += params.loopAdditionalSlides; + if (swiper.loopedSlides > slides.length) { + swiper.loopedSlides = slides.length; + } + + const prependSlides = []; + const appendSlides = []; + slides.each((index, el) => { + const slide = $(el); + if (index < swiper.loopedSlides) appendSlides.push(el); + if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el); + slide.attr('data-swiper-slide-index', index); + }); + for (let i = 0; i < appendSlides.length; i += 1) { + $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); + } + for (let i = prependSlides.length - 1; i >= 0; i -= 1) { + $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); + } +} + +function loopFix () { + const swiper = this; + + swiper.emit('beforeLoopFix'); + + const { + activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl, + } = swiper; + let newIndex; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + + const snapTranslate = -snapGrid[activeIndex]; + const diff = snapTranslate - swiper.getTranslate(); + + // Fix For Negative Oversliding + if (activeIndex < loopedSlides) { + newIndex = (slides.length - (loopedSlides * 3)) + activeIndex; + newIndex += loopedSlides; + const slideChanged = swiper.slideTo(newIndex, 0, false, true); + if (slideChanged && diff !== 0) { + swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); + } + } else if (activeIndex >= slides.length - loopedSlides) { + // Fix For Positive Oversliding + newIndex = -slides.length + activeIndex + loopedSlides; + newIndex += loopedSlides; + const slideChanged = swiper.slideTo(newIndex, 0, false, true); + if (slideChanged && diff !== 0) { + swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + + swiper.emit('loopFix'); +} + +function loopDestroy () { + const swiper = this; + const { $wrapperEl, params, slides } = swiper; + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove(); + slides.removeAttr('data-swiper-slide-index'); +} + +var loop = { + loopCreate, + loopFix, + loopDestroy, +}; + +function setGrabCursor (moving) { + const swiper = this; + if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return; + const el = swiper.el; + el.style.cursor = 'move'; + el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab'; + el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab'; + el.style.cursor = moving ? 'grabbing' : 'grab'; +} + +function unsetGrabCursor () { + const swiper = this; + if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return; + swiper.el.style.cursor = ''; +} + +var grabCursor = { + setGrabCursor, + unsetGrabCursor, +}; + +function appendSlide (slides) { + const swiper = this; + const { $wrapperEl, params } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.append(slides[i]); + } + } else { + $wrapperEl.append(slides); + } + if (params.loop) { + swiper.loopCreate(); + } + if (!(params.observer && Support.observer)) { + swiper.update(); + } +} + +function prependSlide (slides) { + const swiper = this; + const { params, $wrapperEl, activeIndex } = swiper; + + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.prepend(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + $wrapperEl.prepend(slides); + } + if (params.loop) { + swiper.loopCreate(); + } + if (!(params.observer && Support.observer)) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); +} + +function addSlide (index, slides) { + const swiper = this; + const { $wrapperEl, params, activeIndex } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.slides = $wrapperEl.children(`.${params.slideClass}`); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides.eq(i); + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + $wrapperEl.append(slides); + } + + for (let i = 0; i < slidesBuffer.length; i += 1) { + $wrapperEl.append(slidesBuffer[i]); + } + + if (params.loop) { + swiper.loopCreate(); + } + if (!(params.observer && Support.observer)) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeSlide (slidesIndexes) { + const swiper = this; + const { params, $wrapperEl, activeIndex } = swiper; + + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.slides = $wrapperEl.children(`.${params.slideClass}`); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + + if (params.loop) { + swiper.loopCreate(); + } + + if (!(params.observer && Support.observer)) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeAllSlides () { + const swiper = this; + + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); +} + +var manipulation = { + appendSlide, + prependSlide, + addSlide, + removeSlide, + removeAllSlides, +}; + +const Device = (function Device() { + const platform = win.navigator.platform; + const ua = win.navigator.userAgent; + + const device = { + ios: false, + android: false, + androidChrome: false, + desktop: false, + iphone: false, + ipod: false, + ipad: false, + edge: false, + ie: false, + firefox: false, + macos: false, + windows: false, + cordova: !!(win.cordova || win.phonegap), + phonegap: !!(win.cordova || win.phonegap), + electron: false, + }; + + const screenWidth = win.screen.width; + const screenHeight = win.screen.height; + + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0; + const edge = ua.indexOf('Edge/') >= 0; + const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0; + const windows = platform === 'Win32'; + const electron = ua.toLowerCase().indexOf('electron') >= 0; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + if (!ipad + && macos + && Support.touch + && ( + (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9 + || (screenWidth === 834 && screenHeight === 1194) // Pro 11 + || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5 + || (screenWidth === 768 && screenHeight === 1024) // other + ) + ) { + ipad = ua.match(/(Version)\/([\d.]+)/); + macos = false; + } + + device.ie = ie; + device.edge = edge; + device.firefox = firefox; + + // Android + if (android && !windows) { + device.os = 'android'; + device.osVersion = android[2]; + device.android = true; + device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + // iOS + if (iphone && !ipod) { + device.osVersion = iphone[2].replace(/_/g, '.'); + device.iphone = true; + } + if (ipad) { + device.osVersion = ipad[2].replace(/_/g, '.'); + device.ipad = true; + } + if (ipod) { + device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null; + device.ipod = true; + } + // iOS 8+ changed UA + if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) { + if (device.osVersion.split('.')[0] === '10') { + device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0]; + } + } + + // Webview + device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || win.navigator.standalone)) + || (win.matchMedia && win.matchMedia('(display-mode: standalone)').matches); + device.webview = device.webView; + device.standalone = device.webView; + + // Desktop + device.desktop = !(device.ios || device.android) || electron; + if (device.desktop) { + device.electron = electron; + device.macos = macos; + device.windows = windows; + if (device.macos) { + device.os = 'macos'; + } + if (device.windows) { + device.os = 'windows'; + } + } + + // Pixel Ratio + device.pixelRatio = win.devicePixelRatio || 1; + + // Export object + return device; +}()); + +function onTouchStart (event) { + const swiper = this; + const data = swiper.touchEventsData; + const { params, touches } = swiper; + + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + let e = event; + if (e.originalEvent) e = e.originalEvent; + const $targetEl = $(e.target); + + if (params.touchEventsTarget === 'wrapper') { + if (!$targetEl.closest(swiper.wrapperEl).length) return; + } + data.isTouchEvent = e.type === 'touchstart'; + if (!data.isTouchEvent && 'which' in e && e.which === 3) return; + if (!data.isTouchEvent && 'button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!$targetEl.closest(params.swipeHandler)[0]) return; + } + + touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; + touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore + + const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; + if ( + edgeSwipeDetection + && ((startX <= edgeSwipeThreshold) + || (startX >= win.screen.width - edgeSwipeThreshold)) + ) { + return; + } + + Utils.extend(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined, + }); + + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = Utils.now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + if (e.type !== 'touchstart') { + let preventDefault = true; + if ($targetEl.is(data.formElements)) preventDefault = false; + if ( + doc.activeElement + && $(doc.activeElement).is(data.formElements) + && doc.activeElement !== $targetEl[0] + ) { + doc.activeElement.blur(); + } + + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if (params.touchStartForcePreventDefault || shouldPreventDefault) { + e.preventDefault(); + } + } + swiper.emit('touchStart', e); +} + +function onTouchMove (event) { + const swiper = this; + const data = swiper.touchEventsData; + const { params, touches, rtlTranslate: rtl } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + if (data.isTouchEvent && e.type === 'mousemove') return; + const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]); + const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX; + const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + // isMoved = true; + swiper.allowClick = false; + if (data.isTouched) { + Utils.extend(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + }); + data.touchStartTime = Utils.now(); + } + return; + } + if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if ( + (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) + || (pageY > touches.startY && swiper.translate >= swiper.minTranslate()) + ) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if ( + (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) + || (pageX > touches.startX && swiper.translate >= swiper.minTranslate()) + ) { + return; + } + } + if (data.isTouchEvent && doc.activeElement) { + if (e.target === doc.activeElement && $(e.target).is(data.formElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + if (e.targetTouches && e.targetTouches.length > 1) return; + + touches.currentX = pageX; + touches.currentY = pageY; + + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return; + + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if ((diffX * diffX) + (diffY * diffY) >= 25) { + touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle); + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + + if (!data.isMoved) { + if (params.loop) { + swiper.loopFix(); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + swiper.emit('sliderMove', e); + data.isMoved = true; + + let diff = swiper.isHorizontal() ? diffX : diffY; + touches.diff = diff; + + diff *= params.touchRatio; + if (rtl) diff = -diff; + + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + data.currentTranslate = diff + data.startTranslate; + + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) { + disableParentSwiper = false; + if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio); + } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio); + } + + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode) { + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime, + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: Utils.now(), + }); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); +} + +function onTouchEnd (event) { + const swiper = this; + const data = swiper.touchEventsData; + + const { + params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid, + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = Utils.now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + swiper.updateClickedSlide(e); + swiper.emit('tap click', e); + if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + + data.lastClickTime = Utils.now(); + Utils.nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + + if (params.cssMode) { + return; + } + + if (params.freeMode) { + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + + if (params.freeModeMomentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeModeMomentumVelocityRatio; + + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeModeMomentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeModeMomentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeModeMomentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeModeSticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + swiper.once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeModeSticky) { + // If freeModeSticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeModeSticky) { + swiper.slideToClosest(); + return; + } + + if (params.freeModeMomentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + swiper.emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeModeSticky) { + swiper.slideToClosest(); + return; + } + + if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) { + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + return; + } + + // Find current slide + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) { + const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup); + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup); + + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment); + else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment); + else swiper.slideTo(stopIndex); + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } +} + +function onResize () { + const swiper = this; + + const { params, el } = swiper; + + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { allowSlideNext, allowSlidePrev, snapGrid } = swiper; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + + swiper.updateSize(); + swiper.updateSlides(); + + swiper.updateSlidesClasses(); + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.run(); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } +} + +function onClick (e) { + const swiper = this; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } +} + +function onScroll () { + const swiper = this; + const { wrapperEl, rtlTranslate } = swiper; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + if (rtlTranslate) { + swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft); + } else { + swiper.translate = -wrapperEl.scrollLeft; + } + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === -0) swiper.translate = 0; + + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff); + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + + swiper.emit('setTranslate', swiper.translate, false); +} + +let dummyEventAttached = false; +function dummyEventListener() {} + +function attachEvents() { + const swiper = this; + const { + params, touchEvents, el, wrapperEl, + } = swiper; + + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + + swiper.onClick = onClick.bind(swiper); + + const capture = !!params.nested; + + // Touch Events + if (!Support.touch && Support.pointerEvents) { + el.addEventListener(touchEvents.start, swiper.onTouchStart, false); + doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture); + doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false); + } else { + if (Support.touch) { + const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); + el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture); + el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); + if (touchEvents.cancel) { + el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener); + } + if (!dummyEventAttached) { + doc.addEventListener('touchstart', dummyEventListener); + dummyEventAttached = true; + } + } + if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { + el.addEventListener('mousedown', swiper.onTouchStart, false); + doc.addEventListener('mousemove', swiper.onTouchMove, capture); + doc.addEventListener('mouseup', swiper.onTouchEnd, false); + } + } + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el.addEventListener('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl.addEventListener('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true); + } else { + swiper.on('observerUpdate', onResize, true); + } +} + +function detachEvents() { + const swiper = this; + + const { + params, touchEvents, el, wrapperEl, + } = swiper; + + const capture = !!params.nested; + + // Touch Events + if (!Support.touch && Support.pointerEvents) { + el.removeEventListener(touchEvents.start, swiper.onTouchStart, false); + doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); + doc.removeEventListener(touchEvents.end, swiper.onTouchEnd, false); + } else { + if (Support.touch) { + const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); + el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); + el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); + if (touchEvents.cancel) { + el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener); + } + } + if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { + el.removeEventListener('mousedown', swiper.onTouchStart, false); + doc.removeEventListener('mousemove', swiper.onTouchMove, capture); + doc.removeEventListener('mouseup', swiper.onTouchEnd, false); + } + } + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el.removeEventListener('click', swiper.onClick, true); + } + + if (params.cssMode) { + wrapperEl.removeEventListener('scroll', swiper.onScroll); + } + + // Resize handler + swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize); +} + +var events = { + attachEvents, + detachEvents, +}; + +function setBreakpoint () { + const swiper = this; + const { + activeIndex, initialized, loopedSlides = 0, params, $el, + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints); + + if (breakpoint && swiper.currentBreakpoint !== breakpoint) { + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + if (breakpointOnlyParams) { + ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => { + const paramValue = breakpointOnlyParams[param]; + if (typeof paramValue === 'undefined') return; + if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) { + breakpointOnlyParams[param] = 'auto'; + } else if (param === 'slidesPerView') { + breakpointOnlyParams[param] = parseFloat(paramValue); + } else { + breakpointOnlyParams[param] = parseInt(paramValue, 10); + } + }); + } + + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = params.slidesPerColumn > 1; + const isMultiRow = breakpointParams.slidesPerColumn > 1; + if (wasMultiRow && !isMultiRow) { + $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`); + } else if (!wasMultiRow && isMultiRow) { + $el.addClass(`${params.containerModifierClass}multirow`); + if (breakpointParams.slidesPerColumnFill === 'column') { + $el.addClass(`${params.containerModifierClass}multirow-column`); + } + } + + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + + if (directionChanged && initialized) { + swiper.changeDirection(); + } + + Utils.extend(swiper.params, breakpointParams); + + Utils.extend(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + }); + + swiper.currentBreakpoint = breakpoint; + + if (needsReLoop && initialized) { + swiper.loopDestroy(); + swiper.loopCreate(); + swiper.updateSlides(); + swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false); + } + + swiper.emit('breakpoint', breakpointParams); + } +} + +function getBreakpoint (breakpoints) { + // Get breakpoint for window width + if (!breakpoints) return undefined; + let breakpoint = false; + + const points = Object.keys(breakpoints).map((point) => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = win.innerHeight * minRatio; + return { value, point }; + } + return { value: point, point }; + }); + + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { point, value } = points[i]; + if (value <= win.innerWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; +} + +var breakpoints = { setBreakpoint, getBreakpoint }; + +function addClasses () { + const swiper = this; + const { + classNames, params, rtl, $el, + } = swiper; + const suffixes = []; + + suffixes.push('initialized'); + suffixes.push(params.direction); + + if (params.freeMode) { + suffixes.push('free-mode'); + } + if (params.autoHeight) { + suffixes.push('autoheight'); + } + if (rtl) { + suffixes.push('rtl'); + } + if (params.slidesPerColumn > 1) { + suffixes.push('multirow'); + if (params.slidesPerColumnFill === 'column') { + suffixes.push('multirow-column'); + } + } + if (Device.android) { + suffixes.push('android'); + } + if (Device.ios) { + suffixes.push('ios'); + } + + if (params.cssMode) { + suffixes.push('css-mode'); + } + + suffixes.forEach((suffix) => { + classNames.push(params.containerModifierClass + suffix); + }); + + $el.addClass(classNames.join(' ')); +} + +function removeClasses () { + const swiper = this; + const { $el, classNames } = swiper; + + $el.removeClass(classNames.join(' ')); +} + +var classes = { addClasses, removeClasses }; + +function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) { + let image; + function onReady() { + if (callback) callback(); + } + if (!imageEl.complete || !checkForComplete) { + if (src) { + image = new win.Image(); + image.onload = onReady; + image.onerror = onReady; + if (sizes) { + image.sizes = sizes; + } + if (srcset) { + image.srcset = srcset; + } + if (src) { + image.src = src; + } + } else { + onReady(); + } + } else { + // image already loaded... + onReady(); + } +} + +function preloadImages () { + const swiper = this; + swiper.imagesToLoad = swiper.$el.find('img'); + function onReady() { + if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return; + if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1; + if (swiper.imagesLoaded === swiper.imagesToLoad.length) { + if (swiper.params.updateOnImagesReady) swiper.update(); + swiper.emit('imagesReady'); + } + } + for (let i = 0; i < swiper.imagesToLoad.length; i += 1) { + const imageEl = swiper.imagesToLoad[i]; + swiper.loadImage( + imageEl, + imageEl.currentSrc || imageEl.getAttribute('src'), + imageEl.srcset || imageEl.getAttribute('srcset'), + imageEl.sizes || imageEl.getAttribute('sizes'), + true, + onReady + ); + } +} + +var images = { + loadImage, + preloadImages, +}; + +function checkOverflow() { + const swiper = this; + const params = swiper.params; + const wasLocked = swiper.isLocked; + const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length); + + if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) { + swiper.isLocked = lastSlidePosition <= swiper.size; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + + swiper.allowSlideNext = !swiper.isLocked; + swiper.allowSlidePrev = !swiper.isLocked; + + // events + if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + swiper.navigation.update(); + } +} + +var checkOverflow$1 = { checkOverflow }; + +var defaults = { + init: true, + direction: 'horizontal', + touchEventsTarget: 'container', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + // + preventInteractionOnTransition: false, + + // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + + // Free mode + freeMode: false, + freeModeMomentum: true, + freeModeMomentumRatio: 1, + freeModeMomentumBounce: true, + freeModeMomentumBounceRatio: 1, + freeModeMomentumVelocityRatio: 1, + freeModeSticky: false, + freeModeMinimumVelocity: 0.02, + + // Autoheight + autoHeight: false, + + // Set wrapper width + setWrapperSize: false, + + // Virtual Translate + virtualTranslate: false, + + // Effects + effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerColumnFill: 'column', + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, // in px + slidesOffsetAfter: 0, // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + + // Disable swiper and hide navigation when container not overflow + watchOverflow: false, + + // Round length + roundLengths: false, + + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 0, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + + // Unique Navigation Elements + uniqueNavElements: true, + + // Resistance + resistance: true, + resistanceRatio: 0.85, + + // Progress + watchSlidesProgress: false, + watchSlidesVisibility: false, + + // Cursor + grabCursor: false, + + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + + // Images + preloadImages: true, + updateOnImagesReady: true, + + // loop + loop: false, + loopAdditionalSlides: 0, + loopedSlides: null, + loopFillGroupWithBlank: false, + + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + + // Passive Listeners + passiveListeners: true, + + // NS + containerModifierClass: 'swiper-container-', // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-invisible-blank', + slideActiveClass: 'swiper-slide-active', + slideDuplicateActiveClass: 'swiper-slide-duplicate-active', + slideVisibleClass: 'swiper-slide-visible', + slideDuplicateClass: 'swiper-slide-duplicate', + slideNextClass: 'swiper-slide-next', + slideDuplicateNextClass: 'swiper-slide-duplicate-next', + slidePrevClass: 'swiper-slide-prev', + slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', + wrapperClass: 'swiper-wrapper', + + // Callbacks + runCallbacksOnInit: true, +}; + +/* eslint no-param-reassign: "off" */ + +const prototypes = { + update, + translate, + transition: transition$1, + slide, + loop, + grabCursor, + manipulation, + events, + breakpoints, + checkOverflow: checkOverflow$1, + classes, + images, +}; + +const extendedDefaults = {}; + +class Swiper extends SwiperClass { + constructor(...args) { + let el; + let params; + if (args.length === 1 && args[0].constructor && args[0].constructor === Object) { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + + params = Utils.extend({}, params); + if (el && !params.el) params.el = el; + + super(params); + + Object.keys(prototypes).forEach((prototypeGroup) => { + Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => { + if (!Swiper.prototype[protoMethod]) { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + } + }); + }); + + // Swiper Instance + const swiper = this; + if (typeof swiper.modules === 'undefined') { + swiper.modules = {}; + } + Object.keys(swiper.modules).forEach((moduleName) => { + const module = swiper.modules[moduleName]; + if (module.params) { + const moduleParamName = Object.keys(module.params)[0]; + const moduleParams = module.params[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) return; + if (!(moduleParamName in params && 'enabled' in moduleParams)) return; + if (params[moduleParamName] === true) { + params[moduleParamName] = { enabled: true }; + } + if ( + typeof params[moduleParamName] === 'object' + && !('enabled' in params[moduleParamName]) + ) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { enabled: false }; + } + }); + + // Extend defaults with modules params + const swiperParams = Utils.extend({}, defaults); + swiper.useModulesParams(swiperParams); + + // Extend defaults with passed params + swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = Utils.extend({}, swiper.params); + swiper.passedParams = Utils.extend({}, params); + + // Save Dom lib + swiper.$ = $; + + // Find el + const $el = $(swiper.params.el); + el = $el[0]; + + if (!el) { + return undefined; + } + + if ($el.length > 1) { + const swipers = []; + $el.each((index, containerEl) => { + const newParams = Utils.extend({}, params, { el: containerEl }); + swipers.push(new Swiper(newParams)); + }); + return swipers; + } + + el.swiper = swiper; + $el.data('swiper', swiper); + + // Find Wrapper + let $wrapperEl; + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`)); + // Children needs to return slot items + $wrapperEl.children = (options) => $el.children(options); + } else { + $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`); + } + // Extend Swiper + Utils.extend(swiper, { + $el, + el, + $wrapperEl, + wrapperEl: $wrapperEl[0], + + // Classes + classNames: [], + + // Slides + slides: $(), + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // RTL + rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), + wrongRTL: $wrapperEl.css('display') === '-webkit-box', + + // Indexes + activeIndex: 0, + realIndex: 0, + + // + isBeginning: true, + isEnd: false, + + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + + // Touch Events + touchEvents: (function touchEvents() { + const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel']; + let desktop = ['mousedown', 'mousemove', 'mouseup']; + if (Support.pointerEvents) { + desktop = ['pointerdown', 'pointermove', 'pointerup']; + } + swiper.touchEventsTouch = { + start: touch[0], + move: touch[1], + end: touch[2], + cancel: touch[3], + }; + swiper.touchEventsDesktop = { + start: desktop[0], + move: desktop[1], + end: desktop[2], + }; + return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; + }()), + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + formElements: 'input, select, option, textarea, button, video, label', + // Last click time + lastClickTime: Utils.now(), + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + isTouchEvent: undefined, + startMoving: undefined, + }, + + // Clicks + allowClick: true, + + // Touches + allowTouchMove: swiper.params.allowTouchMove, + + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0, + }, + + // Images + imagesToLoad: [], + imagesLoaded: 0, + + }); + + // Install Modules + swiper.useModules(); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + return swiper; + } + + slidesPerViewDynamic() { + const swiper = this; + const { + params, slides, slidesGrid, size: swiperSize, activeIndex, + } = swiper; + let spv = 1; + if (params.centeredSlides) { + let slideSize = slides[activeIndex].swiperSlideSize; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) { + spv += 1; + } + } + } + return spv; + } + + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { snapGrid, params } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (swiper.params.freeMode) { + setTranslate(); + if (swiper.params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { + translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + + changeDirection(newDirection, needUpdate = true) { + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) { + return swiper; + } + + swiper.$el + .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`) + .addClass(`${swiper.params.containerModifierClass}${newDirection}`); + + swiper.params.direction = newDirection; + + swiper.slides.each((slideIndex, slideEl) => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + + return swiper; + } + + init() { + const swiper = this; + if (swiper.initialized) return; + + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + + if (swiper.params.preloadImages) { + swiper.preloadImages(); + } + + // Slide To Initial Slide + if (swiper.params.loop) { + swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit); + } + + // Attach events + swiper.attachEvents(); + + // Init Flag + swiper.initialized = true; + + // Emit + swiper.emit('init'); + } + + destroy(deleteInstance = true, cleanStyles = true) { + const swiper = this; + const { + params, $el, $wrapperEl, slides, + } = swiper; + + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + $el.removeAttr('style'); + $wrapperEl.removeAttr('style'); + if (slides && slides.length) { + slides + .removeClass([ + params.slideVisibleClass, + params.slideActiveClass, + params.slideNextClass, + params.slidePrevClass, + ].join(' ')) + .removeAttr('style') + .removeAttr('data-swiper-slide-index'); + } + } + + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach((eventName) => { + swiper.off(eventName); + }); + + if (deleteInstance !== false) { + swiper.$el[0].swiper = null; + swiper.$el.data('swiper', null); + Utils.deleteProps(swiper); + } + swiper.destroyed = true; + + return null; + } + + static extendDefaults(newDefaults) { + Utils.extend(extendedDefaults, newDefaults); + } + + static get extendedDefaults() { + return extendedDefaults; + } + + static get defaults() { + return defaults; + } + + static get Class() { + return SwiperClass; + } + + static get $() { + return $; + } +} + +var Device$1 = { + name: 'device', + proto: { + device: Device, + }, + static: { + device: Device, + }, +}; + +var Support$1 = { + name: 'support', + proto: { + support: Support, + }, + static: { + support: Support, + }, +}; + +const Browser = (function Browser() { + function isSafari() { + const ua = win.navigator.userAgent.toLowerCase(); + return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0); + } + return { + isEdge: !!win.navigator.userAgent.match(/Edge/g), + isSafari: isSafari(), + isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent), + }; +}()); + +var Browser$1 = { + name: 'browser', + proto: { + browser: Browser, + }, + static: { + browser: Browser, + }, +}; + +var Resize = { + name: 'resize', + create() { + const swiper = this; + Utils.extend(swiper, { + resize: { + resizeHandler() { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + swiper.emit('beforeResize'); + swiper.emit('resize'); + }, + orientationChangeHandler() { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + swiper.emit('orientationchange'); + }, + }, + }); + }, + on: { + init() { + const swiper = this; + // Emit resize + win.addEventListener('resize', swiper.resize.resizeHandler); + + // Emit orientationchange + win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler); + }, + destroy() { + const swiper = this; + win.removeEventListener('resize', swiper.resize.resizeHandler); + win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler); + }, + }, +}; + +const Observer = { + func: win.MutationObserver || win.WebkitMutationObserver, + attach(target, options = {}) { + const swiper = this; + + const ObserverFunc = Observer.func; + const observer = new ObserverFunc((mutations) => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (mutations.length === 1) { + swiper.emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + swiper.emit('observerUpdate', mutations[0]); + }; + + if (win.requestAnimationFrame) { + win.requestAnimationFrame(observerUpdate); + } else { + win.setTimeout(observerUpdate, 0); + } + }); + + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData, + }); + + swiper.observer.observers.push(observer); + }, + init() { + const swiper = this; + if (!Support.observer || !swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = swiper.$el.parents(); + for (let i = 0; i < containerParents.length; i += 1) { + swiper.observer.attach(containerParents[i]); + } + } + // Observe container + swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren }); + + // Observe wrapper + swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false }); + }, + destroy() { + const swiper = this; + swiper.observer.observers.forEach((observer) => { + observer.disconnect(); + }); + swiper.observer.observers = []; + }, +}; + +var Observer$1 = { + name: 'observer', + params: { + observer: false, + observeParents: false, + observeSlideChildren: false, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + observer: { + init: Observer.init.bind(swiper), + attach: Observer.attach.bind(swiper), + destroy: Observer.destroy.bind(swiper), + observers: [], + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.observer.init(); + }, + destroy() { + const swiper = this; + swiper.observer.destroy(); + }, + }, +}; + +const Virtual = { + update(force) { + const swiper = this; + const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params; + const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + renderSlide, + offset: previousOffset, + } = swiper.virtual; + swiper.updateActiveIndex(); + const activeIndex = swiper.activeIndex || 0; + + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right'; + else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore; + slidesBefore = slidesPerGroup + addSlidesAfter; + } + const from = Math.max((activeIndex || 0) - slidesBefore, 0); + const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1); + const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + + Utils.extend(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + }); + + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + if (swiper.lazy && swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + } + + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.css(offsetProp, `${offset}px`); + } + swiper.updateProgress(); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: (function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }()), + }); + onRendered(); + return; + } + const prependIndexes = []; + const appendIndexes = []; + if (force) { + swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove(); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove(); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + if (i >= from && i <= to) { + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(i); + } else { + if (i > previousTo) appendIndexes.push(i); + if (i < previousFrom) prependIndexes.push(i); + } + } + } + appendIndexes.forEach((index) => { + swiper.$wrapperEl.append(renderSlide(slides[index], index)); + }); + prependIndexes.sort((a, b) => b - a).forEach((index) => { + swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); + }); + swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`); + onRendered(); + }, + renderSlide(slide, index) { + const swiper = this; + const params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + const $slideEl = params.renderSlide + ? $(params.renderSlide.call(swiper, slide, index)) + : $(`
      ${slide}
      `); + if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index); + if (params.cache) swiper.virtual.cache[index] = $slideEl; + return $slideEl; + }, + appendSlide(slides) { + const swiper = this; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + swiper.virtual.update(true); + }, + prependSlide(slides) { + const swiper = this; + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach((cachedIndex) => { + const $cachedEl = cache[cachedIndex]; + const cachedElIndex = $cachedEl.attr('data-swiper-slide-index'); + if (cachedElIndex) { + $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl; + }); + swiper.virtual.cache = newCache; + } + swiper.virtual.update(true); + swiper.slideTo(newActiveIndex, 0); + }, + removeSlide(slidesIndexes) { + const swiper = this; + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + } + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + swiper.virtual.slides.splice(slidesIndexes, 1); + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + } + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + swiper.virtual.update(true); + swiper.slideTo(activeIndex, 0); + }, + removeAllSlides() { + const swiper = this; + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + swiper.virtual.update(true); + swiper.slideTo(0, 0); + }, +}; + +var Virtual$1 = { + name: 'virtual', + params: { + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + addSlidesBefore: 0, + addSlidesAfter: 0, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + virtual: { + update: Virtual.update.bind(swiper), + appendSlide: Virtual.appendSlide.bind(swiper), + prependSlide: Virtual.prependSlide.bind(swiper), + removeSlide: Virtual.removeSlide.bind(swiper), + removeAllSlides: Virtual.removeAllSlides.bind(swiper), + renderSlide: Virtual.renderSlide.bind(swiper), + slides: swiper.params.virtual.slides, + cache: {}, + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (!swiper.params.virtual.enabled) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + const overwriteParams = { + watchSlidesProgress: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + + if (!swiper.params.initialSlide) { + swiper.virtual.update(); + } + }, + setTranslate() { + const swiper = this; + if (!swiper.params.virtual.enabled) return; + swiper.virtual.update(); + }, + }, +}; + +const Keyboard = { + handle(event) { + const swiper = this; + const { rtlTranslate: rtl } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + // Directions locks + if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) { + return false; + } + if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const windowWidth = win.innerWidth; + const windowHeight = win.innerHeight; + const swiperOffset = swiper.$el.offset(); + if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft; + const swiperCoord = [ + [swiperOffset.left, swiperOffset.top], + [swiperOffset.left + swiper.width, swiperOffset.top], + [swiperOffset.left, swiperOffset.top + swiper.height], + [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height], + ]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if ( + point[0] >= 0 && point[0] <= windowWidth + && point[1] >= 0 && point[1] <= windowHeight + ) { + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (kc === 33 || kc === 34 || kc === 37 || kc === 39) { + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + } + if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext(); + if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev(); + } else { + if (kc === 33 || kc === 34 || kc === 38 || kc === 40) { + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + } + if (kc === 34 || kc === 40) swiper.slideNext(); + if (kc === 33 || kc === 38) swiper.slidePrev(); + } + swiper.emit('keyPress', kc); + return undefined; + }, + enable() { + const swiper = this; + if (swiper.keyboard.enabled) return; + $(doc).on('keydown', swiper.keyboard.handle); + swiper.keyboard.enabled = true; + }, + disable() { + const swiper = this; + if (!swiper.keyboard.enabled) return; + $(doc).off('keydown', swiper.keyboard.handle); + swiper.keyboard.enabled = false; + }, +}; + +var Keyboard$1 = { + name: 'keyboard', + params: { + keyboard: { + enabled: false, + onlyInViewport: true, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + keyboard: { + enabled: false, + enable: Keyboard.enable.bind(swiper), + disable: Keyboard.disable.bind(swiper), + handle: Keyboard.handle.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.keyboard.enabled) { + swiper.keyboard.enable(); + } + }, + destroy() { + const swiper = this; + if (swiper.keyboard.enabled) { + swiper.keyboard.disable(); + } + }, + }, +}; + +function isEventSupported() { + const eventName = 'onwheel'; + let isSupported = eventName in doc; + + if (!isSupported) { + const element = doc.createElement('div'); + element.setAttribute(eventName, 'return;'); + isSupported = typeof element[eventName] === 'function'; + } + + if (!isSupported + && doc.implementation + && doc.implementation.hasFeature + // always returns true in newer browsers as per the standard. + // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature + && doc.implementation.hasFeature('', '') !== true + ) { + // This is the only way to test support for the `wheel` event in IE9+. + isSupported = doc.implementation.hasFeature('Events.wheel', '3.0'); + } + + return isSupported; +} +const Mousewheel = { + lastScrollTime: Utils.now(), + lastEventBeforeSnap: undefined, + recentWheelEvents: [], + event() { + if (win.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll'; + return isEventSupported() ? 'wheel' : 'mousewheel'; + }, + normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + + if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = (pX < 1) ? -1 : 1; + } + if (pY && !sY) { + sY = (pY < 1) ? -1 : 1; + } + + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY, + }; + }, + handleMouseEnter() { + const swiper = this; + swiper.mouseEntered = true; + }, + handleMouseLeave() { + const swiper = this; + swiper.mouseEntered = false; + }, + handle(event) { + let e = event; + const swiper = this; + const params = swiper.params.mousewheel; + + if (swiper.params.cssMode) { + e.preventDefault(); + } + + let target = swiper.$el; + if (swiper.params.mousewheel.eventsTarged !== 'container') { + target = $(swiper.params.mousewheel.eventsTarged); + } + if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true; + + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + + const data = Mousewheel.normalize(e); + + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor; + else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY; + else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + + if (delta === 0) return true; + + if (params.invert) delta = -delta; + + if (!swiper.params.freeMode) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: Utils.now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event, + }; + + // Keep the most recent events + const recentWheelEvents = swiper.mousewheel.recentWheelEvents; + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta) { + swiper.mousewheel.animateSlider(newEvent); + } + } else { + swiper.mousewheel.animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (swiper.mousewheel.releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) }; + const { lastEventBeforeSnap } = swiper.mousewheel; + const ignoreWheelEvents = lastEventBeforeSnap + && newEvent.time < lastEventBeforeSnap.time + 500 + && newEvent.delta <= lastEventBeforeSnap.delta + && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + swiper.mousewheel.lastEventBeforeSnap = undefined; + + if (swiper.params.loop) { + swiper.loopFix(); + } + let position = swiper.getTranslate() + (delta * params.sensitivity); + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + + if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) { + swiper.updateSlidesClasses(); + } + + if (swiper.params.freeModeSticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momuntum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(swiper.mousewheel.timeout); + swiper.mousewheel.timeout = undefined; + const recentWheelEvents = swiper.mousewheel.recentWheelEvents; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 + && newEvent.time - firstEvent.time < 500 + && firstEvent.delta - newEvent.delta >= 1 + && newEvent.delta <= 6 + ) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + swiper.mousewheel.lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.mousewheel.timeout = Utils.nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + if (!swiper.mousewheel.timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + swiper.mousewheel.timeout = Utils.nextTick(() => { + const snapToThreshold = 0.5; + swiper.mousewheel.lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) swiper.emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true; + } + } + + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + return false; + }, + animateSlider(newEvent) { + const swiper = this; + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + swiper.emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + swiper.emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + swiper.mousewheel.lastScrollTime = (new win.Date()).getTime(); + // Return false as a default + return false; + }, + releaseScroll(newEvent) { + const swiper = this; + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + }, + enable() { + const swiper = this; + const event = Mousewheel.event(); + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle); + return true; + } + if (!event) return false; + if (swiper.mousewheel.enabled) return false; + let target = swiper.$el; + if (swiper.params.mousewheel.eventsTarged !== 'container') { + target = $(swiper.params.mousewheel.eventsTarged); + } + target.on('mouseenter', swiper.mousewheel.handleMouseEnter); + target.on('mouseleave', swiper.mousewheel.handleMouseLeave); + target.on(event, swiper.mousewheel.handle); + swiper.mousewheel.enabled = true; + return true; + }, + disable() { + const swiper = this; + const event = Mousewheel.event(); + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle); + return true; + } + if (!event) return false; + if (!swiper.mousewheel.enabled) return false; + let target = swiper.$el; + if (swiper.params.mousewheel.eventsTarged !== 'container') { + target = $(swiper.params.mousewheel.eventsTarged); + } + target.off(event, swiper.mousewheel.handle); + swiper.mousewheel.enabled = false; + return true; + }, +}; + +var Mousewheel$1 = { + name: 'mousewheel', + params: { + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarged: 'container', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + mousewheel: { + enabled: false, + enable: Mousewheel.enable.bind(swiper), + disable: Mousewheel.disable.bind(swiper), + handle: Mousewheel.handle.bind(swiper), + handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper), + handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper), + animateSlider: Mousewheel.animateSlider.bind(swiper), + releaseScroll: Mousewheel.releaseScroll.bind(swiper), + lastScrollTime: Utils.now(), + lastEventBeforeSnap: undefined, + recentWheelEvents: [], + }, + }); + }, + on: { + init() { + const swiper = this; + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + swiper.mousewheel.disable(); + } + if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable(); + }, + destroy() { + const swiper = this; + if (swiper.params.cssMode) { + swiper.mousewheel.enable(); + } + if (swiper.mousewheel.enabled) swiper.mousewheel.disable(); + }, + }, +}; + +const Navigation = { + update() { + // Update Navigation Buttons + const swiper = this; + const params = swiper.params.navigation; + + if (swiper.params.loop) return; + const { $nextEl, $prevEl } = swiper.navigation; + + if ($prevEl && $prevEl.length > 0) { + if (swiper.isBeginning) { + $prevEl.addClass(params.disabledClass); + } else { + $prevEl.removeClass(params.disabledClass); + } + $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + } + if ($nextEl && $nextEl.length > 0) { + if (swiper.isEnd) { + $nextEl.addClass(params.disabledClass); + } else { + $nextEl.removeClass(params.disabledClass); + } + $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + } + }, + onPrevClick(e) { + const swiper = this; + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop) return; + swiper.slidePrev(); + }, + onNextClick(e) { + const swiper = this; + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop) return; + swiper.slideNext(); + }, + init() { + const swiper = this; + const params = swiper.params.navigation; + if (!(params.nextEl || params.prevEl)) return; + + let $nextEl; + let $prevEl; + if (params.nextEl) { + $nextEl = $(params.nextEl); + if ( + swiper.params.uniqueNavElements + && typeof params.nextEl === 'string' + && $nextEl.length > 1 + && swiper.$el.find(params.nextEl).length === 1 + ) { + $nextEl = swiper.$el.find(params.nextEl); + } + } + if (params.prevEl) { + $prevEl = $(params.prevEl); + if ( + swiper.params.uniqueNavElements + && typeof params.prevEl === 'string' + && $prevEl.length > 1 + && swiper.$el.find(params.prevEl).length === 1 + ) { + $prevEl = swiper.$el.find(params.prevEl); + } + } + + if ($nextEl && $nextEl.length > 0) { + $nextEl.on('click', swiper.navigation.onNextClick); + } + if ($prevEl && $prevEl.length > 0) { + $prevEl.on('click', swiper.navigation.onPrevClick); + } + + Utils.extend(swiper.navigation, { + $nextEl, + nextEl: $nextEl && $nextEl[0], + $prevEl, + prevEl: $prevEl && $prevEl[0], + }); + }, + destroy() { + const swiper = this; + const { $nextEl, $prevEl } = swiper.navigation; + if ($nextEl && $nextEl.length) { + $nextEl.off('click', swiper.navigation.onNextClick); + $nextEl.removeClass(swiper.params.navigation.disabledClass); + } + if ($prevEl && $prevEl.length) { + $prevEl.off('click', swiper.navigation.onPrevClick); + $prevEl.removeClass(swiper.params.navigation.disabledClass); + } + }, +}; + +var Navigation$1 = { + name: 'navigation', + params: { + navigation: { + nextEl: null, + prevEl: null, + + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + navigation: { + init: Navigation.init.bind(swiper), + update: Navigation.update.bind(swiper), + destroy: Navigation.destroy.bind(swiper), + onNextClick: Navigation.onNextClick.bind(swiper), + onPrevClick: Navigation.onPrevClick.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.navigation.init(); + swiper.navigation.update(); + }, + toEdge() { + const swiper = this; + swiper.navigation.update(); + }, + fromEdge() { + const swiper = this; + swiper.navigation.update(); + }, + destroy() { + const swiper = this; + swiper.navigation.destroy(); + }, + click(e) { + const swiper = this; + const { $nextEl, $prevEl } = swiper.navigation; + if ( + swiper.params.navigation.hideOnClick + && !$(e.target).is($prevEl) + && !$(e.target).is($nextEl) + ) { + let isHidden; + if ($nextEl) { + isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass); + } else if ($prevEl) { + isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + swiper.emit('navigationShow', swiper); + } else { + swiper.emit('navigationHide', swiper); + } + if ($nextEl) { + $nextEl.toggleClass(swiper.params.navigation.hiddenClass); + } + if ($prevEl) { + $prevEl.toggleClass(swiper.params.navigation.hiddenClass); + } + } + }, + }, +}; + +const Pagination = { + update() { + // Render || Update Pagination bullets/items + const swiper = this; + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const $el = swiper.pagination.$el; + // Current/Total + let current; + const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); + if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) { + current -= (slidesLength - (swiper.loopedSlides * 2)); + } + if (current > total - 1) current -= total; + if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + } else { + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); + $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`); + if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { + swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex); + if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) { + swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (swiper.pagination.dynamicBulletIndex < 0) { + swiper.pagination.dynamicBulletIndex = 0; + } + } + firstIndex = current - swiper.pagination.dynamicBulletIndex; + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`); + if ($el.length > 1) { + bullets.each((index, bullet) => { + const $bullet = $(bullet); + const bulletIndex = $bullet.index(); + if (bulletIndex === current) { + $bullet.addClass(params.bulletActiveClass); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + $bullet.addClass(`${params.bulletActiveClass}-main`); + } + if (bulletIndex === firstIndex) { + $bullet + .prev() + .addClass(`${params.bulletActiveClass}-prev`) + .prev() + .addClass(`${params.bulletActiveClass}-prev-prev`); + } + if (bulletIndex === lastIndex) { + $bullet + .next() + .addClass(`${params.bulletActiveClass}-next`) + .next() + .addClass(`${params.bulletActiveClass}-next-next`); + } + } + }); + } else { + const $bullet = bullets.eq(current); + const bulletIndex = $bullet.index(); + $bullet.addClass(params.bulletActiveClass); + if (params.dynamicBullets) { + const $firstDisplayedBullet = bullets.eq(firstIndex); + const $lastDisplayedBullet = bullets.eq(lastIndex); + for (let i = firstIndex; i <= lastIndex; i += 1) { + bullets.eq(i).addClass(`${params.bulletActiveClass}-main`); + } + if (swiper.params.loop) { + if (bulletIndex >= bullets.length - params.dynamicMainBullets) { + for (let i = params.dynamicMainBullets; i >= 0; i -= 1) { + bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`); + } + bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`); + } else { + $firstDisplayedBullet + .prev() + .addClass(`${params.bulletActiveClass}-prev`) + .prev() + .addClass(`${params.bulletActiveClass}-prev-prev`); + $lastDisplayedBullet + .next() + .addClass(`${params.bulletActiveClass}-next`) + .next() + .addClass(`${params.bulletActiveClass}-next-next`); + } + } else { + $firstDisplayedBullet + .prev() + .addClass(`${params.bulletActiveClass}-prev`) + .prev() + .addClass(`${params.bulletActiveClass}-prev-prev`); + $lastDisplayedBullet + .next() + .addClass(`${params.bulletActiveClass}-next`) + .next() + .addClass(`${params.bulletActiveClass}-next-next`); + } + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize); + const offsetProp = rtl ? 'right' : 'left'; + bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`); + } + } + if (params.type === 'fraction') { + $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1)); + $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total)); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed); + } + if (params.type === 'custom' && params.renderCustom) { + $el.html(params.renderCustom(swiper, current + 1, total)); + swiper.emit('paginationRender', swiper, $el[0]); + } else { + swiper.emit('paginationUpdate', swiper, $el[0]); + } + $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + }, + render() { + // Render Container + const swiper = this; + const params = swiper.params.pagination; + if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + + const $el = swiper.pagination.$el; + let paginationHTML = ''; + if (params.type === 'bullets') { + const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + paginationHTML += `<${params.bulletElement} class="${params.bulletClass}">`; + } + } + $el.html(paginationHTML); + swiper.pagination.bullets = $el.find(`.${params.bulletClass}`); + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + + ' / ' + + ``; + } + $el.html(paginationHTML); + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + $el.html(paginationHTML); + } + if (params.type !== 'custom') { + swiper.emit('paginationRender', swiper.pagination.$el[0]); + } + }, + init() { + const swiper = this; + const params = swiper.params.pagination; + if (!params.el) return; + + let $el = $(params.el); + if ($el.length === 0) return; + + if ( + swiper.params.uniqueNavElements + && typeof params.el === 'string' + && $el.length > 1 + && swiper.$el.find(params.el).length === 1 + ) { + $el = swiper.$el.find(params.el); + } + + if (params.type === 'bullets' && params.clickable) { + $el.addClass(params.clickableClass); + } + + $el.addClass(params.modifierClass + params.type); + + if (params.type === 'bullets' && params.dynamicBullets) { + $el.addClass(`${params.modifierClass}${params.type}-dynamic`); + swiper.pagination.dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + $el.addClass(params.progressbarOppositeClass); + } + + if (params.clickable) { + $el.on('click', `.${params.bulletClass}`, function onClick(e) { + e.preventDefault(); + let index = $(this).index() * swiper.params.slidesPerGroup; + if (swiper.params.loop) index += swiper.loopedSlides; + swiper.slideTo(index); + }); + } + + Utils.extend(swiper.pagination, { + $el, + el: $el[0], + }); + }, + destroy() { + const swiper = this; + const params = swiper.params.pagination; + if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return; + const $el = swiper.pagination.$el; + + $el.removeClass(params.hiddenClass); + $el.removeClass(params.modifierClass + params.type); + if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass); + if (params.clickable) { + $el.off('click', `.${params.bulletClass}`); + } + }, +}; + +var Pagination$1 = { + name: 'pagination', + params: { + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: (number) => number, + formatFractionTotal: (number) => number, + bulletClass: 'swiper-pagination-bullet', + bulletActiveClass: 'swiper-pagination-bullet-active', + modifierClass: 'swiper-pagination-', // NEW + currentClass: 'swiper-pagination-current', + totalClass: 'swiper-pagination-total', + hiddenClass: 'swiper-pagination-hidden', + progressbarFillClass: 'swiper-pagination-progressbar-fill', + progressbarOppositeClass: 'swiper-pagination-progressbar-opposite', + clickableClass: 'swiper-pagination-clickable', // NEW + lockClass: 'swiper-pagination-lock', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + pagination: { + init: Pagination.init.bind(swiper), + render: Pagination.render.bind(swiper), + update: Pagination.update.bind(swiper), + destroy: Pagination.destroy.bind(swiper), + dynamicBulletIndex: 0, + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.pagination.init(); + swiper.pagination.render(); + swiper.pagination.update(); + }, + activeIndexChange() { + const swiper = this; + if (swiper.params.loop) { + swiper.pagination.update(); + } else if (typeof swiper.snapIndex === 'undefined') { + swiper.pagination.update(); + } + }, + snapIndexChange() { + const swiper = this; + if (!swiper.params.loop) { + swiper.pagination.update(); + } + }, + slidesLengthChange() { + const swiper = this; + if (swiper.params.loop) { + swiper.pagination.render(); + swiper.pagination.update(); + } + }, + snapGridLengthChange() { + const swiper = this; + if (!swiper.params.loop) { + swiper.pagination.render(); + swiper.pagination.update(); + } + }, + destroy() { + const swiper = this; + swiper.pagination.destroy(); + }, + click(e) { + const swiper = this; + if ( + swiper.params.pagination.el + && swiper.params.pagination.hideOnClick + && swiper.pagination.$el.length > 0 + && !$(e.target).hasClass(swiper.params.pagination.bulletClass) + ) { + const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + swiper.emit('paginationShow', swiper); + } else { + swiper.emit('paginationHide', swiper); + } + swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass); + } + }, + }, +}; + +const Scrollbar = { + setTranslate() { + const swiper = this; + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { scrollbar, rtlTranslate: rtl, progress } = swiper; + const { + dragSize, trackSize, $dragEl, $el, + } = scrollbar; + const params = swiper.params.scrollbar; + + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + $dragEl.transform(`translate3d(${newPos}px, 0, 0)`); + $dragEl[0].style.width = `${newSize}px`; + } else { + $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`); + $dragEl[0].style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(swiper.scrollbar.timeout); + $el[0].style.opacity = 1; + swiper.scrollbar.timeout = setTimeout(() => { + $el[0].style.opacity = 0; + $el.transition(400); + }, 1000); + } + }, + setTransition(duration) { + const swiper = this; + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.$dragEl.transition(duration); + }, + updateSize() { + const swiper = this; + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + + const { scrollbar } = swiper; + const { $dragEl, $el } = scrollbar; + + $dragEl[0].style.width = ''; + $dragEl[0].style.height = ''; + const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight; + + const divider = swiper.size / swiper.virtualSize; + const moveDivider = divider * (trackSize / swiper.size); + let dragSize; + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + + if (swiper.isHorizontal()) { + $dragEl[0].style.width = `${dragSize}px`; + } else { + $dragEl[0].style.height = `${dragSize}px`; + } + + if (divider >= 1) { + $el[0].style.display = 'none'; + } else { + $el[0].style.display = ''; + } + if (swiper.params.scrollbar.hide) { + $el[0].style.opacity = 0; + } + Utils.extend(scrollbar, { + trackSize, + divider, + moveDivider, + dragSize, + }); + scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); + }, + getPointerPosition(e) { + const swiper = this; + if (swiper.isHorizontal()) { + return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX); + } + return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY); + }, + setDragPosition(e) { + const swiper = this; + const { scrollbar, rtlTranslate: rtl } = swiper; + const { + $el, + dragSize, + trackSize, + dragStartPos, + } = scrollbar; + + let positionRatio; + positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] + - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + + const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio); + + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + }, + onDragStart(e) { + const swiper = this; + const params = swiper.params.scrollbar; + const { scrollbar, $wrapperEl } = swiper; + const { $el, $dragEl } = scrollbar; + swiper.scrollbar.isTouched = true; + swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl) + ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + + $wrapperEl.transition(100); + $dragEl.transition(100); + scrollbar.setDragPosition(e); + + clearTimeout(swiper.scrollbar.dragTimeout); + + $el.transition(0); + if (params.hide) { + $el.css('opacity', 1); + } + if (swiper.params.cssMode) { + swiper.$wrapperEl.css('scroll-snap-type', 'none'); + } + swiper.emit('scrollbarDragStart', e); + }, + onDragMove(e) { + const swiper = this; + const { scrollbar, $wrapperEl } = swiper; + const { $el, $dragEl } = scrollbar; + + if (!swiper.scrollbar.isTouched) return; + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + scrollbar.setDragPosition(e); + $wrapperEl.transition(0); + $el.transition(0); + $dragEl.transition(0); + swiper.emit('scrollbarDragMove', e); + }, + onDragEnd(e) { + const swiper = this; + + const params = swiper.params.scrollbar; + const { scrollbar, $wrapperEl } = swiper; + const { $el } = scrollbar; + + if (!swiper.scrollbar.isTouched) return; + swiper.scrollbar.isTouched = false; + if (swiper.params.cssMode) { + swiper.$wrapperEl.css('scroll-snap-type', ''); + $wrapperEl.transition(''); + } + if (params.hide) { + clearTimeout(swiper.scrollbar.dragTimeout); + swiper.scrollbar.dragTimeout = Utils.nextTick(() => { + $el.css('opacity', 0); + $el.transition(400); + }, 1000); + } + swiper.emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + }, + enableDraggable() { + const swiper = this; + if (!swiper.params.scrollbar.el) return; + const { + scrollbar, touchEventsTouch, touchEventsDesktop, params, + } = swiper; + const $el = scrollbar.$el; + const target = $el[0]; + const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; + const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + if (!Support.touch) { + target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); + doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); + doc.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); + } else { + target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener); + target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener); + target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener); + } + }, + disableDraggable() { + const swiper = this; + if (!swiper.params.scrollbar.el) return; + const { + scrollbar, touchEventsTouch, touchEventsDesktop, params, + } = swiper; + const $el = scrollbar.$el; + const target = $el[0]; + const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; + const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + if (!Support.touch) { + target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); + doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); + doc.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); + } else { + target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener); + target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener); + target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener); + } + }, + init() { + const swiper = this; + if (!swiper.params.scrollbar.el) return; + const { scrollbar, $el: $swiperEl } = swiper; + const params = swiper.params.scrollbar; + + let $el = $(params.el); + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { + $el = $swiperEl.find(params.el); + } + + let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`); + if ($dragEl.length === 0) { + $dragEl = $(`
      `); + $el.append($dragEl); + } + + Utils.extend(scrollbar, { + $el, + el: $el[0], + $dragEl, + dragEl: $dragEl[0], + }); + + if (params.draggable) { + scrollbar.enableDraggable(); + } + }, + destroy() { + const swiper = this; + swiper.scrollbar.disableDraggable(); + }, +}; + +var Scrollbar$1 = { + name: 'scrollbar', + params: { + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + scrollbar: { + init: Scrollbar.init.bind(swiper), + destroy: Scrollbar.destroy.bind(swiper), + updateSize: Scrollbar.updateSize.bind(swiper), + setTranslate: Scrollbar.setTranslate.bind(swiper), + setTransition: Scrollbar.setTransition.bind(swiper), + enableDraggable: Scrollbar.enableDraggable.bind(swiper), + disableDraggable: Scrollbar.disableDraggable.bind(swiper), + setDragPosition: Scrollbar.setDragPosition.bind(swiper), + getPointerPosition: Scrollbar.getPointerPosition.bind(swiper), + onDragStart: Scrollbar.onDragStart.bind(swiper), + onDragMove: Scrollbar.onDragMove.bind(swiper), + onDragEnd: Scrollbar.onDragEnd.bind(swiper), + isTouched: false, + timeout: null, + dragTimeout: null, + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.scrollbar.init(); + swiper.scrollbar.updateSize(); + swiper.scrollbar.setTranslate(); + }, + update() { + const swiper = this; + swiper.scrollbar.updateSize(); + }, + resize() { + const swiper = this; + swiper.scrollbar.updateSize(); + }, + observerUpdate() { + const swiper = this; + swiper.scrollbar.updateSize(); + }, + setTranslate() { + const swiper = this; + swiper.scrollbar.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + swiper.scrollbar.setTransition(duration); + }, + destroy() { + const swiper = this; + swiper.scrollbar.destroy(); + }, + }, +}; + +const Parallax = { + setTransform(el, progress) { + const swiper = this; + const { rtl } = swiper; + + const $el = $(el); + const rtlFactor = rtl ? -1 : 1; + + const p = $el.attr('data-swiper-parallax') || '0'; + let x = $el.attr('data-swiper-parallax-x'); + let y = $el.attr('data-swiper-parallax-y'); + const scale = $el.attr('data-swiper-parallax-scale'); + const opacity = $el.attr('data-swiper-parallax-opacity'); + + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + + if ((x).indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if ((y).indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress))); + $el[0].style.opacity = currentOpacity; + } + if (typeof scale === 'undefined' || scale === null) { + $el.transform(`translate3d(${x}, ${y}, 0px)`); + } else { + const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress))); + $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`); + } + }, + setTranslate() { + const swiper = this; + const { + $el, slides, progress, snapGrid, + } = swiper; + $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') + .each((index, el) => { + swiper.parallax.setTransform(el, progress); + }); + slides.each((slideIndex, slideEl) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1)); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') + .each((index, el) => { + swiper.parallax.setTransform(el, slideProgress); + }); + }); + }, + setTransition(duration = this.params.speed) { + const swiper = this; + const { $el } = swiper; + $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') + .each((index, parallaxEl) => { + const $parallaxEl = $(parallaxEl); + let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + $parallaxEl.transition(parallaxDuration); + }); + }, +}; + +var Parallax$1 = { + name: 'parallax', + params: { + parallax: { + enabled: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + parallax: { + setTransform: Parallax.setTransform.bind(swiper), + setTranslate: Parallax.setTranslate.bind(swiper), + setTransition: Parallax.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }, + init() { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.parallax.setTranslate(); + }, + setTranslate() { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.parallax.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.parallax.setTransition(duration); + }, + }, +}; + +const Zoom = { + // Calc Scale From Multi-touches + getDistanceBetweenTouches(e) { + if (e.targetTouches.length < 2) return 1; + const x1 = e.targetTouches[0].pageX; + const y1 = e.targetTouches[0].pageY; + const x2 = e.targetTouches[1].pageX; + const y2 = e.targetTouches[1].pageY; + const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2)); + return distance; + }, + // Events + onGestureStart(e) { + const swiper = this; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const { gesture } = zoom; + zoom.fakeGestureTouched = false; + zoom.fakeGestureMoved = false; + if (!Support.gestures) { + if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) { + return; + } + zoom.fakeGestureTouched = true; + gesture.scaleStart = Zoom.getDistanceBetweenTouches(e); + } + if (!gesture.$slideEl || !gesture.$slideEl.length) { + gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`); + if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target'); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + if (gesture.$imageWrapEl.length === 0) { + gesture.$imageEl = undefined; + return; + } + } + if (gesture.$imageEl) { + gesture.$imageEl.transition(0); + } + swiper.zoom.isScaling = true; + }, + onGestureChange(e) { + const swiper = this; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const { gesture } = zoom; + if (!Support.gestures) { + if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) { + return; + } + zoom.fakeGestureMoved = true; + gesture.scaleMove = Zoom.getDistanceBetweenTouches(e); + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + if (Support.gestures) { + zoom.scale = e.scale * zoom.currentScale; + } else { + zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale; + } + if (zoom.scale > gesture.maxRatio) { + zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5); + } + if (zoom.scale < params.minRatio) { + zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5); + } + gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`); + }, + onGestureEnd(e) { + const swiper = this; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const { gesture } = zoom; + if (!Support.gestures) { + if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) { + return; + } + if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) { + return; + } + zoom.fakeGestureTouched = false; + zoom.fakeGestureMoved = false; + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`); + zoom.currentScale = zoom.scale; + zoom.isScaling = false; + if (zoom.scale === 1) gesture.$slideEl = undefined; + }, + onTouchStart(e) { + const swiper = this; + const zoom = swiper.zoom; + const { gesture, image } = zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + if (image.isTouched) return; + if (Device.android) e.preventDefault(); + image.isTouched = true; + image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; + image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; + }, + onTouchMove(e) { + const swiper = this; + const zoom = swiper.zoom; + const { gesture, image, velocity } = zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + swiper.allowClick = false; + if (!image.isTouched || !gesture.$slideEl) return; + + if (!image.isMoved) { + image.width = gesture.$imageEl[0].offsetWidth; + image.height = gesture.$imageEl[0].offsetHeight; + image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0; + image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0; + gesture.slideWidth = gesture.$slideEl[0].offsetWidth; + gesture.slideHeight = gesture.$slideEl[0].offsetHeight; + gesture.$imageWrapEl.transition(0); + if (swiper.rtl) { + image.startX = -image.startX; + image.startY = -image.startY; + } + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + + if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; + + image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); + image.maxX = -image.minX; + image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); + image.maxY = -image.minY; + + image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; + image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; + + if (!image.isMoved && !zoom.isScaling) { + if ( + swiper.isHorizontal() + && ( + (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x) + || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x) + ) + ) { + image.isTouched = false; + return; + } if ( + !swiper.isHorizontal() + && ( + (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y) + || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y) + ) + ) { + image.isTouched = false; + return; + } + } + e.preventDefault(); + e.stopPropagation(); + + image.isMoved = true; + image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX; + image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY; + + if (image.currentX < image.minX) { + image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8); + } + if (image.currentX > image.maxX) { + image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8); + } + + if (image.currentY < image.minY) { + image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8); + } + if (image.currentY > image.maxY) { + image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8); + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + + gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); + }, + onTouchEnd() { + const swiper = this; + const zoom = swiper.zoom; + const { gesture, image, velocity } = zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + + image.currentX = newPositionX; + image.currentY = newPositionY; + + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); + image.maxX = -image.minX; + image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + + gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); + }, + onTransitionEnd() { + const swiper = this; + const zoom = swiper.zoom; + const { gesture } = zoom; + if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) { + if (gesture.$imageEl) { + gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); + } + if (gesture.$imageWrapEl) { + gesture.$imageWrapEl.transform('translate3d(0,0,0)'); + } + + zoom.scale = 1; + zoom.currentScale = 1; + + gesture.$slideEl = undefined; + gesture.$imageEl = undefined; + gesture.$imageWrapEl = undefined; + } + }, + // Toggle Zoom + toggle(e) { + const swiper = this; + const zoom = swiper.zoom; + + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoom.out(); + } else { + // Zoom In + zoom.in(e); + } + }, + in(e) { + const swiper = this; + + const zoom = swiper.zoom; + const params = swiper.params.zoom; + const { gesture, image } = zoom; + + if (!gesture.$slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); + } else { + gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + } + gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target'); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + + gesture.$slideEl.addClass(`${params.zoomedSlideClass}`); + + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; + touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + + zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + if (e) { + slideWidth = gesture.$slideEl[0].offsetWidth; + slideHeight = gesture.$slideEl[0].offsetHeight; + offsetX = gesture.$slideEl.offset().left; + offsetY = gesture.$slideEl.offset().top; + diffX = (offsetX + (slideWidth / 2)) - touchX; + diffY = (offsetY + (slideHeight / 2)) - touchY; + + imageWidth = gesture.$imageEl[0].offsetWidth; + imageHeight = gesture.$imageEl[0].offsetHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + + translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0); + translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`); + gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`); + }, + out() { + const swiper = this; + + const zoom = swiper.zoom; + const params = swiper.params.zoom; + const { gesture } = zoom; + + if (!gesture.$slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); + } else { + gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + } + gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target'); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + + zoom.scale = 1; + zoom.currentScale = 1; + gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); + gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); + gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`); + gesture.$slideEl = undefined; + }, + // Attach/Detach Events + enable() { + const swiper = this; + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + + const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; + const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true; + + const slideSelector = `.${swiper.params.slideClass}`; + + // Scale image + if (Support.gestures) { + swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener); + swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener); + } else if (swiper.touchEvents.start === 'touchstart') { + swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture); + swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener); + if (swiper.touchEvents.cancel) { + swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener); + } + } + + // Move image + swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture); + }, + disable() { + const swiper = this; + const zoom = swiper.zoom; + if (!zoom.enabled) return; + + swiper.zoom.enabled = false; + + const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; + const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true; + + const slideSelector = `.${swiper.params.slideClass}`; + + // Scale image + if (Support.gestures) { + swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener); + swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener); + } else if (swiper.touchEvents.start === 'touchstart') { + swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture); + swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener); + if (swiper.touchEvents.cancel) { + swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener); + } + } + + // Move image + swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture); + }, +}; + +var Zoom$1 = { + name: 'zoom', + params: { + zoom: { + enabled: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed', + }, + }, + create() { + const swiper = this; + const zoom = { + enabled: false, + scale: 1, + currentScale: 1, + isScaling: false, + gesture: { + $slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + $imageEl: undefined, + $imageWrapEl: undefined, + maxRatio: 3, + }, + image: { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {}, + }, + velocity: { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined, + }, + }; + + ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => { + zoom[methodName] = Zoom[methodName].bind(swiper); + }); + Utils.extend(swiper, { + zoom, + }); + + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined; + const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined; + swiper.emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.zoom.enabled) { + swiper.zoom.enable(); + } + }, + destroy() { + const swiper = this; + swiper.zoom.disable(); + }, + touchStart(e) { + const swiper = this; + if (!swiper.zoom.enabled) return; + swiper.zoom.onTouchStart(e); + }, + touchEnd(e) { + const swiper = this; + if (!swiper.zoom.enabled) return; + swiper.zoom.onTouchEnd(e); + }, + doubleTap(e) { + const swiper = this; + if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + swiper.zoom.toggle(e); + } + }, + transitionEnd() { + const swiper = this; + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + swiper.zoom.onTransitionEnd(); + } + }, + slideChange() { + const swiper = this; + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + swiper.zoom.onTransitionEnd(); + } + }, + }, +}; + +const Lazy = { + loadInSlide(index, loadInDuplicate = true) { + const swiper = this; + const params = swiper.params.lazy; + if (typeof index === 'undefined') return; + if (swiper.slides.length === 0) return; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + const $slideEl = isVirtual + ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`) + : swiper.slides.eq(index); + + let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`); + if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { + $images = $images.add($slideEl[0]); + } + if ($images.length === 0) return; + + $images.each((imageIndex, imageEl) => { + const $imageEl = $(imageEl); + $imageEl.addClass(params.loadingClass); + + const background = $imageEl.attr('data-background'); + const src = $imageEl.attr('data-src'); + const srcset = $imageEl.attr('data-srcset'); + const sizes = $imageEl.attr('data-sizes'); + + swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => { + if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return; + if (background) { + $imageEl.css('background-image', `url("${background}")`); + $imageEl.removeAttr('data-background'); + } else { + if (srcset) { + $imageEl.attr('srcset', srcset); + $imageEl.removeAttr('data-srcset'); + } + if (sizes) { + $imageEl.attr('sizes', sizes); + $imageEl.removeAttr('data-sizes'); + } + if (src) { + $imageEl.attr('src', src); + $imageEl.removeAttr('data-src'); + } + } + + $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); + $slideEl.find(`.${params.preloaderClass}`).remove(); + if (swiper.params.loop && loadInDuplicate) { + const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); + if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { + const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`); + swiper.lazy.loadInSlide(originalSlide.index(), false); + } else { + const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`); + swiper.lazy.loadInSlide(duplicatedSlide.index(), false); + } + } + swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]); + if (swiper.params.autoHeight) { + swiper.updateAutoHeight(); + } + }); + + swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]); + }); + }, + load() { + const swiper = this; + const { + $wrapperEl, params: swiperParams, slides, activeIndex, + } = swiper; + const isVirtual = swiper.virtual && swiperParams.virtual.enabled; + const params = swiperParams.lazy; + + let slidesPerView = swiperParams.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = 0; + } + + function slideExist(index) { + if (isVirtual) { + if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) { + return true; + } + } else if (slides[index]) return true; + return false; + } + function slideIndex(slideEl) { + if (isVirtual) { + return $(slideEl).attr('data-swiper-slide-index'); + } + return $(slideEl).index(); + } + + if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true; + if (swiper.params.watchSlidesVisibility) { + $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => { + const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index(); + swiper.lazy.loadInSlide(index); + }); + } else if (slidesPerView > 1) { + for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) { + if (slideExist(i)) swiper.lazy.loadInSlide(i); + } + } else { + swiper.lazy.loadInSlide(activeIndex); + } + if (params.loadPrevNext) { + if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) { + const amount = params.loadPrevNextAmount; + const spv = slidesPerView; + const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); + const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); + // Next Slides + for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) { + if (slideExist(i)) swiper.lazy.loadInSlide(i); + } + // Prev Slides + for (let i = minIndex; i < activeIndex; i += 1) { + if (slideExist(i)) swiper.lazy.loadInSlide(i); + } + } else { + const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`); + if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide)); + + const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`); + if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide)); + } + } + }, +}; + +var Lazy$1 = { + name: 'lazy', + params: { + lazy: { + enabled: false, + loadPrevNext: false, + loadPrevNextAmount: 1, + loadOnTransitionStart: false, + + elementClass: 'swiper-lazy', + loadingClass: 'swiper-lazy-loading', + loadedClass: 'swiper-lazy-loaded', + preloaderClass: 'swiper-lazy-preloader', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + lazy: { + initialImageLoaded: false, + load: Lazy.load.bind(swiper), + loadInSlide: Lazy.loadInSlide.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.lazy.enabled && swiper.params.preloadImages) { + swiper.params.preloadImages = false; + } + }, + init() { + const swiper = this; + if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) { + swiper.lazy.load(); + } + }, + scroll() { + const swiper = this; + if (swiper.params.freeMode && !swiper.params.freeModeSticky) { + swiper.lazy.load(); + } + }, + resize() { + const swiper = this; + if (swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + }, + scrollbarDragMove() { + const swiper = this; + if (swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + }, + transitionStart() { + const swiper = this; + if (swiper.params.lazy.enabled) { + if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) { + swiper.lazy.load(); + } + } + }, + transitionEnd() { + const swiper = this; + if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { + swiper.lazy.load(); + } + }, + slideChange() { + const swiper = this; + if (swiper.params.lazy.enabled && swiper.params.cssMode) { + swiper.lazy.load(); + } + }, + }, +}; + +/* eslint no-bitwise: ["error", { "allow": [">>"] }] */ + +const Controller = { + LinearSpline: function LinearSpline(x, y) { + const binarySearch = (function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }()); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1]; + }; + return this; + }, + // xxx: for now i will just save one spline function to to + getInterpolateFunction(c) { + const swiper = this; + if (!swiper.controller.spline) { + swiper.controller.spline = swiper.params.loop + ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) + : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid); + } + }, + setTranslate(setTranslate, byController) { + const swiper = this; + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + function setControlledTranslate(c) { + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + swiper.controller.getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate(); + } + + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + }, + setTransition(duration, byController) { + const swiper = this; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + Utils.nextTick(() => { + c.updateAutoHeight(); + }); + } + c.$wrapperEl.transitionEnd(() => { + if (!controlled) return; + if (c.params.loop && swiper.params.controller.by === 'slide') { + c.loopFix(); + } + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + }, +}; +var Controller$1 = { + name: 'controller', + params: { + controller: { + control: undefined, + inverse: false, + by: 'slide', // or 'container' + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + controller: { + control: swiper.params.controller.control, + getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper), + setTranslate: Controller.setTranslate.bind(swiper), + setTransition: Controller.setTransition.bind(swiper), + }, + }); + }, + on: { + update() { + const swiper = this; + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + }, + resize() { + const swiper = this; + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + }, + observerUpdate() { + const swiper = this; + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + }, + setTranslate(translate, byController) { + const swiper = this; + if (!swiper.controller.control) return; + swiper.controller.setTranslate(translate, byController); + }, + setTransition(duration, byController) { + const swiper = this; + if (!swiper.controller.control) return; + swiper.controller.setTransition(duration, byController); + }, + }, +}; + +const a11y = { + makeElFocusable($el) { + $el.attr('tabIndex', '0'); + return $el; + }, + addElRole($el, role) { + $el.attr('role', role); + return $el; + }, + addElLabel($el, label) { + $el.attr('aria-label', label); + return $el; + }, + disableEl($el) { + $el.attr('aria-disabled', true); + return $el; + }, + enableEl($el) { + $el.attr('aria-disabled', false); + return $el; + }, + onEnterKey(e) { + const swiper = this; + const params = swiper.params.a11y; + if (e.keyCode !== 13) return; + const $targetEl = $(e.target); + if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + swiper.a11y.notify(params.lastSlideMessage); + } else { + swiper.a11y.notify(params.nextSlideMessage); + } + } + if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + swiper.a11y.notify(params.firstSlideMessage); + } else { + swiper.a11y.notify(params.prevSlideMessage); + } + } + if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) { + $targetEl[0].click(); + } + }, + notify(message) { + const swiper = this; + const notification = swiper.a11y.liveRegion; + if (notification.length === 0) return; + notification.html(''); + notification.html(message); + }, + updateNavigation() { + const swiper = this; + + if (swiper.params.loop || !swiper.navigation) return; + const { $nextEl, $prevEl } = swiper.navigation; + + if ($prevEl && $prevEl.length > 0) { + if (swiper.isBeginning) { + swiper.a11y.disableEl($prevEl); + } else { + swiper.a11y.enableEl($prevEl); + } + } + if ($nextEl && $nextEl.length > 0) { + if (swiper.isEnd) { + swiper.a11y.disableEl($nextEl); + } else { + swiper.a11y.enableEl($nextEl); + } + } + }, + updatePagination() { + const swiper = this; + const params = swiper.params.a11y; + if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { + swiper.pagination.bullets.each((bulletIndex, bulletEl) => { + const $bulletEl = $(bulletEl); + swiper.a11y.makeElFocusable($bulletEl); + swiper.a11y.addElRole($bulletEl, 'button'); + swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1)); + }); + } + }, + init() { + const swiper = this; + + swiper.$el.append(swiper.a11y.liveRegion); + + // Navigation + const params = swiper.params.a11y; + let $nextEl; + let $prevEl; + if (swiper.navigation && swiper.navigation.$nextEl) { + $nextEl = swiper.navigation.$nextEl; + } + if (swiper.navigation && swiper.navigation.$prevEl) { + $prevEl = swiper.navigation.$prevEl; + } + if ($nextEl) { + swiper.a11y.makeElFocusable($nextEl); + swiper.a11y.addElRole($nextEl, 'button'); + swiper.a11y.addElLabel($nextEl, params.nextSlideMessage); + $nextEl.on('keydown', swiper.a11y.onEnterKey); + } + if ($prevEl) { + swiper.a11y.makeElFocusable($prevEl); + swiper.a11y.addElRole($prevEl, 'button'); + swiper.a11y.addElLabel($prevEl, params.prevSlideMessage); + $prevEl.on('keydown', swiper.a11y.onEnterKey); + } + + // Pagination + if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { + swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey); + } + }, + destroy() { + const swiper = this; + if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove(); + + let $nextEl; + let $prevEl; + if (swiper.navigation && swiper.navigation.$nextEl) { + $nextEl = swiper.navigation.$nextEl; + } + if (swiper.navigation && swiper.navigation.$prevEl) { + $prevEl = swiper.navigation.$prevEl; + } + if ($nextEl) { + $nextEl.off('keydown', swiper.a11y.onEnterKey); + } + if ($prevEl) { + $prevEl.off('keydown', swiper.a11y.onEnterKey); + } + + // Pagination + if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { + swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey); + } + }, +}; +var A11y = { + name: 'a11y', + params: { + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + a11y: { + liveRegion: $(``), + }, + }); + Object.keys(a11y).forEach((methodName) => { + swiper.a11y[methodName] = a11y[methodName].bind(swiper); + }); + }, + on: { + init() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.init(); + swiper.a11y.updateNavigation(); + }, + toEdge() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.updateNavigation(); + }, + fromEdge() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.updateNavigation(); + }, + paginationUpdate() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.updatePagination(); + }, + destroy() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.destroy(); + }, + }, +}; + +const History = { + init() { + const swiper = this; + if (!swiper.params.history) return; + if (!win.history || !win.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + const history = swiper.history; + history.initialized = true; + history.paths = History.getPathValues(); + if (!history.paths.key && !history.paths.value) return; + history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + win.addEventListener('popstate', swiper.history.setHistoryPopState); + } + }, + destroy() { + const swiper = this; + if (!swiper.params.history.replaceState) { + win.removeEventListener('popstate', swiper.history.setHistoryPopState); + } + }, + setHistoryPopState() { + const swiper = this; + swiper.history.paths = History.getPathValues(); + swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false); + }, + getPathValues() { + const pathArray = win.location.pathname.slice(1).split('/').filter((part) => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { key, value }; + }, + setHistory(key, index) { + const swiper = this; + if (!swiper.history.initialized || !swiper.params.history.enabled) return; + const slide = swiper.slides.eq(index); + let value = History.slugify(slide.attr('data-history')); + if (!win.location.pathname.includes(key)) { + value = `${key}/${value}`; + } + const currentState = win.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + win.history.replaceState({ value }, null, value); + } else { + win.history.pushState({ value }, null, value); + } + }, + slugify(text) { + return text.toString() + .replace(/\s+/g, '-') + .replace(/[^\w-]+/g, '') + .replace(/--+/g, '-') + .replace(/^-+/, '') + .replace(/-+$/, ''); + }, + scrollToSlide(speed, value, runCallbacks) { + const swiper = this; + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides.eq(i); + const slideHistory = History.slugify(slide.attr('data-history')); + if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) { + const index = slide.index(); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }, +}; + +var History$1 = { + name: 'history', + params: { + history: { + enabled: false, + replaceState: false, + key: 'slides', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + history: { + init: History.init.bind(swiper), + setHistory: History.setHistory.bind(swiper), + setHistoryPopState: History.setHistoryPopState.bind(swiper), + scrollToSlide: History.scrollToSlide.bind(swiper), + destroy: History.destroy.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.history.enabled) { + swiper.history.init(); + } + }, + destroy() { + const swiper = this; + if (swiper.params.history.enabled) { + swiper.history.destroy(); + } + }, + transitionEnd() { + const swiper = this; + if (swiper.history.initialized) { + swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex); + } + }, + slideChange() { + const swiper = this; + if (swiper.history.initialized && swiper.params.cssMode) { + swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex); + } + }, + }, +}; + +const HashNavigation = { + onHashCange() { + const swiper = this; + const newHash = doc.location.hash.replace('#', ''); + const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash'); + if (newHash !== activeSlideHash) { + const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index(); + if (typeof newIndex === 'undefined') return; + swiper.slideTo(newIndex); + } + }, + setHash() { + const swiper = this; + if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return; + if (swiper.params.hashNavigation.replaceState && win.history && win.history.replaceState) { + win.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '')); + } else { + const slide = swiper.slides.eq(swiper.activeIndex); + const hash = slide.attr('data-hash') || slide.attr('data-history'); + doc.location.hash = hash || ''; + } + }, + init() { + const swiper = this; + if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return; + swiper.hashNavigation.initialized = true; + const hash = doc.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides.eq(i); + const slideHash = slide.attr('data-hash') || slide.attr('data-history'); + if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) { + const index = slide.index(); + swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); + } + } + } + if (swiper.params.hashNavigation.watchState) { + $(win).on('hashchange', swiper.hashNavigation.onHashCange); + } + }, + destroy() { + const swiper = this; + if (swiper.params.hashNavigation.watchState) { + $(win).off('hashchange', swiper.hashNavigation.onHashCange); + } + }, +}; +var HashNavigation$1 = { + name: 'hash-navigation', + params: { + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + hashNavigation: { + initialized: false, + init: HashNavigation.init.bind(swiper), + destroy: HashNavigation.destroy.bind(swiper), + setHash: HashNavigation.setHash.bind(swiper), + onHashCange: HashNavigation.onHashCange.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.hashNavigation.enabled) { + swiper.hashNavigation.init(); + } + }, + destroy() { + const swiper = this; + if (swiper.params.hashNavigation.enabled) { + swiper.hashNavigation.destroy(); + } + }, + transitionEnd() { + const swiper = this; + if (swiper.hashNavigation.initialized) { + swiper.hashNavigation.setHash(); + } + }, + slideChange() { + const swiper = this; + if (swiper.hashNavigation.initialized && swiper.params.cssMode) { + swiper.hashNavigation.setHash(); + } + }, + }, +}; + +/* eslint no-underscore-dangle: "off" */ + +const Autoplay = { + run() { + const swiper = this; + const $activeSlideEl = swiper.slides.eq(swiper.activeIndex); + let delay = swiper.params.autoplay.delay; + if ($activeSlideEl.attr('data-swiper-autoplay')) { + delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; + } + clearTimeout(swiper.autoplay.timeout); + swiper.autoplay.timeout = Utils.nextTick(() => { + if (swiper.params.autoplay.reverseDirection) { + if (swiper.params.loop) { + swiper.loopFix(); + swiper.slidePrev(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.isBeginning) { + swiper.slidePrev(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else { + swiper.autoplay.stop(); + } + } else if (swiper.params.loop) { + swiper.loopFix(); + swiper.slideNext(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.isEnd) { + swiper.slideNext(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else { + swiper.autoplay.stop(); + } + if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run(); + }, delay); + }, + start() { + const swiper = this; + if (typeof swiper.autoplay.timeout !== 'undefined') return false; + if (swiper.autoplay.running) return false; + swiper.autoplay.running = true; + swiper.emit('autoplayStart'); + swiper.autoplay.run(); + return true; + }, + stop() { + const swiper = this; + if (!swiper.autoplay.running) return false; + if (typeof swiper.autoplay.timeout === 'undefined') return false; + + if (swiper.autoplay.timeout) { + clearTimeout(swiper.autoplay.timeout); + swiper.autoplay.timeout = undefined; + } + swiper.autoplay.running = false; + swiper.emit('autoplayStop'); + return true; + }, + pause(speed) { + const swiper = this; + if (!swiper.autoplay.running) return; + if (swiper.autoplay.paused) return; + if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout); + swiper.autoplay.paused = true; + if (speed === 0 || !swiper.params.autoplay.waitForTransition) { + swiper.autoplay.paused = false; + swiper.autoplay.run(); + } else { + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); + } + }, +}; + +var Autoplay$1 = { + name: 'autoplay', + params: { + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: true, + stopOnLastSlide: false, + reverseDirection: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + autoplay: { + running: false, + paused: false, + run: Autoplay.run.bind(swiper), + start: Autoplay.start.bind(swiper), + stop: Autoplay.stop.bind(swiper), + pause: Autoplay.pause.bind(swiper), + onVisibilityChange() { + if (document.visibilityState === 'hidden' && swiper.autoplay.running) { + swiper.autoplay.pause(); + } + if (document.visibilityState === 'visible' && swiper.autoplay.paused) { + swiper.autoplay.run(); + swiper.autoplay.paused = false; + } + }, + onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); + swiper.autoplay.paused = false; + if (!swiper.autoplay.running) { + swiper.autoplay.stop(); + } else { + swiper.autoplay.run(); + } + }, + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.autoplay.enabled) { + swiper.autoplay.start(); + document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange); + } + }, + beforeTransitionStart(speed, internal) { + const swiper = this; + if (swiper.autoplay.running) { + if (internal || !swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.pause(speed); + } else { + swiper.autoplay.stop(); + } + } + }, + sliderFirstMove() { + const swiper = this; + if (swiper.autoplay.running) { + if (swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.stop(); + } else { + swiper.autoplay.pause(); + } + } + }, + touchEnd() { + const swiper = this; + if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.run(); + } + }, + destroy() { + const swiper = this; + if (swiper.autoplay.running) { + swiper.autoplay.stop(); + } + document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange); + }, + }, +}; + +const Fade = { + setTranslate() { + const swiper = this; + const { slides } = swiper; + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = swiper.slides.eq(i); + const offset = $slideEl[0].swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade + ? Math.max(1 - Math.abs($slideEl[0].progress), 0) + : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); + $slideEl + .css({ + opacity: slideOpacity, + }) + .transform(`translate3d(${tx}px, ${ty}px, 0px)`); + } + }, + setTransition(duration) { + const swiper = this; + const { slides, $wrapperEl } = swiper; + slides.transition(duration); + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + slides.transitionEnd(() => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const triggerEvents = ['webkitTransitionEnd', 'transitionend']; + for (let i = 0; i < triggerEvents.length; i += 1) { + $wrapperEl.trigger(triggerEvents[i]); + } + }); + } + }, +}; + +var EffectFade = { + name: 'effect-fade', + params: { + fadeEffect: { + crossFade: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + fadeEffect: { + setTranslate: Fade.setTranslate.bind(swiper), + setTransition: Fade.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'fade') return; + swiper.classNames.push(`${swiper.params.containerModifierClass}fade`); + const overwriteParams = { + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'fade') return; + swiper.fadeEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'fade') return; + swiper.fadeEffect.setTransition(duration); + }, + }, +}; + +const Cube = { + setTranslate() { + const swiper = this; + const { + $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize, + } = swiper; + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let $cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow'); + if ($cubeShadowEl.length === 0) { + $cubeShadowEl = $('
      '); + $wrapperEl.append($cubeShadowEl); + } + $cubeShadowEl.css({ height: `${swiperWidth}px` }); + } else { + $cubeShadowEl = $el.find('.swiper-cube-shadow'); + if ($cubeShadowEl.length === 0) { + $cubeShadowEl = $('
      '); + $el.append($cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min($slideEl[0].progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + (round * 4 * swiperSize); + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = (3 * swiperSize) + (swiperSize * 4 * round); + } + if (rtl) { + tx = -tx; + } + + if (!isHorizontal) { + ty = tx; + tx = 0; + } + + const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = (slideIndex * 90) + (progress * 90); + if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90); + } + $slideEl.transform(transform); + if (params.slideShadows) { + // Set shadows + let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + if (shadowBefore.length === 0) { + shadowBefore = $(`
      `); + $slideEl.append(shadowBefore); + } + if (shadowAfter.length === 0) { + shadowAfter = $(`
      `); + $slideEl.append(shadowAfter); + } + if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); + if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); + } + } + $wrapperEl.css({ + '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`, + '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`, + '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`, + 'transform-origin': `50% 50% -${swiperSize / 2}px`, + }); + + if (params.shadow) { + if (isHorizontal) { + $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`); + } else { + const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90); + const multiplier = 1.5 - ( + (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2) + + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2) + ); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`); + } + } + const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0; + $wrapperEl + .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`); + }, + setTransition(duration) { + const swiper = this; + const { $el, slides } = swiper; + slides + .transition(duration) + .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') + .transition(duration); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + $el.find('.swiper-cube-shadow').transition(duration); + } + }, +}; + +var EffectCube = { + name: 'effect-cube', + params: { + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + cubeEffect: { + setTranslate: Cube.setTranslate.bind(swiper), + setTransition: Cube.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'cube') return; + swiper.classNames.push(`${swiper.params.containerModifierClass}cube`); + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + const overwriteParams = { + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'cube') return; + swiper.cubeEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'cube') return; + swiper.cubeEffect.setTransition(duration); + }, + }, +}; + +const Flip = { + setTranslate() { + const swiper = this; + const { slides, rtlTranslate: rtl } = swiper; + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + let progress = $slideEl[0].progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min($slideEl[0].progress, 1), -1); + } + const offset = $slideEl[0].swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + + $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + + if (swiper.params.flipEffect.slideShadows) { + // Set shadows + let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + if (shadowBefore.length === 0) { + shadowBefore = $(`
      `); + $slideEl.append(shadowBefore); + } + if (shadowAfter.length === 0) { + shadowAfter = $(`
      `); + $slideEl.append(shadowAfter); + } + if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); + if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); + } + $slideEl + .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`); + } + }, + setTransition(duration) { + const swiper = this; + const { slides, activeIndex, $wrapperEl } = swiper; + slides + .transition(duration) + .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') + .transition(duration); + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + // eslint-disable-next-line + slides.eq(activeIndex).transitionEnd(function onTransitionEnd() { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + // if (!$(this).hasClass(swiper.params.slideActiveClass)) return; + eventTriggered = true; + swiper.animating = false; + const triggerEvents = ['webkitTransitionEnd', 'transitionend']; + for (let i = 0; i < triggerEvents.length; i += 1) { + $wrapperEl.trigger(triggerEvents[i]); + } + }); + } + }, +}; + +var EffectFlip = { + name: 'effect-flip', + params: { + flipEffect: { + slideShadows: true, + limitRotation: true, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + flipEffect: { + setTranslate: Flip.setTranslate.bind(swiper), + setTransition: Flip.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'flip') return; + swiper.classNames.push(`${swiper.params.containerModifierClass}flip`); + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + const overwriteParams = { + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'flip') return; + swiper.flipEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'flip') return; + swiper.flipEffect.setTransition(duration); + }, + }, +}; + +const Coverflow = { + setTranslate() { + const swiper = this; + const { + width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid, + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2); + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const $slideEl = slides.eq(i); + const slideSize = slidesSizesGrid[i]; + const slideOffset = $slideEl[0].swiperSlideOffset; + const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier; + + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = ((parseFloat(params.stretch) / 100) * slideSize); + } + let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier); + let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0; + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; + + $slideEl.transform(slideTransform); + $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + if ($shadowBeforeEl.length === 0) { + $shadowBeforeEl = $(`
      `); + $slideEl.append($shadowBeforeEl); + } + if ($shadowAfterEl.length === 0) { + $shadowAfterEl = $(`
      `); + $slideEl.append($shadowAfterEl); + } + if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; + } + } + + // Set correct perspective for IE10 + if (Support.pointerEvents || Support.prefixedPointerEvents) { + const ws = $wrapperEl[0].style; + ws.perspectiveOrigin = `${center}px 50%`; + } + }, + setTransition(duration) { + const swiper = this; + swiper.slides + .transition(duration) + .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') + .transition(duration); + }, +}; + +var EffectCoverflow = { + name: 'effect-coverflow', + params: { + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + modifier: 1, + slideShadows: true, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + coverflowEffect: { + setTranslate: Coverflow.setTranslate.bind(swiper), + setTransition: Coverflow.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'coverflow') return; + + swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`); + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'coverflow') return; + swiper.coverflowEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'coverflow') return; + swiper.coverflowEffect.setTransition(duration); + }, + }, +}; + +const Thumbs = { + init() { + const swiper = this; + const { thumbs: thumbsParams } = swiper.params; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Utils.extend(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false, + }); + Utils.extend(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false, + }); + } else if (Utils.isObject(thumbsParams.swiper)) { + swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, { + watchSlidesVisibility: true, + watchSlidesProgress: true, + slideToClickedSlide: false, + })); + swiper.thumbs.swiperCreated = true; + } + swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick); + }, + onThumbClick() { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + let currentIndex = swiper.activeIndex; + if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) { + swiper.loopFix(); + // eslint-disable-next-line + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + currentIndex = swiper.activeIndex; + } + const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); + const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); + if (typeof prevIndex === 'undefined') slideToIndex = nextIndex; + else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex; + else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex; + else slideToIndex = prevIndex; + } + swiper.slideTo(slideToIndex); + }, + update(initial) { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' + ? thumbsSwiper.slidesPerViewDynamic() + : thumbsSwiper.params.slidesPerView; + + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + let currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) { + thumbsSwiper.loopFix(); + // eslint-disable-next-line + thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft; + currentThumbsIndex = thumbsSwiper.activeIndex; + } + // Find actual thumbs index to slide to + const prevThumbsIndex = thumbsSwiper.slides + .eq(currentThumbsIndex) + .prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0) + .index(); + const nextThumbsIndex = thumbsSwiper.slides + .eq(currentThumbsIndex) + .nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0) + .index(); + if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex; + else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex; + else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex; + else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex; + else newThumbsIndex = prevThumbsIndex; + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - slidesPerView + 1; + } + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + + thumbsToActivate = Math.floor(thumbsToActivate); + + thumbsSwiper.slides.removeClass(thumbActiveClass); + if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) { + for (let i = 0; i < thumbsToActivate; i += 1) { + thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass); + } + } + }, +}; +var Thumbs$1 = { + name: 'thumbs', + params: { + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-container-thumbs', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + thumbs: { + swiper: null, + init: Thumbs.init.bind(swiper), + update: Thumbs.update.bind(swiper), + onThumbClick: Thumbs.onThumbClick.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + const { thumbs } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + swiper.thumbs.init(); + swiper.thumbs.update(true); + }, + slideChange() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + update() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + resize() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + observerUpdate() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + setTransition(duration) { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + thumbsSwiper.setTransition(duration); + }, + beforeDestroy() { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + if (swiper.thumbs.swiperCreated && thumbsSwiper) { + thumbsSwiper.destroy(); + } + }, + }, +}; + +// Swiper Class + +const components = [ + Device$1, + Support$1, + Browser$1, + Resize, + Observer$1, + Virtual$1, + Keyboard$1, + Mousewheel$1, + Navigation$1, + Pagination$1, + Scrollbar$1, + Parallax$1, + Zoom$1, + Lazy$1, + Controller$1, + A11y, + History$1, + HashNavigation$1, + Autoplay$1, + EffectFade, + EffectCube, + EffectFlip, + EffectCoverflow, + Thumbs$1 +]; + +if (typeof Swiper.use === 'undefined') { + Swiper.use = Swiper.Class.use; + Swiper.installModule = Swiper.Class.installModule; +} + +Swiper.use(components); + +export default Swiper; +//# sourceMappingURL=swiper.esm.browser.bundle.js.map diff --git a/static/libs/swiper-5.3.8/package/js/swiper.esm.browser.bundle.js.map b/static/libs/swiper-5.3.8/package/js/swiper.esm.browser.bundle.js.map new file mode 100644 index 0000000..a9d1585 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/js/swiper.esm.browser.bundle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper.esm.browser.bundle.js.map","sources":["../../node_modules/ssr-window/dist/ssr-window.esm.js","../../node_modules/dom7/dist/dom7.modular.js","../../src/utils/dom.js","../../src/utils/utils.js","../../src/utils/support.js","../../src/utils/class.js","../../src/components/core/update/updateSize.js","../../src/components/core/update/updateSlides.js","../../src/components/core/update/updateAutoHeight.js","../../src/components/core/update/updateSlidesOffset.js","../../src/components/core/update/updateSlidesProgress.js","../../src/components/core/update/updateProgress.js","../../src/components/core/update/updateSlidesClasses.js","../../src/components/core/update/updateActiveIndex.js","../../src/components/core/update/updateClickedSlide.js","../../src/components/core/update/index.js","../../src/components/core/translate/getTranslate.js","../../src/components/core/translate/setTranslate.js","../../src/components/core/translate/minTranslate.js","../../src/components/core/translate/maxTranslate.js","../../src/components/core/translate/translateTo.js","../../src/components/core/translate/index.js","../../src/components/core/transition/setTransition.js","../../src/components/core/transition/transitionStart.js","../../src/components/core/transition/transitionEnd.js","../../src/components/core/transition/index.js","../../src/components/core/slide/slideTo.js","../../src/components/core/slide/slideToLoop.js","../../src/components/core/slide/slideNext.js","../../src/components/core/slide/slidePrev.js","../../src/components/core/slide/slideReset.js","../../src/components/core/slide/slideToClosest.js","../../src/components/core/slide/slideToClickedSlide.js","../../src/components/core/slide/index.js","../../src/components/core/loop/loopCreate.js","../../src/components/core/loop/loopFix.js","../../src/components/core/loop/loopDestroy.js","../../src/components/core/loop/index.js","../../src/components/core/grab-cursor/setGrabCursor.js","../../src/components/core/grab-cursor/unsetGrabCursor.js","../../src/components/core/grab-cursor/index.js","../../src/components/core/manipulation/appendSlide.js","../../src/components/core/manipulation/prependSlide.js","../../src/components/core/manipulation/addSlide.js","../../src/components/core/manipulation/removeSlide.js","../../src/components/core/manipulation/removeAllSlides.js","../../src/components/core/manipulation/index.js","../../src/utils/device.js","../../src/components/core/events/onTouchStart.js","../../src/components/core/events/onTouchMove.js","../../src/components/core/events/onTouchEnd.js","../../src/components/core/events/onResize.js","../../src/components/core/events/onClick.js","../../src/components/core/events/onScroll.js","../../src/components/core/events/index.js","../../src/components/core/breakpoints/setBreakpoint.js","../../src/components/core/breakpoints/getBreakpoint.js","../../src/components/core/breakpoints/index.js","../../src/components/core/classes/addClasses.js","../../src/components/core/classes/removeClasses.js","../../src/components/core/classes/index.js","../../src/components/core/images/loadImage.js","../../src/components/core/images/preloadImages.js","../../src/components/core/images/index.js","../../src/components/core/check-overflow/index.js","../../src/components/core/defaults.js","../../src/components/core/core-class.js","../../src/modules/device/device.js","../../src/modules/support/support.js","../../src/utils/browser.js","../../src/modules/browser/browser.js","../../src/modules/resize/resize.js","../../src/modules/observer/observer.js","../../src/components/virtual/virtual.js","../../src/components/keyboard/keyboard.js","../../src/components/mousewheel/mousewheel.js","../../src/components/navigation/navigation.js","../../src/components/pagination/pagination.js","../../src/components/scrollbar/scrollbar.js","../../src/components/parallax/parallax.js","../../src/components/zoom/zoom.js","../../src/components/lazy/lazy.js","../../src/components/controller/controller.js","../../src/components/a11y/a11y.js","../../src/components/history/history.js","../../src/components/hash-navigation/hash-navigation.js","../../src/components/autoplay/autoplay.js","../../src/components/effect-fade/effect-fade.js","../../src/components/effect-cube/effect-cube.js","../../src/components/effect-flip/effect-flip.js","../../src/components/effect-coverflow/effect-coverflow.js","../../src/components/thumbs/thumbs.js","../../src/swiper.js"],"sourcesContent":["/**\n * SSR Window 1.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2018, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: July 18, 2018\n */\nvar doc = (typeof document === 'undefined') ? {\n body: {},\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n activeElement: {\n blur: function blur() {},\n nodeName: '',\n },\n querySelector: function querySelector() {\n return null;\n },\n querySelectorAll: function querySelectorAll() {\n return [];\n },\n getElementById: function getElementById() {\n return null;\n },\n createEvent: function createEvent() {\n return {\n initEvent: function initEvent() {},\n };\n },\n createElement: function createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function setAttribute() {},\n getElementsByTagName: function getElementsByTagName() {\n return [];\n },\n };\n },\n location: { hash: '' },\n} : document; // eslint-disable-line\n\nvar win = (typeof window === 'undefined') ? {\n document: doc,\n navigator: {\n userAgent: '',\n },\n location: {},\n history: {},\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n getComputedStyle: function getComputedStyle() {\n return {\n getPropertyValue: function getPropertyValue() {\n return '';\n },\n };\n },\n Image: function Image() {},\n Date: function Date() {},\n screen: {},\n setTimeout: function setTimeout() {},\n clearTimeout: function clearTimeout() {},\n} : window; // eslint-disable-line\n\nexport { win as window, doc as document };\n","/**\n * Dom7 2.1.3\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2019, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: February 11, 2019\n */\nimport { document, window } from 'ssr-window';\n\nclass Dom7 {\n constructor(arr) {\n const self = this;\n // Create array-like object\n for (let i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n self.length = arr.length;\n // Return collection with methods\n return this;\n }\n}\n\nfunction $(selector, context) {\n const arr = [];\n let i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n let els;\n let tempParent;\n const html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(':~]/)) {\n // Pure ID selector\n els = [document.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || document).querySelectorAll(selector.trim());\n }\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) arr.push(els[i]);\n }\n }\n } else if (selector.nodeType || selector === window || selector === document) {\n // Node/element\n arr.push(selector);\n } else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n}\n\n$.fn = Dom7.prototype;\n$.Class = Dom7;\n$.Dom7 = Dom7;\n\nfunction unique(arr) {\n const uniqueArray = [];\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group1) => group1.toUpperCase());\n}\n\nfunction requestAnimationFrame(callback) {\n if (window.requestAnimationFrame) return window.requestAnimationFrame(callback);\n else if (window.webkitRequestAnimationFrame) return window.webkitRequestAnimationFrame(callback);\n return window.setTimeout(callback, 1000 / 60);\n}\nfunction cancelAnimationFrame(id) {\n if (window.cancelAnimationFrame) return window.cancelAnimationFrame(id);\n else if (window.webkitCancelAnimationFrame) return window.webkitCancelAnimationFrame(id);\n return window.clearTimeout(id);\n}\n\n// Classes and attributes\nfunction addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);\n }\n }\n return this;\n}\nfunction removeClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);\n }\n }\n return this;\n}\nfunction hasClass(className) {\n if (!this[0]) return false;\n return this[0].classList.contains(className);\n}\nfunction toggleClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);\n }\n }\n return this;\n}\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n }\n\n // Set attrs\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n // eslint-disable-next-line\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\n// eslint-disable-next-line\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n // eslint-disable-next-line\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n}\nfunction data(key, value) {\n let el;\n if (typeof value === 'undefined') {\n el = this[0];\n // Get value\n if (el) {\n if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n return undefined;\n }\n\n // Set value\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n if (el.dataset) {\n // eslint-disable-next-line\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n // eslint-disable-next-line\n const attr = el.attributes[i];\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n // eslint-disable-next-line\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;\n else if (dataset[key] === 'true') dataset[key] = true;\n else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n return dataset;\n}\nfunction val(value) {\n const dom = this;\n if (typeof value === 'undefined') {\n if (dom[0]) {\n if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {\n const values = [];\n for (let i = 0; i < dom[0].selectedOptions.length; i += 1) {\n values.push(dom[0].selectedOptions[i].value);\n }\n return values;\n }\n return dom[0].value;\n }\n return undefined;\n }\n\n for (let i = 0; i < dom.length; i += 1) {\n const el = dom[i];\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n return dom;\n}\n// Transforms\n// eslint-disable-next-line\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n if (typeof duration !== 'string') {\n duration = `${duration}ms`; // eslint-disable-line\n }\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n}\n// Events\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) listener.apply(target, eventData);\n else {\n const parents = $(target).parents(); // eslint-disable-line\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n const events = eventType.split(' ');\n let j;\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n const events = eventType.split(' ');\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n}\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger(...args) {\n const events = args[0].split(' ');\n const eventData = args[1];\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let evt;\n try {\n evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = document.createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n const events = ['webkitTransitionEnd', 'transitionend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\nfunction animationEnd(callback) {\n const events = ['webkitAnimationEnd', 'animationend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\n// Sizing/Styles\nfunction width() {\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction height() {\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: (box.top + scrollTop) - clientTop,\n left: (box.left + scrollLeft) - clientLeft,\n };\n }\n\n return null;\n}\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n}\nfunction show() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n}\nfunction styles() {\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n let i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (let prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\n\n// Dom manipulation\nfunction toArray() {\n const arr = [];\n for (let i = 0; i < this.length; i += 1) {\n arr.push(this[i]);\n }\n return arr;\n}\n// Iterate over the collection passing elements to `callback`\nfunction each(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], i, this[i]) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction forEach(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], this[i], i) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction filter(callback) {\n const matchedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);\n }\n return new Dom7(matchedItems);\n}\nfunction map(callback) {\n const modifiedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n modifiedItems.push(callback.call(dom[i], i, dom[i]));\n }\n return new Dom7(modifiedItems);\n}\n// eslint-disable-next-line\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\n// eslint-disable-next-line\nfunction text(text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n return null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n } else if (selector === document) return el === document;\n else if (selector === window) return el === window;\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n return false;\n}\nfunction indexOf(el) {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i] === el) return i;\n }\n return -1;\n}\nfunction index() {\n let child = this[0];\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\n// eslint-disable-next-line\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n let returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) return new Dom7([]);\n return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n}\nfunction append(...args) {\n let newChild;\n\n for (let k = 0; k < args.length; k += 1) {\n newChild = args[k];\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n// eslint-disable-next-line\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\nfunction prepend(newChild) {\n let i;\n let j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\nfunction insertBefore(selector) {\n const before = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\nfunction insertAfter(selector) {\n const after = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return new Dom7([this[0].nextElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return new Dom7(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return new Dom7(prevEls);\n}\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(unique(parents));\n}\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(unique(parents));\n}\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n const foundElements = [];\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n}\nfunction children(selector) {\n const children = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].childNodes;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return new Dom7(unique(children));\n}\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction detach() {\n return this.remove();\n}\nfunction add(...args) {\n const dom = this;\n let i;\n let j;\n for (i = 0; i < args.length; i += 1) {\n const toAdd = $(args[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n return dom;\n}\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n el.textContent = '';\n }\n }\n return this;\n}\n\nfunction scrollTo(...args) {\n let [left, top, duration, easing, callback] = args;\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n if (typeof easing === 'undefined') easing = 'swing';\n\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n let scrollLeft; // eslint-disable-line\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) return;\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : (0.5 - (Math.cos(progress * Math.PI) / 2));\n let done;\n if (animateTop) scrollTop = currentTop + (easeProgress * (newTop - currentTop));\n if (animateLeft) scrollLeft = currentLeft + (easeProgress * (newLeft - currentLeft));\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n requestAnimationFrame(render);\n }\n requestAnimationFrame(render);\n });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing', // or 'linear'\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n }, initialParams),\n\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - (Math.cos(progress * Math.PI) / 2);\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop() {\n if (a.frameId) {\n cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done(complete) {\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n const elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each((index, el) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n elements[index] = {\n container: el,\n };\n Object.keys(props).forEach((prop) => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue,\n };\n });\n });\n\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress;\n // let el;\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n if (startTime === null) {\n startTime = time;\n }\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), ((startTime + params.duration) - time < 0 ? 0 : (startTime + params.duration) - time), startTime);\n }\n\n elements.forEach((element) => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach((prop) => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const { initialValue, finalValue, unit } = el[prop];\n el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));\n const currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (finalValue < initialValue && currentValue <= finalValue)) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return;\n // Then call\n a.frameId = requestAnimationFrame(render);\n }\n a.frameId = requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = ('resize scroll').split(' ');\nfunction eventShortcut(name, ...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();\n else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return this.on(name, ...args);\n}\n\nfunction click(...args) {\n return eventShortcut.bind(this)('click', ...args);\n}\nfunction blur(...args) {\n return eventShortcut.bind(this)('blur', ...args);\n}\nfunction focus(...args) {\n return eventShortcut.bind(this)('focus', ...args);\n}\nfunction focusin(...args) {\n return eventShortcut.bind(this)('focusin', ...args);\n}\nfunction focusout(...args) {\n return eventShortcut.bind(this)('focusout', ...args);\n}\nfunction keyup(...args) {\n return eventShortcut.bind(this)('keyup', ...args);\n}\nfunction keydown(...args) {\n return eventShortcut.bind(this)('keydown', ...args);\n}\nfunction keypress(...args) {\n return eventShortcut.bind(this)('keypress', ...args);\n}\nfunction submit(...args) {\n return eventShortcut.bind(this)('submit', ...args);\n}\nfunction change(...args) {\n return eventShortcut.bind(this)('change', ...args);\n}\nfunction mousedown(...args) {\n return eventShortcut.bind(this)('mousedown', ...args);\n}\nfunction mousemove(...args) {\n return eventShortcut.bind(this)('mousemove', ...args);\n}\nfunction mouseup(...args) {\n return eventShortcut.bind(this)('mouseup', ...args);\n}\nfunction mouseenter(...args) {\n return eventShortcut.bind(this)('mouseenter', ...args);\n}\nfunction mouseleave(...args) {\n return eventShortcut.bind(this)('mouseleave', ...args);\n}\nfunction mouseout(...args) {\n return eventShortcut.bind(this)('mouseout', ...args);\n}\nfunction mouseover(...args) {\n return eventShortcut.bind(this)('mouseover', ...args);\n}\nfunction touchstart(...args) {\n return eventShortcut.bind(this)('touchstart', ...args);\n}\nfunction touchend(...args) {\n return eventShortcut.bind(this)('touchend', ...args);\n}\nfunction touchmove(...args) {\n return eventShortcut.bind(this)('touchmove', ...args);\n}\nfunction resize(...args) {\n return eventShortcut.bind(this)('resize', ...args);\n}\nfunction scroll(...args) {\n return eventShortcut.bind(this)('scroll', ...args);\n}\n\nexport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, prop, data, removeData, dataset, val, transform, transition, on, off, once, trigger, transitionEnd, animationEnd, width, outerWidth, height, outerHeight, offset, hide, show, styles, css, toArray, each, forEach, filter, map, html, text, is, indexOf, index, eq, append, appendTo, prepend, prependTo, insertBefore, insertAfter, next, nextAll, prev, prevAll, siblings, parent, parents, closest, find, children, remove, detach, add, empty, scrollTo, scrollTop, scrollLeft, animate, stop, click, blur, focus, focusin, focusout, keyup, keydown, keypress, submit, change, mousedown, mousemove, mouseup, mouseenter, mouseleave, mouseout, mouseover, touchstart, touchend, touchmove, resize, scroll };\n","import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n add,\n styles,\n} from 'dom7/dist/dom7.modular';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n add,\n styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n});\n\nexport default $;\n","import { window } from 'ssr-window';\n\nconst Utils = {\n deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n },\n nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n },\n now() {\n return Date.now();\n },\n getTranslate(el, axis = 'x') {\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n },\n parseUrlQuery(url) {\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n return query;\n },\n isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend(...args) {\n const to = Object(args[0]);\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n};\nexport default Utils;\n","import { window, document } from 'ssr-window';\n\nconst Support = (function Support() {\n return {\n touch: (window.Modernizr && window.Modernizr.touch === true) || (function checkTouch() {\n return !!((window.navigator.maxTouchPoints > 0) || ('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch));\n }()),\n\n pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints > 0,\n\n observer: (function checkObserver() {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n }()),\n };\n}());\n\nexport default Support;\n","import Utils from './utils';\n\nclass SwiperClass {\n constructor(params = {}) {\n const self = this;\n self.params = params;\n\n // Events\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n }\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n const moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach((m) => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nexport default SwiperClass;\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { window } from 'ssr-window';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const params = swiper.params;\n\n const {\n $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n function slidesForMargin(slideIndex) {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.snapGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '' });\n\n let slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n\n // Calc slides\n let slideSize;\n const slidesPerColumn = params.slidesPerColumn;\n const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0\n ? params.slidesPerGroup\n : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;\n\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - (column * slidesPerColumn);\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide.css(\n `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n );\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n const slideStyles = window.getComputedStyle(slide[0], null);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal()\n ? slide.outerWidth(true)\n : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n const width = parseFloat(slideStyles.getPropertyValue('width'));\n const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n }\n } else {\n const height = parseFloat(slideStyles.getPropertyValue('height'));\n const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = height + marginTop + marginBottom;\n } else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n if (swiper.isHorizontal()) {\n slides[i].style.width = `${slideSize}px`;\n } else {\n slides[i].style.height = `${slideSize}px`;\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n let newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Utils.extend(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\n","export default function (speed) {\n const swiper = this;\n const activeSlides = [];\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((index, slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length) break;\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function () {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n const slideProgress = (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n || (slideAfter > 1 && slideAfter <= swiper.size)\n || (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / (translatesDiff);\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Utils.extend(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function () {\n const swiper = this;\n\n const {\n slides, params, $wrapperEl, activeIndex, realIndex,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) slideFound = true;\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = $(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function (axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const {\n params, rtlTranslate: rtl, translate, $wrapperEl,\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function (translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function () {\n return (-this.snapGrid[0]);\n}\n","export default function () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n","export default function (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n\n const {\n params,\n wrapperEl,\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","export default function (duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","export default function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}\n","export default function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex, params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}\n","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n let t = -translate;\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating } = swiper;\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params, animating, snapGrid, slidesGrid, rtlTranslate,\n } = swiper;\n\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));\n\n const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach((snap) => {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n let prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((index, el) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function () {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function () {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","import Support from '../../../utils/support';\n\nexport default function (moving) {\n const swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n const el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","import Support from '../../../utils/support';\n\nexport default function () {\n const swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n swiper.el.style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","import Support from '../../../utils/support';\n\nexport default function (index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function () {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\n\nexport default {\n appendSlide,\n prependSlide,\n addSlide,\n removeSlide,\n removeAllSlides,\n};\n","import { window } from 'ssr-window';\nimport Support from './support';\n\nconst Device = (function Device() {\n const platform = window.navigator.platform;\n const ua = window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!(window.cordova || window.phonegap),\n phonegap: !!(window.cordova || window.phonegap),\n electron: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n if (!ipad\n && macos\n && Support.touch\n && (\n (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9\n || (screenWidth === 834 && screenHeight === 1194) // Pro 11\n || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5\n || (screenWidth === 768 && screenHeight === 1024) // other\n )\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone))\n || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron;\n if (device.desktop) {\n device.electron = electron;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Export object\n return device;\n}());\n\nexport default Device;\n","import { window, document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= window.screen.width - edgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.formElements)) preventDefault = false;\n if (\n document.activeElement\n && $(document.activeElement).is(data.formElements)\n && document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type === 'mousemove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if ((diffX * diffX) + (diffY * diffY) >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const {\n params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = Utils.now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = Utils.now();\n Utils.nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeModeMomentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {\n const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function () {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function (e) {\n const swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function () {\n const swiper = this;\n const { wrapperEl, rtlTranslate } = swiper;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { document } from 'ssr-window';\nimport Device from '../../../utils/device';\nimport Support from '../../../utils/support';\n\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n const swiper = this;\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n const swiper = this;\n\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const {\n activeIndex, initialized, loopedSlides = 0, params, $el,\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {\n const paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = params.slidesPerColumn > 1;\n const isMultiRow = breakpointParams.slidesPerColumn > 1;\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}multirow`);\n if (breakpointParams.slidesPerColumnFill === 'column') {\n $el.addClass(`${params.containerModifierClass}multirow-column`);\n }\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n Utils.extend(swiper.params, breakpointParams);\n\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n }\n}\n","import { window } from 'ssr-window';\n\nexport default function (breakpoints) {\n // Get breakpoint for window width\n if (!breakpoints) return undefined;\n let breakpoint = false;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = window.innerHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (value <= window.innerWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\n\nexport default { setBreakpoint, getBreakpoint };\n","import Device from '../../../utils/device';\n\nexport default function () {\n const swiper = this;\n const {\n classNames, params, rtl, $el,\n } = swiper;\n const suffixes = [];\n\n suffixes.push('initialized');\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n if (params.slidesPerColumnFill === 'column') {\n suffixes.push('multirow-column');\n }\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n\n if (params.cssMode) {\n suffixes.push('css-mode');\n }\n\n suffixes.forEach((suffix) => {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n}\n","export default function () {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n}\n","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\n\nexport default { addClasses, removeClasses };\n","import { window } from 'ssr-window';\n\nexport default function (imageEl, src, srcset, sizes, checkForComplete, callback) {\n let image;\n function onReady() {\n if (callback) callback();\n }\n if (!imageEl.complete || !checkForComplete) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function () {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n}\n","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","\nfunction checkOverflow() {\n const swiper = this;\n const params = swiper.params;\n const wasLocked = swiper.isLocked;\n const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n\n // events\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n swiper.navigation.update();\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n //\n preventInteractionOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n};\n","/* eslint no-param-reassign: \"off\" */\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nimport SwiperClass from '../../utils/class';\n\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\n\nimport defaults from './defaults';\n\nconst prototypes = {\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n manipulation,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = Utils.extend({}, params);\n if (el && !params.el) params.el = el;\n\n super(params);\n\n Object.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n const swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach((moduleName) => {\n const module = swiper.modules[moduleName];\n if (module.params) {\n const moduleParamName = Object.keys(module.params)[0];\n const moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object'\n && !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n }\n });\n\n // Extend defaults with modules params\n const swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $;\n\n // Find el\n const $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n const swipers = [];\n $el.each((index, containerEl) => {\n const newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n let $wrapperEl;\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n // Children needs to return slot items\n $wrapperEl.children = (options) => $el.children(options);\n } else {\n $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n }\n // Extend Swiper\n Utils.extend(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // RTL\n rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }()),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n formElements: 'input, select, option, textarea, button, video, label',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n slidesPerViewDynamic() {\n const swiper = this;\n const {\n params, slides, slidesGrid, size: swiperSize, activeIndex,\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideIndex, slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n init() {\n const swiper = this;\n if (swiper.initialized) return;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params, $el, $wrapperEl, slides,\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static get Class() {\n return SwiperClass;\n }\n\n static get $() {\n return $;\n }\n}\n\nexport default Swiper;\n","import Device from '../../utils/device';\n\nexport default {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n};\n","import Support from '../../utils/support';\n\nexport default {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n};\n","import { window } from 'ssr-window';\n\nconst Browser = (function Browser() {\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}());\n\nexport default Browser;\n","import Browser from '../../utils/browser';\n\nexport default {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nexport default {\n name: 'resize',\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n // Emit resize\n window.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy() {\n const swiper = this;\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Observer = {\n func: window.MutationObserver || window.WebkitMutationObserver,\n attach(target, options = {}) {\n const swiper = this;\n\n const ObserverFunc = Observer.func;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n swiper.observer.observers.push(observer);\n },\n init() {\n const swiper = this;\n if (!Support.observer || !swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy() {\n const swiper = this;\n swiper.observer.observers.forEach((observer) => {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\n\nexport default {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.observer.init();\n },\n destroy() {\n const swiper = this;\n swiper.observer.destroy();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Virtual = {\n update(force) {\n const swiper = this;\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n renderSlide,\n offset: previousOffset,\n } = swiper.virtual;\n swiper.updateActiveIndex();\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n slidesBefore = slidesPerGroup + addSlidesAfter;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Utils.extend(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n },\n renderSlide(slide, index) {\n const swiper = this;\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(`
      ${slide}
      `);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n },\n appendSlide(slides) {\n const swiper = this;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n swiper.virtual.update(true);\n },\n prependSlide(slides) {\n const swiper = this;\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide(slidesIndexes) {\n const swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides() {\n const swiper = this;\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n },\n};\n\nexport default {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n virtual: {\n update: Virtual.update.bind(swiper),\n appendSlide: Virtual.appendSlide.bind(swiper),\n prependSlide: Virtual.prependSlide.bind(swiper),\n removeSlide: Virtual.removeSlide.bind(swiper),\n removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n const overwriteParams = {\n watchSlidesProgress: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Keyboard = {\n handle(event) {\n const swiper = this;\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 && point[0] <= windowWidth\n && point[1] >= 0 && point[1] <= windowHeight\n ) {\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext();\n if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev();\n } else {\n if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 34 || kc === 40) swiper.slideNext();\n if (kc === 33 || kc === 38) swiper.slidePrev();\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable() {\n const swiper = this;\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable() {\n const swiper = this;\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n};\n\nexport default {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n keyboard: {\n enabled: false,\n enable: Keyboard.enable.bind(swiper),\n disable: Keyboard.disable.bind(swiper),\n handle: Keyboard.handle.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nfunction isEventSupported() {\n const eventName = 'onwheel';\n let isSupported = eventName in document;\n\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && document.implementation\n && document.implementation.hasFeature\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && document.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\nconst Mousewheel = {\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event() {\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n },\n handleMouseEnter() {\n const swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave() {\n const swiper = this;\n swiper.mouseEntered = false;\n },\n handle(event) {\n let e = event;\n const swiper = this;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;\n else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n if (!swiper.params.freeMode) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: Utils.now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta) {\n swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n const { lastEventBeforeSnap } = swiper.mousewheel;\n const ignoreWheelEvents = lastEventBeforeSnap\n && newEvent.time < lastEventBeforeSnap.time + 500\n && newEvent.delta <= lastEventBeforeSnap.delta\n && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + (delta * params.sensitivity);\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeModeSticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momuntum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = undefined;\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15\n && newEvent.time - firstEvent.time < 500\n && firstEvent.delta - newEvent.delta >= 1\n && newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!swiper.mousewheel.timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n const snapToThreshold = 0.5;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n },\n animateSlider(newEvent) {\n const swiper = this;\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n // Return false as a default\n return false;\n },\n releaseScroll(newEvent) {\n const swiper = this;\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n },\n enable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (!swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n};\n\nexport default {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarged: 'container',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n mousewheel: {\n enabled: false,\n enable: Mousewheel.enable.bind(swiper),\n disable: Mousewheel.disable.bind(swiper),\n handle: Mousewheel.handle.bind(swiper),\n handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n animateSlider: Mousewheel.animateSlider.bind(swiper),\n releaseScroll: Mousewheel.releaseScroll.bind(swiper),\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n swiper.mousewheel.disable();\n }\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy() {\n const swiper = this;\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Navigation = {\n update() {\n // Update Navigation Buttons\n const swiper = this;\n const params = swiper.params.navigation;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n onPrevClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init() {\n const swiper = this;\n const params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n\n let $nextEl;\n let $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.nextEl === 'string'\n && $nextEl.length > 1\n && swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.prevEl === 'string'\n && $prevEl.length > 1\n && swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy() {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n};\n\nexport default {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n onNextClick: Navigation.onNextClick.bind(swiper),\n onPrevClick: Navigation.onPrevClick.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n fromEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n destroy() {\n const swiper = this;\n swiper.navigation.destroy();\n },\n click(e) {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if (\n swiper.params.navigation.hideOnClick\n && !$(e.target).is($prevEl)\n && !$(e.target).is($nextEl)\n ) {\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n swiper.emit('navigationShow', swiper);\n } else {\n swiper.emit('navigationHide', swiper);\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Pagination = {\n update() {\n // Render || Update Pagination bullets/items\n const swiper = this;\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n if ($el.length > 1) {\n bullets.each((index, bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render() {\n // Render Container\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = ``\n + ' / '\n + ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (\n swiper.params.uniqueNavElements\n && typeof params.el === 'string'\n && $el.length > 1\n && swiper.$el.find(params.el).length === 1\n ) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el,\n el: $el[0],\n });\n },\n destroy() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', `.${params.bulletClass}`);\n }\n },\n};\n\nexport default {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy() {\n const swiper = this;\n swiper.pagination.destroy();\n },\n click(e) {\n const swiper = this;\n if (\n swiper.params.pagination.el\n && swiper.params.pagination.hideOnClick\n && swiper.pagination.$el.length > 0\n && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow', swiper);\n } else {\n swiper.emit('paginationHide', swiper);\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\n","import { document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Scrollbar = {\n setTranslate() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const {\n dragSize, trackSize, $dragEl, $el,\n } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n const divider = swiper.size / swiper.virtualSize;\n const moveDivider = divider * (trackSize / swiper.size);\n let dragSize;\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize,\n divider,\n moveDivider,\n dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n getPointerPosition(e) {\n const swiper = this;\n if (swiper.isHorizontal()) {\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);\n }\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);\n },\n setDragPosition(e) {\n const swiper = this;\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const {\n $el,\n dragSize,\n trackSize,\n dragStartPos,\n } = scrollbar;\n\n let positionRatio;\n positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart(e) {\n const swiper = this;\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove(e) {\n const swiper = this;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd(e) {\n const swiper = this;\n\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const { scrollbar, $el: $swiperEl } = swiper;\n const params = swiper.params.scrollbar;\n\n let $el = $(params.el);\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
      `);\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n};\n\nexport default {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate() {\n const swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Parallax = {\n setTransform(el, progress) {\n const swiper = this;\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if ((x).indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if ((y).indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n },\n setTranslate() {\n const swiper = this;\n const {\n $el, slides, progress, snapGrid,\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each((slideIndex, slideEl) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition(duration = this.params.speed) {\n const swiper = this;\n const { $el } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n },\n};\n\nexport default {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n parallax: {\n setTransform: Parallax.setTransform.bind(swiper),\n setTranslate: Parallax.setTranslate.bind(swiper),\n setTransition: Parallax.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\nimport Support from '../../utils/support';\n\nconst Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n return distance;\n },\n // Events\n onGestureStart(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n swiper.zoom.isScaling = true;\n },\n onGestureChange(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (Support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n onGestureEnd(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (Device.android) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (\n swiper.isHorizontal()\n && (\n (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n )\n ) {\n image.isTouched = false;\n return;\n } if (\n !swiper.isHorizontal()\n && (\n (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n )\n ) {\n image.isTouched = false;\n return;\n }\n }\n e.preventDefault();\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n }\n\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTouchEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTransitionEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in(e) {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture, image } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n out() {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n },\n // Attach/Detach Events\n enable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n disable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n\n swiper.zoom.enabled = false;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n};\n\nexport default {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n },\n create() {\n const swiper = this;\n const zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n };\n\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom,\n });\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.zoom.disable();\n },\n touchStart(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap(e) {\n const swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Lazy = {\n loadInSlide(index, loadInDuplicate = true) {\n const swiper = this;\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n : swiper.slides.eq(index);\n\n let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageIndex, imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n\n swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load() {\n const swiper = this;\n const {\n $wrapperEl, params: swiperParams, slides, activeIndex,\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n};\n\nexport default {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n lazy: {\n initialImageLoaded: false,\n load: Lazy.load.bind(swiper),\n loadInSlide: Lazy.loadInSlide.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll() {\n const swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n swiper.lazy.load();\n }\n },\n },\n};\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport Swiper from '../core/core-class';\nimport Utils from '../../utils/utils';\n\nconst Controller = {\n LinearSpline: function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }());\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction(c) {\n const swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate(setTranslate, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition(duration, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n Utils.nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n },\n};\nexport default {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n controller: {\n control: swiper.params.controller.control,\n getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n setTranslate: Controller.setTranslate.bind(swiper),\n setTransition: Controller.setTransition.bind(swiper),\n },\n });\n },\n on: {\n update() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate(translate, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst a11y = {\n makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey(e) {\n const swiper = this;\n const params = swiper.params.a11y;\n if (e.keyCode !== 13) return;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n $targetEl[0].click();\n }\n },\n notify(message) {\n const swiper = this;\n const notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation() {\n const swiper = this;\n\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n }\n }\n },\n updatePagination() {\n const swiper = this;\n const params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n const $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n });\n }\n },\n init() {\n const swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n const params = swiper.params.a11y;\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n};\nexport default {\n name: 'a11y',\n params: {\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $(``),\n },\n });\n Object.keys(a11y).forEach((methodName) => {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n },\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nconst History = {\n init() {\n const swiper = this;\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n const history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues();\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState() {\n const swiper = this;\n swiper.history.paths = History.getPathValues();\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues() {\n const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n },\n setHistory(key, index) {\n const swiper = this;\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n const slide = swiper.slides.eq(index);\n let value = History.slugify(slide.attr('data-history'));\n if (!window.location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n },\n slugify(text) {\n return text.toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide(speed, value, runCallbacks) {\n const swiper = this;\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = History.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n },\n};\n\nexport default {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n history: {\n init: History.init.bind(swiper),\n setHistory: History.setHistory.bind(swiper),\n setHistoryPopState: History.setHistoryPopState.bind(swiper),\n scrollToSlide: History.scrollToSlide.bind(swiper),\n destroy: History.destroy.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.history.initialized && swiper.params.cssMode) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst HashNavigation = {\n onHashCange() {\n const swiper = this;\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n },\n setHash() {\n const swiper = this;\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n swiper.hashNavigation.initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n};\nexport default {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n hashNavigation: {\n initialized: false,\n init: HashNavigation.init.bind(swiper),\n destroy: HashNavigation.destroy.bind(swiper),\n setHash: HashNavigation.setHash.bind(swiper),\n onHashCange: HashNavigation.onHashCange.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n swiper.hashNavigation.setHash();\n }\n },\n },\n};\n","/* eslint no-underscore-dangle: \"off\" */\nimport Utils from '../../utils/utils';\n\nconst Autoplay = {\n run() {\n const swiper = this;\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = Utils.nextTick(() => {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\n }, delay);\n },\n start() {\n const swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop() {\n const swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause(speed) {\n const swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n};\n\nexport default {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onVisibilityChange() {\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n },\n beforeTransitionStart(speed, internal) {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove() {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd() {\n const swiper = this;\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n },\n },\n};\n","import Utils from '../../utils/utils';\n\nconst Fade = {\n setTranslate() {\n const swiper = this;\n const { slides } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, $wrapperEl } = swiper;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n slides.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nexport default {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n fadeEffect: {\n setTranslate: Fade.setTranslate.bind(swiper),\n setTransition: Fade.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Browser from '../../utils/browser';\n\nconst Cube = {\n setTranslate() {\n const swiper = this;\n const {\n $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
      ');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
      ');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + (round * 4 * swiperSize);\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = (3 * swiperSize) + (swiperSize * 4 * round);\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = (slideIndex * 90) + (progress * 90);\n if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
      `);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
      `);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n const multiplier = 1.5 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n $wrapperEl\n .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n },\n setTransition(duration) {\n const swiper = this;\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n};\n\nexport default {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n cubeEffect: {\n setTranslate: Cube.setTranslate.bind(swiper),\n setTransition: Cube.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Flip = {\n setTranslate() {\n const swiper = this;\n const { slides, rtlTranslate: rtl } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
      `);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
      `);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n $slideEl\n .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, activeIndex, $wrapperEl } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nexport default {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n flipEffect: {\n setTranslate: Flip.setTranslate.bind(swiper),\n setTransition: Flip.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Support from '../../utils/support';\nimport Utils from '../../utils/utils';\n\nconst Coverflow = {\n setTranslate() {\n const swiper = this;\n const {\n width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = ((parseFloat(params.stretch) / 100) * slideSize);\n }\n let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);\n let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $(`
      `);\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $(`
      `);\n $slideEl.append($shadowAfterEl);\n }\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n\n // Set correct perspective for IE10\n if (Support.pointerEvents || Support.prefixedPointerEvents) {\n const ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = `${center}px 50%`;\n }\n },\n setTransition(duration) {\n const swiper = this;\n swiper.slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n },\n};\n\nexport default {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n coverflowEffect: {\n setTranslate: Coverflow.setTranslate.bind(swiper),\n setTransition: Coverflow.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n\n swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n};\n","import Utils from '../../utils/utils';\nimport $ from '../../utils/dom';\n\nconst Thumbs = {\n init() {\n const swiper = this;\n const { thumbs: thumbsParams } = swiper.params;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Utils.extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Utils.extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (Utils.isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n }));\n swiper.thumbs.swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n },\n onThumbClick() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n },\n update(initial) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;\n else newThumbsIndex = prevThumbsIndex;\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n },\n};\nexport default {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n thumbs: {\n swiper: null,\n init: Thumbs.init.bind(swiper),\n update: Thumbs.update.bind(swiper),\n onThumbClick: Thumbs.onThumbClick.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition(duration) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n },\n },\n};\n","// Swiper Class\nimport Swiper from './components/core/core-class';\n\n// Core Modules\nimport Device from './modules/device/device';\nimport Support from './modules/support/support';\nimport Browser from './modules/browser/browser';\nimport Resize from './modules/resize/resize';\nimport Observer from './modules/observer/observer';\n\n//IMPORT_COMPONENTS\n\nconst components = [\n Device,\n Support,\n Browser,\n Resize,\n Observer,\n //INSTALL_COMPONENTS\n];\n\nif (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\n//EXPORT\n"],"names":["document","window","transitionEnd","transition","checkOverflow","Device","Support","Browser","Observer","Virtual"],"mappings":"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"} \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/package/js/swiper.esm.browser.bundle.min.js b/static/libs/swiper-5.3.8/package/js/swiper.esm.browser.bundle.min.js new file mode 100644 index 0000000..42726af --- /dev/null +++ b/static/libs/swiper-5.3.8/package/js/swiper.esm.browser.bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 5.3.8 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * http://swiperjs.com + * + * Copyright 2014-2020 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: April 24, 2020 + */ + +var doc="undefined"==typeof document?{body:{},addEventListener:function(){},removeEventListener:function(){},activeElement:{blur:function(){},nodeName:""},querySelector:function(){return null},querySelectorAll:function(){return[]},getElementById:function(){return null},createEvent:function(){return{initEvent:function(){}}},createElement:function(){return{children:[],childNodes:[],style:{},setAttribute:function(){},getElementsByTagName:function(){return[]}}},location:{hash:""}}:document,win="undefined"==typeof window?{document:doc,navigator:{userAgent:""},location:{},history:{},CustomEvent:function(){return this},addEventListener:function(){},removeEventListener:function(){},getComputedStyle:function(){return{getPropertyValue:function(){return""}}},Image:function(){},Date:function(){},screen:{},setTimeout:function(){},clearTimeout:function(){}}:window;class Dom7{constructor(e){const t=this;for(let s=0;s=0&&r.indexOf(">")>=0){let e="div";for(0===r.indexOf(":~]/)?(t||doc).querySelectorAll(e.trim()):[doc.getElementById(e.trim().split("#")[1])],i=0;i0&&e[0].nodeType)for(i=0;i=0;e-=1){const s=r[e];i&&s.listener===i||i&&s.listener&&s.listener.dom7proxy&&s.listener.dom7proxy===i?(n.removeEventListener(t,s.proxyListener,a),r.splice(e,1)):i||(n.removeEventListener(t,s.proxyListener,a),r.splice(e,1))}}}return this}function trigger(...e){const t=e[0].split(" "),s=e[1];for(let i=0;it>0),i.dispatchEvent(n),i.dom7EventData=[],delete i.dom7EventData}}return this}function transitionEnd(e){const t=["webkitTransitionEnd","transitionend"],s=this;let i;function a(n){if(n.target===this)for(e.call(this,n),i=0;i0){if(e){const e=this.styles();return this[0].offsetWidth+parseFloat(e.getPropertyValue("margin-right"))+parseFloat(e.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null}function outerHeight(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetHeight+parseFloat(e.getPropertyValue("margin-top"))+parseFloat(e.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null}function offset(){if(this.length>0){const e=this[0],t=e.getBoundingClientRect(),s=doc.body,i=e.clientTop||s.clientTop||0,a=e.clientLeft||s.clientLeft||0,n=e===win?win.scrollY:e.scrollTop,r=e===win?win.scrollX:e.scrollLeft;return{top:t.top+n-i,left:t.left+r-a}}return null}function styles(){return this[0]?win.getComputedStyle(this[0],null):{}}function css(e,t){let s;if(1===arguments.length){if("string"!=typeof e){for(s=0;st-1?new Dom7([]):e<0?(s=t+e,new Dom7(s<0?[]:[this[s]])):new Dom7([this[e]])}function append(...e){let t;for(let s=0;s=0;s-=1)this[t].insertBefore(i.childNodes[s],this[t].childNodes[0])}else if(e instanceof Dom7)for(s=0;s0?e?this[0].nextElementSibling&&$(this[0].nextElementSibling).is(e)?new Dom7([this[0].nextElementSibling]):new Dom7([]):this[0].nextElementSibling?new Dom7([this[0].nextElementSibling]):new Dom7([]):new Dom7([])}function nextAll(e){const t=[];let s=this[0];if(!s)return new Dom7([]);for(;s.nextElementSibling;){const i=s.nextElementSibling;e?$(i).is(e)&&t.push(i):t.push(i),s=i}return new Dom7(t)}function prev(e){if(this.length>0){const t=this[0];return e?t.previousElementSibling&&$(t.previousElementSibling).is(e)?new Dom7([t.previousElementSibling]):new Dom7([]):t.previousElementSibling?new Dom7([t.previousElementSibling]):new Dom7([])}return new Dom7([])}function prevAll(e){const t=[];let s=this[0];if(!s)return new Dom7([]);for(;s.previousElementSibling;){const i=s.previousElementSibling;e?$(i).is(e)&&t.push(i):t.push(i),s=i}return new Dom7(t)}function parent(e){const t=[];for(let s=0;s{$.fn[e]=$.fn[e]||Methods[e]});const Utils={deleteProps(e){const t=e;Object.keys(t).forEach(e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}})},nextTick:(e,t=0)=>setTimeout(e,t),now:()=>Date.now(),getTranslate(e,t="x"){let s,i,a;const n=win.getComputedStyle(e,null);return win.WebKitCSSMatrix?(i=n.transform||n.webkitTransform,i.split(",").length>6&&(i=i.split(", ").map(e=>e.replace(",",".")).join(", ")),a=new win.WebKitCSSMatrix("none"===i?"":i)):(a=n.MozTransform||n.OTransform||n.MsTransform||n.msTransform||n.transform||n.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),s=a.toString().split(",")),"x"===t&&(i=win.WebKitCSSMatrix?a.m41:16===s.length?parseFloat(s[12]):parseFloat(s[4])),"y"===t&&(i=win.WebKitCSSMatrix?a.m42:16===s.length?parseFloat(s[13]):parseFloat(s[5])),i||0},parseUrlQuery(e){const t={};let s,i,a,n,r=e||win.location.href;if("string"==typeof r&&r.length)for(r=r.indexOf("?")>-1?r.replace(/\S*\?/,""):"",i=r.split("&").filter(e=>""!==e),n=i.length,s=0;s"object"==typeof e&&null!==e&&e.constructor&&e.constructor===Object,extend(...e){const t=Object(e[0]);for(let s=1;s0||"ontouchstart"in win||win.DocumentTouch&&doc instanceof win.DocumentTouch),pointerEvents:!!win.PointerEvent&&"maxTouchPoints"in win.navigator&&win.navigator.maxTouchPoints>0,observer:"MutationObserver"in win||"WebkitMutationObserver"in win,passiveListener:function(){let e=!1;try{const t=Object.defineProperty({},"passive",{get(){e=!0}});win.addEventListener("testPassiveListener",null,t)}catch(e){}return e}(),gestures:"ongesturestart"in win};class SwiperClass{constructor(e={}){const t=this;t.params=e,t.eventsListeners={},t.params&&t.params.on&&Object.keys(t.params.on).forEach(e=>{t.on(e,t.params.on[e])})}on(e,t,s){const i=this;if("function"!=typeof t)return i;const a=s?"unshift":"push";return e.split(" ").forEach(e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][a](t)}),i}once(e,t,s){const i=this;if("function"!=typeof t)return i;function a(...s){i.off(e,a),a.f7proxy&&delete a.f7proxy,t.apply(i,s)}return a.f7proxy=t,i.on(e,a,s)}off(e,t){const s=this;return s.eventsListeners?(e.split(" ").forEach(e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].length&&s.eventsListeners[e].forEach((i,a)=>{(i===t||i.f7proxy&&i.f7proxy===t)&&s.eventsListeners[e].splice(a,1)})}),s):s}emit(...e){const t=this;if(!t.eventsListeners)return t;let s,i,a;return"string"==typeof e[0]||Array.isArray(e[0])?(s=e[0],i=e.slice(1,e.length),a=t):(s=e[0].events,i=e[0].data,a=e[0].context||t),(Array.isArray(s)?s:s.split(" ")).forEach(e=>{if(t.eventsListeners&&t.eventsListeners[e]){const s=[];t.eventsListeners[e].forEach(e=>{s.push(e)}),s.forEach(e=>{e.apply(a,i)})}}),t}useModulesParams(e){const t=this;t.modules&&Object.keys(t.modules).forEach(s=>{const i=t.modules[s];i.params&&Utils.extend(e,i.params)})}useModules(e={}){const t=this;t.modules&&Object.keys(t.modules).forEach(s=>{const i=t.modules[s],a=e[s]||{};i.instance&&Object.keys(i.instance).forEach(e=>{const s=i.instance[e];t[e]="function"==typeof s?s.bind(t):s}),i.on&&t.on&&Object.keys(i.on).forEach(e=>{t.on(e,i.on[e])}),i.create&&i.create.bind(t)(a)})}static set components(e){this.use&&this.use(e)}static installModule(e,...t){const s=this;s.prototype.modules||(s.prototype.modules={});const i=e.name||`${Object.keys(s.prototype.modules).length}_${Utils.now()}`;return s.prototype.modules[i]=e,e.proto&&Object.keys(e.proto).forEach(t=>{s.prototype[t]=e.proto[t]}),e.static&&Object.keys(e.static).forEach(t=>{s[t]=e.static[t]}),e.install&&e.install.apply(s,t),s}static use(e,...t){const s=this;return Array.isArray(e)?(e.forEach(e=>s.installModule(e)),s):s.installModule(e,...t)}}function updateSize(){const e=this;let t,s;const i=e.$el;t=void 0!==e.params.width?e.params.width:i[0].clientWidth,s=void 0!==e.params.height?e.params.height:i[0].clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(i.css("padding-left"),10)-parseInt(i.css("padding-right"),10),s=s-parseInt(i.css("padding-top"),10)-parseInt(i.css("padding-bottom"),10),Utils.extend(e,{width:t,height:s,size:e.isHorizontal()?t:s}))}function updateSlides(){const e=this,t=e.params,{$wrapperEl:s,size:i,rtlTranslate:a,wrongRTL:n}=e,r=e.virtual&&t.virtual.enabled,l=r?e.virtual.slides.length:e.slides.length,o=s.children("."+e.params.slideClass),d=r?e.virtual.slides.length:o.length;let p=[];const c=[],h=[];function u(e){return!t.cssMode||e!==o.length-1}let m=t.slidesOffsetBefore;"function"==typeof m&&(m=t.slidesOffsetBefore.call(e));let f=t.slidesOffsetAfter;"function"==typeof f&&(f=t.slidesOffsetAfter.call(e));const g=e.snapGrid.length,v=e.snapGrid.length;let w,b,y=t.spaceBetween,x=-m,S=0,T=0;if(void 0===i)return;"string"==typeof y&&y.indexOf("%")>=0&&(y=parseFloat(y.replace("%",""))/100*i),e.virtualSize=-y,a?o.css({marginLeft:"",marginTop:""}):o.css({marginRight:"",marginBottom:""}),t.slidesPerColumn>1&&(w=Math.floor(d/t.slidesPerColumn)===d/e.params.slidesPerColumn?d:Math.ceil(d/t.slidesPerColumn)*t.slidesPerColumn,"auto"!==t.slidesPerView&&"row"===t.slidesPerColumnFill&&(w=Math.max(w,t.slidesPerView*t.slidesPerColumn)));const E=t.slidesPerColumn,C=w/E,$=Math.floor(d/t.slidesPerColumn);for(let s=0;s1){let i,n,r;if("row"===t.slidesPerColumnFill&&t.slidesPerGroup>1){const e=Math.floor(s/(t.slidesPerGroup*t.slidesPerColumn)),l=s-t.slidesPerColumn*t.slidesPerGroup*e,o=0===e?t.slidesPerGroup:Math.min(Math.ceil((d-e*E*t.slidesPerGroup)/E),t.slidesPerGroup);r=Math.floor(l/o),n=l-r*o+e*t.slidesPerGroup,i=n+r*w/E,a.css({"-webkit-box-ordinal-group":i,"-moz-box-ordinal-group":i,"-ms-flex-order":i,"-webkit-order":i,order:i})}else"column"===t.slidesPerColumnFill?(n=Math.floor(s/E),r=s-n*E,(n>$||n===$&&r===E-1)&&(r+=1,r>=E&&(r=0,n+=1))):(r=Math.floor(s/C),n=s-r*C);a.css("margin-"+(e.isHorizontal()?"top":"left"),0!==r&&t.spaceBetween&&t.spaceBetween+"px")}if("none"!==a.css("display")){if("auto"===t.slidesPerView){const s=win.getComputedStyle(a[0],null),i=a[0].style.transform,n=a[0].style.webkitTransform;if(i&&(a[0].style.transform="none"),n&&(a[0].style.webkitTransform="none"),t.roundLengths)b=e.isHorizontal()?a.outerWidth(!0):a.outerHeight(!0);else if(e.isHorizontal()){const e=parseFloat(s.getPropertyValue("width")),t=parseFloat(s.getPropertyValue("padding-left")),i=parseFloat(s.getPropertyValue("padding-right")),a=parseFloat(s.getPropertyValue("margin-left")),n=parseFloat(s.getPropertyValue("margin-right")),r=s.getPropertyValue("box-sizing");b=r&&"border-box"===r?e+a+n:e+t+i+a+n}else{const e=parseFloat(s.getPropertyValue("height")),t=parseFloat(s.getPropertyValue("padding-top")),i=parseFloat(s.getPropertyValue("padding-bottom")),a=parseFloat(s.getPropertyValue("margin-top")),n=parseFloat(s.getPropertyValue("margin-bottom")),r=s.getPropertyValue("box-sizing");b=r&&"border-box"===r?e+a+n:e+t+i+a+n}i&&(a[0].style.transform=i),n&&(a[0].style.webkitTransform=n),t.roundLengths&&(b=Math.floor(b))}else b=(i-(t.slidesPerView-1)*y)/t.slidesPerView,t.roundLengths&&(b=Math.floor(b)),o[s]&&(e.isHorizontal()?o[s].style.width=b+"px":o[s].style.height=b+"px");o[s]&&(o[s].swiperSlideSize=b),h.push(b),t.centeredSlides?(x=x+b/2+S/2+y,0===S&&0!==s&&(x=x-i/2-y),0===s&&(x=x-i/2-y),Math.abs(x)<.001&&(x=0),t.roundLengths&&(x=Math.floor(x)),T%t.slidesPerGroup==0&&p.push(x),c.push(x)):(t.roundLengths&&(x=Math.floor(x)),(T-Math.min(e.params.slidesPerGroupSkip,T))%e.params.slidesPerGroup==0&&p.push(x),c.push(x),x=x+b+y),e.virtualSize+=b+y,S=b,T+=1}}let M;if(e.virtualSize=Math.max(e.virtualSize,i)+f,a&&n&&("slide"===t.effect||"coverflow"===t.effect)&&s.css({width:e.virtualSize+t.spaceBetween+"px"}),t.setWrapperSize&&(e.isHorizontal()?s.css({width:e.virtualSize+t.spaceBetween+"px"}):s.css({height:e.virtualSize+t.spaceBetween+"px"})),t.slidesPerColumn>1&&(e.virtualSize=(b+t.spaceBetween)*w,e.virtualSize=Math.ceil(e.virtualSize/t.slidesPerColumn)-t.spaceBetween,e.isHorizontal()?s.css({width:e.virtualSize+t.spaceBetween+"px"}):s.css({height:e.virtualSize+t.spaceBetween+"px"}),t.centeredSlides)){M=[];for(let s=0;s1&&p.push(e.virtualSize-i)}if(0===p.length&&(p=[0]),0!==t.spaceBetween&&(e.isHorizontal()?a?o.filter(u).css({marginLeft:y+"px"}):o.filter(u).css({marginRight:y+"px"}):o.filter(u).css({marginBottom:y+"px"})),t.centeredSlides&&t.centeredSlidesBounds){let e=0;h.forEach(s=>{e+=s+(t.spaceBetween?t.spaceBetween:0)}),e-=t.spaceBetween;const s=e-i;p=p.map(e=>e<0?-m:e>s?s+f:e)}if(t.centerInsufficientSlides){let e=0;if(h.forEach(s=>{e+=s+(t.spaceBetween?t.spaceBetween:0)}),e-=t.spaceBetween,e{p[s]=e-t}),c.forEach((e,s)=>{c[s]=e+t})}}Utils.extend(e,{slides:o,snapGrid:p,slidesGrid:c,slidesSizesGrid:h}),d!==l&&e.emit("slidesLengthChange"),p.length!==g&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),c.length!==v&&e.emit("slidesGridLengthChange"),(t.watchSlidesProgress||t.watchSlidesVisibility)&&e.updateSlidesOffset()}function updateAutoHeight(e){const t=this,s=[];let i,a=0;if("number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed),"auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)t.visibleSlides.each((e,t)=>{s.push(t)});else for(i=0;it.slides.length)break;s.push(t.slides.eq(e)[0])}else s.push(t.slides.eq(t.activeIndex)[0]);for(i=0;ia?e:a}a&&t.$wrapperEl.css("height",a+"px")}function updateSlidesOffset(){const e=this,t=e.slides;for(let s=0;s=0&&a1&&l<=t.size||a<=0&&l>=t.size)&&(t.visibleSlides.push(r),t.visibleSlidesIndexes.push(e),i.eq(e).addClass(s.slideVisibleClass))}r.progress=a?-l:l}t.visibleSlides=$(t.visibleSlides)}function updateProgress(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:a,isBeginning:n,isEnd:r}=t;const l=n,o=r;0===i?(a=0,n=!0,r=!0):(a=(e-t.minTranslate())/i,n=a<=0,r=a>=1),Utils.extend(t,{progress:a,isBeginning:n,isEnd:r}),(s.watchSlidesProgress||s.watchSlidesVisibility||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!l&&t.emit("reachBeginning toEdge"),r&&!o&&t.emit("reachEnd toEdge"),(l&&!n||o&&!r)&&t.emit("fromEdge"),t.emit("progress",a)}function updateSlidesClasses(){const e=this,{slides:t,params:s,$wrapperEl:i,activeIndex:a,realIndex:n}=e,r=e.virtual&&s.virtual.enabled;let l;t.removeClass(`${s.slideActiveClass} ${s.slideNextClass} ${s.slidePrevClass} ${s.slideDuplicateActiveClass} ${s.slideDuplicateNextClass} ${s.slideDuplicatePrevClass}`),l=r?e.$wrapperEl.find(`.${s.slideClass}[data-swiper-slide-index="${a}"]`):t.eq(a),l.addClass(s.slideActiveClass),s.loop&&(l.hasClass(s.slideDuplicateClass)?i.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${n}"]`).addClass(s.slideDuplicateActiveClass):i.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${n}"]`).addClass(s.slideDuplicateActiveClass));let o=l.nextAll("."+s.slideClass).eq(0).addClass(s.slideNextClass);s.loop&&0===o.length&&(o=t.eq(0),o.addClass(s.slideNextClass));let d=l.prevAll("."+s.slideClass).eq(0).addClass(s.slidePrevClass);s.loop&&0===d.length&&(d=t.eq(-1),d.addClass(s.slidePrevClass)),s.loop&&(o.hasClass(s.slideDuplicateClass)?i.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass):i.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass),d.hasClass(s.slideDuplicateClass)?i.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass):i.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass))}function updateActiveIndex(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{slidesGrid:i,snapGrid:a,params:n,activeIndex:r,realIndex:l,snapIndex:o}=t;let d,p=e;if(void 0===p){for(let e=0;e=i[e]&&s=i[e]&&s=i[e]&&(p=e);n.normalizeSlideIndex&&(p<0||void 0===p)&&(p=0)}if(a.indexOf(s)>=0)d=a.indexOf(s);else{const e=Math.min(n.slidesPerGroupSkip,p);d=e+Math.floor((p-e)/n.slidesPerGroup)}if(d>=a.length&&(d=a.length-1),p===r)return void(d!==o&&(t.snapIndex=d,t.emit("snapIndexChange")));const c=parseInt(t.slides.eq(p).attr("data-swiper-slide-index")||p,10);Utils.extend(t,{snapIndex:d,realIndex:c,previousIndex:r,activeIndex:p}),t.emit("activeIndexChange"),t.emit("snapIndexChange"),l!==c&&t.emit("realIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&t.emit("slideChange")}function updateClickedSlide(e){const t=this,s=t.params,i=$(e.target).closest("."+s.slideClass)[0];let a=!1;if(i)for(let e=0;eo?o:i&&en?"next":ia?"next":i=l.length&&(m=l.length-1),(p||r.initialSlide||0)===(d||0)&&s&&a.emit("beforeSlideChangeStart");const f=-l[m];if(a.updateProgress(f),r.normalizeSlideIndex)for(let e=0;e=Math.floor(100*o[e])&&(n=e);if(a.initialized&&n!==p){if(!a.allowSlideNext&&fa.translate&&f>a.maxTranslate()&&(p||0)!==n)return!1}let g;if(g=n>p?"next":nd(e));l.map(e=>d(e)),r[c.indexOf(p)];let h,u=r[c.indexOf(p)-1];return void 0===u&&a.cssMode&&r.forEach(e=>{!u&&p>=e&&(u=e)}),void 0!==u&&(h=l.indexOf(u),h<0&&(h=i.activeIndex-1)),i.slideTo(h,e,t,s)}function slideReset(e=this.params.speed,t=!0,s){return this.slideTo(this.activeIndex,e,t,s)}function slideToClosest(e=this.params.speed,t=!0,s,i=.5){const a=this;let n=a.activeIndex;const r=Math.min(a.params.slidesPerGroupSkip,n),l=r+Math.floor((n-r)/a.params.slidesPerGroup),o=a.rtlTranslate?a.translate:-a.translate;if(o>=a.snapGrid[l]){const e=a.snapGrid[l];o-e>(a.snapGrid[l+1]-e)*i&&(n+=a.params.slidesPerGroup)}else{const e=a.snapGrid[l-1];o-e<=(a.snapGrid[l]-e)*i&&(n-=a.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,a.slidesGrid.length-1),a.slideTo(n,e,t,s)}function slideToClickedSlide(){const e=this,{params:t,$wrapperEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let a,n=e.clickedIndex;if(t.loop){if(e.animating)return;a=parseInt($(e.clickedSlide).attr("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=s.children(`.${t.slideClass}[data-swiper-slide-index="${a}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),Utils.nextTick(()=>{e.slideTo(n)})):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=s.children(`.${t.slideClass}[data-swiper-slide-index="${a}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),Utils.nextTick(()=>{e.slideTo(n)})):e.slideTo(n)}else e.slideTo(n)}var slide={slideTo:slideTo,slideToLoop:slideToLoop,slideNext:slideNext,slidePrev:slidePrev,slideReset:slideReset,slideToClosest:slideToClosest,slideToClickedSlide:slideToClickedSlide};function loopCreate(){const e=this,{params:t,$wrapperEl:s}=e;s.children(`.${t.slideClass}.${t.slideDuplicateClass}`).remove();let i=s.children("."+t.slideClass);if(t.loopFillGroupWithBlank){const e=t.slidesPerGroup-i.length%t.slidesPerGroup;if(e!==t.slidesPerGroup){for(let i=0;ii.length&&(e.loopedSlides=i.length);const a=[],n=[];i.each((t,s)=>{const r=$(s);t=i.length-e.loopedSlides&&a.push(s),r.attr("data-swiper-slide-index",t)});for(let e=0;e=0;e-=1)s.prepend($(a[e].cloneNode(!0)).addClass(t.slideDuplicateClass))}function loopFix(){const e=this;e.emit("beforeLoopFix");const{activeIndex:t,slides:s,loopedSlides:i,allowSlidePrev:a,allowSlideNext:n,snapGrid:r,rtlTranslate:l}=e;let o;e.allowSlidePrev=!0,e.allowSlideNext=!0;const d=-r[t]-e.getTranslate();if(t=s.length-i){o=-s.length+t+i,o+=i,e.slideTo(o,0,!1,!0)&&0!==d&&e.setTranslate((l?-e.translate:e.translate)-d)}e.allowSlidePrev=a,e.allowSlideNext=n,e.emit("loopFix")}function loopDestroy(){const{$wrapperEl:e,params:t,slides:s}=this;e.children(`.${t.slideClass}.${t.slideDuplicateClass},.${t.slideClass}.${t.slideBlankClass}`).remove(),s.removeAttr("data-swiper-slide-index")}var loop={loopCreate:loopCreate,loopFix:loopFix,loopDestroy:loopDestroy};function setGrabCursor(e){if(Support.touch||!this.params.simulateTouch||this.params.watchOverflow&&this.isLocked||this.params.cssMode)return;const t=this.el;t.style.cursor="move",t.style.cursor=e?"-webkit-grabbing":"-webkit-grab",t.style.cursor=e?"-moz-grabbin":"-moz-grab",t.style.cursor=e?"grabbing":"grab"}function unsetGrabCursor(){Support.touch||this.params.watchOverflow&&this.isLocked||this.params.cssMode||(this.el.style.cursor="")}var grabCursor={setGrabCursor:setGrabCursor,unsetGrabCursor:unsetGrabCursor};function appendSlide(e){const t=this,{$wrapperEl:s,params:i}=t;if(i.loop&&t.loopDestroy(),"object"==typeof e&&"length"in e)for(let t=0;t=l)return void s.appendSlide(t);let o=r>e?r+1:r;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides.eq(t);e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?r+t.length:r}else i.append(t);for(let e=0;e=0||t.indexOf("Trident/")>=0,p=t.indexOf("Edge/")>=0,c=t.indexOf("Gecko/")>=0&&t.indexOf("Firefox/")>=0,h="Win32"===e,u=t.toLowerCase().indexOf("electron")>=0;let m="MacIntel"===e;return!r&&m&&Support.touch&&(1024===i&&1366===a||834===i&&1194===a||834===i&&1112===a||768===i&&1024===a)&&(r=t.match(/(Version)\/([\d.]+)/),m=!1),s.ie=d,s.edge=p,s.firefox=c,n&&!h&&(s.os="android",s.osVersion=n[2],s.android=!0,s.androidChrome=t.toLowerCase().indexOf("chrome")>=0),(r||o||l)&&(s.os="ios",s.ios=!0),o&&!l&&(s.osVersion=o[2].replace(/_/g,"."),s.iphone=!0),r&&(s.osVersion=r[2].replace(/_/g,"."),s.ipad=!0),l&&(s.osVersion=l[3]?l[3].replace(/_/g,"."):null,s.ipod=!0),s.ios&&s.osVersion&&t.indexOf("Version/")>=0&&"10"===s.osVersion.split(".")[0]&&(s.osVersion=t.toLowerCase().split("version/")[1].split(" ")[0]),s.webView=!(!(o||r||l)||!t.match(/.*AppleWebKit(?!.*Safari)/i)&&!win.navigator.standalone)||win.matchMedia&&win.matchMedia("(display-mode: standalone)").matches,s.webview=s.webView,s.standalone=s.webView,s.desktop=!(s.ios||s.android)||u,s.desktop&&(s.electron=u,s.macos=m,s.windows=h,s.macos&&(s.os="macos"),s.windows&&(s.os="windows")),s.pixelRatio=win.devicePixelRatio||1,s}();function onTouchStart(e){const t=this,s=t.touchEventsData,{params:i,touches:a}=t;if(t.animating&&i.preventInteractionOnTransition)return;let n=e;n.originalEvent&&(n=n.originalEvent);const r=$(n.target);if("wrapper"===i.touchEventsTarget&&!r.closest(t.wrapperEl).length)return;if(s.isTouchEvent="touchstart"===n.type,!s.isTouchEvent&&"which"in n&&3===n.which)return;if(!s.isTouchEvent&&"button"in n&&n.button>0)return;if(s.isTouched&&s.isMoved)return;if(i.noSwiping&&r.closest(i.noSwipingSelector?i.noSwipingSelector:"."+i.noSwipingClass)[0])return void(t.allowClick=!0);if(i.swipeHandler&&!r.closest(i.swipeHandler)[0])return;a.currentX="touchstart"===n.type?n.targetTouches[0].pageX:n.pageX,a.currentY="touchstart"===n.type?n.targetTouches[0].pageY:n.pageY;const l=a.currentX,o=a.currentY,d=i.edgeSwipeDetection||i.iOSEdgeSwipeDetection,p=i.edgeSwipeThreshold||i.iOSEdgeSwipeThreshold;if(!d||!(l<=p||l>=win.screen.width-p)){if(Utils.extend(s,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),a.startX=l,a.startY=o,s.touchStartTime=Utils.now(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,i.threshold>0&&(s.allowThresholdMove=!1),"touchstart"!==n.type){let e=!0;r.is(s.formElements)&&(e=!1),doc.activeElement&&$(doc.activeElement).is(s.formElements)&&doc.activeElement!==r[0]&&doc.activeElement.blur();const a=e&&t.allowTouchMove&&i.touchStartPreventDefault;(i.touchStartForcePreventDefault||a)&&n.preventDefault()}t.emit("touchStart",n)}}function onTouchMove(e){const t=this,s=t.touchEventsData,{params:i,touches:a,rtlTranslate:n}=t;let r=e;if(r.originalEvent&&(r=r.originalEvent),!s.isTouched)return void(s.startMoving&&s.isScrolling&&t.emit("touchMoveOpposite",r));if(s.isTouchEvent&&"mousemove"===r.type)return;const l="touchmove"===r.type&&r.targetTouches&&(r.targetTouches[0]||r.changedTouches[0]),o="touchmove"===r.type?l.pageX:r.pageX,d="touchmove"===r.type?l.pageY:r.pageY;if(r.preventedByNestedSwiper)return a.startX=o,void(a.startY=d);if(!t.allowTouchMove)return t.allowClick=!1,void(s.isTouched&&(Utils.extend(a,{startX:o,startY:d,currentX:o,currentY:d}),s.touchStartTime=Utils.now()));if(s.isTouchEvent&&i.touchReleaseOnEdges&&!i.loop)if(t.isVertical()){if(da.startY&&t.translate>=t.minTranslate())return s.isTouched=!1,void(s.isMoved=!1)}else if(oa.startX&&t.translate>=t.minTranslate())return;if(s.isTouchEvent&&doc.activeElement&&r.target===doc.activeElement&&$(r.target).is(s.formElements))return s.isMoved=!0,void(t.allowClick=!1);if(s.allowTouchCallbacks&&t.emit("touchMove",r),r.targetTouches&&r.targetTouches.length>1)return;a.currentX=o,a.currentY=d;const p=a.currentX-a.startX,c=a.currentY-a.startY;if(t.params.threshold&&Math.sqrt(p**2+c**2)=25&&(e=180*Math.atan2(Math.abs(c),Math.abs(p))/Math.PI,s.isScrolling=t.isHorizontal()?e>i.touchAngle:90-e>i.touchAngle)}if(s.isScrolling&&t.emit("touchMoveOpposite",r),void 0===s.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(s.startMoving=!0)),s.isScrolling)return void(s.isTouched=!1);if(!s.startMoving)return;t.allowClick=!1,i.cssMode||r.preventDefault(),i.touchMoveStopPropagation&&!i.nested&&r.stopPropagation(),s.isMoved||(i.loop&&t.loopFix(),s.startTranslate=t.getTranslate(),t.setTransition(0),t.animating&&t.$wrapperEl.trigger("webkitTransitionEnd transitionend"),s.allowMomentumBounce=!1,!i.grabCursor||!0!==t.allowSlideNext&&!0!==t.allowSlidePrev||t.setGrabCursor(!0),t.emit("sliderFirstMove",r)),t.emit("sliderMove",r),s.isMoved=!0;let h=t.isHorizontal()?p:c;a.diff=h,h*=i.touchRatio,n&&(h=-h),t.swipeDirection=h>0?"prev":"next",s.currentTranslate=h+s.startTranslate;let u=!0,m=i.resistanceRatio;if(i.touchReleaseOnEdges&&(m=0),h>0&&s.currentTranslate>t.minTranslate()?(u=!1,i.resistance&&(s.currentTranslate=t.minTranslate()-1+(-t.minTranslate()+s.startTranslate+h)**m)):h<0&&s.currentTranslates.startTranslate&&(s.currentTranslate=s.startTranslate),i.threshold>0){if(!(Math.abs(h)>i.threshold||s.allowThresholdMove))return void(s.currentTranslate=s.startTranslate);if(!s.allowThresholdMove)return s.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,s.currentTranslate=s.startTranslate,void(a.diff=t.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}i.followFinger&&!i.cssMode&&((i.freeMode||i.watchSlidesProgress||i.watchSlidesVisibility)&&(t.updateActiveIndex(),t.updateSlidesClasses()),i.freeMode&&(0===s.velocities.length&&s.velocities.push({position:a[t.isHorizontal()?"startX":"startY"],time:s.touchStartTime}),s.velocities.push({position:a[t.isHorizontal()?"currentX":"currentY"],time:Utils.now()})),t.updateProgress(s.currentTranslate),t.setTranslate(s.currentTranslate))}function onTouchEnd(e){const t=this,s=t.touchEventsData,{params:i,touches:a,rtlTranslate:n,$wrapperEl:r,slidesGrid:l,snapGrid:o}=t;let d=e;if(d.originalEvent&&(d=d.originalEvent),s.allowTouchCallbacks&&t.emit("touchEnd",d),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&i.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);i.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const p=Utils.now(),c=p-s.touchStartTime;if(t.allowClick&&(t.updateClickedSlide(d),t.emit("tap click",d),c<300&&p-s.lastClickTime<300&&t.emit("doubleTap doubleClick",d)),s.lastClickTime=Utils.now(),Utils.nextTick(()=>{t.destroyed||(t.allowClick=!0)}),!s.isTouched||!s.isMoved||!t.swipeDirection||0===a.diff||s.currentTranslate===s.startTranslate)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=i.followFinger?n?t.translate:-t.translate:-s.currentTranslate,i.cssMode)return;if(i.freeMode){if(h<-t.minTranslate())return void t.slideTo(t.activeIndex);if(h>-t.maxTranslate())return void(t.slides.length1){const e=s.velocities.pop(),a=s.velocities.pop(),n=e.position-a.position,r=e.time-a.time;t.velocity=n/r,t.velocity/=2,Math.abs(t.velocity)150||Utils.now()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=i.freeModeMomentumVelocityRatio,s.velocities.length=0;let e=1e3*i.freeModeMomentumRatio;const a=t.velocity*e;let l=t.translate+a;n&&(l=-l);let d,p=!1;const c=20*Math.abs(t.velocity)*i.freeModeMomentumBounceRatio;let h;if(lt.minTranslate())i.freeModeMomentumBounce?(l-t.minTranslate()>c&&(l=t.minTranslate()+c),d=t.minTranslate(),p=!0,s.allowMomentumBounce=!0):l=t.minTranslate(),i.loop&&i.centeredSlides&&(h=!0);else if(i.freeModeSticky){let e;for(let t=0;t-l){e=t;break}l=Math.abs(o[e]-l){t.loopFix()}),0!==t.velocity){if(e=n?Math.abs((-l-t.translate)/t.velocity):Math.abs((l-t.translate)/t.velocity),i.freeModeSticky){const s=Math.abs((n?-l:l)-t.translate),a=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&s.allowMomentumBounce&&(t.emit("momentumBounce"),t.setTransition(i.speed),setTimeout(()=>{t.setTranslate(d),r.transitionEnd(()=>{t&&!t.destroyed&&t.transitionEnd()})},0))})):t.velocity?(t.updateProgress(l),t.setTransition(e),t.setTranslate(l),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,r.transitionEnd(()=>{t&&!t.destroyed&&t.transitionEnd()}))):t.updateProgress(l),t.updateActiveIndex(),t.updateSlidesClasses()}else if(i.freeModeSticky)return void t.slideToClosest();return void((!i.freeModeMomentum||c>=i.longSwipesMs)&&(t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses()))}let u=0,m=t.slidesSizesGrid[0];for(let e=0;e=l[e]&&h=l[e]&&(u=e,m=l[l.length-1]-l[l.length-2])}const f=(h-l[u])/m,g=ui.longSwipesMs){if(!i.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(f>=i.longSwipesRatio?t.slideTo(u+g):t.slideTo(u)),"prev"===t.swipeDirection&&(f>1-i.longSwipesRatio?t.slideTo(u+g):t.slideTo(u))}else{if(!i.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(d.target===t.navigation.nextEl||d.target===t.navigation.prevEl)?d.target===t.navigation.nextEl?t.slideTo(u+g):t.slideTo(u):("next"===t.swipeDirection&&t.slideTo(u+g),"prev"===t.swipeDirection&&t.slideTo(u))}}function onResize(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:a,snapGrid:n}=e;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses(),("auto"===t.slidesPerView||t.slidesPerView>1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.run(),e.allowSlidePrev=a,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function onClick(e){const t=this;t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation()))}function onScroll(){const e=this,{wrapperEl:t,rtlTranslate:s}=e;let i;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=s?t.scrollWidth-t.offsetWidth-t.scrollLeft:-t.scrollLeft:e.translate=-t.scrollTop,-0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const a=e.maxTranslate()-e.minTranslate();i=0===a?0:(e.translate-e.minTranslate())/a,i!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}let dummyEventAttached=!1;function dummyEventListener(){}function attachEvents(){const e=this,{params:t,touchEvents:s,el:i,wrapperEl:a}=e;e.onTouchStart=onTouchStart.bind(e),e.onTouchMove=onTouchMove.bind(e),e.onTouchEnd=onTouchEnd.bind(e),t.cssMode&&(e.onScroll=onScroll.bind(e)),e.onClick=onClick.bind(e);const n=!!t.nested;if(!Support.touch&&Support.pointerEvents)i.addEventListener(s.start,e.onTouchStart,!1),doc.addEventListener(s.move,e.onTouchMove,n),doc.addEventListener(s.end,e.onTouchEnd,!1);else{if(Support.touch){const a=!("touchstart"!==s.start||!Support.passiveListener||!t.passiveListeners)&&{passive:!0,capture:!1};i.addEventListener(s.start,e.onTouchStart,a),i.addEventListener(s.move,e.onTouchMove,Support.passiveListener?{passive:!1,capture:n}:n),i.addEventListener(s.end,e.onTouchEnd,a),s.cancel&&i.addEventListener(s.cancel,e.onTouchEnd,a),dummyEventAttached||(doc.addEventListener("touchstart",dummyEventListener),dummyEventAttached=!0)}(t.simulateTouch&&!Device.ios&&!Device.android||t.simulateTouch&&!Support.touch&&Device.ios)&&(i.addEventListener("mousedown",e.onTouchStart,!1),doc.addEventListener("mousemove",e.onTouchMove,n),doc.addEventListener("mouseup",e.onTouchEnd,!1))}(t.preventClicks||t.preventClicksPropagation)&&i.addEventListener("click",e.onClick,!0),t.cssMode&&a.addEventListener("scroll",e.onScroll),t.updateOnWindowResize?e.on(Device.ios||Device.android?"resize orientationchange observerUpdate":"resize observerUpdate",onResize,!0):e.on("observerUpdate",onResize,!0)}function detachEvents(){const e=this,{params:t,touchEvents:s,el:i,wrapperEl:a}=e,n=!!t.nested;if(!Support.touch&&Support.pointerEvents)i.removeEventListener(s.start,e.onTouchStart,!1),doc.removeEventListener(s.move,e.onTouchMove,n),doc.removeEventListener(s.end,e.onTouchEnd,!1);else{if(Support.touch){const a=!("onTouchStart"!==s.start||!Support.passiveListener||!t.passiveListeners)&&{passive:!0,capture:!1};i.removeEventListener(s.start,e.onTouchStart,a),i.removeEventListener(s.move,e.onTouchMove,n),i.removeEventListener(s.end,e.onTouchEnd,a),s.cancel&&i.removeEventListener(s.cancel,e.onTouchEnd,a)}(t.simulateTouch&&!Device.ios&&!Device.android||t.simulateTouch&&!Support.touch&&Device.ios)&&(i.removeEventListener("mousedown",e.onTouchStart,!1),doc.removeEventListener("mousemove",e.onTouchMove,n),doc.removeEventListener("mouseup",e.onTouchEnd,!1))}(t.preventClicks||t.preventClicksPropagation)&&i.removeEventListener("click",e.onClick,!0),t.cssMode&&a.removeEventListener("scroll",e.onScroll),e.off(Device.ios||Device.android?"resize orientationchange observerUpdate":"resize observerUpdate",onResize)}var events={attachEvents:attachEvents,detachEvents:detachEvents};function setBreakpoint(){const e=this,{activeIndex:t,initialized:s,loopedSlides:i=0,params:a,$el:n}=e,r=a.breakpoints;if(!r||r&&0===Object.keys(r).length)return;const l=e.getBreakpoint(r);if(l&&e.currentBreakpoint!==l){const o=l in r?r[l]:void 0;o&&["slidesPerView","spaceBetween","slidesPerGroup","slidesPerGroupSkip","slidesPerColumn"].forEach(e=>{const t=o[e];void 0!==t&&(o[e]="slidesPerView"!==e||"AUTO"!==t&&"auto"!==t?"slidesPerView"===e?parseFloat(t):parseInt(t,10):"auto")});const d=o||e.originalParams,p=a.slidesPerColumn>1,c=d.slidesPerColumn>1;p&&!c?n.removeClass(`${a.containerModifierClass}multirow ${a.containerModifierClass}multirow-column`):!p&&c&&(n.addClass(a.containerModifierClass+"multirow"),"column"===d.slidesPerColumnFill&&n.addClass(a.containerModifierClass+"multirow-column"));const h=d.direction&&d.direction!==a.direction,u=a.loop&&(d.slidesPerView!==a.slidesPerView||h);h&&s&&e.changeDirection(),Utils.extend(e.params,d),Utils.extend(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),e.currentBreakpoint=l,u&&s&&(e.loopDestroy(),e.loopCreate(),e.updateSlides(),e.slideTo(t-i+e.loopedSlides,0,!1)),e.emit("breakpoint",d)}}function getBreakpoint(e){if(!e)return;let t=!1;const s=Object.keys(e).map(e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:win.innerHeight*t,point:e}}return{value:e,point:e}});s.sort((e,t)=>parseInt(e.value,10)-parseInt(t.value,10));for(let e=0;e1&&(a.push("multirow"),"column"===t.slidesPerColumnFill&&a.push("multirow-column")),Device.android&&a.push("android"),Device.ios&&a.push("ios"),t.cssMode&&a.push("css-mode"),a.forEach(s=>{e.push(t.containerModifierClass+s)}),i.addClass(e.join(" "))}function removeClasses(){const{$el:e,classNames:t}=this;e.removeClass(t.join(" "))}var classes={addClasses:addClasses,removeClasses:removeClasses};function loadImage(e,t,s,i,a,n){let r;function l(){n&&n()}e.complete&&a?l():t?(r=new win.Image,r.onload=l,r.onerror=l,i&&(r.sizes=i),s&&(r.srcset=s),t&&(r.src=t)):l()}function preloadImages(){const e=this;function t(){null!=e&&e&&!e.destroyed&&(void 0!==e.imagesLoaded&&(e.imagesLoaded+=1),e.imagesLoaded===e.imagesToLoad.length&&(e.params.updateOnImagesReady&&e.update(),e.emit("imagesReady")))}e.imagesToLoad=e.$el.find("img");for(let s=0;s0&&t.slidesOffsetBefore+t.spaceBetween*(e.slides.length-1)+e.slides[0].offsetWidth*e.slides.length;t.slidesOffsetBefore&&t.slidesOffsetAfter&&i?e.isLocked=i<=e.size:e.isLocked=1===e.snapGrid.length,e.allowSlideNext=!e.isLocked,e.allowSlidePrev=!e.isLocked,s!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock"),s&&s!==e.isLocked&&(e.isEnd=!1,e.navigation.update())}var checkOverflow$1={checkOverflow:checkOverflow},defaults={init:!0,direction:"horizontal",touchEventsTarget:"container",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,preventInteractionOnTransition:!1,edgeSwipeDetection:!1,edgeSwipeThreshold:20,freeMode:!1,freeModeMomentum:!0,freeModeMomentumRatio:1,freeModeMomentumBounce:!0,freeModeMomentumBounceRatio:1,freeModeMomentumVelocityRatio:1,freeModeSticky:!1,freeModeMinimumVelocity:.02,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,spaceBetween:0,slidesPerView:1,slidesPerColumn:1,slidesPerColumnFill:"column",slidesPerGroup:1,slidesPerGroupSkip:0,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!1,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:0,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,watchSlidesVisibility:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopFillGroupWithBlank:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,containerModifierClass:"swiper-container-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-invisible-blank",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",runCallbacksOnInit:!0};const prototypes={update:update,translate:translate,transition:transition$1,slide:slide,loop:loop,grabCursor:grabCursor,manipulation:manipulation,events:events,breakpoints:breakpoints,checkOverflow:checkOverflow$1,classes:classes,images:images},extendedDefaults={};class Swiper extends SwiperClass{constructor(...e){let t,s;1===e.length&&e[0].constructor&&e[0].constructor===Object?s=e[0]:[t,s]=e,s||(s={}),s=Utils.extend({},s),t&&!s.el&&(s.el=t),super(s),Object.keys(prototypes).forEach(e=>{Object.keys(prototypes[e]).forEach(t=>{Swiper.prototype[t]||(Swiper.prototype[t]=prototypes[e][t])})});const i=this;void 0===i.modules&&(i.modules={}),Object.keys(i.modules).forEach(e=>{const t=i.modules[e];if(t.params){const e=Object.keys(t.params)[0],i=t.params[e];if("object"!=typeof i||null===i)return;if(!(e in s)||!("enabled"in i))return;!0===s[e]&&(s[e]={enabled:!0}),"object"!=typeof s[e]||"enabled"in s[e]||(s[e].enabled=!0),s[e]||(s[e]={enabled:!1})}});const a=Utils.extend({},defaults);i.useModulesParams(a),i.params=Utils.extend({},a,extendedDefaults,s),i.originalParams=Utils.extend({},i.params),i.passedParams=Utils.extend({},s),i.$=$;const n=$(i.params.el);if(t=n[0],!t)return;if(n.length>1){const e=[];return n.each((t,i)=>{const a=Utils.extend({},s,{el:i});e.push(new Swiper(a))}),e}let r;return t.swiper=i,n.data("swiper",i),t&&t.shadowRoot&&t.shadowRoot.querySelector?(r=$(t.shadowRoot.querySelector("."+i.params.wrapperClass)),r.children=e=>n.children(e)):r=n.children("."+i.params.wrapperClass),Utils.extend(i,{$el:n,el:t,$wrapperEl:r,wrapperEl:r[0],classNames:[],slides:$(),slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===i.params.direction,isVertical:()=>"vertical"===i.params.direction,rtl:"rtl"===t.dir.toLowerCase()||"rtl"===n.css("direction"),rtlTranslate:"horizontal"===i.params.direction&&("rtl"===t.dir.toLowerCase()||"rtl"===n.css("direction")),wrongRTL:"-webkit-box"===r.css("display"),activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,allowSlideNext:i.params.allowSlideNext,allowSlidePrev:i.params.allowSlidePrev,touchEvents:function(){const e=["touchstart","touchmove","touchend","touchcancel"];let t=["mousedown","mousemove","mouseup"];return Support.pointerEvents&&(t=["pointerdown","pointermove","pointerup"]),i.touchEventsTouch={start:e[0],move:e[1],end:e[2],cancel:e[3]},i.touchEventsDesktop={start:t[0],move:t[1],end:t[2]},Support.touch||!i.params.simulateTouch?i.touchEventsTouch:i.touchEventsDesktop}(),touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,formElements:"input, select, option, textarea, button, video, label",lastClickTime:Utils.now(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},allowClick:!0,allowTouchMove:i.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),i.useModules(),i.params.init&&i.init(),i}slidesPerViewDynamic(){const{params:e,slides:t,slidesGrid:s,size:i,activeIndex:a}=this;let n=1;if(e.centeredSlides){let e,s=t[a].swiperSlideSize;for(let r=a+1;ri&&(e=!0));for(let r=a-1;r>=0;r-=1)t[r]&&!e&&(s+=t[r].swiperSlideSize,n+=1,s>i&&(e=!0))}else for(let e=a+1;e1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),a||i()),s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t=!0){const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.$el.removeClass(`${s.params.containerModifierClass}${i}`).addClass(`${s.params.containerModifierClass}${e}`),s.params.direction=e,s.slides.each((t,s)=>{"vertical"===e?s.style.width="":s.style.height=""}),s.emit("changeDirection"),t&&s.update()),s}init(){const e=this;e.initialized||(e.emit("beforeInit"),e.params.breakpoints&&e.setBreakpoint(),e.addClasses(),e.params.loop&&e.loopCreate(),e.updateSize(),e.updateSlides(),e.params.watchOverflow&&e.checkOverflow(),e.params.grabCursor&&e.setGrabCursor(),e.params.preloadImages&&e.preloadImages(),e.params.loop?e.slideTo(e.params.initialSlide+e.loopedSlides,0,e.params.runCallbacksOnInit):e.slideTo(e.params.initialSlide,0,e.params.runCallbacksOnInit),e.attachEvents(),e.initialized=!0,e.emit("init"))}destroy(e=!0,t=!0){const s=this,{params:i,$el:a,$wrapperEl:n,slides:r}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),a.removeAttr("style"),n.removeAttr("style"),r&&r.length&&r.removeClass([i.slideVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),s.emit("destroy"),Object.keys(s.eventsListeners).forEach(e=>{s.off(e)}),!1!==e&&(s.$el[0].swiper=null,s.$el.data("swiper",null),Utils.deleteProps(s)),s.destroyed=!0),null}static extendDefaults(e){Utils.extend(extendedDefaults,e)}static get extendedDefaults(){return extendedDefaults}static get defaults(){return defaults}static get Class(){return SwiperClass}static get $(){return $}}var Device$1={name:"device",proto:{device:Device},static:{device:Device}},Support$1={name:"support",proto:{support:Support},static:{support:Support}};const Browser={isEdge:!!win.navigator.userAgent.match(/Edge/g),isSafari:function(){const e=win.navigator.userAgent.toLowerCase();return e.indexOf("safari")>=0&&e.indexOf("chrome")<0&&e.indexOf("android")<0}(),isUiWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent)};var Browser$1={name:"browser",proto:{browser:Browser},static:{browser:Browser}},Resize={name:"resize",create(){const e=this;Utils.extend(e,{resize:{resizeHandler(){e&&!e.destroyed&&e.initialized&&(e.emit("beforeResize"),e.emit("resize"))},orientationChangeHandler(){e&&!e.destroyed&&e.initialized&&e.emit("orientationchange")}}})},on:{init(){win.addEventListener("resize",this.resize.resizeHandler),win.addEventListener("orientationchange",this.resize.orientationChangeHandler)},destroy(){win.removeEventListener("resize",this.resize.resizeHandler),win.removeEventListener("orientationchange",this.resize.orientationChangeHandler)}}};const Observer={func:win.MutationObserver||win.WebkitMutationObserver,attach(e,t={}){const s=this,i=new(0,Observer.func)(e=>{if(1===e.length)return void s.emit("observerUpdate",e[0]);const t=function(){s.emit("observerUpdate",e[0])};win.requestAnimationFrame?win.requestAnimationFrame(t):win.setTimeout(t,0)});i.observe(e,{attributes:void 0===t.attributes||t.attributes,childList:void 0===t.childList||t.childList,characterData:void 0===t.characterData||t.characterData}),s.observer.observers.push(i)},init(){const e=this;if(Support.observer&&e.params.observer){if(e.params.observeParents){const t=e.$el.parents();for(let s=0;s{e.disconnect()}),this.observer.observers=[]}};var Observer$1={name:"observer",params:{observer:!1,observeParents:!1,observeSlideChildren:!1},create(){Utils.extend(this,{observer:{init:Observer.init.bind(this),attach:Observer.attach.bind(this),destroy:Observer.destroy.bind(this),observers:[]}})},on:{init(){this.observer.init()},destroy(){this.observer.destroy()}}};const Virtual={update(e){const t=this,{slidesPerView:s,slidesPerGroup:i,centeredSlides:a}=t.params,{addSlidesBefore:n,addSlidesAfter:r}=t.params.virtual,{from:l,to:o,slides:d,slidesGrid:p,renderSlide:c,offset:h}=t.virtual;t.updateActiveIndex();const u=t.activeIndex||0;let m,f,g;m=t.rtlTranslate?"right":t.isHorizontal()?"left":"top",a?(f=Math.floor(s/2)+i+n,g=Math.floor(s/2)+i+r):(f=s+(i-1)+n,g=i+r);const v=Math.max((u||0)-g,0),w=Math.min((u||0)+f,d.length-1),b=(t.slidesGrid[v]||0)-(t.slidesGrid[0]||0);function y(){t.updateSlides(),t.updateProgress(),t.updateSlidesClasses(),t.lazy&&t.params.lazy.enabled&&t.lazy.load()}if(Utils.extend(t.virtual,{from:v,to:w,offset:b,slidesGrid:t.slidesGrid}),l===v&&o===w&&!e)return t.slidesGrid!==p&&b!==h&&t.slides.css(m,b+"px"),void t.updateProgress();if(t.params.virtual.renderExternal)return t.params.virtual.renderExternal.call(t,{offset:b,from:v,to:w,slides:function(){const e=[];for(let t=v;t<=w;t+=1)e.push(d[t]);return e}()}),void y();const x=[],S=[];if(e)t.$wrapperEl.find("."+t.params.slideClass).remove();else for(let e=l;e<=o;e+=1)(ew)&&t.$wrapperEl.find(`.${t.params.slideClass}[data-swiper-slide-index="${e}"]`).remove();for(let t=0;t=v&&t<=w&&(void 0===o||e?S.push(t):(t>o&&S.push(t),t{t.$wrapperEl.append(c(d[e],e))}),x.sort((e,t)=>t-e).forEach(e=>{t.$wrapperEl.prepend(c(d[e],e))}),t.$wrapperEl.children(".swiper-slide").css(m,b+"px"),y()},renderSlide(e,t){const s=this,i=s.params.virtual;if(i.cache&&s.virtual.cache[t])return s.virtual.cache[t];const a=i.renderSlide?$(i.renderSlide.call(s,e,t)):$(`
      ${e}
      `);return a.attr("data-swiper-slide-index")||a.attr("data-swiper-slide-index",t),i.cache&&(s.virtual.cache[t]=a),a},appendSlide(e){const t=this;if("object"==typeof e&&"length"in e)for(let s=0;s{const i=e[t],n=i.attr("data-swiper-slide-index");n&&i.attr("data-swiper-slide-index",parseInt(n,10)+1),s[parseInt(t,10)+a]=i}),t.virtual.cache=s}t.virtual.update(!0),t.slideTo(i,0)},removeSlide(e){const t=this;if(null==e)return;let s=t.activeIndex;if(Array.isArray(e))for(let i=e.length-1;i>=0;i-=1)t.virtual.slides.splice(e[i],1),t.params.virtual.cache&&delete t.virtual.cache[e[i]],e[i]0&&0===t.$el.parents("."+t.params.slideActiveClass).length)return;const i=win.innerWidth,a=win.innerHeight,n=t.$el.offset();s&&(n.left-=t.$el[0].scrollLeft);const r=[[n.left,n.top],[n.left+t.width,n.top],[n.left,n.top+t.height],[n.left+t.width,n.top+t.height]];for(let t=0;t=0&&s[0]<=i&&s[1]>=0&&s[1]<=a&&(e=!0)}if(!e)return}t.isHorizontal()?(33!==a&&34!==a&&37!==a&&39!==a||(i.preventDefault?i.preventDefault():i.returnValue=!1),(34!==a&&39!==a||s)&&(33!==a&&37!==a||!s)||t.slideNext(),(33!==a&&37!==a||s)&&(34!==a&&39!==a||!s)||t.slidePrev()):(33!==a&&34!==a&&38!==a&&40!==a||(i.preventDefault?i.preventDefault():i.returnValue=!1),34!==a&&40!==a||t.slideNext(),33!==a&&38!==a||t.slidePrev()),t.emit("keyPress",a)}},enable(){this.keyboard.enabled||($(doc).on("keydown",this.keyboard.handle),this.keyboard.enabled=!0)},disable(){this.keyboard.enabled&&($(doc).off("keydown",this.keyboard.handle),this.keyboard.enabled=!1)}};var Keyboard$1={name:"keyboard",params:{keyboard:{enabled:!1,onlyInViewport:!0}},create(){Utils.extend(this,{keyboard:{enabled:!1,enable:Keyboard.enable.bind(this),disable:Keyboard.disable.bind(this),handle:Keyboard.handle.bind(this)}})},on:{init(){const e=this;e.params.keyboard.enabled&&e.keyboard.enable()},destroy(){const e=this;e.keyboard.enabled&&e.keyboard.disable()}}};function isEventSupported(){let e="onwheel"in doc;if(!e){const t=doc.createElement("div");t.setAttribute("onwheel","return;"),e="function"==typeof t.onwheel}return!e&&doc.implementation&&doc.implementation.hasFeature&&!0!==doc.implementation.hasFeature("","")&&(e=doc.implementation.hasFeature("Events.wheel","3.0")),e}const Mousewheel={lastScrollTime:Utils.now(),lastEventBeforeSnap:void 0,recentWheelEvents:[],event:()=>win.navigator.userAgent.indexOf("firefox")>-1?"DOMMouseScroll":isEventSupported()?"wheel":"mousewheel",normalize(e){let t=0,s=0,i=0,a=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),i=10*t,a=10*s,"deltaY"in e&&(a=e.deltaY),"deltaX"in e&&(i=e.deltaX),e.shiftKey&&!i&&(i=a,a=0),(i||a)&&e.deltaMode&&(1===e.deltaMode?(i*=40,a*=40):(i*=800,a*=800)),i&&!t&&(t=i<1?-1:1),a&&!s&&(s=a<1?-1:1),{spinX:t,spinY:s,pixelX:i,pixelY:a}},handleMouseEnter(){this.mouseEntered=!0},handleMouseLeave(){this.mouseEntered=!1},handle(e){let t=e;const s=this,i=s.params.mousewheel;s.params.cssMode&&t.preventDefault();let a=s.$el;if("container"!==s.params.mousewheel.eventsTarged&&(a=$(s.params.mousewheel.eventsTarged)),!s.mouseEntered&&!a[0].contains(t.target)&&!i.releaseOnEdges)return!0;t.originalEvent&&(t=t.originalEvent);let n=0;const r=s.rtlTranslate?-1:1,l=Mousewheel.normalize(t);if(i.forceToAxis)if(s.isHorizontal()){if(!(Math.abs(l.pixelX)>Math.abs(l.pixelY)))return!0;n=l.pixelX*r}else{if(!(Math.abs(l.pixelY)>Math.abs(l.pixelX)))return!0;n=l.pixelY}else n=Math.abs(l.pixelX)>Math.abs(l.pixelY)?-l.pixelX*r:-l.pixelY;if(0===n)return!0;if(i.invert&&(n=-n),s.params.freeMode){const e={time:Utils.now(),delta:Math.abs(n),direction:Math.sign(n)},{lastEventBeforeSnap:a}=s.mousewheel,r=a&&e.time=s.minTranslate()&&(a=s.minTranslate()),a<=s.maxTranslate()&&(a=s.maxTranslate()),s.setTransition(0),s.setTranslate(a),s.updateProgress(),s.updateActiveIndex(),s.updateSlidesClasses(),(!l&&s.isBeginning||!o&&s.isEnd)&&s.updateSlidesClasses(),s.params.freeModeSticky){clearTimeout(s.mousewheel.timeout),s.mousewheel.timeout=void 0;const t=s.mousewheel.recentWheelEvents;t.length>=15&&t.shift();const i=t.length?t[t.length-1]:void 0,a=t[0];if(t.push(e),i&&(e.delta>i.delta||e.direction!==i.direction))t.splice(0);else if(t.length>=15&&e.time-a.time<500&&a.delta-e.delta>=1&&e.delta<=6){const i=n>0?.8:.2;s.mousewheel.lastEventBeforeSnap=e,t.splice(0),s.mousewheel.timeout=Utils.nextTick(()=>{s.slideToClosest(s.params.speed,!0,void 0,i)},0)}s.mousewheel.timeout||(s.mousewheel.timeout=Utils.nextTick(()=>{s.mousewheel.lastEventBeforeSnap=e,t.splice(0),s.slideToClosest(s.params.speed,!0,void 0,.5)},500))}if(r||s.emit("scroll",t),s.params.autoplay&&s.params.autoplayDisableOnInteraction&&s.autoplay.stop(),a===s.minTranslate()||a===s.maxTranslate())return!0}}else{const t={time:Utils.now(),delta:Math.abs(n),direction:Math.sign(n),raw:e},i=s.mousewheel.recentWheelEvents;i.length>=2&&i.shift();const a=i.length?i[i.length-1]:void 0;if(i.push(t),a?(t.direction!==a.direction||t.delta>a.delta)&&s.mousewheel.animateSlider(t):s.mousewheel.animateSlider(t),s.mousewheel.releaseScroll(t))return!0}return t.preventDefault?t.preventDefault():t.returnValue=!1,!1},animateSlider(e){const t=this;return e.delta>=6&&Utils.now()-t.mousewheel.lastScrollTime<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),t.emit("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),t.emit("scroll",e.raw)),t.mousewheel.lastScrollTime=(new win.Date).getTime(),!1)},releaseScroll(e){const t=this,s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1},enable(){const e=this,t=Mousewheel.event();if(e.params.cssMode)return e.wrapperEl.removeEventListener(t,e.mousewheel.handle),!0;if(!t)return!1;if(e.mousewheel.enabled)return!1;let s=e.$el;return"container"!==e.params.mousewheel.eventsTarged&&(s=$(e.params.mousewheel.eventsTarged)),s.on("mouseenter",e.mousewheel.handleMouseEnter),s.on("mouseleave",e.mousewheel.handleMouseLeave),s.on(t,e.mousewheel.handle),e.mousewheel.enabled=!0,!0},disable(){const e=this,t=Mousewheel.event();if(e.params.cssMode)return e.wrapperEl.addEventListener(t,e.mousewheel.handle),!0;if(!t)return!1;if(!e.mousewheel.enabled)return!1;let s=e.$el;return"container"!==e.params.mousewheel.eventsTarged&&(s=$(e.params.mousewheel.eventsTarged)),s.off(t,e.mousewheel.handle),e.mousewheel.enabled=!1,!0}};var Mousewheel$1={name:"mousewheel",params:{mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarged:"container"}},create(){Utils.extend(this,{mousewheel:{enabled:!1,enable:Mousewheel.enable.bind(this),disable:Mousewheel.disable.bind(this),handle:Mousewheel.handle.bind(this),handleMouseEnter:Mousewheel.handleMouseEnter.bind(this),handleMouseLeave:Mousewheel.handleMouseLeave.bind(this),animateSlider:Mousewheel.animateSlider.bind(this),releaseScroll:Mousewheel.releaseScroll.bind(this),lastScrollTime:Utils.now(),lastEventBeforeSnap:void 0,recentWheelEvents:[]}})},on:{init(){const e=this;!e.params.mousewheel.enabled&&e.params.cssMode&&e.mousewheel.disable(),e.params.mousewheel.enabled&&e.mousewheel.enable()},destroy(){const e=this;e.params.cssMode&&e.mousewheel.enable(),e.mousewheel.enabled&&e.mousewheel.disable()}}};const Navigation={update(){const e=this,t=e.params.navigation;if(e.params.loop)return;const{$nextEl:s,$prevEl:i}=e.navigation;i&&i.length>0&&(e.isBeginning?i.addClass(t.disabledClass):i.removeClass(t.disabledClass),i[e.params.watchOverflow&&e.isLocked?"addClass":"removeClass"](t.lockClass)),s&&s.length>0&&(e.isEnd?s.addClass(t.disabledClass):s.removeClass(t.disabledClass),s[e.params.watchOverflow&&e.isLocked?"addClass":"removeClass"](t.lockClass))},onPrevClick(e){e.preventDefault(),this.isBeginning&&!this.params.loop||this.slidePrev()},onNextClick(e){e.preventDefault(),this.isEnd&&!this.params.loop||this.slideNext()},init(){const e=this,t=e.params.navigation;if(!t.nextEl&&!t.prevEl)return;let s,i;t.nextEl&&(s=$(t.nextEl),e.params.uniqueNavElements&&"string"==typeof t.nextEl&&s.length>1&&1===e.$el.find(t.nextEl).length&&(s=e.$el.find(t.nextEl))),t.prevEl&&(i=$(t.prevEl),e.params.uniqueNavElements&&"string"==typeof t.prevEl&&i.length>1&&1===e.$el.find(t.prevEl).length&&(i=e.$el.find(t.prevEl))),s&&s.length>0&&s.on("click",e.navigation.onNextClick),i&&i.length>0&&i.on("click",e.navigation.onPrevClick),Utils.extend(e.navigation,{$nextEl:s,nextEl:s&&s[0],$prevEl:i,prevEl:i&&i[0]})},destroy(){const e=this,{$nextEl:t,$prevEl:s}=e.navigation;t&&t.length&&(t.off("click",e.navigation.onNextClick),t.removeClass(e.params.navigation.disabledClass)),s&&s.length&&(s.off("click",e.navigation.onPrevClick),s.removeClass(e.params.navigation.disabledClass))}};var Navigation$1={name:"navigation",params:{navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock"}},create(){Utils.extend(this,{navigation:{init:Navigation.init.bind(this),update:Navigation.update.bind(this),destroy:Navigation.destroy.bind(this),onNextClick:Navigation.onNextClick.bind(this),onPrevClick:Navigation.onPrevClick.bind(this)}})},on:{init(){this.navigation.init(),this.navigation.update()},toEdge(){this.navigation.update()},fromEdge(){this.navigation.update()},destroy(){this.navigation.destroy()},click(e){const t=this,{$nextEl:s,$prevEl:i}=t.navigation;if(t.params.navigation.hideOnClick&&!$(e.target).is(i)&&!$(e.target).is(s)){let e;s?e=s.hasClass(t.params.navigation.hiddenClass):i&&(e=i.hasClass(t.params.navigation.hiddenClass)),!0===e?t.emit("navigationShow",t):t.emit("navigationHide",t),s&&s.toggleClass(t.params.navigation.hiddenClass),i&&i.toggleClass(t.params.navigation.hiddenClass)}}}};const Pagination={update(){const e=this,t=e.rtl,s=e.params.pagination;if(!s.el||!e.pagination.el||!e.pagination.$el||0===e.pagination.$el.length)return;const i=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,a=e.pagination.$el;let n;const r=e.params.loop?Math.ceil((i-2*e.loopedSlides)/e.params.slidesPerGroup):e.snapGrid.length;if(e.params.loop?(n=Math.ceil((e.activeIndex-e.loopedSlides)/e.params.slidesPerGroup),n>i-1-2*e.loopedSlides&&(n-=i-2*e.loopedSlides),n>r-1&&(n-=r),n<0&&"bullets"!==e.params.paginationType&&(n=r+n)):n=void 0!==e.snapIndex?e.snapIndex:e.activeIndex||0,"bullets"===s.type&&e.pagination.bullets&&e.pagination.bullets.length>0){const i=e.pagination.bullets;let r,l,o;if(s.dynamicBullets&&(e.pagination.bulletSize=i.eq(0)[e.isHorizontal()?"outerWidth":"outerHeight"](!0),a.css(e.isHorizontal()?"width":"height",e.pagination.bulletSize*(s.dynamicMainBullets+4)+"px"),s.dynamicMainBullets>1&&void 0!==e.previousIndex&&(e.pagination.dynamicBulletIndex+=n-e.previousIndex,e.pagination.dynamicBulletIndex>s.dynamicMainBullets-1?e.pagination.dynamicBulletIndex=s.dynamicMainBullets-1:e.pagination.dynamicBulletIndex<0&&(e.pagination.dynamicBulletIndex=0)),r=n-e.pagination.dynamicBulletIndex,l=r+(Math.min(i.length,s.dynamicMainBullets)-1),o=(l+r)/2),i.removeClass(`${s.bulletActiveClass} ${s.bulletActiveClass}-next ${s.bulletActiveClass}-next-next ${s.bulletActiveClass}-prev ${s.bulletActiveClass}-prev-prev ${s.bulletActiveClass}-main`),a.length>1)i.each((e,t)=>{const i=$(t),a=i.index();a===n&&i.addClass(s.bulletActiveClass),s.dynamicBullets&&(a>=r&&a<=l&&i.addClass(s.bulletActiveClass+"-main"),a===r&&i.prev().addClass(s.bulletActiveClass+"-prev").prev().addClass(s.bulletActiveClass+"-prev-prev"),a===l&&i.next().addClass(s.bulletActiveClass+"-next").next().addClass(s.bulletActiveClass+"-next-next"))});else{const t=i.eq(n),a=t.index();if(t.addClass(s.bulletActiveClass),s.dynamicBullets){const t=i.eq(r),n=i.eq(l);for(let e=r;e<=l;e+=1)i.eq(e).addClass(s.bulletActiveClass+"-main");if(e.params.loop)if(a>=i.length-s.dynamicMainBullets){for(let e=s.dynamicMainBullets;e>=0;e-=1)i.eq(i.length-e).addClass(s.bulletActiveClass+"-main");i.eq(i.length-s.dynamicMainBullets-1).addClass(s.bulletActiveClass+"-prev")}else t.prev().addClass(s.bulletActiveClass+"-prev").prev().addClass(s.bulletActiveClass+"-prev-prev"),n.next().addClass(s.bulletActiveClass+"-next").next().addClass(s.bulletActiveClass+"-next-next");else t.prev().addClass(s.bulletActiveClass+"-prev").prev().addClass(s.bulletActiveClass+"-prev-prev"),n.next().addClass(s.bulletActiveClass+"-next").next().addClass(s.bulletActiveClass+"-next-next")}}if(s.dynamicBullets){const a=Math.min(i.length,s.dynamicMainBullets+4),n=(e.pagination.bulletSize*a-e.pagination.bulletSize)/2-o*e.pagination.bulletSize,r=t?"right":"left";i.css(e.isHorizontal()?r:"top",n+"px")}}if("fraction"===s.type&&(a.find("."+s.currentClass).text(s.formatFractionCurrent(n+1)),a.find("."+s.totalClass).text(s.formatFractionTotal(r))),"progressbar"===s.type){let t;t=s.progressbarOpposite?e.isHorizontal()?"vertical":"horizontal":e.isHorizontal()?"horizontal":"vertical";const i=(n+1)/r;let l=1,o=1;"horizontal"===t?l=i:o=i,a.find("."+s.progressbarFillClass).transform(`translate3d(0,0,0) scaleX(${l}) scaleY(${o})`).transition(e.params.speed)}"custom"===s.type&&s.renderCustom?(a.html(s.renderCustom(e,n+1,r)),e.emit("paginationRender",e,a[0])):e.emit("paginationUpdate",e,a[0]),a[e.params.watchOverflow&&e.isLocked?"addClass":"removeClass"](s.lockClass)},render(){const e=this,t=e.params.pagination;if(!t.el||!e.pagination.el||!e.pagination.$el||0===e.pagination.$el.length)return;const s=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,i=e.pagination.$el;let a="";if("bullets"===t.type){const n=e.params.loop?Math.ceil((s-2*e.loopedSlides)/e.params.slidesPerGroup):e.snapGrid.length;for(let s=0;s`;i.html(a),e.pagination.bullets=i.find("."+t.bulletClass)}"fraction"===t.type&&(a=t.renderFraction?t.renderFraction.call(e,t.currentClass,t.totalClass):` / `,i.html(a)),"progressbar"===t.type&&(a=t.renderProgressbar?t.renderProgressbar.call(e,t.progressbarFillClass):``,i.html(a)),"custom"!==t.type&&e.emit("paginationRender",e.pagination.$el[0])},init(){const e=this,t=e.params.pagination;if(!t.el)return;let s=$(t.el);0!==s.length&&(e.params.uniqueNavElements&&"string"==typeof t.el&&s.length>1&&1===e.$el.find(t.el).length&&(s=e.$el.find(t.el)),"bullets"===t.type&&t.clickable&&s.addClass(t.clickableClass),s.addClass(t.modifierClass+t.type),"bullets"===t.type&&t.dynamicBullets&&(s.addClass(`${t.modifierClass}${t.type}-dynamic`),e.pagination.dynamicBulletIndex=0,t.dynamicMainBullets<1&&(t.dynamicMainBullets=1)),"progressbar"===t.type&&t.progressbarOpposite&&s.addClass(t.progressbarOppositeClass),t.clickable&&s.on("click","."+t.bulletClass,(function(t){t.preventDefault();let s=$(this).index()*e.params.slidesPerGroup;e.params.loop&&(s+=e.loopedSlides),e.slideTo(s)})),Utils.extend(e.pagination,{$el:s,el:s[0]}))},destroy(){const e=this.params.pagination;if(!e.el||!this.pagination.el||!this.pagination.$el||0===this.pagination.$el.length)return;const t=this.pagination.$el;t.removeClass(e.hiddenClass),t.removeClass(e.modifierClass+e.type),this.pagination.bullets&&this.pagination.bullets.removeClass(e.bulletActiveClass),e.clickable&&t.off("click","."+e.bulletClass)}};var Pagination$1={name:"pagination",params:{pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:"swiper-pagination-bullet",bulletActiveClass:"swiper-pagination-bullet-active",modifierClass:"swiper-pagination-",currentClass:"swiper-pagination-current",totalClass:"swiper-pagination-total",hiddenClass:"swiper-pagination-hidden",progressbarFillClass:"swiper-pagination-progressbar-fill",progressbarOppositeClass:"swiper-pagination-progressbar-opposite",clickableClass:"swiper-pagination-clickable",lockClass:"swiper-pagination-lock"}},create(){Utils.extend(this,{pagination:{init:Pagination.init.bind(this),render:Pagination.render.bind(this),update:Pagination.update.bind(this),destroy:Pagination.destroy.bind(this),dynamicBulletIndex:0}})},on:{init(){this.pagination.init(),this.pagination.render(),this.pagination.update()},activeIndexChange(){const e=this;(e.params.loop||void 0===e.snapIndex)&&e.pagination.update()},snapIndexChange(){const e=this;e.params.loop||e.pagination.update()},slidesLengthChange(){const e=this;e.params.loop&&(e.pagination.render(),e.pagination.update())},snapGridLengthChange(){const e=this;e.params.loop||(e.pagination.render(),e.pagination.update())},destroy(){this.pagination.destroy()},click(e){const t=this;if(t.params.pagination.el&&t.params.pagination.hideOnClick&&t.pagination.$el.length>0&&!$(e.target).hasClass(t.params.pagination.bulletClass)){!0===t.pagination.$el.hasClass(t.params.pagination.hiddenClass)?t.emit("paginationShow",t):t.emit("paginationHide",t),t.pagination.$el.toggleClass(t.params.pagination.hiddenClass)}}}};const Scrollbar={setTranslate(){const e=this;if(!e.params.scrollbar.el||!e.scrollbar.el)return;const{scrollbar:t,rtlTranslate:s,progress:i}=e,{dragSize:a,trackSize:n,$dragEl:r,$el:l}=t,o=e.params.scrollbar;let d=a,p=(n-a)*i;s?(p=-p,p>0?(d=a-p,p=0):-p+a>n&&(d=n+p)):p<0?(d=a+p,p=0):p+a>n&&(d=n-p),e.isHorizontal()?(r.transform(`translate3d(${p}px, 0, 0)`),r[0].style.width=d+"px"):(r.transform(`translate3d(0px, ${p}px, 0)`),r[0].style.height=d+"px"),o.hide&&(clearTimeout(e.scrollbar.timeout),l[0].style.opacity=1,e.scrollbar.timeout=setTimeout(()=>{l[0].style.opacity=0,l.transition(400)},1e3))},setTransition(e){this.params.scrollbar.el&&this.scrollbar.el&&this.scrollbar.$dragEl.transition(e)},updateSize(){const e=this;if(!e.params.scrollbar.el||!e.scrollbar.el)return;const{scrollbar:t}=e,{$dragEl:s,$el:i}=t;s[0].style.width="",s[0].style.height="";const a=e.isHorizontal()?i[0].offsetWidth:i[0].offsetHeight,n=e.size/e.virtualSize,r=n*(a/e.size);let l;l="auto"===e.params.scrollbar.dragSize?a*n:parseInt(e.params.scrollbar.dragSize,10),e.isHorizontal()?s[0].style.width=l+"px":s[0].style.height=l+"px",i[0].style.display=n>=1?"none":"",e.params.scrollbar.hide&&(i[0].style.opacity=0),Utils.extend(t,{trackSize:a,divider:n,moveDivider:r,dragSize:l}),t.$el[e.params.watchOverflow&&e.isLocked?"addClass":"removeClass"](e.params.scrollbar.lockClass)},getPointerPosition(e){return this.isHorizontal()?"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientX:e.clientX:"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientY:e.clientY},setDragPosition(e){const{scrollbar:t,rtlTranslate:s}=this,{$el:i,dragSize:a,trackSize:n,dragStartPos:r}=t;let l;l=(t.getPointerPosition(e)-i.offset()[this.isHorizontal()?"left":"top"]-(null!==r?r:a/2))/(n-a),l=Math.max(Math.min(l,1),0),s&&(l=1-l);const o=this.minTranslate()+(this.maxTranslate()-this.minTranslate())*l;this.updateProgress(o),this.setTranslate(o),this.updateActiveIndex(),this.updateSlidesClasses()},onDragStart(e){const t=this,s=t.params.scrollbar,{scrollbar:i,$wrapperEl:a}=t,{$el:n,$dragEl:r}=i;t.scrollbar.isTouched=!0,t.scrollbar.dragStartPos=e.target===r[0]||e.target===r?i.getPointerPosition(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),a.transition(100),r.transition(100),i.setDragPosition(e),clearTimeout(t.scrollbar.dragTimeout),n.transition(0),s.hide&&n.css("opacity",1),t.params.cssMode&&t.$wrapperEl.css("scroll-snap-type","none"),t.emit("scrollbarDragStart",e)},onDragMove(e){const{scrollbar:t,$wrapperEl:s}=this,{$el:i,$dragEl:a}=t;this.scrollbar.isTouched&&(e.preventDefault?e.preventDefault():e.returnValue=!1,t.setDragPosition(e),s.transition(0),i.transition(0),a.transition(0),this.emit("scrollbarDragMove",e))},onDragEnd(e){const t=this,s=t.params.scrollbar,{scrollbar:i,$wrapperEl:a}=t,{$el:n}=i;t.scrollbar.isTouched&&(t.scrollbar.isTouched=!1,t.params.cssMode&&(t.$wrapperEl.css("scroll-snap-type",""),a.transition("")),s.hide&&(clearTimeout(t.scrollbar.dragTimeout),t.scrollbar.dragTimeout=Utils.nextTick(()=>{n.css("opacity",0),n.transition(400)},1e3)),t.emit("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())},enableDraggable(){const e=this;if(!e.params.scrollbar.el)return;const{scrollbar:t,touchEventsTouch:s,touchEventsDesktop:i,params:a}=e,n=t.$el[0],r=!(!Support.passiveListener||!a.passiveListeners)&&{passive:!1,capture:!1},l=!(!Support.passiveListener||!a.passiveListeners)&&{passive:!0,capture:!1};Support.touch?(n.addEventListener(s.start,e.scrollbar.onDragStart,r),n.addEventListener(s.move,e.scrollbar.onDragMove,r),n.addEventListener(s.end,e.scrollbar.onDragEnd,l)):(n.addEventListener(i.start,e.scrollbar.onDragStart,r),doc.addEventListener(i.move,e.scrollbar.onDragMove,r),doc.addEventListener(i.end,e.scrollbar.onDragEnd,l))},disableDraggable(){const e=this;if(!e.params.scrollbar.el)return;const{scrollbar:t,touchEventsTouch:s,touchEventsDesktop:i,params:a}=e,n=t.$el[0],r=!(!Support.passiveListener||!a.passiveListeners)&&{passive:!1,capture:!1},l=!(!Support.passiveListener||!a.passiveListeners)&&{passive:!0,capture:!1};Support.touch?(n.removeEventListener(s.start,e.scrollbar.onDragStart,r),n.removeEventListener(s.move,e.scrollbar.onDragMove,r),n.removeEventListener(s.end,e.scrollbar.onDragEnd,l)):(n.removeEventListener(i.start,e.scrollbar.onDragStart,r),doc.removeEventListener(i.move,e.scrollbar.onDragMove,r),doc.removeEventListener(i.end,e.scrollbar.onDragEnd,l))},init(){const e=this;if(!e.params.scrollbar.el)return;const{scrollbar:t,$el:s}=e,i=e.params.scrollbar;let a=$(i.el);e.params.uniqueNavElements&&"string"==typeof i.el&&a.length>1&&1===s.find(i.el).length&&(a=s.find(i.el));let n=a.find("."+e.params.scrollbar.dragClass);0===n.length&&(n=$(`
      `),a.append(n)),Utils.extend(t,{$el:a,el:a[0],$dragEl:n,dragEl:n[0]}),i.draggable&&t.enableDraggable()},destroy(){this.scrollbar.disableDraggable()}};var Scrollbar$1={name:"scrollbar",params:{scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag"}},create(){Utils.extend(this,{scrollbar:{init:Scrollbar.init.bind(this),destroy:Scrollbar.destroy.bind(this),updateSize:Scrollbar.updateSize.bind(this),setTranslate:Scrollbar.setTranslate.bind(this),setTransition:Scrollbar.setTransition.bind(this),enableDraggable:Scrollbar.enableDraggable.bind(this),disableDraggable:Scrollbar.disableDraggable.bind(this),setDragPosition:Scrollbar.setDragPosition.bind(this),getPointerPosition:Scrollbar.getPointerPosition.bind(this),onDragStart:Scrollbar.onDragStart.bind(this),onDragMove:Scrollbar.onDragMove.bind(this),onDragEnd:Scrollbar.onDragEnd.bind(this),isTouched:!1,timeout:null,dragTimeout:null}})},on:{init(){this.scrollbar.init(),this.scrollbar.updateSize(),this.scrollbar.setTranslate()},update(){this.scrollbar.updateSize()},resize(){this.scrollbar.updateSize()},observerUpdate(){this.scrollbar.updateSize()},setTranslate(){this.scrollbar.setTranslate()},setTransition(e){this.scrollbar.setTransition(e)},destroy(){this.scrollbar.destroy()}}};const Parallax={setTransform(e,t){const{rtl:s}=this,i=$(e),a=s?-1:1,n=i.attr("data-swiper-parallax")||"0";let r=i.attr("data-swiper-parallax-x"),l=i.attr("data-swiper-parallax-y");const o=i.attr("data-swiper-parallax-scale"),d=i.attr("data-swiper-parallax-opacity");if(r||l?(r=r||"0",l=l||"0"):this.isHorizontal()?(r=n,l="0"):(l=n,r="0"),r=r.indexOf("%")>=0?parseInt(r,10)*t*a+"%":r*t*a+"px",l=l.indexOf("%")>=0?parseInt(l,10)*t+"%":l*t+"px",null!=d){const e=d-(d-1)*(1-Math.abs(t));i[0].style.opacity=e}if(null==o)i.transform(`translate3d(${r}, ${l}, 0px)`);else{const e=o-(o-1)*(1-Math.abs(t));i.transform(`translate3d(${r}, ${l}, 0px) scale(${e})`)}},setTranslate(){const e=this,{$el:t,slides:s,progress:i,snapGrid:a}=e;t.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((t,s)=>{e.parallax.setTransform(s,i)}),s.each((t,s)=>{let n=s.progress;e.params.slidesPerGroup>1&&"auto"!==e.params.slidesPerView&&(n+=Math.ceil(t/2)-i*(a.length-1)),n=Math.min(Math.max(n,-1),1),$(s).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((t,s)=>{e.parallax.setTransform(s,n)})})},setTransition(e=this.params.speed){const{$el:t}=this;t.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((t,s)=>{const i=$(s);let a=parseInt(i.attr("data-swiper-parallax-duration"),10)||e;0===e&&(a=0),i.transition(a)})}};var Parallax$1={name:"parallax",params:{parallax:{enabled:!1}},create(){Utils.extend(this,{parallax:{setTransform:Parallax.setTransform.bind(this),setTranslate:Parallax.setTranslate.bind(this),setTransition:Parallax.setTransition.bind(this)}})},on:{beforeInit(){this.params.parallax.enabled&&(this.params.watchSlidesProgress=!0,this.originalParams.watchSlidesProgress=!0)},init(){this.params.parallax.enabled&&this.parallax.setTranslate()},setTranslate(){this.params.parallax.enabled&&this.parallax.setTranslate()},setTransition(e){this.params.parallax.enabled&&this.parallax.setTransition(e)}}};const Zoom={getDistanceBetweenTouches(e){if(e.targetTouches.length<2)return 1;const t=e.targetTouches[0].pageX,s=e.targetTouches[0].pageY,i=e.targetTouches[1].pageX,a=e.targetTouches[1].pageY;return Math.sqrt((i-t)**2+(a-s)**2)},onGestureStart(e){const t=this,s=t.params.zoom,i=t.zoom,{gesture:a}=i;if(i.fakeGestureTouched=!1,i.fakeGestureMoved=!1,!Support.gestures){if("touchstart"!==e.type||"touchstart"===e.type&&e.targetTouches.length<2)return;i.fakeGestureTouched=!0,a.scaleStart=Zoom.getDistanceBetweenTouches(e)}a.$slideEl&&a.$slideEl.length||(a.$slideEl=$(e.target).closest("."+t.params.slideClass),0===a.$slideEl.length&&(a.$slideEl=t.slides.eq(t.activeIndex)),a.$imageEl=a.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),a.$imageWrapEl=a.$imageEl.parent("."+s.containerClass),a.maxRatio=a.$imageWrapEl.attr("data-swiper-zoom")||s.maxRatio,0!==a.$imageWrapEl.length)?(a.$imageEl&&a.$imageEl.transition(0),t.zoom.isScaling=!0):a.$imageEl=void 0},onGestureChange(e){const t=this.params.zoom,s=this.zoom,{gesture:i}=s;if(!Support.gestures){if("touchmove"!==e.type||"touchmove"===e.type&&e.targetTouches.length<2)return;s.fakeGestureMoved=!0,i.scaleMove=Zoom.getDistanceBetweenTouches(e)}i.$imageEl&&0!==i.$imageEl.length&&(s.scale=Support.gestures?e.scale*s.currentScale:i.scaleMove/i.scaleStart*s.currentScale,s.scale>i.maxRatio&&(s.scale=i.maxRatio-1+(s.scale-i.maxRatio+1)**.5),s.scalea.touchesStart.x))return void(a.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(a.minY)===Math.floor(a.startY)&&a.touchesCurrent.ya.touchesStart.y))return void(a.isTouched=!1)}e.preventDefault(),e.stopPropagation(),a.isMoved=!0,a.currentX=a.touchesCurrent.x-a.touchesStart.x+a.startX,a.currentY=a.touchesCurrent.y-a.touchesStart.y+a.startY,a.currentXa.maxX&&(a.currentX=a.maxX-1+(a.currentX-a.maxX+1)**.8),a.currentYa.maxY&&(a.currentY=a.maxY-1+(a.currentY-a.maxY+1)**.8),n.prevPositionX||(n.prevPositionX=a.touchesCurrent.x),n.prevPositionY||(n.prevPositionY=a.touchesCurrent.y),n.prevTime||(n.prevTime=Date.now()),n.x=(a.touchesCurrent.x-n.prevPositionX)/(Date.now()-n.prevTime)/2,n.y=(a.touchesCurrent.y-n.prevPositionY)/(Date.now()-n.prevTime)/2,Math.abs(a.touchesCurrent.x-n.prevPositionX)<2&&(n.x=0),Math.abs(a.touchesCurrent.y-n.prevPositionY)<2&&(n.y=0),n.prevPositionX=a.touchesCurrent.x,n.prevPositionY=a.touchesCurrent.y,n.prevTime=Date.now(),i.$imageWrapEl.transform(`translate3d(${a.currentX}px, ${a.currentY}px,0)`)}},onTouchEnd(){const e=this.zoom,{gesture:t,image:s,velocity:i}=e;if(!t.$imageEl||0===t.$imageEl.length)return;if(!s.isTouched||!s.isMoved)return s.isTouched=!1,void(s.isMoved=!1);s.isTouched=!1,s.isMoved=!1;let a=300,n=300;const r=i.x*a,l=s.currentX+r,o=i.y*n,d=s.currentY+o;0!==i.x&&(a=Math.abs((l-s.currentX)/i.x)),0!==i.y&&(n=Math.abs((d-s.currentY)/i.y));const p=Math.max(a,n);s.currentX=l,s.currentY=d;const c=s.width*e.scale,h=s.height*e.scale;s.minX=Math.min(t.slideWidth/2-c/2,0),s.maxX=-s.minX,s.minY=Math.min(t.slideHeight/2-h/2,0),s.maxY=-s.minY,s.currentX=Math.max(Math.min(s.currentX,s.maxX),s.minX),s.currentY=Math.max(Math.min(s.currentY,s.maxY),s.minY),t.$imageWrapEl.transition(p).transform(`translate3d(${s.currentX}px, ${s.currentY}px,0)`)},onTransitionEnd(){const e=this.zoom,{gesture:t}=e;t.$slideEl&&this.previousIndex!==this.activeIndex&&(t.$imageEl&&t.$imageEl.transform("translate3d(0,0,0) scale(1)"),t.$imageWrapEl&&t.$imageWrapEl.transform("translate3d(0,0,0)"),e.scale=1,e.currentScale=1,t.$slideEl=void 0,t.$imageEl=void 0,t.$imageWrapEl=void 0)},toggle(e){const t=this.zoom;t.scale&&1!==t.scale?t.out():t.in(e)},in(e){const t=this,s=t.zoom,i=t.params.zoom,{gesture:a,image:n}=s;if(a.$slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?a.$slideEl=t.$wrapperEl.children("."+t.params.slideActiveClass):a.$slideEl=t.slides.eq(t.activeIndex),a.$imageEl=a.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),a.$imageWrapEl=a.$imageEl.parent("."+i.containerClass)),!a.$imageEl||0===a.$imageEl.length)return;let r,l,o,d,p,c,h,u,m,f,g,v,w,b,y,x,S,T;a.$slideEl.addClass(""+i.zoomedSlideClass),void 0===n.touchesStart.x&&e?(r="touchend"===e.type?e.changedTouches[0].pageX:e.pageX,l="touchend"===e.type?e.changedTouches[0].pageY:e.pageY):(r=n.touchesStart.x,l=n.touchesStart.y),s.scale=a.$imageWrapEl.attr("data-swiper-zoom")||i.maxRatio,s.currentScale=a.$imageWrapEl.attr("data-swiper-zoom")||i.maxRatio,e?(S=a.$slideEl[0].offsetWidth,T=a.$slideEl[0].offsetHeight,o=a.$slideEl.offset().left,d=a.$slideEl.offset().top,p=o+S/2-r,c=d+T/2-l,m=a.$imageEl[0].offsetWidth,f=a.$imageEl[0].offsetHeight,g=m*s.scale,v=f*s.scale,w=Math.min(S/2-g/2,0),b=Math.min(T/2-v/2,0),y=-w,x=-b,h=p*s.scale,u=c*s.scale,hy&&(h=y),ux&&(u=x)):(h=0,u=0),a.$imageWrapEl.transition(300).transform(`translate3d(${h}px, ${u}px,0)`),a.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${s.scale})`)},out(){const e=this,t=e.zoom,s=e.params.zoom,{gesture:i}=t;i.$slideEl||(e.params.virtual&&e.params.virtual.enabled&&e.virtual?i.$slideEl=e.$wrapperEl.children("."+e.params.slideActiveClass):i.$slideEl=e.slides.eq(e.activeIndex),i.$imageEl=i.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),i.$imageWrapEl=i.$imageEl.parent("."+s.containerClass)),i.$imageEl&&0!==i.$imageEl.length&&(t.scale=1,t.currentScale=1,i.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),i.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"),i.$slideEl.removeClass(""+s.zoomedSlideClass),i.$slideEl=void 0)},enable(){const e=this,t=e.zoom;if(t.enabled)return;t.enabled=!0;const s=!("touchstart"!==e.touchEvents.start||!Support.passiveListener||!e.params.passiveListeners)&&{passive:!0,capture:!1},i=!Support.passiveListener||{passive:!1,capture:!0},a="."+e.params.slideClass;Support.gestures?(e.$wrapperEl.on("gesturestart",a,t.onGestureStart,s),e.$wrapperEl.on("gesturechange",a,t.onGestureChange,s),e.$wrapperEl.on("gestureend",a,t.onGestureEnd,s)):"touchstart"===e.touchEvents.start&&(e.$wrapperEl.on(e.touchEvents.start,a,t.onGestureStart,s),e.$wrapperEl.on(e.touchEvents.move,a,t.onGestureChange,i),e.$wrapperEl.on(e.touchEvents.end,a,t.onGestureEnd,s),e.touchEvents.cancel&&e.$wrapperEl.on(e.touchEvents.cancel,a,t.onGestureEnd,s)),e.$wrapperEl.on(e.touchEvents.move,"."+e.params.zoom.containerClass,t.onTouchMove,i)},disable(){const e=this,t=e.zoom;if(!t.enabled)return;e.zoom.enabled=!1;const s=!("touchstart"!==e.touchEvents.start||!Support.passiveListener||!e.params.passiveListeners)&&{passive:!0,capture:!1},i=!Support.passiveListener||{passive:!1,capture:!0},a="."+e.params.slideClass;Support.gestures?(e.$wrapperEl.off("gesturestart",a,t.onGestureStart,s),e.$wrapperEl.off("gesturechange",a,t.onGestureChange,s),e.$wrapperEl.off("gestureend",a,t.onGestureEnd,s)):"touchstart"===e.touchEvents.start&&(e.$wrapperEl.off(e.touchEvents.start,a,t.onGestureStart,s),e.$wrapperEl.off(e.touchEvents.move,a,t.onGestureChange,i),e.$wrapperEl.off(e.touchEvents.end,a,t.onGestureEnd,s),e.touchEvents.cancel&&e.$wrapperEl.off(e.touchEvents.cancel,a,t.onGestureEnd,s)),e.$wrapperEl.off(e.touchEvents.move,"."+e.params.zoom.containerClass,t.onTouchMove,i)}};var Zoom$1={name:"zoom",params:{zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}},create(){const e=this,t={enabled:!1,scale:1,currentScale:1,isScaling:!1,gesture:{$slideEl:void 0,slideWidth:void 0,slideHeight:void 0,$imageEl:void 0,$imageWrapEl:void 0,maxRatio:3},image:{isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},velocity:{x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0}};"onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out".split(" ").forEach(s=>{t[s]=Zoom[s].bind(e)}),Utils.extend(e,{zoom:t});let s=1;Object.defineProperty(e.zoom,"scale",{get:()=>s,set(t){if(s!==t){const s=e.zoom.gesture.$imageEl?e.zoom.gesture.$imageEl[0]:void 0,i=e.zoom.gesture.$slideEl?e.zoom.gesture.$slideEl[0]:void 0;e.emit("zoomChange",t,s,i)}s=t}})},on:{init(){const e=this;e.params.zoom.enabled&&e.zoom.enable()},destroy(){this.zoom.disable()},touchStart(e){this.zoom.enabled&&this.zoom.onTouchStart(e)},touchEnd(e){this.zoom.enabled&&this.zoom.onTouchEnd(e)},doubleTap(e){const t=this;t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&t.zoom.toggle(e)},transitionEnd(){const e=this;e.zoom.enabled&&e.params.zoom.enabled&&e.zoom.onTransitionEnd()},slideChange(){const e=this;e.zoom.enabled&&e.params.zoom.enabled&&e.params.cssMode&&e.zoom.onTransitionEnd()}}};const Lazy={loadInSlide(e,t=!0){const s=this,i=s.params.lazy;if(void 0===e)return;if(0===s.slides.length)return;const a=s.virtual&&s.params.virtual.enabled?s.$wrapperEl.children(`.${s.params.slideClass}[data-swiper-slide-index="${e}"]`):s.slides.eq(e);let n=a.find(`.${i.elementClass}:not(.${i.loadedClass}):not(.${i.loadingClass})`);!a.hasClass(i.elementClass)||a.hasClass(i.loadedClass)||a.hasClass(i.loadingClass)||(n=n.add(a[0])),0!==n.length&&n.each((e,n)=>{const r=$(n);r.addClass(i.loadingClass);const l=r.attr("data-background"),o=r.attr("data-src"),d=r.attr("data-srcset"),p=r.attr("data-sizes");s.loadImage(r[0],o||l,d,p,!1,()=>{if(null!=s&&s&&(!s||s.params)&&!s.destroyed){if(l?(r.css("background-image",`url("${l}")`),r.removeAttr("data-background")):(d&&(r.attr("srcset",d),r.removeAttr("data-srcset")),p&&(r.attr("sizes",p),r.removeAttr("data-sizes")),o&&(r.attr("src",o),r.removeAttr("data-src"))),r.addClass(i.loadedClass).removeClass(i.loadingClass),a.find("."+i.preloaderClass).remove(),s.params.loop&&t){const e=a.attr("data-swiper-slide-index");if(a.hasClass(s.params.slideDuplicateClass)){const t=s.$wrapperEl.children(`[data-swiper-slide-index="${e}"]:not(.${s.params.slideDuplicateClass})`);s.lazy.loadInSlide(t.index(),!1)}else{const t=s.$wrapperEl.children(`.${s.params.slideDuplicateClass}[data-swiper-slide-index="${e}"]`);s.lazy.loadInSlide(t.index(),!1)}}s.emit("lazyImageReady",a[0],r[0]),s.params.autoHeight&&s.updateAutoHeight()}}),s.emit("lazyImageLoad",a[0],r[0])})},load(){const e=this,{$wrapperEl:t,params:s,slides:i,activeIndex:a}=e,n=e.virtual&&s.virtual.enabled,r=s.lazy;let l=s.slidesPerView;function o(e){if(n){if(t.children(`.${s.slideClass}[data-swiper-slide-index="${e}"]`).length)return!0}else if(i[e])return!0;return!1}function d(e){return n?$(e).attr("data-swiper-slide-index"):$(e).index()}if("auto"===l&&(l=0),e.lazy.initialImageLoaded||(e.lazy.initialImageLoaded=!0),e.params.watchSlidesVisibility)t.children("."+s.slideVisibleClass).each((t,s)=>{const i=n?$(s).attr("data-swiper-slide-index"):$(s).index();e.lazy.loadInSlide(i)});else if(l>1)for(let t=a;t1||r.loadPrevNextAmount&&r.loadPrevNextAmount>1){const t=r.loadPrevNextAmount,s=l,n=Math.min(a+s+Math.max(t,s),i.length),d=Math.max(a-Math.max(s,t),0);for(let t=a+l;t0&&e.lazy.loadInSlide(d(i));const a=t.children("."+s.slidePrevClass);a.length>0&&e.lazy.loadInSlide(d(a))}}};var Lazy$1={name:"lazy",params:{lazy:{enabled:!1,loadPrevNext:!1,loadPrevNextAmount:1,loadOnTransitionStart:!1,elementClass:"swiper-lazy",loadingClass:"swiper-lazy-loading",loadedClass:"swiper-lazy-loaded",preloaderClass:"swiper-lazy-preloader"}},create(){Utils.extend(this,{lazy:{initialImageLoaded:!1,load:Lazy.load.bind(this),loadInSlide:Lazy.loadInSlide.bind(this)}})},on:{beforeInit(){const e=this;e.params.lazy.enabled&&e.params.preloadImages&&(e.params.preloadImages=!1)},init(){const e=this;e.params.lazy.enabled&&!e.params.loop&&0===e.params.initialSlide&&e.lazy.load()},scroll(){const e=this;e.params.freeMode&&!e.params.freeModeSticky&&e.lazy.load()},resize(){const e=this;e.params.lazy.enabled&&e.lazy.load()},scrollbarDragMove(){const e=this;e.params.lazy.enabled&&e.lazy.load()},transitionStart(){const e=this;e.params.lazy.enabled&&(e.params.lazy.loadOnTransitionStart||!e.params.lazy.loadOnTransitionStart&&!e.lazy.initialImageLoaded)&&e.lazy.load()},transitionEnd(){const e=this;e.params.lazy.enabled&&!e.params.lazy.loadOnTransitionStart&&e.lazy.load()},slideChange(){const e=this;e.params.lazy.enabled&&e.params.cssMode&&e.lazy.load()}}};const Controller={LinearSpline:function(e,t){const s=function(){let e,t,s;return(i,a)=>{for(t=-1,e=i.length;e-t>1;)s=e+t>>1,i[s]<=a?t=s:e=s;return e}}();let i,a;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(a=s(this.x,e),i=a-1,(e-this.x[i])*(this.y[a]-this.y[i])/(this.x[a]-this.x[i])+this.y[i]):0},this},getInterpolateFunction(e){const t=this;t.controller.spline||(t.controller.spline=t.params.loop?new Controller.LinearSpline(t.slidesGrid,e.slidesGrid):new Controller.LinearSpline(t.snapGrid,e.snapGrid))},setTranslate(e,t){const s=this,i=s.controller.control;let a,n;function r(e){const t=s.rtlTranslate?-s.translate:s.translate;"slide"===s.params.controller.by&&(s.controller.getInterpolateFunction(e),n=-s.controller.spline.interpolate(-t)),n&&"container"!==s.params.controller.by||(a=(e.maxTranslate()-e.minTranslate())/(s.maxTranslate()-s.minTranslate()),n=(t-s.minTranslate())*a+e.minTranslate()),s.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,s),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(i))for(let e=0;e{t.updateAutoHeight()}),t.$wrapperEl.transitionEnd(()=>{i&&(t.params.loop&&"slide"===s.params.controller.by&&t.loopFix(),t.transitionEnd())}))}if(Array.isArray(i))for(a=0;a(e.attr("tabIndex","0"),e),addElRole:(e,t)=>(e.attr("role",t),e),addElLabel:(e,t)=>(e.attr("aria-label",t),e),disableEl:e=>(e.attr("aria-disabled",!0),e),enableEl:e=>(e.attr("aria-disabled",!1),e),onEnterKey(e){const t=this,s=t.params.a11y;if(13!==e.keyCode)return;const i=$(e.target);t.navigation&&t.navigation.$nextEl&&i.is(t.navigation.$nextEl)&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?t.a11y.notify(s.lastSlideMessage):t.a11y.notify(s.nextSlideMessage)),t.navigation&&t.navigation.$prevEl&&i.is(t.navigation.$prevEl)&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?t.a11y.notify(s.firstSlideMessage):t.a11y.notify(s.prevSlideMessage)),t.pagination&&i.is("."+t.params.pagination.bulletClass)&&i[0].click()},notify(e){const t=this.a11y.liveRegion;0!==t.length&&(t.html(""),t.html(e))},updateNavigation(){const e=this;if(e.params.loop||!e.navigation)return;const{$nextEl:t,$prevEl:s}=e.navigation;s&&s.length>0&&(e.isBeginning?e.a11y.disableEl(s):e.a11y.enableEl(s)),t&&t.length>0&&(e.isEnd?e.a11y.disableEl(t):e.a11y.enableEl(t))},updatePagination(){const e=this,t=e.params.a11y;e.pagination&&e.params.pagination.clickable&&e.pagination.bullets&&e.pagination.bullets.length&&e.pagination.bullets.each((s,i)=>{const a=$(i);e.a11y.makeElFocusable(a),e.a11y.addElRole(a,"button"),e.a11y.addElLabel(a,t.paginationBulletMessage.replace(/\{\{index\}\}/,a.index()+1))})},init(){const e=this;e.$el.append(e.a11y.liveRegion);const t=e.params.a11y;let s,i;e.navigation&&e.navigation.$nextEl&&(s=e.navigation.$nextEl),e.navigation&&e.navigation.$prevEl&&(i=e.navigation.$prevEl),s&&(e.a11y.makeElFocusable(s),e.a11y.addElRole(s,"button"),e.a11y.addElLabel(s,t.nextSlideMessage),s.on("keydown",e.a11y.onEnterKey)),i&&(e.a11y.makeElFocusable(i),e.a11y.addElRole(i,"button"),e.a11y.addElLabel(i,t.prevSlideMessage),i.on("keydown",e.a11y.onEnterKey)),e.pagination&&e.params.pagination.clickable&&e.pagination.bullets&&e.pagination.bullets.length&&e.pagination.$el.on("keydown","."+e.params.pagination.bulletClass,e.a11y.onEnterKey)},destroy(){const e=this;let t,s;e.a11y.liveRegion&&e.a11y.liveRegion.length>0&&e.a11y.liveRegion.remove(),e.navigation&&e.navigation.$nextEl&&(t=e.navigation.$nextEl),e.navigation&&e.navigation.$prevEl&&(s=e.navigation.$prevEl),t&&t.off("keydown",e.a11y.onEnterKey),s&&s.off("keydown",e.a11y.onEnterKey),e.pagination&&e.params.pagination.clickable&&e.pagination.bullets&&e.pagination.bullets.length&&e.pagination.$el.off("keydown","."+e.params.pagination.bulletClass,e.a11y.onEnterKey)}};var A11y={name:"a11y",params:{a11y:{enabled:!0,notificationClass:"swiper-notification",prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}"}},create(){const e=this;Utils.extend(e,{a11y:{liveRegion:$(``)}}),Object.keys(a11y).forEach(t=>{e.a11y[t]=a11y[t].bind(e)})},on:{init(){this.params.a11y.enabled&&(this.a11y.init(),this.a11y.updateNavigation())},toEdge(){this.params.a11y.enabled&&this.a11y.updateNavigation()},fromEdge(){this.params.a11y.enabled&&this.a11y.updateNavigation()},paginationUpdate(){this.params.a11y.enabled&&this.a11y.updatePagination()},destroy(){this.params.a11y.enabled&&this.a11y.destroy()}}};const History={init(){const e=this;if(!e.params.history)return;if(!win.history||!win.history.pushState)return e.params.history.enabled=!1,void(e.params.hashNavigation.enabled=!0);const t=e.history;t.initialized=!0,t.paths=History.getPathValues(),(t.paths.key||t.paths.value)&&(t.scrollToSlide(0,t.paths.value,e.params.runCallbacksOnInit),e.params.history.replaceState||win.addEventListener("popstate",e.history.setHistoryPopState))},destroy(){const e=this;e.params.history.replaceState||win.removeEventListener("popstate",e.history.setHistoryPopState)},setHistoryPopState(){this.history.paths=History.getPathValues(),this.history.scrollToSlide(this.params.speed,this.history.paths.value,!1)},getPathValues(){const e=win.location.pathname.slice(1).split("/").filter(e=>""!==e),t=e.length;return{key:e[t-2],value:e[t-1]}},setHistory(e,t){if(!this.history.initialized||!this.params.history.enabled)return;const s=this.slides.eq(t);let i=History.slugify(s.attr("data-history"));win.location.pathname.includes(e)||(i=`${e}/${i}`);const a=win.history.state;a&&a.value===i||(this.params.history.replaceState?win.history.replaceState({value:i},null,i):win.history.pushState({value:i},null,i))},slugify:e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),scrollToSlide(e,t,s){const i=this;if(t)for(let a=0,n=i.slides.length;a{e.params.autoplay.reverseDirection?e.params.loop?(e.loopFix(),e.slidePrev(e.params.speed,!0,!0),e.emit("autoplay")):e.isBeginning?e.params.autoplay.stopOnLastSlide?e.autoplay.stop():(e.slideTo(e.slides.length-1,e.params.speed,!0,!0),e.emit("autoplay")):(e.slidePrev(e.params.speed,!0,!0),e.emit("autoplay")):e.params.loop?(e.loopFix(),e.slideNext(e.params.speed,!0,!0),e.emit("autoplay")):e.isEnd?e.params.autoplay.stopOnLastSlide?e.autoplay.stop():(e.slideTo(0,e.params.speed,!0,!0),e.emit("autoplay")):(e.slideNext(e.params.speed,!0,!0),e.emit("autoplay")),e.params.cssMode&&e.autoplay.running&&e.autoplay.run()},s)},start(){return void 0===this.autoplay.timeout&&(!this.autoplay.running&&(this.autoplay.running=!0,this.emit("autoplayStart"),this.autoplay.run(),!0))},stop(){const e=this;return!!e.autoplay.running&&(void 0!==e.autoplay.timeout&&(e.autoplay.timeout&&(clearTimeout(e.autoplay.timeout),e.autoplay.timeout=void 0),e.autoplay.running=!1,e.emit("autoplayStop"),!0))},pause(e){const t=this;t.autoplay.running&&(t.autoplay.paused||(t.autoplay.timeout&&clearTimeout(t.autoplay.timeout),t.autoplay.paused=!0,0!==e&&t.params.autoplay.waitForTransition?(t.$wrapperEl[0].addEventListener("transitionend",t.autoplay.onTransitionEnd),t.$wrapperEl[0].addEventListener("webkitTransitionEnd",t.autoplay.onTransitionEnd)):(t.autoplay.paused=!1,t.autoplay.run())))}};var Autoplay$1={name:"autoplay",params:{autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1}},create(){const e=this;Utils.extend(e,{autoplay:{running:!1,paused:!1,run:Autoplay.run.bind(e),start:Autoplay.start.bind(e),stop:Autoplay.stop.bind(e),pause:Autoplay.pause.bind(e),onVisibilityChange(){"hidden"===document.visibilityState&&e.autoplay.running&&e.autoplay.pause(),"visible"===document.visibilityState&&e.autoplay.paused&&(e.autoplay.run(),e.autoplay.paused=!1)},onTransitionEnd(t){e&&!e.destroyed&&e.$wrapperEl&&t.target===this&&(e.$wrapperEl[0].removeEventListener("transitionend",e.autoplay.onTransitionEnd),e.$wrapperEl[0].removeEventListener("webkitTransitionEnd",e.autoplay.onTransitionEnd),e.autoplay.paused=!1,e.autoplay.running?e.autoplay.run():e.autoplay.stop())}}})},on:{init(){const e=this;e.params.autoplay.enabled&&(e.autoplay.start(),document.addEventListener("visibilitychange",e.autoplay.onVisibilityChange))},beforeTransitionStart(e,t){const s=this;s.autoplay.running&&(t||!s.params.autoplay.disableOnInteraction?s.autoplay.pause(e):s.autoplay.stop())},sliderFirstMove(){const e=this;e.autoplay.running&&(e.params.autoplay.disableOnInteraction?e.autoplay.stop():e.autoplay.pause())},touchEnd(){const e=this;e.params.cssMode&&e.autoplay.paused&&!e.params.autoplay.disableOnInteraction&&e.autoplay.run()},destroy(){const e=this;e.autoplay.running&&e.autoplay.stop(),document.removeEventListener("visibilitychange",e.autoplay.onVisibilityChange)}}};const Fade={setTranslate(){const e=this,{slides:t}=e;for(let s=0;s{if(e)return;if(!t||t.destroyed)return;e=!0,t.animating=!1;const s=["webkitTransitionEnd","transitionend"];for(let e=0;e'),t.append(p)),p.css({height:i+"px"})):(p=e.find(".swiper-cube-shadow"),0===p.length&&(p=$('
      '),e.append(p))));for(let e=0;e-1&&(c=90*i+90*h,n&&(c=90*-i-90*h)),t.transform(g),l.slideShadows){let e=o?t.find(".swiper-slide-shadow-left"):t.find(".swiper-slide-shadow-top"),s=o?t.find(".swiper-slide-shadow-right"):t.find(".swiper-slide-shadow-bottom");0===e.length&&(e=$(`
      `),t.append(e)),0===s.length&&(s=$(`
      `),t.append(s)),e.length&&(e[0].style.opacity=Math.max(-h,0)),s.length&&(s[0].style.opacity=Math.max(h,0))}}if(t.css({"-webkit-transform-origin":`50% 50% -${r/2}px`,"-moz-transform-origin":`50% 50% -${r/2}px`,"-ms-transform-origin":`50% 50% -${r/2}px`,"transform-origin":`50% 50% -${r/2}px`}),l.shadow)if(o)p.transform(`translate3d(0px, ${i/2+l.shadowOffset}px, ${-i/2}px) rotateX(90deg) rotateZ(0deg) scale(${l.shadowScale})`);else{const e=Math.abs(c)-90*Math.floor(Math.abs(c)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=l.shadowScale,i=l.shadowScale/t,n=l.shadowOffset;p.transform(`scale3d(${s}, 1, ${i}) translate3d(0px, ${a/2+n}px, ${-a/2/i}px) rotateX(-90deg)`)}const h=Browser.isSafari||Browser.isUiWebView?-r/2:0;t.transform(`translate3d(0px,0,${h}px) rotateX(${this.isHorizontal()?0:c}deg) rotateY(${this.isHorizontal()?-c:0}deg)`)},setTransition(e){const{$el:t,slides:s}=this;s.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),this.params.cubeEffect.shadow&&!this.isHorizontal()&&t.find(".swiper-cube-shadow").transition(e)}};var EffectCube={name:"effect-cube",params:{cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}},create(){Utils.extend(this,{cubeEffect:{setTranslate:Cube.setTranslate.bind(this),setTransition:Cube.setTransition.bind(this)}})},on:{beforeInit(){if("cube"!==this.params.effect)return;this.classNames.push(this.params.containerModifierClass+"cube"),this.classNames.push(this.params.containerModifierClass+"3d");const e={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0};Utils.extend(this.params,e),Utils.extend(this.originalParams,e)},setTranslate(){"cube"===this.params.effect&&this.cubeEffect.setTranslate()},setTransition(e){"cube"===this.params.effect&&this.cubeEffect.setTransition(e)}}};const Flip={setTranslate(){const e=this,{slides:t,rtlTranslate:s}=e;for(let i=0;i`),a.append(t)),0===s.length&&(s=$(`
      `),a.append(s)),t.length&&(t[0].style.opacity=Math.max(-n,0)),s.length&&(s[0].style.opacity=Math.max(n,0))}a.transform(`translate3d(${o}px, ${d}px, 0px) rotateX(${l}deg) rotateY(${r}deg)`)}},setTransition(e){const t=this,{slides:s,activeIndex:i,$wrapperEl:a}=t;if(s.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),t.params.virtualTranslate&&0!==e){let e=!1;s.eq(i).transitionEnd((function(){if(e)return;if(!t||t.destroyed)return;e=!0,t.animating=!1;const s=["webkitTransitionEnd","transitionend"];for(let e=0;e`),t.append(e)),0===s.length&&(s=$(`
      `),t.append(s)),e.length&&(e[0].style.opacity=l>0?l:0),s.length&&(s[0].style.opacity=-l>0?-l:0)}}if(Support.pointerEvents||Support.prefixedPointerEvents){i[0].style.perspectiveOrigin=o+"px 50%"}},setTransition(e){this.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)}};var EffectCoverflow={name:"effect-coverflow",params:{coverflowEffect:{rotate:50,stretch:0,depth:100,modifier:1,slideShadows:!0}},create(){Utils.extend(this,{coverflowEffect:{setTranslate:Coverflow.setTranslate.bind(this),setTransition:Coverflow.setTransition.bind(this)}})},on:{beforeInit(){"coverflow"===this.params.effect&&(this.classNames.push(this.params.containerModifierClass+"coverflow"),this.classNames.push(this.params.containerModifierClass+"3d"),this.params.watchSlidesProgress=!0,this.originalParams.watchSlidesProgress=!0)},setTranslate(){"coverflow"===this.params.effect&&this.coverflowEffect.setTranslate()},setTransition(e){"coverflow"===this.params.effect&&this.coverflowEffect.setTransition(e)}}};const Thumbs={init(){const e=this,{thumbs:t}=e.params,s=e.constructor;t.swiper instanceof s?(e.thumbs.swiper=t.swiper,Utils.extend(e.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Utils.extend(e.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1})):Utils.isObject(t.swiper)&&(e.thumbs.swiper=new s(Utils.extend({},t.swiper,{watchSlidesVisibility:!0,watchSlidesProgress:!0,slideToClickedSlide:!1})),e.thumbs.swiperCreated=!0),e.thumbs.swiper.$el.addClass(e.params.thumbs.thumbsContainerClass),e.thumbs.swiper.on("tap",e.thumbs.onThumbClick)},onThumbClick(){const e=this,t=e.thumbs.swiper;if(!t)return;const s=t.clickedIndex,i=t.clickedSlide;if(i&&$(i).hasClass(e.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let a;if(a=t.params.loop?parseInt($(t.clickedSlide).attr("data-swiper-slide-index"),10):s,e.params.loop){let t=e.activeIndex;e.slides.eq(t).hasClass(e.params.slideDuplicateClass)&&(e.loopFix(),e._clientLeft=e.$wrapperEl[0].clientLeft,t=e.activeIndex);const s=e.slides.eq(t).prevAll(`[data-swiper-slide-index="${a}"]`).eq(0).index(),i=e.slides.eq(t).nextAll(`[data-swiper-slide-index="${a}"]`).eq(0).index();a=void 0===s?i:void 0===i?s:i-tt.previousIndex?"next":"prev"}else r=t.realIndex,l=r>t.previousIndex?"next":"prev";n&&(r+="next"===l?a:-1*a),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(r)<0&&(s.params.centeredSlides?r=r>o?r-Math.floor(i/2)+1:r+Math.floor(i/2)-1:r>o&&(r=r-i+1),s.slideTo(r,e?0:void 0))}let r=1;const l=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(r=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(r=1),r=Math.floor(r),s.slides.removeClass(l),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e { + $.fn[methodName] = $.fn[methodName] || Methods[methodName]; +}); + +const Utils = { + deleteProps(obj) { + const object = obj; + Object.keys(object).forEach((key) => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + }, + nextTick(callback, delay = 0) { + return setTimeout(callback, delay); + }, + now() { + return Date.now(); + }, + getTranslate(el, axis = 'x') { + let matrix; + let curTransform; + let transformMatrix; + + const curStyle = window.getComputedStyle(el, null); + + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + }, + parseUrlQuery(url) { + const query = {}; + let urlToParse = url || window.location.href; + let i; + let params; + let param; + let length; + if (typeof urlToParse === 'string' && urlToParse.length) { + urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : ''; + params = urlToParse.split('&').filter((paramsPart) => paramsPart !== ''); + length = params.length; + + for (i = 0; i < length; i += 1) { + param = params[i].replace(/#\S+/g, '').split('='); + query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || ''; + } + } + return query; + }, + isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object; + }, + extend(...args) { + const to = Object(args[0]); + for (let i = 1; i < args.length; i += 1) { + const nextSource = args[i]; + if (nextSource !== undefined && nextSource !== null) { + const keysArray = Object.keys(Object(nextSource)); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) { + Utils.extend(to[nextKey], nextSource[nextKey]); + } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) { + to[nextKey] = {}; + Utils.extend(to[nextKey], nextSource[nextKey]); + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + }, +}; + +const Support = (function Support() { + return { + touch: (window.Modernizr && window.Modernizr.touch === true) || (function checkTouch() { + return !!((window.navigator.maxTouchPoints > 0) || ('ontouchstart' in window) || (window.DocumentTouch && document$1 instanceof window.DocumentTouch)); + }()), + + pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints > 0, + + observer: (function checkObserver() { + return ('MutationObserver' in window || 'WebkitMutationObserver' in window); + }()), + + passiveListener: (function checkPassiveListener() { + let supportsPassive = false; + try { + const opts = Object.defineProperty({}, 'passive', { + // eslint-disable-next-line + get() { + supportsPassive = true; + }, + }); + window.addEventListener('testPassiveListener', null, opts); + } catch (e) { + // No support + } + return supportsPassive; + }()), + + gestures: (function checkGestures() { + return 'ongesturestart' in window; + }()), + }; +}()); + +class SwiperClass { + constructor(params = {}) { + const self = this; + self.params = params; + + // Events + self.eventsListeners = {}; + + if (self.params && self.params.on) { + Object.keys(self.params.on).forEach((eventName) => { + self.on(eventName, self.params.on[eventName]); + }); + } + } + + on(events, handler, priority) { + const self = this; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach((event) => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + } + + once(events, handler, priority) { + const self = this; + if (typeof handler !== 'function') return self; + function onceHandler(...args) { + self.off(events, onceHandler); + if (onceHandler.f7proxy) { + delete onceHandler.f7proxy; + } + handler.apply(self, args); + } + onceHandler.f7proxy = handler; + return self.on(events, onceHandler, priority); + } + + off(events, handler) { + const self = this; + if (!self.eventsListeners) return self; + events.split(' ').forEach((event) => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event] && self.eventsListeners[event].length) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + } + + emit(...args) { + const self = this; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach((event) => { + if (self.eventsListeners && self.eventsListeners[event]) { + const handlers = []; + self.eventsListeners[event].forEach((eventHandler) => { + handlers.push(eventHandler); + }); + handlers.forEach((eventHandler) => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + + useModulesParams(instanceParams) { + const instance = this; + if (!instance.modules) return; + Object.keys(instance.modules).forEach((moduleName) => { + const module = instance.modules[moduleName]; + // Extend params + if (module.params) { + Utils.extend(instanceParams, module.params); + } + }); + } + + useModules(modulesParams = {}) { + const instance = this; + if (!instance.modules) return; + Object.keys(instance.modules).forEach((moduleName) => { + const module = instance.modules[moduleName]; + const moduleParams = modulesParams[moduleName] || {}; + // Extend instance methods and props + if (module.instance) { + Object.keys(module.instance).forEach((modulePropName) => { + const moduleProp = module.instance[modulePropName]; + if (typeof moduleProp === 'function') { + instance[modulePropName] = moduleProp.bind(instance); + } else { + instance[modulePropName] = moduleProp; + } + }); + } + // Add event listeners + if (module.on && instance.on) { + Object.keys(module.on).forEach((moduleEventName) => { + instance.on(moduleEventName, module.on[moduleEventName]); + }); + } + + // Module create callback + if (module.create) { + module.create.bind(instance)(moduleParams); + } + }); + } + + static set components(components) { + const Class = this; + if (!Class.use) return; + Class.use(components); + } + + static installModule(module, ...params) { + const Class = this; + if (!Class.prototype.modules) Class.prototype.modules = {}; + const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`); + Class.prototype.modules[name] = module; + // Prototype + if (module.proto) { + Object.keys(module.proto).forEach((key) => { + Class.prototype[key] = module.proto[key]; + }); + } + // Class + if (module.static) { + Object.keys(module.static).forEach((key) => { + Class[key] = module.static[key]; + }); + } + // Callback + if (module.install) { + module.install.apply(Class, params); + } + return Class; + } + + static use(module, ...params) { + const Class = this; + if (Array.isArray(module)) { + module.forEach((m) => Class.installModule(m)); + return Class; + } + return Class.installModule(module, ...params); + } +} + +function updateSize () { + const swiper = this; + let width; + let height; + const $el = swiper.$el; + if (typeof swiper.params.width !== 'undefined') { + width = swiper.params.width; + } else { + width = $el[0].clientWidth; + } + if (typeof swiper.params.height !== 'undefined') { + height = swiper.params.height; + } else { + height = $el[0].clientHeight; + } + if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) { + return; + } + + // Subtract paddings + width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10); + height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10); + + Utils.extend(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height, + }); +} + +function updateSlides () { + const swiper = this; + const params = swiper.params; + + const { + $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL, + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = $wrapperEl.children(`.${swiper.params.slideClass}`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + + function slidesForMargin(slideIndex) { + if (!params.cssMode) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + } + + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.snapGrid.length; + + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize; + } + + swiper.virtualSize = -spaceBetween; + + // reset margins + if (rtl) slides.css({ marginLeft: '', marginTop: '' }); + else slides.css({ marginRight: '', marginBottom: '' }); + + let slidesNumberEvenToRows; + if (params.slidesPerColumn > 1) { + if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn; + } + if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn); + } + } + + // Calc slides + let slideSize; + const slidesPerColumn = params.slidesPerColumn; + const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn; + const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn); + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + const slide = slides.eq(i); + if (params.slidesPerColumn > 1) { + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn)); + const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 + ? params.slidesPerGroup + : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup; + + newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn); + slide + .css({ + '-webkit-box-ordinal-group': newSlideOrderIndex, + '-moz-box-ordinal-group': newSlideOrderIndex, + '-ms-flex-order': newSlideOrderIndex, + '-webkit-order': newSlideOrderIndex, + order: newSlideOrderIndex, + }); + } else if (params.slidesPerColumnFill === 'column') { + column = Math.floor(i / slidesPerColumn); + row = i - (column * slidesPerColumn); + if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) { + row += 1; + if (row >= slidesPerColumn) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - (row * slidesPerRow); + } + slide.css( + `margin-${swiper.isHorizontal() ? 'top' : 'left'}`, + (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`) + ); + } + if (slide.css('display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + const slideStyles = window.getComputedStyle(slide[0], null); + const currentTransform = slide[0].style.transform; + const currentWebKitTransform = slide[0].style.webkitTransform; + if (currentTransform) { + slide[0].style.transform = 'none'; + } + if (currentWebKitTransform) { + slide[0].style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() + ? slide.outerWidth(true) + : slide.outerHeight(true); + } else { + // eslint-disable-next-line + if (swiper.isHorizontal()) { + const width = parseFloat(slideStyles.getPropertyValue('width')); + const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left')); + const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right')); + const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left')); + const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right')); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight; + } + } else { + const height = parseFloat(slideStyles.getPropertyValue('height')); + const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top')); + const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom')); + const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top')); + const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom')); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = height + marginTop + marginBottom; + } else { + slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom; + } + } + } + if (currentTransform) { + slide[0].style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide[0].style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + + if (slides[i]) { + if (swiper.isHorizontal()) { + slides[i].style.width = `${slideSize}px`; + } else { + slides[i].style.height = `${slideSize}px`; + } + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + + + if (params.centeredSlides) { + slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; + if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + + swiper.virtualSize += slideSize + spaceBetween; + + prevSlideSize = slideSize; + + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + let newSlidesGrid; + + if ( + rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` }); + } + if (params.setWrapperSize) { + if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` }); + else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` }); + } + + if (params.slidesPerColumn > 1) { + swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween; + if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` }); + else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` }); + if (params.centeredSlides) { + newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid = newSlidesGrid; + } + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (snapGrid.length === 0) snapGrid = [0]; + + if (params.spaceBetween !== 0) { + if (swiper.isHorizontal()) { + if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` }); + else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` }); + } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` }); + } + + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach((slideSizeValue) => { + allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); + }); + allSlidesSize -= params.spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map((snap) => { + if (snap < 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach((slideSizeValue) => { + allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); + }); + allSlidesSize -= params.spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + + Utils.extend(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid, + }); + + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + + if (params.watchSlidesProgress || params.watchSlidesVisibility) { + swiper.updateSlidesOffset(); + } +} + +function updateAutoHeight (speed) { + const swiper = this; + const activeSlides = []; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + swiper.visibleSlides.each((index, slide) => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length) break; + activeSlides.push(swiper.slides.eq(index)[0]); + } + } + } else { + activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`); +} + +function updateSlidesOffset () { + const swiper = this; + const slides = swiper.slides; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; + } +} + +function updateSlidesProgress (translate = (this && this.translate) || 0) { + const swiper = this; + const params = swiper.params; + + const { slides, rtlTranslate: rtl } = swiper; + + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.removeClass(params.slideVisibleClass); + + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + const slideProgress = ( + (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset + ) / (slide.swiperSlideSize + params.spaceBetween); + if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) { + const slideBefore = -(offsetCenter - slide.swiperSlideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1) + || (slideAfter > 1 && slideAfter <= swiper.size) + || (slideBefore <= 0 && slideAfter >= swiper.size); + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides.eq(i).addClass(params.slideVisibleClass); + } + } + slide.progress = rtl ? -slideProgress : slideProgress; + } + swiper.visibleSlides = $(swiper.visibleSlides); +} + +function updateProgress (translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { progress, isBeginning, isEnd } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / (translatesDiff); + isBeginning = progress <= 0; + isEnd = progress >= 1; + } + Utils.extend(swiper, { + progress, + isBeginning, + isEnd, + }); + + if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate); + + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) { + swiper.emit('fromEdge'); + } + + swiper.emit('progress', progress); +} + +function updateSlidesClasses () { + const swiper = this; + + const { + slides, params, $wrapperEl, activeIndex, realIndex, + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + + slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`); + + let activeSlide; + if (isVirtual) { + activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`); + } else { + activeSlide = slides.eq(activeIndex); + } + + // Active classes + activeSlide.addClass(params.slideActiveClass); + + if (params.loop) { + // Duplicate to all looped slides + if (activeSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl + .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`) + .addClass(params.slideDuplicateActiveClass); + } else { + $wrapperEl + .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`) + .addClass(params.slideDuplicateActiveClass); + } + } + // Next Slide + let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass); + if (params.loop && nextSlide.length === 0) { + nextSlide = slides.eq(0); + nextSlide.addClass(params.slideNextClass); + } + // Prev Slide + let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass); + if (params.loop && prevSlide.length === 0) { + prevSlide = slides.eq(-1); + prevSlide.addClass(params.slidePrevClass); + } + if (params.loop) { + // Duplicate to all looped slides + if (nextSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl + .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicateNextClass); + } else { + $wrapperEl + .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicateNextClass); + } + if (prevSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl + .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicatePrevClass); + } else { + $wrapperEl + .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicatePrevClass); + } + } +} + +function updateActiveIndex (newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex, + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + if (typeof activeIndex === 'undefined') { + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + + // Get real index + const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); + + Utils.extend(swiper, { + snapIndex, + realIndex, + previousIndex, + activeIndex, + }); + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + swiper.emit('slideChange'); + } +} + +function updateClickedSlide (e) { + const swiper = this; + const params = swiper.params; + const slide = $(e.target).closest(`.${params.slideClass}`)[0]; + let slideFound = false; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) slideFound = true; + } + } + + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = $(slide).index(); + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } +} + +var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide, +}; + +function getTranslate (axis = this.isHorizontal() ? 'x' : 'y') { + const swiper = this; + + const { + params, rtlTranslate: rtl, translate, $wrapperEl, + } = swiper; + + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + + let currentTranslate = Utils.getTranslate($wrapperEl[0], axis); + if (rtl) currentTranslate = -currentTranslate; + + return currentTranslate || 0; +} + +function setTranslate (translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress, + } = swiper; + let x = 0; + let y = 0; + const z = 0; + + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / (translatesDiff); + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + + swiper.emit('setTranslate', swiper.translate, byController); +} + +function minTranslate () { + return (-this.snapGrid[0]); +} + +function maxTranslate () { + return (-this.snapGrid[this.snapGrid.length - 1]); +} + +function translateTo (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) { + const swiper = this; + + const { + params, + wrapperEl, + } = swiper; + + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate; + else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate; + else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + // eslint-disable-next-line + if (wrapperEl.scrollTo) { + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth', + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } + } + return true; + } + + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); + } + } + + return true; +} + +var translate = { + getTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo, +}; + +function setTransition (duration, byController) { + const swiper = this; + + if (!swiper.params.cssMode) { + swiper.$wrapperEl.transition(duration); + } + + swiper.emit('setTransition', duration, byController); +} + +function transitionStart (runCallbacks = true, direction) { + const swiper = this; + const { activeIndex, params, previousIndex } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next'; + else if (activeIndex < previousIndex) dir = 'prev'; + else dir = 'reset'; + } + + swiper.emit('transitionStart'); + + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit('slideResetTransitionStart'); + return; + } + swiper.emit('slideChangeTransitionStart'); + if (dir === 'next') { + swiper.emit('slideNextTransitionStart'); + } else { + swiper.emit('slidePrevTransitionStart'); + } + } +} + +function transitionEnd (runCallbacks = true, direction) { + const swiper = this; + const { activeIndex, previousIndex, params } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next'; + else if (activeIndex < previousIndex) dir = 'prev'; + else dir = 'reset'; + } + + swiper.emit('transitionEnd'); + + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit('slideResetTransitionEnd'); + return; + } + swiper.emit('slideChangeTransitionEnd'); + if (dir === 'next') { + swiper.emit('slideNextTransitionEnd'); + } else { + swiper.emit('slidePrevTransitionEnd'); + } + } +} + +var transition = { + setTransition, + transitionStart, + transitionEnd, +}; + +function slideTo (index = 0, speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + + const { + params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl, + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + + if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + const translate = -snapGrid[snapIndex]; + + // Update progress + swiper.updateProgress(translate); + + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) return false; + } + } + + let direction; + if (slideIndex > activeIndex) direction = 'next'; + else if (slideIndex < activeIndex) direction = 'prev'; + else direction = 'reset'; + + + // Update Index + if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + let t = -translate; + if (rtl) { + t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t; + } + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } else { + // eslint-disable-next-line + if (wrapperEl.scrollTo) { + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth', + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + } + return true; + } + + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } else { + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); + } + } + + return true; +} + +function slideToLoop (index = 0, speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + let newIndex = index; + if (swiper.params.loop) { + newIndex += swiper.loopedSlides; + } + + return swiper.slideTo(newIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideNext (speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + const { params, animating } = swiper; + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup; + if (params.loop) { + if (animating) return false; + swiper.loopFix(); + // eslint-disable-next-line + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slidePrev (speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + const { + params, animating, snapGrid, slidesGrid, rtlTranslate, + } = swiper; + + if (params.loop) { + if (animating) return false; + swiper.loopFix(); + // eslint-disable-next-line + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map((val) => normalize(val)); + const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val)); + + const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)]; + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + snapGrid.forEach((snap) => { + if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap; + }); + } + let prevIndex; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideReset (speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideToClosest (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) { + const swiper = this; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + + return swiper.slideTo(index, speed, runCallbacks, internal); +} + +function slideToClickedSlide () { + const swiper = this; + const { params, $wrapperEl } = swiper; + + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if ( + (slideToIndex < swiper.loopedSlides - (slidesPerView / 2)) + || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2)) + ) { + swiper.loopFix(); + slideToIndex = $wrapperEl + .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`) + .eq(0) + .index(); + + Utils.nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = $wrapperEl + .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`) + .eq(0) + .index(); + + Utils.nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } +} + +var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide, +}; + +function loopCreate () { + const swiper = this; + const { params, $wrapperEl } = swiper; + // Remove duplicated slides + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove(); + + let slides = $wrapperEl.children(`.${params.slideClass}`); + + if (params.loopFillGroupWithBlank) { + const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup); + if (blankSlidesNum !== params.slidesPerGroup) { + for (let i = 0; i < blankSlidesNum; i += 1) { + const blankNode = $(document$1.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`); + $wrapperEl.append(blankNode); + } + slides = $wrapperEl.children(`.${params.slideClass}`); + } + } + + if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length; + + swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10)); + swiper.loopedSlides += params.loopAdditionalSlides; + if (swiper.loopedSlides > slides.length) { + swiper.loopedSlides = slides.length; + } + + const prependSlides = []; + const appendSlides = []; + slides.each((index, el) => { + const slide = $(el); + if (index < swiper.loopedSlides) appendSlides.push(el); + if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el); + slide.attr('data-swiper-slide-index', index); + }); + for (let i = 0; i < appendSlides.length; i += 1) { + $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); + } + for (let i = prependSlides.length - 1; i >= 0; i -= 1) { + $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); + } +} + +function loopFix () { + const swiper = this; + + swiper.emit('beforeLoopFix'); + + const { + activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl, + } = swiper; + let newIndex; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + + const snapTranslate = -snapGrid[activeIndex]; + const diff = snapTranslate - swiper.getTranslate(); + + // Fix For Negative Oversliding + if (activeIndex < loopedSlides) { + newIndex = (slides.length - (loopedSlides * 3)) + activeIndex; + newIndex += loopedSlides; + const slideChanged = swiper.slideTo(newIndex, 0, false, true); + if (slideChanged && diff !== 0) { + swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); + } + } else if (activeIndex >= slides.length - loopedSlides) { + // Fix For Positive Oversliding + newIndex = -slides.length + activeIndex + loopedSlides; + newIndex += loopedSlides; + const slideChanged = swiper.slideTo(newIndex, 0, false, true); + if (slideChanged && diff !== 0) { + swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + + swiper.emit('loopFix'); +} + +function loopDestroy () { + const swiper = this; + const { $wrapperEl, params, slides } = swiper; + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove(); + slides.removeAttr('data-swiper-slide-index'); +} + +var loop = { + loopCreate, + loopFix, + loopDestroy, +}; + +function setGrabCursor (moving) { + const swiper = this; + if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return; + const el = swiper.el; + el.style.cursor = 'move'; + el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab'; + el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab'; + el.style.cursor = moving ? 'grabbing' : 'grab'; +} + +function unsetGrabCursor () { + const swiper = this; + if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return; + swiper.el.style.cursor = ''; +} + +var grabCursor = { + setGrabCursor, + unsetGrabCursor, +}; + +function appendSlide (slides) { + const swiper = this; + const { $wrapperEl, params } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.append(slides[i]); + } + } else { + $wrapperEl.append(slides); + } + if (params.loop) { + swiper.loopCreate(); + } + if (!(params.observer && Support.observer)) { + swiper.update(); + } +} + +function prependSlide (slides) { + const swiper = this; + const { params, $wrapperEl, activeIndex } = swiper; + + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.prepend(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + $wrapperEl.prepend(slides); + } + if (params.loop) { + swiper.loopCreate(); + } + if (!(params.observer && Support.observer)) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); +} + +function addSlide (index, slides) { + const swiper = this; + const { $wrapperEl, params, activeIndex } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.slides = $wrapperEl.children(`.${params.slideClass}`); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides.eq(i); + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + $wrapperEl.append(slides); + } + + for (let i = 0; i < slidesBuffer.length; i += 1) { + $wrapperEl.append(slidesBuffer[i]); + } + + if (params.loop) { + swiper.loopCreate(); + } + if (!(params.observer && Support.observer)) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeSlide (slidesIndexes) { + const swiper = this; + const { params, $wrapperEl, activeIndex } = swiper; + + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.slides = $wrapperEl.children(`.${params.slideClass}`); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + + if (params.loop) { + swiper.loopCreate(); + } + + if (!(params.observer && Support.observer)) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeAllSlides () { + const swiper = this; + + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); +} + +var manipulation = { + appendSlide, + prependSlide, + addSlide, + removeSlide, + removeAllSlides, +}; + +const Device = (function Device() { + const platform = window.navigator.platform; + const ua = window.navigator.userAgent; + + const device = { + ios: false, + android: false, + androidChrome: false, + desktop: false, + iphone: false, + ipod: false, + ipad: false, + edge: false, + ie: false, + firefox: false, + macos: false, + windows: false, + cordova: !!(window.cordova || window.phonegap), + phonegap: !!(window.cordova || window.phonegap), + electron: false, + }; + + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0; + const edge = ua.indexOf('Edge/') >= 0; + const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0; + const windows = platform === 'Win32'; + const electron = ua.toLowerCase().indexOf('electron') >= 0; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + if (!ipad + && macos + && Support.touch + && ( + (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9 + || (screenWidth === 834 && screenHeight === 1194) // Pro 11 + || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5 + || (screenWidth === 768 && screenHeight === 1024) // other + ) + ) { + ipad = ua.match(/(Version)\/([\d.]+)/); + macos = false; + } + + device.ie = ie; + device.edge = edge; + device.firefox = firefox; + + // Android + if (android && !windows) { + device.os = 'android'; + device.osVersion = android[2]; + device.android = true; + device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + // iOS + if (iphone && !ipod) { + device.osVersion = iphone[2].replace(/_/g, '.'); + device.iphone = true; + } + if (ipad) { + device.osVersion = ipad[2].replace(/_/g, '.'); + device.ipad = true; + } + if (ipod) { + device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null; + device.ipod = true; + } + // iOS 8+ changed UA + if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) { + if (device.osVersion.split('.')[0] === '10') { + device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0]; + } + } + + // Webview + device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone)) + || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches); + device.webview = device.webView; + device.standalone = device.webView; + + // Desktop + device.desktop = !(device.ios || device.android) || electron; + if (device.desktop) { + device.electron = electron; + device.macos = macos; + device.windows = windows; + if (device.macos) { + device.os = 'macos'; + } + if (device.windows) { + device.os = 'windows'; + } + } + + // Pixel Ratio + device.pixelRatio = window.devicePixelRatio || 1; + + // Export object + return device; +}()); + +function onTouchStart (event) { + const swiper = this; + const data = swiper.touchEventsData; + const { params, touches } = swiper; + + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + let e = event; + if (e.originalEvent) e = e.originalEvent; + const $targetEl = $(e.target); + + if (params.touchEventsTarget === 'wrapper') { + if (!$targetEl.closest(swiper.wrapperEl).length) return; + } + data.isTouchEvent = e.type === 'touchstart'; + if (!data.isTouchEvent && 'which' in e && e.which === 3) return; + if (!data.isTouchEvent && 'button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!$targetEl.closest(params.swipeHandler)[0]) return; + } + + touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; + touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore + + const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; + if ( + edgeSwipeDetection + && ((startX <= edgeSwipeThreshold) + || (startX >= window.screen.width - edgeSwipeThreshold)) + ) { + return; + } + + Utils.extend(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined, + }); + + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = Utils.now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + if (e.type !== 'touchstart') { + let preventDefault = true; + if ($targetEl.is(data.formElements)) preventDefault = false; + if ( + document$1.activeElement + && $(document$1.activeElement).is(data.formElements) + && document$1.activeElement !== $targetEl[0] + ) { + document$1.activeElement.blur(); + } + + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if (params.touchStartForcePreventDefault || shouldPreventDefault) { + e.preventDefault(); + } + } + swiper.emit('touchStart', e); +} + +function onTouchMove (event) { + const swiper = this; + const data = swiper.touchEventsData; + const { params, touches, rtlTranslate: rtl } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + if (data.isTouchEvent && e.type === 'mousemove') return; + const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]); + const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX; + const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + // isMoved = true; + swiper.allowClick = false; + if (data.isTouched) { + Utils.extend(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + }); + data.touchStartTime = Utils.now(); + } + return; + } + if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if ( + (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) + || (pageY > touches.startY && swiper.translate >= swiper.minTranslate()) + ) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if ( + (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) + || (pageX > touches.startX && swiper.translate >= swiper.minTranslate()) + ) { + return; + } + } + if (data.isTouchEvent && document$1.activeElement) { + if (e.target === document$1.activeElement && $(e.target).is(data.formElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + if (e.targetTouches && e.targetTouches.length > 1) return; + + touches.currentX = pageX; + touches.currentY = pageY; + + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return; + + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if ((diffX * diffX) + (diffY * diffY) >= 25) { + touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle); + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + + if (!data.isMoved) { + if (params.loop) { + swiper.loopFix(); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + swiper.emit('sliderMove', e); + data.isMoved = true; + + let diff = swiper.isHorizontal() ? diffX : diffY; + touches.diff = diff; + + diff *= params.touchRatio; + if (rtl) diff = -diff; + + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + data.currentTranslate = diff + data.startTranslate; + + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) { + disableParentSwiper = false; + if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio); + } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio); + } + + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode) { + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime, + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: Utils.now(), + }); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); +} + +function onTouchEnd (event) { + const swiper = this; + const data = swiper.touchEventsData; + + const { + params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid, + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = Utils.now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + swiper.updateClickedSlide(e); + swiper.emit('tap click', e); + if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + + data.lastClickTime = Utils.now(); + Utils.nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + + if (params.cssMode) { + return; + } + + if (params.freeMode) { + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + + if (params.freeModeMomentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeModeMomentumVelocityRatio; + + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeModeMomentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeModeMomentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeModeMomentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeModeSticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + swiper.once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeModeSticky) { + // If freeModeSticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeModeSticky) { + swiper.slideToClosest(); + return; + } + + if (params.freeModeMomentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + swiper.emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeModeSticky) { + swiper.slideToClosest(); + return; + } + + if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) { + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + return; + } + + // Find current slide + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) { + const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup); + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup); + + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment); + else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment); + else swiper.slideTo(stopIndex); + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } +} + +function onResize () { + const swiper = this; + + const { params, el } = swiper; + + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { allowSlideNext, allowSlidePrev, snapGrid } = swiper; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + + swiper.updateSize(); + swiper.updateSlides(); + + swiper.updateSlidesClasses(); + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.run(); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } +} + +function onClick (e) { + const swiper = this; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } +} + +function onScroll () { + const swiper = this; + const { wrapperEl, rtlTranslate } = swiper; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + if (rtlTranslate) { + swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft); + } else { + swiper.translate = -wrapperEl.scrollLeft; + } + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === -0) swiper.translate = 0; + + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff); + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + + swiper.emit('setTranslate', swiper.translate, false); +} + +let dummyEventAttached = false; +function dummyEventListener() {} + +function attachEvents() { + const swiper = this; + const { + params, touchEvents, el, wrapperEl, + } = swiper; + + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + + swiper.onClick = onClick.bind(swiper); + + const capture = !!params.nested; + + // Touch Events + if (!Support.touch && Support.pointerEvents) { + el.addEventListener(touchEvents.start, swiper.onTouchStart, false); + document$1.addEventListener(touchEvents.move, swiper.onTouchMove, capture); + document$1.addEventListener(touchEvents.end, swiper.onTouchEnd, false); + } else { + if (Support.touch) { + const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); + el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture); + el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); + if (touchEvents.cancel) { + el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener); + } + if (!dummyEventAttached) { + document$1.addEventListener('touchstart', dummyEventListener); + dummyEventAttached = true; + } + } + if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { + el.addEventListener('mousedown', swiper.onTouchStart, false); + document$1.addEventListener('mousemove', swiper.onTouchMove, capture); + document$1.addEventListener('mouseup', swiper.onTouchEnd, false); + } + } + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el.addEventListener('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl.addEventListener('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true); + } else { + swiper.on('observerUpdate', onResize, true); + } +} + +function detachEvents() { + const swiper = this; + + const { + params, touchEvents, el, wrapperEl, + } = swiper; + + const capture = !!params.nested; + + // Touch Events + if (!Support.touch && Support.pointerEvents) { + el.removeEventListener(touchEvents.start, swiper.onTouchStart, false); + document$1.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); + document$1.removeEventListener(touchEvents.end, swiper.onTouchEnd, false); + } else { + if (Support.touch) { + const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); + el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); + el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); + if (touchEvents.cancel) { + el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener); + } + } + if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { + el.removeEventListener('mousedown', swiper.onTouchStart, false); + document$1.removeEventListener('mousemove', swiper.onTouchMove, capture); + document$1.removeEventListener('mouseup', swiper.onTouchEnd, false); + } + } + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el.removeEventListener('click', swiper.onClick, true); + } + + if (params.cssMode) { + wrapperEl.removeEventListener('scroll', swiper.onScroll); + } + + // Resize handler + swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize); +} + +var events = { + attachEvents, + detachEvents, +}; + +function setBreakpoint () { + const swiper = this; + const { + activeIndex, initialized, loopedSlides = 0, params, $el, + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints); + + if (breakpoint && swiper.currentBreakpoint !== breakpoint) { + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + if (breakpointOnlyParams) { + ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => { + const paramValue = breakpointOnlyParams[param]; + if (typeof paramValue === 'undefined') return; + if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) { + breakpointOnlyParams[param] = 'auto'; + } else if (param === 'slidesPerView') { + breakpointOnlyParams[param] = parseFloat(paramValue); + } else { + breakpointOnlyParams[param] = parseInt(paramValue, 10); + } + }); + } + + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = params.slidesPerColumn > 1; + const isMultiRow = breakpointParams.slidesPerColumn > 1; + if (wasMultiRow && !isMultiRow) { + $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`); + } else if (!wasMultiRow && isMultiRow) { + $el.addClass(`${params.containerModifierClass}multirow`); + if (breakpointParams.slidesPerColumnFill === 'column') { + $el.addClass(`${params.containerModifierClass}multirow-column`); + } + } + + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + + if (directionChanged && initialized) { + swiper.changeDirection(); + } + + Utils.extend(swiper.params, breakpointParams); + + Utils.extend(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + }); + + swiper.currentBreakpoint = breakpoint; + + if (needsReLoop && initialized) { + swiper.loopDestroy(); + swiper.loopCreate(); + swiper.updateSlides(); + swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false); + } + + swiper.emit('breakpoint', breakpointParams); + } +} + +function getBreakpoint (breakpoints) { + // Get breakpoint for window width + if (!breakpoints) return undefined; + let breakpoint = false; + + const points = Object.keys(breakpoints).map((point) => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = window.innerHeight * minRatio; + return { value, point }; + } + return { value: point, point }; + }); + + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { point, value } = points[i]; + if (value <= window.innerWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; +} + +var breakpoints = { setBreakpoint, getBreakpoint }; + +function addClasses () { + const swiper = this; + const { + classNames, params, rtl, $el, + } = swiper; + const suffixes = []; + + suffixes.push('initialized'); + suffixes.push(params.direction); + + if (params.freeMode) { + suffixes.push('free-mode'); + } + if (params.autoHeight) { + suffixes.push('autoheight'); + } + if (rtl) { + suffixes.push('rtl'); + } + if (params.slidesPerColumn > 1) { + suffixes.push('multirow'); + if (params.slidesPerColumnFill === 'column') { + suffixes.push('multirow-column'); + } + } + if (Device.android) { + suffixes.push('android'); + } + if (Device.ios) { + suffixes.push('ios'); + } + + if (params.cssMode) { + suffixes.push('css-mode'); + } + + suffixes.forEach((suffix) => { + classNames.push(params.containerModifierClass + suffix); + }); + + $el.addClass(classNames.join(' ')); +} + +function removeClasses () { + const swiper = this; + const { $el, classNames } = swiper; + + $el.removeClass(classNames.join(' ')); +} + +var classes = { addClasses, removeClasses }; + +function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) { + let image; + function onReady() { + if (callback) callback(); + } + if (!imageEl.complete || !checkForComplete) { + if (src) { + image = new window.Image(); + image.onload = onReady; + image.onerror = onReady; + if (sizes) { + image.sizes = sizes; + } + if (srcset) { + image.srcset = srcset; + } + if (src) { + image.src = src; + } + } else { + onReady(); + } + } else { + // image already loaded... + onReady(); + } +} + +function preloadImages () { + const swiper = this; + swiper.imagesToLoad = swiper.$el.find('img'); + function onReady() { + if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return; + if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1; + if (swiper.imagesLoaded === swiper.imagesToLoad.length) { + if (swiper.params.updateOnImagesReady) swiper.update(); + swiper.emit('imagesReady'); + } + } + for (let i = 0; i < swiper.imagesToLoad.length; i += 1) { + const imageEl = swiper.imagesToLoad[i]; + swiper.loadImage( + imageEl, + imageEl.currentSrc || imageEl.getAttribute('src'), + imageEl.srcset || imageEl.getAttribute('srcset'), + imageEl.sizes || imageEl.getAttribute('sizes'), + true, + onReady + ); + } +} + +var images = { + loadImage, + preloadImages, +}; + +function checkOverflow() { + const swiper = this; + const params = swiper.params; + const wasLocked = swiper.isLocked; + const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length); + + if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) { + swiper.isLocked = lastSlidePosition <= swiper.size; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + + swiper.allowSlideNext = !swiper.isLocked; + swiper.allowSlidePrev = !swiper.isLocked; + + // events + if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + swiper.navigation.update(); + } +} + +var checkOverflow$1 = { checkOverflow }; + +var defaults = { + init: true, + direction: 'horizontal', + touchEventsTarget: 'container', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + // + preventInteractionOnTransition: false, + + // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + + // Free mode + freeMode: false, + freeModeMomentum: true, + freeModeMomentumRatio: 1, + freeModeMomentumBounce: true, + freeModeMomentumBounceRatio: 1, + freeModeMomentumVelocityRatio: 1, + freeModeSticky: false, + freeModeMinimumVelocity: 0.02, + + // Autoheight + autoHeight: false, + + // Set wrapper width + setWrapperSize: false, + + // Virtual Translate + virtualTranslate: false, + + // Effects + effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerColumnFill: 'column', + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, // in px + slidesOffsetAfter: 0, // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + + // Disable swiper and hide navigation when container not overflow + watchOverflow: false, + + // Round length + roundLengths: false, + + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 0, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + + // Unique Navigation Elements + uniqueNavElements: true, + + // Resistance + resistance: true, + resistanceRatio: 0.85, + + // Progress + watchSlidesProgress: false, + watchSlidesVisibility: false, + + // Cursor + grabCursor: false, + + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + + // Images + preloadImages: true, + updateOnImagesReady: true, + + // loop + loop: false, + loopAdditionalSlides: 0, + loopedSlides: null, + loopFillGroupWithBlank: false, + + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + + // Passive Listeners + passiveListeners: true, + + // NS + containerModifierClass: 'swiper-container-', // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-invisible-blank', + slideActiveClass: 'swiper-slide-active', + slideDuplicateActiveClass: 'swiper-slide-duplicate-active', + slideVisibleClass: 'swiper-slide-visible', + slideDuplicateClass: 'swiper-slide-duplicate', + slideNextClass: 'swiper-slide-next', + slideDuplicateNextClass: 'swiper-slide-duplicate-next', + slidePrevClass: 'swiper-slide-prev', + slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', + wrapperClass: 'swiper-wrapper', + + // Callbacks + runCallbacksOnInit: true, +}; + +/* eslint no-param-reassign: "off" */ + +const prototypes = { + update, + translate, + transition, + slide, + loop, + grabCursor, + manipulation, + events, + breakpoints, + checkOverflow: checkOverflow$1, + classes, + images, +}; + +const extendedDefaults = {}; + +class Swiper extends SwiperClass { + constructor(...args) { + let el; + let params; + if (args.length === 1 && args[0].constructor && args[0].constructor === Object) { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + + params = Utils.extend({}, params); + if (el && !params.el) params.el = el; + + super(params); + + Object.keys(prototypes).forEach((prototypeGroup) => { + Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => { + if (!Swiper.prototype[protoMethod]) { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + } + }); + }); + + // Swiper Instance + const swiper = this; + if (typeof swiper.modules === 'undefined') { + swiper.modules = {}; + } + Object.keys(swiper.modules).forEach((moduleName) => { + const module = swiper.modules[moduleName]; + if (module.params) { + const moduleParamName = Object.keys(module.params)[0]; + const moduleParams = module.params[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) return; + if (!(moduleParamName in params && 'enabled' in moduleParams)) return; + if (params[moduleParamName] === true) { + params[moduleParamName] = { enabled: true }; + } + if ( + typeof params[moduleParamName] === 'object' + && !('enabled' in params[moduleParamName]) + ) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { enabled: false }; + } + }); + + // Extend defaults with modules params + const swiperParams = Utils.extend({}, defaults); + swiper.useModulesParams(swiperParams); + + // Extend defaults with passed params + swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = Utils.extend({}, swiper.params); + swiper.passedParams = Utils.extend({}, params); + + // Save Dom lib + swiper.$ = $; + + // Find el + const $el = $(swiper.params.el); + el = $el[0]; + + if (!el) { + return undefined; + } + + if ($el.length > 1) { + const swipers = []; + $el.each((index, containerEl) => { + const newParams = Utils.extend({}, params, { el: containerEl }); + swipers.push(new Swiper(newParams)); + }); + return swipers; + } + + el.swiper = swiper; + $el.data('swiper', swiper); + + // Find Wrapper + let $wrapperEl; + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`)); + // Children needs to return slot items + $wrapperEl.children = (options) => $el.children(options); + } else { + $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`); + } + // Extend Swiper + Utils.extend(swiper, { + $el, + el, + $wrapperEl, + wrapperEl: $wrapperEl[0], + + // Classes + classNames: [], + + // Slides + slides: $(), + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // RTL + rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), + wrongRTL: $wrapperEl.css('display') === '-webkit-box', + + // Indexes + activeIndex: 0, + realIndex: 0, + + // + isBeginning: true, + isEnd: false, + + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + + // Touch Events + touchEvents: (function touchEvents() { + const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel']; + let desktop = ['mousedown', 'mousemove', 'mouseup']; + if (Support.pointerEvents) { + desktop = ['pointerdown', 'pointermove', 'pointerup']; + } + swiper.touchEventsTouch = { + start: touch[0], + move: touch[1], + end: touch[2], + cancel: touch[3], + }; + swiper.touchEventsDesktop = { + start: desktop[0], + move: desktop[1], + end: desktop[2], + }; + return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; + }()), + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + formElements: 'input, select, option, textarea, button, video, label', + // Last click time + lastClickTime: Utils.now(), + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + isTouchEvent: undefined, + startMoving: undefined, + }, + + // Clicks + allowClick: true, + + // Touches + allowTouchMove: swiper.params.allowTouchMove, + + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0, + }, + + // Images + imagesToLoad: [], + imagesLoaded: 0, + + }); + + // Install Modules + swiper.useModules(); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + return swiper; + } + + slidesPerViewDynamic() { + const swiper = this; + const { + params, slides, slidesGrid, size: swiperSize, activeIndex, + } = swiper; + let spv = 1; + if (params.centeredSlides) { + let slideSize = slides[activeIndex].swiperSlideSize; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) { + spv += 1; + } + } + } + return spv; + } + + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { snapGrid, params } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (swiper.params.freeMode) { + setTranslate(); + if (swiper.params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { + translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + + changeDirection(newDirection, needUpdate = true) { + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) { + return swiper; + } + + swiper.$el + .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`) + .addClass(`${swiper.params.containerModifierClass}${newDirection}`); + + swiper.params.direction = newDirection; + + swiper.slides.each((slideIndex, slideEl) => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + + return swiper; + } + + init() { + const swiper = this; + if (swiper.initialized) return; + + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + + if (swiper.params.preloadImages) { + swiper.preloadImages(); + } + + // Slide To Initial Slide + if (swiper.params.loop) { + swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit); + } + + // Attach events + swiper.attachEvents(); + + // Init Flag + swiper.initialized = true; + + // Emit + swiper.emit('init'); + } + + destroy(deleteInstance = true, cleanStyles = true) { + const swiper = this; + const { + params, $el, $wrapperEl, slides, + } = swiper; + + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + $el.removeAttr('style'); + $wrapperEl.removeAttr('style'); + if (slides && slides.length) { + slides + .removeClass([ + params.slideVisibleClass, + params.slideActiveClass, + params.slideNextClass, + params.slidePrevClass, + ].join(' ')) + .removeAttr('style') + .removeAttr('data-swiper-slide-index'); + } + } + + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach((eventName) => { + swiper.off(eventName); + }); + + if (deleteInstance !== false) { + swiper.$el[0].swiper = null; + swiper.$el.data('swiper', null); + Utils.deleteProps(swiper); + } + swiper.destroyed = true; + + return null; + } + + static extendDefaults(newDefaults) { + Utils.extend(extendedDefaults, newDefaults); + } + + static get extendedDefaults() { + return extendedDefaults; + } + + static get defaults() { + return defaults; + } + + static get Class() { + return SwiperClass; + } + + static get $() { + return $; + } +} + +var Device$1 = { + name: 'device', + proto: { + device: Device, + }, + static: { + device: Device, + }, +}; + +var Support$1 = { + name: 'support', + proto: { + support: Support, + }, + static: { + support: Support, + }, +}; + +const Browser = (function Browser() { + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0); + } + return { + isEdge: !!window.navigator.userAgent.match(/Edge/g), + isSafari: isSafari(), + isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent), + }; +}()); + +var Browser$1 = { + name: 'browser', + proto: { + browser: Browser, + }, + static: { + browser: Browser, + }, +}; + +var Resize = { + name: 'resize', + create() { + const swiper = this; + Utils.extend(swiper, { + resize: { + resizeHandler() { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + swiper.emit('beforeResize'); + swiper.emit('resize'); + }, + orientationChangeHandler() { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + swiper.emit('orientationchange'); + }, + }, + }); + }, + on: { + init() { + const swiper = this; + // Emit resize + window.addEventListener('resize', swiper.resize.resizeHandler); + + // Emit orientationchange + window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler); + }, + destroy() { + const swiper = this; + window.removeEventListener('resize', swiper.resize.resizeHandler); + window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler); + }, + }, +}; + +const Observer = { + func: window.MutationObserver || window.WebkitMutationObserver, + attach(target, options = {}) { + const swiper = this; + + const ObserverFunc = Observer.func; + const observer = new ObserverFunc((mutations) => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (mutations.length === 1) { + swiper.emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + swiper.emit('observerUpdate', mutations[0]); + }; + + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData, + }); + + swiper.observer.observers.push(observer); + }, + init() { + const swiper = this; + if (!Support.observer || !swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = swiper.$el.parents(); + for (let i = 0; i < containerParents.length; i += 1) { + swiper.observer.attach(containerParents[i]); + } + } + // Observe container + swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren }); + + // Observe wrapper + swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false }); + }, + destroy() { + const swiper = this; + swiper.observer.observers.forEach((observer) => { + observer.disconnect(); + }); + swiper.observer.observers = []; + }, +}; + +var Observer$1 = { + name: 'observer', + params: { + observer: false, + observeParents: false, + observeSlideChildren: false, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + observer: { + init: Observer.init.bind(swiper), + attach: Observer.attach.bind(swiper), + destroy: Observer.destroy.bind(swiper), + observers: [], + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.observer.init(); + }, + destroy() { + const swiper = this; + swiper.observer.destroy(); + }, + }, +}; + +const Virtual = { + update(force) { + const swiper = this; + const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params; + const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + renderSlide, + offset: previousOffset, + } = swiper.virtual; + swiper.updateActiveIndex(); + const activeIndex = swiper.activeIndex || 0; + + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right'; + else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore; + slidesBefore = slidesPerGroup + addSlidesAfter; + } + const from = Math.max((activeIndex || 0) - slidesBefore, 0); + const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1); + const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + + Utils.extend(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + }); + + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + if (swiper.lazy && swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + } + + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.css(offsetProp, `${offset}px`); + } + swiper.updateProgress(); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: (function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }()), + }); + onRendered(); + return; + } + const prependIndexes = []; + const appendIndexes = []; + if (force) { + swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove(); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove(); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + if (i >= from && i <= to) { + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(i); + } else { + if (i > previousTo) appendIndexes.push(i); + if (i < previousFrom) prependIndexes.push(i); + } + } + } + appendIndexes.forEach((index) => { + swiper.$wrapperEl.append(renderSlide(slides[index], index)); + }); + prependIndexes.sort((a, b) => b - a).forEach((index) => { + swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); + }); + swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`); + onRendered(); + }, + renderSlide(slide, index) { + const swiper = this; + const params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + const $slideEl = params.renderSlide + ? $(params.renderSlide.call(swiper, slide, index)) + : $(`
      ${slide}
      `); + if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index); + if (params.cache) swiper.virtual.cache[index] = $slideEl; + return $slideEl; + }, + appendSlide(slides) { + const swiper = this; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + swiper.virtual.update(true); + }, + prependSlide(slides) { + const swiper = this; + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach((cachedIndex) => { + const $cachedEl = cache[cachedIndex]; + const cachedElIndex = $cachedEl.attr('data-swiper-slide-index'); + if (cachedElIndex) { + $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl; + }); + swiper.virtual.cache = newCache; + } + swiper.virtual.update(true); + swiper.slideTo(newActiveIndex, 0); + }, + removeSlide(slidesIndexes) { + const swiper = this; + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + } + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + swiper.virtual.slides.splice(slidesIndexes, 1); + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + } + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + swiper.virtual.update(true); + swiper.slideTo(activeIndex, 0); + }, + removeAllSlides() { + const swiper = this; + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + swiper.virtual.update(true); + swiper.slideTo(0, 0); + }, +}; + +var Virtual$1 = { + name: 'virtual', + params: { + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + addSlidesBefore: 0, + addSlidesAfter: 0, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + virtual: { + update: Virtual.update.bind(swiper), + appendSlide: Virtual.appendSlide.bind(swiper), + prependSlide: Virtual.prependSlide.bind(swiper), + removeSlide: Virtual.removeSlide.bind(swiper), + removeAllSlides: Virtual.removeAllSlides.bind(swiper), + renderSlide: Virtual.renderSlide.bind(swiper), + slides: swiper.params.virtual.slides, + cache: {}, + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (!swiper.params.virtual.enabled) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + const overwriteParams = { + watchSlidesProgress: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + + if (!swiper.params.initialSlide) { + swiper.virtual.update(); + } + }, + setTranslate() { + const swiper = this; + if (!swiper.params.virtual.enabled) return; + swiper.virtual.update(); + }, + }, +}; + +const Keyboard = { + handle(event) { + const swiper = this; + const { rtlTranslate: rtl } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + // Directions locks + if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) { + return false; + } + if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document$1.activeElement && document$1.activeElement.nodeName && (document$1.activeElement.nodeName.toLowerCase() === 'input' || document$1.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = swiper.$el.offset(); + if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft; + const swiperCoord = [ + [swiperOffset.left, swiperOffset.top], + [swiperOffset.left + swiper.width, swiperOffset.top], + [swiperOffset.left, swiperOffset.top + swiper.height], + [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height], + ]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if ( + point[0] >= 0 && point[0] <= windowWidth + && point[1] >= 0 && point[1] <= windowHeight + ) { + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (kc === 33 || kc === 34 || kc === 37 || kc === 39) { + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + } + if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext(); + if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev(); + } else { + if (kc === 33 || kc === 34 || kc === 38 || kc === 40) { + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + } + if (kc === 34 || kc === 40) swiper.slideNext(); + if (kc === 33 || kc === 38) swiper.slidePrev(); + } + swiper.emit('keyPress', kc); + return undefined; + }, + enable() { + const swiper = this; + if (swiper.keyboard.enabled) return; + $(document$1).on('keydown', swiper.keyboard.handle); + swiper.keyboard.enabled = true; + }, + disable() { + const swiper = this; + if (!swiper.keyboard.enabled) return; + $(document$1).off('keydown', swiper.keyboard.handle); + swiper.keyboard.enabled = false; + }, +}; + +var Keyboard$1 = { + name: 'keyboard', + params: { + keyboard: { + enabled: false, + onlyInViewport: true, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + keyboard: { + enabled: false, + enable: Keyboard.enable.bind(swiper), + disable: Keyboard.disable.bind(swiper), + handle: Keyboard.handle.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.keyboard.enabled) { + swiper.keyboard.enable(); + } + }, + destroy() { + const swiper = this; + if (swiper.keyboard.enabled) { + swiper.keyboard.disable(); + } + }, + }, +}; + +function isEventSupported() { + const eventName = 'onwheel'; + let isSupported = eventName in document$1; + + if (!isSupported) { + const element = document$1.createElement('div'); + element.setAttribute(eventName, 'return;'); + isSupported = typeof element[eventName] === 'function'; + } + + if (!isSupported + && document$1.implementation + && document$1.implementation.hasFeature + // always returns true in newer browsers as per the standard. + // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature + && document$1.implementation.hasFeature('', '') !== true + ) { + // This is the only way to test support for the `wheel` event in IE9+. + isSupported = document$1.implementation.hasFeature('Events.wheel', '3.0'); + } + + return isSupported; +} +const Mousewheel = { + lastScrollTime: Utils.now(), + lastEventBeforeSnap: undefined, + recentWheelEvents: [], + event() { + if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll'; + return isEventSupported() ? 'wheel' : 'mousewheel'; + }, + normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + + if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = (pX < 1) ? -1 : 1; + } + if (pY && !sY) { + sY = (pY < 1) ? -1 : 1; + } + + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY, + }; + }, + handleMouseEnter() { + const swiper = this; + swiper.mouseEntered = true; + }, + handleMouseLeave() { + const swiper = this; + swiper.mouseEntered = false; + }, + handle(event) { + let e = event; + const swiper = this; + const params = swiper.params.mousewheel; + + if (swiper.params.cssMode) { + e.preventDefault(); + } + + let target = swiper.$el; + if (swiper.params.mousewheel.eventsTarged !== 'container') { + target = $(swiper.params.mousewheel.eventsTarged); + } + if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true; + + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + + const data = Mousewheel.normalize(e); + + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor; + else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY; + else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + + if (delta === 0) return true; + + if (params.invert) delta = -delta; + + if (!swiper.params.freeMode) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: Utils.now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event, + }; + + // Keep the most recent events + const recentWheelEvents = swiper.mousewheel.recentWheelEvents; + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta) { + swiper.mousewheel.animateSlider(newEvent); + } + } else { + swiper.mousewheel.animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (swiper.mousewheel.releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) }; + const { lastEventBeforeSnap } = swiper.mousewheel; + const ignoreWheelEvents = lastEventBeforeSnap + && newEvent.time < lastEventBeforeSnap.time + 500 + && newEvent.delta <= lastEventBeforeSnap.delta + && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + swiper.mousewheel.lastEventBeforeSnap = undefined; + + if (swiper.params.loop) { + swiper.loopFix(); + } + let position = swiper.getTranslate() + (delta * params.sensitivity); + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + + if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) { + swiper.updateSlidesClasses(); + } + + if (swiper.params.freeModeSticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momuntum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(swiper.mousewheel.timeout); + swiper.mousewheel.timeout = undefined; + const recentWheelEvents = swiper.mousewheel.recentWheelEvents; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 + && newEvent.time - firstEvent.time < 500 + && firstEvent.delta - newEvent.delta >= 1 + && newEvent.delta <= 6 + ) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + swiper.mousewheel.lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.mousewheel.timeout = Utils.nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + if (!swiper.mousewheel.timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + swiper.mousewheel.timeout = Utils.nextTick(() => { + const snapToThreshold = 0.5; + swiper.mousewheel.lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) swiper.emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true; + } + } + + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + return false; + }, + animateSlider(newEvent) { + const swiper = this; + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + swiper.emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + swiper.emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + swiper.mousewheel.lastScrollTime = (new window.Date()).getTime(); + // Return false as a default + return false; + }, + releaseScroll(newEvent) { + const swiper = this; + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + }, + enable() { + const swiper = this; + const event = Mousewheel.event(); + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle); + return true; + } + if (!event) return false; + if (swiper.mousewheel.enabled) return false; + let target = swiper.$el; + if (swiper.params.mousewheel.eventsTarged !== 'container') { + target = $(swiper.params.mousewheel.eventsTarged); + } + target.on('mouseenter', swiper.mousewheel.handleMouseEnter); + target.on('mouseleave', swiper.mousewheel.handleMouseLeave); + target.on(event, swiper.mousewheel.handle); + swiper.mousewheel.enabled = true; + return true; + }, + disable() { + const swiper = this; + const event = Mousewheel.event(); + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle); + return true; + } + if (!event) return false; + if (!swiper.mousewheel.enabled) return false; + let target = swiper.$el; + if (swiper.params.mousewheel.eventsTarged !== 'container') { + target = $(swiper.params.mousewheel.eventsTarged); + } + target.off(event, swiper.mousewheel.handle); + swiper.mousewheel.enabled = false; + return true; + }, +}; + +var Mousewheel$1 = { + name: 'mousewheel', + params: { + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarged: 'container', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + mousewheel: { + enabled: false, + enable: Mousewheel.enable.bind(swiper), + disable: Mousewheel.disable.bind(swiper), + handle: Mousewheel.handle.bind(swiper), + handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper), + handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper), + animateSlider: Mousewheel.animateSlider.bind(swiper), + releaseScroll: Mousewheel.releaseScroll.bind(swiper), + lastScrollTime: Utils.now(), + lastEventBeforeSnap: undefined, + recentWheelEvents: [], + }, + }); + }, + on: { + init() { + const swiper = this; + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + swiper.mousewheel.disable(); + } + if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable(); + }, + destroy() { + const swiper = this; + if (swiper.params.cssMode) { + swiper.mousewheel.enable(); + } + if (swiper.mousewheel.enabled) swiper.mousewheel.disable(); + }, + }, +}; + +const Navigation = { + update() { + // Update Navigation Buttons + const swiper = this; + const params = swiper.params.navigation; + + if (swiper.params.loop) return; + const { $nextEl, $prevEl } = swiper.navigation; + + if ($prevEl && $prevEl.length > 0) { + if (swiper.isBeginning) { + $prevEl.addClass(params.disabledClass); + } else { + $prevEl.removeClass(params.disabledClass); + } + $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + } + if ($nextEl && $nextEl.length > 0) { + if (swiper.isEnd) { + $nextEl.addClass(params.disabledClass); + } else { + $nextEl.removeClass(params.disabledClass); + } + $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + } + }, + onPrevClick(e) { + const swiper = this; + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop) return; + swiper.slidePrev(); + }, + onNextClick(e) { + const swiper = this; + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop) return; + swiper.slideNext(); + }, + init() { + const swiper = this; + const params = swiper.params.navigation; + if (!(params.nextEl || params.prevEl)) return; + + let $nextEl; + let $prevEl; + if (params.nextEl) { + $nextEl = $(params.nextEl); + if ( + swiper.params.uniqueNavElements + && typeof params.nextEl === 'string' + && $nextEl.length > 1 + && swiper.$el.find(params.nextEl).length === 1 + ) { + $nextEl = swiper.$el.find(params.nextEl); + } + } + if (params.prevEl) { + $prevEl = $(params.prevEl); + if ( + swiper.params.uniqueNavElements + && typeof params.prevEl === 'string' + && $prevEl.length > 1 + && swiper.$el.find(params.prevEl).length === 1 + ) { + $prevEl = swiper.$el.find(params.prevEl); + } + } + + if ($nextEl && $nextEl.length > 0) { + $nextEl.on('click', swiper.navigation.onNextClick); + } + if ($prevEl && $prevEl.length > 0) { + $prevEl.on('click', swiper.navigation.onPrevClick); + } + + Utils.extend(swiper.navigation, { + $nextEl, + nextEl: $nextEl && $nextEl[0], + $prevEl, + prevEl: $prevEl && $prevEl[0], + }); + }, + destroy() { + const swiper = this; + const { $nextEl, $prevEl } = swiper.navigation; + if ($nextEl && $nextEl.length) { + $nextEl.off('click', swiper.navigation.onNextClick); + $nextEl.removeClass(swiper.params.navigation.disabledClass); + } + if ($prevEl && $prevEl.length) { + $prevEl.off('click', swiper.navigation.onPrevClick); + $prevEl.removeClass(swiper.params.navigation.disabledClass); + } + }, +}; + +var Navigation$1 = { + name: 'navigation', + params: { + navigation: { + nextEl: null, + prevEl: null, + + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + navigation: { + init: Navigation.init.bind(swiper), + update: Navigation.update.bind(swiper), + destroy: Navigation.destroy.bind(swiper), + onNextClick: Navigation.onNextClick.bind(swiper), + onPrevClick: Navigation.onPrevClick.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.navigation.init(); + swiper.navigation.update(); + }, + toEdge() { + const swiper = this; + swiper.navigation.update(); + }, + fromEdge() { + const swiper = this; + swiper.navigation.update(); + }, + destroy() { + const swiper = this; + swiper.navigation.destroy(); + }, + click(e) { + const swiper = this; + const { $nextEl, $prevEl } = swiper.navigation; + if ( + swiper.params.navigation.hideOnClick + && !$(e.target).is($prevEl) + && !$(e.target).is($nextEl) + ) { + let isHidden; + if ($nextEl) { + isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass); + } else if ($prevEl) { + isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + swiper.emit('navigationShow', swiper); + } else { + swiper.emit('navigationHide', swiper); + } + if ($nextEl) { + $nextEl.toggleClass(swiper.params.navigation.hiddenClass); + } + if ($prevEl) { + $prevEl.toggleClass(swiper.params.navigation.hiddenClass); + } + } + }, + }, +}; + +const Pagination = { + update() { + // Render || Update Pagination bullets/items + const swiper = this; + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const $el = swiper.pagination.$el; + // Current/Total + let current; + const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); + if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) { + current -= (slidesLength - (swiper.loopedSlides * 2)); + } + if (current > total - 1) current -= total; + if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + } else { + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); + $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`); + if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { + swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex); + if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) { + swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (swiper.pagination.dynamicBulletIndex < 0) { + swiper.pagination.dynamicBulletIndex = 0; + } + } + firstIndex = current - swiper.pagination.dynamicBulletIndex; + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`); + if ($el.length > 1) { + bullets.each((index, bullet) => { + const $bullet = $(bullet); + const bulletIndex = $bullet.index(); + if (bulletIndex === current) { + $bullet.addClass(params.bulletActiveClass); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + $bullet.addClass(`${params.bulletActiveClass}-main`); + } + if (bulletIndex === firstIndex) { + $bullet + .prev() + .addClass(`${params.bulletActiveClass}-prev`) + .prev() + .addClass(`${params.bulletActiveClass}-prev-prev`); + } + if (bulletIndex === lastIndex) { + $bullet + .next() + .addClass(`${params.bulletActiveClass}-next`) + .next() + .addClass(`${params.bulletActiveClass}-next-next`); + } + } + }); + } else { + const $bullet = bullets.eq(current); + const bulletIndex = $bullet.index(); + $bullet.addClass(params.bulletActiveClass); + if (params.dynamicBullets) { + const $firstDisplayedBullet = bullets.eq(firstIndex); + const $lastDisplayedBullet = bullets.eq(lastIndex); + for (let i = firstIndex; i <= lastIndex; i += 1) { + bullets.eq(i).addClass(`${params.bulletActiveClass}-main`); + } + if (swiper.params.loop) { + if (bulletIndex >= bullets.length - params.dynamicMainBullets) { + for (let i = params.dynamicMainBullets; i >= 0; i -= 1) { + bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`); + } + bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`); + } else { + $firstDisplayedBullet + .prev() + .addClass(`${params.bulletActiveClass}-prev`) + .prev() + .addClass(`${params.bulletActiveClass}-prev-prev`); + $lastDisplayedBullet + .next() + .addClass(`${params.bulletActiveClass}-next`) + .next() + .addClass(`${params.bulletActiveClass}-next-next`); + } + } else { + $firstDisplayedBullet + .prev() + .addClass(`${params.bulletActiveClass}-prev`) + .prev() + .addClass(`${params.bulletActiveClass}-prev-prev`); + $lastDisplayedBullet + .next() + .addClass(`${params.bulletActiveClass}-next`) + .next() + .addClass(`${params.bulletActiveClass}-next-next`); + } + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize); + const offsetProp = rtl ? 'right' : 'left'; + bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`); + } + } + if (params.type === 'fraction') { + $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1)); + $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total)); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed); + } + if (params.type === 'custom' && params.renderCustom) { + $el.html(params.renderCustom(swiper, current + 1, total)); + swiper.emit('paginationRender', swiper, $el[0]); + } else { + swiper.emit('paginationUpdate', swiper, $el[0]); + } + $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + }, + render() { + // Render Container + const swiper = this; + const params = swiper.params.pagination; + if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + + const $el = swiper.pagination.$el; + let paginationHTML = ''; + if (params.type === 'bullets') { + const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + paginationHTML += `<${params.bulletElement} class="${params.bulletClass}">`; + } + } + $el.html(paginationHTML); + swiper.pagination.bullets = $el.find(`.${params.bulletClass}`); + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + + ' / ' + + ``; + } + $el.html(paginationHTML); + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + $el.html(paginationHTML); + } + if (params.type !== 'custom') { + swiper.emit('paginationRender', swiper.pagination.$el[0]); + } + }, + init() { + const swiper = this; + const params = swiper.params.pagination; + if (!params.el) return; + + let $el = $(params.el); + if ($el.length === 0) return; + + if ( + swiper.params.uniqueNavElements + && typeof params.el === 'string' + && $el.length > 1 + && swiper.$el.find(params.el).length === 1 + ) { + $el = swiper.$el.find(params.el); + } + + if (params.type === 'bullets' && params.clickable) { + $el.addClass(params.clickableClass); + } + + $el.addClass(params.modifierClass + params.type); + + if (params.type === 'bullets' && params.dynamicBullets) { + $el.addClass(`${params.modifierClass}${params.type}-dynamic`); + swiper.pagination.dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + $el.addClass(params.progressbarOppositeClass); + } + + if (params.clickable) { + $el.on('click', `.${params.bulletClass}`, function onClick(e) { + e.preventDefault(); + let index = $(this).index() * swiper.params.slidesPerGroup; + if (swiper.params.loop) index += swiper.loopedSlides; + swiper.slideTo(index); + }); + } + + Utils.extend(swiper.pagination, { + $el, + el: $el[0], + }); + }, + destroy() { + const swiper = this; + const params = swiper.params.pagination; + if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return; + const $el = swiper.pagination.$el; + + $el.removeClass(params.hiddenClass); + $el.removeClass(params.modifierClass + params.type); + if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass); + if (params.clickable) { + $el.off('click', `.${params.bulletClass}`); + } + }, +}; + +var Pagination$1 = { + name: 'pagination', + params: { + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: (number) => number, + formatFractionTotal: (number) => number, + bulletClass: 'swiper-pagination-bullet', + bulletActiveClass: 'swiper-pagination-bullet-active', + modifierClass: 'swiper-pagination-', // NEW + currentClass: 'swiper-pagination-current', + totalClass: 'swiper-pagination-total', + hiddenClass: 'swiper-pagination-hidden', + progressbarFillClass: 'swiper-pagination-progressbar-fill', + progressbarOppositeClass: 'swiper-pagination-progressbar-opposite', + clickableClass: 'swiper-pagination-clickable', // NEW + lockClass: 'swiper-pagination-lock', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + pagination: { + init: Pagination.init.bind(swiper), + render: Pagination.render.bind(swiper), + update: Pagination.update.bind(swiper), + destroy: Pagination.destroy.bind(swiper), + dynamicBulletIndex: 0, + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.pagination.init(); + swiper.pagination.render(); + swiper.pagination.update(); + }, + activeIndexChange() { + const swiper = this; + if (swiper.params.loop) { + swiper.pagination.update(); + } else if (typeof swiper.snapIndex === 'undefined') { + swiper.pagination.update(); + } + }, + snapIndexChange() { + const swiper = this; + if (!swiper.params.loop) { + swiper.pagination.update(); + } + }, + slidesLengthChange() { + const swiper = this; + if (swiper.params.loop) { + swiper.pagination.render(); + swiper.pagination.update(); + } + }, + snapGridLengthChange() { + const swiper = this; + if (!swiper.params.loop) { + swiper.pagination.render(); + swiper.pagination.update(); + } + }, + destroy() { + const swiper = this; + swiper.pagination.destroy(); + }, + click(e) { + const swiper = this; + if ( + swiper.params.pagination.el + && swiper.params.pagination.hideOnClick + && swiper.pagination.$el.length > 0 + && !$(e.target).hasClass(swiper.params.pagination.bulletClass) + ) { + const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + swiper.emit('paginationShow', swiper); + } else { + swiper.emit('paginationHide', swiper); + } + swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass); + } + }, + }, +}; + +const Scrollbar = { + setTranslate() { + const swiper = this; + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { scrollbar, rtlTranslate: rtl, progress } = swiper; + const { + dragSize, trackSize, $dragEl, $el, + } = scrollbar; + const params = swiper.params.scrollbar; + + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + $dragEl.transform(`translate3d(${newPos}px, 0, 0)`); + $dragEl[0].style.width = `${newSize}px`; + } else { + $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`); + $dragEl[0].style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(swiper.scrollbar.timeout); + $el[0].style.opacity = 1; + swiper.scrollbar.timeout = setTimeout(() => { + $el[0].style.opacity = 0; + $el.transition(400); + }, 1000); + } + }, + setTransition(duration) { + const swiper = this; + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.$dragEl.transition(duration); + }, + updateSize() { + const swiper = this; + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + + const { scrollbar } = swiper; + const { $dragEl, $el } = scrollbar; + + $dragEl[0].style.width = ''; + $dragEl[0].style.height = ''; + const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight; + + const divider = swiper.size / swiper.virtualSize; + const moveDivider = divider * (trackSize / swiper.size); + let dragSize; + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + + if (swiper.isHorizontal()) { + $dragEl[0].style.width = `${dragSize}px`; + } else { + $dragEl[0].style.height = `${dragSize}px`; + } + + if (divider >= 1) { + $el[0].style.display = 'none'; + } else { + $el[0].style.display = ''; + } + if (swiper.params.scrollbar.hide) { + $el[0].style.opacity = 0; + } + Utils.extend(scrollbar, { + trackSize, + divider, + moveDivider, + dragSize, + }); + scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); + }, + getPointerPosition(e) { + const swiper = this; + if (swiper.isHorizontal()) { + return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX); + } + return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY); + }, + setDragPosition(e) { + const swiper = this; + const { scrollbar, rtlTranslate: rtl } = swiper; + const { + $el, + dragSize, + trackSize, + dragStartPos, + } = scrollbar; + + let positionRatio; + positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] + - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + + const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio); + + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + }, + onDragStart(e) { + const swiper = this; + const params = swiper.params.scrollbar; + const { scrollbar, $wrapperEl } = swiper; + const { $el, $dragEl } = scrollbar; + swiper.scrollbar.isTouched = true; + swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl) + ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + + $wrapperEl.transition(100); + $dragEl.transition(100); + scrollbar.setDragPosition(e); + + clearTimeout(swiper.scrollbar.dragTimeout); + + $el.transition(0); + if (params.hide) { + $el.css('opacity', 1); + } + if (swiper.params.cssMode) { + swiper.$wrapperEl.css('scroll-snap-type', 'none'); + } + swiper.emit('scrollbarDragStart', e); + }, + onDragMove(e) { + const swiper = this; + const { scrollbar, $wrapperEl } = swiper; + const { $el, $dragEl } = scrollbar; + + if (!swiper.scrollbar.isTouched) return; + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + scrollbar.setDragPosition(e); + $wrapperEl.transition(0); + $el.transition(0); + $dragEl.transition(0); + swiper.emit('scrollbarDragMove', e); + }, + onDragEnd(e) { + const swiper = this; + + const params = swiper.params.scrollbar; + const { scrollbar, $wrapperEl } = swiper; + const { $el } = scrollbar; + + if (!swiper.scrollbar.isTouched) return; + swiper.scrollbar.isTouched = false; + if (swiper.params.cssMode) { + swiper.$wrapperEl.css('scroll-snap-type', ''); + $wrapperEl.transition(''); + } + if (params.hide) { + clearTimeout(swiper.scrollbar.dragTimeout); + swiper.scrollbar.dragTimeout = Utils.nextTick(() => { + $el.css('opacity', 0); + $el.transition(400); + }, 1000); + } + swiper.emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + }, + enableDraggable() { + const swiper = this; + if (!swiper.params.scrollbar.el) return; + const { + scrollbar, touchEventsTouch, touchEventsDesktop, params, + } = swiper; + const $el = scrollbar.$el; + const target = $el[0]; + const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; + const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + if (!Support.touch) { + target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); + document$1.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); + document$1.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); + } else { + target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener); + target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener); + target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener); + } + }, + disableDraggable() { + const swiper = this; + if (!swiper.params.scrollbar.el) return; + const { + scrollbar, touchEventsTouch, touchEventsDesktop, params, + } = swiper; + const $el = scrollbar.$el; + const target = $el[0]; + const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; + const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + if (!Support.touch) { + target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); + document$1.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); + document$1.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); + } else { + target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener); + target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener); + target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener); + } + }, + init() { + const swiper = this; + if (!swiper.params.scrollbar.el) return; + const { scrollbar, $el: $swiperEl } = swiper; + const params = swiper.params.scrollbar; + + let $el = $(params.el); + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { + $el = $swiperEl.find(params.el); + } + + let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`); + if ($dragEl.length === 0) { + $dragEl = $(`
      `); + $el.append($dragEl); + } + + Utils.extend(scrollbar, { + $el, + el: $el[0], + $dragEl, + dragEl: $dragEl[0], + }); + + if (params.draggable) { + scrollbar.enableDraggable(); + } + }, + destroy() { + const swiper = this; + swiper.scrollbar.disableDraggable(); + }, +}; + +var Scrollbar$1 = { + name: 'scrollbar', + params: { + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + scrollbar: { + init: Scrollbar.init.bind(swiper), + destroy: Scrollbar.destroy.bind(swiper), + updateSize: Scrollbar.updateSize.bind(swiper), + setTranslate: Scrollbar.setTranslate.bind(swiper), + setTransition: Scrollbar.setTransition.bind(swiper), + enableDraggable: Scrollbar.enableDraggable.bind(swiper), + disableDraggable: Scrollbar.disableDraggable.bind(swiper), + setDragPosition: Scrollbar.setDragPosition.bind(swiper), + getPointerPosition: Scrollbar.getPointerPosition.bind(swiper), + onDragStart: Scrollbar.onDragStart.bind(swiper), + onDragMove: Scrollbar.onDragMove.bind(swiper), + onDragEnd: Scrollbar.onDragEnd.bind(swiper), + isTouched: false, + timeout: null, + dragTimeout: null, + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.scrollbar.init(); + swiper.scrollbar.updateSize(); + swiper.scrollbar.setTranslate(); + }, + update() { + const swiper = this; + swiper.scrollbar.updateSize(); + }, + resize() { + const swiper = this; + swiper.scrollbar.updateSize(); + }, + observerUpdate() { + const swiper = this; + swiper.scrollbar.updateSize(); + }, + setTranslate() { + const swiper = this; + swiper.scrollbar.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + swiper.scrollbar.setTransition(duration); + }, + destroy() { + const swiper = this; + swiper.scrollbar.destroy(); + }, + }, +}; + +const Parallax = { + setTransform(el, progress) { + const swiper = this; + const { rtl } = swiper; + + const $el = $(el); + const rtlFactor = rtl ? -1 : 1; + + const p = $el.attr('data-swiper-parallax') || '0'; + let x = $el.attr('data-swiper-parallax-x'); + let y = $el.attr('data-swiper-parallax-y'); + const scale = $el.attr('data-swiper-parallax-scale'); + const opacity = $el.attr('data-swiper-parallax-opacity'); + + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + + if ((x).indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if ((y).indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress))); + $el[0].style.opacity = currentOpacity; + } + if (typeof scale === 'undefined' || scale === null) { + $el.transform(`translate3d(${x}, ${y}, 0px)`); + } else { + const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress))); + $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`); + } + }, + setTranslate() { + const swiper = this; + const { + $el, slides, progress, snapGrid, + } = swiper; + $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') + .each((index, el) => { + swiper.parallax.setTransform(el, progress); + }); + slides.each((slideIndex, slideEl) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1)); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') + .each((index, el) => { + swiper.parallax.setTransform(el, slideProgress); + }); + }); + }, + setTransition(duration = this.params.speed) { + const swiper = this; + const { $el } = swiper; + $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') + .each((index, parallaxEl) => { + const $parallaxEl = $(parallaxEl); + let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + $parallaxEl.transition(parallaxDuration); + }); + }, +}; + +var Parallax$1 = { + name: 'parallax', + params: { + parallax: { + enabled: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + parallax: { + setTransform: Parallax.setTransform.bind(swiper), + setTranslate: Parallax.setTranslate.bind(swiper), + setTransition: Parallax.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }, + init() { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.parallax.setTranslate(); + }, + setTranslate() { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.parallax.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.parallax.setTransition(duration); + }, + }, +}; + +const Zoom = { + // Calc Scale From Multi-touches + getDistanceBetweenTouches(e) { + if (e.targetTouches.length < 2) return 1; + const x1 = e.targetTouches[0].pageX; + const y1 = e.targetTouches[0].pageY; + const x2 = e.targetTouches[1].pageX; + const y2 = e.targetTouches[1].pageY; + const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2)); + return distance; + }, + // Events + onGestureStart(e) { + const swiper = this; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const { gesture } = zoom; + zoom.fakeGestureTouched = false; + zoom.fakeGestureMoved = false; + if (!Support.gestures) { + if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) { + return; + } + zoom.fakeGestureTouched = true; + gesture.scaleStart = Zoom.getDistanceBetweenTouches(e); + } + if (!gesture.$slideEl || !gesture.$slideEl.length) { + gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`); + if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target'); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + if (gesture.$imageWrapEl.length === 0) { + gesture.$imageEl = undefined; + return; + } + } + if (gesture.$imageEl) { + gesture.$imageEl.transition(0); + } + swiper.zoom.isScaling = true; + }, + onGestureChange(e) { + const swiper = this; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const { gesture } = zoom; + if (!Support.gestures) { + if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) { + return; + } + zoom.fakeGestureMoved = true; + gesture.scaleMove = Zoom.getDistanceBetweenTouches(e); + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + if (Support.gestures) { + zoom.scale = e.scale * zoom.currentScale; + } else { + zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale; + } + if (zoom.scale > gesture.maxRatio) { + zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5); + } + if (zoom.scale < params.minRatio) { + zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5); + } + gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`); + }, + onGestureEnd(e) { + const swiper = this; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const { gesture } = zoom; + if (!Support.gestures) { + if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) { + return; + } + if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) { + return; + } + zoom.fakeGestureTouched = false; + zoom.fakeGestureMoved = false; + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`); + zoom.currentScale = zoom.scale; + zoom.isScaling = false; + if (zoom.scale === 1) gesture.$slideEl = undefined; + }, + onTouchStart(e) { + const swiper = this; + const zoom = swiper.zoom; + const { gesture, image } = zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + if (image.isTouched) return; + if (Device.android) e.preventDefault(); + image.isTouched = true; + image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; + image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; + }, + onTouchMove(e) { + const swiper = this; + const zoom = swiper.zoom; + const { gesture, image, velocity } = zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + swiper.allowClick = false; + if (!image.isTouched || !gesture.$slideEl) return; + + if (!image.isMoved) { + image.width = gesture.$imageEl[0].offsetWidth; + image.height = gesture.$imageEl[0].offsetHeight; + image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0; + image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0; + gesture.slideWidth = gesture.$slideEl[0].offsetWidth; + gesture.slideHeight = gesture.$slideEl[0].offsetHeight; + gesture.$imageWrapEl.transition(0); + if (swiper.rtl) { + image.startX = -image.startX; + image.startY = -image.startY; + } + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + + if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; + + image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); + image.maxX = -image.minX; + image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); + image.maxY = -image.minY; + + image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; + image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; + + if (!image.isMoved && !zoom.isScaling) { + if ( + swiper.isHorizontal() + && ( + (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x) + || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x) + ) + ) { + image.isTouched = false; + return; + } if ( + !swiper.isHorizontal() + && ( + (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y) + || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y) + ) + ) { + image.isTouched = false; + return; + } + } + e.preventDefault(); + e.stopPropagation(); + + image.isMoved = true; + image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX; + image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY; + + if (image.currentX < image.minX) { + image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8); + } + if (image.currentX > image.maxX) { + image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8); + } + + if (image.currentY < image.minY) { + image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8); + } + if (image.currentY > image.maxY) { + image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8); + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + + gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); + }, + onTouchEnd() { + const swiper = this; + const zoom = swiper.zoom; + const { gesture, image, velocity } = zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + + image.currentX = newPositionX; + image.currentY = newPositionY; + + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); + image.maxX = -image.minX; + image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + + gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); + }, + onTransitionEnd() { + const swiper = this; + const zoom = swiper.zoom; + const { gesture } = zoom; + if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) { + if (gesture.$imageEl) { + gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); + } + if (gesture.$imageWrapEl) { + gesture.$imageWrapEl.transform('translate3d(0,0,0)'); + } + + zoom.scale = 1; + zoom.currentScale = 1; + + gesture.$slideEl = undefined; + gesture.$imageEl = undefined; + gesture.$imageWrapEl = undefined; + } + }, + // Toggle Zoom + toggle(e) { + const swiper = this; + const zoom = swiper.zoom; + + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoom.out(); + } else { + // Zoom In + zoom.in(e); + } + }, + in(e) { + const swiper = this; + + const zoom = swiper.zoom; + const params = swiper.params.zoom; + const { gesture, image } = zoom; + + if (!gesture.$slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); + } else { + gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + } + gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target'); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + + gesture.$slideEl.addClass(`${params.zoomedSlideClass}`); + + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; + touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + + zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + if (e) { + slideWidth = gesture.$slideEl[0].offsetWidth; + slideHeight = gesture.$slideEl[0].offsetHeight; + offsetX = gesture.$slideEl.offset().left; + offsetY = gesture.$slideEl.offset().top; + diffX = (offsetX + (slideWidth / 2)) - touchX; + diffY = (offsetY + (slideHeight / 2)) - touchY; + + imageWidth = gesture.$imageEl[0].offsetWidth; + imageHeight = gesture.$imageEl[0].offsetHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + + translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0); + translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`); + gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`); + }, + out() { + const swiper = this; + + const zoom = swiper.zoom; + const params = swiper.params.zoom; + const { gesture } = zoom; + + if (!gesture.$slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); + } else { + gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + } + gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target'); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + + zoom.scale = 1; + zoom.currentScale = 1; + gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); + gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); + gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`); + gesture.$slideEl = undefined; + }, + // Attach/Detach Events + enable() { + const swiper = this; + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + + const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; + const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true; + + const slideSelector = `.${swiper.params.slideClass}`; + + // Scale image + if (Support.gestures) { + swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener); + swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener); + } else if (swiper.touchEvents.start === 'touchstart') { + swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture); + swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener); + if (swiper.touchEvents.cancel) { + swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener); + } + } + + // Move image + swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture); + }, + disable() { + const swiper = this; + const zoom = swiper.zoom; + if (!zoom.enabled) return; + + swiper.zoom.enabled = false; + + const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; + const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true; + + const slideSelector = `.${swiper.params.slideClass}`; + + // Scale image + if (Support.gestures) { + swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener); + swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener); + } else if (swiper.touchEvents.start === 'touchstart') { + swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture); + swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener); + if (swiper.touchEvents.cancel) { + swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener); + } + } + + // Move image + swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture); + }, +}; + +var Zoom$1 = { + name: 'zoom', + params: { + zoom: { + enabled: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed', + }, + }, + create() { + const swiper = this; + const zoom = { + enabled: false, + scale: 1, + currentScale: 1, + isScaling: false, + gesture: { + $slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + $imageEl: undefined, + $imageWrapEl: undefined, + maxRatio: 3, + }, + image: { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {}, + }, + velocity: { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined, + }, + }; + + ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => { + zoom[methodName] = Zoom[methodName].bind(swiper); + }); + Utils.extend(swiper, { + zoom, + }); + + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined; + const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined; + swiper.emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.zoom.enabled) { + swiper.zoom.enable(); + } + }, + destroy() { + const swiper = this; + swiper.zoom.disable(); + }, + touchStart(e) { + const swiper = this; + if (!swiper.zoom.enabled) return; + swiper.zoom.onTouchStart(e); + }, + touchEnd(e) { + const swiper = this; + if (!swiper.zoom.enabled) return; + swiper.zoom.onTouchEnd(e); + }, + doubleTap(e) { + const swiper = this; + if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + swiper.zoom.toggle(e); + } + }, + transitionEnd() { + const swiper = this; + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + swiper.zoom.onTransitionEnd(); + } + }, + slideChange() { + const swiper = this; + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + swiper.zoom.onTransitionEnd(); + } + }, + }, +}; + +const Lazy = { + loadInSlide(index, loadInDuplicate = true) { + const swiper = this; + const params = swiper.params.lazy; + if (typeof index === 'undefined') return; + if (swiper.slides.length === 0) return; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + const $slideEl = isVirtual + ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`) + : swiper.slides.eq(index); + + let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`); + if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { + $images = $images.add($slideEl[0]); + } + if ($images.length === 0) return; + + $images.each((imageIndex, imageEl) => { + const $imageEl = $(imageEl); + $imageEl.addClass(params.loadingClass); + + const background = $imageEl.attr('data-background'); + const src = $imageEl.attr('data-src'); + const srcset = $imageEl.attr('data-srcset'); + const sizes = $imageEl.attr('data-sizes'); + + swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => { + if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return; + if (background) { + $imageEl.css('background-image', `url("${background}")`); + $imageEl.removeAttr('data-background'); + } else { + if (srcset) { + $imageEl.attr('srcset', srcset); + $imageEl.removeAttr('data-srcset'); + } + if (sizes) { + $imageEl.attr('sizes', sizes); + $imageEl.removeAttr('data-sizes'); + } + if (src) { + $imageEl.attr('src', src); + $imageEl.removeAttr('data-src'); + } + } + + $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); + $slideEl.find(`.${params.preloaderClass}`).remove(); + if (swiper.params.loop && loadInDuplicate) { + const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); + if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { + const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`); + swiper.lazy.loadInSlide(originalSlide.index(), false); + } else { + const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`); + swiper.lazy.loadInSlide(duplicatedSlide.index(), false); + } + } + swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]); + if (swiper.params.autoHeight) { + swiper.updateAutoHeight(); + } + }); + + swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]); + }); + }, + load() { + const swiper = this; + const { + $wrapperEl, params: swiperParams, slides, activeIndex, + } = swiper; + const isVirtual = swiper.virtual && swiperParams.virtual.enabled; + const params = swiperParams.lazy; + + let slidesPerView = swiperParams.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = 0; + } + + function slideExist(index) { + if (isVirtual) { + if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) { + return true; + } + } else if (slides[index]) return true; + return false; + } + function slideIndex(slideEl) { + if (isVirtual) { + return $(slideEl).attr('data-swiper-slide-index'); + } + return $(slideEl).index(); + } + + if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true; + if (swiper.params.watchSlidesVisibility) { + $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => { + const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index(); + swiper.lazy.loadInSlide(index); + }); + } else if (slidesPerView > 1) { + for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) { + if (slideExist(i)) swiper.lazy.loadInSlide(i); + } + } else { + swiper.lazy.loadInSlide(activeIndex); + } + if (params.loadPrevNext) { + if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) { + const amount = params.loadPrevNextAmount; + const spv = slidesPerView; + const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); + const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); + // Next Slides + for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) { + if (slideExist(i)) swiper.lazy.loadInSlide(i); + } + // Prev Slides + for (let i = minIndex; i < activeIndex; i += 1) { + if (slideExist(i)) swiper.lazy.loadInSlide(i); + } + } else { + const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`); + if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide)); + + const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`); + if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide)); + } + } + }, +}; + +var Lazy$1 = { + name: 'lazy', + params: { + lazy: { + enabled: false, + loadPrevNext: false, + loadPrevNextAmount: 1, + loadOnTransitionStart: false, + + elementClass: 'swiper-lazy', + loadingClass: 'swiper-lazy-loading', + loadedClass: 'swiper-lazy-loaded', + preloaderClass: 'swiper-lazy-preloader', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + lazy: { + initialImageLoaded: false, + load: Lazy.load.bind(swiper), + loadInSlide: Lazy.loadInSlide.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.lazy.enabled && swiper.params.preloadImages) { + swiper.params.preloadImages = false; + } + }, + init() { + const swiper = this; + if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) { + swiper.lazy.load(); + } + }, + scroll() { + const swiper = this; + if (swiper.params.freeMode && !swiper.params.freeModeSticky) { + swiper.lazy.load(); + } + }, + resize() { + const swiper = this; + if (swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + }, + scrollbarDragMove() { + const swiper = this; + if (swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + }, + transitionStart() { + const swiper = this; + if (swiper.params.lazy.enabled) { + if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) { + swiper.lazy.load(); + } + } + }, + transitionEnd() { + const swiper = this; + if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { + swiper.lazy.load(); + } + }, + slideChange() { + const swiper = this; + if (swiper.params.lazy.enabled && swiper.params.cssMode) { + swiper.lazy.load(); + } + }, + }, +}; + +/* eslint no-bitwise: ["error", { "allow": [">>"] }] */ + +const Controller = { + LinearSpline: function LinearSpline(x, y) { + const binarySearch = (function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }()); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1]; + }; + return this; + }, + // xxx: for now i will just save one spline function to to + getInterpolateFunction(c) { + const swiper = this; + if (!swiper.controller.spline) { + swiper.controller.spline = swiper.params.loop + ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) + : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid); + } + }, + setTranslate(setTranslate, byController) { + const swiper = this; + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + function setControlledTranslate(c) { + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + swiper.controller.getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate(); + } + + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + }, + setTransition(duration, byController) { + const swiper = this; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + Utils.nextTick(() => { + c.updateAutoHeight(); + }); + } + c.$wrapperEl.transitionEnd(() => { + if (!controlled) return; + if (c.params.loop && swiper.params.controller.by === 'slide') { + c.loopFix(); + } + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + }, +}; +var Controller$1 = { + name: 'controller', + params: { + controller: { + control: undefined, + inverse: false, + by: 'slide', // or 'container' + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + controller: { + control: swiper.params.controller.control, + getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper), + setTranslate: Controller.setTranslate.bind(swiper), + setTransition: Controller.setTransition.bind(swiper), + }, + }); + }, + on: { + update() { + const swiper = this; + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + }, + resize() { + const swiper = this; + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + }, + observerUpdate() { + const swiper = this; + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + }, + setTranslate(translate, byController) { + const swiper = this; + if (!swiper.controller.control) return; + swiper.controller.setTranslate(translate, byController); + }, + setTransition(duration, byController) { + const swiper = this; + if (!swiper.controller.control) return; + swiper.controller.setTransition(duration, byController); + }, + }, +}; + +const a11y = { + makeElFocusable($el) { + $el.attr('tabIndex', '0'); + return $el; + }, + addElRole($el, role) { + $el.attr('role', role); + return $el; + }, + addElLabel($el, label) { + $el.attr('aria-label', label); + return $el; + }, + disableEl($el) { + $el.attr('aria-disabled', true); + return $el; + }, + enableEl($el) { + $el.attr('aria-disabled', false); + return $el; + }, + onEnterKey(e) { + const swiper = this; + const params = swiper.params.a11y; + if (e.keyCode !== 13) return; + const $targetEl = $(e.target); + if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + swiper.a11y.notify(params.lastSlideMessage); + } else { + swiper.a11y.notify(params.nextSlideMessage); + } + } + if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + swiper.a11y.notify(params.firstSlideMessage); + } else { + swiper.a11y.notify(params.prevSlideMessage); + } + } + if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) { + $targetEl[0].click(); + } + }, + notify(message) { + const swiper = this; + const notification = swiper.a11y.liveRegion; + if (notification.length === 0) return; + notification.html(''); + notification.html(message); + }, + updateNavigation() { + const swiper = this; + + if (swiper.params.loop || !swiper.navigation) return; + const { $nextEl, $prevEl } = swiper.navigation; + + if ($prevEl && $prevEl.length > 0) { + if (swiper.isBeginning) { + swiper.a11y.disableEl($prevEl); + } else { + swiper.a11y.enableEl($prevEl); + } + } + if ($nextEl && $nextEl.length > 0) { + if (swiper.isEnd) { + swiper.a11y.disableEl($nextEl); + } else { + swiper.a11y.enableEl($nextEl); + } + } + }, + updatePagination() { + const swiper = this; + const params = swiper.params.a11y; + if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { + swiper.pagination.bullets.each((bulletIndex, bulletEl) => { + const $bulletEl = $(bulletEl); + swiper.a11y.makeElFocusable($bulletEl); + swiper.a11y.addElRole($bulletEl, 'button'); + swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1)); + }); + } + }, + init() { + const swiper = this; + + swiper.$el.append(swiper.a11y.liveRegion); + + // Navigation + const params = swiper.params.a11y; + let $nextEl; + let $prevEl; + if (swiper.navigation && swiper.navigation.$nextEl) { + $nextEl = swiper.navigation.$nextEl; + } + if (swiper.navigation && swiper.navigation.$prevEl) { + $prevEl = swiper.navigation.$prevEl; + } + if ($nextEl) { + swiper.a11y.makeElFocusable($nextEl); + swiper.a11y.addElRole($nextEl, 'button'); + swiper.a11y.addElLabel($nextEl, params.nextSlideMessage); + $nextEl.on('keydown', swiper.a11y.onEnterKey); + } + if ($prevEl) { + swiper.a11y.makeElFocusable($prevEl); + swiper.a11y.addElRole($prevEl, 'button'); + swiper.a11y.addElLabel($prevEl, params.prevSlideMessage); + $prevEl.on('keydown', swiper.a11y.onEnterKey); + } + + // Pagination + if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { + swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey); + } + }, + destroy() { + const swiper = this; + if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove(); + + let $nextEl; + let $prevEl; + if (swiper.navigation && swiper.navigation.$nextEl) { + $nextEl = swiper.navigation.$nextEl; + } + if (swiper.navigation && swiper.navigation.$prevEl) { + $prevEl = swiper.navigation.$prevEl; + } + if ($nextEl) { + $nextEl.off('keydown', swiper.a11y.onEnterKey); + } + if ($prevEl) { + $prevEl.off('keydown', swiper.a11y.onEnterKey); + } + + // Pagination + if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { + swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey); + } + }, +}; +var A11y = { + name: 'a11y', + params: { + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + a11y: { + liveRegion: $(``), + }, + }); + Object.keys(a11y).forEach((methodName) => { + swiper.a11y[methodName] = a11y[methodName].bind(swiper); + }); + }, + on: { + init() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.init(); + swiper.a11y.updateNavigation(); + }, + toEdge() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.updateNavigation(); + }, + fromEdge() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.updateNavigation(); + }, + paginationUpdate() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.updatePagination(); + }, + destroy() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.destroy(); + }, + }, +}; + +const History = { + init() { + const swiper = this; + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + const history = swiper.history; + history.initialized = true; + history.paths = History.getPathValues(); + if (!history.paths.key && !history.paths.value) return; + history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', swiper.history.setHistoryPopState); + } + }, + destroy() { + const swiper = this; + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', swiper.history.setHistoryPopState); + } + }, + setHistoryPopState() { + const swiper = this; + swiper.history.paths = History.getPathValues(); + swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false); + }, + getPathValues() { + const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { key, value }; + }, + setHistory(key, index) { + const swiper = this; + if (!swiper.history.initialized || !swiper.params.history.enabled) return; + const slide = swiper.slides.eq(index); + let value = History.slugify(slide.attr('data-history')); + if (!window.location.pathname.includes(key)) { + value = `${key}/${value}`; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ value }, null, value); + } else { + window.history.pushState({ value }, null, value); + } + }, + slugify(text) { + return text.toString() + .replace(/\s+/g, '-') + .replace(/[^\w-]+/g, '') + .replace(/--+/g, '-') + .replace(/^-+/, '') + .replace(/-+$/, ''); + }, + scrollToSlide(speed, value, runCallbacks) { + const swiper = this; + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides.eq(i); + const slideHistory = History.slugify(slide.attr('data-history')); + if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) { + const index = slide.index(); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }, +}; + +var History$1 = { + name: 'history', + params: { + history: { + enabled: false, + replaceState: false, + key: 'slides', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + history: { + init: History.init.bind(swiper), + setHistory: History.setHistory.bind(swiper), + setHistoryPopState: History.setHistoryPopState.bind(swiper), + scrollToSlide: History.scrollToSlide.bind(swiper), + destroy: History.destroy.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.history.enabled) { + swiper.history.init(); + } + }, + destroy() { + const swiper = this; + if (swiper.params.history.enabled) { + swiper.history.destroy(); + } + }, + transitionEnd() { + const swiper = this; + if (swiper.history.initialized) { + swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex); + } + }, + slideChange() { + const swiper = this; + if (swiper.history.initialized && swiper.params.cssMode) { + swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex); + } + }, + }, +}; + +const HashNavigation = { + onHashCange() { + const swiper = this; + const newHash = document$1.location.hash.replace('#', ''); + const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash'); + if (newHash !== activeSlideHash) { + const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index(); + if (typeof newIndex === 'undefined') return; + swiper.slideTo(newIndex); + } + }, + setHash() { + const swiper = this; + if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '')); + } else { + const slide = swiper.slides.eq(swiper.activeIndex); + const hash = slide.attr('data-hash') || slide.attr('data-history'); + document$1.location.hash = hash || ''; + } + }, + init() { + const swiper = this; + if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return; + swiper.hashNavigation.initialized = true; + const hash = document$1.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides.eq(i); + const slideHash = slide.attr('data-hash') || slide.attr('data-history'); + if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) { + const index = slide.index(); + swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); + } + } + } + if (swiper.params.hashNavigation.watchState) { + $(window).on('hashchange', swiper.hashNavigation.onHashCange); + } + }, + destroy() { + const swiper = this; + if (swiper.params.hashNavigation.watchState) { + $(window).off('hashchange', swiper.hashNavigation.onHashCange); + } + }, +}; +var HashNavigation$1 = { + name: 'hash-navigation', + params: { + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + hashNavigation: { + initialized: false, + init: HashNavigation.init.bind(swiper), + destroy: HashNavigation.destroy.bind(swiper), + setHash: HashNavigation.setHash.bind(swiper), + onHashCange: HashNavigation.onHashCange.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.hashNavigation.enabled) { + swiper.hashNavigation.init(); + } + }, + destroy() { + const swiper = this; + if (swiper.params.hashNavigation.enabled) { + swiper.hashNavigation.destroy(); + } + }, + transitionEnd() { + const swiper = this; + if (swiper.hashNavigation.initialized) { + swiper.hashNavigation.setHash(); + } + }, + slideChange() { + const swiper = this; + if (swiper.hashNavigation.initialized && swiper.params.cssMode) { + swiper.hashNavigation.setHash(); + } + }, + }, +}; + +/* eslint no-underscore-dangle: "off" */ + +const Autoplay = { + run() { + const swiper = this; + const $activeSlideEl = swiper.slides.eq(swiper.activeIndex); + let delay = swiper.params.autoplay.delay; + if ($activeSlideEl.attr('data-swiper-autoplay')) { + delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; + } + clearTimeout(swiper.autoplay.timeout); + swiper.autoplay.timeout = Utils.nextTick(() => { + if (swiper.params.autoplay.reverseDirection) { + if (swiper.params.loop) { + swiper.loopFix(); + swiper.slidePrev(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.isBeginning) { + swiper.slidePrev(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else { + swiper.autoplay.stop(); + } + } else if (swiper.params.loop) { + swiper.loopFix(); + swiper.slideNext(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.isEnd) { + swiper.slideNext(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else { + swiper.autoplay.stop(); + } + if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run(); + }, delay); + }, + start() { + const swiper = this; + if (typeof swiper.autoplay.timeout !== 'undefined') return false; + if (swiper.autoplay.running) return false; + swiper.autoplay.running = true; + swiper.emit('autoplayStart'); + swiper.autoplay.run(); + return true; + }, + stop() { + const swiper = this; + if (!swiper.autoplay.running) return false; + if (typeof swiper.autoplay.timeout === 'undefined') return false; + + if (swiper.autoplay.timeout) { + clearTimeout(swiper.autoplay.timeout); + swiper.autoplay.timeout = undefined; + } + swiper.autoplay.running = false; + swiper.emit('autoplayStop'); + return true; + }, + pause(speed) { + const swiper = this; + if (!swiper.autoplay.running) return; + if (swiper.autoplay.paused) return; + if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout); + swiper.autoplay.paused = true; + if (speed === 0 || !swiper.params.autoplay.waitForTransition) { + swiper.autoplay.paused = false; + swiper.autoplay.run(); + } else { + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); + } + }, +}; + +var Autoplay$1 = { + name: 'autoplay', + params: { + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: true, + stopOnLastSlide: false, + reverseDirection: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + autoplay: { + running: false, + paused: false, + run: Autoplay.run.bind(swiper), + start: Autoplay.start.bind(swiper), + stop: Autoplay.stop.bind(swiper), + pause: Autoplay.pause.bind(swiper), + onVisibilityChange() { + if (document.visibilityState === 'hidden' && swiper.autoplay.running) { + swiper.autoplay.pause(); + } + if (document.visibilityState === 'visible' && swiper.autoplay.paused) { + swiper.autoplay.run(); + swiper.autoplay.paused = false; + } + }, + onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); + swiper.autoplay.paused = false; + if (!swiper.autoplay.running) { + swiper.autoplay.stop(); + } else { + swiper.autoplay.run(); + } + }, + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.autoplay.enabled) { + swiper.autoplay.start(); + document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange); + } + }, + beforeTransitionStart(speed, internal) { + const swiper = this; + if (swiper.autoplay.running) { + if (internal || !swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.pause(speed); + } else { + swiper.autoplay.stop(); + } + } + }, + sliderFirstMove() { + const swiper = this; + if (swiper.autoplay.running) { + if (swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.stop(); + } else { + swiper.autoplay.pause(); + } + } + }, + touchEnd() { + const swiper = this; + if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.run(); + } + }, + destroy() { + const swiper = this; + if (swiper.autoplay.running) { + swiper.autoplay.stop(); + } + document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange); + }, + }, +}; + +const Fade = { + setTranslate() { + const swiper = this; + const { slides } = swiper; + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = swiper.slides.eq(i); + const offset = $slideEl[0].swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade + ? Math.max(1 - Math.abs($slideEl[0].progress), 0) + : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); + $slideEl + .css({ + opacity: slideOpacity, + }) + .transform(`translate3d(${tx}px, ${ty}px, 0px)`); + } + }, + setTransition(duration) { + const swiper = this; + const { slides, $wrapperEl } = swiper; + slides.transition(duration); + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + slides.transitionEnd(() => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const triggerEvents = ['webkitTransitionEnd', 'transitionend']; + for (let i = 0; i < triggerEvents.length; i += 1) { + $wrapperEl.trigger(triggerEvents[i]); + } + }); + } + }, +}; + +var EffectFade = { + name: 'effect-fade', + params: { + fadeEffect: { + crossFade: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + fadeEffect: { + setTranslate: Fade.setTranslate.bind(swiper), + setTransition: Fade.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'fade') return; + swiper.classNames.push(`${swiper.params.containerModifierClass}fade`); + const overwriteParams = { + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'fade') return; + swiper.fadeEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'fade') return; + swiper.fadeEffect.setTransition(duration); + }, + }, +}; + +const Cube = { + setTranslate() { + const swiper = this; + const { + $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize, + } = swiper; + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let $cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow'); + if ($cubeShadowEl.length === 0) { + $cubeShadowEl = $('
      '); + $wrapperEl.append($cubeShadowEl); + } + $cubeShadowEl.css({ height: `${swiperWidth}px` }); + } else { + $cubeShadowEl = $el.find('.swiper-cube-shadow'); + if ($cubeShadowEl.length === 0) { + $cubeShadowEl = $('
      '); + $el.append($cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min($slideEl[0].progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + (round * 4 * swiperSize); + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = (3 * swiperSize) + (swiperSize * 4 * round); + } + if (rtl) { + tx = -tx; + } + + if (!isHorizontal) { + ty = tx; + tx = 0; + } + + const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = (slideIndex * 90) + (progress * 90); + if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90); + } + $slideEl.transform(transform); + if (params.slideShadows) { + // Set shadows + let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + if (shadowBefore.length === 0) { + shadowBefore = $(`
      `); + $slideEl.append(shadowBefore); + } + if (shadowAfter.length === 0) { + shadowAfter = $(`
      `); + $slideEl.append(shadowAfter); + } + if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); + if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); + } + } + $wrapperEl.css({ + '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`, + '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`, + '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`, + 'transform-origin': `50% 50% -${swiperSize / 2}px`, + }); + + if (params.shadow) { + if (isHorizontal) { + $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`); + } else { + const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90); + const multiplier = 1.5 - ( + (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2) + + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2) + ); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`); + } + } + const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0; + $wrapperEl + .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`); + }, + setTransition(duration) { + const swiper = this; + const { $el, slides } = swiper; + slides + .transition(duration) + .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') + .transition(duration); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + $el.find('.swiper-cube-shadow').transition(duration); + } + }, +}; + +var EffectCube = { + name: 'effect-cube', + params: { + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + cubeEffect: { + setTranslate: Cube.setTranslate.bind(swiper), + setTransition: Cube.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'cube') return; + swiper.classNames.push(`${swiper.params.containerModifierClass}cube`); + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + const overwriteParams = { + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'cube') return; + swiper.cubeEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'cube') return; + swiper.cubeEffect.setTransition(duration); + }, + }, +}; + +const Flip = { + setTranslate() { + const swiper = this; + const { slides, rtlTranslate: rtl } = swiper; + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + let progress = $slideEl[0].progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min($slideEl[0].progress, 1), -1); + } + const offset = $slideEl[0].swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + + $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + + if (swiper.params.flipEffect.slideShadows) { + // Set shadows + let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + if (shadowBefore.length === 0) { + shadowBefore = $(`
      `); + $slideEl.append(shadowBefore); + } + if (shadowAfter.length === 0) { + shadowAfter = $(`
      `); + $slideEl.append(shadowAfter); + } + if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); + if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); + } + $slideEl + .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`); + } + }, + setTransition(duration) { + const swiper = this; + const { slides, activeIndex, $wrapperEl } = swiper; + slides + .transition(duration) + .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') + .transition(duration); + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + // eslint-disable-next-line + slides.eq(activeIndex).transitionEnd(function onTransitionEnd() { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + // if (!$(this).hasClass(swiper.params.slideActiveClass)) return; + eventTriggered = true; + swiper.animating = false; + const triggerEvents = ['webkitTransitionEnd', 'transitionend']; + for (let i = 0; i < triggerEvents.length; i += 1) { + $wrapperEl.trigger(triggerEvents[i]); + } + }); + } + }, +}; + +var EffectFlip = { + name: 'effect-flip', + params: { + flipEffect: { + slideShadows: true, + limitRotation: true, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + flipEffect: { + setTranslate: Flip.setTranslate.bind(swiper), + setTransition: Flip.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'flip') return; + swiper.classNames.push(`${swiper.params.containerModifierClass}flip`); + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + const overwriteParams = { + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'flip') return; + swiper.flipEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'flip') return; + swiper.flipEffect.setTransition(duration); + }, + }, +}; + +const Coverflow = { + setTranslate() { + const swiper = this; + const { + width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid, + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2); + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const $slideEl = slides.eq(i); + const slideSize = slidesSizesGrid[i]; + const slideOffset = $slideEl[0].swiperSlideOffset; + const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier; + + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = ((parseFloat(params.stretch) / 100) * slideSize); + } + let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier); + let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0; + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; + + $slideEl.transform(slideTransform); + $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + if ($shadowBeforeEl.length === 0) { + $shadowBeforeEl = $(`
      `); + $slideEl.append($shadowBeforeEl); + } + if ($shadowAfterEl.length === 0) { + $shadowAfterEl = $(`
      `); + $slideEl.append($shadowAfterEl); + } + if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; + } + } + + // Set correct perspective for IE10 + if (Support.pointerEvents || Support.prefixedPointerEvents) { + const ws = $wrapperEl[0].style; + ws.perspectiveOrigin = `${center}px 50%`; + } + }, + setTransition(duration) { + const swiper = this; + swiper.slides + .transition(duration) + .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') + .transition(duration); + }, +}; + +var EffectCoverflow = { + name: 'effect-coverflow', + params: { + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + modifier: 1, + slideShadows: true, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + coverflowEffect: { + setTranslate: Coverflow.setTranslate.bind(swiper), + setTransition: Coverflow.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'coverflow') return; + + swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`); + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'coverflow') return; + swiper.coverflowEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'coverflow') return; + swiper.coverflowEffect.setTransition(duration); + }, + }, +}; + +const Thumbs = { + init() { + const swiper = this; + const { thumbs: thumbsParams } = swiper.params; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Utils.extend(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false, + }); + Utils.extend(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false, + }); + } else if (Utils.isObject(thumbsParams.swiper)) { + swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, { + watchSlidesVisibility: true, + watchSlidesProgress: true, + slideToClickedSlide: false, + })); + swiper.thumbs.swiperCreated = true; + } + swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick); + }, + onThumbClick() { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + let currentIndex = swiper.activeIndex; + if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) { + swiper.loopFix(); + // eslint-disable-next-line + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + currentIndex = swiper.activeIndex; + } + const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); + const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); + if (typeof prevIndex === 'undefined') slideToIndex = nextIndex; + else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex; + else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex; + else slideToIndex = prevIndex; + } + swiper.slideTo(slideToIndex); + }, + update(initial) { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' + ? thumbsSwiper.slidesPerViewDynamic() + : thumbsSwiper.params.slidesPerView; + + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + let currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) { + thumbsSwiper.loopFix(); + // eslint-disable-next-line + thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft; + currentThumbsIndex = thumbsSwiper.activeIndex; + } + // Find actual thumbs index to slide to + const prevThumbsIndex = thumbsSwiper.slides + .eq(currentThumbsIndex) + .prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0) + .index(); + const nextThumbsIndex = thumbsSwiper.slides + .eq(currentThumbsIndex) + .nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0) + .index(); + if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex; + else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex; + else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex; + else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex; + else newThumbsIndex = prevThumbsIndex; + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - slidesPerView + 1; + } + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + + thumbsToActivate = Math.floor(thumbsToActivate); + + thumbsSwiper.slides.removeClass(thumbActiveClass); + if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) { + for (let i = 0; i < thumbsToActivate; i += 1) { + thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass); + } + } + }, +}; +var Thumbs$1 = { + name: 'thumbs', + params: { + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-container-thumbs', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + thumbs: { + swiper: null, + init: Thumbs.init.bind(swiper), + update: Thumbs.update.bind(swiper), + onThumbClick: Thumbs.onThumbClick.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + const { thumbs } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + swiper.thumbs.init(); + swiper.thumbs.update(true); + }, + slideChange() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + update() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + resize() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + observerUpdate() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + setTransition(duration) { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + thumbsSwiper.setTransition(duration); + }, + beforeDestroy() { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + if (swiper.thumbs.swiperCreated && thumbsSwiper) { + thumbsSwiper.destroy(); + } + }, + }, +}; + +// Swiper Class + +const components = [ + Device$1, + Support$1, + Browser$1, + Resize, + Observer$1, + Virtual$1, + Keyboard$1, + Mousewheel$1, + Navigation$1, + Pagination$1, + Scrollbar$1, + Parallax$1, + Zoom$1, + Lazy$1, + Controller$1, + A11y, + History$1, + HashNavigation$1, + Autoplay$1, + EffectFade, + EffectCube, + EffectFlip, + EffectCoverflow, + Thumbs$1 +]; + +if (typeof Swiper.use === 'undefined') { + Swiper.use = Swiper.Class.use; + Swiper.installModule = Swiper.Class.installModule; +} + +Swiper.use(components); + +export default Swiper; +//# sourceMappingURL=swiper.esm.bundle.js.map diff --git a/static/libs/swiper-5.3.8/package/js/swiper.esm.bundle.js.map b/static/libs/swiper-5.3.8/package/js/swiper.esm.bundle.js.map new file mode 100644 index 0000000..7e12b9f --- /dev/null +++ b/static/libs/swiper-5.3.8/package/js/swiper.esm.bundle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper.esm.bundle.js.map","sources":["../src/utils/dom.js","../src/utils/utils.js","../src/utils/support.js","../src/utils/class.js","../src/components/core/update/updateSize.js","../src/components/core/update/updateSlides.js","../src/components/core/update/updateAutoHeight.js","../src/components/core/update/updateSlidesOffset.js","../src/components/core/update/updateSlidesProgress.js","../src/components/core/update/updateProgress.js","../src/components/core/update/updateSlidesClasses.js","../src/components/core/update/updateActiveIndex.js","../src/components/core/update/updateClickedSlide.js","../src/components/core/update/index.js","../src/components/core/translate/getTranslate.js","../src/components/core/translate/setTranslate.js","../src/components/core/translate/minTranslate.js","../src/components/core/translate/maxTranslate.js","../src/components/core/translate/translateTo.js","../src/components/core/translate/index.js","../src/components/core/transition/setTransition.js","../src/components/core/transition/transitionStart.js","../src/components/core/transition/transitionEnd.js","../src/components/core/transition/index.js","../src/components/core/slide/slideTo.js","../src/components/core/slide/slideToLoop.js","../src/components/core/slide/slideNext.js","../src/components/core/slide/slidePrev.js","../src/components/core/slide/slideReset.js","../src/components/core/slide/slideToClosest.js","../src/components/core/slide/slideToClickedSlide.js","../src/components/core/slide/index.js","../src/components/core/loop/loopCreate.js","../src/components/core/loop/loopFix.js","../src/components/core/loop/loopDestroy.js","../src/components/core/loop/index.js","../src/components/core/grab-cursor/setGrabCursor.js","../src/components/core/grab-cursor/unsetGrabCursor.js","../src/components/core/grab-cursor/index.js","../src/components/core/manipulation/appendSlide.js","../src/components/core/manipulation/prependSlide.js","../src/components/core/manipulation/addSlide.js","../src/components/core/manipulation/removeSlide.js","../src/components/core/manipulation/removeAllSlides.js","../src/components/core/manipulation/index.js","../src/utils/device.js","../src/components/core/events/onTouchStart.js","../src/components/core/events/onTouchMove.js","../src/components/core/events/onTouchEnd.js","../src/components/core/events/onResize.js","../src/components/core/events/onClick.js","../src/components/core/events/onScroll.js","../src/components/core/events/index.js","../src/components/core/breakpoints/setBreakpoint.js","../src/components/core/breakpoints/getBreakpoint.js","../src/components/core/breakpoints/index.js","../src/components/core/classes/addClasses.js","../src/components/core/classes/removeClasses.js","../src/components/core/classes/index.js","../src/components/core/images/loadImage.js","../src/components/core/images/preloadImages.js","../src/components/core/images/index.js","../src/components/core/check-overflow/index.js","../src/components/core/defaults.js","../src/components/core/core-class.js","../src/modules/device/device.js","../src/modules/support/support.js","../src/utils/browser.js","../src/modules/browser/browser.js","../src/modules/resize/resize.js","../src/modules/observer/observer.js","../src/components/virtual/virtual.js","../src/components/keyboard/keyboard.js","../src/components/mousewheel/mousewheel.js","../src/components/navigation/navigation.js","../src/components/pagination/pagination.js","../src/components/scrollbar/scrollbar.js","../src/components/parallax/parallax.js","../src/components/zoom/zoom.js","../src/components/lazy/lazy.js","../src/components/controller/controller.js","../src/components/a11y/a11y.js","../src/components/history/history.js","../src/components/hash-navigation/hash-navigation.js","../src/components/autoplay/autoplay.js","../src/components/effect-fade/effect-fade.js","../src/components/effect-cube/effect-cube.js","../src/components/effect-flip/effect-flip.js","../src/components/effect-coverflow/effect-coverflow.js","../src/components/thumbs/thumbs.js","../src/swiper.js"],"sourcesContent":["import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n add,\n styles,\n} from 'dom7/dist/dom7.modular';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n add,\n styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n});\n\nexport default $;\n","import { window } from 'ssr-window';\n\nconst Utils = {\n deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n },\n nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n },\n now() {\n return Date.now();\n },\n getTranslate(el, axis = 'x') {\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n },\n parseUrlQuery(url) {\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n return query;\n },\n isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend(...args) {\n const to = Object(args[0]);\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n};\nexport default Utils;\n","import { window, document } from 'ssr-window';\n\nconst Support = (function Support() {\n return {\n touch: (window.Modernizr && window.Modernizr.touch === true) || (function checkTouch() {\n return !!((window.navigator.maxTouchPoints > 0) || ('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch));\n }()),\n\n pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints > 0,\n\n observer: (function checkObserver() {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n }()),\n };\n}());\n\nexport default Support;\n","import Utils from './utils';\n\nclass SwiperClass {\n constructor(params = {}) {\n const self = this;\n self.params = params;\n\n // Events\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n }\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n const moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach((m) => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nexport default SwiperClass;\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { window } from 'ssr-window';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const params = swiper.params;\n\n const {\n $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n function slidesForMargin(slideIndex) {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.snapGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '' });\n\n let slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n\n // Calc slides\n let slideSize;\n const slidesPerColumn = params.slidesPerColumn;\n const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0\n ? params.slidesPerGroup\n : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;\n\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - (column * slidesPerColumn);\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide.css(\n `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n );\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n const slideStyles = window.getComputedStyle(slide[0], null);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal()\n ? slide.outerWidth(true)\n : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n const width = parseFloat(slideStyles.getPropertyValue('width'));\n const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n }\n } else {\n const height = parseFloat(slideStyles.getPropertyValue('height'));\n const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = height + marginTop + marginBottom;\n } else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n if (swiper.isHorizontal()) {\n slides[i].style.width = `${slideSize}px`;\n } else {\n slides[i].style.height = `${slideSize}px`;\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n let newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Utils.extend(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\n","export default function (speed) {\n const swiper = this;\n const activeSlides = [];\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((index, slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length) break;\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function () {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n const slideProgress = (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n || (slideAfter > 1 && slideAfter <= swiper.size)\n || (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / (translatesDiff);\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Utils.extend(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function () {\n const swiper = this;\n\n const {\n slides, params, $wrapperEl, activeIndex, realIndex,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) slideFound = true;\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = $(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function (axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const {\n params, rtlTranslate: rtl, translate, $wrapperEl,\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function (translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function () {\n return (-this.snapGrid[0]);\n}\n","export default function () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n","export default function (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n\n const {\n params,\n wrapperEl,\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","export default function (duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","export default function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}\n","export default function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex, params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}\n","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n let t = -translate;\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating } = swiper;\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params, animating, snapGrid, slidesGrid, rtlTranslate,\n } = swiper;\n\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));\n\n const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach((snap) => {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n let prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((index, el) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function () {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function () {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","import Support from '../../../utils/support';\n\nexport default function (moving) {\n const swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n const el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","import Support from '../../../utils/support';\n\nexport default function () {\n const swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n swiper.el.style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","import Support from '../../../utils/support';\n\nexport default function (index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function () {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\n\nexport default {\n appendSlide,\n prependSlide,\n addSlide,\n removeSlide,\n removeAllSlides,\n};\n","import { window } from 'ssr-window';\nimport Support from './support';\n\nconst Device = (function Device() {\n const platform = window.navigator.platform;\n const ua = window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!(window.cordova || window.phonegap),\n phonegap: !!(window.cordova || window.phonegap),\n electron: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n if (!ipad\n && macos\n && Support.touch\n && (\n (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9\n || (screenWidth === 834 && screenHeight === 1194) // Pro 11\n || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5\n || (screenWidth === 768 && screenHeight === 1024) // other\n )\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone))\n || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron;\n if (device.desktop) {\n device.electron = electron;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Export object\n return device;\n}());\n\nexport default Device;\n","import { window, document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= window.screen.width - edgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.formElements)) preventDefault = false;\n if (\n document.activeElement\n && $(document.activeElement).is(data.formElements)\n && document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type === 'mousemove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if ((diffX * diffX) + (diffY * diffY) >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const {\n params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = Utils.now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = Utils.now();\n Utils.nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeModeMomentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {\n const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function () {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function (e) {\n const swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function () {\n const swiper = this;\n const { wrapperEl, rtlTranslate } = swiper;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { document } from 'ssr-window';\nimport Device from '../../../utils/device';\nimport Support from '../../../utils/support';\n\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n const swiper = this;\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n const swiper = this;\n\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const {\n activeIndex, initialized, loopedSlides = 0, params, $el,\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {\n const paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = params.slidesPerColumn > 1;\n const isMultiRow = breakpointParams.slidesPerColumn > 1;\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}multirow`);\n if (breakpointParams.slidesPerColumnFill === 'column') {\n $el.addClass(`${params.containerModifierClass}multirow-column`);\n }\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n Utils.extend(swiper.params, breakpointParams);\n\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n }\n}\n","import { window } from 'ssr-window';\n\nexport default function (breakpoints) {\n // Get breakpoint for window width\n if (!breakpoints) return undefined;\n let breakpoint = false;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = window.innerHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (value <= window.innerWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\n\nexport default { setBreakpoint, getBreakpoint };\n","import Device from '../../../utils/device';\n\nexport default function () {\n const swiper = this;\n const {\n classNames, params, rtl, $el,\n } = swiper;\n const suffixes = [];\n\n suffixes.push('initialized');\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n if (params.slidesPerColumnFill === 'column') {\n suffixes.push('multirow-column');\n }\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n\n if (params.cssMode) {\n suffixes.push('css-mode');\n }\n\n suffixes.forEach((suffix) => {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n}\n","export default function () {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n}\n","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\n\nexport default { addClasses, removeClasses };\n","import { window } from 'ssr-window';\n\nexport default function (imageEl, src, srcset, sizes, checkForComplete, callback) {\n let image;\n function onReady() {\n if (callback) callback();\n }\n if (!imageEl.complete || !checkForComplete) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function () {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n}\n","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","\nfunction checkOverflow() {\n const swiper = this;\n const params = swiper.params;\n const wasLocked = swiper.isLocked;\n const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n\n // events\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n swiper.navigation.update();\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n //\n preventInteractionOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n};\n","/* eslint no-param-reassign: \"off\" */\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nimport SwiperClass from '../../utils/class';\n\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\n\nimport defaults from './defaults';\n\nconst prototypes = {\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n manipulation,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = Utils.extend({}, params);\n if (el && !params.el) params.el = el;\n\n super(params);\n\n Object.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n const swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach((moduleName) => {\n const module = swiper.modules[moduleName];\n if (module.params) {\n const moduleParamName = Object.keys(module.params)[0];\n const moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object'\n && !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n }\n });\n\n // Extend defaults with modules params\n const swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $;\n\n // Find el\n const $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n const swipers = [];\n $el.each((index, containerEl) => {\n const newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n let $wrapperEl;\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n // Children needs to return slot items\n $wrapperEl.children = (options) => $el.children(options);\n } else {\n $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n }\n // Extend Swiper\n Utils.extend(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // RTL\n rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }()),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n formElements: 'input, select, option, textarea, button, video, label',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n slidesPerViewDynamic() {\n const swiper = this;\n const {\n params, slides, slidesGrid, size: swiperSize, activeIndex,\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideIndex, slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n init() {\n const swiper = this;\n if (swiper.initialized) return;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params, $el, $wrapperEl, slides,\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static get Class() {\n return SwiperClass;\n }\n\n static get $() {\n return $;\n }\n}\n\nexport default Swiper;\n","import Device from '../../utils/device';\n\nexport default {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n};\n","import Support from '../../utils/support';\n\nexport default {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n};\n","import { window } from 'ssr-window';\n\nconst Browser = (function Browser() {\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}());\n\nexport default Browser;\n","import Browser from '../../utils/browser';\n\nexport default {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nexport default {\n name: 'resize',\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n // Emit resize\n window.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy() {\n const swiper = this;\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Observer = {\n func: window.MutationObserver || window.WebkitMutationObserver,\n attach(target, options = {}) {\n const swiper = this;\n\n const ObserverFunc = Observer.func;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n swiper.observer.observers.push(observer);\n },\n init() {\n const swiper = this;\n if (!Support.observer || !swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy() {\n const swiper = this;\n swiper.observer.observers.forEach((observer) => {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\n\nexport default {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.observer.init();\n },\n destroy() {\n const swiper = this;\n swiper.observer.destroy();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Virtual = {\n update(force) {\n const swiper = this;\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n renderSlide,\n offset: previousOffset,\n } = swiper.virtual;\n swiper.updateActiveIndex();\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n slidesBefore = slidesPerGroup + addSlidesAfter;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Utils.extend(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n },\n renderSlide(slide, index) {\n const swiper = this;\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(`
      ${slide}
      `);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n },\n appendSlide(slides) {\n const swiper = this;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n swiper.virtual.update(true);\n },\n prependSlide(slides) {\n const swiper = this;\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide(slidesIndexes) {\n const swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides() {\n const swiper = this;\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n },\n};\n\nexport default {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n virtual: {\n update: Virtual.update.bind(swiper),\n appendSlide: Virtual.appendSlide.bind(swiper),\n prependSlide: Virtual.prependSlide.bind(swiper),\n removeSlide: Virtual.removeSlide.bind(swiper),\n removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n const overwriteParams = {\n watchSlidesProgress: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Keyboard = {\n handle(event) {\n const swiper = this;\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 && point[0] <= windowWidth\n && point[1] >= 0 && point[1] <= windowHeight\n ) {\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext();\n if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev();\n } else {\n if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 34 || kc === 40) swiper.slideNext();\n if (kc === 33 || kc === 38) swiper.slidePrev();\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable() {\n const swiper = this;\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable() {\n const swiper = this;\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n};\n\nexport default {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n keyboard: {\n enabled: false,\n enable: Keyboard.enable.bind(swiper),\n disable: Keyboard.disable.bind(swiper),\n handle: Keyboard.handle.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nfunction isEventSupported() {\n const eventName = 'onwheel';\n let isSupported = eventName in document;\n\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && document.implementation\n && document.implementation.hasFeature\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && document.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\nconst Mousewheel = {\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event() {\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n },\n handleMouseEnter() {\n const swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave() {\n const swiper = this;\n swiper.mouseEntered = false;\n },\n handle(event) {\n let e = event;\n const swiper = this;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;\n else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n if (!swiper.params.freeMode) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: Utils.now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta) {\n swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n const { lastEventBeforeSnap } = swiper.mousewheel;\n const ignoreWheelEvents = lastEventBeforeSnap\n && newEvent.time < lastEventBeforeSnap.time + 500\n && newEvent.delta <= lastEventBeforeSnap.delta\n && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + (delta * params.sensitivity);\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeModeSticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momuntum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = undefined;\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15\n && newEvent.time - firstEvent.time < 500\n && firstEvent.delta - newEvent.delta >= 1\n && newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!swiper.mousewheel.timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n const snapToThreshold = 0.5;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n },\n animateSlider(newEvent) {\n const swiper = this;\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n // Return false as a default\n return false;\n },\n releaseScroll(newEvent) {\n const swiper = this;\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n },\n enable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (!swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n};\n\nexport default {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarged: 'container',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n mousewheel: {\n enabled: false,\n enable: Mousewheel.enable.bind(swiper),\n disable: Mousewheel.disable.bind(swiper),\n handle: Mousewheel.handle.bind(swiper),\n handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n animateSlider: Mousewheel.animateSlider.bind(swiper),\n releaseScroll: Mousewheel.releaseScroll.bind(swiper),\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n swiper.mousewheel.disable();\n }\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy() {\n const swiper = this;\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Navigation = {\n update() {\n // Update Navigation Buttons\n const swiper = this;\n const params = swiper.params.navigation;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n onPrevClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init() {\n const swiper = this;\n const params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n\n let $nextEl;\n let $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.nextEl === 'string'\n && $nextEl.length > 1\n && swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.prevEl === 'string'\n && $prevEl.length > 1\n && swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy() {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n};\n\nexport default {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n onNextClick: Navigation.onNextClick.bind(swiper),\n onPrevClick: Navigation.onPrevClick.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n fromEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n destroy() {\n const swiper = this;\n swiper.navigation.destroy();\n },\n click(e) {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if (\n swiper.params.navigation.hideOnClick\n && !$(e.target).is($prevEl)\n && !$(e.target).is($nextEl)\n ) {\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n swiper.emit('navigationShow', swiper);\n } else {\n swiper.emit('navigationHide', swiper);\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Pagination = {\n update() {\n // Render || Update Pagination bullets/items\n const swiper = this;\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n if ($el.length > 1) {\n bullets.each((index, bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render() {\n // Render Container\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = ``\n + ' / '\n + ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (\n swiper.params.uniqueNavElements\n && typeof params.el === 'string'\n && $el.length > 1\n && swiper.$el.find(params.el).length === 1\n ) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el,\n el: $el[0],\n });\n },\n destroy() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', `.${params.bulletClass}`);\n }\n },\n};\n\nexport default {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy() {\n const swiper = this;\n swiper.pagination.destroy();\n },\n click(e) {\n const swiper = this;\n if (\n swiper.params.pagination.el\n && swiper.params.pagination.hideOnClick\n && swiper.pagination.$el.length > 0\n && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow', swiper);\n } else {\n swiper.emit('paginationHide', swiper);\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\n","import { document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Scrollbar = {\n setTranslate() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const {\n dragSize, trackSize, $dragEl, $el,\n } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n const divider = swiper.size / swiper.virtualSize;\n const moveDivider = divider * (trackSize / swiper.size);\n let dragSize;\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize,\n divider,\n moveDivider,\n dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n getPointerPosition(e) {\n const swiper = this;\n if (swiper.isHorizontal()) {\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);\n }\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);\n },\n setDragPosition(e) {\n const swiper = this;\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const {\n $el,\n dragSize,\n trackSize,\n dragStartPos,\n } = scrollbar;\n\n let positionRatio;\n positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart(e) {\n const swiper = this;\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove(e) {\n const swiper = this;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd(e) {\n const swiper = this;\n\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const { scrollbar, $el: $swiperEl } = swiper;\n const params = swiper.params.scrollbar;\n\n let $el = $(params.el);\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
      `);\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n};\n\nexport default {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate() {\n const swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Parallax = {\n setTransform(el, progress) {\n const swiper = this;\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if ((x).indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if ((y).indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n },\n setTranslate() {\n const swiper = this;\n const {\n $el, slides, progress, snapGrid,\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each((slideIndex, slideEl) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition(duration = this.params.speed) {\n const swiper = this;\n const { $el } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n },\n};\n\nexport default {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n parallax: {\n setTransform: Parallax.setTransform.bind(swiper),\n setTranslate: Parallax.setTranslate.bind(swiper),\n setTransition: Parallax.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\nimport Support from '../../utils/support';\n\nconst Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n return distance;\n },\n // Events\n onGestureStart(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n swiper.zoom.isScaling = true;\n },\n onGestureChange(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (Support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n onGestureEnd(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (Device.android) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (\n swiper.isHorizontal()\n && (\n (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n )\n ) {\n image.isTouched = false;\n return;\n } if (\n !swiper.isHorizontal()\n && (\n (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n )\n ) {\n image.isTouched = false;\n return;\n }\n }\n e.preventDefault();\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n }\n\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTouchEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTransitionEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in(e) {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture, image } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n out() {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n },\n // Attach/Detach Events\n enable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n disable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n\n swiper.zoom.enabled = false;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n};\n\nexport default {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n },\n create() {\n const swiper = this;\n const zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n };\n\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom,\n });\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.zoom.disable();\n },\n touchStart(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap(e) {\n const swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Lazy = {\n loadInSlide(index, loadInDuplicate = true) {\n const swiper = this;\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n : swiper.slides.eq(index);\n\n let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageIndex, imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n\n swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load() {\n const swiper = this;\n const {\n $wrapperEl, params: swiperParams, slides, activeIndex,\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n};\n\nexport default {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n lazy: {\n initialImageLoaded: false,\n load: Lazy.load.bind(swiper),\n loadInSlide: Lazy.loadInSlide.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll() {\n const swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n swiper.lazy.load();\n }\n },\n },\n};\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport Swiper from '../core/core-class';\nimport Utils from '../../utils/utils';\n\nconst Controller = {\n LinearSpline: function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }());\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction(c) {\n const swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate(setTranslate, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition(duration, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n Utils.nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n },\n};\nexport default {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n controller: {\n control: swiper.params.controller.control,\n getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n setTranslate: Controller.setTranslate.bind(swiper),\n setTransition: Controller.setTransition.bind(swiper),\n },\n });\n },\n on: {\n update() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate(translate, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst a11y = {\n makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey(e) {\n const swiper = this;\n const params = swiper.params.a11y;\n if (e.keyCode !== 13) return;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n $targetEl[0].click();\n }\n },\n notify(message) {\n const swiper = this;\n const notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation() {\n const swiper = this;\n\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n }\n }\n },\n updatePagination() {\n const swiper = this;\n const params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n const $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n });\n }\n },\n init() {\n const swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n const params = swiper.params.a11y;\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n};\nexport default {\n name: 'a11y',\n params: {\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $(``),\n },\n });\n Object.keys(a11y).forEach((methodName) => {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n },\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nconst History = {\n init() {\n const swiper = this;\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n const history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues();\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState() {\n const swiper = this;\n swiper.history.paths = History.getPathValues();\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues() {\n const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n },\n setHistory(key, index) {\n const swiper = this;\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n const slide = swiper.slides.eq(index);\n let value = History.slugify(slide.attr('data-history'));\n if (!window.location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n },\n slugify(text) {\n return text.toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide(speed, value, runCallbacks) {\n const swiper = this;\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = History.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n },\n};\n\nexport default {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n history: {\n init: History.init.bind(swiper),\n setHistory: History.setHistory.bind(swiper),\n setHistoryPopState: History.setHistoryPopState.bind(swiper),\n scrollToSlide: History.scrollToSlide.bind(swiper),\n destroy: History.destroy.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.history.initialized && swiper.params.cssMode) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst HashNavigation = {\n onHashCange() {\n const swiper = this;\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n },\n setHash() {\n const swiper = this;\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n swiper.hashNavigation.initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n};\nexport default {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n hashNavigation: {\n initialized: false,\n init: HashNavigation.init.bind(swiper),\n destroy: HashNavigation.destroy.bind(swiper),\n setHash: HashNavigation.setHash.bind(swiper),\n onHashCange: HashNavigation.onHashCange.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n swiper.hashNavigation.setHash();\n }\n },\n },\n};\n","/* eslint no-underscore-dangle: \"off\" */\nimport Utils from '../../utils/utils';\n\nconst Autoplay = {\n run() {\n const swiper = this;\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = Utils.nextTick(() => {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\n }, delay);\n },\n start() {\n const swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop() {\n const swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause(speed) {\n const swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n};\n\nexport default {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onVisibilityChange() {\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n },\n beforeTransitionStart(speed, internal) {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove() {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd() {\n const swiper = this;\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n },\n },\n};\n","import Utils from '../../utils/utils';\n\nconst Fade = {\n setTranslate() {\n const swiper = this;\n const { slides } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, $wrapperEl } = swiper;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n slides.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nexport default {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n fadeEffect: {\n setTranslate: Fade.setTranslate.bind(swiper),\n setTransition: Fade.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Browser from '../../utils/browser';\n\nconst Cube = {\n setTranslate() {\n const swiper = this;\n const {\n $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
      ');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
      ');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + (round * 4 * swiperSize);\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = (3 * swiperSize) + (swiperSize * 4 * round);\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = (slideIndex * 90) + (progress * 90);\n if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
      `);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
      `);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n const multiplier = 1.5 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n $wrapperEl\n .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n },\n setTransition(duration) {\n const swiper = this;\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n};\n\nexport default {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n cubeEffect: {\n setTranslate: Cube.setTranslate.bind(swiper),\n setTransition: Cube.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Flip = {\n setTranslate() {\n const swiper = this;\n const { slides, rtlTranslate: rtl } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
      `);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
      `);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n $slideEl\n .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, activeIndex, $wrapperEl } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nexport default {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n flipEffect: {\n setTranslate: Flip.setTranslate.bind(swiper),\n setTransition: Flip.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Support from '../../utils/support';\nimport Utils from '../../utils/utils';\n\nconst Coverflow = {\n setTranslate() {\n const swiper = this;\n const {\n width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = ((parseFloat(params.stretch) / 100) * slideSize);\n }\n let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);\n let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $(`
      `);\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $(`
      `);\n $slideEl.append($shadowAfterEl);\n }\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n\n // Set correct perspective for IE10\n if (Support.pointerEvents || Support.prefixedPointerEvents) {\n const ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = `${center}px 50%`;\n }\n },\n setTransition(duration) {\n const swiper = this;\n swiper.slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n },\n};\n\nexport default {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n coverflowEffect: {\n setTranslate: Coverflow.setTranslate.bind(swiper),\n setTransition: Coverflow.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n\n swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n};\n","import Utils from '../../utils/utils';\nimport $ from '../../utils/dom';\n\nconst Thumbs = {\n init() {\n const swiper = this;\n const { thumbs: thumbsParams } = swiper.params;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Utils.extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Utils.extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (Utils.isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n }));\n swiper.thumbs.swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n },\n onThumbClick() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n },\n update(initial) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;\n else newThumbsIndex = prevThumbsIndex;\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n },\n};\nexport default {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n thumbs: {\n swiper: null,\n init: Thumbs.init.bind(swiper),\n update: Thumbs.update.bind(swiper),\n onThumbClick: Thumbs.onThumbClick.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition(duration) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n },\n },\n};\n","// Swiper Class\nimport Swiper from './components/core/core-class';\n\n// Core Modules\nimport Device from './modules/device/device';\nimport Support from './modules/support/support';\nimport Browser from './modules/browser/browser';\nimport Resize from './modules/resize/resize';\nimport Observer from './modules/observer/observer';\n\n//IMPORT_COMPONENTS\n\nconst components = [\n Device,\n Support,\n Browser,\n Resize,\n Observer,\n //INSTALL_COMPONENTS\n];\n\nif (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\n//EXPORT\n"],"names":["transition","transitionEnd","document","checkOverflow","Device","Support","Browser","Observer","Virtual"],"mappings":"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"} \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/package/js/swiper.esm.js b/static/libs/swiper-5.3.8/package/js/swiper.esm.js new file mode 100644 index 0000000..bd92030 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/js/swiper.esm.js @@ -0,0 +1,7708 @@ +/** + * Swiper 5.3.8 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * http://swiperjs.com + * + * Copyright 2014-2020 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: April 24, 2020 + */ + +import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, data, transform, transition as transition$1, on, off, trigger, transitionEnd as transitionEnd$1, outerWidth, outerHeight, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove, add, styles } from 'dom7/dist/dom7.modular'; +import { window, document as document$1 } from 'ssr-window'; + +const Methods = { + addClass, + removeClass, + hasClass, + toggleClass, + attr, + removeAttr, + data, + transform, + transition: transition$1, + on, + off, + trigger, + transitionEnd: transitionEnd$1, + outerWidth, + outerHeight, + offset, + css, + each, + html, + text, + is, + index, + eq, + append, + prepend, + next, + nextAll, + prev, + prevAll, + parent, + parents, + closest, + find, + children, + filter, + remove, + add, + styles, +}; + +Object.keys(Methods).forEach((methodName) => { + $.fn[methodName] = $.fn[methodName] || Methods[methodName]; +}); + +const Utils = { + deleteProps(obj) { + const object = obj; + Object.keys(object).forEach((key) => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + }, + nextTick(callback, delay = 0) { + return setTimeout(callback, delay); + }, + now() { + return Date.now(); + }, + getTranslate(el, axis = 'x') { + let matrix; + let curTransform; + let transformMatrix; + + const curStyle = window.getComputedStyle(el, null); + + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + }, + parseUrlQuery(url) { + const query = {}; + let urlToParse = url || window.location.href; + let i; + let params; + let param; + let length; + if (typeof urlToParse === 'string' && urlToParse.length) { + urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : ''; + params = urlToParse.split('&').filter((paramsPart) => paramsPart !== ''); + length = params.length; + + for (i = 0; i < length; i += 1) { + param = params[i].replace(/#\S+/g, '').split('='); + query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || ''; + } + } + return query; + }, + isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object; + }, + extend(...args) { + const to = Object(args[0]); + for (let i = 1; i < args.length; i += 1) { + const nextSource = args[i]; + if (nextSource !== undefined && nextSource !== null) { + const keysArray = Object.keys(Object(nextSource)); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) { + Utils.extend(to[nextKey], nextSource[nextKey]); + } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) { + to[nextKey] = {}; + Utils.extend(to[nextKey], nextSource[nextKey]); + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + }, +}; + +const Support = (function Support() { + return { + touch: (window.Modernizr && window.Modernizr.touch === true) || (function checkTouch() { + return !!((window.navigator.maxTouchPoints > 0) || ('ontouchstart' in window) || (window.DocumentTouch && document$1 instanceof window.DocumentTouch)); + }()), + + pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints > 0, + + observer: (function checkObserver() { + return ('MutationObserver' in window || 'WebkitMutationObserver' in window); + }()), + + passiveListener: (function checkPassiveListener() { + let supportsPassive = false; + try { + const opts = Object.defineProperty({}, 'passive', { + // eslint-disable-next-line + get() { + supportsPassive = true; + }, + }); + window.addEventListener('testPassiveListener', null, opts); + } catch (e) { + // No support + } + return supportsPassive; + }()), + + gestures: (function checkGestures() { + return 'ongesturestart' in window; + }()), + }; +}()); + +class SwiperClass { + constructor(params = {}) { + const self = this; + self.params = params; + + // Events + self.eventsListeners = {}; + + if (self.params && self.params.on) { + Object.keys(self.params.on).forEach((eventName) => { + self.on(eventName, self.params.on[eventName]); + }); + } + } + + on(events, handler, priority) { + const self = this; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach((event) => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + } + + once(events, handler, priority) { + const self = this; + if (typeof handler !== 'function') return self; + function onceHandler(...args) { + self.off(events, onceHandler); + if (onceHandler.f7proxy) { + delete onceHandler.f7proxy; + } + handler.apply(self, args); + } + onceHandler.f7proxy = handler; + return self.on(events, onceHandler, priority); + } + + off(events, handler) { + const self = this; + if (!self.eventsListeners) return self; + events.split(' ').forEach((event) => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event] && self.eventsListeners[event].length) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + } + + emit(...args) { + const self = this; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach((event) => { + if (self.eventsListeners && self.eventsListeners[event]) { + const handlers = []; + self.eventsListeners[event].forEach((eventHandler) => { + handlers.push(eventHandler); + }); + handlers.forEach((eventHandler) => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + + useModulesParams(instanceParams) { + const instance = this; + if (!instance.modules) return; + Object.keys(instance.modules).forEach((moduleName) => { + const module = instance.modules[moduleName]; + // Extend params + if (module.params) { + Utils.extend(instanceParams, module.params); + } + }); + } + + useModules(modulesParams = {}) { + const instance = this; + if (!instance.modules) return; + Object.keys(instance.modules).forEach((moduleName) => { + const module = instance.modules[moduleName]; + const moduleParams = modulesParams[moduleName] || {}; + // Extend instance methods and props + if (module.instance) { + Object.keys(module.instance).forEach((modulePropName) => { + const moduleProp = module.instance[modulePropName]; + if (typeof moduleProp === 'function') { + instance[modulePropName] = moduleProp.bind(instance); + } else { + instance[modulePropName] = moduleProp; + } + }); + } + // Add event listeners + if (module.on && instance.on) { + Object.keys(module.on).forEach((moduleEventName) => { + instance.on(moduleEventName, module.on[moduleEventName]); + }); + } + + // Module create callback + if (module.create) { + module.create.bind(instance)(moduleParams); + } + }); + } + + static set components(components) { + const Class = this; + if (!Class.use) return; + Class.use(components); + } + + static installModule(module, ...params) { + const Class = this; + if (!Class.prototype.modules) Class.prototype.modules = {}; + const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`); + Class.prototype.modules[name] = module; + // Prototype + if (module.proto) { + Object.keys(module.proto).forEach((key) => { + Class.prototype[key] = module.proto[key]; + }); + } + // Class + if (module.static) { + Object.keys(module.static).forEach((key) => { + Class[key] = module.static[key]; + }); + } + // Callback + if (module.install) { + module.install.apply(Class, params); + } + return Class; + } + + static use(module, ...params) { + const Class = this; + if (Array.isArray(module)) { + module.forEach((m) => Class.installModule(m)); + return Class; + } + return Class.installModule(module, ...params); + } +} + +function updateSize () { + const swiper = this; + let width; + let height; + const $el = swiper.$el; + if (typeof swiper.params.width !== 'undefined') { + width = swiper.params.width; + } else { + width = $el[0].clientWidth; + } + if (typeof swiper.params.height !== 'undefined') { + height = swiper.params.height; + } else { + height = $el[0].clientHeight; + } + if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) { + return; + } + + // Subtract paddings + width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10); + height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10); + + Utils.extend(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height, + }); +} + +function updateSlides () { + const swiper = this; + const params = swiper.params; + + const { + $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL, + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = $wrapperEl.children(`.${swiper.params.slideClass}`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + + function slidesForMargin(slideIndex) { + if (!params.cssMode) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + } + + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.snapGrid.length; + + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize; + } + + swiper.virtualSize = -spaceBetween; + + // reset margins + if (rtl) slides.css({ marginLeft: '', marginTop: '' }); + else slides.css({ marginRight: '', marginBottom: '' }); + + let slidesNumberEvenToRows; + if (params.slidesPerColumn > 1) { + if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn; + } + if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn); + } + } + + // Calc slides + let slideSize; + const slidesPerColumn = params.slidesPerColumn; + const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn; + const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn); + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + const slide = slides.eq(i); + if (params.slidesPerColumn > 1) { + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn)); + const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 + ? params.slidesPerGroup + : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup; + + newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn); + slide + .css({ + '-webkit-box-ordinal-group': newSlideOrderIndex, + '-moz-box-ordinal-group': newSlideOrderIndex, + '-ms-flex-order': newSlideOrderIndex, + '-webkit-order': newSlideOrderIndex, + order: newSlideOrderIndex, + }); + } else if (params.slidesPerColumnFill === 'column') { + column = Math.floor(i / slidesPerColumn); + row = i - (column * slidesPerColumn); + if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) { + row += 1; + if (row >= slidesPerColumn) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - (row * slidesPerRow); + } + slide.css( + `margin-${swiper.isHorizontal() ? 'top' : 'left'}`, + (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`) + ); + } + if (slide.css('display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + const slideStyles = window.getComputedStyle(slide[0], null); + const currentTransform = slide[0].style.transform; + const currentWebKitTransform = slide[0].style.webkitTransform; + if (currentTransform) { + slide[0].style.transform = 'none'; + } + if (currentWebKitTransform) { + slide[0].style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() + ? slide.outerWidth(true) + : slide.outerHeight(true); + } else { + // eslint-disable-next-line + if (swiper.isHorizontal()) { + const width = parseFloat(slideStyles.getPropertyValue('width')); + const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left')); + const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right')); + const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left')); + const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right')); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight; + } + } else { + const height = parseFloat(slideStyles.getPropertyValue('height')); + const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top')); + const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom')); + const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top')); + const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom')); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = height + marginTop + marginBottom; + } else { + slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom; + } + } + } + if (currentTransform) { + slide[0].style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide[0].style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + + if (slides[i]) { + if (swiper.isHorizontal()) { + slides[i].style.width = `${slideSize}px`; + } else { + slides[i].style.height = `${slideSize}px`; + } + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + + + if (params.centeredSlides) { + slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; + if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + + swiper.virtualSize += slideSize + spaceBetween; + + prevSlideSize = slideSize; + + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + let newSlidesGrid; + + if ( + rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` }); + } + if (params.setWrapperSize) { + if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` }); + else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` }); + } + + if (params.slidesPerColumn > 1) { + swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween; + if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` }); + else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` }); + if (params.centeredSlides) { + newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid = newSlidesGrid; + } + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (snapGrid.length === 0) snapGrid = [0]; + + if (params.spaceBetween !== 0) { + if (swiper.isHorizontal()) { + if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` }); + else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` }); + } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` }); + } + + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach((slideSizeValue) => { + allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); + }); + allSlidesSize -= params.spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map((snap) => { + if (snap < 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach((slideSizeValue) => { + allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); + }); + allSlidesSize -= params.spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + + Utils.extend(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid, + }); + + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + + if (params.watchSlidesProgress || params.watchSlidesVisibility) { + swiper.updateSlidesOffset(); + } +} + +function updateAutoHeight (speed) { + const swiper = this; + const activeSlides = []; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + swiper.visibleSlides.each((index, slide) => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length) break; + activeSlides.push(swiper.slides.eq(index)[0]); + } + } + } else { + activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`); +} + +function updateSlidesOffset () { + const swiper = this; + const slides = swiper.slides; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; + } +} + +function updateSlidesProgress (translate = (this && this.translate) || 0) { + const swiper = this; + const params = swiper.params; + + const { slides, rtlTranslate: rtl } = swiper; + + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.removeClass(params.slideVisibleClass); + + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + const slideProgress = ( + (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset + ) / (slide.swiperSlideSize + params.spaceBetween); + if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) { + const slideBefore = -(offsetCenter - slide.swiperSlideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1) + || (slideAfter > 1 && slideAfter <= swiper.size) + || (slideBefore <= 0 && slideAfter >= swiper.size); + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides.eq(i).addClass(params.slideVisibleClass); + } + } + slide.progress = rtl ? -slideProgress : slideProgress; + } + swiper.visibleSlides = $(swiper.visibleSlides); +} + +function updateProgress (translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { progress, isBeginning, isEnd } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / (translatesDiff); + isBeginning = progress <= 0; + isEnd = progress >= 1; + } + Utils.extend(swiper, { + progress, + isBeginning, + isEnd, + }); + + if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate); + + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) { + swiper.emit('fromEdge'); + } + + swiper.emit('progress', progress); +} + +function updateSlidesClasses () { + const swiper = this; + + const { + slides, params, $wrapperEl, activeIndex, realIndex, + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + + slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`); + + let activeSlide; + if (isVirtual) { + activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`); + } else { + activeSlide = slides.eq(activeIndex); + } + + // Active classes + activeSlide.addClass(params.slideActiveClass); + + if (params.loop) { + // Duplicate to all looped slides + if (activeSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl + .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`) + .addClass(params.slideDuplicateActiveClass); + } else { + $wrapperEl + .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`) + .addClass(params.slideDuplicateActiveClass); + } + } + // Next Slide + let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass); + if (params.loop && nextSlide.length === 0) { + nextSlide = slides.eq(0); + nextSlide.addClass(params.slideNextClass); + } + // Prev Slide + let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass); + if (params.loop && prevSlide.length === 0) { + prevSlide = slides.eq(-1); + prevSlide.addClass(params.slidePrevClass); + } + if (params.loop) { + // Duplicate to all looped slides + if (nextSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl + .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicateNextClass); + } else { + $wrapperEl + .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicateNextClass); + } + if (prevSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl + .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicatePrevClass); + } else { + $wrapperEl + .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicatePrevClass); + } + } +} + +function updateActiveIndex (newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex, + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + if (typeof activeIndex === 'undefined') { + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + + // Get real index + const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); + + Utils.extend(swiper, { + snapIndex, + realIndex, + previousIndex, + activeIndex, + }); + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + swiper.emit('slideChange'); + } +} + +function updateClickedSlide (e) { + const swiper = this; + const params = swiper.params; + const slide = $(e.target).closest(`.${params.slideClass}`)[0]; + let slideFound = false; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) slideFound = true; + } + } + + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = $(slide).index(); + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } +} + +var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide, +}; + +function getTranslate (axis = this.isHorizontal() ? 'x' : 'y') { + const swiper = this; + + const { + params, rtlTranslate: rtl, translate, $wrapperEl, + } = swiper; + + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + + let currentTranslate = Utils.getTranslate($wrapperEl[0], axis); + if (rtl) currentTranslate = -currentTranslate; + + return currentTranslate || 0; +} + +function setTranslate (translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress, + } = swiper; + let x = 0; + let y = 0; + const z = 0; + + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / (translatesDiff); + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + + swiper.emit('setTranslate', swiper.translate, byController); +} + +function minTranslate () { + return (-this.snapGrid[0]); +} + +function maxTranslate () { + return (-this.snapGrid[this.snapGrid.length - 1]); +} + +function translateTo (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) { + const swiper = this; + + const { + params, + wrapperEl, + } = swiper; + + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate; + else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate; + else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + // eslint-disable-next-line + if (wrapperEl.scrollTo) { + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth', + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } + } + return true; + } + + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); + } + } + + return true; +} + +var translate = { + getTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo, +}; + +function setTransition (duration, byController) { + const swiper = this; + + if (!swiper.params.cssMode) { + swiper.$wrapperEl.transition(duration); + } + + swiper.emit('setTransition', duration, byController); +} + +function transitionStart (runCallbacks = true, direction) { + const swiper = this; + const { activeIndex, params, previousIndex } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next'; + else if (activeIndex < previousIndex) dir = 'prev'; + else dir = 'reset'; + } + + swiper.emit('transitionStart'); + + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit('slideResetTransitionStart'); + return; + } + swiper.emit('slideChangeTransitionStart'); + if (dir === 'next') { + swiper.emit('slideNextTransitionStart'); + } else { + swiper.emit('slidePrevTransitionStart'); + } + } +} + +function transitionEnd (runCallbacks = true, direction) { + const swiper = this; + const { activeIndex, previousIndex, params } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next'; + else if (activeIndex < previousIndex) dir = 'prev'; + else dir = 'reset'; + } + + swiper.emit('transitionEnd'); + + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit('slideResetTransitionEnd'); + return; + } + swiper.emit('slideChangeTransitionEnd'); + if (dir === 'next') { + swiper.emit('slideNextTransitionEnd'); + } else { + swiper.emit('slidePrevTransitionEnd'); + } + } +} + +var transition = { + setTransition, + transitionStart, + transitionEnd, +}; + +function slideTo (index = 0, speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + + const { + params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl, + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + + if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + const translate = -snapGrid[snapIndex]; + + // Update progress + swiper.updateProgress(translate); + + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) return false; + } + } + + let direction; + if (slideIndex > activeIndex) direction = 'next'; + else if (slideIndex < activeIndex) direction = 'prev'; + else direction = 'reset'; + + + // Update Index + if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + let t = -translate; + if (rtl) { + t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t; + } + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } else { + // eslint-disable-next-line + if (wrapperEl.scrollTo) { + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth', + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + } + return true; + } + + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } else { + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); + } + } + + return true; +} + +function slideToLoop (index = 0, speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + let newIndex = index; + if (swiper.params.loop) { + newIndex += swiper.loopedSlides; + } + + return swiper.slideTo(newIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideNext (speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + const { params, animating } = swiper; + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup; + if (params.loop) { + if (animating) return false; + swiper.loopFix(); + // eslint-disable-next-line + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slidePrev (speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + const { + params, animating, snapGrid, slidesGrid, rtlTranslate, + } = swiper; + + if (params.loop) { + if (animating) return false; + swiper.loopFix(); + // eslint-disable-next-line + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map((val) => normalize(val)); + const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val)); + + const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)]; + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + snapGrid.forEach((snap) => { + if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap; + }); + } + let prevIndex; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideReset (speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideToClosest (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) { + const swiper = this; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + + return swiper.slideTo(index, speed, runCallbacks, internal); +} + +function slideToClickedSlide () { + const swiper = this; + const { params, $wrapperEl } = swiper; + + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if ( + (slideToIndex < swiper.loopedSlides - (slidesPerView / 2)) + || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2)) + ) { + swiper.loopFix(); + slideToIndex = $wrapperEl + .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`) + .eq(0) + .index(); + + Utils.nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = $wrapperEl + .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`) + .eq(0) + .index(); + + Utils.nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } +} + +var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide, +}; + +function loopCreate () { + const swiper = this; + const { params, $wrapperEl } = swiper; + // Remove duplicated slides + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove(); + + let slides = $wrapperEl.children(`.${params.slideClass}`); + + if (params.loopFillGroupWithBlank) { + const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup); + if (blankSlidesNum !== params.slidesPerGroup) { + for (let i = 0; i < blankSlidesNum; i += 1) { + const blankNode = $(document$1.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`); + $wrapperEl.append(blankNode); + } + slides = $wrapperEl.children(`.${params.slideClass}`); + } + } + + if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length; + + swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10)); + swiper.loopedSlides += params.loopAdditionalSlides; + if (swiper.loopedSlides > slides.length) { + swiper.loopedSlides = slides.length; + } + + const prependSlides = []; + const appendSlides = []; + slides.each((index, el) => { + const slide = $(el); + if (index < swiper.loopedSlides) appendSlides.push(el); + if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el); + slide.attr('data-swiper-slide-index', index); + }); + for (let i = 0; i < appendSlides.length; i += 1) { + $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); + } + for (let i = prependSlides.length - 1; i >= 0; i -= 1) { + $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); + } +} + +function loopFix () { + const swiper = this; + + swiper.emit('beforeLoopFix'); + + const { + activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl, + } = swiper; + let newIndex; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + + const snapTranslate = -snapGrid[activeIndex]; + const diff = snapTranslate - swiper.getTranslate(); + + // Fix For Negative Oversliding + if (activeIndex < loopedSlides) { + newIndex = (slides.length - (loopedSlides * 3)) + activeIndex; + newIndex += loopedSlides; + const slideChanged = swiper.slideTo(newIndex, 0, false, true); + if (slideChanged && diff !== 0) { + swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); + } + } else if (activeIndex >= slides.length - loopedSlides) { + // Fix For Positive Oversliding + newIndex = -slides.length + activeIndex + loopedSlides; + newIndex += loopedSlides; + const slideChanged = swiper.slideTo(newIndex, 0, false, true); + if (slideChanged && diff !== 0) { + swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + + swiper.emit('loopFix'); +} + +function loopDestroy () { + const swiper = this; + const { $wrapperEl, params, slides } = swiper; + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove(); + slides.removeAttr('data-swiper-slide-index'); +} + +var loop = { + loopCreate, + loopFix, + loopDestroy, +}; + +function setGrabCursor (moving) { + const swiper = this; + if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return; + const el = swiper.el; + el.style.cursor = 'move'; + el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab'; + el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab'; + el.style.cursor = moving ? 'grabbing' : 'grab'; +} + +function unsetGrabCursor () { + const swiper = this; + if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return; + swiper.el.style.cursor = ''; +} + +var grabCursor = { + setGrabCursor, + unsetGrabCursor, +}; + +function appendSlide (slides) { + const swiper = this; + const { $wrapperEl, params } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.append(slides[i]); + } + } else { + $wrapperEl.append(slides); + } + if (params.loop) { + swiper.loopCreate(); + } + if (!(params.observer && Support.observer)) { + swiper.update(); + } +} + +function prependSlide (slides) { + const swiper = this; + const { params, $wrapperEl, activeIndex } = swiper; + + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.prepend(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + $wrapperEl.prepend(slides); + } + if (params.loop) { + swiper.loopCreate(); + } + if (!(params.observer && Support.observer)) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); +} + +function addSlide (index, slides) { + const swiper = this; + const { $wrapperEl, params, activeIndex } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.slides = $wrapperEl.children(`.${params.slideClass}`); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides.eq(i); + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + $wrapperEl.append(slides); + } + + for (let i = 0; i < slidesBuffer.length; i += 1) { + $wrapperEl.append(slidesBuffer[i]); + } + + if (params.loop) { + swiper.loopCreate(); + } + if (!(params.observer && Support.observer)) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeSlide (slidesIndexes) { + const swiper = this; + const { params, $wrapperEl, activeIndex } = swiper; + + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.slides = $wrapperEl.children(`.${params.slideClass}`); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + + if (params.loop) { + swiper.loopCreate(); + } + + if (!(params.observer && Support.observer)) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeAllSlides () { + const swiper = this; + + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); +} + +var manipulation = { + appendSlide, + prependSlide, + addSlide, + removeSlide, + removeAllSlides, +}; + +const Device = (function Device() { + const platform = window.navigator.platform; + const ua = window.navigator.userAgent; + + const device = { + ios: false, + android: false, + androidChrome: false, + desktop: false, + iphone: false, + ipod: false, + ipad: false, + edge: false, + ie: false, + firefox: false, + macos: false, + windows: false, + cordova: !!(window.cordova || window.phonegap), + phonegap: !!(window.cordova || window.phonegap), + electron: false, + }; + + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0; + const edge = ua.indexOf('Edge/') >= 0; + const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0; + const windows = platform === 'Win32'; + const electron = ua.toLowerCase().indexOf('electron') >= 0; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + if (!ipad + && macos + && Support.touch + && ( + (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9 + || (screenWidth === 834 && screenHeight === 1194) // Pro 11 + || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5 + || (screenWidth === 768 && screenHeight === 1024) // other + ) + ) { + ipad = ua.match(/(Version)\/([\d.]+)/); + macos = false; + } + + device.ie = ie; + device.edge = edge; + device.firefox = firefox; + + // Android + if (android && !windows) { + device.os = 'android'; + device.osVersion = android[2]; + device.android = true; + device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + // iOS + if (iphone && !ipod) { + device.osVersion = iphone[2].replace(/_/g, '.'); + device.iphone = true; + } + if (ipad) { + device.osVersion = ipad[2].replace(/_/g, '.'); + device.ipad = true; + } + if (ipod) { + device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null; + device.ipod = true; + } + // iOS 8+ changed UA + if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) { + if (device.osVersion.split('.')[0] === '10') { + device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0]; + } + } + + // Webview + device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone)) + || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches); + device.webview = device.webView; + device.standalone = device.webView; + + // Desktop + device.desktop = !(device.ios || device.android) || electron; + if (device.desktop) { + device.electron = electron; + device.macos = macos; + device.windows = windows; + if (device.macos) { + device.os = 'macos'; + } + if (device.windows) { + device.os = 'windows'; + } + } + + // Pixel Ratio + device.pixelRatio = window.devicePixelRatio || 1; + + // Export object + return device; +}()); + +function onTouchStart (event) { + const swiper = this; + const data = swiper.touchEventsData; + const { params, touches } = swiper; + + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + let e = event; + if (e.originalEvent) e = e.originalEvent; + const $targetEl = $(e.target); + + if (params.touchEventsTarget === 'wrapper') { + if (!$targetEl.closest(swiper.wrapperEl).length) return; + } + data.isTouchEvent = e.type === 'touchstart'; + if (!data.isTouchEvent && 'which' in e && e.which === 3) return; + if (!data.isTouchEvent && 'button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!$targetEl.closest(params.swipeHandler)[0]) return; + } + + touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; + touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore + + const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; + if ( + edgeSwipeDetection + && ((startX <= edgeSwipeThreshold) + || (startX >= window.screen.width - edgeSwipeThreshold)) + ) { + return; + } + + Utils.extend(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined, + }); + + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = Utils.now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + if (e.type !== 'touchstart') { + let preventDefault = true; + if ($targetEl.is(data.formElements)) preventDefault = false; + if ( + document$1.activeElement + && $(document$1.activeElement).is(data.formElements) + && document$1.activeElement !== $targetEl[0] + ) { + document$1.activeElement.blur(); + } + + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if (params.touchStartForcePreventDefault || shouldPreventDefault) { + e.preventDefault(); + } + } + swiper.emit('touchStart', e); +} + +function onTouchMove (event) { + const swiper = this; + const data = swiper.touchEventsData; + const { params, touches, rtlTranslate: rtl } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + if (data.isTouchEvent && e.type === 'mousemove') return; + const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]); + const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX; + const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + // isMoved = true; + swiper.allowClick = false; + if (data.isTouched) { + Utils.extend(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + }); + data.touchStartTime = Utils.now(); + } + return; + } + if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if ( + (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) + || (pageY > touches.startY && swiper.translate >= swiper.minTranslate()) + ) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if ( + (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) + || (pageX > touches.startX && swiper.translate >= swiper.minTranslate()) + ) { + return; + } + } + if (data.isTouchEvent && document$1.activeElement) { + if (e.target === document$1.activeElement && $(e.target).is(data.formElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + if (e.targetTouches && e.targetTouches.length > 1) return; + + touches.currentX = pageX; + touches.currentY = pageY; + + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return; + + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if ((diffX * diffX) + (diffY * diffY) >= 25) { + touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle); + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + + if (!data.isMoved) { + if (params.loop) { + swiper.loopFix(); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + swiper.emit('sliderMove', e); + data.isMoved = true; + + let diff = swiper.isHorizontal() ? diffX : diffY; + touches.diff = diff; + + diff *= params.touchRatio; + if (rtl) diff = -diff; + + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + data.currentTranslate = diff + data.startTranslate; + + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) { + disableParentSwiper = false; + if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio); + } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio); + } + + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode) { + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime, + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: Utils.now(), + }); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); +} + +function onTouchEnd (event) { + const swiper = this; + const data = swiper.touchEventsData; + + const { + params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid, + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = Utils.now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + swiper.updateClickedSlide(e); + swiper.emit('tap click', e); + if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + + data.lastClickTime = Utils.now(); + Utils.nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + + if (params.cssMode) { + return; + } + + if (params.freeMode) { + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + + if (params.freeModeMomentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeModeMomentumVelocityRatio; + + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeModeMomentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeModeMomentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeModeMomentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeModeSticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + swiper.once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeModeSticky) { + // If freeModeSticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeModeSticky) { + swiper.slideToClosest(); + return; + } + + if (params.freeModeMomentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + swiper.emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeModeSticky) { + swiper.slideToClosest(); + return; + } + + if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) { + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + return; + } + + // Find current slide + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) { + const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup); + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup); + + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment); + else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment); + else swiper.slideTo(stopIndex); + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } +} + +function onResize () { + const swiper = this; + + const { params, el } = swiper; + + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { allowSlideNext, allowSlidePrev, snapGrid } = swiper; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + + swiper.updateSize(); + swiper.updateSlides(); + + swiper.updateSlidesClasses(); + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.run(); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } +} + +function onClick (e) { + const swiper = this; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } +} + +function onScroll () { + const swiper = this; + const { wrapperEl, rtlTranslate } = swiper; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + if (rtlTranslate) { + swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft); + } else { + swiper.translate = -wrapperEl.scrollLeft; + } + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === -0) swiper.translate = 0; + + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff); + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + + swiper.emit('setTranslate', swiper.translate, false); +} + +let dummyEventAttached = false; +function dummyEventListener() {} + +function attachEvents() { + const swiper = this; + const { + params, touchEvents, el, wrapperEl, + } = swiper; + + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + + swiper.onClick = onClick.bind(swiper); + + const capture = !!params.nested; + + // Touch Events + if (!Support.touch && Support.pointerEvents) { + el.addEventListener(touchEvents.start, swiper.onTouchStart, false); + document$1.addEventListener(touchEvents.move, swiper.onTouchMove, capture); + document$1.addEventListener(touchEvents.end, swiper.onTouchEnd, false); + } else { + if (Support.touch) { + const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); + el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture); + el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); + if (touchEvents.cancel) { + el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener); + } + if (!dummyEventAttached) { + document$1.addEventListener('touchstart', dummyEventListener); + dummyEventAttached = true; + } + } + if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { + el.addEventListener('mousedown', swiper.onTouchStart, false); + document$1.addEventListener('mousemove', swiper.onTouchMove, capture); + document$1.addEventListener('mouseup', swiper.onTouchEnd, false); + } + } + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el.addEventListener('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl.addEventListener('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true); + } else { + swiper.on('observerUpdate', onResize, true); + } +} + +function detachEvents() { + const swiper = this; + + const { + params, touchEvents, el, wrapperEl, + } = swiper; + + const capture = !!params.nested; + + // Touch Events + if (!Support.touch && Support.pointerEvents) { + el.removeEventListener(touchEvents.start, swiper.onTouchStart, false); + document$1.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); + document$1.removeEventListener(touchEvents.end, swiper.onTouchEnd, false); + } else { + if (Support.touch) { + const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); + el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); + el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); + if (touchEvents.cancel) { + el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener); + } + } + if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { + el.removeEventListener('mousedown', swiper.onTouchStart, false); + document$1.removeEventListener('mousemove', swiper.onTouchMove, capture); + document$1.removeEventListener('mouseup', swiper.onTouchEnd, false); + } + } + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el.removeEventListener('click', swiper.onClick, true); + } + + if (params.cssMode) { + wrapperEl.removeEventListener('scroll', swiper.onScroll); + } + + // Resize handler + swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize); +} + +var events = { + attachEvents, + detachEvents, +}; + +function setBreakpoint () { + const swiper = this; + const { + activeIndex, initialized, loopedSlides = 0, params, $el, + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints); + + if (breakpoint && swiper.currentBreakpoint !== breakpoint) { + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + if (breakpointOnlyParams) { + ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => { + const paramValue = breakpointOnlyParams[param]; + if (typeof paramValue === 'undefined') return; + if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) { + breakpointOnlyParams[param] = 'auto'; + } else if (param === 'slidesPerView') { + breakpointOnlyParams[param] = parseFloat(paramValue); + } else { + breakpointOnlyParams[param] = parseInt(paramValue, 10); + } + }); + } + + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = params.slidesPerColumn > 1; + const isMultiRow = breakpointParams.slidesPerColumn > 1; + if (wasMultiRow && !isMultiRow) { + $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`); + } else if (!wasMultiRow && isMultiRow) { + $el.addClass(`${params.containerModifierClass}multirow`); + if (breakpointParams.slidesPerColumnFill === 'column') { + $el.addClass(`${params.containerModifierClass}multirow-column`); + } + } + + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + + if (directionChanged && initialized) { + swiper.changeDirection(); + } + + Utils.extend(swiper.params, breakpointParams); + + Utils.extend(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + }); + + swiper.currentBreakpoint = breakpoint; + + if (needsReLoop && initialized) { + swiper.loopDestroy(); + swiper.loopCreate(); + swiper.updateSlides(); + swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false); + } + + swiper.emit('breakpoint', breakpointParams); + } +} + +function getBreakpoint (breakpoints) { + // Get breakpoint for window width + if (!breakpoints) return undefined; + let breakpoint = false; + + const points = Object.keys(breakpoints).map((point) => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = window.innerHeight * minRatio; + return { value, point }; + } + return { value: point, point }; + }); + + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { point, value } = points[i]; + if (value <= window.innerWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; +} + +var breakpoints = { setBreakpoint, getBreakpoint }; + +function addClasses () { + const swiper = this; + const { + classNames, params, rtl, $el, + } = swiper; + const suffixes = []; + + suffixes.push('initialized'); + suffixes.push(params.direction); + + if (params.freeMode) { + suffixes.push('free-mode'); + } + if (params.autoHeight) { + suffixes.push('autoheight'); + } + if (rtl) { + suffixes.push('rtl'); + } + if (params.slidesPerColumn > 1) { + suffixes.push('multirow'); + if (params.slidesPerColumnFill === 'column') { + suffixes.push('multirow-column'); + } + } + if (Device.android) { + suffixes.push('android'); + } + if (Device.ios) { + suffixes.push('ios'); + } + + if (params.cssMode) { + suffixes.push('css-mode'); + } + + suffixes.forEach((suffix) => { + classNames.push(params.containerModifierClass + suffix); + }); + + $el.addClass(classNames.join(' ')); +} + +function removeClasses () { + const swiper = this; + const { $el, classNames } = swiper; + + $el.removeClass(classNames.join(' ')); +} + +var classes = { addClasses, removeClasses }; + +function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) { + let image; + function onReady() { + if (callback) callback(); + } + if (!imageEl.complete || !checkForComplete) { + if (src) { + image = new window.Image(); + image.onload = onReady; + image.onerror = onReady; + if (sizes) { + image.sizes = sizes; + } + if (srcset) { + image.srcset = srcset; + } + if (src) { + image.src = src; + } + } else { + onReady(); + } + } else { + // image already loaded... + onReady(); + } +} + +function preloadImages () { + const swiper = this; + swiper.imagesToLoad = swiper.$el.find('img'); + function onReady() { + if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return; + if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1; + if (swiper.imagesLoaded === swiper.imagesToLoad.length) { + if (swiper.params.updateOnImagesReady) swiper.update(); + swiper.emit('imagesReady'); + } + } + for (let i = 0; i < swiper.imagesToLoad.length; i += 1) { + const imageEl = swiper.imagesToLoad[i]; + swiper.loadImage( + imageEl, + imageEl.currentSrc || imageEl.getAttribute('src'), + imageEl.srcset || imageEl.getAttribute('srcset'), + imageEl.sizes || imageEl.getAttribute('sizes'), + true, + onReady + ); + } +} + +var images = { + loadImage, + preloadImages, +}; + +function checkOverflow() { + const swiper = this; + const params = swiper.params; + const wasLocked = swiper.isLocked; + const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length); + + if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) { + swiper.isLocked = lastSlidePosition <= swiper.size; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + + swiper.allowSlideNext = !swiper.isLocked; + swiper.allowSlidePrev = !swiper.isLocked; + + // events + if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + swiper.navigation.update(); + } +} + +var checkOverflow$1 = { checkOverflow }; + +var defaults = { + init: true, + direction: 'horizontal', + touchEventsTarget: 'container', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + // + preventInteractionOnTransition: false, + + // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + + // Free mode + freeMode: false, + freeModeMomentum: true, + freeModeMomentumRatio: 1, + freeModeMomentumBounce: true, + freeModeMomentumBounceRatio: 1, + freeModeMomentumVelocityRatio: 1, + freeModeSticky: false, + freeModeMinimumVelocity: 0.02, + + // Autoheight + autoHeight: false, + + // Set wrapper width + setWrapperSize: false, + + // Virtual Translate + virtualTranslate: false, + + // Effects + effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerColumnFill: 'column', + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, // in px + slidesOffsetAfter: 0, // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + + // Disable swiper and hide navigation when container not overflow + watchOverflow: false, + + // Round length + roundLengths: false, + + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 0, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + + // Unique Navigation Elements + uniqueNavElements: true, + + // Resistance + resistance: true, + resistanceRatio: 0.85, + + // Progress + watchSlidesProgress: false, + watchSlidesVisibility: false, + + // Cursor + grabCursor: false, + + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + + // Images + preloadImages: true, + updateOnImagesReady: true, + + // loop + loop: false, + loopAdditionalSlides: 0, + loopedSlides: null, + loopFillGroupWithBlank: false, + + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + + // Passive Listeners + passiveListeners: true, + + // NS + containerModifierClass: 'swiper-container-', // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-invisible-blank', + slideActiveClass: 'swiper-slide-active', + slideDuplicateActiveClass: 'swiper-slide-duplicate-active', + slideVisibleClass: 'swiper-slide-visible', + slideDuplicateClass: 'swiper-slide-duplicate', + slideNextClass: 'swiper-slide-next', + slideDuplicateNextClass: 'swiper-slide-duplicate-next', + slidePrevClass: 'swiper-slide-prev', + slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', + wrapperClass: 'swiper-wrapper', + + // Callbacks + runCallbacksOnInit: true, +}; + +/* eslint no-param-reassign: "off" */ + +const prototypes = { + update, + translate, + transition, + slide, + loop, + grabCursor, + manipulation, + events, + breakpoints, + checkOverflow: checkOverflow$1, + classes, + images, +}; + +const extendedDefaults = {}; + +class Swiper extends SwiperClass { + constructor(...args) { + let el; + let params; + if (args.length === 1 && args[0].constructor && args[0].constructor === Object) { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + + params = Utils.extend({}, params); + if (el && !params.el) params.el = el; + + super(params); + + Object.keys(prototypes).forEach((prototypeGroup) => { + Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => { + if (!Swiper.prototype[protoMethod]) { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + } + }); + }); + + // Swiper Instance + const swiper = this; + if (typeof swiper.modules === 'undefined') { + swiper.modules = {}; + } + Object.keys(swiper.modules).forEach((moduleName) => { + const module = swiper.modules[moduleName]; + if (module.params) { + const moduleParamName = Object.keys(module.params)[0]; + const moduleParams = module.params[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) return; + if (!(moduleParamName in params && 'enabled' in moduleParams)) return; + if (params[moduleParamName] === true) { + params[moduleParamName] = { enabled: true }; + } + if ( + typeof params[moduleParamName] === 'object' + && !('enabled' in params[moduleParamName]) + ) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { enabled: false }; + } + }); + + // Extend defaults with modules params + const swiperParams = Utils.extend({}, defaults); + swiper.useModulesParams(swiperParams); + + // Extend defaults with passed params + swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = Utils.extend({}, swiper.params); + swiper.passedParams = Utils.extend({}, params); + + // Save Dom lib + swiper.$ = $; + + // Find el + const $el = $(swiper.params.el); + el = $el[0]; + + if (!el) { + return undefined; + } + + if ($el.length > 1) { + const swipers = []; + $el.each((index, containerEl) => { + const newParams = Utils.extend({}, params, { el: containerEl }); + swipers.push(new Swiper(newParams)); + }); + return swipers; + } + + el.swiper = swiper; + $el.data('swiper', swiper); + + // Find Wrapper + let $wrapperEl; + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`)); + // Children needs to return slot items + $wrapperEl.children = (options) => $el.children(options); + } else { + $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`); + } + // Extend Swiper + Utils.extend(swiper, { + $el, + el, + $wrapperEl, + wrapperEl: $wrapperEl[0], + + // Classes + classNames: [], + + // Slides + slides: $(), + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // RTL + rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), + wrongRTL: $wrapperEl.css('display') === '-webkit-box', + + // Indexes + activeIndex: 0, + realIndex: 0, + + // + isBeginning: true, + isEnd: false, + + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + + // Touch Events + touchEvents: (function touchEvents() { + const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel']; + let desktop = ['mousedown', 'mousemove', 'mouseup']; + if (Support.pointerEvents) { + desktop = ['pointerdown', 'pointermove', 'pointerup']; + } + swiper.touchEventsTouch = { + start: touch[0], + move: touch[1], + end: touch[2], + cancel: touch[3], + }; + swiper.touchEventsDesktop = { + start: desktop[0], + move: desktop[1], + end: desktop[2], + }; + return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; + }()), + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + formElements: 'input, select, option, textarea, button, video, label', + // Last click time + lastClickTime: Utils.now(), + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + isTouchEvent: undefined, + startMoving: undefined, + }, + + // Clicks + allowClick: true, + + // Touches + allowTouchMove: swiper.params.allowTouchMove, + + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0, + }, + + // Images + imagesToLoad: [], + imagesLoaded: 0, + + }); + + // Install Modules + swiper.useModules(); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + return swiper; + } + + slidesPerViewDynamic() { + const swiper = this; + const { + params, slides, slidesGrid, size: swiperSize, activeIndex, + } = swiper; + let spv = 1; + if (params.centeredSlides) { + let slideSize = slides[activeIndex].swiperSlideSize; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) { + spv += 1; + } + } + } + return spv; + } + + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { snapGrid, params } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (swiper.params.freeMode) { + setTranslate(); + if (swiper.params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { + translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + + changeDirection(newDirection, needUpdate = true) { + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) { + return swiper; + } + + swiper.$el + .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`) + .addClass(`${swiper.params.containerModifierClass}${newDirection}`); + + swiper.params.direction = newDirection; + + swiper.slides.each((slideIndex, slideEl) => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + + return swiper; + } + + init() { + const swiper = this; + if (swiper.initialized) return; + + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + + if (swiper.params.preloadImages) { + swiper.preloadImages(); + } + + // Slide To Initial Slide + if (swiper.params.loop) { + swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit); + } + + // Attach events + swiper.attachEvents(); + + // Init Flag + swiper.initialized = true; + + // Emit + swiper.emit('init'); + } + + destroy(deleteInstance = true, cleanStyles = true) { + const swiper = this; + const { + params, $el, $wrapperEl, slides, + } = swiper; + + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + $el.removeAttr('style'); + $wrapperEl.removeAttr('style'); + if (slides && slides.length) { + slides + .removeClass([ + params.slideVisibleClass, + params.slideActiveClass, + params.slideNextClass, + params.slidePrevClass, + ].join(' ')) + .removeAttr('style') + .removeAttr('data-swiper-slide-index'); + } + } + + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach((eventName) => { + swiper.off(eventName); + }); + + if (deleteInstance !== false) { + swiper.$el[0].swiper = null; + swiper.$el.data('swiper', null); + Utils.deleteProps(swiper); + } + swiper.destroyed = true; + + return null; + } + + static extendDefaults(newDefaults) { + Utils.extend(extendedDefaults, newDefaults); + } + + static get extendedDefaults() { + return extendedDefaults; + } + + static get defaults() { + return defaults; + } + + static get Class() { + return SwiperClass; + } + + static get $() { + return $; + } +} + +var Device$1 = { + name: 'device', + proto: { + device: Device, + }, + static: { + device: Device, + }, +}; + +var Support$1 = { + name: 'support', + proto: { + support: Support, + }, + static: { + support: Support, + }, +}; + +const Browser = (function Browser() { + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0); + } + return { + isEdge: !!window.navigator.userAgent.match(/Edge/g), + isSafari: isSafari(), + isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent), + }; +}()); + +var Browser$1 = { + name: 'browser', + proto: { + browser: Browser, + }, + static: { + browser: Browser, + }, +}; + +var Resize = { + name: 'resize', + create() { + const swiper = this; + Utils.extend(swiper, { + resize: { + resizeHandler() { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + swiper.emit('beforeResize'); + swiper.emit('resize'); + }, + orientationChangeHandler() { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + swiper.emit('orientationchange'); + }, + }, + }); + }, + on: { + init() { + const swiper = this; + // Emit resize + window.addEventListener('resize', swiper.resize.resizeHandler); + + // Emit orientationchange + window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler); + }, + destroy() { + const swiper = this; + window.removeEventListener('resize', swiper.resize.resizeHandler); + window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler); + }, + }, +}; + +const Observer = { + func: window.MutationObserver || window.WebkitMutationObserver, + attach(target, options = {}) { + const swiper = this; + + const ObserverFunc = Observer.func; + const observer = new ObserverFunc((mutations) => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (mutations.length === 1) { + swiper.emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + swiper.emit('observerUpdate', mutations[0]); + }; + + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData, + }); + + swiper.observer.observers.push(observer); + }, + init() { + const swiper = this; + if (!Support.observer || !swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = swiper.$el.parents(); + for (let i = 0; i < containerParents.length; i += 1) { + swiper.observer.attach(containerParents[i]); + } + } + // Observe container + swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren }); + + // Observe wrapper + swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false }); + }, + destroy() { + const swiper = this; + swiper.observer.observers.forEach((observer) => { + observer.disconnect(); + }); + swiper.observer.observers = []; + }, +}; + +var Observer$1 = { + name: 'observer', + params: { + observer: false, + observeParents: false, + observeSlideChildren: false, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + observer: { + init: Observer.init.bind(swiper), + attach: Observer.attach.bind(swiper), + destroy: Observer.destroy.bind(swiper), + observers: [], + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.observer.init(); + }, + destroy() { + const swiper = this; + swiper.observer.destroy(); + }, + }, +}; + +const Virtual = { + update(force) { + const swiper = this; + const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params; + const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + renderSlide, + offset: previousOffset, + } = swiper.virtual; + swiper.updateActiveIndex(); + const activeIndex = swiper.activeIndex || 0; + + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right'; + else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore; + slidesBefore = slidesPerGroup + addSlidesAfter; + } + const from = Math.max((activeIndex || 0) - slidesBefore, 0); + const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1); + const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + + Utils.extend(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + }); + + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + if (swiper.lazy && swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + } + + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.css(offsetProp, `${offset}px`); + } + swiper.updateProgress(); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: (function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }()), + }); + onRendered(); + return; + } + const prependIndexes = []; + const appendIndexes = []; + if (force) { + swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove(); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove(); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + if (i >= from && i <= to) { + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(i); + } else { + if (i > previousTo) appendIndexes.push(i); + if (i < previousFrom) prependIndexes.push(i); + } + } + } + appendIndexes.forEach((index) => { + swiper.$wrapperEl.append(renderSlide(slides[index], index)); + }); + prependIndexes.sort((a, b) => b - a).forEach((index) => { + swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); + }); + swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`); + onRendered(); + }, + renderSlide(slide, index) { + const swiper = this; + const params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + const $slideEl = params.renderSlide + ? $(params.renderSlide.call(swiper, slide, index)) + : $(`
      ${slide}
      `); + if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index); + if (params.cache) swiper.virtual.cache[index] = $slideEl; + return $slideEl; + }, + appendSlide(slides) { + const swiper = this; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + swiper.virtual.update(true); + }, + prependSlide(slides) { + const swiper = this; + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach((cachedIndex) => { + const $cachedEl = cache[cachedIndex]; + const cachedElIndex = $cachedEl.attr('data-swiper-slide-index'); + if (cachedElIndex) { + $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl; + }); + swiper.virtual.cache = newCache; + } + swiper.virtual.update(true); + swiper.slideTo(newActiveIndex, 0); + }, + removeSlide(slidesIndexes) { + const swiper = this; + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + } + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + swiper.virtual.slides.splice(slidesIndexes, 1); + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + } + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + swiper.virtual.update(true); + swiper.slideTo(activeIndex, 0); + }, + removeAllSlides() { + const swiper = this; + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + swiper.virtual.update(true); + swiper.slideTo(0, 0); + }, +}; + +var virtual = { + name: 'virtual', + params: { + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + addSlidesBefore: 0, + addSlidesAfter: 0, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + virtual: { + update: Virtual.update.bind(swiper), + appendSlide: Virtual.appendSlide.bind(swiper), + prependSlide: Virtual.prependSlide.bind(swiper), + removeSlide: Virtual.removeSlide.bind(swiper), + removeAllSlides: Virtual.removeAllSlides.bind(swiper), + renderSlide: Virtual.renderSlide.bind(swiper), + slides: swiper.params.virtual.slides, + cache: {}, + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (!swiper.params.virtual.enabled) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + const overwriteParams = { + watchSlidesProgress: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + + if (!swiper.params.initialSlide) { + swiper.virtual.update(); + } + }, + setTranslate() { + const swiper = this; + if (!swiper.params.virtual.enabled) return; + swiper.virtual.update(); + }, + }, +}; + +const Keyboard = { + handle(event) { + const swiper = this; + const { rtlTranslate: rtl } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + // Directions locks + if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) { + return false; + } + if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document$1.activeElement && document$1.activeElement.nodeName && (document$1.activeElement.nodeName.toLowerCase() === 'input' || document$1.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = swiper.$el.offset(); + if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft; + const swiperCoord = [ + [swiperOffset.left, swiperOffset.top], + [swiperOffset.left + swiper.width, swiperOffset.top], + [swiperOffset.left, swiperOffset.top + swiper.height], + [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height], + ]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if ( + point[0] >= 0 && point[0] <= windowWidth + && point[1] >= 0 && point[1] <= windowHeight + ) { + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (kc === 33 || kc === 34 || kc === 37 || kc === 39) { + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + } + if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext(); + if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev(); + } else { + if (kc === 33 || kc === 34 || kc === 38 || kc === 40) { + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + } + if (kc === 34 || kc === 40) swiper.slideNext(); + if (kc === 33 || kc === 38) swiper.slidePrev(); + } + swiper.emit('keyPress', kc); + return undefined; + }, + enable() { + const swiper = this; + if (swiper.keyboard.enabled) return; + $(document$1).on('keydown', swiper.keyboard.handle); + swiper.keyboard.enabled = true; + }, + disable() { + const swiper = this; + if (!swiper.keyboard.enabled) return; + $(document$1).off('keydown', swiper.keyboard.handle); + swiper.keyboard.enabled = false; + }, +}; + +var keyboard = { + name: 'keyboard', + params: { + keyboard: { + enabled: false, + onlyInViewport: true, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + keyboard: { + enabled: false, + enable: Keyboard.enable.bind(swiper), + disable: Keyboard.disable.bind(swiper), + handle: Keyboard.handle.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.keyboard.enabled) { + swiper.keyboard.enable(); + } + }, + destroy() { + const swiper = this; + if (swiper.keyboard.enabled) { + swiper.keyboard.disable(); + } + }, + }, +}; + +function isEventSupported() { + const eventName = 'onwheel'; + let isSupported = eventName in document$1; + + if (!isSupported) { + const element = document$1.createElement('div'); + element.setAttribute(eventName, 'return;'); + isSupported = typeof element[eventName] === 'function'; + } + + if (!isSupported + && document$1.implementation + && document$1.implementation.hasFeature + // always returns true in newer browsers as per the standard. + // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature + && document$1.implementation.hasFeature('', '') !== true + ) { + // This is the only way to test support for the `wheel` event in IE9+. + isSupported = document$1.implementation.hasFeature('Events.wheel', '3.0'); + } + + return isSupported; +} +const Mousewheel = { + lastScrollTime: Utils.now(), + lastEventBeforeSnap: undefined, + recentWheelEvents: [], + event() { + if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll'; + return isEventSupported() ? 'wheel' : 'mousewheel'; + }, + normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + + if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = (pX < 1) ? -1 : 1; + } + if (pY && !sY) { + sY = (pY < 1) ? -1 : 1; + } + + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY, + }; + }, + handleMouseEnter() { + const swiper = this; + swiper.mouseEntered = true; + }, + handleMouseLeave() { + const swiper = this; + swiper.mouseEntered = false; + }, + handle(event) { + let e = event; + const swiper = this; + const params = swiper.params.mousewheel; + + if (swiper.params.cssMode) { + e.preventDefault(); + } + + let target = swiper.$el; + if (swiper.params.mousewheel.eventsTarged !== 'container') { + target = $(swiper.params.mousewheel.eventsTarged); + } + if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true; + + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + + const data = Mousewheel.normalize(e); + + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor; + else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY; + else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + + if (delta === 0) return true; + + if (params.invert) delta = -delta; + + if (!swiper.params.freeMode) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: Utils.now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event, + }; + + // Keep the most recent events + const recentWheelEvents = swiper.mousewheel.recentWheelEvents; + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta) { + swiper.mousewheel.animateSlider(newEvent); + } + } else { + swiper.mousewheel.animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (swiper.mousewheel.releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) }; + const { lastEventBeforeSnap } = swiper.mousewheel; + const ignoreWheelEvents = lastEventBeforeSnap + && newEvent.time < lastEventBeforeSnap.time + 500 + && newEvent.delta <= lastEventBeforeSnap.delta + && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + swiper.mousewheel.lastEventBeforeSnap = undefined; + + if (swiper.params.loop) { + swiper.loopFix(); + } + let position = swiper.getTranslate() + (delta * params.sensitivity); + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + + if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) { + swiper.updateSlidesClasses(); + } + + if (swiper.params.freeModeSticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momuntum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(swiper.mousewheel.timeout); + swiper.mousewheel.timeout = undefined; + const recentWheelEvents = swiper.mousewheel.recentWheelEvents; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 + && newEvent.time - firstEvent.time < 500 + && firstEvent.delta - newEvent.delta >= 1 + && newEvent.delta <= 6 + ) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + swiper.mousewheel.lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.mousewheel.timeout = Utils.nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + if (!swiper.mousewheel.timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + swiper.mousewheel.timeout = Utils.nextTick(() => { + const snapToThreshold = 0.5; + swiper.mousewheel.lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) swiper.emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true; + } + } + + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + return false; + }, + animateSlider(newEvent) { + const swiper = this; + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + swiper.emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + swiper.emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + swiper.mousewheel.lastScrollTime = (new window.Date()).getTime(); + // Return false as a default + return false; + }, + releaseScroll(newEvent) { + const swiper = this; + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + }, + enable() { + const swiper = this; + const event = Mousewheel.event(); + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle); + return true; + } + if (!event) return false; + if (swiper.mousewheel.enabled) return false; + let target = swiper.$el; + if (swiper.params.mousewheel.eventsTarged !== 'container') { + target = $(swiper.params.mousewheel.eventsTarged); + } + target.on('mouseenter', swiper.mousewheel.handleMouseEnter); + target.on('mouseleave', swiper.mousewheel.handleMouseLeave); + target.on(event, swiper.mousewheel.handle); + swiper.mousewheel.enabled = true; + return true; + }, + disable() { + const swiper = this; + const event = Mousewheel.event(); + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle); + return true; + } + if (!event) return false; + if (!swiper.mousewheel.enabled) return false; + let target = swiper.$el; + if (swiper.params.mousewheel.eventsTarged !== 'container') { + target = $(swiper.params.mousewheel.eventsTarged); + } + target.off(event, swiper.mousewheel.handle); + swiper.mousewheel.enabled = false; + return true; + }, +}; + +var mousewheel = { + name: 'mousewheel', + params: { + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarged: 'container', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + mousewheel: { + enabled: false, + enable: Mousewheel.enable.bind(swiper), + disable: Mousewheel.disable.bind(swiper), + handle: Mousewheel.handle.bind(swiper), + handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper), + handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper), + animateSlider: Mousewheel.animateSlider.bind(swiper), + releaseScroll: Mousewheel.releaseScroll.bind(swiper), + lastScrollTime: Utils.now(), + lastEventBeforeSnap: undefined, + recentWheelEvents: [], + }, + }); + }, + on: { + init() { + const swiper = this; + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + swiper.mousewheel.disable(); + } + if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable(); + }, + destroy() { + const swiper = this; + if (swiper.params.cssMode) { + swiper.mousewheel.enable(); + } + if (swiper.mousewheel.enabled) swiper.mousewheel.disable(); + }, + }, +}; + +const Navigation = { + update() { + // Update Navigation Buttons + const swiper = this; + const params = swiper.params.navigation; + + if (swiper.params.loop) return; + const { $nextEl, $prevEl } = swiper.navigation; + + if ($prevEl && $prevEl.length > 0) { + if (swiper.isBeginning) { + $prevEl.addClass(params.disabledClass); + } else { + $prevEl.removeClass(params.disabledClass); + } + $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + } + if ($nextEl && $nextEl.length > 0) { + if (swiper.isEnd) { + $nextEl.addClass(params.disabledClass); + } else { + $nextEl.removeClass(params.disabledClass); + } + $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + } + }, + onPrevClick(e) { + const swiper = this; + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop) return; + swiper.slidePrev(); + }, + onNextClick(e) { + const swiper = this; + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop) return; + swiper.slideNext(); + }, + init() { + const swiper = this; + const params = swiper.params.navigation; + if (!(params.nextEl || params.prevEl)) return; + + let $nextEl; + let $prevEl; + if (params.nextEl) { + $nextEl = $(params.nextEl); + if ( + swiper.params.uniqueNavElements + && typeof params.nextEl === 'string' + && $nextEl.length > 1 + && swiper.$el.find(params.nextEl).length === 1 + ) { + $nextEl = swiper.$el.find(params.nextEl); + } + } + if (params.prevEl) { + $prevEl = $(params.prevEl); + if ( + swiper.params.uniqueNavElements + && typeof params.prevEl === 'string' + && $prevEl.length > 1 + && swiper.$el.find(params.prevEl).length === 1 + ) { + $prevEl = swiper.$el.find(params.prevEl); + } + } + + if ($nextEl && $nextEl.length > 0) { + $nextEl.on('click', swiper.navigation.onNextClick); + } + if ($prevEl && $prevEl.length > 0) { + $prevEl.on('click', swiper.navigation.onPrevClick); + } + + Utils.extend(swiper.navigation, { + $nextEl, + nextEl: $nextEl && $nextEl[0], + $prevEl, + prevEl: $prevEl && $prevEl[0], + }); + }, + destroy() { + const swiper = this; + const { $nextEl, $prevEl } = swiper.navigation; + if ($nextEl && $nextEl.length) { + $nextEl.off('click', swiper.navigation.onNextClick); + $nextEl.removeClass(swiper.params.navigation.disabledClass); + } + if ($prevEl && $prevEl.length) { + $prevEl.off('click', swiper.navigation.onPrevClick); + $prevEl.removeClass(swiper.params.navigation.disabledClass); + } + }, +}; + +var navigation = { + name: 'navigation', + params: { + navigation: { + nextEl: null, + prevEl: null, + + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + navigation: { + init: Navigation.init.bind(swiper), + update: Navigation.update.bind(swiper), + destroy: Navigation.destroy.bind(swiper), + onNextClick: Navigation.onNextClick.bind(swiper), + onPrevClick: Navigation.onPrevClick.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.navigation.init(); + swiper.navigation.update(); + }, + toEdge() { + const swiper = this; + swiper.navigation.update(); + }, + fromEdge() { + const swiper = this; + swiper.navigation.update(); + }, + destroy() { + const swiper = this; + swiper.navigation.destroy(); + }, + click(e) { + const swiper = this; + const { $nextEl, $prevEl } = swiper.navigation; + if ( + swiper.params.navigation.hideOnClick + && !$(e.target).is($prevEl) + && !$(e.target).is($nextEl) + ) { + let isHidden; + if ($nextEl) { + isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass); + } else if ($prevEl) { + isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + swiper.emit('navigationShow', swiper); + } else { + swiper.emit('navigationHide', swiper); + } + if ($nextEl) { + $nextEl.toggleClass(swiper.params.navigation.hiddenClass); + } + if ($prevEl) { + $prevEl.toggleClass(swiper.params.navigation.hiddenClass); + } + } + }, + }, +}; + +const Pagination = { + update() { + // Render || Update Pagination bullets/items + const swiper = this; + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const $el = swiper.pagination.$el; + // Current/Total + let current; + const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); + if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) { + current -= (slidesLength - (swiper.loopedSlides * 2)); + } + if (current > total - 1) current -= total; + if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + } else { + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); + $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`); + if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { + swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex); + if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) { + swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (swiper.pagination.dynamicBulletIndex < 0) { + swiper.pagination.dynamicBulletIndex = 0; + } + } + firstIndex = current - swiper.pagination.dynamicBulletIndex; + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`); + if ($el.length > 1) { + bullets.each((index, bullet) => { + const $bullet = $(bullet); + const bulletIndex = $bullet.index(); + if (bulletIndex === current) { + $bullet.addClass(params.bulletActiveClass); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + $bullet.addClass(`${params.bulletActiveClass}-main`); + } + if (bulletIndex === firstIndex) { + $bullet + .prev() + .addClass(`${params.bulletActiveClass}-prev`) + .prev() + .addClass(`${params.bulletActiveClass}-prev-prev`); + } + if (bulletIndex === lastIndex) { + $bullet + .next() + .addClass(`${params.bulletActiveClass}-next`) + .next() + .addClass(`${params.bulletActiveClass}-next-next`); + } + } + }); + } else { + const $bullet = bullets.eq(current); + const bulletIndex = $bullet.index(); + $bullet.addClass(params.bulletActiveClass); + if (params.dynamicBullets) { + const $firstDisplayedBullet = bullets.eq(firstIndex); + const $lastDisplayedBullet = bullets.eq(lastIndex); + for (let i = firstIndex; i <= lastIndex; i += 1) { + bullets.eq(i).addClass(`${params.bulletActiveClass}-main`); + } + if (swiper.params.loop) { + if (bulletIndex >= bullets.length - params.dynamicMainBullets) { + for (let i = params.dynamicMainBullets; i >= 0; i -= 1) { + bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`); + } + bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`); + } else { + $firstDisplayedBullet + .prev() + .addClass(`${params.bulletActiveClass}-prev`) + .prev() + .addClass(`${params.bulletActiveClass}-prev-prev`); + $lastDisplayedBullet + .next() + .addClass(`${params.bulletActiveClass}-next`) + .next() + .addClass(`${params.bulletActiveClass}-next-next`); + } + } else { + $firstDisplayedBullet + .prev() + .addClass(`${params.bulletActiveClass}-prev`) + .prev() + .addClass(`${params.bulletActiveClass}-prev-prev`); + $lastDisplayedBullet + .next() + .addClass(`${params.bulletActiveClass}-next`) + .next() + .addClass(`${params.bulletActiveClass}-next-next`); + } + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize); + const offsetProp = rtl ? 'right' : 'left'; + bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`); + } + } + if (params.type === 'fraction') { + $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1)); + $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total)); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed); + } + if (params.type === 'custom' && params.renderCustom) { + $el.html(params.renderCustom(swiper, current + 1, total)); + swiper.emit('paginationRender', swiper, $el[0]); + } else { + swiper.emit('paginationUpdate', swiper, $el[0]); + } + $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + }, + render() { + // Render Container + const swiper = this; + const params = swiper.params.pagination; + if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + + const $el = swiper.pagination.$el; + let paginationHTML = ''; + if (params.type === 'bullets') { + const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + paginationHTML += `<${params.bulletElement} class="${params.bulletClass}">`; + } + } + $el.html(paginationHTML); + swiper.pagination.bullets = $el.find(`.${params.bulletClass}`); + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + + ' / ' + + ``; + } + $el.html(paginationHTML); + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + $el.html(paginationHTML); + } + if (params.type !== 'custom') { + swiper.emit('paginationRender', swiper.pagination.$el[0]); + } + }, + init() { + const swiper = this; + const params = swiper.params.pagination; + if (!params.el) return; + + let $el = $(params.el); + if ($el.length === 0) return; + + if ( + swiper.params.uniqueNavElements + && typeof params.el === 'string' + && $el.length > 1 + && swiper.$el.find(params.el).length === 1 + ) { + $el = swiper.$el.find(params.el); + } + + if (params.type === 'bullets' && params.clickable) { + $el.addClass(params.clickableClass); + } + + $el.addClass(params.modifierClass + params.type); + + if (params.type === 'bullets' && params.dynamicBullets) { + $el.addClass(`${params.modifierClass}${params.type}-dynamic`); + swiper.pagination.dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + $el.addClass(params.progressbarOppositeClass); + } + + if (params.clickable) { + $el.on('click', `.${params.bulletClass}`, function onClick(e) { + e.preventDefault(); + let index = $(this).index() * swiper.params.slidesPerGroup; + if (swiper.params.loop) index += swiper.loopedSlides; + swiper.slideTo(index); + }); + } + + Utils.extend(swiper.pagination, { + $el, + el: $el[0], + }); + }, + destroy() { + const swiper = this; + const params = swiper.params.pagination; + if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return; + const $el = swiper.pagination.$el; + + $el.removeClass(params.hiddenClass); + $el.removeClass(params.modifierClass + params.type); + if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass); + if (params.clickable) { + $el.off('click', `.${params.bulletClass}`); + } + }, +}; + +var pagination = { + name: 'pagination', + params: { + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: (number) => number, + formatFractionTotal: (number) => number, + bulletClass: 'swiper-pagination-bullet', + bulletActiveClass: 'swiper-pagination-bullet-active', + modifierClass: 'swiper-pagination-', // NEW + currentClass: 'swiper-pagination-current', + totalClass: 'swiper-pagination-total', + hiddenClass: 'swiper-pagination-hidden', + progressbarFillClass: 'swiper-pagination-progressbar-fill', + progressbarOppositeClass: 'swiper-pagination-progressbar-opposite', + clickableClass: 'swiper-pagination-clickable', // NEW + lockClass: 'swiper-pagination-lock', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + pagination: { + init: Pagination.init.bind(swiper), + render: Pagination.render.bind(swiper), + update: Pagination.update.bind(swiper), + destroy: Pagination.destroy.bind(swiper), + dynamicBulletIndex: 0, + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.pagination.init(); + swiper.pagination.render(); + swiper.pagination.update(); + }, + activeIndexChange() { + const swiper = this; + if (swiper.params.loop) { + swiper.pagination.update(); + } else if (typeof swiper.snapIndex === 'undefined') { + swiper.pagination.update(); + } + }, + snapIndexChange() { + const swiper = this; + if (!swiper.params.loop) { + swiper.pagination.update(); + } + }, + slidesLengthChange() { + const swiper = this; + if (swiper.params.loop) { + swiper.pagination.render(); + swiper.pagination.update(); + } + }, + snapGridLengthChange() { + const swiper = this; + if (!swiper.params.loop) { + swiper.pagination.render(); + swiper.pagination.update(); + } + }, + destroy() { + const swiper = this; + swiper.pagination.destroy(); + }, + click(e) { + const swiper = this; + if ( + swiper.params.pagination.el + && swiper.params.pagination.hideOnClick + && swiper.pagination.$el.length > 0 + && !$(e.target).hasClass(swiper.params.pagination.bulletClass) + ) { + const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + swiper.emit('paginationShow', swiper); + } else { + swiper.emit('paginationHide', swiper); + } + swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass); + } + }, + }, +}; + +const Scrollbar = { + setTranslate() { + const swiper = this; + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { scrollbar, rtlTranslate: rtl, progress } = swiper; + const { + dragSize, trackSize, $dragEl, $el, + } = scrollbar; + const params = swiper.params.scrollbar; + + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + $dragEl.transform(`translate3d(${newPos}px, 0, 0)`); + $dragEl[0].style.width = `${newSize}px`; + } else { + $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`); + $dragEl[0].style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(swiper.scrollbar.timeout); + $el[0].style.opacity = 1; + swiper.scrollbar.timeout = setTimeout(() => { + $el[0].style.opacity = 0; + $el.transition(400); + }, 1000); + } + }, + setTransition(duration) { + const swiper = this; + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.$dragEl.transition(duration); + }, + updateSize() { + const swiper = this; + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + + const { scrollbar } = swiper; + const { $dragEl, $el } = scrollbar; + + $dragEl[0].style.width = ''; + $dragEl[0].style.height = ''; + const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight; + + const divider = swiper.size / swiper.virtualSize; + const moveDivider = divider * (trackSize / swiper.size); + let dragSize; + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + + if (swiper.isHorizontal()) { + $dragEl[0].style.width = `${dragSize}px`; + } else { + $dragEl[0].style.height = `${dragSize}px`; + } + + if (divider >= 1) { + $el[0].style.display = 'none'; + } else { + $el[0].style.display = ''; + } + if (swiper.params.scrollbar.hide) { + $el[0].style.opacity = 0; + } + Utils.extend(scrollbar, { + trackSize, + divider, + moveDivider, + dragSize, + }); + scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); + }, + getPointerPosition(e) { + const swiper = this; + if (swiper.isHorizontal()) { + return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX); + } + return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY); + }, + setDragPosition(e) { + const swiper = this; + const { scrollbar, rtlTranslate: rtl } = swiper; + const { + $el, + dragSize, + trackSize, + dragStartPos, + } = scrollbar; + + let positionRatio; + positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] + - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + + const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio); + + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + }, + onDragStart(e) { + const swiper = this; + const params = swiper.params.scrollbar; + const { scrollbar, $wrapperEl } = swiper; + const { $el, $dragEl } = scrollbar; + swiper.scrollbar.isTouched = true; + swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl) + ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + + $wrapperEl.transition(100); + $dragEl.transition(100); + scrollbar.setDragPosition(e); + + clearTimeout(swiper.scrollbar.dragTimeout); + + $el.transition(0); + if (params.hide) { + $el.css('opacity', 1); + } + if (swiper.params.cssMode) { + swiper.$wrapperEl.css('scroll-snap-type', 'none'); + } + swiper.emit('scrollbarDragStart', e); + }, + onDragMove(e) { + const swiper = this; + const { scrollbar, $wrapperEl } = swiper; + const { $el, $dragEl } = scrollbar; + + if (!swiper.scrollbar.isTouched) return; + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + scrollbar.setDragPosition(e); + $wrapperEl.transition(0); + $el.transition(0); + $dragEl.transition(0); + swiper.emit('scrollbarDragMove', e); + }, + onDragEnd(e) { + const swiper = this; + + const params = swiper.params.scrollbar; + const { scrollbar, $wrapperEl } = swiper; + const { $el } = scrollbar; + + if (!swiper.scrollbar.isTouched) return; + swiper.scrollbar.isTouched = false; + if (swiper.params.cssMode) { + swiper.$wrapperEl.css('scroll-snap-type', ''); + $wrapperEl.transition(''); + } + if (params.hide) { + clearTimeout(swiper.scrollbar.dragTimeout); + swiper.scrollbar.dragTimeout = Utils.nextTick(() => { + $el.css('opacity', 0); + $el.transition(400); + }, 1000); + } + swiper.emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + }, + enableDraggable() { + const swiper = this; + if (!swiper.params.scrollbar.el) return; + const { + scrollbar, touchEventsTouch, touchEventsDesktop, params, + } = swiper; + const $el = scrollbar.$el; + const target = $el[0]; + const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; + const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + if (!Support.touch) { + target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); + document$1.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); + document$1.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); + } else { + target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener); + target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener); + target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener); + } + }, + disableDraggable() { + const swiper = this; + if (!swiper.params.scrollbar.el) return; + const { + scrollbar, touchEventsTouch, touchEventsDesktop, params, + } = swiper; + const $el = scrollbar.$el; + const target = $el[0]; + const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; + const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + if (!Support.touch) { + target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); + document$1.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); + document$1.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); + } else { + target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener); + target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener); + target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener); + } + }, + init() { + const swiper = this; + if (!swiper.params.scrollbar.el) return; + const { scrollbar, $el: $swiperEl } = swiper; + const params = swiper.params.scrollbar; + + let $el = $(params.el); + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { + $el = $swiperEl.find(params.el); + } + + let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`); + if ($dragEl.length === 0) { + $dragEl = $(`
      `); + $el.append($dragEl); + } + + Utils.extend(scrollbar, { + $el, + el: $el[0], + $dragEl, + dragEl: $dragEl[0], + }); + + if (params.draggable) { + scrollbar.enableDraggable(); + } + }, + destroy() { + const swiper = this; + swiper.scrollbar.disableDraggable(); + }, +}; + +var scrollbar = { + name: 'scrollbar', + params: { + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + scrollbar: { + init: Scrollbar.init.bind(swiper), + destroy: Scrollbar.destroy.bind(swiper), + updateSize: Scrollbar.updateSize.bind(swiper), + setTranslate: Scrollbar.setTranslate.bind(swiper), + setTransition: Scrollbar.setTransition.bind(swiper), + enableDraggable: Scrollbar.enableDraggable.bind(swiper), + disableDraggable: Scrollbar.disableDraggable.bind(swiper), + setDragPosition: Scrollbar.setDragPosition.bind(swiper), + getPointerPosition: Scrollbar.getPointerPosition.bind(swiper), + onDragStart: Scrollbar.onDragStart.bind(swiper), + onDragMove: Scrollbar.onDragMove.bind(swiper), + onDragEnd: Scrollbar.onDragEnd.bind(swiper), + isTouched: false, + timeout: null, + dragTimeout: null, + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.scrollbar.init(); + swiper.scrollbar.updateSize(); + swiper.scrollbar.setTranslate(); + }, + update() { + const swiper = this; + swiper.scrollbar.updateSize(); + }, + resize() { + const swiper = this; + swiper.scrollbar.updateSize(); + }, + observerUpdate() { + const swiper = this; + swiper.scrollbar.updateSize(); + }, + setTranslate() { + const swiper = this; + swiper.scrollbar.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + swiper.scrollbar.setTransition(duration); + }, + destroy() { + const swiper = this; + swiper.scrollbar.destroy(); + }, + }, +}; + +const Parallax = { + setTransform(el, progress) { + const swiper = this; + const { rtl } = swiper; + + const $el = $(el); + const rtlFactor = rtl ? -1 : 1; + + const p = $el.attr('data-swiper-parallax') || '0'; + let x = $el.attr('data-swiper-parallax-x'); + let y = $el.attr('data-swiper-parallax-y'); + const scale = $el.attr('data-swiper-parallax-scale'); + const opacity = $el.attr('data-swiper-parallax-opacity'); + + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + + if ((x).indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if ((y).indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress))); + $el[0].style.opacity = currentOpacity; + } + if (typeof scale === 'undefined' || scale === null) { + $el.transform(`translate3d(${x}, ${y}, 0px)`); + } else { + const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress))); + $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`); + } + }, + setTranslate() { + const swiper = this; + const { + $el, slides, progress, snapGrid, + } = swiper; + $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') + .each((index, el) => { + swiper.parallax.setTransform(el, progress); + }); + slides.each((slideIndex, slideEl) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1)); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') + .each((index, el) => { + swiper.parallax.setTransform(el, slideProgress); + }); + }); + }, + setTransition(duration = this.params.speed) { + const swiper = this; + const { $el } = swiper; + $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') + .each((index, parallaxEl) => { + const $parallaxEl = $(parallaxEl); + let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + $parallaxEl.transition(parallaxDuration); + }); + }, +}; + +var parallax = { + name: 'parallax', + params: { + parallax: { + enabled: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + parallax: { + setTransform: Parallax.setTransform.bind(swiper), + setTranslate: Parallax.setTranslate.bind(swiper), + setTransition: Parallax.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }, + init() { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.parallax.setTranslate(); + }, + setTranslate() { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.parallax.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.parallax.setTransition(duration); + }, + }, +}; + +const Zoom = { + // Calc Scale From Multi-touches + getDistanceBetweenTouches(e) { + if (e.targetTouches.length < 2) return 1; + const x1 = e.targetTouches[0].pageX; + const y1 = e.targetTouches[0].pageY; + const x2 = e.targetTouches[1].pageX; + const y2 = e.targetTouches[1].pageY; + const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2)); + return distance; + }, + // Events + onGestureStart(e) { + const swiper = this; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const { gesture } = zoom; + zoom.fakeGestureTouched = false; + zoom.fakeGestureMoved = false; + if (!Support.gestures) { + if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) { + return; + } + zoom.fakeGestureTouched = true; + gesture.scaleStart = Zoom.getDistanceBetweenTouches(e); + } + if (!gesture.$slideEl || !gesture.$slideEl.length) { + gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`); + if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target'); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + if (gesture.$imageWrapEl.length === 0) { + gesture.$imageEl = undefined; + return; + } + } + if (gesture.$imageEl) { + gesture.$imageEl.transition(0); + } + swiper.zoom.isScaling = true; + }, + onGestureChange(e) { + const swiper = this; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const { gesture } = zoom; + if (!Support.gestures) { + if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) { + return; + } + zoom.fakeGestureMoved = true; + gesture.scaleMove = Zoom.getDistanceBetweenTouches(e); + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + if (Support.gestures) { + zoom.scale = e.scale * zoom.currentScale; + } else { + zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale; + } + if (zoom.scale > gesture.maxRatio) { + zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5); + } + if (zoom.scale < params.minRatio) { + zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5); + } + gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`); + }, + onGestureEnd(e) { + const swiper = this; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const { gesture } = zoom; + if (!Support.gestures) { + if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) { + return; + } + if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) { + return; + } + zoom.fakeGestureTouched = false; + zoom.fakeGestureMoved = false; + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`); + zoom.currentScale = zoom.scale; + zoom.isScaling = false; + if (zoom.scale === 1) gesture.$slideEl = undefined; + }, + onTouchStart(e) { + const swiper = this; + const zoom = swiper.zoom; + const { gesture, image } = zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + if (image.isTouched) return; + if (Device.android) e.preventDefault(); + image.isTouched = true; + image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; + image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; + }, + onTouchMove(e) { + const swiper = this; + const zoom = swiper.zoom; + const { gesture, image, velocity } = zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + swiper.allowClick = false; + if (!image.isTouched || !gesture.$slideEl) return; + + if (!image.isMoved) { + image.width = gesture.$imageEl[0].offsetWidth; + image.height = gesture.$imageEl[0].offsetHeight; + image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0; + image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0; + gesture.slideWidth = gesture.$slideEl[0].offsetWidth; + gesture.slideHeight = gesture.$slideEl[0].offsetHeight; + gesture.$imageWrapEl.transition(0); + if (swiper.rtl) { + image.startX = -image.startX; + image.startY = -image.startY; + } + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + + if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; + + image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); + image.maxX = -image.minX; + image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); + image.maxY = -image.minY; + + image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; + image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; + + if (!image.isMoved && !zoom.isScaling) { + if ( + swiper.isHorizontal() + && ( + (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x) + || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x) + ) + ) { + image.isTouched = false; + return; + } if ( + !swiper.isHorizontal() + && ( + (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y) + || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y) + ) + ) { + image.isTouched = false; + return; + } + } + e.preventDefault(); + e.stopPropagation(); + + image.isMoved = true; + image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX; + image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY; + + if (image.currentX < image.minX) { + image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8); + } + if (image.currentX > image.maxX) { + image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8); + } + + if (image.currentY < image.minY) { + image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8); + } + if (image.currentY > image.maxY) { + image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8); + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + + gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); + }, + onTouchEnd() { + const swiper = this; + const zoom = swiper.zoom; + const { gesture, image, velocity } = zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + + image.currentX = newPositionX; + image.currentY = newPositionY; + + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); + image.maxX = -image.minX; + image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + + gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); + }, + onTransitionEnd() { + const swiper = this; + const zoom = swiper.zoom; + const { gesture } = zoom; + if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) { + if (gesture.$imageEl) { + gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); + } + if (gesture.$imageWrapEl) { + gesture.$imageWrapEl.transform('translate3d(0,0,0)'); + } + + zoom.scale = 1; + zoom.currentScale = 1; + + gesture.$slideEl = undefined; + gesture.$imageEl = undefined; + gesture.$imageWrapEl = undefined; + } + }, + // Toggle Zoom + toggle(e) { + const swiper = this; + const zoom = swiper.zoom; + + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoom.out(); + } else { + // Zoom In + zoom.in(e); + } + }, + in(e) { + const swiper = this; + + const zoom = swiper.zoom; + const params = swiper.params.zoom; + const { gesture, image } = zoom; + + if (!gesture.$slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); + } else { + gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + } + gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target'); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + + gesture.$slideEl.addClass(`${params.zoomedSlideClass}`); + + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; + touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + + zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + if (e) { + slideWidth = gesture.$slideEl[0].offsetWidth; + slideHeight = gesture.$slideEl[0].offsetHeight; + offsetX = gesture.$slideEl.offset().left; + offsetY = gesture.$slideEl.offset().top; + diffX = (offsetX + (slideWidth / 2)) - touchX; + diffY = (offsetY + (slideHeight / 2)) - touchY; + + imageWidth = gesture.$imageEl[0].offsetWidth; + imageHeight = gesture.$imageEl[0].offsetHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + + translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0); + translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`); + gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`); + }, + out() { + const swiper = this; + + const zoom = swiper.zoom; + const params = swiper.params.zoom; + const { gesture } = zoom; + + if (!gesture.$slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); + } else { + gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + } + gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target'); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + + zoom.scale = 1; + zoom.currentScale = 1; + gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); + gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); + gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`); + gesture.$slideEl = undefined; + }, + // Attach/Detach Events + enable() { + const swiper = this; + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + + const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; + const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true; + + const slideSelector = `.${swiper.params.slideClass}`; + + // Scale image + if (Support.gestures) { + swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener); + swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener); + } else if (swiper.touchEvents.start === 'touchstart') { + swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture); + swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener); + if (swiper.touchEvents.cancel) { + swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener); + } + } + + // Move image + swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture); + }, + disable() { + const swiper = this; + const zoom = swiper.zoom; + if (!zoom.enabled) return; + + swiper.zoom.enabled = false; + + const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; + const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true; + + const slideSelector = `.${swiper.params.slideClass}`; + + // Scale image + if (Support.gestures) { + swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener); + swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener); + } else if (swiper.touchEvents.start === 'touchstart') { + swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture); + swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener); + if (swiper.touchEvents.cancel) { + swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener); + } + } + + // Move image + swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture); + }, +}; + +var zoom = { + name: 'zoom', + params: { + zoom: { + enabled: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed', + }, + }, + create() { + const swiper = this; + const zoom = { + enabled: false, + scale: 1, + currentScale: 1, + isScaling: false, + gesture: { + $slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + $imageEl: undefined, + $imageWrapEl: undefined, + maxRatio: 3, + }, + image: { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {}, + }, + velocity: { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined, + }, + }; + + ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => { + zoom[methodName] = Zoom[methodName].bind(swiper); + }); + Utils.extend(swiper, { + zoom, + }); + + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined; + const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined; + swiper.emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.zoom.enabled) { + swiper.zoom.enable(); + } + }, + destroy() { + const swiper = this; + swiper.zoom.disable(); + }, + touchStart(e) { + const swiper = this; + if (!swiper.zoom.enabled) return; + swiper.zoom.onTouchStart(e); + }, + touchEnd(e) { + const swiper = this; + if (!swiper.zoom.enabled) return; + swiper.zoom.onTouchEnd(e); + }, + doubleTap(e) { + const swiper = this; + if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + swiper.zoom.toggle(e); + } + }, + transitionEnd() { + const swiper = this; + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + swiper.zoom.onTransitionEnd(); + } + }, + slideChange() { + const swiper = this; + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + swiper.zoom.onTransitionEnd(); + } + }, + }, +}; + +const Lazy = { + loadInSlide(index, loadInDuplicate = true) { + const swiper = this; + const params = swiper.params.lazy; + if (typeof index === 'undefined') return; + if (swiper.slides.length === 0) return; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + const $slideEl = isVirtual + ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`) + : swiper.slides.eq(index); + + let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`); + if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { + $images = $images.add($slideEl[0]); + } + if ($images.length === 0) return; + + $images.each((imageIndex, imageEl) => { + const $imageEl = $(imageEl); + $imageEl.addClass(params.loadingClass); + + const background = $imageEl.attr('data-background'); + const src = $imageEl.attr('data-src'); + const srcset = $imageEl.attr('data-srcset'); + const sizes = $imageEl.attr('data-sizes'); + + swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => { + if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return; + if (background) { + $imageEl.css('background-image', `url("${background}")`); + $imageEl.removeAttr('data-background'); + } else { + if (srcset) { + $imageEl.attr('srcset', srcset); + $imageEl.removeAttr('data-srcset'); + } + if (sizes) { + $imageEl.attr('sizes', sizes); + $imageEl.removeAttr('data-sizes'); + } + if (src) { + $imageEl.attr('src', src); + $imageEl.removeAttr('data-src'); + } + } + + $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); + $slideEl.find(`.${params.preloaderClass}`).remove(); + if (swiper.params.loop && loadInDuplicate) { + const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); + if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { + const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`); + swiper.lazy.loadInSlide(originalSlide.index(), false); + } else { + const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`); + swiper.lazy.loadInSlide(duplicatedSlide.index(), false); + } + } + swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]); + if (swiper.params.autoHeight) { + swiper.updateAutoHeight(); + } + }); + + swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]); + }); + }, + load() { + const swiper = this; + const { + $wrapperEl, params: swiperParams, slides, activeIndex, + } = swiper; + const isVirtual = swiper.virtual && swiperParams.virtual.enabled; + const params = swiperParams.lazy; + + let slidesPerView = swiperParams.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = 0; + } + + function slideExist(index) { + if (isVirtual) { + if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) { + return true; + } + } else if (slides[index]) return true; + return false; + } + function slideIndex(slideEl) { + if (isVirtual) { + return $(slideEl).attr('data-swiper-slide-index'); + } + return $(slideEl).index(); + } + + if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true; + if (swiper.params.watchSlidesVisibility) { + $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => { + const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index(); + swiper.lazy.loadInSlide(index); + }); + } else if (slidesPerView > 1) { + for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) { + if (slideExist(i)) swiper.lazy.loadInSlide(i); + } + } else { + swiper.lazy.loadInSlide(activeIndex); + } + if (params.loadPrevNext) { + if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) { + const amount = params.loadPrevNextAmount; + const spv = slidesPerView; + const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); + const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); + // Next Slides + for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) { + if (slideExist(i)) swiper.lazy.loadInSlide(i); + } + // Prev Slides + for (let i = minIndex; i < activeIndex; i += 1) { + if (slideExist(i)) swiper.lazy.loadInSlide(i); + } + } else { + const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`); + if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide)); + + const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`); + if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide)); + } + } + }, +}; + +var lazy = { + name: 'lazy', + params: { + lazy: { + enabled: false, + loadPrevNext: false, + loadPrevNextAmount: 1, + loadOnTransitionStart: false, + + elementClass: 'swiper-lazy', + loadingClass: 'swiper-lazy-loading', + loadedClass: 'swiper-lazy-loaded', + preloaderClass: 'swiper-lazy-preloader', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + lazy: { + initialImageLoaded: false, + load: Lazy.load.bind(swiper), + loadInSlide: Lazy.loadInSlide.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.lazy.enabled && swiper.params.preloadImages) { + swiper.params.preloadImages = false; + } + }, + init() { + const swiper = this; + if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) { + swiper.lazy.load(); + } + }, + scroll() { + const swiper = this; + if (swiper.params.freeMode && !swiper.params.freeModeSticky) { + swiper.lazy.load(); + } + }, + resize() { + const swiper = this; + if (swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + }, + scrollbarDragMove() { + const swiper = this; + if (swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + }, + transitionStart() { + const swiper = this; + if (swiper.params.lazy.enabled) { + if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) { + swiper.lazy.load(); + } + } + }, + transitionEnd() { + const swiper = this; + if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { + swiper.lazy.load(); + } + }, + slideChange() { + const swiper = this; + if (swiper.params.lazy.enabled && swiper.params.cssMode) { + swiper.lazy.load(); + } + }, + }, +}; + +/* eslint no-bitwise: ["error", { "allow": [">>"] }] */ + +const Controller = { + LinearSpline: function LinearSpline(x, y) { + const binarySearch = (function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }()); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1]; + }; + return this; + }, + // xxx: for now i will just save one spline function to to + getInterpolateFunction(c) { + const swiper = this; + if (!swiper.controller.spline) { + swiper.controller.spline = swiper.params.loop + ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) + : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid); + } + }, + setTranslate(setTranslate, byController) { + const swiper = this; + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + function setControlledTranslate(c) { + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + swiper.controller.getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate(); + } + + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + }, + setTransition(duration, byController) { + const swiper = this; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + Utils.nextTick(() => { + c.updateAutoHeight(); + }); + } + c.$wrapperEl.transitionEnd(() => { + if (!controlled) return; + if (c.params.loop && swiper.params.controller.by === 'slide') { + c.loopFix(); + } + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + }, +}; +var controller = { + name: 'controller', + params: { + controller: { + control: undefined, + inverse: false, + by: 'slide', // or 'container' + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + controller: { + control: swiper.params.controller.control, + getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper), + setTranslate: Controller.setTranslate.bind(swiper), + setTransition: Controller.setTransition.bind(swiper), + }, + }); + }, + on: { + update() { + const swiper = this; + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + }, + resize() { + const swiper = this; + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + }, + observerUpdate() { + const swiper = this; + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + }, + setTranslate(translate, byController) { + const swiper = this; + if (!swiper.controller.control) return; + swiper.controller.setTranslate(translate, byController); + }, + setTransition(duration, byController) { + const swiper = this; + if (!swiper.controller.control) return; + swiper.controller.setTransition(duration, byController); + }, + }, +}; + +const a11y = { + makeElFocusable($el) { + $el.attr('tabIndex', '0'); + return $el; + }, + addElRole($el, role) { + $el.attr('role', role); + return $el; + }, + addElLabel($el, label) { + $el.attr('aria-label', label); + return $el; + }, + disableEl($el) { + $el.attr('aria-disabled', true); + return $el; + }, + enableEl($el) { + $el.attr('aria-disabled', false); + return $el; + }, + onEnterKey(e) { + const swiper = this; + const params = swiper.params.a11y; + if (e.keyCode !== 13) return; + const $targetEl = $(e.target); + if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + swiper.a11y.notify(params.lastSlideMessage); + } else { + swiper.a11y.notify(params.nextSlideMessage); + } + } + if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + swiper.a11y.notify(params.firstSlideMessage); + } else { + swiper.a11y.notify(params.prevSlideMessage); + } + } + if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) { + $targetEl[0].click(); + } + }, + notify(message) { + const swiper = this; + const notification = swiper.a11y.liveRegion; + if (notification.length === 0) return; + notification.html(''); + notification.html(message); + }, + updateNavigation() { + const swiper = this; + + if (swiper.params.loop || !swiper.navigation) return; + const { $nextEl, $prevEl } = swiper.navigation; + + if ($prevEl && $prevEl.length > 0) { + if (swiper.isBeginning) { + swiper.a11y.disableEl($prevEl); + } else { + swiper.a11y.enableEl($prevEl); + } + } + if ($nextEl && $nextEl.length > 0) { + if (swiper.isEnd) { + swiper.a11y.disableEl($nextEl); + } else { + swiper.a11y.enableEl($nextEl); + } + } + }, + updatePagination() { + const swiper = this; + const params = swiper.params.a11y; + if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { + swiper.pagination.bullets.each((bulletIndex, bulletEl) => { + const $bulletEl = $(bulletEl); + swiper.a11y.makeElFocusable($bulletEl); + swiper.a11y.addElRole($bulletEl, 'button'); + swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1)); + }); + } + }, + init() { + const swiper = this; + + swiper.$el.append(swiper.a11y.liveRegion); + + // Navigation + const params = swiper.params.a11y; + let $nextEl; + let $prevEl; + if (swiper.navigation && swiper.navigation.$nextEl) { + $nextEl = swiper.navigation.$nextEl; + } + if (swiper.navigation && swiper.navigation.$prevEl) { + $prevEl = swiper.navigation.$prevEl; + } + if ($nextEl) { + swiper.a11y.makeElFocusable($nextEl); + swiper.a11y.addElRole($nextEl, 'button'); + swiper.a11y.addElLabel($nextEl, params.nextSlideMessage); + $nextEl.on('keydown', swiper.a11y.onEnterKey); + } + if ($prevEl) { + swiper.a11y.makeElFocusable($prevEl); + swiper.a11y.addElRole($prevEl, 'button'); + swiper.a11y.addElLabel($prevEl, params.prevSlideMessage); + $prevEl.on('keydown', swiper.a11y.onEnterKey); + } + + // Pagination + if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { + swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey); + } + }, + destroy() { + const swiper = this; + if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove(); + + let $nextEl; + let $prevEl; + if (swiper.navigation && swiper.navigation.$nextEl) { + $nextEl = swiper.navigation.$nextEl; + } + if (swiper.navigation && swiper.navigation.$prevEl) { + $prevEl = swiper.navigation.$prevEl; + } + if ($nextEl) { + $nextEl.off('keydown', swiper.a11y.onEnterKey); + } + if ($prevEl) { + $prevEl.off('keydown', swiper.a11y.onEnterKey); + } + + // Pagination + if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { + swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey); + } + }, +}; +var a11y$1 = { + name: 'a11y', + params: { + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + a11y: { + liveRegion: $(``), + }, + }); + Object.keys(a11y).forEach((methodName) => { + swiper.a11y[methodName] = a11y[methodName].bind(swiper); + }); + }, + on: { + init() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.init(); + swiper.a11y.updateNavigation(); + }, + toEdge() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.updateNavigation(); + }, + fromEdge() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.updateNavigation(); + }, + paginationUpdate() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.updatePagination(); + }, + destroy() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.destroy(); + }, + }, +}; + +const History = { + init() { + const swiper = this; + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + const history = swiper.history; + history.initialized = true; + history.paths = History.getPathValues(); + if (!history.paths.key && !history.paths.value) return; + history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', swiper.history.setHistoryPopState); + } + }, + destroy() { + const swiper = this; + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', swiper.history.setHistoryPopState); + } + }, + setHistoryPopState() { + const swiper = this; + swiper.history.paths = History.getPathValues(); + swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false); + }, + getPathValues() { + const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { key, value }; + }, + setHistory(key, index) { + const swiper = this; + if (!swiper.history.initialized || !swiper.params.history.enabled) return; + const slide = swiper.slides.eq(index); + let value = History.slugify(slide.attr('data-history')); + if (!window.location.pathname.includes(key)) { + value = `${key}/${value}`; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ value }, null, value); + } else { + window.history.pushState({ value }, null, value); + } + }, + slugify(text) { + return text.toString() + .replace(/\s+/g, '-') + .replace(/[^\w-]+/g, '') + .replace(/--+/g, '-') + .replace(/^-+/, '') + .replace(/-+$/, ''); + }, + scrollToSlide(speed, value, runCallbacks) { + const swiper = this; + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides.eq(i); + const slideHistory = History.slugify(slide.attr('data-history')); + if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) { + const index = slide.index(); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }, +}; + +var history = { + name: 'history', + params: { + history: { + enabled: false, + replaceState: false, + key: 'slides', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + history: { + init: History.init.bind(swiper), + setHistory: History.setHistory.bind(swiper), + setHistoryPopState: History.setHistoryPopState.bind(swiper), + scrollToSlide: History.scrollToSlide.bind(swiper), + destroy: History.destroy.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.history.enabled) { + swiper.history.init(); + } + }, + destroy() { + const swiper = this; + if (swiper.params.history.enabled) { + swiper.history.destroy(); + } + }, + transitionEnd() { + const swiper = this; + if (swiper.history.initialized) { + swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex); + } + }, + slideChange() { + const swiper = this; + if (swiper.history.initialized && swiper.params.cssMode) { + swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex); + } + }, + }, +}; + +const HashNavigation = { + onHashCange() { + const swiper = this; + const newHash = document$1.location.hash.replace('#', ''); + const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash'); + if (newHash !== activeSlideHash) { + const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index(); + if (typeof newIndex === 'undefined') return; + swiper.slideTo(newIndex); + } + }, + setHash() { + const swiper = this; + if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '')); + } else { + const slide = swiper.slides.eq(swiper.activeIndex); + const hash = slide.attr('data-hash') || slide.attr('data-history'); + document$1.location.hash = hash || ''; + } + }, + init() { + const swiper = this; + if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return; + swiper.hashNavigation.initialized = true; + const hash = document$1.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides.eq(i); + const slideHash = slide.attr('data-hash') || slide.attr('data-history'); + if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) { + const index = slide.index(); + swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); + } + } + } + if (swiper.params.hashNavigation.watchState) { + $(window).on('hashchange', swiper.hashNavigation.onHashCange); + } + }, + destroy() { + const swiper = this; + if (swiper.params.hashNavigation.watchState) { + $(window).off('hashchange', swiper.hashNavigation.onHashCange); + } + }, +}; +var hashNavigation = { + name: 'hash-navigation', + params: { + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + hashNavigation: { + initialized: false, + init: HashNavigation.init.bind(swiper), + destroy: HashNavigation.destroy.bind(swiper), + setHash: HashNavigation.setHash.bind(swiper), + onHashCange: HashNavigation.onHashCange.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.hashNavigation.enabled) { + swiper.hashNavigation.init(); + } + }, + destroy() { + const swiper = this; + if (swiper.params.hashNavigation.enabled) { + swiper.hashNavigation.destroy(); + } + }, + transitionEnd() { + const swiper = this; + if (swiper.hashNavigation.initialized) { + swiper.hashNavigation.setHash(); + } + }, + slideChange() { + const swiper = this; + if (swiper.hashNavigation.initialized && swiper.params.cssMode) { + swiper.hashNavigation.setHash(); + } + }, + }, +}; + +/* eslint no-underscore-dangle: "off" */ + +const Autoplay = { + run() { + const swiper = this; + const $activeSlideEl = swiper.slides.eq(swiper.activeIndex); + let delay = swiper.params.autoplay.delay; + if ($activeSlideEl.attr('data-swiper-autoplay')) { + delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; + } + clearTimeout(swiper.autoplay.timeout); + swiper.autoplay.timeout = Utils.nextTick(() => { + if (swiper.params.autoplay.reverseDirection) { + if (swiper.params.loop) { + swiper.loopFix(); + swiper.slidePrev(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.isBeginning) { + swiper.slidePrev(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else { + swiper.autoplay.stop(); + } + } else if (swiper.params.loop) { + swiper.loopFix(); + swiper.slideNext(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.isEnd) { + swiper.slideNext(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else { + swiper.autoplay.stop(); + } + if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run(); + }, delay); + }, + start() { + const swiper = this; + if (typeof swiper.autoplay.timeout !== 'undefined') return false; + if (swiper.autoplay.running) return false; + swiper.autoplay.running = true; + swiper.emit('autoplayStart'); + swiper.autoplay.run(); + return true; + }, + stop() { + const swiper = this; + if (!swiper.autoplay.running) return false; + if (typeof swiper.autoplay.timeout === 'undefined') return false; + + if (swiper.autoplay.timeout) { + clearTimeout(swiper.autoplay.timeout); + swiper.autoplay.timeout = undefined; + } + swiper.autoplay.running = false; + swiper.emit('autoplayStop'); + return true; + }, + pause(speed) { + const swiper = this; + if (!swiper.autoplay.running) return; + if (swiper.autoplay.paused) return; + if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout); + swiper.autoplay.paused = true; + if (speed === 0 || !swiper.params.autoplay.waitForTransition) { + swiper.autoplay.paused = false; + swiper.autoplay.run(); + } else { + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); + } + }, +}; + +var autoplay = { + name: 'autoplay', + params: { + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: true, + stopOnLastSlide: false, + reverseDirection: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + autoplay: { + running: false, + paused: false, + run: Autoplay.run.bind(swiper), + start: Autoplay.start.bind(swiper), + stop: Autoplay.stop.bind(swiper), + pause: Autoplay.pause.bind(swiper), + onVisibilityChange() { + if (document.visibilityState === 'hidden' && swiper.autoplay.running) { + swiper.autoplay.pause(); + } + if (document.visibilityState === 'visible' && swiper.autoplay.paused) { + swiper.autoplay.run(); + swiper.autoplay.paused = false; + } + }, + onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); + swiper.autoplay.paused = false; + if (!swiper.autoplay.running) { + swiper.autoplay.stop(); + } else { + swiper.autoplay.run(); + } + }, + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.autoplay.enabled) { + swiper.autoplay.start(); + document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange); + } + }, + beforeTransitionStart(speed, internal) { + const swiper = this; + if (swiper.autoplay.running) { + if (internal || !swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.pause(speed); + } else { + swiper.autoplay.stop(); + } + } + }, + sliderFirstMove() { + const swiper = this; + if (swiper.autoplay.running) { + if (swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.stop(); + } else { + swiper.autoplay.pause(); + } + } + }, + touchEnd() { + const swiper = this; + if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.run(); + } + }, + destroy() { + const swiper = this; + if (swiper.autoplay.running) { + swiper.autoplay.stop(); + } + document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange); + }, + }, +}; + +const Fade = { + setTranslate() { + const swiper = this; + const { slides } = swiper; + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = swiper.slides.eq(i); + const offset = $slideEl[0].swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade + ? Math.max(1 - Math.abs($slideEl[0].progress), 0) + : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); + $slideEl + .css({ + opacity: slideOpacity, + }) + .transform(`translate3d(${tx}px, ${ty}px, 0px)`); + } + }, + setTransition(duration) { + const swiper = this; + const { slides, $wrapperEl } = swiper; + slides.transition(duration); + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + slides.transitionEnd(() => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const triggerEvents = ['webkitTransitionEnd', 'transitionend']; + for (let i = 0; i < triggerEvents.length; i += 1) { + $wrapperEl.trigger(triggerEvents[i]); + } + }); + } + }, +}; + +var effectFade = { + name: 'effect-fade', + params: { + fadeEffect: { + crossFade: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + fadeEffect: { + setTranslate: Fade.setTranslate.bind(swiper), + setTransition: Fade.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'fade') return; + swiper.classNames.push(`${swiper.params.containerModifierClass}fade`); + const overwriteParams = { + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'fade') return; + swiper.fadeEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'fade') return; + swiper.fadeEffect.setTransition(duration); + }, + }, +}; + +const Cube = { + setTranslate() { + const swiper = this; + const { + $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize, + } = swiper; + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let $cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow'); + if ($cubeShadowEl.length === 0) { + $cubeShadowEl = $('
      '); + $wrapperEl.append($cubeShadowEl); + } + $cubeShadowEl.css({ height: `${swiperWidth}px` }); + } else { + $cubeShadowEl = $el.find('.swiper-cube-shadow'); + if ($cubeShadowEl.length === 0) { + $cubeShadowEl = $('
      '); + $el.append($cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min($slideEl[0].progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + (round * 4 * swiperSize); + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = (3 * swiperSize) + (swiperSize * 4 * round); + } + if (rtl) { + tx = -tx; + } + + if (!isHorizontal) { + ty = tx; + tx = 0; + } + + const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = (slideIndex * 90) + (progress * 90); + if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90); + } + $slideEl.transform(transform); + if (params.slideShadows) { + // Set shadows + let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + if (shadowBefore.length === 0) { + shadowBefore = $(`
      `); + $slideEl.append(shadowBefore); + } + if (shadowAfter.length === 0) { + shadowAfter = $(`
      `); + $slideEl.append(shadowAfter); + } + if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); + if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); + } + } + $wrapperEl.css({ + '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`, + '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`, + '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`, + 'transform-origin': `50% 50% -${swiperSize / 2}px`, + }); + + if (params.shadow) { + if (isHorizontal) { + $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`); + } else { + const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90); + const multiplier = 1.5 - ( + (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2) + + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2) + ); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`); + } + } + const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0; + $wrapperEl + .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`); + }, + setTransition(duration) { + const swiper = this; + const { $el, slides } = swiper; + slides + .transition(duration) + .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') + .transition(duration); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + $el.find('.swiper-cube-shadow').transition(duration); + } + }, +}; + +var effectCube = { + name: 'effect-cube', + params: { + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + cubeEffect: { + setTranslate: Cube.setTranslate.bind(swiper), + setTransition: Cube.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'cube') return; + swiper.classNames.push(`${swiper.params.containerModifierClass}cube`); + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + const overwriteParams = { + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'cube') return; + swiper.cubeEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'cube') return; + swiper.cubeEffect.setTransition(duration); + }, + }, +}; + +const Flip = { + setTranslate() { + const swiper = this; + const { slides, rtlTranslate: rtl } = swiper; + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + let progress = $slideEl[0].progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min($slideEl[0].progress, 1), -1); + } + const offset = $slideEl[0].swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + + $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + + if (swiper.params.flipEffect.slideShadows) { + // Set shadows + let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + if (shadowBefore.length === 0) { + shadowBefore = $(`
      `); + $slideEl.append(shadowBefore); + } + if (shadowAfter.length === 0) { + shadowAfter = $(`
      `); + $slideEl.append(shadowAfter); + } + if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); + if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); + } + $slideEl + .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`); + } + }, + setTransition(duration) { + const swiper = this; + const { slides, activeIndex, $wrapperEl } = swiper; + slides + .transition(duration) + .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') + .transition(duration); + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + // eslint-disable-next-line + slides.eq(activeIndex).transitionEnd(function onTransitionEnd() { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + // if (!$(this).hasClass(swiper.params.slideActiveClass)) return; + eventTriggered = true; + swiper.animating = false; + const triggerEvents = ['webkitTransitionEnd', 'transitionend']; + for (let i = 0; i < triggerEvents.length; i += 1) { + $wrapperEl.trigger(triggerEvents[i]); + } + }); + } + }, +}; + +var effectFlip = { + name: 'effect-flip', + params: { + flipEffect: { + slideShadows: true, + limitRotation: true, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + flipEffect: { + setTranslate: Flip.setTranslate.bind(swiper), + setTransition: Flip.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'flip') return; + swiper.classNames.push(`${swiper.params.containerModifierClass}flip`); + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + const overwriteParams = { + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'flip') return; + swiper.flipEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'flip') return; + swiper.flipEffect.setTransition(duration); + }, + }, +}; + +const Coverflow = { + setTranslate() { + const swiper = this; + const { + width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid, + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2); + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const $slideEl = slides.eq(i); + const slideSize = slidesSizesGrid[i]; + const slideOffset = $slideEl[0].swiperSlideOffset; + const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier; + + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = ((parseFloat(params.stretch) / 100) * slideSize); + } + let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier); + let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0; + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; + + $slideEl.transform(slideTransform); + $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + if ($shadowBeforeEl.length === 0) { + $shadowBeforeEl = $(`
      `); + $slideEl.append($shadowBeforeEl); + } + if ($shadowAfterEl.length === 0) { + $shadowAfterEl = $(`
      `); + $slideEl.append($shadowAfterEl); + } + if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; + } + } + + // Set correct perspective for IE10 + if (Support.pointerEvents || Support.prefixedPointerEvents) { + const ws = $wrapperEl[0].style; + ws.perspectiveOrigin = `${center}px 50%`; + } + }, + setTransition(duration) { + const swiper = this; + swiper.slides + .transition(duration) + .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') + .transition(duration); + }, +}; + +var effectCoverflow = { + name: 'effect-coverflow', + params: { + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + modifier: 1, + slideShadows: true, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + coverflowEffect: { + setTranslate: Coverflow.setTranslate.bind(swiper), + setTransition: Coverflow.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'coverflow') return; + + swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`); + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'coverflow') return; + swiper.coverflowEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'coverflow') return; + swiper.coverflowEffect.setTransition(duration); + }, + }, +}; + +const Thumbs = { + init() { + const swiper = this; + const { thumbs: thumbsParams } = swiper.params; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Utils.extend(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false, + }); + Utils.extend(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false, + }); + } else if (Utils.isObject(thumbsParams.swiper)) { + swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, { + watchSlidesVisibility: true, + watchSlidesProgress: true, + slideToClickedSlide: false, + })); + swiper.thumbs.swiperCreated = true; + } + swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick); + }, + onThumbClick() { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + let currentIndex = swiper.activeIndex; + if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) { + swiper.loopFix(); + // eslint-disable-next-line + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + currentIndex = swiper.activeIndex; + } + const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); + const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); + if (typeof prevIndex === 'undefined') slideToIndex = nextIndex; + else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex; + else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex; + else slideToIndex = prevIndex; + } + swiper.slideTo(slideToIndex); + }, + update(initial) { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' + ? thumbsSwiper.slidesPerViewDynamic() + : thumbsSwiper.params.slidesPerView; + + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + let currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) { + thumbsSwiper.loopFix(); + // eslint-disable-next-line + thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft; + currentThumbsIndex = thumbsSwiper.activeIndex; + } + // Find actual thumbs index to slide to + const prevThumbsIndex = thumbsSwiper.slides + .eq(currentThumbsIndex) + .prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0) + .index(); + const nextThumbsIndex = thumbsSwiper.slides + .eq(currentThumbsIndex) + .nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0) + .index(); + if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex; + else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex; + else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex; + else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex; + else newThumbsIndex = prevThumbsIndex; + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - slidesPerView + 1; + } + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + + thumbsToActivate = Math.floor(thumbsToActivate); + + thumbsSwiper.slides.removeClass(thumbActiveClass); + if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) { + for (let i = 0; i < thumbsToActivate; i += 1) { + thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass); + } + } + }, +}; +var thumbs = { + name: 'thumbs', + params: { + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-container-thumbs', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + thumbs: { + swiper: null, + init: Thumbs.init.bind(swiper), + update: Thumbs.update.bind(swiper), + onThumbClick: Thumbs.onThumbClick.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + const { thumbs } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + swiper.thumbs.init(); + swiper.thumbs.update(true); + }, + slideChange() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + update() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + resize() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + observerUpdate() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + setTransition(duration) { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + thumbsSwiper.setTransition(duration); + }, + beforeDestroy() { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + if (swiper.thumbs.swiperCreated && thumbsSwiper) { + thumbsSwiper.destroy(); + } + }, + }, +}; + +// Swiper Class + +const components = [ + Device$1, + Support$1, + Browser$1, + Resize, + Observer$1, + +]; + +if (typeof Swiper.use === 'undefined') { + Swiper.use = Swiper.Class.use; + Swiper.installModule = Swiper.Class.installModule; +} + +Swiper.use(components); + +export { a11y$1 as A11y, autoplay as Autoplay, controller as Controller, effectCoverflow as EffectCoverflow, effectCube as EffectCube, effectFade as EffectFade, effectFlip as EffectFlip, hashNavigation as HashNavigation, history as History, keyboard as Keyboard, lazy as Lazy, mousewheel as Mousewheel, navigation as Navigation, pagination as Pagination, parallax as Parallax, scrollbar as Scrollbar, Swiper, thumbs as Thumbs, virtual as Virtual, zoom as Zoom }; +//# sourceMappingURL=swiper.esm.js.map diff --git a/static/libs/swiper-5.3.8/package/js/swiper.esm.js.map b/static/libs/swiper-5.3.8/package/js/swiper.esm.js.map new file mode 100644 index 0000000..ed0da98 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/js/swiper.esm.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper.esm.js.map","sources":["../src/utils/dom.js","../src/utils/utils.js","../src/utils/support.js","../src/utils/class.js","../src/components/core/update/updateSize.js","../src/components/core/update/updateSlides.js","../src/components/core/update/updateAutoHeight.js","../src/components/core/update/updateSlidesOffset.js","../src/components/core/update/updateSlidesProgress.js","../src/components/core/update/updateProgress.js","../src/components/core/update/updateSlidesClasses.js","../src/components/core/update/updateActiveIndex.js","../src/components/core/update/updateClickedSlide.js","../src/components/core/update/index.js","../src/components/core/translate/getTranslate.js","../src/components/core/translate/setTranslate.js","../src/components/core/translate/minTranslate.js","../src/components/core/translate/maxTranslate.js","../src/components/core/translate/translateTo.js","../src/components/core/translate/index.js","../src/components/core/transition/setTransition.js","../src/components/core/transition/transitionStart.js","../src/components/core/transition/transitionEnd.js","../src/components/core/transition/index.js","../src/components/core/slide/slideTo.js","../src/components/core/slide/slideToLoop.js","../src/components/core/slide/slideNext.js","../src/components/core/slide/slidePrev.js","../src/components/core/slide/slideReset.js","../src/components/core/slide/slideToClosest.js","../src/components/core/slide/slideToClickedSlide.js","../src/components/core/slide/index.js","../src/components/core/loop/loopCreate.js","../src/components/core/loop/loopFix.js","../src/components/core/loop/loopDestroy.js","../src/components/core/loop/index.js","../src/components/core/grab-cursor/setGrabCursor.js","../src/components/core/grab-cursor/unsetGrabCursor.js","../src/components/core/grab-cursor/index.js","../src/components/core/manipulation/appendSlide.js","../src/components/core/manipulation/prependSlide.js","../src/components/core/manipulation/addSlide.js","../src/components/core/manipulation/removeSlide.js","../src/components/core/manipulation/removeAllSlides.js","../src/components/core/manipulation/index.js","../src/utils/device.js","../src/components/core/events/onTouchStart.js","../src/components/core/events/onTouchMove.js","../src/components/core/events/onTouchEnd.js","../src/components/core/events/onResize.js","../src/components/core/events/onClick.js","../src/components/core/events/onScroll.js","../src/components/core/events/index.js","../src/components/core/breakpoints/setBreakpoint.js","../src/components/core/breakpoints/getBreakpoint.js","../src/components/core/breakpoints/index.js","../src/components/core/classes/addClasses.js","../src/components/core/classes/removeClasses.js","../src/components/core/classes/index.js","../src/components/core/images/loadImage.js","../src/components/core/images/preloadImages.js","../src/components/core/images/index.js","../src/components/core/check-overflow/index.js","../src/components/core/defaults.js","../src/components/core/core-class.js","../src/modules/device/device.js","../src/modules/support/support.js","../src/utils/browser.js","../src/modules/browser/browser.js","../src/modules/resize/resize.js","../src/modules/observer/observer.js","../src/components/virtual/virtual.js","../src/components/keyboard/keyboard.js","../src/components/mousewheel/mousewheel.js","../src/components/navigation/navigation.js","../src/components/pagination/pagination.js","../src/components/scrollbar/scrollbar.js","../src/components/parallax/parallax.js","../src/components/zoom/zoom.js","../src/components/lazy/lazy.js","../src/components/controller/controller.js","../src/components/a11y/a11y.js","../src/components/history/history.js","../src/components/hash-navigation/hash-navigation.js","../src/components/autoplay/autoplay.js","../src/components/effect-fade/effect-fade.js","../src/components/effect-cube/effect-cube.js","../src/components/effect-flip/effect-flip.js","../src/components/effect-coverflow/effect-coverflow.js","../src/components/thumbs/thumbs.js","../src/swiper.js"],"sourcesContent":["import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n add,\n styles,\n} from 'dom7/dist/dom7.modular';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n add,\n styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n});\n\nexport default $;\n","import { window } from 'ssr-window';\n\nconst Utils = {\n deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n },\n nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n },\n now() {\n return Date.now();\n },\n getTranslate(el, axis = 'x') {\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n },\n parseUrlQuery(url) {\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n return query;\n },\n isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend(...args) {\n const to = Object(args[0]);\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n};\nexport default Utils;\n","import { window, document } from 'ssr-window';\n\nconst Support = (function Support() {\n return {\n touch: (window.Modernizr && window.Modernizr.touch === true) || (function checkTouch() {\n return !!((window.navigator.maxTouchPoints > 0) || ('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch));\n }()),\n\n pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints > 0,\n\n observer: (function checkObserver() {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n }()),\n };\n}());\n\nexport default Support;\n","import Utils from './utils';\n\nclass SwiperClass {\n constructor(params = {}) {\n const self = this;\n self.params = params;\n\n // Events\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n }\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n const moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach((m) => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nexport default SwiperClass;\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { window } from 'ssr-window';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const params = swiper.params;\n\n const {\n $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n function slidesForMargin(slideIndex) {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.snapGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '' });\n\n let slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n\n // Calc slides\n let slideSize;\n const slidesPerColumn = params.slidesPerColumn;\n const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0\n ? params.slidesPerGroup\n : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;\n\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - (column * slidesPerColumn);\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide.css(\n `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n );\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n const slideStyles = window.getComputedStyle(slide[0], null);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal()\n ? slide.outerWidth(true)\n : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n const width = parseFloat(slideStyles.getPropertyValue('width'));\n const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n }\n } else {\n const height = parseFloat(slideStyles.getPropertyValue('height'));\n const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = height + marginTop + marginBottom;\n } else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n if (swiper.isHorizontal()) {\n slides[i].style.width = `${slideSize}px`;\n } else {\n slides[i].style.height = `${slideSize}px`;\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n let newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Utils.extend(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\n","export default function (speed) {\n const swiper = this;\n const activeSlides = [];\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((index, slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length) break;\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function () {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n const slideProgress = (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n || (slideAfter > 1 && slideAfter <= swiper.size)\n || (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / (translatesDiff);\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Utils.extend(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function () {\n const swiper = this;\n\n const {\n slides, params, $wrapperEl, activeIndex, realIndex,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) slideFound = true;\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = $(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function (axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const {\n params, rtlTranslate: rtl, translate, $wrapperEl,\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function (translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function () {\n return (-this.snapGrid[0]);\n}\n","export default function () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n","export default function (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n\n const {\n params,\n wrapperEl,\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","export default function (duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","export default function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}\n","export default function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex, params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}\n","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n let t = -translate;\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating } = swiper;\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params, animating, snapGrid, slidesGrid, rtlTranslate,\n } = swiper;\n\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));\n\n const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach((snap) => {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n let prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((index, el) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function () {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function () {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","import Support from '../../../utils/support';\n\nexport default function (moving) {\n const swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n const el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","import Support from '../../../utils/support';\n\nexport default function () {\n const swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n swiper.el.style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","import Support from '../../../utils/support';\n\nexport default function (index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function () {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\n\nexport default {\n appendSlide,\n prependSlide,\n addSlide,\n removeSlide,\n removeAllSlides,\n};\n","import { window } from 'ssr-window';\nimport Support from './support';\n\nconst Device = (function Device() {\n const platform = window.navigator.platform;\n const ua = window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!(window.cordova || window.phonegap),\n phonegap: !!(window.cordova || window.phonegap),\n electron: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n if (!ipad\n && macos\n && Support.touch\n && (\n (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9\n || (screenWidth === 834 && screenHeight === 1194) // Pro 11\n || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5\n || (screenWidth === 768 && screenHeight === 1024) // other\n )\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone))\n || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron;\n if (device.desktop) {\n device.electron = electron;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Export object\n return device;\n}());\n\nexport default Device;\n","import { window, document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= window.screen.width - edgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.formElements)) preventDefault = false;\n if (\n document.activeElement\n && $(document.activeElement).is(data.formElements)\n && document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type === 'mousemove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if ((diffX * diffX) + (diffY * diffY) >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const {\n params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = Utils.now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = Utils.now();\n Utils.nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeModeMomentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {\n const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function () {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function (e) {\n const swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function () {\n const swiper = this;\n const { wrapperEl, rtlTranslate } = swiper;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { document } from 'ssr-window';\nimport Device from '../../../utils/device';\nimport Support from '../../../utils/support';\n\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n const swiper = this;\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n const swiper = this;\n\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const {\n activeIndex, initialized, loopedSlides = 0, params, $el,\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {\n const paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = params.slidesPerColumn > 1;\n const isMultiRow = breakpointParams.slidesPerColumn > 1;\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}multirow`);\n if (breakpointParams.slidesPerColumnFill === 'column') {\n $el.addClass(`${params.containerModifierClass}multirow-column`);\n }\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n Utils.extend(swiper.params, breakpointParams);\n\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n }\n}\n","import { window } from 'ssr-window';\n\nexport default function (breakpoints) {\n // Get breakpoint for window width\n if (!breakpoints) return undefined;\n let breakpoint = false;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = window.innerHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (value <= window.innerWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\n\nexport default { setBreakpoint, getBreakpoint };\n","import Device from '../../../utils/device';\n\nexport default function () {\n const swiper = this;\n const {\n classNames, params, rtl, $el,\n } = swiper;\n const suffixes = [];\n\n suffixes.push('initialized');\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n if (params.slidesPerColumnFill === 'column') {\n suffixes.push('multirow-column');\n }\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n\n if (params.cssMode) {\n suffixes.push('css-mode');\n }\n\n suffixes.forEach((suffix) => {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n}\n","export default function () {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n}\n","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\n\nexport default { addClasses, removeClasses };\n","import { window } from 'ssr-window';\n\nexport default function (imageEl, src, srcset, sizes, checkForComplete, callback) {\n let image;\n function onReady() {\n if (callback) callback();\n }\n if (!imageEl.complete || !checkForComplete) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function () {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n}\n","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","\nfunction checkOverflow() {\n const swiper = this;\n const params = swiper.params;\n const wasLocked = swiper.isLocked;\n const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n\n // events\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n swiper.navigation.update();\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n //\n preventInteractionOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n};\n","/* eslint no-param-reassign: \"off\" */\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nimport SwiperClass from '../../utils/class';\n\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\n\nimport defaults from './defaults';\n\nconst prototypes = {\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n manipulation,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = Utils.extend({}, params);\n if (el && !params.el) params.el = el;\n\n super(params);\n\n Object.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n const swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach((moduleName) => {\n const module = swiper.modules[moduleName];\n if (module.params) {\n const moduleParamName = Object.keys(module.params)[0];\n const moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object'\n && !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n }\n });\n\n // Extend defaults with modules params\n const swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $;\n\n // Find el\n const $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n const swipers = [];\n $el.each((index, containerEl) => {\n const newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n let $wrapperEl;\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n // Children needs to return slot items\n $wrapperEl.children = (options) => $el.children(options);\n } else {\n $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n }\n // Extend Swiper\n Utils.extend(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // RTL\n rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }()),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n formElements: 'input, select, option, textarea, button, video, label',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n slidesPerViewDynamic() {\n const swiper = this;\n const {\n params, slides, slidesGrid, size: swiperSize, activeIndex,\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideIndex, slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n init() {\n const swiper = this;\n if (swiper.initialized) return;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params, $el, $wrapperEl, slides,\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static get Class() {\n return SwiperClass;\n }\n\n static get $() {\n return $;\n }\n}\n\nexport default Swiper;\n","import Device from '../../utils/device';\n\nexport default {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n};\n","import Support from '../../utils/support';\n\nexport default {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n};\n","import { window } from 'ssr-window';\n\nconst Browser = (function Browser() {\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}());\n\nexport default Browser;\n","import Browser from '../../utils/browser';\n\nexport default {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nexport default {\n name: 'resize',\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n // Emit resize\n window.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy() {\n const swiper = this;\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Observer = {\n func: window.MutationObserver || window.WebkitMutationObserver,\n attach(target, options = {}) {\n const swiper = this;\n\n const ObserverFunc = Observer.func;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n swiper.observer.observers.push(observer);\n },\n init() {\n const swiper = this;\n if (!Support.observer || !swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy() {\n const swiper = this;\n swiper.observer.observers.forEach((observer) => {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\n\nexport default {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.observer.init();\n },\n destroy() {\n const swiper = this;\n swiper.observer.destroy();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Virtual = {\n update(force) {\n const swiper = this;\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n renderSlide,\n offset: previousOffset,\n } = swiper.virtual;\n swiper.updateActiveIndex();\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n slidesBefore = slidesPerGroup + addSlidesAfter;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Utils.extend(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n },\n renderSlide(slide, index) {\n const swiper = this;\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(`
      ${slide}
      `);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n },\n appendSlide(slides) {\n const swiper = this;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n swiper.virtual.update(true);\n },\n prependSlide(slides) {\n const swiper = this;\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide(slidesIndexes) {\n const swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides() {\n const swiper = this;\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n },\n};\n\nexport default {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n virtual: {\n update: Virtual.update.bind(swiper),\n appendSlide: Virtual.appendSlide.bind(swiper),\n prependSlide: Virtual.prependSlide.bind(swiper),\n removeSlide: Virtual.removeSlide.bind(swiper),\n removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n const overwriteParams = {\n watchSlidesProgress: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Keyboard = {\n handle(event) {\n const swiper = this;\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 && point[0] <= windowWidth\n && point[1] >= 0 && point[1] <= windowHeight\n ) {\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext();\n if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev();\n } else {\n if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 34 || kc === 40) swiper.slideNext();\n if (kc === 33 || kc === 38) swiper.slidePrev();\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable() {\n const swiper = this;\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable() {\n const swiper = this;\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n};\n\nexport default {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n keyboard: {\n enabled: false,\n enable: Keyboard.enable.bind(swiper),\n disable: Keyboard.disable.bind(swiper),\n handle: Keyboard.handle.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nfunction isEventSupported() {\n const eventName = 'onwheel';\n let isSupported = eventName in document;\n\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && document.implementation\n && document.implementation.hasFeature\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && document.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\nconst Mousewheel = {\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event() {\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n },\n handleMouseEnter() {\n const swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave() {\n const swiper = this;\n swiper.mouseEntered = false;\n },\n handle(event) {\n let e = event;\n const swiper = this;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;\n else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n if (!swiper.params.freeMode) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: Utils.now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta) {\n swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n const { lastEventBeforeSnap } = swiper.mousewheel;\n const ignoreWheelEvents = lastEventBeforeSnap\n && newEvent.time < lastEventBeforeSnap.time + 500\n && newEvent.delta <= lastEventBeforeSnap.delta\n && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + (delta * params.sensitivity);\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeModeSticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momuntum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = undefined;\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15\n && newEvent.time - firstEvent.time < 500\n && firstEvent.delta - newEvent.delta >= 1\n && newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!swiper.mousewheel.timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n const snapToThreshold = 0.5;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n },\n animateSlider(newEvent) {\n const swiper = this;\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n // Return false as a default\n return false;\n },\n releaseScroll(newEvent) {\n const swiper = this;\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n },\n enable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (!swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n};\n\nexport default {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarged: 'container',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n mousewheel: {\n enabled: false,\n enable: Mousewheel.enable.bind(swiper),\n disable: Mousewheel.disable.bind(swiper),\n handle: Mousewheel.handle.bind(swiper),\n handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n animateSlider: Mousewheel.animateSlider.bind(swiper),\n releaseScroll: Mousewheel.releaseScroll.bind(swiper),\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n swiper.mousewheel.disable();\n }\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy() {\n const swiper = this;\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Navigation = {\n update() {\n // Update Navigation Buttons\n const swiper = this;\n const params = swiper.params.navigation;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n onPrevClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init() {\n const swiper = this;\n const params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n\n let $nextEl;\n let $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.nextEl === 'string'\n && $nextEl.length > 1\n && swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.prevEl === 'string'\n && $prevEl.length > 1\n && swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy() {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n};\n\nexport default {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n onNextClick: Navigation.onNextClick.bind(swiper),\n onPrevClick: Navigation.onPrevClick.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n fromEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n destroy() {\n const swiper = this;\n swiper.navigation.destroy();\n },\n click(e) {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if (\n swiper.params.navigation.hideOnClick\n && !$(e.target).is($prevEl)\n && !$(e.target).is($nextEl)\n ) {\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n swiper.emit('navigationShow', swiper);\n } else {\n swiper.emit('navigationHide', swiper);\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Pagination = {\n update() {\n // Render || Update Pagination bullets/items\n const swiper = this;\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n if ($el.length > 1) {\n bullets.each((index, bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render() {\n // Render Container\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = ``\n + ' / '\n + ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (\n swiper.params.uniqueNavElements\n && typeof params.el === 'string'\n && $el.length > 1\n && swiper.$el.find(params.el).length === 1\n ) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el,\n el: $el[0],\n });\n },\n destroy() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', `.${params.bulletClass}`);\n }\n },\n};\n\nexport default {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy() {\n const swiper = this;\n swiper.pagination.destroy();\n },\n click(e) {\n const swiper = this;\n if (\n swiper.params.pagination.el\n && swiper.params.pagination.hideOnClick\n && swiper.pagination.$el.length > 0\n && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow', swiper);\n } else {\n swiper.emit('paginationHide', swiper);\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\n","import { document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Scrollbar = {\n setTranslate() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const {\n dragSize, trackSize, $dragEl, $el,\n } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n const divider = swiper.size / swiper.virtualSize;\n const moveDivider = divider * (trackSize / swiper.size);\n let dragSize;\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize,\n divider,\n moveDivider,\n dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n getPointerPosition(e) {\n const swiper = this;\n if (swiper.isHorizontal()) {\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);\n }\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);\n },\n setDragPosition(e) {\n const swiper = this;\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const {\n $el,\n dragSize,\n trackSize,\n dragStartPos,\n } = scrollbar;\n\n let positionRatio;\n positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart(e) {\n const swiper = this;\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove(e) {\n const swiper = this;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd(e) {\n const swiper = this;\n\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const { scrollbar, $el: $swiperEl } = swiper;\n const params = swiper.params.scrollbar;\n\n let $el = $(params.el);\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
      `);\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n};\n\nexport default {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate() {\n const swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Parallax = {\n setTransform(el, progress) {\n const swiper = this;\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if ((x).indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if ((y).indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n },\n setTranslate() {\n const swiper = this;\n const {\n $el, slides, progress, snapGrid,\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each((slideIndex, slideEl) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition(duration = this.params.speed) {\n const swiper = this;\n const { $el } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n },\n};\n\nexport default {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n parallax: {\n setTransform: Parallax.setTransform.bind(swiper),\n setTranslate: Parallax.setTranslate.bind(swiper),\n setTransition: Parallax.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\nimport Support from '../../utils/support';\n\nconst Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n return distance;\n },\n // Events\n onGestureStart(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n swiper.zoom.isScaling = true;\n },\n onGestureChange(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (Support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n onGestureEnd(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (Device.android) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (\n swiper.isHorizontal()\n && (\n (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n )\n ) {\n image.isTouched = false;\n return;\n } if (\n !swiper.isHorizontal()\n && (\n (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n )\n ) {\n image.isTouched = false;\n return;\n }\n }\n e.preventDefault();\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n }\n\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTouchEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTransitionEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in(e) {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture, image } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n out() {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n },\n // Attach/Detach Events\n enable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n disable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n\n swiper.zoom.enabled = false;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n};\n\nexport default {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n },\n create() {\n const swiper = this;\n const zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n };\n\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom,\n });\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.zoom.disable();\n },\n touchStart(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap(e) {\n const swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Lazy = {\n loadInSlide(index, loadInDuplicate = true) {\n const swiper = this;\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n : swiper.slides.eq(index);\n\n let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageIndex, imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n\n swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load() {\n const swiper = this;\n const {\n $wrapperEl, params: swiperParams, slides, activeIndex,\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n};\n\nexport default {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n lazy: {\n initialImageLoaded: false,\n load: Lazy.load.bind(swiper),\n loadInSlide: Lazy.loadInSlide.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll() {\n const swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n swiper.lazy.load();\n }\n },\n },\n};\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport Swiper from '../core/core-class';\nimport Utils from '../../utils/utils';\n\nconst Controller = {\n LinearSpline: function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }());\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction(c) {\n const swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate(setTranslate, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition(duration, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n Utils.nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n },\n};\nexport default {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n controller: {\n control: swiper.params.controller.control,\n getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n setTranslate: Controller.setTranslate.bind(swiper),\n setTransition: Controller.setTransition.bind(swiper),\n },\n });\n },\n on: {\n update() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate(translate, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst a11y = {\n makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey(e) {\n const swiper = this;\n const params = swiper.params.a11y;\n if (e.keyCode !== 13) return;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n $targetEl[0].click();\n }\n },\n notify(message) {\n const swiper = this;\n const notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation() {\n const swiper = this;\n\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n }\n }\n },\n updatePagination() {\n const swiper = this;\n const params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n const $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n });\n }\n },\n init() {\n const swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n const params = swiper.params.a11y;\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n};\nexport default {\n name: 'a11y',\n params: {\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $(``),\n },\n });\n Object.keys(a11y).forEach((methodName) => {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n },\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nconst History = {\n init() {\n const swiper = this;\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n const history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues();\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState() {\n const swiper = this;\n swiper.history.paths = History.getPathValues();\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues() {\n const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n },\n setHistory(key, index) {\n const swiper = this;\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n const slide = swiper.slides.eq(index);\n let value = History.slugify(slide.attr('data-history'));\n if (!window.location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n },\n slugify(text) {\n return text.toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide(speed, value, runCallbacks) {\n const swiper = this;\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = History.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n },\n};\n\nexport default {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n history: {\n init: History.init.bind(swiper),\n setHistory: History.setHistory.bind(swiper),\n setHistoryPopState: History.setHistoryPopState.bind(swiper),\n scrollToSlide: History.scrollToSlide.bind(swiper),\n destroy: History.destroy.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.history.initialized && swiper.params.cssMode) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst HashNavigation = {\n onHashCange() {\n const swiper = this;\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n },\n setHash() {\n const swiper = this;\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n swiper.hashNavigation.initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n};\nexport default {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n hashNavigation: {\n initialized: false,\n init: HashNavigation.init.bind(swiper),\n destroy: HashNavigation.destroy.bind(swiper),\n setHash: HashNavigation.setHash.bind(swiper),\n onHashCange: HashNavigation.onHashCange.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n swiper.hashNavigation.setHash();\n }\n },\n },\n};\n","/* eslint no-underscore-dangle: \"off\" */\nimport Utils from '../../utils/utils';\n\nconst Autoplay = {\n run() {\n const swiper = this;\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = Utils.nextTick(() => {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\n }, delay);\n },\n start() {\n const swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop() {\n const swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause(speed) {\n const swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n};\n\nexport default {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onVisibilityChange() {\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n },\n beforeTransitionStart(speed, internal) {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove() {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd() {\n const swiper = this;\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n },\n },\n};\n","import Utils from '../../utils/utils';\n\nconst Fade = {\n setTranslate() {\n const swiper = this;\n const { slides } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, $wrapperEl } = swiper;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n slides.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nexport default {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n fadeEffect: {\n setTranslate: Fade.setTranslate.bind(swiper),\n setTransition: Fade.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Browser from '../../utils/browser';\n\nconst Cube = {\n setTranslate() {\n const swiper = this;\n const {\n $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
      ');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
      ');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + (round * 4 * swiperSize);\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = (3 * swiperSize) + (swiperSize * 4 * round);\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = (slideIndex * 90) + (progress * 90);\n if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
      `);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
      `);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n const multiplier = 1.5 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n $wrapperEl\n .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n },\n setTransition(duration) {\n const swiper = this;\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n};\n\nexport default {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n cubeEffect: {\n setTranslate: Cube.setTranslate.bind(swiper),\n setTransition: Cube.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Flip = {\n setTranslate() {\n const swiper = this;\n const { slides, rtlTranslate: rtl } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
      `);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
      `);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n $slideEl\n .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, activeIndex, $wrapperEl } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nexport default {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n flipEffect: {\n setTranslate: Flip.setTranslate.bind(swiper),\n setTransition: Flip.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Support from '../../utils/support';\nimport Utils from '../../utils/utils';\n\nconst Coverflow = {\n setTranslate() {\n const swiper = this;\n const {\n width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = ((parseFloat(params.stretch) / 100) * slideSize);\n }\n let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);\n let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $(`
      `);\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $(`
      `);\n $slideEl.append($shadowAfterEl);\n }\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n\n // Set correct perspective for IE10\n if (Support.pointerEvents || Support.prefixedPointerEvents) {\n const ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = `${center}px 50%`;\n }\n },\n setTransition(duration) {\n const swiper = this;\n swiper.slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n },\n};\n\nexport default {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n coverflowEffect: {\n setTranslate: Coverflow.setTranslate.bind(swiper),\n setTransition: Coverflow.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n\n swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n};\n","import Utils from '../../utils/utils';\nimport $ from '../../utils/dom';\n\nconst Thumbs = {\n init() {\n const swiper = this;\n const { thumbs: thumbsParams } = swiper.params;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Utils.extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Utils.extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (Utils.isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n }));\n swiper.thumbs.swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n },\n onThumbClick() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n },\n update(initial) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;\n else newThumbsIndex = prevThumbsIndex;\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n },\n};\nexport default {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n thumbs: {\n swiper: null,\n init: Thumbs.init.bind(swiper),\n update: Thumbs.update.bind(swiper),\n onThumbClick: Thumbs.onThumbClick.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition(duration) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n },\n },\n};\n","// Swiper Class\nimport Swiper from './components/core/core-class';\n\n// Core Modules\nimport Device from './modules/device/device';\nimport Support from './modules/support/support';\nimport Browser from './modules/browser/browser';\nimport Resize from './modules/resize/resize';\nimport Observer from './modules/observer/observer';\n\n//IMPORT_COMPONENTS\n\nconst components = [\n Device,\n Support,\n Browser,\n Resize,\n Observer,\n //INSTALL_COMPONENTS\n];\n\nif (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\n//EXPORT\n"],"names":["transition","transitionEnd","document","checkOverflow","Device","Support","Browser","Observer"],"mappings":"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"} \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/package/js/swiper.js b/static/libs/swiper-5.3.8/package/js/swiper.js new file mode 100644 index 0000000..5895f64 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/js/swiper.js @@ -0,0 +1,8709 @@ +/** + * Swiper 5.3.8 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * http://swiperjs.com + * + * Copyright 2014-2020 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: April 24, 2020 + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.Swiper = factory()); +}(this, (function () { 'use strict'; + + /** + * SSR Window 1.0.1 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2018, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: July 18, 2018 + */ + var doc = (typeof document === 'undefined') ? { + body: {}, + addEventListener: function addEventListener() {}, + removeEventListener: function removeEventListener() {}, + activeElement: { + blur: function blur() {}, + nodeName: '', + }, + querySelector: function querySelector() { + return null; + }, + querySelectorAll: function querySelectorAll() { + return []; + }, + getElementById: function getElementById() { + return null; + }, + createEvent: function createEvent() { + return { + initEvent: function initEvent() {}, + }; + }, + createElement: function createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute: function setAttribute() {}, + getElementsByTagName: function getElementsByTagName() { + return []; + }, + }; + }, + location: { hash: '' }, + } : document; // eslint-disable-line + + var win = (typeof window === 'undefined') ? { + document: doc, + navigator: { + userAgent: '', + }, + location: {}, + history: {}, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener: function addEventListener() {}, + removeEventListener: function removeEventListener() {}, + getComputedStyle: function getComputedStyle() { + return { + getPropertyValue: function getPropertyValue() { + return ''; + }, + }; + }, + Image: function Image() {}, + Date: function Date() {}, + screen: {}, + setTimeout: function setTimeout() {}, + clearTimeout: function clearTimeout() {}, + } : window; // eslint-disable-line + + /** + * Dom7 2.1.3 + * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API + * http://framework7.io/docs/dom.html + * + * Copyright 2019, Vladimir Kharlampidi + * The iDangero.us + * http://www.idangero.us/ + * + * Licensed under MIT + * + * Released on: February 11, 2019 + */ + + var Dom7 = function Dom7(arr) { + var self = this; + // Create array-like object + for (var i = 0; i < arr.length; i += 1) { + self[i] = arr[i]; + } + self.length = arr.length; + // Return collection with methods + return this; + }; + + function $(selector, context) { + var arr = []; + var i = 0; + if (selector && !context) { + if (selector instanceof Dom7) { + return selector; + } + } + if (selector) { + // String + if (typeof selector === 'string') { + var els; + var tempParent; + var html = selector.trim(); + if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { + var toCreate = 'div'; + if (html.indexOf(':~]/)) { + // Pure ID selector + els = [doc.getElementById(selector.trim().split('#')[1])]; + } else { + // Other selectors + els = (context || doc).querySelectorAll(selector.trim()); + } + for (i = 0; i < els.length; i += 1) { + if (els[i]) { arr.push(els[i]); } + } + } + } else if (selector.nodeType || selector === win || selector === doc) { + // Node/element + arr.push(selector); + } else if (selector.length > 0 && selector[0].nodeType) { + // Array of elements or instance of Dom + for (i = 0; i < selector.length; i += 1) { + arr.push(selector[i]); + } + } + } + return new Dom7(arr); + } + + $.fn = Dom7.prototype; + $.Class = Dom7; + $.Dom7 = Dom7; + + function unique(arr) { + var uniqueArray = []; + for (var i = 0; i < arr.length; i += 1) { + if (uniqueArray.indexOf(arr[i]) === -1) { uniqueArray.push(arr[i]); } + } + return uniqueArray; + } + + // Classes and attributes + function addClass(className) { + if (typeof className === 'undefined') { + return this; + } + var classes = className.split(' '); + for (var i = 0; i < classes.length; i += 1) { + for (var j = 0; j < this.length; j += 1) { + if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.add(classes[i]); } + } + } + return this; + } + function removeClass(className) { + var classes = className.split(' '); + for (var i = 0; i < classes.length; i += 1) { + for (var j = 0; j < this.length; j += 1) { + if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.remove(classes[i]); } + } + } + return this; + } + function hasClass(className) { + if (!this[0]) { return false; } + return this[0].classList.contains(className); + } + function toggleClass(className) { + var classes = className.split(' '); + for (var i = 0; i < classes.length; i += 1) { + for (var j = 0; j < this.length; j += 1) { + if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.toggle(classes[i]); } + } + } + return this; + } + function attr(attrs, value) { + var arguments$1 = arguments; + + if (arguments.length === 1 && typeof attrs === 'string') { + // Get attr + if (this[0]) { return this[0].getAttribute(attrs); } + return undefined; + } + + // Set attrs + for (var i = 0; i < this.length; i += 1) { + if (arguments$1.length === 2) { + // String + this[i].setAttribute(attrs, value); + } else { + // Object + // eslint-disable-next-line + for (var attrName in attrs) { + this[i][attrName] = attrs[attrName]; + this[i].setAttribute(attrName, attrs[attrName]); + } + } + } + return this; + } + // eslint-disable-next-line + function removeAttr(attr) { + for (var i = 0; i < this.length; i += 1) { + this[i].removeAttribute(attr); + } + return this; + } + function data(key, value) { + var el; + if (typeof value === 'undefined') { + el = this[0]; + // Get value + if (el) { + if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) { + return el.dom7ElementDataStorage[key]; + } + + var dataKey = el.getAttribute(("data-" + key)); + if (dataKey) { + return dataKey; + } + return undefined; + } + return undefined; + } + + // Set value + for (var i = 0; i < this.length; i += 1) { + el = this[i]; + if (!el.dom7ElementDataStorage) { el.dom7ElementDataStorage = {}; } + el.dom7ElementDataStorage[key] = value; + } + return this; + } + // Transforms + // eslint-disable-next-line + function transform(transform) { + for (var i = 0; i < this.length; i += 1) { + var elStyle = this[i].style; + elStyle.webkitTransform = transform; + elStyle.transform = transform; + } + return this; + } + function transition(duration) { + if (typeof duration !== 'string') { + duration = duration + "ms"; // eslint-disable-line + } + for (var i = 0; i < this.length; i += 1) { + var elStyle = this[i].style; + elStyle.webkitTransitionDuration = duration; + elStyle.transitionDuration = duration; + } + return this; + } + // Events + function on() { + var assign; + + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + var eventType = args[0]; + var targetSelector = args[1]; + var listener = args[2]; + var capture = args[3]; + if (typeof args[1] === 'function') { + (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]); + targetSelector = undefined; + } + if (!capture) { capture = false; } + + function handleLiveEvent(e) { + var target = e.target; + if (!target) { return; } + var eventData = e.target.dom7EventData || []; + if (eventData.indexOf(e) < 0) { + eventData.unshift(e); + } + if ($(target).is(targetSelector)) { listener.apply(target, eventData); } + else { + var parents = $(target).parents(); // eslint-disable-line + for (var k = 0; k < parents.length; k += 1) { + if ($(parents[k]).is(targetSelector)) { listener.apply(parents[k], eventData); } + } + } + } + function handleEvent(e) { + var eventData = e && e.target ? e.target.dom7EventData || [] : []; + if (eventData.indexOf(e) < 0) { + eventData.unshift(e); + } + listener.apply(this, eventData); + } + var events = eventType.split(' '); + var j; + for (var i = 0; i < this.length; i += 1) { + var el = this[i]; + if (!targetSelector) { + for (j = 0; j < events.length; j += 1) { + var event = events[j]; + if (!el.dom7Listeners) { el.dom7Listeners = {}; } + if (!el.dom7Listeners[event]) { el.dom7Listeners[event] = []; } + el.dom7Listeners[event].push({ + listener: listener, + proxyListener: handleEvent, + }); + el.addEventListener(event, handleEvent, capture); + } + } else { + // Live events + for (j = 0; j < events.length; j += 1) { + var event$1 = events[j]; + if (!el.dom7LiveListeners) { el.dom7LiveListeners = {}; } + if (!el.dom7LiveListeners[event$1]) { el.dom7LiveListeners[event$1] = []; } + el.dom7LiveListeners[event$1].push({ + listener: listener, + proxyListener: handleLiveEvent, + }); + el.addEventListener(event$1, handleLiveEvent, capture); + } + } + } + return this; + } + function off() { + var assign; + + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + var eventType = args[0]; + var targetSelector = args[1]; + var listener = args[2]; + var capture = args[3]; + if (typeof args[1] === 'function') { + (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]); + targetSelector = undefined; + } + if (!capture) { capture = false; } + + var events = eventType.split(' '); + for (var i = 0; i < events.length; i += 1) { + var event = events[i]; + for (var j = 0; j < this.length; j += 1) { + var el = this[j]; + var handlers = (void 0); + if (!targetSelector && el.dom7Listeners) { + handlers = el.dom7Listeners[event]; + } else if (targetSelector && el.dom7LiveListeners) { + handlers = el.dom7LiveListeners[event]; + } + if (handlers && handlers.length) { + for (var k = handlers.length - 1; k >= 0; k -= 1) { + var handler = handlers[k]; + if (listener && handler.listener === listener) { + el.removeEventListener(event, handler.proxyListener, capture); + handlers.splice(k, 1); + } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) { + el.removeEventListener(event, handler.proxyListener, capture); + handlers.splice(k, 1); + } else if (!listener) { + el.removeEventListener(event, handler.proxyListener, capture); + handlers.splice(k, 1); + } + } + } + } + } + return this; + } + function trigger() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var events = args[0].split(' '); + var eventData = args[1]; + for (var i = 0; i < events.length; i += 1) { + var event = events[i]; + for (var j = 0; j < this.length; j += 1) { + var el = this[j]; + var evt = (void 0); + try { + evt = new win.CustomEvent(event, { + detail: eventData, + bubbles: true, + cancelable: true, + }); + } catch (e) { + evt = doc.createEvent('Event'); + evt.initEvent(event, true, true); + evt.detail = eventData; + } + // eslint-disable-next-line + el.dom7EventData = args.filter(function (data, dataIndex) { return dataIndex > 0; }); + el.dispatchEvent(evt); + el.dom7EventData = []; + delete el.dom7EventData; + } + } + return this; + } + function transitionEnd(callback) { + var events = ['webkitTransitionEnd', 'transitionend']; + var dom = this; + var i; + function fireCallBack(e) { + /* jshint validthis:true */ + if (e.target !== this) { return; } + callback.call(this, e); + for (i = 0; i < events.length; i += 1) { + dom.off(events[i], fireCallBack); + } + } + if (callback) { + for (i = 0; i < events.length; i += 1) { + dom.on(events[i], fireCallBack); + } + } + return this; + } + function outerWidth(includeMargins) { + if (this.length > 0) { + if (includeMargins) { + // eslint-disable-next-line + var styles = this.styles(); + return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); + } + return this[0].offsetWidth; + } + return null; + } + function outerHeight(includeMargins) { + if (this.length > 0) { + if (includeMargins) { + // eslint-disable-next-line + var styles = this.styles(); + return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); + } + return this[0].offsetHeight; + } + return null; + } + function offset() { + if (this.length > 0) { + var el = this[0]; + var box = el.getBoundingClientRect(); + var body = doc.body; + var clientTop = el.clientTop || body.clientTop || 0; + var clientLeft = el.clientLeft || body.clientLeft || 0; + var scrollTop = el === win ? win.scrollY : el.scrollTop; + var scrollLeft = el === win ? win.scrollX : el.scrollLeft; + return { + top: (box.top + scrollTop) - clientTop, + left: (box.left + scrollLeft) - clientLeft, + }; + } + + return null; + } + function styles() { + if (this[0]) { return win.getComputedStyle(this[0], null); } + return {}; + } + function css(props, value) { + var i; + if (arguments.length === 1) { + if (typeof props === 'string') { + if (this[0]) { return win.getComputedStyle(this[0], null).getPropertyValue(props); } + } else { + for (i = 0; i < this.length; i += 1) { + // eslint-disable-next-line + for (var prop in props) { + this[i].style[prop] = props[prop]; + } + } + return this; + } + } + if (arguments.length === 2 && typeof props === 'string') { + for (i = 0; i < this.length; i += 1) { + this[i].style[props] = value; + } + return this; + } + return this; + } + // Iterate over the collection passing elements to `callback` + function each(callback) { + // Don't bother continuing without a callback + if (!callback) { return this; } + // Iterate over the current collection + for (var i = 0; i < this.length; i += 1) { + // If the callback returns false + if (callback.call(this[i], i, this[i]) === false) { + // End the loop early + return this; + } + } + // Return `this` to allow chained DOM operations + return this; + } + function filter(callback) { + var matchedItems = []; + var dom = this; + for (var i = 0; i < dom.length; i += 1) { + if (callback.call(dom[i], i, dom[i])) { matchedItems.push(dom[i]); } + } + return new Dom7(matchedItems); + } + // eslint-disable-next-line + function html(html) { + if (typeof html === 'undefined') { + return this[0] ? this[0].innerHTML : undefined; + } + + for (var i = 0; i < this.length; i += 1) { + this[i].innerHTML = html; + } + return this; + } + // eslint-disable-next-line + function text(text) { + if (typeof text === 'undefined') { + if (this[0]) { + return this[0].textContent.trim(); + } + return null; + } + + for (var i = 0; i < this.length; i += 1) { + this[i].textContent = text; + } + return this; + } + function is(selector) { + var el = this[0]; + var compareWith; + var i; + if (!el || typeof selector === 'undefined') { return false; } + if (typeof selector === 'string') { + if (el.matches) { return el.matches(selector); } + else if (el.webkitMatchesSelector) { return el.webkitMatchesSelector(selector); } + else if (el.msMatchesSelector) { return el.msMatchesSelector(selector); } + + compareWith = $(selector); + for (i = 0; i < compareWith.length; i += 1) { + if (compareWith[i] === el) { return true; } + } + return false; + } else if (selector === doc) { return el === doc; } + else if (selector === win) { return el === win; } + + if (selector.nodeType || selector instanceof Dom7) { + compareWith = selector.nodeType ? [selector] : selector; + for (i = 0; i < compareWith.length; i += 1) { + if (compareWith[i] === el) { return true; } + } + return false; + } + return false; + } + function index() { + var child = this[0]; + var i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) { i += 1; } + } + return i; + } + return undefined; + } + // eslint-disable-next-line + function eq(index) { + if (typeof index === 'undefined') { return this; } + var length = this.length; + var returnIndex; + if (index > length - 1) { + return new Dom7([]); + } + if (index < 0) { + returnIndex = length + index; + if (returnIndex < 0) { return new Dom7([]); } + return new Dom7([this[returnIndex]]); + } + return new Dom7([this[index]]); + } + function append() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var newChild; + + for (var k = 0; k < args.length; k += 1) { + newChild = args[k]; + for (var i = 0; i < this.length; i += 1) { + if (typeof newChild === 'string') { + var tempDiv = doc.createElement('div'); + tempDiv.innerHTML = newChild; + while (tempDiv.firstChild) { + this[i].appendChild(tempDiv.firstChild); + } + } else if (newChild instanceof Dom7) { + for (var j = 0; j < newChild.length; j += 1) { + this[i].appendChild(newChild[j]); + } + } else { + this[i].appendChild(newChild); + } + } + } + + return this; + } + function prepend(newChild) { + var i; + var j; + for (i = 0; i < this.length; i += 1) { + if (typeof newChild === 'string') { + var tempDiv = doc.createElement('div'); + tempDiv.innerHTML = newChild; + for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { + this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); + } + } else if (newChild instanceof Dom7) { + for (j = 0; j < newChild.length; j += 1) { + this[i].insertBefore(newChild[j], this[i].childNodes[0]); + } + } else { + this[i].insertBefore(newChild, this[i].childNodes[0]); + } + } + return this; + } + function next(selector) { + if (this.length > 0) { + if (selector) { + if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { + return new Dom7([this[0].nextElementSibling]); + } + return new Dom7([]); + } + + if (this[0].nextElementSibling) { return new Dom7([this[0].nextElementSibling]); } + return new Dom7([]); + } + return new Dom7([]); + } + function nextAll(selector) { + var nextEls = []; + var el = this[0]; + if (!el) { return new Dom7([]); } + while (el.nextElementSibling) { + var next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if ($(next).is(selector)) { nextEls.push(next); } + } else { nextEls.push(next); } + el = next; + } + return new Dom7(nextEls); + } + function prev(selector) { + if (this.length > 0) { + var el = this[0]; + if (selector) { + if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { + return new Dom7([el.previousElementSibling]); + } + return new Dom7([]); + } + + if (el.previousElementSibling) { return new Dom7([el.previousElementSibling]); } + return new Dom7([]); + } + return new Dom7([]); + } + function prevAll(selector) { + var prevEls = []; + var el = this[0]; + if (!el) { return new Dom7([]); } + while (el.previousElementSibling) { + var prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if ($(prev).is(selector)) { prevEls.push(prev); } + } else { prevEls.push(prev); } + el = prev; + } + return new Dom7(prevEls); + } + function parent(selector) { + var parents = []; // eslint-disable-line + for (var i = 0; i < this.length; i += 1) { + if (this[i].parentNode !== null) { + if (selector) { + if ($(this[i].parentNode).is(selector)) { parents.push(this[i].parentNode); } + } else { + parents.push(this[i].parentNode); + } + } + } + return $(unique(parents)); + } + function parents(selector) { + var parents = []; // eslint-disable-line + for (var i = 0; i < this.length; i += 1) { + var parent = this[i].parentNode; // eslint-disable-line + while (parent) { + if (selector) { + if ($(parent).is(selector)) { parents.push(parent); } + } else { + parents.push(parent); + } + parent = parent.parentNode; + } + } + return $(unique(parents)); + } + function closest(selector) { + var closest = this; // eslint-disable-line + if (typeof selector === 'undefined') { + return new Dom7([]); + } + if (!closest.is(selector)) { + closest = closest.parents(selector).eq(0); + } + return closest; + } + function find(selector) { + var foundElements = []; + for (var i = 0; i < this.length; i += 1) { + var found = this[i].querySelectorAll(selector); + for (var j = 0; j < found.length; j += 1) { + foundElements.push(found[j]); + } + } + return new Dom7(foundElements); + } + function children(selector) { + var children = []; // eslint-disable-line + for (var i = 0; i < this.length; i += 1) { + var childNodes = this[i].childNodes; + + for (var j = 0; j < childNodes.length; j += 1) { + if (!selector) { + if (childNodes[j].nodeType === 1) { children.push(childNodes[j]); } + } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) { + children.push(childNodes[j]); + } + } + } + return new Dom7(unique(children)); + } + function remove() { + for (var i = 0; i < this.length; i += 1) { + if (this[i].parentNode) { this[i].parentNode.removeChild(this[i]); } + } + return this; + } + function add() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var dom = this; + var i; + var j; + for (i = 0; i < args.length; i += 1) { + var toAdd = $(args[i]); + for (j = 0; j < toAdd.length; j += 1) { + dom[dom.length] = toAdd[j]; + dom.length += 1; + } + } + return dom; + } + + var Methods = { + addClass: addClass, + removeClass: removeClass, + hasClass: hasClass, + toggleClass: toggleClass, + attr: attr, + removeAttr: removeAttr, + data: data, + transform: transform, + transition: transition, + on: on, + off: off, + trigger: trigger, + transitionEnd: transitionEnd, + outerWidth: outerWidth, + outerHeight: outerHeight, + offset: offset, + css: css, + each: each, + html: html, + text: text, + is: is, + index: index, + eq: eq, + append: append, + prepend: prepend, + next: next, + nextAll: nextAll, + prev: prev, + prevAll: prevAll, + parent: parent, + parents: parents, + closest: closest, + find: find, + children: children, + filter: filter, + remove: remove, + add: add, + styles: styles, + }; + + Object.keys(Methods).forEach(function (methodName) { + $.fn[methodName] = $.fn[methodName] || Methods[methodName]; + }); + + var Utils = { + deleteProps: function deleteProps(obj) { + var object = obj; + Object.keys(object).forEach(function (key) { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + }, + nextTick: function nextTick(callback, delay) { + if ( delay === void 0 ) delay = 0; + + return setTimeout(callback, delay); + }, + now: function now() { + return Date.now(); + }, + getTranslate: function getTranslate(el, axis) { + if ( axis === void 0 ) axis = 'x'; + + var matrix; + var curTransform; + var transformMatrix; + + var curStyle = win.getComputedStyle(el, null); + + if (win.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(function (a) { return a.replace(',', '.'); }).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new win.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m41; } + // Crazy IE10 Matrix + else if (matrix.length === 16) { curTransform = parseFloat(matrix[12]); } + // Normal Browsers + else { curTransform = parseFloat(matrix[4]); } + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m42; } + // Crazy IE10 Matrix + else if (matrix.length === 16) { curTransform = parseFloat(matrix[13]); } + // Normal Browsers + else { curTransform = parseFloat(matrix[5]); } + } + return curTransform || 0; + }, + parseUrlQuery: function parseUrlQuery(url) { + var query = {}; + var urlToParse = url || win.location.href; + var i; + var params; + var param; + var length; + if (typeof urlToParse === 'string' && urlToParse.length) { + urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : ''; + params = urlToParse.split('&').filter(function (paramsPart) { return paramsPart !== ''; }); + length = params.length; + + for (i = 0; i < length; i += 1) { + param = params[i].replace(/#\S+/g, '').split('='); + query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || ''; + } + } + return query; + }, + isObject: function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object; + }, + extend: function extend() { + var args = [], len$1 = arguments.length; + while ( len$1-- ) args[ len$1 ] = arguments[ len$1 ]; + + var to = Object(args[0]); + for (var i = 1; i < args.length; i += 1) { + var nextSource = args[i]; + if (nextSource !== undefined && nextSource !== null) { + var keysArray = Object.keys(Object(nextSource)); + for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + var nextKey = keysArray[nextIndex]; + var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) { + Utils.extend(to[nextKey], nextSource[nextKey]); + } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) { + to[nextKey] = {}; + Utils.extend(to[nextKey], nextSource[nextKey]); + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + }, + }; + + var Support = (function Support() { + return { + touch: (win.Modernizr && win.Modernizr.touch === true) || (function checkTouch() { + return !!((win.navigator.maxTouchPoints > 0) || ('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch)); + }()), + + pointerEvents: !!win.PointerEvent && ('maxTouchPoints' in win.navigator) && win.navigator.maxTouchPoints > 0, + + observer: (function checkObserver() { + return ('MutationObserver' in win || 'WebkitMutationObserver' in win); + }()), + + passiveListener: (function checkPassiveListener() { + var supportsPassive = false; + try { + var opts = Object.defineProperty({}, 'passive', { + // eslint-disable-next-line + get: function get() { + supportsPassive = true; + }, + }); + win.addEventListener('testPassiveListener', null, opts); + } catch (e) { + // No support + } + return supportsPassive; + }()), + + gestures: (function checkGestures() { + return 'ongesturestart' in win; + }()), + }; + }()); + + var SwiperClass = function SwiperClass(params) { + if ( params === void 0 ) params = {}; + + var self = this; + self.params = params; + + // Events + self.eventsListeners = {}; + + if (self.params && self.params.on) { + Object.keys(self.params.on).forEach(function (eventName) { + self.on(eventName, self.params.on[eventName]); + }); + } + }; + + var staticAccessors = { components: { configurable: true } }; + + SwiperClass.prototype.on = function on (events, handler, priority) { + var self = this; + if (typeof handler !== 'function') { return self; } + var method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(function (event) { + if (!self.eventsListeners[event]) { self.eventsListeners[event] = []; } + self.eventsListeners[event][method](handler); + }); + return self; + }; + + SwiperClass.prototype.once = function once (events, handler, priority) { + var self = this; + if (typeof handler !== 'function') { return self; } + function onceHandler() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + self.off(events, onceHandler); + if (onceHandler.f7proxy) { + delete onceHandler.f7proxy; + } + handler.apply(self, args); + } + onceHandler.f7proxy = handler; + return self.on(events, onceHandler, priority); + }; + + SwiperClass.prototype.off = function off (events, handler) { + var self = this; + if (!self.eventsListeners) { return self; } + events.split(' ').forEach(function (event) { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event] && self.eventsListeners[event].length) { + self.eventsListeners[event].forEach(function (eventHandler, index) { + if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }; + + SwiperClass.prototype.emit = function emit () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var self = this; + if (!self.eventsListeners) { return self; } + var events; + var data; + var context; + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + var eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(function (event) { + if (self.eventsListeners && self.eventsListeners[event]) { + var handlers = []; + self.eventsListeners[event].forEach(function (eventHandler) { + handlers.push(eventHandler); + }); + handlers.forEach(function (eventHandler) { + eventHandler.apply(context, data); + }); + } + }); + return self; + }; + + SwiperClass.prototype.useModulesParams = function useModulesParams (instanceParams) { + var instance = this; + if (!instance.modules) { return; } + Object.keys(instance.modules).forEach(function (moduleName) { + var module = instance.modules[moduleName]; + // Extend params + if (module.params) { + Utils.extend(instanceParams, module.params); + } + }); + }; + + SwiperClass.prototype.useModules = function useModules (modulesParams) { + if ( modulesParams === void 0 ) modulesParams = {}; + + var instance = this; + if (!instance.modules) { return; } + Object.keys(instance.modules).forEach(function (moduleName) { + var module = instance.modules[moduleName]; + var moduleParams = modulesParams[moduleName] || {}; + // Extend instance methods and props + if (module.instance) { + Object.keys(module.instance).forEach(function (modulePropName) { + var moduleProp = module.instance[modulePropName]; + if (typeof moduleProp === 'function') { + instance[modulePropName] = moduleProp.bind(instance); + } else { + instance[modulePropName] = moduleProp; + } + }); + } + // Add event listeners + if (module.on && instance.on) { + Object.keys(module.on).forEach(function (moduleEventName) { + instance.on(moduleEventName, module.on[moduleEventName]); + }); + } + + // Module create callback + if (module.create) { + module.create.bind(instance)(moduleParams); + } + }); + }; + + staticAccessors.components.set = function (components) { + var Class = this; + if (!Class.use) { return; } + Class.use(components); + }; + + SwiperClass.installModule = function installModule (module) { + var params = [], len = arguments.length - 1; + while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ]; + + var Class = this; + if (!Class.prototype.modules) { Class.prototype.modules = {}; } + var name = module.name || (((Object.keys(Class.prototype.modules).length) + "_" + (Utils.now()))); + Class.prototype.modules[name] = module; + // Prototype + if (module.proto) { + Object.keys(module.proto).forEach(function (key) { + Class.prototype[key] = module.proto[key]; + }); + } + // Class + if (module.static) { + Object.keys(module.static).forEach(function (key) { + Class[key] = module.static[key]; + }); + } + // Callback + if (module.install) { + module.install.apply(Class, params); + } + return Class; + }; + + SwiperClass.use = function use (module) { + var params = [], len = arguments.length - 1; + while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ]; + + var Class = this; + if (Array.isArray(module)) { + module.forEach(function (m) { return Class.installModule(m); }); + return Class; + } + return Class.installModule.apply(Class, [ module ].concat( params )); + }; + + Object.defineProperties( SwiperClass, staticAccessors ); + + function updateSize () { + var swiper = this; + var width; + var height; + var $el = swiper.$el; + if (typeof swiper.params.width !== 'undefined') { + width = swiper.params.width; + } else { + width = $el[0].clientWidth; + } + if (typeof swiper.params.height !== 'undefined') { + height = swiper.params.height; + } else { + height = $el[0].clientHeight; + } + if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) { + return; + } + + // Subtract paddings + width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10); + height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10); + + Utils.extend(swiper, { + width: width, + height: height, + size: swiper.isHorizontal() ? width : height, + }); + } + + function updateSlides () { + var swiper = this; + var params = swiper.params; + + var $wrapperEl = swiper.$wrapperEl; + var swiperSize = swiper.size; + var rtl = swiper.rtlTranslate; + var wrongRTL = swiper.wrongRTL; + var isVirtual = swiper.virtual && params.virtual.enabled; + var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + var slides = $wrapperEl.children(("." + (swiper.params.slideClass))); + var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + var snapGrid = []; + var slidesGrid = []; + var slidesSizesGrid = []; + + function slidesForMargin(slideIndex) { + if (!params.cssMode) { return true; } + if (slideIndex === slides.length - 1) { + return false; + } + return true; + } + + var offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + + var offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + + var previousSnapGridLength = swiper.snapGrid.length; + var previousSlidesGridLength = swiper.snapGrid.length; + + var spaceBetween = params.spaceBetween; + var slidePosition = -offsetBefore; + var prevSlideSize = 0; + var index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize; + } + + swiper.virtualSize = -spaceBetween; + + // reset margins + if (rtl) { slides.css({ marginLeft: '', marginTop: '' }); } + else { slides.css({ marginRight: '', marginBottom: '' }); } + + var slidesNumberEvenToRows; + if (params.slidesPerColumn > 1) { + if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn; + } + if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn); + } + } + + // Calc slides + var slideSize; + var slidesPerColumn = params.slidesPerColumn; + var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn; + var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn); + for (var i = 0; i < slidesLength; i += 1) { + slideSize = 0; + var slide = slides.eq(i); + if (params.slidesPerColumn > 1) { + // Set slides order + var newSlideOrderIndex = (void 0); + var column = (void 0); + var row = (void 0); + if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) { + var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn)); + var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex; + var columnsInGroup = groupIndex === 0 + ? params.slidesPerGroup + : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup; + + newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn); + slide + .css({ + '-webkit-box-ordinal-group': newSlideOrderIndex, + '-moz-box-ordinal-group': newSlideOrderIndex, + '-ms-flex-order': newSlideOrderIndex, + '-webkit-order': newSlideOrderIndex, + order: newSlideOrderIndex, + }); + } else if (params.slidesPerColumnFill === 'column') { + column = Math.floor(i / slidesPerColumn); + row = i - (column * slidesPerColumn); + if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) { + row += 1; + if (row >= slidesPerColumn) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - (row * slidesPerRow); + } + slide.css( + ("margin-" + (swiper.isHorizontal() ? 'top' : 'left')), + (row !== 0 && params.spaceBetween) && (((params.spaceBetween) + "px")) + ); + } + if (slide.css('display') === 'none') { continue; } // eslint-disable-line + + if (params.slidesPerView === 'auto') { + var slideStyles = win.getComputedStyle(slide[0], null); + var currentTransform = slide[0].style.transform; + var currentWebKitTransform = slide[0].style.webkitTransform; + if (currentTransform) { + slide[0].style.transform = 'none'; + } + if (currentWebKitTransform) { + slide[0].style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() + ? slide.outerWidth(true) + : slide.outerHeight(true); + } else { + // eslint-disable-next-line + if (swiper.isHorizontal()) { + var width = parseFloat(slideStyles.getPropertyValue('width')); + var paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left')); + var paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right')); + var marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left')); + var marginRight = parseFloat(slideStyles.getPropertyValue('margin-right')); + var boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight; + } + } else { + var height = parseFloat(slideStyles.getPropertyValue('height')); + var paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top')); + var paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom')); + var marginTop = parseFloat(slideStyles.getPropertyValue('margin-top')); + var marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom')); + var boxSizing$1 = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing$1 && boxSizing$1 === 'border-box') { + slideSize = height + marginTop + marginBottom; + } else { + slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom; + } + } + } + if (currentTransform) { + slide[0].style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide[0].style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) { slideSize = Math.floor(slideSize); } + } else { + slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView; + if (params.roundLengths) { slideSize = Math.floor(slideSize); } + + if (slides[i]) { + if (swiper.isHorizontal()) { + slides[i].style.width = slideSize + "px"; + } else { + slides[i].style.height = slideSize + "px"; + } + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + + + if (params.centeredSlides) { + slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween; + if (prevSlideSize === 0 && i !== 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; } + if (i === 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; } + if (Math.abs(slidePosition) < 1 / 1000) { slidePosition = 0; } + if (params.roundLengths) { slidePosition = Math.floor(slidePosition); } + if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); } + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) { slidePosition = Math.floor(slidePosition); } + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) { snapGrid.push(slidePosition); } + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + + swiper.virtualSize += slideSize + spaceBetween; + + prevSlideSize = slideSize; + + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + var newSlidesGrid; + + if ( + rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); + } + if (params.setWrapperSize) { + if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); } + else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") }); } + } + + if (params.slidesPerColumn > 1) { + swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween; + if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); } + else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") }); } + if (params.centeredSlides) { + newSlidesGrid = []; + for (var i$1 = 0; i$1 < snapGrid.length; i$1 += 1) { + var slidesGridItem = snapGrid[i$1]; + if (params.roundLengths) { slidesGridItem = Math.floor(slidesGridItem); } + if (snapGrid[i$1] < swiper.virtualSize + snapGrid[0]) { newSlidesGrid.push(slidesGridItem); } + } + snapGrid = newSlidesGrid; + } + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + newSlidesGrid = []; + for (var i$2 = 0; i$2 < snapGrid.length; i$2 += 1) { + var slidesGridItem$1 = snapGrid[i$2]; + if (params.roundLengths) { slidesGridItem$1 = Math.floor(slidesGridItem$1); } + if (snapGrid[i$2] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem$1); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (snapGrid.length === 0) { snapGrid = [0]; } + + if (params.spaceBetween !== 0) { + if (swiper.isHorizontal()) { + if (rtl) { slides.filter(slidesForMargin).css({ marginLeft: (spaceBetween + "px") }); } + else { slides.filter(slidesForMargin).css({ marginRight: (spaceBetween + "px") }); } + } else { slides.filter(slidesForMargin).css({ marginBottom: (spaceBetween + "px") }); } + } + + if (params.centeredSlides && params.centeredSlidesBounds) { + var allSlidesSize = 0; + slidesSizesGrid.forEach(function (slideSizeValue) { + allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); + }); + allSlidesSize -= params.spaceBetween; + var maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(function (snap) { + if (snap < 0) { return -offsetBefore; } + if (snap > maxSnap) { return maxSnap + offsetAfter; } + return snap; + }); + } + + if (params.centerInsufficientSlides) { + var allSlidesSize$1 = 0; + slidesSizesGrid.forEach(function (slideSizeValue) { + allSlidesSize$1 += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); + }); + allSlidesSize$1 -= params.spaceBetween; + if (allSlidesSize$1 < swiperSize) { + var allSlidesOffset = (swiperSize - allSlidesSize$1) / 2; + snapGrid.forEach(function (snap, snapIndex) { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach(function (snap, snapIndex) { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + + Utils.extend(swiper, { + slides: slides, + snapGrid: snapGrid, + slidesGrid: slidesGrid, + slidesSizesGrid: slidesSizesGrid, + }); + + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) { swiper.checkOverflow(); } + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + + if (params.watchSlidesProgress || params.watchSlidesVisibility) { + swiper.updateSlidesOffset(); + } + } + + function updateAutoHeight (speed) { + var swiper = this; + var activeSlides = []; + var newHeight = 0; + var i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + swiper.visibleSlides.each(function (index, slide) { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + var index = swiper.activeIndex + i; + if (index > swiper.slides.length) { break; } + activeSlides.push(swiper.slides.eq(index)[0]); + } + } + } else { + activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + var height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight) { swiper.$wrapperEl.css('height', (newHeight + "px")); } + } + + function updateSlidesOffset () { + var swiper = this; + var slides = swiper.slides; + for (var i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; + } + } + + function updateSlidesProgress (translate) { + if ( translate === void 0 ) translate = (this && this.translate) || 0; + + var swiper = this; + var params = swiper.params; + + var slides = swiper.slides; + var rtl = swiper.rtlTranslate; + + if (slides.length === 0) { return; } + if (typeof slides[0].swiperSlideOffset === 'undefined') { swiper.updateSlidesOffset(); } + + var offsetCenter = -translate; + if (rtl) { offsetCenter = translate; } + + // Visible Slides + slides.removeClass(params.slideVisibleClass); + + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + + for (var i = 0; i < slides.length; i += 1) { + var slide = slides[i]; + var slideProgress = ( + (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset + ) / (slide.swiperSlideSize + params.spaceBetween); + if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) { + var slideBefore = -(offsetCenter - slide.swiperSlideOffset); + var slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + var isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1) + || (slideAfter > 1 && slideAfter <= swiper.size) + || (slideBefore <= 0 && slideAfter >= swiper.size); + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides.eq(i).addClass(params.slideVisibleClass); + } + } + slide.progress = rtl ? -slideProgress : slideProgress; + } + swiper.visibleSlides = $(swiper.visibleSlides); + } + + function updateProgress (translate) { + var swiper = this; + if (typeof translate === 'undefined') { + var multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0; + } + var params = swiper.params; + var translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + var progress = swiper.progress; + var isBeginning = swiper.isBeginning; + var isEnd = swiper.isEnd; + var wasBeginning = isBeginning; + var wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / (translatesDiff); + isBeginning = progress <= 0; + isEnd = progress >= 1; + } + Utils.extend(swiper, { + progress: progress, + isBeginning: isBeginning, + isEnd: isEnd, + }); + + if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) { swiper.updateSlidesProgress(translate); } + + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) { + swiper.emit('fromEdge'); + } + + swiper.emit('progress', progress); + } + + function updateSlidesClasses () { + var swiper = this; + + var slides = swiper.slides; + var params = swiper.params; + var $wrapperEl = swiper.$wrapperEl; + var activeIndex = swiper.activeIndex; + var realIndex = swiper.realIndex; + var isVirtual = swiper.virtual && params.virtual.enabled; + + slides.removeClass(((params.slideActiveClass) + " " + (params.slideNextClass) + " " + (params.slidePrevClass) + " " + (params.slideDuplicateActiveClass) + " " + (params.slideDuplicateNextClass) + " " + (params.slideDuplicatePrevClass))); + + var activeSlide; + if (isVirtual) { + activeSlide = swiper.$wrapperEl.find(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + activeIndex + "\"]")); + } else { + activeSlide = slides.eq(activeIndex); + } + + // Active classes + activeSlide.addClass(params.slideActiveClass); + + if (params.loop) { + // Duplicate to all looped slides + if (activeSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl + .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + realIndex + "\"]")) + .addClass(params.slideDuplicateActiveClass); + } else { + $wrapperEl + .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]")) + .addClass(params.slideDuplicateActiveClass); + } + } + // Next Slide + var nextSlide = activeSlide.nextAll(("." + (params.slideClass))).eq(0).addClass(params.slideNextClass); + if (params.loop && nextSlide.length === 0) { + nextSlide = slides.eq(0); + nextSlide.addClass(params.slideNextClass); + } + // Prev Slide + var prevSlide = activeSlide.prevAll(("." + (params.slideClass))).eq(0).addClass(params.slidePrevClass); + if (params.loop && prevSlide.length === 0) { + prevSlide = slides.eq(-1); + prevSlide.addClass(params.slidePrevClass); + } + if (params.loop) { + // Duplicate to all looped slides + if (nextSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl + .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]")) + .addClass(params.slideDuplicateNextClass); + } else { + $wrapperEl + .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]")) + .addClass(params.slideDuplicateNextClass); + } + if (prevSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl + .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]")) + .addClass(params.slideDuplicatePrevClass); + } else { + $wrapperEl + .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]")) + .addClass(params.slideDuplicatePrevClass); + } + } + } + + function updateActiveIndex (newActiveIndex) { + var swiper = this; + var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + var slidesGrid = swiper.slidesGrid; + var snapGrid = swiper.snapGrid; + var params = swiper.params; + var previousIndex = swiper.activeIndex; + var previousRealIndex = swiper.realIndex; + var previousSnapIndex = swiper.snapIndex; + var activeIndex = newActiveIndex; + var snapIndex; + if (typeof activeIndex === 'undefined') { + for (var i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') { activeIndex = 0; } + } + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + var skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; } + if (activeIndex === previousIndex) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + + // Get real index + var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); + + Utils.extend(swiper, { + snapIndex: snapIndex, + realIndex: realIndex, + previousIndex: previousIndex, + activeIndex: activeIndex, + }); + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + swiper.emit('slideChange'); + } + } + + function updateClickedSlide (e) { + var swiper = this; + var params = swiper.params; + var slide = $(e.target).closest(("." + (params.slideClass)))[0]; + var slideFound = false; + if (slide) { + for (var i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { slideFound = true; } + } + } + + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = $(slide).index(); + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize: updateSize, + updateSlides: updateSlides, + updateAutoHeight: updateAutoHeight, + updateSlidesOffset: updateSlidesOffset, + updateSlidesProgress: updateSlidesProgress, + updateProgress: updateProgress, + updateSlidesClasses: updateSlidesClasses, + updateActiveIndex: updateActiveIndex, + updateClickedSlide: updateClickedSlide, + }; + + function getTranslate (axis) { + if ( axis === void 0 ) axis = this.isHorizontal() ? 'x' : 'y'; + + var swiper = this; + + var params = swiper.params; + var rtl = swiper.rtlTranslate; + var translate = swiper.translate; + var $wrapperEl = swiper.$wrapperEl; + + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + + var currentTranslate = Utils.getTranslate($wrapperEl[0], axis); + if (rtl) { currentTranslate = -currentTranslate; } + + return currentTranslate || 0; + } + + function setTranslate (translate, byController) { + var swiper = this; + var rtl = swiper.rtlTranslate; + var params = swiper.params; + var $wrapperEl = swiper.$wrapperEl; + var wrapperEl = swiper.wrapperEl; + var progress = swiper.progress; + var x = 0; + var y = 0; + var z = 0; + + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + $wrapperEl.transform(("translate3d(" + x + "px, " + y + "px, " + z + "px)")); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + + // Check if we need to update progress + var newProgress; + var translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / (translatesDiff); + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate () { + return (-this.snapGrid[0]); + } + + function maxTranslate () { + return (-this.snapGrid[this.snapGrid.length - 1]); + } + + function translateTo (translate, speed, runCallbacks, translateBounds, internal) { + var obj; + + if ( translate === void 0 ) translate = 0; + if ( speed === void 0 ) speed = this.params.speed; + if ( runCallbacks === void 0 ) runCallbacks = true; + if ( translateBounds === void 0 ) translateBounds = true; + var swiper = this; + + var params = swiper.params; + var wrapperEl = swiper.wrapperEl; + + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + + var minTranslate = swiper.minTranslate(); + var maxTranslate = swiper.maxTranslate(); + var newTranslate; + if (translateBounds && translate > minTranslate) { newTranslate = minTranslate; } + else if (translateBounds && translate < maxTranslate) { newTranslate = maxTranslate; } + else { newTranslate = translate; } + + // Update progress + swiper.updateProgress(newTranslate); + + if (params.cssMode) { + var isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + // eslint-disable-next-line + if (wrapperEl.scrollTo) { + wrapperEl.scrollTo(( obj = {}, obj[isH ? 'left' : 'top'] = -newTranslate, obj.behavior = 'smooth', obj )); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } + } + return true; + } + + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) { return; } + if (e.target !== this) { return; } + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); + } + } + + return true; + } + + var translate = { + getTranslate: getTranslate, + setTranslate: setTranslate, + minTranslate: minTranslate, + maxTranslate: maxTranslate, + translateTo: translateTo, + }; + + function setTransition (duration, byController) { + var swiper = this; + + if (!swiper.params.cssMode) { + swiper.$wrapperEl.transition(duration); + } + + swiper.emit('setTransition', duration, byController); + } + + function transitionStart (runCallbacks, direction) { + if ( runCallbacks === void 0 ) runCallbacks = true; + + var swiper = this; + var activeIndex = swiper.activeIndex; + var params = swiper.params; + var previousIndex = swiper.previousIndex; + if (params.cssMode) { return; } + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + + var dir = direction; + if (!dir) { + if (activeIndex > previousIndex) { dir = 'next'; } + else if (activeIndex < previousIndex) { dir = 'prev'; } + else { dir = 'reset'; } + } + + swiper.emit('transitionStart'); + + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit('slideResetTransitionStart'); + return; + } + swiper.emit('slideChangeTransitionStart'); + if (dir === 'next') { + swiper.emit('slideNextTransitionStart'); + } else { + swiper.emit('slidePrevTransitionStart'); + } + } + } + + function transitionEnd$1 (runCallbacks, direction) { + if ( runCallbacks === void 0 ) runCallbacks = true; + + var swiper = this; + var activeIndex = swiper.activeIndex; + var previousIndex = swiper.previousIndex; + var params = swiper.params; + swiper.animating = false; + if (params.cssMode) { return; } + swiper.setTransition(0); + + var dir = direction; + if (!dir) { + if (activeIndex > previousIndex) { dir = 'next'; } + else if (activeIndex < previousIndex) { dir = 'prev'; } + else { dir = 'reset'; } + } + + swiper.emit('transitionEnd'); + + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit('slideResetTransitionEnd'); + return; + } + swiper.emit('slideChangeTransitionEnd'); + if (dir === 'next') { + swiper.emit('slideNextTransitionEnd'); + } else { + swiper.emit('slidePrevTransitionEnd'); + } + } + } + + var transition$1 = { + setTransition: setTransition, + transitionStart: transitionStart, + transitionEnd: transitionEnd$1, + }; + + function slideTo (index, speed, runCallbacks, internal) { + var obj; + + if ( index === void 0 ) index = 0; + if ( speed === void 0 ) speed = this.params.speed; + if ( runCallbacks === void 0 ) runCallbacks = true; + var swiper = this; + var slideIndex = index; + if (slideIndex < 0) { slideIndex = 0; } + + var params = swiper.params; + var snapGrid = swiper.snapGrid; + var slidesGrid = swiper.slidesGrid; + var previousIndex = swiper.previousIndex; + var activeIndex = swiper.activeIndex; + var rtl = swiper.rtlTranslate; + var wrapperEl = swiper.wrapperEl; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + + var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; } + + if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + var translate = -snapGrid[snapIndex]; + + // Update progress + swiper.updateProgress(translate); + + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (var i = 0; i < slidesGrid.length; i += 1) { + if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { return false; } + } + } + + var direction; + if (slideIndex > activeIndex) { direction = 'next'; } + else if (slideIndex < activeIndex) { direction = 'prev'; } + else { direction = 'reset'; } + + + // Update Index + if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + var isH = swiper.isHorizontal(); + var t = -translate; + if (rtl) { + t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t; + } + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } else { + // eslint-disable-next-line + if (wrapperEl.scrollTo) { + wrapperEl.scrollTo(( obj = {}, obj[isH ? 'left' : 'top'] = t, obj.behavior = 'smooth', obj )); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + } + return true; + } + + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } else { + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) { return; } + if (e.target !== this) { return; } + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); + } + } + + return true; + } + + function slideToLoop (index, speed, runCallbacks, internal) { + if ( index === void 0 ) index = 0; + if ( speed === void 0 ) speed = this.params.speed; + if ( runCallbacks === void 0 ) runCallbacks = true; + + var swiper = this; + var newIndex = index; + if (swiper.params.loop) { + newIndex += swiper.loopedSlides; + } + + return swiper.slideTo(newIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideNext (speed, runCallbacks, internal) { + if ( speed === void 0 ) speed = this.params.speed; + if ( runCallbacks === void 0 ) runCallbacks = true; + + var swiper = this; + var params = swiper.params; + var animating = swiper.animating; + var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup; + if (params.loop) { + if (animating) { return false; } + swiper.loopFix(); + // eslint-disable-next-line + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev (speed, runCallbacks, internal) { + if ( speed === void 0 ) speed = this.params.speed; + if ( runCallbacks === void 0 ) runCallbacks = true; + + var swiper = this; + var params = swiper.params; + var animating = swiper.animating; + var snapGrid = swiper.snapGrid; + var slidesGrid = swiper.slidesGrid; + var rtlTranslate = swiper.rtlTranslate; + + if (params.loop) { + if (animating) { return false; } + swiper.loopFix(); + // eslint-disable-next-line + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + } + var translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) { return -Math.floor(Math.abs(val)); } + return Math.floor(val); + } + var normalizedTranslate = normalize(translate); + var normalizedSnapGrid = snapGrid.map(function (val) { return normalize(val); }); + var normalizedSlidesGrid = slidesGrid.map(function (val) { return normalize(val); }); + + var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)]; + var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + snapGrid.forEach(function (snap) { + if (!prevSnap && normalizedTranslate >= snap) { prevSnap = snap; } + }); + } + var prevIndex; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) { prevIndex = swiper.activeIndex - 1; } + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset (speed, runCallbacks, internal) { + if ( speed === void 0 ) speed = this.params.speed; + if ( runCallbacks === void 0 ) runCallbacks = true; + + var swiper = this; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest (speed, runCallbacks, internal, threshold) { + if ( speed === void 0 ) speed = this.params.speed; + if ( runCallbacks === void 0 ) runCallbacks = true; + if ( threshold === void 0 ) threshold = 0.5; + + var swiper = this; + var index = swiper.activeIndex; + var skip = Math.min(swiper.params.slidesPerGroupSkip, index); + var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + + var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + var currentSnap = swiper.snapGrid[snapIndex]; + var nextSnap = swiper.snapGrid[snapIndex + 1]; + if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + var prevSnap = swiper.snapGrid[snapIndex - 1]; + var currentSnap$1 = swiper.snapGrid[snapIndex]; + if ((translate - prevSnap) <= (currentSnap$1 - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide () { + var swiper = this; + var params = swiper.params; + var $wrapperEl = swiper.$wrapperEl; + + var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + var slideToIndex = swiper.clickedIndex; + var realIndex; + if (params.loop) { + if (swiper.animating) { return; } + realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if ( + (slideToIndex < swiper.loopedSlides - (slidesPerView / 2)) + || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2)) + ) { + swiper.loopFix(); + slideToIndex = $wrapperEl + .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")")) + .eq(0) + .index(); + + Utils.nextTick(function () { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = $wrapperEl + .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")")) + .eq(0) + .index(); + + Utils.nextTick(function () { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo: slideTo, + slideToLoop: slideToLoop, + slideNext: slideNext, + slidePrev: slidePrev, + slideReset: slideReset, + slideToClosest: slideToClosest, + slideToClickedSlide: slideToClickedSlide, + }; + + function loopCreate () { + var swiper = this; + var params = swiper.params; + var $wrapperEl = swiper.$wrapperEl; + // Remove duplicated slides + $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass))).remove(); + + var slides = $wrapperEl.children(("." + (params.slideClass))); + + if (params.loopFillGroupWithBlank) { + var blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup); + if (blankSlidesNum !== params.slidesPerGroup) { + for (var i = 0; i < blankSlidesNum; i += 1) { + var blankNode = $(doc.createElement('div')).addClass(((params.slideClass) + " " + (params.slideBlankClass))); + $wrapperEl.append(blankNode); + } + slides = $wrapperEl.children(("." + (params.slideClass))); + } + } + + if (params.slidesPerView === 'auto' && !params.loopedSlides) { params.loopedSlides = slides.length; } + + swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10)); + swiper.loopedSlides += params.loopAdditionalSlides; + if (swiper.loopedSlides > slides.length) { + swiper.loopedSlides = slides.length; + } + + var prependSlides = []; + var appendSlides = []; + slides.each(function (index, el) { + var slide = $(el); + if (index < swiper.loopedSlides) { appendSlides.push(el); } + if (index < slides.length && index >= slides.length - swiper.loopedSlides) { prependSlides.push(el); } + slide.attr('data-swiper-slide-index', index); + }); + for (var i$1 = 0; i$1 < appendSlides.length; i$1 += 1) { + $wrapperEl.append($(appendSlides[i$1].cloneNode(true)).addClass(params.slideDuplicateClass)); + } + for (var i$2 = prependSlides.length - 1; i$2 >= 0; i$2 -= 1) { + $wrapperEl.prepend($(prependSlides[i$2].cloneNode(true)).addClass(params.slideDuplicateClass)); + } + } + + function loopFix () { + var swiper = this; + + swiper.emit('beforeLoopFix'); + + var activeIndex = swiper.activeIndex; + var slides = swiper.slides; + var loopedSlides = swiper.loopedSlides; + var allowSlidePrev = swiper.allowSlidePrev; + var allowSlideNext = swiper.allowSlideNext; + var snapGrid = swiper.snapGrid; + var rtl = swiper.rtlTranslate; + var newIndex; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + + var snapTranslate = -snapGrid[activeIndex]; + var diff = snapTranslate - swiper.getTranslate(); + + // Fix For Negative Oversliding + if (activeIndex < loopedSlides) { + newIndex = (slides.length - (loopedSlides * 3)) + activeIndex; + newIndex += loopedSlides; + var slideChanged = swiper.slideTo(newIndex, 0, false, true); + if (slideChanged && diff !== 0) { + swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); + } + } else if (activeIndex >= slides.length - loopedSlides) { + // Fix For Positive Oversliding + newIndex = -slides.length + activeIndex + loopedSlides; + newIndex += loopedSlides; + var slideChanged$1 = swiper.slideTo(newIndex, 0, false, true); + if (slideChanged$1 && diff !== 0) { + swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + + swiper.emit('loopFix'); + } + + function loopDestroy () { + var swiper = this; + var $wrapperEl = swiper.$wrapperEl; + var params = swiper.params; + var slides = swiper.slides; + $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + ",." + (params.slideClass) + "." + (params.slideBlankClass))).remove(); + slides.removeAttr('data-swiper-slide-index'); + } + + var loop = { + loopCreate: loopCreate, + loopFix: loopFix, + loopDestroy: loopDestroy, + }; + + function setGrabCursor (moving) { + var swiper = this; + if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) { return; } + var el = swiper.el; + el.style.cursor = 'move'; + el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab'; + el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + } + + function unsetGrabCursor () { + var swiper = this; + if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) { return; } + swiper.el.style.cursor = ''; + } + + var grabCursor = { + setGrabCursor: setGrabCursor, + unsetGrabCursor: unsetGrabCursor, + }; + + function appendSlide (slides) { + var swiper = this; + var $wrapperEl = swiper.$wrapperEl; + var params = swiper.params; + if (params.loop) { + swiper.loopDestroy(); + } + if (typeof slides === 'object' && 'length' in slides) { + for (var i = 0; i < slides.length; i += 1) { + if (slides[i]) { $wrapperEl.append(slides[i]); } + } + } else { + $wrapperEl.append(slides); + } + if (params.loop) { + swiper.loopCreate(); + } + if (!(params.observer && Support.observer)) { + swiper.update(); + } + } + + function prependSlide (slides) { + var swiper = this; + var params = swiper.params; + var $wrapperEl = swiper.$wrapperEl; + var activeIndex = swiper.activeIndex; + + if (params.loop) { + swiper.loopDestroy(); + } + var newActiveIndex = activeIndex + 1; + if (typeof slides === 'object' && 'length' in slides) { + for (var i = 0; i < slides.length; i += 1) { + if (slides[i]) { $wrapperEl.prepend(slides[i]); } + } + newActiveIndex = activeIndex + slides.length; + } else { + $wrapperEl.prepend(slides); + } + if (params.loop) { + swiper.loopCreate(); + } + if (!(params.observer && Support.observer)) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); + } + + function addSlide (index, slides) { + var swiper = this; + var $wrapperEl = swiper.$wrapperEl; + var params = swiper.params; + var activeIndex = swiper.activeIndex; + var activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.slides = $wrapperEl.children(("." + (params.slideClass))); + } + var baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + + var slidesBuffer = []; + for (var i = baseLength - 1; i >= index; i -= 1) { + var currentSlide = swiper.slides.eq(i); + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + + if (typeof slides === 'object' && 'length' in slides) { + for (var i$1 = 0; i$1 < slides.length; i$1 += 1) { + if (slides[i$1]) { $wrapperEl.append(slides[i$1]); } + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + $wrapperEl.append(slides); + } + + for (var i$2 = 0; i$2 < slidesBuffer.length; i$2 += 1) { + $wrapperEl.append(slidesBuffer[i$2]); + } + + if (params.loop) { + swiper.loopCreate(); + } + if (!(params.observer && Support.observer)) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeSlide (slidesIndexes) { + var swiper = this; + var params = swiper.params; + var $wrapperEl = swiper.$wrapperEl; + var activeIndex = swiper.activeIndex; + + var activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.slides = $wrapperEl.children(("." + (params.slideClass))); + } + var newActiveIndex = activeIndexBuffer; + var indexToRemove; + + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (var i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); } + if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; } + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); } + if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; } + newActiveIndex = Math.max(newActiveIndex, 0); + } + + if (params.loop) { + swiper.loopCreate(); + } + + if (!(params.observer && Support.observer)) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeAllSlides () { + var swiper = this; + + var slidesIndexes = []; + for (var i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); + } + + var manipulation = { + appendSlide: appendSlide, + prependSlide: prependSlide, + addSlide: addSlide, + removeSlide: removeSlide, + removeAllSlides: removeAllSlides, + }; + + var Device = (function Device() { + var platform = win.navigator.platform; + var ua = win.navigator.userAgent; + + var device = { + ios: false, + android: false, + androidChrome: false, + desktop: false, + iphone: false, + ipod: false, + ipad: false, + edge: false, + ie: false, + firefox: false, + macos: false, + windows: false, + cordova: !!(win.cordova || win.phonegap), + phonegap: !!(win.cordova || win.phonegap), + electron: false, + }; + + var screenWidth = win.screen.width; + var screenHeight = win.screen.height; + + var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + var ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + var ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0; + var edge = ua.indexOf('Edge/') >= 0; + var firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0; + var windows = platform === 'Win32'; + var electron = ua.toLowerCase().indexOf('electron') >= 0; + var macos = platform === 'MacIntel'; + + // iPadOs 13 fix + if (!ipad + && macos + && Support.touch + && ( + (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9 + || (screenWidth === 834 && screenHeight === 1194) // Pro 11 + || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5 + || (screenWidth === 768 && screenHeight === 1024) // other + ) + ) { + ipad = ua.match(/(Version)\/([\d.]+)/); + macos = false; + } + + device.ie = ie; + device.edge = edge; + device.firefox = firefox; + + // Android + if (android && !windows) { + device.os = 'android'; + device.osVersion = android[2]; + device.android = true; + device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + // iOS + if (iphone && !ipod) { + device.osVersion = iphone[2].replace(/_/g, '.'); + device.iphone = true; + } + if (ipad) { + device.osVersion = ipad[2].replace(/_/g, '.'); + device.ipad = true; + } + if (ipod) { + device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null; + device.ipod = true; + } + // iOS 8+ changed UA + if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) { + if (device.osVersion.split('.')[0] === '10') { + device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0]; + } + } + + // Webview + device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || win.navigator.standalone)) + || (win.matchMedia && win.matchMedia('(display-mode: standalone)').matches); + device.webview = device.webView; + device.standalone = device.webView; + + // Desktop + device.desktop = !(device.ios || device.android) || electron; + if (device.desktop) { + device.electron = electron; + device.macos = macos; + device.windows = windows; + if (device.macos) { + device.os = 'macos'; + } + if (device.windows) { + device.os = 'windows'; + } + } + + // Pixel Ratio + device.pixelRatio = win.devicePixelRatio || 1; + + // Export object + return device; + }()); + + function onTouchStart (event) { + var swiper = this; + var data = swiper.touchEventsData; + var params = swiper.params; + var touches = swiper.touches; + + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + var e = event; + if (e.originalEvent) { e = e.originalEvent; } + var $targetEl = $(e.target); + + if (params.touchEventsTarget === 'wrapper') { + if (!$targetEl.closest(swiper.wrapperEl).length) { return; } + } + data.isTouchEvent = e.type === 'touchstart'; + if (!data.isTouchEvent && 'which' in e && e.which === 3) { return; } + if (!data.isTouchEvent && 'button' in e && e.button > 0) { return; } + if (data.isTouched && data.isMoved) { return; } + if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : ("." + (params.noSwipingClass)))[0]) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!$targetEl.closest(params.swipeHandler)[0]) { return; } + } + + touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; + touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; + var startX = touches.currentX; + var startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore + + var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; + var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; + if ( + edgeSwipeDetection + && ((startX <= edgeSwipeThreshold) + || (startX >= win.screen.width - edgeSwipeThreshold)) + ) { + return; + } + + Utils.extend(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined, + }); + + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = Utils.now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) { data.allowThresholdMove = false; } + if (e.type !== 'touchstart') { + var preventDefault = true; + if ($targetEl.is(data.formElements)) { preventDefault = false; } + if ( + doc.activeElement + && $(doc.activeElement).is(data.formElements) + && doc.activeElement !== $targetEl[0] + ) { + doc.activeElement.blur(); + } + + var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if (params.touchStartForcePreventDefault || shouldPreventDefault) { + e.preventDefault(); + } + } + swiper.emit('touchStart', e); + } + + function onTouchMove (event) { + var swiper = this; + var data = swiper.touchEventsData; + var params = swiper.params; + var touches = swiper.touches; + var rtl = swiper.rtlTranslate; + var e = event; + if (e.originalEvent) { e = e.originalEvent; } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + if (data.isTouchEvent && e.type === 'mousemove') { return; } + var targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]); + var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX; + var pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + // isMoved = true; + swiper.allowClick = false; + if (data.isTouched) { + Utils.extend(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + }); + data.touchStartTime = Utils.now(); + } + return; + } + if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if ( + (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) + || (pageY > touches.startY && swiper.translate >= swiper.minTranslate()) + ) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if ( + (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) + || (pageX > touches.startX && swiper.translate >= swiper.minTranslate()) + ) { + return; + } + } + if (data.isTouchEvent && doc.activeElement) { + if (e.target === doc.activeElement && $(e.target).is(data.formElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + if (e.targetTouches && e.targetTouches.length > 1) { return; } + + touches.currentX = pageX; + touches.currentY = pageY; + + var diffX = touches.currentX - touches.startX; + var diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt((Math.pow( diffX, 2 )) + (Math.pow( diffY, 2 ))) < swiper.params.threshold) { return; } + + if (typeof data.isScrolling === 'undefined') { + var touchAngle; + if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if ((diffX * diffX) + (diffY * diffY) >= 25) { + touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle); + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + + if (!data.isMoved) { + if (params.loop) { + swiper.loopFix(); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + swiper.emit('sliderMove', e); + data.isMoved = true; + + var diff = swiper.isHorizontal() ? diffX : diffY; + touches.diff = diff; + + diff *= params.touchRatio; + if (rtl) { diff = -diff; } + + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + data.currentTranslate = diff + data.startTranslate; + + var disableParentSwiper = true; + var resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) { + disableParentSwiper = false; + if (params.resistance) { data.currentTranslate = (swiper.minTranslate() - 1) + (Math.pow( (-swiper.minTranslate() + data.startTranslate + diff), resistanceRatio )); } + } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { data.currentTranslate = (swiper.maxTranslate() + 1) - (Math.pow( (swiper.maxTranslate() - data.startTranslate - diff), resistanceRatio )); } + } + + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + + if (!params.followFinger || params.cssMode) { return; } + + // Update active index in free mode + if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode) { + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime, + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: Utils.now(), + }); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd (event) { + var swiper = this; + var data = swiper.touchEventsData; + + var params = swiper.params; + var touches = swiper.touches; + var rtl = swiper.rtlTranslate; + var $wrapperEl = swiper.$wrapperEl; + var slidesGrid = swiper.slidesGrid; + var snapGrid = swiper.snapGrid; + var e = event; + if (e.originalEvent) { e = e.originalEvent; } + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + var touchEndTime = Utils.now(); + var timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + swiper.updateClickedSlide(e); + swiper.emit('tap click', e); + if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + + data.lastClickTime = Utils.now(); + Utils.nextTick(function () { + if (!swiper.destroyed) { swiper.allowClick = true; } + }); + + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + + var currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + + if (params.cssMode) { + return; + } + + if (params.freeMode) { + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + + if (params.freeModeMomentum) { + if (data.velocities.length > 1) { + var lastMoveEvent = data.velocities.pop(); + var velocityEvent = data.velocities.pop(); + + var distance = lastMoveEvent.position - velocityEvent.position; + var time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeModeMomentumVelocityRatio; + + data.velocities.length = 0; + var momentumDuration = 1000 * params.freeModeMomentumRatio; + var momentumDistance = swiper.velocity * momentumDuration; + + var newPosition = swiper.translate + momentumDistance; + if (rtl) { newPosition = -newPosition; } + + var doBounce = false; + var afterBouncePosition; + var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio; + var needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeModeMomentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) { needsLoopFix = true; } + } else if (newPosition > swiper.minTranslate()) { + if (params.freeModeMomentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) { needsLoopFix = true; } + } else if (params.freeModeSticky) { + var nextSlide; + for (var j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + swiper.once('transitionEnd', function () { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeModeSticky) { + // If freeModeSticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeModeSticky) { + swiper.slideToClosest(); + return; + } + + if (params.freeModeMomentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + $wrapperEl.transitionEnd(function () { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) { return; } + swiper.emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(function () { + swiper.setTranslate(afterBouncePosition); + $wrapperEl.transitionEnd(function () { + if (!swiper || swiper.destroyed) { return; } + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + $wrapperEl.transitionEnd(function () { + if (!swiper || swiper.destroyed) { return; } + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeModeSticky) { + swiper.slideToClosest(); + return; + } + + if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) { + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + return; + } + + // Find current slide + var stopIndex = 0; + var groupSize = swiper.slidesSizesGrid[0]; + for (var i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) { + var increment$1 = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup); + if (typeof slidesGrid[i + increment$1] !== 'undefined') { + if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment$1]) { + stopIndex = i; + groupSize = slidesGrid[i + increment$1] - slidesGrid[i]; + } + } else if (currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + + // Find current slide size + var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + var increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup); + + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) { swiper.slideTo(stopIndex + increment); } + else { swiper.slideTo(stopIndex); } + } + if (swiper.swipeDirection === 'prev') { + if (ratio > (1 - params.longSwipesRatio)) { swiper.slideTo(stopIndex + increment); } + else { swiper.slideTo(stopIndex); } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize () { + var swiper = this; + + var params = swiper.params; + var el = swiper.el; + + if (el && el.offsetWidth === 0) { return; } + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + var allowSlideNext = swiper.allowSlideNext; + var allowSlidePrev = swiper.allowSlidePrev; + var snapGrid = swiper.snapGrid; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + + swiper.updateSize(); + swiper.updateSlides(); + + swiper.updateSlidesClasses(); + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.run(); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick (e) { + var swiper = this; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) { e.preventDefault(); } + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll () { + var swiper = this; + var wrapperEl = swiper.wrapperEl; + var rtlTranslate = swiper.rtlTranslate; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + if (rtlTranslate) { + swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft); + } else { + swiper.translate = -wrapperEl.scrollLeft; + } + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === -0) { swiper.translate = 0; } + + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + + var newProgress; + var translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff); + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + + swiper.emit('setTranslate', swiper.translate, false); + } + + var dummyEventAttached = false; + function dummyEventListener() {} + + function attachEvents() { + var swiper = this; + var params = swiper.params; + var touchEvents = swiper.touchEvents; + var el = swiper.el; + var wrapperEl = swiper.wrapperEl; + + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + + swiper.onClick = onClick.bind(swiper); + + var capture = !!params.nested; + + // Touch Events + if (!Support.touch && Support.pointerEvents) { + el.addEventListener(touchEvents.start, swiper.onTouchStart, false); + doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture); + doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false); + } else { + if (Support.touch) { + var passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); + el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture: capture } : capture); + el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); + if (touchEvents.cancel) { + el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener); + } + if (!dummyEventAttached) { + doc.addEventListener('touchstart', dummyEventListener); + dummyEventAttached = true; + } + } + if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { + el.addEventListener('mousedown', swiper.onTouchStart, false); + doc.addEventListener('mousemove', swiper.onTouchMove, capture); + doc.addEventListener('mouseup', swiper.onTouchEnd, false); + } + } + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el.addEventListener('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl.addEventListener('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true); + } else { + swiper.on('observerUpdate', onResize, true); + } + } + + function detachEvents() { + var swiper = this; + + var params = swiper.params; + var touchEvents = swiper.touchEvents; + var el = swiper.el; + var wrapperEl = swiper.wrapperEl; + + var capture = !!params.nested; + + // Touch Events + if (!Support.touch && Support.pointerEvents) { + el.removeEventListener(touchEvents.start, swiper.onTouchStart, false); + doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); + doc.removeEventListener(touchEvents.end, swiper.onTouchEnd, false); + } else { + if (Support.touch) { + var passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); + el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); + el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); + if (touchEvents.cancel) { + el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener); + } + } + if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { + el.removeEventListener('mousedown', swiper.onTouchStart, false); + doc.removeEventListener('mousemove', swiper.onTouchMove, capture); + doc.removeEventListener('mouseup', swiper.onTouchEnd, false); + } + } + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el.removeEventListener('click', swiper.onClick, true); + } + + if (params.cssMode) { + wrapperEl.removeEventListener('scroll', swiper.onScroll); + } + + // Resize handler + swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize); + } + + var events = { + attachEvents: attachEvents, + detachEvents: detachEvents, + }; + + function setBreakpoint () { + var swiper = this; + var activeIndex = swiper.activeIndex; + var initialized = swiper.initialized; + var loopedSlides = swiper.loopedSlides; if ( loopedSlides === void 0 ) loopedSlides = 0; + var params = swiper.params; + var $el = swiper.$el; + var breakpoints = params.breakpoints; + if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) { return; } + + // Get breakpoint for window width and update parameters + var breakpoint = swiper.getBreakpoint(breakpoints); + + if (breakpoint && swiper.currentBreakpoint !== breakpoint) { + var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + if (breakpointOnlyParams) { + ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) { + var paramValue = breakpointOnlyParams[param]; + if (typeof paramValue === 'undefined') { return; } + if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) { + breakpointOnlyParams[param] = 'auto'; + } else if (param === 'slidesPerView') { + breakpointOnlyParams[param] = parseFloat(paramValue); + } else { + breakpointOnlyParams[param] = parseInt(paramValue, 10); + } + }); + } + + var breakpointParams = breakpointOnlyParams || swiper.originalParams; + var wasMultiRow = params.slidesPerColumn > 1; + var isMultiRow = breakpointParams.slidesPerColumn > 1; + if (wasMultiRow && !isMultiRow) { + $el.removeClass(((params.containerModifierClass) + "multirow " + (params.containerModifierClass) + "multirow-column")); + } else if (!wasMultiRow && isMultiRow) { + $el.addClass(((params.containerModifierClass) + "multirow")); + if (breakpointParams.slidesPerColumnFill === 'column') { + $el.addClass(((params.containerModifierClass) + "multirow-column")); + } + } + + var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + + if (directionChanged && initialized) { + swiper.changeDirection(); + } + + Utils.extend(swiper.params, breakpointParams); + + Utils.extend(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + }); + + swiper.currentBreakpoint = breakpoint; + + if (needsReLoop && initialized) { + swiper.loopDestroy(); + swiper.loopCreate(); + swiper.updateSlides(); + swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false); + } + + swiper.emit('breakpoint', breakpointParams); + } + } + + function getBreakpoint (breakpoints) { + // Get breakpoint for window width + if (!breakpoints) { return undefined; } + var breakpoint = false; + + var points = Object.keys(breakpoints).map(function (point) { + if (typeof point === 'string' && point.indexOf('@') === 0) { + var minRatio = parseFloat(point.substr(1)); + var value = win.innerHeight * minRatio; + return { value: value, point: point }; + } + return { value: point, point: point }; + }); + + points.sort(function (a, b) { return parseInt(a.value, 10) - parseInt(b.value, 10); }); + for (var i = 0; i < points.length; i += 1) { + var ref = points[i]; + var point = ref.point; + var value = ref.value; + if (value <= win.innerWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint }; + + function addClasses () { + var swiper = this; + var classNames = swiper.classNames; + var params = swiper.params; + var rtl = swiper.rtl; + var $el = swiper.$el; + var suffixes = []; + + suffixes.push('initialized'); + suffixes.push(params.direction); + + if (params.freeMode) { + suffixes.push('free-mode'); + } + if (params.autoHeight) { + suffixes.push('autoheight'); + } + if (rtl) { + suffixes.push('rtl'); + } + if (params.slidesPerColumn > 1) { + suffixes.push('multirow'); + if (params.slidesPerColumnFill === 'column') { + suffixes.push('multirow-column'); + } + } + if (Device.android) { + suffixes.push('android'); + } + if (Device.ios) { + suffixes.push('ios'); + } + + if (params.cssMode) { + suffixes.push('css-mode'); + } + + suffixes.forEach(function (suffix) { + classNames.push(params.containerModifierClass + suffix); + }); + + $el.addClass(classNames.join(' ')); + } + + function removeClasses () { + var swiper = this; + var $el = swiper.$el; + var classNames = swiper.classNames; + + $el.removeClass(classNames.join(' ')); + } + + var classes = { addClasses: addClasses, removeClasses: removeClasses }; + + function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) { + var image; + function onReady() { + if (callback) { callback(); } + } + if (!imageEl.complete || !checkForComplete) { + if (src) { + image = new win.Image(); + image.onload = onReady; + image.onerror = onReady; + if (sizes) { + image.sizes = sizes; + } + if (srcset) { + image.srcset = srcset; + } + if (src) { + image.src = src; + } + } else { + onReady(); + } + } else { + // image already loaded... + onReady(); + } + } + + function preloadImages () { + var swiper = this; + swiper.imagesToLoad = swiper.$el.find('img'); + function onReady() { + if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) { return; } + if (swiper.imagesLoaded !== undefined) { swiper.imagesLoaded += 1; } + if (swiper.imagesLoaded === swiper.imagesToLoad.length) { + if (swiper.params.updateOnImagesReady) { swiper.update(); } + swiper.emit('imagesReady'); + } + } + for (var i = 0; i < swiper.imagesToLoad.length; i += 1) { + var imageEl = swiper.imagesToLoad[i]; + swiper.loadImage( + imageEl, + imageEl.currentSrc || imageEl.getAttribute('src'), + imageEl.srcset || imageEl.getAttribute('srcset'), + imageEl.sizes || imageEl.getAttribute('sizes'), + true, + onReady + ); + } + } + + var images = { + loadImage: loadImage, + preloadImages: preloadImages, + }; + + function checkOverflow() { + var swiper = this; + var params = swiper.params; + var wasLocked = swiper.isLocked; + var lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length); + + if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) { + swiper.isLocked = lastSlidePosition <= swiper.size; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + + swiper.allowSlideNext = !swiper.isLocked; + swiper.allowSlidePrev = !swiper.isLocked; + + // events + if (wasLocked !== swiper.isLocked) { swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); } + + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + swiper.navigation.update(); + } + } + + var checkOverflow$1 = { checkOverflow: checkOverflow }; + + var defaults = { + init: true, + direction: 'horizontal', + touchEventsTarget: 'container', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + // + preventInteractionOnTransition: false, + + // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + + // Free mode + freeMode: false, + freeModeMomentum: true, + freeModeMomentumRatio: 1, + freeModeMomentumBounce: true, + freeModeMomentumBounceRatio: 1, + freeModeMomentumVelocityRatio: 1, + freeModeSticky: false, + freeModeMinimumVelocity: 0.02, + + // Autoheight + autoHeight: false, + + // Set wrapper width + setWrapperSize: false, + + // Virtual Translate + virtualTranslate: false, + + // Effects + effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerColumnFill: 'column', + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, // in px + slidesOffsetAfter: 0, // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + + // Disable swiper and hide navigation when container not overflow + watchOverflow: false, + + // Round length + roundLengths: false, + + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 0, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + + // Unique Navigation Elements + uniqueNavElements: true, + + // Resistance + resistance: true, + resistanceRatio: 0.85, + + // Progress + watchSlidesProgress: false, + watchSlidesVisibility: false, + + // Cursor + grabCursor: false, + + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + + // Images + preloadImages: true, + updateOnImagesReady: true, + + // loop + loop: false, + loopAdditionalSlides: 0, + loopedSlides: null, + loopFillGroupWithBlank: false, + + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + + // Passive Listeners + passiveListeners: true, + + // NS + containerModifierClass: 'swiper-container-', // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-invisible-blank', + slideActiveClass: 'swiper-slide-active', + slideDuplicateActiveClass: 'swiper-slide-duplicate-active', + slideVisibleClass: 'swiper-slide-visible', + slideDuplicateClass: 'swiper-slide-duplicate', + slideNextClass: 'swiper-slide-next', + slideDuplicateNextClass: 'swiper-slide-duplicate-next', + slidePrevClass: 'swiper-slide-prev', + slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', + wrapperClass: 'swiper-wrapper', + + // Callbacks + runCallbacksOnInit: true, + }; + + /* eslint no-param-reassign: "off" */ + + var prototypes = { + update: update, + translate: translate, + transition: transition$1, + slide: slide, + loop: loop, + grabCursor: grabCursor, + manipulation: manipulation, + events: events, + breakpoints: breakpoints, + checkOverflow: checkOverflow$1, + classes: classes, + images: images, + }; + + var extendedDefaults = {}; + + var Swiper = /*@__PURE__*/(function (SwiperClass) { + function Swiper() { + var assign; + + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + var el; + var params; + if (args.length === 1 && args[0].constructor && args[0].constructor === Object) { + params = args[0]; + } else { + (assign = args, el = assign[0], params = assign[1]); + } + if (!params) { params = {}; } + + params = Utils.extend({}, params); + if (el && !params.el) { params.el = el; } + + SwiperClass.call(this, params); + + Object.keys(prototypes).forEach(function (prototypeGroup) { + Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) { + if (!Swiper.prototype[protoMethod]) { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + } + }); + }); + + // Swiper Instance + var swiper = this; + if (typeof swiper.modules === 'undefined') { + swiper.modules = {}; + } + Object.keys(swiper.modules).forEach(function (moduleName) { + var module = swiper.modules[moduleName]; + if (module.params) { + var moduleParamName = Object.keys(module.params)[0]; + var moduleParams = module.params[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { return; } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { return; } + if (params[moduleParamName] === true) { + params[moduleParamName] = { enabled: true }; + } + if ( + typeof params[moduleParamName] === 'object' + && !('enabled' in params[moduleParamName]) + ) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) { params[moduleParamName] = { enabled: false }; } + } + }); + + // Extend defaults with modules params + var swiperParams = Utils.extend({}, defaults); + swiper.useModulesParams(swiperParams); + + // Extend defaults with passed params + swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = Utils.extend({}, swiper.params); + swiper.passedParams = Utils.extend({}, params); + + // Save Dom lib + swiper.$ = $; + + // Find el + var $el = $(swiper.params.el); + el = $el[0]; + + if (!el) { + return undefined; + } + + if ($el.length > 1) { + var swipers = []; + $el.each(function (index, containerEl) { + var newParams = Utils.extend({}, params, { el: containerEl }); + swipers.push(new Swiper(newParams)); + }); + return swipers; + } + + el.swiper = swiper; + $el.data('swiper', swiper); + + // Find Wrapper + var $wrapperEl; + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + $wrapperEl = $(el.shadowRoot.querySelector(("." + (swiper.params.wrapperClass)))); + // Children needs to return slot items + $wrapperEl.children = function (options) { return $el.children(options); }; + } else { + $wrapperEl = $el.children(("." + (swiper.params.wrapperClass))); + } + // Extend Swiper + Utils.extend(swiper, { + $el: $el, + el: el, + $wrapperEl: $wrapperEl, + wrapperEl: $wrapperEl[0], + + // Classes + classNames: [], + + // Slides + slides: $(), + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + + // isDirection + isHorizontal: function isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical: function isVertical() { + return swiper.params.direction === 'vertical'; + }, + // RTL + rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), + wrongRTL: $wrapperEl.css('display') === '-webkit-box', + + // Indexes + activeIndex: 0, + realIndex: 0, + + // + isBeginning: true, + isEnd: false, + + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + + // Touch Events + touchEvents: (function touchEvents() { + var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel']; + var desktop = ['mousedown', 'mousemove', 'mouseup']; + if (Support.pointerEvents) { + desktop = ['pointerdown', 'pointermove', 'pointerup']; + } + swiper.touchEventsTouch = { + start: touch[0], + move: touch[1], + end: touch[2], + cancel: touch[3], + }; + swiper.touchEventsDesktop = { + start: desktop[0], + move: desktop[1], + end: desktop[2], + }; + return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; + }()), + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + formElements: 'input, select, option, textarea, button, video, label', + // Last click time + lastClickTime: Utils.now(), + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + isTouchEvent: undefined, + startMoving: undefined, + }, + + // Clicks + allowClick: true, + + // Touches + allowTouchMove: swiper.params.allowTouchMove, + + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0, + }, + + // Images + imagesToLoad: [], + imagesLoaded: 0, + + }); + + // Install Modules + swiper.useModules(); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + return swiper; + } + + if ( SwiperClass ) Swiper.__proto__ = SwiperClass; + Swiper.prototype = Object.create( SwiperClass && SwiperClass.prototype ); + Swiper.prototype.constructor = Swiper; + + var staticAccessors = { extendedDefaults: { configurable: true },defaults: { configurable: true },Class: { configurable: true },$: { configurable: true } }; + + Swiper.prototype.slidesPerViewDynamic = function slidesPerViewDynamic () { + var swiper = this; + var params = swiper.params; + var slides = swiper.slides; + var slidesGrid = swiper.slidesGrid; + var swiperSize = swiper.size; + var activeIndex = swiper.activeIndex; + var spv = 1; + if (params.centeredSlides) { + var slideSize = slides[activeIndex].swiperSlideSize; + var breakLoop; + for (var i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) { breakLoop = true; } + } + } + for (var i$1 = activeIndex - 1; i$1 >= 0; i$1 -= 1) { + if (slides[i$1] && !breakLoop) { + slideSize += slides[i$1].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) { breakLoop = true; } + } + } + } else { + for (var i$2 = activeIndex + 1; i$2 < slides.length; i$2 += 1) { + if (slidesGrid[i$2] - slidesGrid[activeIndex] < swiperSize) { + spv += 1; + } + } + } + return spv; + }; + + Swiper.prototype.update = function update () { + var swiper = this; + if (!swiper || swiper.destroyed) { return; } + var snapGrid = swiper.snapGrid; + var params = swiper.params; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + + function setTranslate() { + var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + var translated; + if (swiper.params.freeMode) { + setTranslate(); + if (swiper.params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { + translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + }; + + Swiper.prototype.changeDirection = function changeDirection (newDirection, needUpdate) { + if ( needUpdate === void 0 ) needUpdate = true; + + var swiper = this; + var currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) { + return swiper; + } + + swiper.$el + .removeClass(("" + (swiper.params.containerModifierClass) + currentDirection)) + .addClass(("" + (swiper.params.containerModifierClass) + newDirection)); + + swiper.params.direction = newDirection; + + swiper.slides.each(function (slideIndex, slideEl) { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + + swiper.emit('changeDirection'); + if (needUpdate) { swiper.update(); } + + return swiper; + }; + + Swiper.prototype.init = function init () { + var swiper = this; + if (swiper.initialized) { return; } + + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + + if (swiper.params.preloadImages) { + swiper.preloadImages(); + } + + // Slide To Initial Slide + if (swiper.params.loop) { + swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit); + } + + // Attach events + swiper.attachEvents(); + + // Init Flag + swiper.initialized = true; + + // Emit + swiper.emit('init'); + }; + + Swiper.prototype.destroy = function destroy (deleteInstance, cleanStyles) { + if ( deleteInstance === void 0 ) deleteInstance = true; + if ( cleanStyles === void 0 ) cleanStyles = true; + + var swiper = this; + var params = swiper.params; + var $el = swiper.$el; + var $wrapperEl = swiper.$wrapperEl; + var slides = swiper.slides; + + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + $el.removeAttr('style'); + $wrapperEl.removeAttr('style'); + if (slides && slides.length) { + slides + .removeClass([ + params.slideVisibleClass, + params.slideActiveClass, + params.slideNextClass, + params.slidePrevClass ].join(' ')) + .removeAttr('style') + .removeAttr('data-swiper-slide-index'); + } + } + + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(function (eventName) { + swiper.off(eventName); + }); + + if (deleteInstance !== false) { + swiper.$el[0].swiper = null; + swiper.$el.data('swiper', null); + Utils.deleteProps(swiper); + } + swiper.destroyed = true; + + return null; + }; + + Swiper.extendDefaults = function extendDefaults (newDefaults) { + Utils.extend(extendedDefaults, newDefaults); + }; + + staticAccessors.extendedDefaults.get = function () { + return extendedDefaults; + }; + + staticAccessors.defaults.get = function () { + return defaults; + }; + + staticAccessors.Class.get = function () { + return SwiperClass; + }; + + staticAccessors.$.get = function () { + return $; + }; + + Object.defineProperties( Swiper, staticAccessors ); + + return Swiper; + }(SwiperClass)); + + var Device$1 = { + name: 'device', + proto: { + device: Device, + }, + static: { + device: Device, + }, + }; + + var Support$1 = { + name: 'support', + proto: { + support: Support, + }, + static: { + support: Support, + }, + }; + + var Browser = (function Browser() { + function isSafari() { + var ua = win.navigator.userAgent.toLowerCase(); + return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0); + } + return { + isEdge: !!win.navigator.userAgent.match(/Edge/g), + isSafari: isSafari(), + isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent), + }; + }()); + + var Browser$1 = { + name: 'browser', + proto: { + browser: Browser, + }, + static: { + browser: Browser, + }, + }; + + var Resize = { + name: 'resize', + create: function create() { + var swiper = this; + Utils.extend(swiper, { + resize: { + resizeHandler: function resizeHandler() { + if (!swiper || swiper.destroyed || !swiper.initialized) { return; } + swiper.emit('beforeResize'); + swiper.emit('resize'); + }, + orientationChangeHandler: function orientationChangeHandler() { + if (!swiper || swiper.destroyed || !swiper.initialized) { return; } + swiper.emit('orientationchange'); + }, + }, + }); + }, + on: { + init: function init() { + var swiper = this; + // Emit resize + win.addEventListener('resize', swiper.resize.resizeHandler); + + // Emit orientationchange + win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler); + }, + destroy: function destroy() { + var swiper = this; + win.removeEventListener('resize', swiper.resize.resizeHandler); + win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler); + }, + }, + }; + + var Observer = { + func: win.MutationObserver || win.WebkitMutationObserver, + attach: function attach(target, options) { + if ( options === void 0 ) options = {}; + + var swiper = this; + + var ObserverFunc = Observer.func; + var observer = new ObserverFunc(function (mutations) { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (mutations.length === 1) { + swiper.emit('observerUpdate', mutations[0]); + return; + } + var observerUpdate = function observerUpdate() { + swiper.emit('observerUpdate', mutations[0]); + }; + + if (win.requestAnimationFrame) { + win.requestAnimationFrame(observerUpdate); + } else { + win.setTimeout(observerUpdate, 0); + } + }); + + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData, + }); + + swiper.observer.observers.push(observer); + }, + init: function init() { + var swiper = this; + if (!Support.observer || !swiper.params.observer) { return; } + if (swiper.params.observeParents) { + var containerParents = swiper.$el.parents(); + for (var i = 0; i < containerParents.length; i += 1) { + swiper.observer.attach(containerParents[i]); + } + } + // Observe container + swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren }); + + // Observe wrapper + swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false }); + }, + destroy: function destroy() { + var swiper = this; + swiper.observer.observers.forEach(function (observer) { + observer.disconnect(); + }); + swiper.observer.observers = []; + }, + }; + + var Observer$1 = { + name: 'observer', + params: { + observer: false, + observeParents: false, + observeSlideChildren: false, + }, + create: function create() { + var swiper = this; + Utils.extend(swiper, { + observer: { + init: Observer.init.bind(swiper), + attach: Observer.attach.bind(swiper), + destroy: Observer.destroy.bind(swiper), + observers: [], + }, + }); + }, + on: { + init: function init() { + var swiper = this; + swiper.observer.init(); + }, + destroy: function destroy() { + var swiper = this; + swiper.observer.destroy(); + }, + }, + }; + + var Virtual = { + update: function update(force) { + var swiper = this; + var ref = swiper.params; + var slidesPerView = ref.slidesPerView; + var slidesPerGroup = ref.slidesPerGroup; + var centeredSlides = ref.centeredSlides; + var ref$1 = swiper.params.virtual; + var addSlidesBefore = ref$1.addSlidesBefore; + var addSlidesAfter = ref$1.addSlidesAfter; + var ref$2 = swiper.virtual; + var previousFrom = ref$2.from; + var previousTo = ref$2.to; + var slides = ref$2.slides; + var previousSlidesGrid = ref$2.slidesGrid; + var renderSlide = ref$2.renderSlide; + var previousOffset = ref$2.offset; + swiper.updateActiveIndex(); + var activeIndex = swiper.activeIndex || 0; + + var offsetProp; + if (swiper.rtlTranslate) { offsetProp = 'right'; } + else { offsetProp = swiper.isHorizontal() ? 'left' : 'top'; } + + var slidesAfter; + var slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore; + slidesBefore = slidesPerGroup + addSlidesAfter; + } + var from = Math.max((activeIndex || 0) - slidesBefore, 0); + var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1); + var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + + Utils.extend(swiper.virtual, { + from: from, + to: to, + offset: offset, + slidesGrid: swiper.slidesGrid, + }); + + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + if (swiper.lazy && swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + } + + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.css(offsetProp, (offset + "px")); + } + swiper.updateProgress(); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset: offset, + from: from, + to: to, + slides: (function getSlides() { + var slidesToRender = []; + for (var i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }()), + }); + onRendered(); + return; + } + var prependIndexes = []; + var appendIndexes = []; + if (force) { + swiper.$wrapperEl.find(("." + (swiper.params.slideClass))).remove(); + } else { + for (var i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + swiper.$wrapperEl.find(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + i + "\"]")).remove(); + } + } + } + for (var i$1 = 0; i$1 < slides.length; i$1 += 1) { + if (i$1 >= from && i$1 <= to) { + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(i$1); + } else { + if (i$1 > previousTo) { appendIndexes.push(i$1); } + if (i$1 < previousFrom) { prependIndexes.push(i$1); } + } + } + } + appendIndexes.forEach(function (index) { + swiper.$wrapperEl.append(renderSlide(slides[index], index)); + }); + prependIndexes.sort(function (a, b) { return b - a; }).forEach(function (index) { + swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); + }); + swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, (offset + "px")); + onRendered(); + }, + renderSlide: function renderSlide(slide, index) { + var swiper = this; + var params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + var $slideEl = params.renderSlide + ? $(params.renderSlide.call(swiper, slide, index)) + : $(("
      " + slide + "
      ")); + if (!$slideEl.attr('data-swiper-slide-index')) { $slideEl.attr('data-swiper-slide-index', index); } + if (params.cache) { swiper.virtual.cache[index] = $slideEl; } + return $slideEl; + }, + appendSlide: function appendSlide(slides) { + var swiper = this; + if (typeof slides === 'object' && 'length' in slides) { + for (var i = 0; i < slides.length; i += 1) { + if (slides[i]) { swiper.virtual.slides.push(slides[i]); } + } + } else { + swiper.virtual.slides.push(slides); + } + swiper.virtual.update(true); + }, + prependSlide: function prependSlide(slides) { + var swiper = this; + var activeIndex = swiper.activeIndex; + var newActiveIndex = activeIndex + 1; + var numberOfNewSlides = 1; + + if (Array.isArray(slides)) { + for (var i = 0; i < slides.length; i += 1) { + if (slides[i]) { swiper.virtual.slides.unshift(slides[i]); } + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + var cache = swiper.virtual.cache; + var newCache = {}; + Object.keys(cache).forEach(function (cachedIndex) { + var $cachedEl = cache[cachedIndex]; + var cachedElIndex = $cachedEl.attr('data-swiper-slide-index'); + if (cachedElIndex) { + $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl; + }); + swiper.virtual.cache = newCache; + } + swiper.virtual.update(true); + swiper.slideTo(newActiveIndex, 0); + }, + removeSlide: function removeSlide(slidesIndexes) { + var swiper = this; + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) { return; } + var activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) { + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + } + if (slidesIndexes[i] < activeIndex) { activeIndex -= 1; } + activeIndex = Math.max(activeIndex, 0); + } + } else { + swiper.virtual.slides.splice(slidesIndexes, 1); + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + } + if (slidesIndexes < activeIndex) { activeIndex -= 1; } + activeIndex = Math.max(activeIndex, 0); + } + swiper.virtual.update(true); + swiper.slideTo(activeIndex, 0); + }, + removeAllSlides: function removeAllSlides() { + var swiper = this; + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + swiper.virtual.update(true); + swiper.slideTo(0, 0); + }, + }; + + var Virtual$1 = { + name: 'virtual', + params: { + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + addSlidesBefore: 0, + addSlidesAfter: 0, + }, + }, + create: function create() { + var swiper = this; + Utils.extend(swiper, { + virtual: { + update: Virtual.update.bind(swiper), + appendSlide: Virtual.appendSlide.bind(swiper), + prependSlide: Virtual.prependSlide.bind(swiper), + removeSlide: Virtual.removeSlide.bind(swiper), + removeAllSlides: Virtual.removeAllSlides.bind(swiper), + renderSlide: Virtual.renderSlide.bind(swiper), + slides: swiper.params.virtual.slides, + cache: {}, + }, + }); + }, + on: { + beforeInit: function beforeInit() { + var swiper = this; + if (!swiper.params.virtual.enabled) { return; } + swiper.classNames.push(((swiper.params.containerModifierClass) + "virtual")); + var overwriteParams = { + watchSlidesProgress: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + + if (!swiper.params.initialSlide) { + swiper.virtual.update(); + } + }, + setTranslate: function setTranslate() { + var swiper = this; + if (!swiper.params.virtual.enabled) { return; } + swiper.virtual.update(); + }, + }, + }; + + var Keyboard = { + handle: function handle(event) { + var swiper = this; + var rtl = swiper.rtlTranslate; + var e = event; + if (e.originalEvent) { e = e.originalEvent; } // jquery fix + var kc = e.keyCode || e.charCode; + // Directions locks + if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) { + return false; + } + if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) { + var inView = false; + // Check that swiper should be inside of visible area of window + if (swiper.$el.parents(("." + (swiper.params.slideClass))).length > 0 && swiper.$el.parents(("." + (swiper.params.slideActiveClass))).length === 0) { + return undefined; + } + var windowWidth = win.innerWidth; + var windowHeight = win.innerHeight; + var swiperOffset = swiper.$el.offset(); + if (rtl) { swiperOffset.left -= swiper.$el[0].scrollLeft; } + var swiperCoord = [ + [swiperOffset.left, swiperOffset.top], + [swiperOffset.left + swiper.width, swiperOffset.top], + [swiperOffset.left, swiperOffset.top + swiper.height], + [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height] ]; + for (var i = 0; i < swiperCoord.length; i += 1) { + var point = swiperCoord[i]; + if ( + point[0] >= 0 && point[0] <= windowWidth + && point[1] >= 0 && point[1] <= windowHeight + ) { + inView = true; + } + } + if (!inView) { return undefined; } + } + if (swiper.isHorizontal()) { + if (kc === 33 || kc === 34 || kc === 37 || kc === 39) { + if (e.preventDefault) { e.preventDefault(); } + else { e.returnValue = false; } + } + if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) { swiper.slideNext(); } + if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) { swiper.slidePrev(); } + } else { + if (kc === 33 || kc === 34 || kc === 38 || kc === 40) { + if (e.preventDefault) { e.preventDefault(); } + else { e.returnValue = false; } + } + if (kc === 34 || kc === 40) { swiper.slideNext(); } + if (kc === 33 || kc === 38) { swiper.slidePrev(); } + } + swiper.emit('keyPress', kc); + return undefined; + }, + enable: function enable() { + var swiper = this; + if (swiper.keyboard.enabled) { return; } + $(doc).on('keydown', swiper.keyboard.handle); + swiper.keyboard.enabled = true; + }, + disable: function disable() { + var swiper = this; + if (!swiper.keyboard.enabled) { return; } + $(doc).off('keydown', swiper.keyboard.handle); + swiper.keyboard.enabled = false; + }, + }; + + var Keyboard$1 = { + name: 'keyboard', + params: { + keyboard: { + enabled: false, + onlyInViewport: true, + }, + }, + create: function create() { + var swiper = this; + Utils.extend(swiper, { + keyboard: { + enabled: false, + enable: Keyboard.enable.bind(swiper), + disable: Keyboard.disable.bind(swiper), + handle: Keyboard.handle.bind(swiper), + }, + }); + }, + on: { + init: function init() { + var swiper = this; + if (swiper.params.keyboard.enabled) { + swiper.keyboard.enable(); + } + }, + destroy: function destroy() { + var swiper = this; + if (swiper.keyboard.enabled) { + swiper.keyboard.disable(); + } + }, + }, + }; + + function isEventSupported() { + var eventName = 'onwheel'; + var isSupported = eventName in doc; + + if (!isSupported) { + var element = doc.createElement('div'); + element.setAttribute(eventName, 'return;'); + isSupported = typeof element[eventName] === 'function'; + } + + if (!isSupported + && doc.implementation + && doc.implementation.hasFeature + // always returns true in newer browsers as per the standard. + // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature + && doc.implementation.hasFeature('', '') !== true + ) { + // This is the only way to test support for the `wheel` event in IE9+. + isSupported = doc.implementation.hasFeature('Events.wheel', '3.0'); + } + + return isSupported; + } + var Mousewheel = { + lastScrollTime: Utils.now(), + lastEventBeforeSnap: undefined, + recentWheelEvents: [], + event: function event() { + if (win.navigator.userAgent.indexOf('firefox') > -1) { return 'DOMMouseScroll'; } + return isEventSupported() ? 'wheel' : 'mousewheel'; + }, + normalize: function normalize(e) { + // Reasonable defaults + var PIXEL_STEP = 10; + var LINE_HEIGHT = 40; + var PAGE_HEIGHT = 800; + + var sX = 0; + var sY = 0; // spinX, spinY + var pX = 0; + var pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + + if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = (pX < 1) ? -1 : 1; + } + if (pY && !sY) { + sY = (pY < 1) ? -1 : 1; + } + + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY, + }; + }, + handleMouseEnter: function handleMouseEnter() { + var swiper = this; + swiper.mouseEntered = true; + }, + handleMouseLeave: function handleMouseLeave() { + var swiper = this; + swiper.mouseEntered = false; + }, + handle: function handle(event) { + var e = event; + var swiper = this; + var params = swiper.params.mousewheel; + + if (swiper.params.cssMode) { + e.preventDefault(); + } + + var target = swiper.$el; + if (swiper.params.mousewheel.eventsTarged !== 'container') { + target = $(swiper.params.mousewheel.eventsTarged); + } + if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) { return true; } + + if (e.originalEvent) { e = e.originalEvent; } // jquery fix + var delta = 0; + var rtlFactor = swiper.rtlTranslate ? -1 : 1; + + var data = Mousewheel.normalize(e); + + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) { delta = data.pixelX * rtlFactor; } + else { return true; } + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) { delta = data.pixelY; } + else { return true; } + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + + if (delta === 0) { return true; } + + if (params.invert) { delta = -delta; } + + if (!swiper.params.freeMode) { + // Register the new event in a variable which stores the relevant data + var newEvent = { + time: Utils.now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event, + }; + + // Keep the most recent events + var recentWheelEvents = swiper.mousewheel.recentWheelEvents; + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + var prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta) { + swiper.mousewheel.animateSlider(newEvent); + } + } else { + swiper.mousewheel.animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (swiper.mousewheel.releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + var newEvent$1 = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) }; + var ref = swiper.mousewheel; + var lastEventBeforeSnap = ref.lastEventBeforeSnap; + var ignoreWheelEvents = lastEventBeforeSnap + && newEvent$1.time < lastEventBeforeSnap.time + 500 + && newEvent$1.delta <= lastEventBeforeSnap.delta + && newEvent$1.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + swiper.mousewheel.lastEventBeforeSnap = undefined; + + if (swiper.params.loop) { + swiper.loopFix(); + } + var position = swiper.getTranslate() + (delta * params.sensitivity); + var wasBeginning = swiper.isBeginning; + var wasEnd = swiper.isEnd; + + if (position >= swiper.minTranslate()) { position = swiper.minTranslate(); } + if (position <= swiper.maxTranslate()) { position = swiper.maxTranslate(); } + + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + + if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) { + swiper.updateSlidesClasses(); + } + + if (swiper.params.freeModeSticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momuntum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(swiper.mousewheel.timeout); + swiper.mousewheel.timeout = undefined; + var recentWheelEvents$1 = swiper.mousewheel.recentWheelEvents; + if (recentWheelEvents$1.length >= 15) { + recentWheelEvents$1.shift(); // only store the last N events + } + var prevEvent$1 = recentWheelEvents$1.length ? recentWheelEvents$1[recentWheelEvents$1.length - 1] : undefined; + var firstEvent = recentWheelEvents$1[0]; + recentWheelEvents$1.push(newEvent$1); + if (prevEvent$1 && (newEvent$1.delta > prevEvent$1.delta || newEvent$1.direction !== prevEvent$1.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents$1.splice(0); + } else if (recentWheelEvents$1.length >= 15 + && newEvent$1.time - firstEvent.time < 500 + && firstEvent.delta - newEvent$1.delta >= 1 + && newEvent$1.delta <= 6 + ) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + var snapToThreshold = delta > 0 ? 0.8 : 0.2; + swiper.mousewheel.lastEventBeforeSnap = newEvent$1; + recentWheelEvents$1.splice(0); + swiper.mousewheel.timeout = Utils.nextTick(function () { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + if (!swiper.mousewheel.timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + swiper.mousewheel.timeout = Utils.nextTick(function () { + var snapToThreshold = 0.5; + swiper.mousewheel.lastEventBeforeSnap = newEvent$1; + recentWheelEvents$1.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) { swiper.emit('scroll', e); } + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) { swiper.autoplay.stop(); } + // Return page scroll on edge positions + if (position === swiper.minTranslate() || position === swiper.maxTranslate()) { return true; } + } + } + + if (e.preventDefault) { e.preventDefault(); } + else { e.returnValue = false; } + return false; + }, + animateSlider: function animateSlider(newEvent) { + var swiper = this; + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + swiper.emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + swiper.emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + swiper.mousewheel.lastScrollTime = (new win.Date()).getTime(); + // Return false as a default + return false; + }, + releaseScroll: function releaseScroll(newEvent) { + var swiper = this; + var params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + }, + enable: function enable() { + var swiper = this; + var event = Mousewheel.event(); + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle); + return true; + } + if (!event) { return false; } + if (swiper.mousewheel.enabled) { return false; } + var target = swiper.$el; + if (swiper.params.mousewheel.eventsTarged !== 'container') { + target = $(swiper.params.mousewheel.eventsTarged); + } + target.on('mouseenter', swiper.mousewheel.handleMouseEnter); + target.on('mouseleave', swiper.mousewheel.handleMouseLeave); + target.on(event, swiper.mousewheel.handle); + swiper.mousewheel.enabled = true; + return true; + }, + disable: function disable() { + var swiper = this; + var event = Mousewheel.event(); + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle); + return true; + } + if (!event) { return false; } + if (!swiper.mousewheel.enabled) { return false; } + var target = swiper.$el; + if (swiper.params.mousewheel.eventsTarged !== 'container') { + target = $(swiper.params.mousewheel.eventsTarged); + } + target.off(event, swiper.mousewheel.handle); + swiper.mousewheel.enabled = false; + return true; + }, + }; + + var Mousewheel$1 = { + name: 'mousewheel', + params: { + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarged: 'container', + }, + }, + create: function create() { + var swiper = this; + Utils.extend(swiper, { + mousewheel: { + enabled: false, + enable: Mousewheel.enable.bind(swiper), + disable: Mousewheel.disable.bind(swiper), + handle: Mousewheel.handle.bind(swiper), + handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper), + handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper), + animateSlider: Mousewheel.animateSlider.bind(swiper), + releaseScroll: Mousewheel.releaseScroll.bind(swiper), + lastScrollTime: Utils.now(), + lastEventBeforeSnap: undefined, + recentWheelEvents: [], + }, + }); + }, + on: { + init: function init() { + var swiper = this; + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + swiper.mousewheel.disable(); + } + if (swiper.params.mousewheel.enabled) { swiper.mousewheel.enable(); } + }, + destroy: function destroy() { + var swiper = this; + if (swiper.params.cssMode) { + swiper.mousewheel.enable(); + } + if (swiper.mousewheel.enabled) { swiper.mousewheel.disable(); } + }, + }, + }; + + var Navigation = { + update: function update() { + // Update Navigation Buttons + var swiper = this; + var params = swiper.params.navigation; + + if (swiper.params.loop) { return; } + var ref = swiper.navigation; + var $nextEl = ref.$nextEl; + var $prevEl = ref.$prevEl; + + if ($prevEl && $prevEl.length > 0) { + if (swiper.isBeginning) { + $prevEl.addClass(params.disabledClass); + } else { + $prevEl.removeClass(params.disabledClass); + } + $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + } + if ($nextEl && $nextEl.length > 0) { + if (swiper.isEnd) { + $nextEl.addClass(params.disabledClass); + } else { + $nextEl.removeClass(params.disabledClass); + } + $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + } + }, + onPrevClick: function onPrevClick(e) { + var swiper = this; + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop) { return; } + swiper.slidePrev(); + }, + onNextClick: function onNextClick(e) { + var swiper = this; + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop) { return; } + swiper.slideNext(); + }, + init: function init() { + var swiper = this; + var params = swiper.params.navigation; + if (!(params.nextEl || params.prevEl)) { return; } + + var $nextEl; + var $prevEl; + if (params.nextEl) { + $nextEl = $(params.nextEl); + if ( + swiper.params.uniqueNavElements + && typeof params.nextEl === 'string' + && $nextEl.length > 1 + && swiper.$el.find(params.nextEl).length === 1 + ) { + $nextEl = swiper.$el.find(params.nextEl); + } + } + if (params.prevEl) { + $prevEl = $(params.prevEl); + if ( + swiper.params.uniqueNavElements + && typeof params.prevEl === 'string' + && $prevEl.length > 1 + && swiper.$el.find(params.prevEl).length === 1 + ) { + $prevEl = swiper.$el.find(params.prevEl); + } + } + + if ($nextEl && $nextEl.length > 0) { + $nextEl.on('click', swiper.navigation.onNextClick); + } + if ($prevEl && $prevEl.length > 0) { + $prevEl.on('click', swiper.navigation.onPrevClick); + } + + Utils.extend(swiper.navigation, { + $nextEl: $nextEl, + nextEl: $nextEl && $nextEl[0], + $prevEl: $prevEl, + prevEl: $prevEl && $prevEl[0], + }); + }, + destroy: function destroy() { + var swiper = this; + var ref = swiper.navigation; + var $nextEl = ref.$nextEl; + var $prevEl = ref.$prevEl; + if ($nextEl && $nextEl.length) { + $nextEl.off('click', swiper.navigation.onNextClick); + $nextEl.removeClass(swiper.params.navigation.disabledClass); + } + if ($prevEl && $prevEl.length) { + $prevEl.off('click', swiper.navigation.onPrevClick); + $prevEl.removeClass(swiper.params.navigation.disabledClass); + } + }, + }; + + var Navigation$1 = { + name: 'navigation', + params: { + navigation: { + nextEl: null, + prevEl: null, + + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + }, + }, + create: function create() { + var swiper = this; + Utils.extend(swiper, { + navigation: { + init: Navigation.init.bind(swiper), + update: Navigation.update.bind(swiper), + destroy: Navigation.destroy.bind(swiper), + onNextClick: Navigation.onNextClick.bind(swiper), + onPrevClick: Navigation.onPrevClick.bind(swiper), + }, + }); + }, + on: { + init: function init() { + var swiper = this; + swiper.navigation.init(); + swiper.navigation.update(); + }, + toEdge: function toEdge() { + var swiper = this; + swiper.navigation.update(); + }, + fromEdge: function fromEdge() { + var swiper = this; + swiper.navigation.update(); + }, + destroy: function destroy() { + var swiper = this; + swiper.navigation.destroy(); + }, + click: function click(e) { + var swiper = this; + var ref = swiper.navigation; + var $nextEl = ref.$nextEl; + var $prevEl = ref.$prevEl; + if ( + swiper.params.navigation.hideOnClick + && !$(e.target).is($prevEl) + && !$(e.target).is($nextEl) + ) { + var isHidden; + if ($nextEl) { + isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass); + } else if ($prevEl) { + isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + swiper.emit('navigationShow', swiper); + } else { + swiper.emit('navigationHide', swiper); + } + if ($nextEl) { + $nextEl.toggleClass(swiper.params.navigation.hiddenClass); + } + if ($prevEl) { + $prevEl.toggleClass(swiper.params.navigation.hiddenClass); + } + } + }, + }, + }; + + var Pagination = { + update: function update() { + // Render || Update Pagination bullets/items + var swiper = this; + var rtl = swiper.rtl; + var params = swiper.params.pagination; + if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; } + var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + var $el = swiper.pagination.$el; + // Current/Total + var current; + var total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); + if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) { + current -= (slidesLength - (swiper.loopedSlides * 2)); + } + if (current > total - 1) { current -= total; } + if (current < 0 && swiper.params.paginationType !== 'bullets') { current = total + current; } + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + } else { + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + var bullets = swiper.pagination.bullets; + var firstIndex; + var lastIndex; + var midIndex; + if (params.dynamicBullets) { + swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); + $el.css(swiper.isHorizontal() ? 'width' : 'height', ((swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)) + "px")); + if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { + swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex); + if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) { + swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (swiper.pagination.dynamicBulletIndex < 0) { + swiper.pagination.dynamicBulletIndex = 0; + } + } + firstIndex = current - swiper.pagination.dynamicBulletIndex; + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.removeClass(((params.bulletActiveClass) + " " + (params.bulletActiveClass) + "-next " + (params.bulletActiveClass) + "-next-next " + (params.bulletActiveClass) + "-prev " + (params.bulletActiveClass) + "-prev-prev " + (params.bulletActiveClass) + "-main")); + if ($el.length > 1) { + bullets.each(function (index, bullet) { + var $bullet = $(bullet); + var bulletIndex = $bullet.index(); + if (bulletIndex === current) { + $bullet.addClass(params.bulletActiveClass); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + $bullet.addClass(((params.bulletActiveClass) + "-main")); + } + if (bulletIndex === firstIndex) { + $bullet + .prev() + .addClass(((params.bulletActiveClass) + "-prev")) + .prev() + .addClass(((params.bulletActiveClass) + "-prev-prev")); + } + if (bulletIndex === lastIndex) { + $bullet + .next() + .addClass(((params.bulletActiveClass) + "-next")) + .next() + .addClass(((params.bulletActiveClass) + "-next-next")); + } + } + }); + } else { + var $bullet = bullets.eq(current); + var bulletIndex = $bullet.index(); + $bullet.addClass(params.bulletActiveClass); + if (params.dynamicBullets) { + var $firstDisplayedBullet = bullets.eq(firstIndex); + var $lastDisplayedBullet = bullets.eq(lastIndex); + for (var i = firstIndex; i <= lastIndex; i += 1) { + bullets.eq(i).addClass(((params.bulletActiveClass) + "-main")); + } + if (swiper.params.loop) { + if (bulletIndex >= bullets.length - params.dynamicMainBullets) { + for (var i$1 = params.dynamicMainBullets; i$1 >= 0; i$1 -= 1) { + bullets.eq(bullets.length - i$1).addClass(((params.bulletActiveClass) + "-main")); + } + bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(((params.bulletActiveClass) + "-prev")); + } else { + $firstDisplayedBullet + .prev() + .addClass(((params.bulletActiveClass) + "-prev")) + .prev() + .addClass(((params.bulletActiveClass) + "-prev-prev")); + $lastDisplayedBullet + .next() + .addClass(((params.bulletActiveClass) + "-next")) + .next() + .addClass(((params.bulletActiveClass) + "-next-next")); + } + } else { + $firstDisplayedBullet + .prev() + .addClass(((params.bulletActiveClass) + "-prev")) + .prev() + .addClass(((params.bulletActiveClass) + "-prev-prev")); + $lastDisplayedBullet + .next() + .addClass(((params.bulletActiveClass) + "-next")) + .next() + .addClass(((params.bulletActiveClass) + "-next-next")); + } + } + } + if (params.dynamicBullets) { + var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + var bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize); + var offsetProp = rtl ? 'right' : 'left'; + bullets.css(swiper.isHorizontal() ? offsetProp : 'top', (bulletsOffset + "px")); + } + } + if (params.type === 'fraction') { + $el.find(("." + (params.currentClass))).text(params.formatFractionCurrent(current + 1)); + $el.find(("." + (params.totalClass))).text(params.formatFractionTotal(total)); + } + if (params.type === 'progressbar') { + var progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + var scale = (current + 1) / total; + var scaleX = 1; + var scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + $el.find(("." + (params.progressbarFillClass))).transform(("translate3d(0,0,0) scaleX(" + scaleX + ") scaleY(" + scaleY + ")")).transition(swiper.params.speed); + } + if (params.type === 'custom' && params.renderCustom) { + $el.html(params.renderCustom(swiper, current + 1, total)); + swiper.emit('paginationRender', swiper, $el[0]); + } else { + swiper.emit('paginationUpdate', swiper, $el[0]); + } + $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + }, + render: function render() { + // Render Container + var swiper = this; + var params = swiper.params.pagination; + if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; } + var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + + var $el = swiper.pagination.$el; + var paginationHTML = ''; + if (params.type === 'bullets') { + var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + for (var i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + paginationHTML += "<" + (params.bulletElement) + " class=\"" + (params.bulletClass) + "\">"; + } + } + $el.html(paginationHTML); + swiper.pagination.bullets = $el.find(("." + (params.bulletClass))); + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = "" + + ' / ' + + ""; + } + $el.html(paginationHTML); + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ""; + } + $el.html(paginationHTML); + } + if (params.type !== 'custom') { + swiper.emit('paginationRender', swiper.pagination.$el[0]); + } + }, + init: function init() { + var swiper = this; + var params = swiper.params.pagination; + if (!params.el) { return; } + + var $el = $(params.el); + if ($el.length === 0) { return; } + + if ( + swiper.params.uniqueNavElements + && typeof params.el === 'string' + && $el.length > 1 + && swiper.$el.find(params.el).length === 1 + ) { + $el = swiper.$el.find(params.el); + } + + if (params.type === 'bullets' && params.clickable) { + $el.addClass(params.clickableClass); + } + + $el.addClass(params.modifierClass + params.type); + + if (params.type === 'bullets' && params.dynamicBullets) { + $el.addClass(("" + (params.modifierClass) + (params.type) + "-dynamic")); + swiper.pagination.dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + $el.addClass(params.progressbarOppositeClass); + } + + if (params.clickable) { + $el.on('click', ("." + (params.bulletClass)), function onClick(e) { + e.preventDefault(); + var index = $(this).index() * swiper.params.slidesPerGroup; + if (swiper.params.loop) { index += swiper.loopedSlides; } + swiper.slideTo(index); + }); + } + + Utils.extend(swiper.pagination, { + $el: $el, + el: $el[0], + }); + }, + destroy: function destroy() { + var swiper = this; + var params = swiper.params.pagination; + if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; } + var $el = swiper.pagination.$el; + + $el.removeClass(params.hiddenClass); + $el.removeClass(params.modifierClass + params.type); + if (swiper.pagination.bullets) { swiper.pagination.bullets.removeClass(params.bulletActiveClass); } + if (params.clickable) { + $el.off('click', ("." + (params.bulletClass))); + } + }, + }; + + var Pagination$1 = { + name: 'pagination', + params: { + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: function (number) { return number; }, + formatFractionTotal: function (number) { return number; }, + bulletClass: 'swiper-pagination-bullet', + bulletActiveClass: 'swiper-pagination-bullet-active', + modifierClass: 'swiper-pagination-', // NEW + currentClass: 'swiper-pagination-current', + totalClass: 'swiper-pagination-total', + hiddenClass: 'swiper-pagination-hidden', + progressbarFillClass: 'swiper-pagination-progressbar-fill', + progressbarOppositeClass: 'swiper-pagination-progressbar-opposite', + clickableClass: 'swiper-pagination-clickable', // NEW + lockClass: 'swiper-pagination-lock', + }, + }, + create: function create() { + var swiper = this; + Utils.extend(swiper, { + pagination: { + init: Pagination.init.bind(swiper), + render: Pagination.render.bind(swiper), + update: Pagination.update.bind(swiper), + destroy: Pagination.destroy.bind(swiper), + dynamicBulletIndex: 0, + }, + }); + }, + on: { + init: function init() { + var swiper = this; + swiper.pagination.init(); + swiper.pagination.render(); + swiper.pagination.update(); + }, + activeIndexChange: function activeIndexChange() { + var swiper = this; + if (swiper.params.loop) { + swiper.pagination.update(); + } else if (typeof swiper.snapIndex === 'undefined') { + swiper.pagination.update(); + } + }, + snapIndexChange: function snapIndexChange() { + var swiper = this; + if (!swiper.params.loop) { + swiper.pagination.update(); + } + }, + slidesLengthChange: function slidesLengthChange() { + var swiper = this; + if (swiper.params.loop) { + swiper.pagination.render(); + swiper.pagination.update(); + } + }, + snapGridLengthChange: function snapGridLengthChange() { + var swiper = this; + if (!swiper.params.loop) { + swiper.pagination.render(); + swiper.pagination.update(); + } + }, + destroy: function destroy() { + var swiper = this; + swiper.pagination.destroy(); + }, + click: function click(e) { + var swiper = this; + if ( + swiper.params.pagination.el + && swiper.params.pagination.hideOnClick + && swiper.pagination.$el.length > 0 + && !$(e.target).hasClass(swiper.params.pagination.bulletClass) + ) { + var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + swiper.emit('paginationShow', swiper); + } else { + swiper.emit('paginationHide', swiper); + } + swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass); + } + }, + }, + }; + + var Scrollbar = { + setTranslate: function setTranslate() { + var swiper = this; + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; } + var scrollbar = swiper.scrollbar; + var rtl = swiper.rtlTranslate; + var progress = swiper.progress; + var dragSize = scrollbar.dragSize; + var trackSize = scrollbar.trackSize; + var $dragEl = scrollbar.$dragEl; + var $el = scrollbar.$el; + var params = swiper.params.scrollbar; + + var newSize = dragSize; + var newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + $dragEl.transform(("translate3d(" + newPos + "px, 0, 0)")); + $dragEl[0].style.width = newSize + "px"; + } else { + $dragEl.transform(("translate3d(0px, " + newPos + "px, 0)")); + $dragEl[0].style.height = newSize + "px"; + } + if (params.hide) { + clearTimeout(swiper.scrollbar.timeout); + $el[0].style.opacity = 1; + swiper.scrollbar.timeout = setTimeout(function () { + $el[0].style.opacity = 0; + $el.transition(400); + }, 1000); + } + }, + setTransition: function setTransition(duration) { + var swiper = this; + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; } + swiper.scrollbar.$dragEl.transition(duration); + }, + updateSize: function updateSize() { + var swiper = this; + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; } + + var scrollbar = swiper.scrollbar; + var $dragEl = scrollbar.$dragEl; + var $el = scrollbar.$el; + + $dragEl[0].style.width = ''; + $dragEl[0].style.height = ''; + var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight; + + var divider = swiper.size / swiper.virtualSize; + var moveDivider = divider * (trackSize / swiper.size); + var dragSize; + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + + if (swiper.isHorizontal()) { + $dragEl[0].style.width = dragSize + "px"; + } else { + $dragEl[0].style.height = dragSize + "px"; + } + + if (divider >= 1) { + $el[0].style.display = 'none'; + } else { + $el[0].style.display = ''; + } + if (swiper.params.scrollbar.hide) { + $el[0].style.opacity = 0; + } + Utils.extend(scrollbar, { + trackSize: trackSize, + divider: divider, + moveDivider: moveDivider, + dragSize: dragSize, + }); + scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); + }, + getPointerPosition: function getPointerPosition(e) { + var swiper = this; + if (swiper.isHorizontal()) { + return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX); + } + return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY); + }, + setDragPosition: function setDragPosition(e) { + var swiper = this; + var scrollbar = swiper.scrollbar; + var rtl = swiper.rtlTranslate; + var $el = scrollbar.$el; + var dragSize = scrollbar.dragSize; + var trackSize = scrollbar.trackSize; + var dragStartPos = scrollbar.dragStartPos; + + var positionRatio; + positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] + - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + + var position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio); + + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + }, + onDragStart: function onDragStart(e) { + var swiper = this; + var params = swiper.params.scrollbar; + var scrollbar = swiper.scrollbar; + var $wrapperEl = swiper.$wrapperEl; + var $el = scrollbar.$el; + var $dragEl = scrollbar.$dragEl; + swiper.scrollbar.isTouched = true; + swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl) + ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + + $wrapperEl.transition(100); + $dragEl.transition(100); + scrollbar.setDragPosition(e); + + clearTimeout(swiper.scrollbar.dragTimeout); + + $el.transition(0); + if (params.hide) { + $el.css('opacity', 1); + } + if (swiper.params.cssMode) { + swiper.$wrapperEl.css('scroll-snap-type', 'none'); + } + swiper.emit('scrollbarDragStart', e); + }, + onDragMove: function onDragMove(e) { + var swiper = this; + var scrollbar = swiper.scrollbar; + var $wrapperEl = swiper.$wrapperEl; + var $el = scrollbar.$el; + var $dragEl = scrollbar.$dragEl; + + if (!swiper.scrollbar.isTouched) { return; } + if (e.preventDefault) { e.preventDefault(); } + else { e.returnValue = false; } + scrollbar.setDragPosition(e); + $wrapperEl.transition(0); + $el.transition(0); + $dragEl.transition(0); + swiper.emit('scrollbarDragMove', e); + }, + onDragEnd: function onDragEnd(e) { + var swiper = this; + + var params = swiper.params.scrollbar; + var scrollbar = swiper.scrollbar; + var $wrapperEl = swiper.$wrapperEl; + var $el = scrollbar.$el; + + if (!swiper.scrollbar.isTouched) { return; } + swiper.scrollbar.isTouched = false; + if (swiper.params.cssMode) { + swiper.$wrapperEl.css('scroll-snap-type', ''); + $wrapperEl.transition(''); + } + if (params.hide) { + clearTimeout(swiper.scrollbar.dragTimeout); + swiper.scrollbar.dragTimeout = Utils.nextTick(function () { + $el.css('opacity', 0); + $el.transition(400); + }, 1000); + } + swiper.emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + }, + enableDraggable: function enableDraggable() { + var swiper = this; + if (!swiper.params.scrollbar.el) { return; } + var scrollbar = swiper.scrollbar; + var touchEventsTouch = swiper.touchEventsTouch; + var touchEventsDesktop = swiper.touchEventsDesktop; + var params = swiper.params; + var $el = scrollbar.$el; + var target = $el[0]; + var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; + var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + if (!Support.touch) { + target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); + doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); + doc.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); + } else { + target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener); + target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener); + target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener); + } + }, + disableDraggable: function disableDraggable() { + var swiper = this; + if (!swiper.params.scrollbar.el) { return; } + var scrollbar = swiper.scrollbar; + var touchEventsTouch = swiper.touchEventsTouch; + var touchEventsDesktop = swiper.touchEventsDesktop; + var params = swiper.params; + var $el = scrollbar.$el; + var target = $el[0]; + var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; + var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + if (!Support.touch) { + target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); + doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); + doc.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); + } else { + target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener); + target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener); + target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener); + } + }, + init: function init() { + var swiper = this; + if (!swiper.params.scrollbar.el) { return; } + var scrollbar = swiper.scrollbar; + var $swiperEl = swiper.$el; + var params = swiper.params.scrollbar; + + var $el = $(params.el); + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { + $el = $swiperEl.find(params.el); + } + + var $dragEl = $el.find(("." + (swiper.params.scrollbar.dragClass))); + if ($dragEl.length === 0) { + $dragEl = $(("
      ")); + $el.append($dragEl); + } + + Utils.extend(scrollbar, { + $el: $el, + el: $el[0], + $dragEl: $dragEl, + dragEl: $dragEl[0], + }); + + if (params.draggable) { + scrollbar.enableDraggable(); + } + }, + destroy: function destroy() { + var swiper = this; + swiper.scrollbar.disableDraggable(); + }, + }; + + var Scrollbar$1 = { + name: 'scrollbar', + params: { + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + }, + }, + create: function create() { + var swiper = this; + Utils.extend(swiper, { + scrollbar: { + init: Scrollbar.init.bind(swiper), + destroy: Scrollbar.destroy.bind(swiper), + updateSize: Scrollbar.updateSize.bind(swiper), + setTranslate: Scrollbar.setTranslate.bind(swiper), + setTransition: Scrollbar.setTransition.bind(swiper), + enableDraggable: Scrollbar.enableDraggable.bind(swiper), + disableDraggable: Scrollbar.disableDraggable.bind(swiper), + setDragPosition: Scrollbar.setDragPosition.bind(swiper), + getPointerPosition: Scrollbar.getPointerPosition.bind(swiper), + onDragStart: Scrollbar.onDragStart.bind(swiper), + onDragMove: Scrollbar.onDragMove.bind(swiper), + onDragEnd: Scrollbar.onDragEnd.bind(swiper), + isTouched: false, + timeout: null, + dragTimeout: null, + }, + }); + }, + on: { + init: function init() { + var swiper = this; + swiper.scrollbar.init(); + swiper.scrollbar.updateSize(); + swiper.scrollbar.setTranslate(); + }, + update: function update() { + var swiper = this; + swiper.scrollbar.updateSize(); + }, + resize: function resize() { + var swiper = this; + swiper.scrollbar.updateSize(); + }, + observerUpdate: function observerUpdate() { + var swiper = this; + swiper.scrollbar.updateSize(); + }, + setTranslate: function setTranslate() { + var swiper = this; + swiper.scrollbar.setTranslate(); + }, + setTransition: function setTransition(duration) { + var swiper = this; + swiper.scrollbar.setTransition(duration); + }, + destroy: function destroy() { + var swiper = this; + swiper.scrollbar.destroy(); + }, + }, + }; + + var Parallax = { + setTransform: function setTransform(el, progress) { + var swiper = this; + var rtl = swiper.rtl; + + var $el = $(el); + var rtlFactor = rtl ? -1 : 1; + + var p = $el.attr('data-swiper-parallax') || '0'; + var x = $el.attr('data-swiper-parallax-x'); + var y = $el.attr('data-swiper-parallax-y'); + var scale = $el.attr('data-swiper-parallax-scale'); + var opacity = $el.attr('data-swiper-parallax-opacity'); + + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + + if ((x).indexOf('%') >= 0) { + x = (parseInt(x, 10) * progress * rtlFactor) + "%"; + } else { + x = (x * progress * rtlFactor) + "px"; + } + if ((y).indexOf('%') >= 0) { + y = (parseInt(y, 10) * progress) + "%"; + } else { + y = (y * progress) + "px"; + } + + if (typeof opacity !== 'undefined' && opacity !== null) { + var currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress))); + $el[0].style.opacity = currentOpacity; + } + if (typeof scale === 'undefined' || scale === null) { + $el.transform(("translate3d(" + x + ", " + y + ", 0px)")); + } else { + var currentScale = scale - ((scale - 1) * (1 - Math.abs(progress))); + $el.transform(("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")")); + } + }, + setTranslate: function setTranslate() { + var swiper = this; + var $el = swiper.$el; + var slides = swiper.slides; + var progress = swiper.progress; + var snapGrid = swiper.snapGrid; + $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') + .each(function (index, el) { + swiper.parallax.setTransform(el, progress); + }); + slides.each(function (slideIndex, slideEl) { + var slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1)); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') + .each(function (index, el) { + swiper.parallax.setTransform(el, slideProgress); + }); + }); + }, + setTransition: function setTransition(duration) { + if ( duration === void 0 ) duration = this.params.speed; + + var swiper = this; + var $el = swiper.$el; + $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') + .each(function (index, parallaxEl) { + var $parallaxEl = $(parallaxEl); + var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) { parallaxDuration = 0; } + $parallaxEl.transition(parallaxDuration); + }); + }, + }; + + var Parallax$1 = { + name: 'parallax', + params: { + parallax: { + enabled: false, + }, + }, + create: function create() { + var swiper = this; + Utils.extend(swiper, { + parallax: { + setTransform: Parallax.setTransform.bind(swiper), + setTranslate: Parallax.setTranslate.bind(swiper), + setTransition: Parallax.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit: function beforeInit() { + var swiper = this; + if (!swiper.params.parallax.enabled) { return; } + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }, + init: function init() { + var swiper = this; + if (!swiper.params.parallax.enabled) { return; } + swiper.parallax.setTranslate(); + }, + setTranslate: function setTranslate() { + var swiper = this; + if (!swiper.params.parallax.enabled) { return; } + swiper.parallax.setTranslate(); + }, + setTransition: function setTransition(duration) { + var swiper = this; + if (!swiper.params.parallax.enabled) { return; } + swiper.parallax.setTransition(duration); + }, + }, + }; + + var Zoom = { + // Calc Scale From Multi-touches + getDistanceBetweenTouches: function getDistanceBetweenTouches(e) { + if (e.targetTouches.length < 2) { return 1; } + var x1 = e.targetTouches[0].pageX; + var y1 = e.targetTouches[0].pageY; + var x2 = e.targetTouches[1].pageX; + var y2 = e.targetTouches[1].pageY; + var distance = Math.sqrt((Math.pow( (x2 - x1), 2 )) + (Math.pow( (y2 - y1), 2 ))); + return distance; + }, + // Events + onGestureStart: function onGestureStart(e) { + var swiper = this; + var params = swiper.params.zoom; + var zoom = swiper.zoom; + var gesture = zoom.gesture; + zoom.fakeGestureTouched = false; + zoom.fakeGestureMoved = false; + if (!Support.gestures) { + if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) { + return; + } + zoom.fakeGestureTouched = true; + gesture.scaleStart = Zoom.getDistanceBetweenTouches(e); + } + if (!gesture.$slideEl || !gesture.$slideEl.length) { + gesture.$slideEl = $(e.target).closest(("." + (swiper.params.slideClass))); + if (gesture.$slideEl.length === 0) { gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); } + gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target'); + gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass))); + gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + if (gesture.$imageWrapEl.length === 0) { + gesture.$imageEl = undefined; + return; + } + } + if (gesture.$imageEl) { + gesture.$imageEl.transition(0); + } + swiper.zoom.isScaling = true; + }, + onGestureChange: function onGestureChange(e) { + var swiper = this; + var params = swiper.params.zoom; + var zoom = swiper.zoom; + var gesture = zoom.gesture; + if (!Support.gestures) { + if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) { + return; + } + zoom.fakeGestureMoved = true; + gesture.scaleMove = Zoom.getDistanceBetweenTouches(e); + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } + if (Support.gestures) { + zoom.scale = e.scale * zoom.currentScale; + } else { + zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale; + } + if (zoom.scale > gesture.maxRatio) { + zoom.scale = (gesture.maxRatio - 1) + (Math.pow( ((zoom.scale - gesture.maxRatio) + 1), 0.5 )); + } + if (zoom.scale < params.minRatio) { + zoom.scale = (params.minRatio + 1) - (Math.pow( ((params.minRatio - zoom.scale) + 1), 0.5 )); + } + gesture.$imageEl.transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")")); + }, + onGestureEnd: function onGestureEnd(e) { + var swiper = this; + var params = swiper.params.zoom; + var zoom = swiper.zoom; + var gesture = zoom.gesture; + if (!Support.gestures) { + if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) { + return; + } + if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) { + return; + } + zoom.fakeGestureTouched = false; + zoom.fakeGestureMoved = false; + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.$imageEl.transition(swiper.params.speed).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")")); + zoom.currentScale = zoom.scale; + zoom.isScaling = false; + if (zoom.scale === 1) { gesture.$slideEl = undefined; } + }, + onTouchStart: function onTouchStart(e) { + var swiper = this; + var zoom = swiper.zoom; + var gesture = zoom.gesture; + var image = zoom.image; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } + if (image.isTouched) { return; } + if (Device.android) { e.preventDefault(); } + image.isTouched = true; + image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; + image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; + }, + onTouchMove: function onTouchMove(e) { + var swiper = this; + var zoom = swiper.zoom; + var gesture = zoom.gesture; + var image = zoom.image; + var velocity = zoom.velocity; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } + swiper.allowClick = false; + if (!image.isTouched || !gesture.$slideEl) { return; } + + if (!image.isMoved) { + image.width = gesture.$imageEl[0].offsetWidth; + image.height = gesture.$imageEl[0].offsetHeight; + image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0; + image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0; + gesture.slideWidth = gesture.$slideEl[0].offsetWidth; + gesture.slideHeight = gesture.$slideEl[0].offsetHeight; + gesture.$imageWrapEl.transition(0); + if (swiper.rtl) { + image.startX = -image.startX; + image.startY = -image.startY; + } + } + // Define if we need image drag + var scaledWidth = image.width * zoom.scale; + var scaledHeight = image.height * zoom.scale; + + if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) { return; } + + image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); + image.maxX = -image.minX; + image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); + image.maxY = -image.minY; + + image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; + image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; + + if (!image.isMoved && !zoom.isScaling) { + if ( + swiper.isHorizontal() + && ( + (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x) + || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x) + ) + ) { + image.isTouched = false; + return; + } if ( + !swiper.isHorizontal() + && ( + (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y) + || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y) + ) + ) { + image.isTouched = false; + return; + } + } + e.preventDefault(); + e.stopPropagation(); + + image.isMoved = true; + image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX; + image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY; + + if (image.currentX < image.minX) { + image.currentX = (image.minX + 1) - (Math.pow( ((image.minX - image.currentX) + 1), 0.8 )); + } + if (image.currentX > image.maxX) { + image.currentX = (image.maxX - 1) + (Math.pow( ((image.currentX - image.maxX) + 1), 0.8 )); + } + + if (image.currentY < image.minY) { + image.currentY = (image.minY + 1) - (Math.pow( ((image.minY - image.currentY) + 1), 0.8 )); + } + if (image.currentY > image.maxY) { + image.currentY = (image.maxY - 1) + (Math.pow( ((image.currentY - image.maxY) + 1), 0.8 )); + } + + // Velocity + if (!velocity.prevPositionX) { velocity.prevPositionX = image.touchesCurrent.x; } + if (!velocity.prevPositionY) { velocity.prevPositionY = image.touchesCurrent.y; } + if (!velocity.prevTime) { velocity.prevTime = Date.now(); } + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) { velocity.x = 0; } + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) { velocity.y = 0; } + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + + gesture.$imageWrapEl.transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)")); + }, + onTouchEnd: function onTouchEnd() { + var swiper = this; + var zoom = swiper.zoom; + var gesture = zoom.gesture; + var image = zoom.image; + var velocity = zoom.velocity; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + var momentumDurationX = 300; + var momentumDurationY = 300; + var momentumDistanceX = velocity.x * momentumDurationX; + var newPositionX = image.currentX + momentumDistanceX; + var momentumDistanceY = velocity.y * momentumDurationY; + var newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) { momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); } + if (velocity.y !== 0) { momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); } + var momentumDuration = Math.max(momentumDurationX, momentumDurationY); + + image.currentX = newPositionX; + image.currentY = newPositionY; + + // Define if we need image drag + var scaledWidth = image.width * zoom.scale; + var scaledHeight = image.height * zoom.scale; + image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); + image.maxX = -image.minX; + image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + + gesture.$imageWrapEl.transition(momentumDuration).transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)")); + }, + onTransitionEnd: function onTransitionEnd() { + var swiper = this; + var zoom = swiper.zoom; + var gesture = zoom.gesture; + if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) { + if (gesture.$imageEl) { + gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); + } + if (gesture.$imageWrapEl) { + gesture.$imageWrapEl.transform('translate3d(0,0,0)'); + } + + zoom.scale = 1; + zoom.currentScale = 1; + + gesture.$slideEl = undefined; + gesture.$imageEl = undefined; + gesture.$imageWrapEl = undefined; + } + }, + // Toggle Zoom + toggle: function toggle(e) { + var swiper = this; + var zoom = swiper.zoom; + + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoom.out(); + } else { + // Zoom In + zoom.in(e); + } + }, + in: function in$1(e) { + var swiper = this; + + var zoom = swiper.zoom; + var params = swiper.params.zoom; + var gesture = zoom.gesture; + var image = zoom.image; + + if (!gesture.$slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.$slideEl = swiper.$wrapperEl.children(("." + (swiper.params.slideActiveClass))); + } else { + gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + } + gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target'); + gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass))); + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } + + gesture.$slideEl.addClass(("" + (params.zoomedSlideClass))); + + var touchX; + var touchY; + var offsetX; + var offsetY; + var diffX; + var diffY; + var translateX; + var translateY; + var imageWidth; + var imageHeight; + var scaledWidth; + var scaledHeight; + var translateMinX; + var translateMinY; + var translateMaxX; + var translateMaxY; + var slideWidth; + var slideHeight; + + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; + touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + + zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + if (e) { + slideWidth = gesture.$slideEl[0].offsetWidth; + slideHeight = gesture.$slideEl[0].offsetHeight; + offsetX = gesture.$slideEl.offset().left; + offsetY = gesture.$slideEl.offset().top; + diffX = (offsetX + (slideWidth / 2)) - touchX; + diffY = (offsetY + (slideHeight / 2)) - touchY; + + imageWidth = gesture.$imageEl[0].offsetWidth; + imageHeight = gesture.$imageEl[0].offsetHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + + translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0); + translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + gesture.$imageWrapEl.transition(300).transform(("translate3d(" + translateX + "px, " + translateY + "px,0)")); + gesture.$imageEl.transition(300).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")")); + }, + out: function out() { + var swiper = this; + + var zoom = swiper.zoom; + var params = swiper.params.zoom; + var gesture = zoom.gesture; + + if (!gesture.$slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.$slideEl = swiper.$wrapperEl.children(("." + (swiper.params.slideActiveClass))); + } else { + gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + } + gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target'); + gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass))); + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } + + zoom.scale = 1; + zoom.currentScale = 1; + gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); + gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); + gesture.$slideEl.removeClass(("" + (params.zoomedSlideClass))); + gesture.$slideEl = undefined; + }, + // Attach/Detach Events + enable: function enable() { + var swiper = this; + var zoom = swiper.zoom; + if (zoom.enabled) { return; } + zoom.enabled = true; + + var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; + var activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true; + + var slideSelector = "." + (swiper.params.slideClass); + + // Scale image + if (Support.gestures) { + swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener); + swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener); + } else if (swiper.touchEvents.start === 'touchstart') { + swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture); + swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener); + if (swiper.touchEvents.cancel) { + swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener); + } + } + + // Move image + swiper.$wrapperEl.on(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove, activeListenerWithCapture); + }, + disable: function disable() { + var swiper = this; + var zoom = swiper.zoom; + if (!zoom.enabled) { return; } + + swiper.zoom.enabled = false; + + var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; + var activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true; + + var slideSelector = "." + (swiper.params.slideClass); + + // Scale image + if (Support.gestures) { + swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener); + swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener); + } else if (swiper.touchEvents.start === 'touchstart') { + swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture); + swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener); + if (swiper.touchEvents.cancel) { + swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener); + } + } + + // Move image + swiper.$wrapperEl.off(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove, activeListenerWithCapture); + }, + }; + + var Zoom$1 = { + name: 'zoom', + params: { + zoom: { + enabled: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed', + }, + }, + create: function create() { + var swiper = this; + var zoom = { + enabled: false, + scale: 1, + currentScale: 1, + isScaling: false, + gesture: { + $slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + $imageEl: undefined, + $imageWrapEl: undefined, + maxRatio: 3, + }, + image: { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {}, + }, + velocity: { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined, + }, + }; + + ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach(function (methodName) { + zoom[methodName] = Zoom[methodName].bind(swiper); + }); + Utils.extend(swiper, { + zoom: zoom, + }); + + var scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get: function get() { + return scale; + }, + set: function set(value) { + if (scale !== value) { + var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined; + var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined; + swiper.emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + }, + }); + }, + on: { + init: function init() { + var swiper = this; + if (swiper.params.zoom.enabled) { + swiper.zoom.enable(); + } + }, + destroy: function destroy() { + var swiper = this; + swiper.zoom.disable(); + }, + touchStart: function touchStart(e) { + var swiper = this; + if (!swiper.zoom.enabled) { return; } + swiper.zoom.onTouchStart(e); + }, + touchEnd: function touchEnd(e) { + var swiper = this; + if (!swiper.zoom.enabled) { return; } + swiper.zoom.onTouchEnd(e); + }, + doubleTap: function doubleTap(e) { + var swiper = this; + if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + swiper.zoom.toggle(e); + } + }, + transitionEnd: function transitionEnd() { + var swiper = this; + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + swiper.zoom.onTransitionEnd(); + } + }, + slideChange: function slideChange() { + var swiper = this; + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + swiper.zoom.onTransitionEnd(); + } + }, + }, + }; + + var Lazy = { + loadInSlide: function loadInSlide(index, loadInDuplicate) { + if ( loadInDuplicate === void 0 ) loadInDuplicate = true; + + var swiper = this; + var params = swiper.params.lazy; + if (typeof index === 'undefined') { return; } + if (swiper.slides.length === 0) { return; } + var isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + var $slideEl = isVirtual + ? swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]")) + : swiper.slides.eq(index); + + var $images = $slideEl.find(("." + (params.elementClass) + ":not(." + (params.loadedClass) + "):not(." + (params.loadingClass) + ")")); + if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { + $images = $images.add($slideEl[0]); + } + if ($images.length === 0) { return; } + + $images.each(function (imageIndex, imageEl) { + var $imageEl = $(imageEl); + $imageEl.addClass(params.loadingClass); + + var background = $imageEl.attr('data-background'); + var src = $imageEl.attr('data-src'); + var srcset = $imageEl.attr('data-srcset'); + var sizes = $imageEl.attr('data-sizes'); + + swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, function () { + if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) { return; } + if (background) { + $imageEl.css('background-image', ("url(\"" + background + "\")")); + $imageEl.removeAttr('data-background'); + } else { + if (srcset) { + $imageEl.attr('srcset', srcset); + $imageEl.removeAttr('data-srcset'); + } + if (sizes) { + $imageEl.attr('sizes', sizes); + $imageEl.removeAttr('data-sizes'); + } + if (src) { + $imageEl.attr('src', src); + $imageEl.removeAttr('data-src'); + } + } + + $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); + $slideEl.find(("." + (params.preloaderClass))).remove(); + if (swiper.params.loop && loadInDuplicate) { + var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); + if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { + var originalSlide = swiper.$wrapperEl.children(("[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]:not(." + (swiper.params.slideDuplicateClass) + ")")); + swiper.lazy.loadInSlide(originalSlide.index(), false); + } else { + var duplicatedSlide = swiper.$wrapperEl.children(("." + (swiper.params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]")); + swiper.lazy.loadInSlide(duplicatedSlide.index(), false); + } + } + swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]); + if (swiper.params.autoHeight) { + swiper.updateAutoHeight(); + } + }); + + swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]); + }); + }, + load: function load() { + var swiper = this; + var $wrapperEl = swiper.$wrapperEl; + var swiperParams = swiper.params; + var slides = swiper.slides; + var activeIndex = swiper.activeIndex; + var isVirtual = swiper.virtual && swiperParams.virtual.enabled; + var params = swiperParams.lazy; + + var slidesPerView = swiperParams.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = 0; + } + + function slideExist(index) { + if (isVirtual) { + if ($wrapperEl.children(("." + (swiperParams.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]")).length) { + return true; + } + } else if (slides[index]) { return true; } + return false; + } + function slideIndex(slideEl) { + if (isVirtual) { + return $(slideEl).attr('data-swiper-slide-index'); + } + return $(slideEl).index(); + } + + if (!swiper.lazy.initialImageLoaded) { swiper.lazy.initialImageLoaded = true; } + if (swiper.params.watchSlidesVisibility) { + $wrapperEl.children(("." + (swiperParams.slideVisibleClass))).each(function (elIndex, slideEl) { + var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index(); + swiper.lazy.loadInSlide(index); + }); + } else if (slidesPerView > 1) { + for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) { + if (slideExist(i)) { swiper.lazy.loadInSlide(i); } + } + } else { + swiper.lazy.loadInSlide(activeIndex); + } + if (params.loadPrevNext) { + if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) { + var amount = params.loadPrevNextAmount; + var spv = slidesPerView; + var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); + var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); + // Next Slides + for (var i$1 = activeIndex + slidesPerView; i$1 < maxIndex; i$1 += 1) { + if (slideExist(i$1)) { swiper.lazy.loadInSlide(i$1); } + } + // Prev Slides + for (var i$2 = minIndex; i$2 < activeIndex; i$2 += 1) { + if (slideExist(i$2)) { swiper.lazy.loadInSlide(i$2); } + } + } else { + var nextSlide = $wrapperEl.children(("." + (swiperParams.slideNextClass))); + if (nextSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(nextSlide)); } + + var prevSlide = $wrapperEl.children(("." + (swiperParams.slidePrevClass))); + if (prevSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(prevSlide)); } + } + } + }, + }; + + var Lazy$1 = { + name: 'lazy', + params: { + lazy: { + enabled: false, + loadPrevNext: false, + loadPrevNextAmount: 1, + loadOnTransitionStart: false, + + elementClass: 'swiper-lazy', + loadingClass: 'swiper-lazy-loading', + loadedClass: 'swiper-lazy-loaded', + preloaderClass: 'swiper-lazy-preloader', + }, + }, + create: function create() { + var swiper = this; + Utils.extend(swiper, { + lazy: { + initialImageLoaded: false, + load: Lazy.load.bind(swiper), + loadInSlide: Lazy.loadInSlide.bind(swiper), + }, + }); + }, + on: { + beforeInit: function beforeInit() { + var swiper = this; + if (swiper.params.lazy.enabled && swiper.params.preloadImages) { + swiper.params.preloadImages = false; + } + }, + init: function init() { + var swiper = this; + if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) { + swiper.lazy.load(); + } + }, + scroll: function scroll() { + var swiper = this; + if (swiper.params.freeMode && !swiper.params.freeModeSticky) { + swiper.lazy.load(); + } + }, + resize: function resize() { + var swiper = this; + if (swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + }, + scrollbarDragMove: function scrollbarDragMove() { + var swiper = this; + if (swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + }, + transitionStart: function transitionStart() { + var swiper = this; + if (swiper.params.lazy.enabled) { + if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) { + swiper.lazy.load(); + } + } + }, + transitionEnd: function transitionEnd() { + var swiper = this; + if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { + swiper.lazy.load(); + } + }, + slideChange: function slideChange() { + var swiper = this; + if (swiper.params.lazy.enabled && swiper.params.cssMode) { + swiper.lazy.load(); + } + }, + }, + }; + + /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ + + var Controller = { + LinearSpline: function LinearSpline(x, y) { + var binarySearch = (function search() { + var maxIndex; + var minIndex; + var guess; + return function (array, val) { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }()); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + var i1; + var i3; + + this.interpolate = function interpolate(x2) { + if (!x2) { return 0; } + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1]; + }; + return this; + }, + // xxx: for now i will just save one spline function to to + getInterpolateFunction: function getInterpolateFunction(c) { + var swiper = this; + if (!swiper.controller.spline) { + swiper.controller.spline = swiper.params.loop + ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) + : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid); + } + }, + setTranslate: function setTranslate(setTranslate$1, byController) { + var swiper = this; + var controlled = swiper.controller.control; + var multiplier; + var controlledTranslate; + function setControlledTranslate(c) { + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + swiper.controller.getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate(); + } + + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (var i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + }, + setTransition: function setTransition(duration, byController) { + var swiper = this; + var controlled = swiper.controller.control; + var i; + function setControlledTransition(c) { + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + Utils.nextTick(function () { + c.updateAutoHeight(); + }); + } + c.$wrapperEl.transitionEnd(function () { + if (!controlled) { return; } + if (c.params.loop && swiper.params.controller.by === 'slide') { + c.loopFix(); + } + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + }, + }; + var Controller$1 = { + name: 'controller', + params: { + controller: { + control: undefined, + inverse: false, + by: 'slide', // or 'container' + }, + }, + create: function create() { + var swiper = this; + Utils.extend(swiper, { + controller: { + control: swiper.params.controller.control, + getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper), + setTranslate: Controller.setTranslate.bind(swiper), + setTransition: Controller.setTransition.bind(swiper), + }, + }); + }, + on: { + update: function update() { + var swiper = this; + if (!swiper.controller.control) { return; } + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + }, + resize: function resize() { + var swiper = this; + if (!swiper.controller.control) { return; } + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + }, + observerUpdate: function observerUpdate() { + var swiper = this; + if (!swiper.controller.control) { return; } + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + }, + setTranslate: function setTranslate(translate, byController) { + var swiper = this; + if (!swiper.controller.control) { return; } + swiper.controller.setTranslate(translate, byController); + }, + setTransition: function setTransition(duration, byController) { + var swiper = this; + if (!swiper.controller.control) { return; } + swiper.controller.setTransition(duration, byController); + }, + }, + }; + + var a11y = { + makeElFocusable: function makeElFocusable($el) { + $el.attr('tabIndex', '0'); + return $el; + }, + addElRole: function addElRole($el, role) { + $el.attr('role', role); + return $el; + }, + addElLabel: function addElLabel($el, label) { + $el.attr('aria-label', label); + return $el; + }, + disableEl: function disableEl($el) { + $el.attr('aria-disabled', true); + return $el; + }, + enableEl: function enableEl($el) { + $el.attr('aria-disabled', false); + return $el; + }, + onEnterKey: function onEnterKey(e) { + var swiper = this; + var params = swiper.params.a11y; + if (e.keyCode !== 13) { return; } + var $targetEl = $(e.target); + if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + swiper.a11y.notify(params.lastSlideMessage); + } else { + swiper.a11y.notify(params.nextSlideMessage); + } + } + if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + swiper.a11y.notify(params.firstSlideMessage); + } else { + swiper.a11y.notify(params.prevSlideMessage); + } + } + if (swiper.pagination && $targetEl.is(("." + (swiper.params.pagination.bulletClass)))) { + $targetEl[0].click(); + } + }, + notify: function notify(message) { + var swiper = this; + var notification = swiper.a11y.liveRegion; + if (notification.length === 0) { return; } + notification.html(''); + notification.html(message); + }, + updateNavigation: function updateNavigation() { + var swiper = this; + + if (swiper.params.loop || !swiper.navigation) { return; } + var ref = swiper.navigation; + var $nextEl = ref.$nextEl; + var $prevEl = ref.$prevEl; + + if ($prevEl && $prevEl.length > 0) { + if (swiper.isBeginning) { + swiper.a11y.disableEl($prevEl); + } else { + swiper.a11y.enableEl($prevEl); + } + } + if ($nextEl && $nextEl.length > 0) { + if (swiper.isEnd) { + swiper.a11y.disableEl($nextEl); + } else { + swiper.a11y.enableEl($nextEl); + } + } + }, + updatePagination: function updatePagination() { + var swiper = this; + var params = swiper.params.a11y; + if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { + swiper.pagination.bullets.each(function (bulletIndex, bulletEl) { + var $bulletEl = $(bulletEl); + swiper.a11y.makeElFocusable($bulletEl); + swiper.a11y.addElRole($bulletEl, 'button'); + swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1)); + }); + } + }, + init: function init() { + var swiper = this; + + swiper.$el.append(swiper.a11y.liveRegion); + + // Navigation + var params = swiper.params.a11y; + var $nextEl; + var $prevEl; + if (swiper.navigation && swiper.navigation.$nextEl) { + $nextEl = swiper.navigation.$nextEl; + } + if (swiper.navigation && swiper.navigation.$prevEl) { + $prevEl = swiper.navigation.$prevEl; + } + if ($nextEl) { + swiper.a11y.makeElFocusable($nextEl); + swiper.a11y.addElRole($nextEl, 'button'); + swiper.a11y.addElLabel($nextEl, params.nextSlideMessage); + $nextEl.on('keydown', swiper.a11y.onEnterKey); + } + if ($prevEl) { + swiper.a11y.makeElFocusable($prevEl); + swiper.a11y.addElRole($prevEl, 'button'); + swiper.a11y.addElLabel($prevEl, params.prevSlideMessage); + $prevEl.on('keydown', swiper.a11y.onEnterKey); + } + + // Pagination + if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { + swiper.pagination.$el.on('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey); + } + }, + destroy: function destroy() { + var swiper = this; + if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) { swiper.a11y.liveRegion.remove(); } + + var $nextEl; + var $prevEl; + if (swiper.navigation && swiper.navigation.$nextEl) { + $nextEl = swiper.navigation.$nextEl; + } + if (swiper.navigation && swiper.navigation.$prevEl) { + $prevEl = swiper.navigation.$prevEl; + } + if ($nextEl) { + $nextEl.off('keydown', swiper.a11y.onEnterKey); + } + if ($prevEl) { + $prevEl.off('keydown', swiper.a11y.onEnterKey); + } + + // Pagination + if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { + swiper.pagination.$el.off('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey); + } + }, + }; + var A11y = { + name: 'a11y', + params: { + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + }, + }, + create: function create() { + var swiper = this; + Utils.extend(swiper, { + a11y: { + liveRegion: $(("")), + }, + }); + Object.keys(a11y).forEach(function (methodName) { + swiper.a11y[methodName] = a11y[methodName].bind(swiper); + }); + }, + on: { + init: function init() { + var swiper = this; + if (!swiper.params.a11y.enabled) { return; } + swiper.a11y.init(); + swiper.a11y.updateNavigation(); + }, + toEdge: function toEdge() { + var swiper = this; + if (!swiper.params.a11y.enabled) { return; } + swiper.a11y.updateNavigation(); + }, + fromEdge: function fromEdge() { + var swiper = this; + if (!swiper.params.a11y.enabled) { return; } + swiper.a11y.updateNavigation(); + }, + paginationUpdate: function paginationUpdate() { + var swiper = this; + if (!swiper.params.a11y.enabled) { return; } + swiper.a11y.updatePagination(); + }, + destroy: function destroy() { + var swiper = this; + if (!swiper.params.a11y.enabled) { return; } + swiper.a11y.destroy(); + }, + }, + }; + + var History = { + init: function init() { + var swiper = this; + if (!swiper.params.history) { return; } + if (!win.history || !win.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + var history = swiper.history; + history.initialized = true; + history.paths = History.getPathValues(); + if (!history.paths.key && !history.paths.value) { return; } + history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + win.addEventListener('popstate', swiper.history.setHistoryPopState); + } + }, + destroy: function destroy() { + var swiper = this; + if (!swiper.params.history.replaceState) { + win.removeEventListener('popstate', swiper.history.setHistoryPopState); + } + }, + setHistoryPopState: function setHistoryPopState() { + var swiper = this; + swiper.history.paths = History.getPathValues(); + swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false); + }, + getPathValues: function getPathValues() { + var pathArray = win.location.pathname.slice(1).split('/').filter(function (part) { return part !== ''; }); + var total = pathArray.length; + var key = pathArray[total - 2]; + var value = pathArray[total - 1]; + return { key: key, value: value }; + }, + setHistory: function setHistory(key, index) { + var swiper = this; + if (!swiper.history.initialized || !swiper.params.history.enabled) { return; } + var slide = swiper.slides.eq(index); + var value = History.slugify(slide.attr('data-history')); + if (!win.location.pathname.includes(key)) { + value = key + "/" + value; + } + var currentState = win.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + win.history.replaceState({ value: value }, null, value); + } else { + win.history.pushState({ value: value }, null, value); + } + }, + slugify: function slugify(text) { + return text.toString() + .replace(/\s+/g, '-') + .replace(/[^\w-]+/g, '') + .replace(/--+/g, '-') + .replace(/^-+/, '') + .replace(/-+$/, ''); + }, + scrollToSlide: function scrollToSlide(speed, value, runCallbacks) { + var swiper = this; + if (value) { + for (var i = 0, length = swiper.slides.length; i < length; i += 1) { + var slide = swiper.slides.eq(i); + var slideHistory = History.slugify(slide.attr('data-history')); + if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) { + var index = slide.index(); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }, + }; + + var History$1 = { + name: 'history', + params: { + history: { + enabled: false, + replaceState: false, + key: 'slides', + }, + }, + create: function create() { + var swiper = this; + Utils.extend(swiper, { + history: { + init: History.init.bind(swiper), + setHistory: History.setHistory.bind(swiper), + setHistoryPopState: History.setHistoryPopState.bind(swiper), + scrollToSlide: History.scrollToSlide.bind(swiper), + destroy: History.destroy.bind(swiper), + }, + }); + }, + on: { + init: function init() { + var swiper = this; + if (swiper.params.history.enabled) { + swiper.history.init(); + } + }, + destroy: function destroy() { + var swiper = this; + if (swiper.params.history.enabled) { + swiper.history.destroy(); + } + }, + transitionEnd: function transitionEnd() { + var swiper = this; + if (swiper.history.initialized) { + swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex); + } + }, + slideChange: function slideChange() { + var swiper = this; + if (swiper.history.initialized && swiper.params.cssMode) { + swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex); + } + }, + }, + }; + + var HashNavigation = { + onHashCange: function onHashCange() { + var swiper = this; + var newHash = doc.location.hash.replace('#', ''); + var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash'); + if (newHash !== activeSlideHash) { + var newIndex = swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-hash=\"" + newHash + "\"]")).index(); + if (typeof newIndex === 'undefined') { return; } + swiper.slideTo(newIndex); + } + }, + setHash: function setHash() { + var swiper = this; + if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) { return; } + if (swiper.params.hashNavigation.replaceState && win.history && win.history.replaceState) { + win.history.replaceState(null, null, (("#" + (swiper.slides.eq(swiper.activeIndex).attr('data-hash'))) || '')); + } else { + var slide = swiper.slides.eq(swiper.activeIndex); + var hash = slide.attr('data-hash') || slide.attr('data-history'); + doc.location.hash = hash || ''; + } + }, + init: function init() { + var swiper = this; + if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) { return; } + swiper.hashNavigation.initialized = true; + var hash = doc.location.hash.replace('#', ''); + if (hash) { + var speed = 0; + for (var i = 0, length = swiper.slides.length; i < length; i += 1) { + var slide = swiper.slides.eq(i); + var slideHash = slide.attr('data-hash') || slide.attr('data-history'); + if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) { + var index = slide.index(); + swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); + } + } + } + if (swiper.params.hashNavigation.watchState) { + $(win).on('hashchange', swiper.hashNavigation.onHashCange); + } + }, + destroy: function destroy() { + var swiper = this; + if (swiper.params.hashNavigation.watchState) { + $(win).off('hashchange', swiper.hashNavigation.onHashCange); + } + }, + }; + var HashNavigation$1 = { + name: 'hash-navigation', + params: { + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + }, + }, + create: function create() { + var swiper = this; + Utils.extend(swiper, { + hashNavigation: { + initialized: false, + init: HashNavigation.init.bind(swiper), + destroy: HashNavigation.destroy.bind(swiper), + setHash: HashNavigation.setHash.bind(swiper), + onHashCange: HashNavigation.onHashCange.bind(swiper), + }, + }); + }, + on: { + init: function init() { + var swiper = this; + if (swiper.params.hashNavigation.enabled) { + swiper.hashNavigation.init(); + } + }, + destroy: function destroy() { + var swiper = this; + if (swiper.params.hashNavigation.enabled) { + swiper.hashNavigation.destroy(); + } + }, + transitionEnd: function transitionEnd() { + var swiper = this; + if (swiper.hashNavigation.initialized) { + swiper.hashNavigation.setHash(); + } + }, + slideChange: function slideChange() { + var swiper = this; + if (swiper.hashNavigation.initialized && swiper.params.cssMode) { + swiper.hashNavigation.setHash(); + } + }, + }, + }; + + /* eslint no-underscore-dangle: "off" */ + + var Autoplay = { + run: function run() { + var swiper = this; + var $activeSlideEl = swiper.slides.eq(swiper.activeIndex); + var delay = swiper.params.autoplay.delay; + if ($activeSlideEl.attr('data-swiper-autoplay')) { + delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; + } + clearTimeout(swiper.autoplay.timeout); + swiper.autoplay.timeout = Utils.nextTick(function () { + if (swiper.params.autoplay.reverseDirection) { + if (swiper.params.loop) { + swiper.loopFix(); + swiper.slidePrev(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.isBeginning) { + swiper.slidePrev(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else { + swiper.autoplay.stop(); + } + } else if (swiper.params.loop) { + swiper.loopFix(); + swiper.slideNext(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.isEnd) { + swiper.slideNext(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else { + swiper.autoplay.stop(); + } + if (swiper.params.cssMode && swiper.autoplay.running) { swiper.autoplay.run(); } + }, delay); + }, + start: function start() { + var swiper = this; + if (typeof swiper.autoplay.timeout !== 'undefined') { return false; } + if (swiper.autoplay.running) { return false; } + swiper.autoplay.running = true; + swiper.emit('autoplayStart'); + swiper.autoplay.run(); + return true; + }, + stop: function stop() { + var swiper = this; + if (!swiper.autoplay.running) { return false; } + if (typeof swiper.autoplay.timeout === 'undefined') { return false; } + + if (swiper.autoplay.timeout) { + clearTimeout(swiper.autoplay.timeout); + swiper.autoplay.timeout = undefined; + } + swiper.autoplay.running = false; + swiper.emit('autoplayStop'); + return true; + }, + pause: function pause(speed) { + var swiper = this; + if (!swiper.autoplay.running) { return; } + if (swiper.autoplay.paused) { return; } + if (swiper.autoplay.timeout) { clearTimeout(swiper.autoplay.timeout); } + swiper.autoplay.paused = true; + if (speed === 0 || !swiper.params.autoplay.waitForTransition) { + swiper.autoplay.paused = false; + swiper.autoplay.run(); + } else { + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); + } + }, + }; + + var Autoplay$1 = { + name: 'autoplay', + params: { + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: true, + stopOnLastSlide: false, + reverseDirection: false, + }, + }, + create: function create() { + var swiper = this; + Utils.extend(swiper, { + autoplay: { + running: false, + paused: false, + run: Autoplay.run.bind(swiper), + start: Autoplay.start.bind(swiper), + stop: Autoplay.stop.bind(swiper), + pause: Autoplay.pause.bind(swiper), + onVisibilityChange: function onVisibilityChange() { + if (document.visibilityState === 'hidden' && swiper.autoplay.running) { + swiper.autoplay.pause(); + } + if (document.visibilityState === 'visible' && swiper.autoplay.paused) { + swiper.autoplay.run(); + swiper.autoplay.paused = false; + } + }, + onTransitionEnd: function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.$wrapperEl) { return; } + if (e.target !== this) { return; } + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); + swiper.autoplay.paused = false; + if (!swiper.autoplay.running) { + swiper.autoplay.stop(); + } else { + swiper.autoplay.run(); + } + }, + }, + }); + }, + on: { + init: function init() { + var swiper = this; + if (swiper.params.autoplay.enabled) { + swiper.autoplay.start(); + document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange); + } + }, + beforeTransitionStart: function beforeTransitionStart(speed, internal) { + var swiper = this; + if (swiper.autoplay.running) { + if (internal || !swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.pause(speed); + } else { + swiper.autoplay.stop(); + } + } + }, + sliderFirstMove: function sliderFirstMove() { + var swiper = this; + if (swiper.autoplay.running) { + if (swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.stop(); + } else { + swiper.autoplay.pause(); + } + } + }, + touchEnd: function touchEnd() { + var swiper = this; + if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.run(); + } + }, + destroy: function destroy() { + var swiper = this; + if (swiper.autoplay.running) { + swiper.autoplay.stop(); + } + document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange); + }, + }, + }; + + var Fade = { + setTranslate: function setTranslate() { + var swiper = this; + var slides = swiper.slides; + for (var i = 0; i < slides.length; i += 1) { + var $slideEl = swiper.slides.eq(i); + var offset = $slideEl[0].swiperSlideOffset; + var tx = -offset; + if (!swiper.params.virtualTranslate) { tx -= swiper.translate; } + var ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + var slideOpacity = swiper.params.fadeEffect.crossFade + ? Math.max(1 - Math.abs($slideEl[0].progress), 0) + : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); + $slideEl + .css({ + opacity: slideOpacity, + }) + .transform(("translate3d(" + tx + "px, " + ty + "px, 0px)")); + } + }, + setTransition: function setTransition(duration) { + var swiper = this; + var slides = swiper.slides; + var $wrapperEl = swiper.$wrapperEl; + slides.transition(duration); + if (swiper.params.virtualTranslate && duration !== 0) { + var eventTriggered = false; + slides.transitionEnd(function () { + if (eventTriggered) { return; } + if (!swiper || swiper.destroyed) { return; } + eventTriggered = true; + swiper.animating = false; + var triggerEvents = ['webkitTransitionEnd', 'transitionend']; + for (var i = 0; i < triggerEvents.length; i += 1) { + $wrapperEl.trigger(triggerEvents[i]); + } + }); + } + }, + }; + + var EffectFade = { + name: 'effect-fade', + params: { + fadeEffect: { + crossFade: false, + }, + }, + create: function create() { + var swiper = this; + Utils.extend(swiper, { + fadeEffect: { + setTranslate: Fade.setTranslate.bind(swiper), + setTransition: Fade.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit: function beforeInit() { + var swiper = this; + if (swiper.params.effect !== 'fade') { return; } + swiper.classNames.push(((swiper.params.containerModifierClass) + "fade")); + var overwriteParams = { + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + }, + setTranslate: function setTranslate() { + var swiper = this; + if (swiper.params.effect !== 'fade') { return; } + swiper.fadeEffect.setTranslate(); + }, + setTransition: function setTransition(duration) { + var swiper = this; + if (swiper.params.effect !== 'fade') { return; } + swiper.fadeEffect.setTransition(duration); + }, + }, + }; + + var Cube = { + setTranslate: function setTranslate() { + var swiper = this; + var $el = swiper.$el; + var $wrapperEl = swiper.$wrapperEl; + var slides = swiper.slides; + var swiperWidth = swiper.width; + var swiperHeight = swiper.height; + var rtl = swiper.rtlTranslate; + var swiperSize = swiper.size; + var params = swiper.params.cubeEffect; + var isHorizontal = swiper.isHorizontal(); + var isVirtual = swiper.virtual && swiper.params.virtual.enabled; + var wrapperRotate = 0; + var $cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow'); + if ($cubeShadowEl.length === 0) { + $cubeShadowEl = $('
      '); + $wrapperEl.append($cubeShadowEl); + } + $cubeShadowEl.css({ height: (swiperWidth + "px") }); + } else { + $cubeShadowEl = $el.find('.swiper-cube-shadow'); + if ($cubeShadowEl.length === 0) { + $cubeShadowEl = $('
      '); + $el.append($cubeShadowEl); + } + } + } + for (var i = 0; i < slides.length; i += 1) { + var $slideEl = slides.eq(i); + var slideIndex = i; + if (isVirtual) { + slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10); + } + var slideAngle = slideIndex * 90; + var round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + var progress = Math.max(Math.min($slideEl[0].progress, 1), -1); + var tx = 0; + var ty = 0; + var tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + (round * 4 * swiperSize); + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = (3 * swiperSize) + (swiperSize * 4 * round); + } + if (rtl) { + tx = -tx; + } + + if (!isHorizontal) { + ty = tx; + tx = 0; + } + + var transform = "rotateX(" + (isHorizontal ? 0 : -slideAngle) + "deg) rotateY(" + (isHorizontal ? slideAngle : 0) + "deg) translate3d(" + tx + "px, " + ty + "px, " + tz + "px)"; + if (progress <= 1 && progress > -1) { + wrapperRotate = (slideIndex * 90) + (progress * 90); + if (rtl) { wrapperRotate = (-slideIndex * 90) - (progress * 90); } + } + $slideEl.transform(transform); + if (params.slideShadows) { + // Set shadows + var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + if (shadowBefore.length === 0) { + shadowBefore = $(("
      ")); + $slideEl.append(shadowBefore); + } + if (shadowAfter.length === 0) { + shadowAfter = $(("
      ")); + $slideEl.append(shadowAfter); + } + if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); } + if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); } + } + } + $wrapperEl.css({ + '-webkit-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), + '-moz-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), + '-ms-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), + 'transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), + }); + + if (params.shadow) { + if (isHorizontal) { + $cubeShadowEl.transform(("translate3d(0px, " + ((swiperWidth / 2) + params.shadowOffset) + "px, " + (-swiperWidth / 2) + "px) rotateX(90deg) rotateZ(0deg) scale(" + (params.shadowScale) + ")")); + } else { + var shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90); + var multiplier = 1.5 - ( + (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2) + + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2) + ); + var scale1 = params.shadowScale; + var scale2 = params.shadowScale / multiplier; + var offset = params.shadowOffset; + $cubeShadowEl.transform(("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + ((swiperHeight / 2) + offset) + "px, " + (-swiperHeight / 2 / scale2) + "px) rotateX(-90deg)")); + } + } + var zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0; + $wrapperEl + .transform(("translate3d(0px,0," + zFactor + "px) rotateX(" + (swiper.isHorizontal() ? 0 : wrapperRotate) + "deg) rotateY(" + (swiper.isHorizontal() ? -wrapperRotate : 0) + "deg)")); + }, + setTransition: function setTransition(duration) { + var swiper = this; + var $el = swiper.$el; + var slides = swiper.slides; + slides + .transition(duration) + .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') + .transition(duration); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + $el.find('.swiper-cube-shadow').transition(duration); + } + }, + }; + + var EffectCube = { + name: 'effect-cube', + params: { + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94, + }, + }, + create: function create() { + var swiper = this; + Utils.extend(swiper, { + cubeEffect: { + setTranslate: Cube.setTranslate.bind(swiper), + setTransition: Cube.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit: function beforeInit() { + var swiper = this; + if (swiper.params.effect !== 'cube') { return; } + swiper.classNames.push(((swiper.params.containerModifierClass) + "cube")); + swiper.classNames.push(((swiper.params.containerModifierClass) + "3d")); + var overwriteParams = { + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + }, + setTranslate: function setTranslate() { + var swiper = this; + if (swiper.params.effect !== 'cube') { return; } + swiper.cubeEffect.setTranslate(); + }, + setTransition: function setTransition(duration) { + var swiper = this; + if (swiper.params.effect !== 'cube') { return; } + swiper.cubeEffect.setTransition(duration); + }, + }, + }; + + var Flip = { + setTranslate: function setTranslate() { + var swiper = this; + var slides = swiper.slides; + var rtl = swiper.rtlTranslate; + for (var i = 0; i < slides.length; i += 1) { + var $slideEl = slides.eq(i); + var progress = $slideEl[0].progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min($slideEl[0].progress, 1), -1); + } + var offset = $slideEl[0].swiperSlideOffset; + var rotate = -180 * progress; + var rotateY = rotate; + var rotateX = 0; + var tx = -offset; + var ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + + $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + + if (swiper.params.flipEffect.slideShadows) { + // Set shadows + var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + if (shadowBefore.length === 0) { + shadowBefore = $(("
      ")); + $slideEl.append(shadowBefore); + } + if (shadowAfter.length === 0) { + shadowAfter = $(("
      ")); + $slideEl.append(shadowAfter); + } + if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); } + if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); } + } + $slideEl + .transform(("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)")); + } + }, + setTransition: function setTransition(duration) { + var swiper = this; + var slides = swiper.slides; + var activeIndex = swiper.activeIndex; + var $wrapperEl = swiper.$wrapperEl; + slides + .transition(duration) + .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') + .transition(duration); + if (swiper.params.virtualTranslate && duration !== 0) { + var eventTriggered = false; + // eslint-disable-next-line + slides.eq(activeIndex).transitionEnd(function onTransitionEnd() { + if (eventTriggered) { return; } + if (!swiper || swiper.destroyed) { return; } + // if (!$(this).hasClass(swiper.params.slideActiveClass)) return; + eventTriggered = true; + swiper.animating = false; + var triggerEvents = ['webkitTransitionEnd', 'transitionend']; + for (var i = 0; i < triggerEvents.length; i += 1) { + $wrapperEl.trigger(triggerEvents[i]); + } + }); + } + }, + }; + + var EffectFlip = { + name: 'effect-flip', + params: { + flipEffect: { + slideShadows: true, + limitRotation: true, + }, + }, + create: function create() { + var swiper = this; + Utils.extend(swiper, { + flipEffect: { + setTranslate: Flip.setTranslate.bind(swiper), + setTransition: Flip.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit: function beforeInit() { + var swiper = this; + if (swiper.params.effect !== 'flip') { return; } + swiper.classNames.push(((swiper.params.containerModifierClass) + "flip")); + swiper.classNames.push(((swiper.params.containerModifierClass) + "3d")); + var overwriteParams = { + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + }, + setTranslate: function setTranslate() { + var swiper = this; + if (swiper.params.effect !== 'flip') { return; } + swiper.flipEffect.setTranslate(); + }, + setTransition: function setTransition(duration) { + var swiper = this; + if (swiper.params.effect !== 'flip') { return; } + swiper.flipEffect.setTransition(duration); + }, + }, + }; + + var Coverflow = { + setTranslate: function setTranslate() { + var swiper = this; + var swiperWidth = swiper.width; + var swiperHeight = swiper.height; + var slides = swiper.slides; + var $wrapperEl = swiper.$wrapperEl; + var slidesSizesGrid = swiper.slidesSizesGrid; + var params = swiper.params.coverflowEffect; + var isHorizontal = swiper.isHorizontal(); + var transform = swiper.translate; + var center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2); + var rotate = isHorizontal ? params.rotate : -params.rotate; + var translate = params.depth; + // Each slide offset from center + for (var i = 0, length = slides.length; i < length; i += 1) { + var $slideEl = slides.eq(i); + var slideSize = slidesSizesGrid[i]; + var slideOffset = $slideEl[0].swiperSlideOffset; + var offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier; + + var rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + var translateZ = -translate * Math.abs(offsetMultiplier); + + var stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = ((parseFloat(params.stretch) / 100) * slideSize); + } + var translateY = isHorizontal ? 0 : stretch * (offsetMultiplier); + var translateX = isHorizontal ? stretch * (offsetMultiplier) : 0; + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) { translateX = 0; } + if (Math.abs(translateY) < 0.001) { translateY = 0; } + if (Math.abs(translateZ) < 0.001) { translateZ = 0; } + if (Math.abs(rotateY) < 0.001) { rotateY = 0; } + if (Math.abs(rotateX) < 0.001) { rotateX = 0; } + + var slideTransform = "translate3d(" + translateX + "px," + translateY + "px," + translateZ + "px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)"; + + $slideEl.transform(slideTransform); + $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + if ($shadowBeforeEl.length === 0) { + $shadowBeforeEl = $(("
      ")); + $slideEl.append($shadowBeforeEl); + } + if ($shadowAfterEl.length === 0) { + $shadowAfterEl = $(("
      ")); + $slideEl.append($shadowAfterEl); + } + if ($shadowBeforeEl.length) { $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; } + if ($shadowAfterEl.length) { $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; } + } + } + + // Set correct perspective for IE10 + if (Support.pointerEvents || Support.prefixedPointerEvents) { + var ws = $wrapperEl[0].style; + ws.perspectiveOrigin = center + "px 50%"; + } + }, + setTransition: function setTransition(duration) { + var swiper = this; + swiper.slides + .transition(duration) + .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') + .transition(duration); + }, + }; + + var EffectCoverflow = { + name: 'effect-coverflow', + params: { + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + modifier: 1, + slideShadows: true, + }, + }, + create: function create() { + var swiper = this; + Utils.extend(swiper, { + coverflowEffect: { + setTranslate: Coverflow.setTranslate.bind(swiper), + setTransition: Coverflow.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit: function beforeInit() { + var swiper = this; + if (swiper.params.effect !== 'coverflow') { return; } + + swiper.classNames.push(((swiper.params.containerModifierClass) + "coverflow")); + swiper.classNames.push(((swiper.params.containerModifierClass) + "3d")); + + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }, + setTranslate: function setTranslate() { + var swiper = this; + if (swiper.params.effect !== 'coverflow') { return; } + swiper.coverflowEffect.setTranslate(); + }, + setTransition: function setTransition(duration) { + var swiper = this; + if (swiper.params.effect !== 'coverflow') { return; } + swiper.coverflowEffect.setTransition(duration); + }, + }, + }; + + var Thumbs = { + init: function init() { + var swiper = this; + var ref = swiper.params; + var thumbsParams = ref.thumbs; + var SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Utils.extend(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false, + }); + Utils.extend(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false, + }); + } else if (Utils.isObject(thumbsParams.swiper)) { + swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, { + watchSlidesVisibility: true, + watchSlidesProgress: true, + slideToClickedSlide: false, + })); + swiper.thumbs.swiperCreated = true; + } + swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick); + }, + onThumbClick: function onThumbClick() { + var swiper = this; + var thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) { return; } + var clickedIndex = thumbsSwiper.clickedIndex; + var clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) { return; } + if (typeof clickedIndex === 'undefined' || clickedIndex === null) { return; } + var slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + var currentIndex = swiper.activeIndex; + if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) { + swiper.loopFix(); + // eslint-disable-next-line + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + currentIndex = swiper.activeIndex; + } + var prevIndex = swiper.slides.eq(currentIndex).prevAll(("[data-swiper-slide-index=\"" + slideToIndex + "\"]")).eq(0).index(); + var nextIndex = swiper.slides.eq(currentIndex).nextAll(("[data-swiper-slide-index=\"" + slideToIndex + "\"]")).eq(0).index(); + if (typeof prevIndex === 'undefined') { slideToIndex = nextIndex; } + else if (typeof nextIndex === 'undefined') { slideToIndex = prevIndex; } + else if (nextIndex - currentIndex < currentIndex - prevIndex) { slideToIndex = nextIndex; } + else { slideToIndex = prevIndex; } + } + swiper.slideTo(slideToIndex); + }, + update: function update(initial) { + var swiper = this; + var thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) { return; } + + var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' + ? thumbsSwiper.slidesPerViewDynamic() + : thumbsSwiper.params.slidesPerView; + + var autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + var useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + var currentThumbsIndex = thumbsSwiper.activeIndex; + var newThumbsIndex; + var direction; + if (thumbsSwiper.params.loop) { + if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) { + thumbsSwiper.loopFix(); + // eslint-disable-next-line + thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft; + currentThumbsIndex = thumbsSwiper.activeIndex; + } + // Find actual thumbs index to slide to + var prevThumbsIndex = thumbsSwiper.slides + .eq(currentThumbsIndex) + .prevAll(("[data-swiper-slide-index=\"" + (swiper.realIndex) + "\"]")).eq(0) + .index(); + var nextThumbsIndex = thumbsSwiper.slides + .eq(currentThumbsIndex) + .nextAll(("[data-swiper-slide-index=\"" + (swiper.realIndex) + "\"]")).eq(0) + .index(); + if (typeof prevThumbsIndex === 'undefined') { newThumbsIndex = nextThumbsIndex; } + else if (typeof nextThumbsIndex === 'undefined') { newThumbsIndex = prevThumbsIndex; } + else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = currentThumbsIndex; } + else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = nextThumbsIndex; } + else { newThumbsIndex = prevThumbsIndex; } + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - slidesPerView + 1; + } + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + + // Activate thumbs + var thumbsToActivate = 1; + var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + + thumbsToActivate = Math.floor(thumbsToActivate); + + thumbsSwiper.slides.removeClass(thumbActiveClass); + if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) { + for (var i = 0; i < thumbsToActivate; i += 1) { + thumbsSwiper.$wrapperEl.children(("[data-swiper-slide-index=\"" + (swiper.realIndex + i) + "\"]")).addClass(thumbActiveClass); + } + } else { + for (var i$1 = 0; i$1 < thumbsToActivate; i$1 += 1) { + thumbsSwiper.slides.eq(swiper.realIndex + i$1).addClass(thumbActiveClass); + } + } + }, + }; + var Thumbs$1 = { + name: 'thumbs', + params: { + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-container-thumbs', + }, + }, + create: function create() { + var swiper = this; + Utils.extend(swiper, { + thumbs: { + swiper: null, + init: Thumbs.init.bind(swiper), + update: Thumbs.update.bind(swiper), + onThumbClick: Thumbs.onThumbClick.bind(swiper), + }, + }); + }, + on: { + beforeInit: function beforeInit() { + var swiper = this; + var ref = swiper.params; + var thumbs = ref.thumbs; + if (!thumbs || !thumbs.swiper) { return; } + swiper.thumbs.init(); + swiper.thumbs.update(true); + }, + slideChange: function slideChange() { + var swiper = this; + if (!swiper.thumbs.swiper) { return; } + swiper.thumbs.update(); + }, + update: function update() { + var swiper = this; + if (!swiper.thumbs.swiper) { return; } + swiper.thumbs.update(); + }, + resize: function resize() { + var swiper = this; + if (!swiper.thumbs.swiper) { return; } + swiper.thumbs.update(); + }, + observerUpdate: function observerUpdate() { + var swiper = this; + if (!swiper.thumbs.swiper) { return; } + swiper.thumbs.update(); + }, + setTransition: function setTransition(duration) { + var swiper = this; + var thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) { return; } + thumbsSwiper.setTransition(duration); + }, + beforeDestroy: function beforeDestroy() { + var swiper = this; + var thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) { return; } + if (swiper.thumbs.swiperCreated && thumbsSwiper) { + thumbsSwiper.destroy(); + } + }, + }, + }; + + // Swiper Class + + var components = [ + Device$1, + Support$1, + Browser$1, + Resize, + Observer$1, + Virtual$1, + Keyboard$1, + Mousewheel$1, + Navigation$1, + Pagination$1, + Scrollbar$1, + Parallax$1, + Zoom$1, + Lazy$1, + Controller$1, + A11y, + History$1, + HashNavigation$1, + Autoplay$1, + EffectFade, + EffectCube, + EffectFlip, + EffectCoverflow, + Thumbs$1 + ]; + + if (typeof Swiper.use === 'undefined') { + Swiper.use = Swiper.Class.use; + Swiper.installModule = Swiper.Class.installModule; + } + + Swiper.use(components); + + return Swiper; + +}))); +//# sourceMappingURL=swiper.js.map diff --git a/static/libs/swiper-5.3.8/package/js/swiper.js.map b/static/libs/swiper-5.3.8/package/js/swiper.js.map new file mode 100644 index 0000000..ca3edd0 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/js/swiper.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper.js.map","sources":["../../node_modules/ssr-window/dist/ssr-window.esm.js","../../node_modules/dom7/dist/dom7.modular.js","../../src/utils/dom.js","../../src/utils/utils.js","../../src/utils/support.js","../../src/utils/class.js","../../src/components/core/update/updateSize.js","../../src/components/core/update/updateSlides.js","../../src/components/core/update/updateAutoHeight.js","../../src/components/core/update/updateSlidesOffset.js","../../src/components/core/update/updateSlidesProgress.js","../../src/components/core/update/updateProgress.js","../../src/components/core/update/updateSlidesClasses.js","../../src/components/core/update/updateActiveIndex.js","../../src/components/core/update/updateClickedSlide.js","../../src/components/core/update/index.js","../../src/components/core/translate/getTranslate.js","../../src/components/core/translate/setTranslate.js","../../src/components/core/translate/minTranslate.js","../../src/components/core/translate/maxTranslate.js","../../src/components/core/translate/translateTo.js","../../src/components/core/translate/index.js","../../src/components/core/transition/setTransition.js","../../src/components/core/transition/transitionStart.js","../../src/components/core/transition/transitionEnd.js","../../src/components/core/transition/index.js","../../src/components/core/slide/slideTo.js","../../src/components/core/slide/slideToLoop.js","../../src/components/core/slide/slideNext.js","../../src/components/core/slide/slidePrev.js","../../src/components/core/slide/slideReset.js","../../src/components/core/slide/slideToClosest.js","../../src/components/core/slide/slideToClickedSlide.js","../../src/components/core/slide/index.js","../../src/components/core/loop/loopCreate.js","../../src/components/core/loop/loopFix.js","../../src/components/core/loop/loopDestroy.js","../../src/components/core/loop/index.js","../../src/components/core/grab-cursor/setGrabCursor.js","../../src/components/core/grab-cursor/unsetGrabCursor.js","../../src/components/core/grab-cursor/index.js","../../src/components/core/manipulation/appendSlide.js","../../src/components/core/manipulation/prependSlide.js","../../src/components/core/manipulation/addSlide.js","../../src/components/core/manipulation/removeSlide.js","../../src/components/core/manipulation/removeAllSlides.js","../../src/components/core/manipulation/index.js","../../src/utils/device.js","../../src/components/core/events/onTouchStart.js","../../src/components/core/events/onTouchMove.js","../../src/components/core/events/onTouchEnd.js","../../src/components/core/events/onResize.js","../../src/components/core/events/onClick.js","../../src/components/core/events/onScroll.js","../../src/components/core/events/index.js","../../src/components/core/breakpoints/setBreakpoint.js","../../src/components/core/breakpoints/getBreakpoint.js","../../src/components/core/breakpoints/index.js","../../src/components/core/classes/addClasses.js","../../src/components/core/classes/removeClasses.js","../../src/components/core/classes/index.js","../../src/components/core/images/loadImage.js","../../src/components/core/images/preloadImages.js","../../src/components/core/images/index.js","../../src/components/core/check-overflow/index.js","../../src/components/core/defaults.js","../../src/components/core/core-class.js","../../src/modules/device/device.js","../../src/modules/support/support.js","../../src/utils/browser.js","../../src/modules/browser/browser.js","../../src/modules/resize/resize.js","../../src/modules/observer/observer.js","../../src/components/virtual/virtual.js","../../src/components/keyboard/keyboard.js","../../src/components/mousewheel/mousewheel.js","../../src/components/navigation/navigation.js","../../src/components/pagination/pagination.js","../../src/components/scrollbar/scrollbar.js","../../src/components/parallax/parallax.js","../../src/components/zoom/zoom.js","../../src/components/lazy/lazy.js","../../src/components/controller/controller.js","../../src/components/a11y/a11y.js","../../src/components/history/history.js","../../src/components/hash-navigation/hash-navigation.js","../../src/components/autoplay/autoplay.js","../../src/components/effect-fade/effect-fade.js","../../src/components/effect-cube/effect-cube.js","../../src/components/effect-flip/effect-flip.js","../../src/components/effect-coverflow/effect-coverflow.js","../../src/components/thumbs/thumbs.js","../../src/swiper.js"],"sourcesContent":["/**\n * SSR Window 1.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2018, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: July 18, 2018\n */\nvar doc = (typeof document === 'undefined') ? {\n body: {},\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n activeElement: {\n blur: function blur() {},\n nodeName: '',\n },\n querySelector: function querySelector() {\n return null;\n },\n querySelectorAll: function querySelectorAll() {\n return [];\n },\n getElementById: function getElementById() {\n return null;\n },\n createEvent: function createEvent() {\n return {\n initEvent: function initEvent() {},\n };\n },\n createElement: function createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function setAttribute() {},\n getElementsByTagName: function getElementsByTagName() {\n return [];\n },\n };\n },\n location: { hash: '' },\n} : document; // eslint-disable-line\n\nvar win = (typeof window === 'undefined') ? {\n document: doc,\n navigator: {\n userAgent: '',\n },\n location: {},\n history: {},\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n getComputedStyle: function getComputedStyle() {\n return {\n getPropertyValue: function getPropertyValue() {\n return '';\n },\n };\n },\n Image: function Image() {},\n Date: function Date() {},\n screen: {},\n setTimeout: function setTimeout() {},\n clearTimeout: function clearTimeout() {},\n} : window; // eslint-disable-line\n\nexport { win as window, doc as document };\n","/**\n * Dom7 2.1.3\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2019, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: February 11, 2019\n */\nimport { document, window } from 'ssr-window';\n\nclass Dom7 {\n constructor(arr) {\n const self = this;\n // Create array-like object\n for (let i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n self.length = arr.length;\n // Return collection with methods\n return this;\n }\n}\n\nfunction $(selector, context) {\n const arr = [];\n let i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n let els;\n let tempParent;\n const html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(':~]/)) {\n // Pure ID selector\n els = [document.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || document).querySelectorAll(selector.trim());\n }\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) arr.push(els[i]);\n }\n }\n } else if (selector.nodeType || selector === window || selector === document) {\n // Node/element\n arr.push(selector);\n } else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n}\n\n$.fn = Dom7.prototype;\n$.Class = Dom7;\n$.Dom7 = Dom7;\n\nfunction unique(arr) {\n const uniqueArray = [];\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group1) => group1.toUpperCase());\n}\n\nfunction requestAnimationFrame(callback) {\n if (window.requestAnimationFrame) return window.requestAnimationFrame(callback);\n else if (window.webkitRequestAnimationFrame) return window.webkitRequestAnimationFrame(callback);\n return window.setTimeout(callback, 1000 / 60);\n}\nfunction cancelAnimationFrame(id) {\n if (window.cancelAnimationFrame) return window.cancelAnimationFrame(id);\n else if (window.webkitCancelAnimationFrame) return window.webkitCancelAnimationFrame(id);\n return window.clearTimeout(id);\n}\n\n// Classes and attributes\nfunction addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);\n }\n }\n return this;\n}\nfunction removeClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);\n }\n }\n return this;\n}\nfunction hasClass(className) {\n if (!this[0]) return false;\n return this[0].classList.contains(className);\n}\nfunction toggleClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);\n }\n }\n return this;\n}\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n }\n\n // Set attrs\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n // eslint-disable-next-line\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\n// eslint-disable-next-line\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n // eslint-disable-next-line\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n}\nfunction data(key, value) {\n let el;\n if (typeof value === 'undefined') {\n el = this[0];\n // Get value\n if (el) {\n if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n return undefined;\n }\n\n // Set value\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n if (el.dataset) {\n // eslint-disable-next-line\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n // eslint-disable-next-line\n const attr = el.attributes[i];\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n // eslint-disable-next-line\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;\n else if (dataset[key] === 'true') dataset[key] = true;\n else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n return dataset;\n}\nfunction val(value) {\n const dom = this;\n if (typeof value === 'undefined') {\n if (dom[0]) {\n if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {\n const values = [];\n for (let i = 0; i < dom[0].selectedOptions.length; i += 1) {\n values.push(dom[0].selectedOptions[i].value);\n }\n return values;\n }\n return dom[0].value;\n }\n return undefined;\n }\n\n for (let i = 0; i < dom.length; i += 1) {\n const el = dom[i];\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n return dom;\n}\n// Transforms\n// eslint-disable-next-line\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n if (typeof duration !== 'string') {\n duration = `${duration}ms`; // eslint-disable-line\n }\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n}\n// Events\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) listener.apply(target, eventData);\n else {\n const parents = $(target).parents(); // eslint-disable-line\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n const events = eventType.split(' ');\n let j;\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n const events = eventType.split(' ');\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n}\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger(...args) {\n const events = args[0].split(' ');\n const eventData = args[1];\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let evt;\n try {\n evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = document.createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n const events = ['webkitTransitionEnd', 'transitionend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\nfunction animationEnd(callback) {\n const events = ['webkitAnimationEnd', 'animationend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\n// Sizing/Styles\nfunction width() {\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction height() {\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: (box.top + scrollTop) - clientTop,\n left: (box.left + scrollLeft) - clientLeft,\n };\n }\n\n return null;\n}\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n}\nfunction show() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n}\nfunction styles() {\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n let i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (let prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\n\n// Dom manipulation\nfunction toArray() {\n const arr = [];\n for (let i = 0; i < this.length; i += 1) {\n arr.push(this[i]);\n }\n return arr;\n}\n// Iterate over the collection passing elements to `callback`\nfunction each(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], i, this[i]) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction forEach(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], this[i], i) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction filter(callback) {\n const matchedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);\n }\n return new Dom7(matchedItems);\n}\nfunction map(callback) {\n const modifiedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n modifiedItems.push(callback.call(dom[i], i, dom[i]));\n }\n return new Dom7(modifiedItems);\n}\n// eslint-disable-next-line\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\n// eslint-disable-next-line\nfunction text(text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n return null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n } else if (selector === document) return el === document;\n else if (selector === window) return el === window;\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n return false;\n}\nfunction indexOf(el) {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i] === el) return i;\n }\n return -1;\n}\nfunction index() {\n let child = this[0];\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\n// eslint-disable-next-line\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n let returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) return new Dom7([]);\n return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n}\nfunction append(...args) {\n let newChild;\n\n for (let k = 0; k < args.length; k += 1) {\n newChild = args[k];\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n// eslint-disable-next-line\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\nfunction prepend(newChild) {\n let i;\n let j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\nfunction insertBefore(selector) {\n const before = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\nfunction insertAfter(selector) {\n const after = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return new Dom7([this[0].nextElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return new Dom7(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return new Dom7(prevEls);\n}\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(unique(parents));\n}\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(unique(parents));\n}\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n const foundElements = [];\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n}\nfunction children(selector) {\n const children = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].childNodes;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return new Dom7(unique(children));\n}\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction detach() {\n return this.remove();\n}\nfunction add(...args) {\n const dom = this;\n let i;\n let j;\n for (i = 0; i < args.length; i += 1) {\n const toAdd = $(args[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n return dom;\n}\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n el.textContent = '';\n }\n }\n return this;\n}\n\nfunction scrollTo(...args) {\n let [left, top, duration, easing, callback] = args;\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n if (typeof easing === 'undefined') easing = 'swing';\n\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n let scrollLeft; // eslint-disable-line\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) return;\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : (0.5 - (Math.cos(progress * Math.PI) / 2));\n let done;\n if (animateTop) scrollTop = currentTop + (easeProgress * (newTop - currentTop));\n if (animateLeft) scrollLeft = currentLeft + (easeProgress * (newLeft - currentLeft));\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n requestAnimationFrame(render);\n }\n requestAnimationFrame(render);\n });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing', // or 'linear'\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n }, initialParams),\n\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - (Math.cos(progress * Math.PI) / 2);\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop() {\n if (a.frameId) {\n cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done(complete) {\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n const elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each((index, el) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n elements[index] = {\n container: el,\n };\n Object.keys(props).forEach((prop) => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue,\n };\n });\n });\n\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress;\n // let el;\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n if (startTime === null) {\n startTime = time;\n }\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), ((startTime + params.duration) - time < 0 ? 0 : (startTime + params.duration) - time), startTime);\n }\n\n elements.forEach((element) => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach((prop) => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const { initialValue, finalValue, unit } = el[prop];\n el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));\n const currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (finalValue < initialValue && currentValue <= finalValue)) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return;\n // Then call\n a.frameId = requestAnimationFrame(render);\n }\n a.frameId = requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = ('resize scroll').split(' ');\nfunction eventShortcut(name, ...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();\n else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return this.on(name, ...args);\n}\n\nfunction click(...args) {\n return eventShortcut.bind(this)('click', ...args);\n}\nfunction blur(...args) {\n return eventShortcut.bind(this)('blur', ...args);\n}\nfunction focus(...args) {\n return eventShortcut.bind(this)('focus', ...args);\n}\nfunction focusin(...args) {\n return eventShortcut.bind(this)('focusin', ...args);\n}\nfunction focusout(...args) {\n return eventShortcut.bind(this)('focusout', ...args);\n}\nfunction keyup(...args) {\n return eventShortcut.bind(this)('keyup', ...args);\n}\nfunction keydown(...args) {\n return eventShortcut.bind(this)('keydown', ...args);\n}\nfunction keypress(...args) {\n return eventShortcut.bind(this)('keypress', ...args);\n}\nfunction submit(...args) {\n return eventShortcut.bind(this)('submit', ...args);\n}\nfunction change(...args) {\n return eventShortcut.bind(this)('change', ...args);\n}\nfunction mousedown(...args) {\n return eventShortcut.bind(this)('mousedown', ...args);\n}\nfunction mousemove(...args) {\n return eventShortcut.bind(this)('mousemove', ...args);\n}\nfunction mouseup(...args) {\n return eventShortcut.bind(this)('mouseup', ...args);\n}\nfunction mouseenter(...args) {\n return eventShortcut.bind(this)('mouseenter', ...args);\n}\nfunction mouseleave(...args) {\n return eventShortcut.bind(this)('mouseleave', ...args);\n}\nfunction mouseout(...args) {\n return eventShortcut.bind(this)('mouseout', ...args);\n}\nfunction mouseover(...args) {\n return eventShortcut.bind(this)('mouseover', ...args);\n}\nfunction touchstart(...args) {\n return eventShortcut.bind(this)('touchstart', ...args);\n}\nfunction touchend(...args) {\n return eventShortcut.bind(this)('touchend', ...args);\n}\nfunction touchmove(...args) {\n return eventShortcut.bind(this)('touchmove', ...args);\n}\nfunction resize(...args) {\n return eventShortcut.bind(this)('resize', ...args);\n}\nfunction scroll(...args) {\n return eventShortcut.bind(this)('scroll', ...args);\n}\n\nexport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, prop, data, removeData, dataset, val, transform, transition, on, off, once, trigger, transitionEnd, animationEnd, width, outerWidth, height, outerHeight, offset, hide, show, styles, css, toArray, each, forEach, filter, map, html, text, is, indexOf, index, eq, append, appendTo, prepend, prependTo, insertBefore, insertAfter, next, nextAll, prev, prevAll, siblings, parent, parents, closest, find, children, remove, detach, add, empty, scrollTo, scrollTop, scrollLeft, animate, stop, click, blur, focus, focusin, focusout, keyup, keydown, keypress, submit, change, mousedown, mousemove, mouseup, mouseenter, mouseleave, mouseout, mouseover, touchstart, touchend, touchmove, resize, scroll };\n","import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n add,\n styles,\n} from 'dom7/dist/dom7.modular';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n add,\n styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n});\n\nexport default $;\n","import { window } from 'ssr-window';\n\nconst Utils = {\n deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n },\n nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n },\n now() {\n return Date.now();\n },\n getTranslate(el, axis = 'x') {\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n },\n parseUrlQuery(url) {\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n return query;\n },\n isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend(...args) {\n const to = Object(args[0]);\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n};\nexport default Utils;\n","import { window, document } from 'ssr-window';\n\nconst Support = (function Support() {\n return {\n touch: (window.Modernizr && window.Modernizr.touch === true) || (function checkTouch() {\n return !!((window.navigator.maxTouchPoints > 0) || ('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch));\n }()),\n\n pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints > 0,\n\n observer: (function checkObserver() {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n }()),\n };\n}());\n\nexport default Support;\n","import Utils from './utils';\n\nclass SwiperClass {\n constructor(params = {}) {\n const self = this;\n self.params = params;\n\n // Events\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n }\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n const moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach((m) => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nexport default SwiperClass;\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { window } from 'ssr-window';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const params = swiper.params;\n\n const {\n $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n function slidesForMargin(slideIndex) {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.snapGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '' });\n\n let slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n\n // Calc slides\n let slideSize;\n const slidesPerColumn = params.slidesPerColumn;\n const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0\n ? params.slidesPerGroup\n : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;\n\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - (column * slidesPerColumn);\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide.css(\n `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n );\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n const slideStyles = window.getComputedStyle(slide[0], null);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal()\n ? slide.outerWidth(true)\n : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n const width = parseFloat(slideStyles.getPropertyValue('width'));\n const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n }\n } else {\n const height = parseFloat(slideStyles.getPropertyValue('height'));\n const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = height + marginTop + marginBottom;\n } else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n if (swiper.isHorizontal()) {\n slides[i].style.width = `${slideSize}px`;\n } else {\n slides[i].style.height = `${slideSize}px`;\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n let newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Utils.extend(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\n","export default function (speed) {\n const swiper = this;\n const activeSlides = [];\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((index, slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length) break;\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function () {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n const slideProgress = (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n || (slideAfter > 1 && slideAfter <= swiper.size)\n || (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / (translatesDiff);\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Utils.extend(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function () {\n const swiper = this;\n\n const {\n slides, params, $wrapperEl, activeIndex, realIndex,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) slideFound = true;\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = $(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function (axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const {\n params, rtlTranslate: rtl, translate, $wrapperEl,\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function (translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function () {\n return (-this.snapGrid[0]);\n}\n","export default function () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n","export default function (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n\n const {\n params,\n wrapperEl,\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","export default function (duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","export default function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}\n","export default function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex, params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}\n","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n let t = -translate;\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating } = swiper;\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params, animating, snapGrid, slidesGrid, rtlTranslate,\n } = swiper;\n\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));\n\n const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach((snap) => {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n let prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((index, el) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function () {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function () {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","import Support from '../../../utils/support';\n\nexport default function (moving) {\n const swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n const el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","import Support from '../../../utils/support';\n\nexport default function () {\n const swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n swiper.el.style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","import Support from '../../../utils/support';\n\nexport default function (index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function () {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\n\nexport default {\n appendSlide,\n prependSlide,\n addSlide,\n removeSlide,\n removeAllSlides,\n};\n","import { window } from 'ssr-window';\nimport Support from './support';\n\nconst Device = (function Device() {\n const platform = window.navigator.platform;\n const ua = window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!(window.cordova || window.phonegap),\n phonegap: !!(window.cordova || window.phonegap),\n electron: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n if (!ipad\n && macos\n && Support.touch\n && (\n (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9\n || (screenWidth === 834 && screenHeight === 1194) // Pro 11\n || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5\n || (screenWidth === 768 && screenHeight === 1024) // other\n )\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone))\n || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron;\n if (device.desktop) {\n device.electron = electron;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Export object\n return device;\n}());\n\nexport default Device;\n","import { window, document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= window.screen.width - edgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.formElements)) preventDefault = false;\n if (\n document.activeElement\n && $(document.activeElement).is(data.formElements)\n && document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type === 'mousemove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if ((diffX * diffX) + (diffY * diffY) >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const {\n params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = Utils.now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = Utils.now();\n Utils.nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeModeMomentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {\n const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function () {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function (e) {\n const swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function () {\n const swiper = this;\n const { wrapperEl, rtlTranslate } = swiper;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { document } from 'ssr-window';\nimport Device from '../../../utils/device';\nimport Support from '../../../utils/support';\n\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n const swiper = this;\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n const swiper = this;\n\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const {\n activeIndex, initialized, loopedSlides = 0, params, $el,\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {\n const paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = params.slidesPerColumn > 1;\n const isMultiRow = breakpointParams.slidesPerColumn > 1;\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}multirow`);\n if (breakpointParams.slidesPerColumnFill === 'column') {\n $el.addClass(`${params.containerModifierClass}multirow-column`);\n }\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n Utils.extend(swiper.params, breakpointParams);\n\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n }\n}\n","import { window } from 'ssr-window';\n\nexport default function (breakpoints) {\n // Get breakpoint for window width\n if (!breakpoints) return undefined;\n let breakpoint = false;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = window.innerHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (value <= window.innerWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\n\nexport default { setBreakpoint, getBreakpoint };\n","import Device from '../../../utils/device';\n\nexport default function () {\n const swiper = this;\n const {\n classNames, params, rtl, $el,\n } = swiper;\n const suffixes = [];\n\n suffixes.push('initialized');\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n if (params.slidesPerColumnFill === 'column') {\n suffixes.push('multirow-column');\n }\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n\n if (params.cssMode) {\n suffixes.push('css-mode');\n }\n\n suffixes.forEach((suffix) => {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n}\n","export default function () {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n}\n","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\n\nexport default { addClasses, removeClasses };\n","import { window } from 'ssr-window';\n\nexport default function (imageEl, src, srcset, sizes, checkForComplete, callback) {\n let image;\n function onReady() {\n if (callback) callback();\n }\n if (!imageEl.complete || !checkForComplete) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function () {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n}\n","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","\nfunction checkOverflow() {\n const swiper = this;\n const params = swiper.params;\n const wasLocked = swiper.isLocked;\n const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n\n // events\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n swiper.navigation.update();\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n //\n preventInteractionOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n};\n","/* eslint no-param-reassign: \"off\" */\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nimport SwiperClass from '../../utils/class';\n\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\n\nimport defaults from './defaults';\n\nconst prototypes = {\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n manipulation,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = Utils.extend({}, params);\n if (el && !params.el) params.el = el;\n\n super(params);\n\n Object.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n const swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach((moduleName) => {\n const module = swiper.modules[moduleName];\n if (module.params) {\n const moduleParamName = Object.keys(module.params)[0];\n const moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object'\n && !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n }\n });\n\n // Extend defaults with modules params\n const swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $;\n\n // Find el\n const $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n const swipers = [];\n $el.each((index, containerEl) => {\n const newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n let $wrapperEl;\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n // Children needs to return slot items\n $wrapperEl.children = (options) => $el.children(options);\n } else {\n $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n }\n // Extend Swiper\n Utils.extend(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // RTL\n rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }()),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n formElements: 'input, select, option, textarea, button, video, label',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n slidesPerViewDynamic() {\n const swiper = this;\n const {\n params, slides, slidesGrid, size: swiperSize, activeIndex,\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideIndex, slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n init() {\n const swiper = this;\n if (swiper.initialized) return;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params, $el, $wrapperEl, slides,\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static get Class() {\n return SwiperClass;\n }\n\n static get $() {\n return $;\n }\n}\n\nexport default Swiper;\n","import Device from '../../utils/device';\n\nexport default {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n};\n","import Support from '../../utils/support';\n\nexport default {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n};\n","import { window } from 'ssr-window';\n\nconst Browser = (function Browser() {\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}());\n\nexport default Browser;\n","import Browser from '../../utils/browser';\n\nexport default {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nexport default {\n name: 'resize',\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n // Emit resize\n window.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy() {\n const swiper = this;\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Observer = {\n func: window.MutationObserver || window.WebkitMutationObserver,\n attach(target, options = {}) {\n const swiper = this;\n\n const ObserverFunc = Observer.func;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n swiper.observer.observers.push(observer);\n },\n init() {\n const swiper = this;\n if (!Support.observer || !swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy() {\n const swiper = this;\n swiper.observer.observers.forEach((observer) => {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\n\nexport default {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.observer.init();\n },\n destroy() {\n const swiper = this;\n swiper.observer.destroy();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Virtual = {\n update(force) {\n const swiper = this;\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n renderSlide,\n offset: previousOffset,\n } = swiper.virtual;\n swiper.updateActiveIndex();\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n slidesBefore = slidesPerGroup + addSlidesAfter;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Utils.extend(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n },\n renderSlide(slide, index) {\n const swiper = this;\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(`
      ${slide}
      `);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n },\n appendSlide(slides) {\n const swiper = this;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n swiper.virtual.update(true);\n },\n prependSlide(slides) {\n const swiper = this;\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide(slidesIndexes) {\n const swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides() {\n const swiper = this;\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n },\n};\n\nexport default {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n virtual: {\n update: Virtual.update.bind(swiper),\n appendSlide: Virtual.appendSlide.bind(swiper),\n prependSlide: Virtual.prependSlide.bind(swiper),\n removeSlide: Virtual.removeSlide.bind(swiper),\n removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n const overwriteParams = {\n watchSlidesProgress: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Keyboard = {\n handle(event) {\n const swiper = this;\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 && point[0] <= windowWidth\n && point[1] >= 0 && point[1] <= windowHeight\n ) {\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext();\n if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev();\n } else {\n if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 34 || kc === 40) swiper.slideNext();\n if (kc === 33 || kc === 38) swiper.slidePrev();\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable() {\n const swiper = this;\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable() {\n const swiper = this;\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n};\n\nexport default {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n keyboard: {\n enabled: false,\n enable: Keyboard.enable.bind(swiper),\n disable: Keyboard.disable.bind(swiper),\n handle: Keyboard.handle.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nfunction isEventSupported() {\n const eventName = 'onwheel';\n let isSupported = eventName in document;\n\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && document.implementation\n && document.implementation.hasFeature\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && document.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\nconst Mousewheel = {\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event() {\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n },\n handleMouseEnter() {\n const swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave() {\n const swiper = this;\n swiper.mouseEntered = false;\n },\n handle(event) {\n let e = event;\n const swiper = this;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;\n else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n if (!swiper.params.freeMode) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: Utils.now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta) {\n swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n const { lastEventBeforeSnap } = swiper.mousewheel;\n const ignoreWheelEvents = lastEventBeforeSnap\n && newEvent.time < lastEventBeforeSnap.time + 500\n && newEvent.delta <= lastEventBeforeSnap.delta\n && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + (delta * params.sensitivity);\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeModeSticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momuntum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = undefined;\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15\n && newEvent.time - firstEvent.time < 500\n && firstEvent.delta - newEvent.delta >= 1\n && newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!swiper.mousewheel.timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n const snapToThreshold = 0.5;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n },\n animateSlider(newEvent) {\n const swiper = this;\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n // Return false as a default\n return false;\n },\n releaseScroll(newEvent) {\n const swiper = this;\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n },\n enable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (!swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n};\n\nexport default {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarged: 'container',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n mousewheel: {\n enabled: false,\n enable: Mousewheel.enable.bind(swiper),\n disable: Mousewheel.disable.bind(swiper),\n handle: Mousewheel.handle.bind(swiper),\n handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n animateSlider: Mousewheel.animateSlider.bind(swiper),\n releaseScroll: Mousewheel.releaseScroll.bind(swiper),\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n swiper.mousewheel.disable();\n }\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy() {\n const swiper = this;\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Navigation = {\n update() {\n // Update Navigation Buttons\n const swiper = this;\n const params = swiper.params.navigation;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n onPrevClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init() {\n const swiper = this;\n const params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n\n let $nextEl;\n let $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.nextEl === 'string'\n && $nextEl.length > 1\n && swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.prevEl === 'string'\n && $prevEl.length > 1\n && swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy() {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n};\n\nexport default {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n onNextClick: Navigation.onNextClick.bind(swiper),\n onPrevClick: Navigation.onPrevClick.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n fromEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n destroy() {\n const swiper = this;\n swiper.navigation.destroy();\n },\n click(e) {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if (\n swiper.params.navigation.hideOnClick\n && !$(e.target).is($prevEl)\n && !$(e.target).is($nextEl)\n ) {\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n swiper.emit('navigationShow', swiper);\n } else {\n swiper.emit('navigationHide', swiper);\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Pagination = {\n update() {\n // Render || Update Pagination bullets/items\n const swiper = this;\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n if ($el.length > 1) {\n bullets.each((index, bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render() {\n // Render Container\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = ``\n + ' / '\n + ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (\n swiper.params.uniqueNavElements\n && typeof params.el === 'string'\n && $el.length > 1\n && swiper.$el.find(params.el).length === 1\n ) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el,\n el: $el[0],\n });\n },\n destroy() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', `.${params.bulletClass}`);\n }\n },\n};\n\nexport default {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy() {\n const swiper = this;\n swiper.pagination.destroy();\n },\n click(e) {\n const swiper = this;\n if (\n swiper.params.pagination.el\n && swiper.params.pagination.hideOnClick\n && swiper.pagination.$el.length > 0\n && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow', swiper);\n } else {\n swiper.emit('paginationHide', swiper);\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\n","import { document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Scrollbar = {\n setTranslate() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const {\n dragSize, trackSize, $dragEl, $el,\n } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n const divider = swiper.size / swiper.virtualSize;\n const moveDivider = divider * (trackSize / swiper.size);\n let dragSize;\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize,\n divider,\n moveDivider,\n dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n getPointerPosition(e) {\n const swiper = this;\n if (swiper.isHorizontal()) {\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);\n }\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);\n },\n setDragPosition(e) {\n const swiper = this;\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const {\n $el,\n dragSize,\n trackSize,\n dragStartPos,\n } = scrollbar;\n\n let positionRatio;\n positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart(e) {\n const swiper = this;\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove(e) {\n const swiper = this;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd(e) {\n const swiper = this;\n\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const { scrollbar, $el: $swiperEl } = swiper;\n const params = swiper.params.scrollbar;\n\n let $el = $(params.el);\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
      `);\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n};\n\nexport default {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate() {\n const swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Parallax = {\n setTransform(el, progress) {\n const swiper = this;\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if ((x).indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if ((y).indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n },\n setTranslate() {\n const swiper = this;\n const {\n $el, slides, progress, snapGrid,\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each((slideIndex, slideEl) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition(duration = this.params.speed) {\n const swiper = this;\n const { $el } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n },\n};\n\nexport default {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n parallax: {\n setTransform: Parallax.setTransform.bind(swiper),\n setTranslate: Parallax.setTranslate.bind(swiper),\n setTransition: Parallax.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\nimport Support from '../../utils/support';\n\nconst Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n return distance;\n },\n // Events\n onGestureStart(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n swiper.zoom.isScaling = true;\n },\n onGestureChange(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (Support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n onGestureEnd(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (Device.android) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (\n swiper.isHorizontal()\n && (\n (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n )\n ) {\n image.isTouched = false;\n return;\n } if (\n !swiper.isHorizontal()\n && (\n (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n )\n ) {\n image.isTouched = false;\n return;\n }\n }\n e.preventDefault();\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n }\n\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTouchEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTransitionEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in(e) {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture, image } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n out() {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n },\n // Attach/Detach Events\n enable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n disable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n\n swiper.zoom.enabled = false;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n};\n\nexport default {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n },\n create() {\n const swiper = this;\n const zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n };\n\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom,\n });\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.zoom.disable();\n },\n touchStart(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap(e) {\n const swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Lazy = {\n loadInSlide(index, loadInDuplicate = true) {\n const swiper = this;\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n : swiper.slides.eq(index);\n\n let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageIndex, imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n\n swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load() {\n const swiper = this;\n const {\n $wrapperEl, params: swiperParams, slides, activeIndex,\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n};\n\nexport default {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n lazy: {\n initialImageLoaded: false,\n load: Lazy.load.bind(swiper),\n loadInSlide: Lazy.loadInSlide.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll() {\n const swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n swiper.lazy.load();\n }\n },\n },\n};\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport Swiper from '../core/core-class';\nimport Utils from '../../utils/utils';\n\nconst Controller = {\n LinearSpline: function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }());\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction(c) {\n const swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate(setTranslate, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition(duration, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n Utils.nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n },\n};\nexport default {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n controller: {\n control: swiper.params.controller.control,\n getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n setTranslate: Controller.setTranslate.bind(swiper),\n setTransition: Controller.setTransition.bind(swiper),\n },\n });\n },\n on: {\n update() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate(translate, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst a11y = {\n makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey(e) {\n const swiper = this;\n const params = swiper.params.a11y;\n if (e.keyCode !== 13) return;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n $targetEl[0].click();\n }\n },\n notify(message) {\n const swiper = this;\n const notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation() {\n const swiper = this;\n\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n }\n }\n },\n updatePagination() {\n const swiper = this;\n const params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n const $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n });\n }\n },\n init() {\n const swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n const params = swiper.params.a11y;\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n};\nexport default {\n name: 'a11y',\n params: {\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $(``),\n },\n });\n Object.keys(a11y).forEach((methodName) => {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n },\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nconst History = {\n init() {\n const swiper = this;\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n const history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues();\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState() {\n const swiper = this;\n swiper.history.paths = History.getPathValues();\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues() {\n const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n },\n setHistory(key, index) {\n const swiper = this;\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n const slide = swiper.slides.eq(index);\n let value = History.slugify(slide.attr('data-history'));\n if (!window.location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n },\n slugify(text) {\n return text.toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide(speed, value, runCallbacks) {\n const swiper = this;\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = History.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n },\n};\n\nexport default {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n history: {\n init: History.init.bind(swiper),\n setHistory: History.setHistory.bind(swiper),\n setHistoryPopState: History.setHistoryPopState.bind(swiper),\n scrollToSlide: History.scrollToSlide.bind(swiper),\n destroy: History.destroy.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.history.initialized && swiper.params.cssMode) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst HashNavigation = {\n onHashCange() {\n const swiper = this;\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n },\n setHash() {\n const swiper = this;\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n swiper.hashNavigation.initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n};\nexport default {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n hashNavigation: {\n initialized: false,\n init: HashNavigation.init.bind(swiper),\n destroy: HashNavigation.destroy.bind(swiper),\n setHash: HashNavigation.setHash.bind(swiper),\n onHashCange: HashNavigation.onHashCange.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n swiper.hashNavigation.setHash();\n }\n },\n },\n};\n","/* eslint no-underscore-dangle: \"off\" */\nimport Utils from '../../utils/utils';\n\nconst Autoplay = {\n run() {\n const swiper = this;\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = Utils.nextTick(() => {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\n }, delay);\n },\n start() {\n const swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop() {\n const swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause(speed) {\n const swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n};\n\nexport default {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onVisibilityChange() {\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n },\n beforeTransitionStart(speed, internal) {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove() {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd() {\n const swiper = this;\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n },\n },\n};\n","import Utils from '../../utils/utils';\n\nconst Fade = {\n setTranslate() {\n const swiper = this;\n const { slides } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, $wrapperEl } = swiper;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n slides.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nexport default {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n fadeEffect: {\n setTranslate: Fade.setTranslate.bind(swiper),\n setTransition: Fade.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Browser from '../../utils/browser';\n\nconst Cube = {\n setTranslate() {\n const swiper = this;\n const {\n $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
      ');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
      ');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + (round * 4 * swiperSize);\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = (3 * swiperSize) + (swiperSize * 4 * round);\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = (slideIndex * 90) + (progress * 90);\n if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
      `);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
      `);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n const multiplier = 1.5 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n $wrapperEl\n .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n },\n setTransition(duration) {\n const swiper = this;\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n};\n\nexport default {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n cubeEffect: {\n setTranslate: Cube.setTranslate.bind(swiper),\n setTransition: Cube.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Flip = {\n setTranslate() {\n const swiper = this;\n const { slides, rtlTranslate: rtl } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
      `);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
      `);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n $slideEl\n .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, activeIndex, $wrapperEl } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nexport default {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n flipEffect: {\n setTranslate: Flip.setTranslate.bind(swiper),\n setTransition: Flip.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Support from '../../utils/support';\nimport Utils from '../../utils/utils';\n\nconst Coverflow = {\n setTranslate() {\n const swiper = this;\n const {\n width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = ((parseFloat(params.stretch) / 100) * slideSize);\n }\n let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);\n let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $(`
      `);\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $(`
      `);\n $slideEl.append($shadowAfterEl);\n }\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n\n // Set correct perspective for IE10\n if (Support.pointerEvents || Support.prefixedPointerEvents) {\n const ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = `${center}px 50%`;\n }\n },\n setTransition(duration) {\n const swiper = this;\n swiper.slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n },\n};\n\nexport default {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n coverflowEffect: {\n setTranslate: Coverflow.setTranslate.bind(swiper),\n setTransition: Coverflow.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n\n swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n};\n","import Utils from '../../utils/utils';\nimport $ from '../../utils/dom';\n\nconst Thumbs = {\n init() {\n const swiper = this;\n const { thumbs: thumbsParams } = swiper.params;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Utils.extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Utils.extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (Utils.isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n }));\n swiper.thumbs.swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n },\n onThumbClick() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n },\n update(initial) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;\n else newThumbsIndex = prevThumbsIndex;\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n },\n};\nexport default {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n thumbs: {\n swiper: null,\n init: Thumbs.init.bind(swiper),\n update: Thumbs.update.bind(swiper),\n onThumbClick: Thumbs.onThumbClick.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition(duration) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n },\n },\n};\n","// Swiper Class\nimport Swiper from './components/core/core-class';\n\n// Core Modules\nimport Device from './modules/device/device';\nimport Support from './modules/support/support';\nimport Browser from './modules/browser/browser';\nimport Resize from './modules/resize/resize';\nimport Observer from './modules/observer/observer';\n\n//IMPORT_COMPONENTS\n\nconst components = [\n Device,\n Support,\n Browser,\n Resize,\n Observer,\n //INSTALL_COMPONENTS\n];\n\nif (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\n//EXPORT\n"],"names":["const","let","document","window","arguments","event","boxSizing","i","slidesGridItem","allSlidesSize","transitionEnd","currentSnap","slideChanged","increment","transition","checkOverflow","super","newEvent","recentWheelEvents","prevEvent","setTranslate","Device","Support","Browser","Observer","Virtual"],"mappings":"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"} \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/package/js/swiper.min.js b/static/libs/swiper-5.3.8/package/js/swiper.min.js new file mode 100644 index 0000000..0d4834a --- /dev/null +++ b/static/libs/swiper-5.3.8/package/js/swiper.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 5.3.8 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * http://swiperjs.com + * + * Copyright 2014-2020 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: April 24, 2020 + */ + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Swiper=t()}(this,(function(){"use strict";var e="undefined"==typeof document?{body:{},addEventListener:function(){},removeEventListener:function(){},activeElement:{blur:function(){},nodeName:""},querySelector:function(){return null},querySelectorAll:function(){return[]},getElementById:function(){return null},createEvent:function(){return{initEvent:function(){}}},createElement:function(){return{children:[],childNodes:[],style:{},setAttribute:function(){},getElementsByTagName:function(){return[]}}},location:{hash:""}}:document,t="undefined"==typeof window?{document:e,navigator:{userAgent:""},location:{},history:{},CustomEvent:function(){return this},addEventListener:function(){},removeEventListener:function(){},getComputedStyle:function(){return{getPropertyValue:function(){return""}}},Image:function(){},Date:function(){},screen:{},setTimeout:function(){},clearTimeout:function(){}}:window,i=function(e){for(var t=0;t=0&&d.indexOf(">")>=0){var h="div";for(0===d.indexOf(":~]/)?(a||e).querySelectorAll(s.trim()):[e.getElementById(s.trim().split("#")[1])],n=0;n0&&s[0].nodeType)for(n=0;n=0;u-=1){var v=c[u];r&&v.listener===r||r&&v.listener&&v.listener.dom7proxy&&v.listener.dom7proxy===r?(p.removeEventListener(d,v.proxyListener,n),c.splice(u,1)):r||(p.removeEventListener(d,v.proxyListener,n),c.splice(u,1))}}return this},trigger:function(){for(var i=[],s=arguments.length;s--;)i[s]=arguments[s];for(var a=i[0].split(" "),r=i[1],n=0;n0})),d.dispatchEvent(h),d.dom7EventData=[],delete d.dom7EventData}return this},transitionEnd:function(e){var t,i=["webkitTransitionEnd","transitionend"],s=this;function a(r){if(r.target===this)for(e.call(this,r),t=0;t0){if(e){var t=this.styles();return this[0].offsetWidth+parseFloat(t.getPropertyValue("margin-right"))+parseFloat(t.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null},outerHeight:function(e){if(this.length>0){if(e){var t=this.styles();return this[0].offsetHeight+parseFloat(t.getPropertyValue("margin-top"))+parseFloat(t.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null},offset:function(){if(this.length>0){var i=this[0],s=i.getBoundingClientRect(),a=e.body,r=i.clientTop||a.clientTop||0,n=i.clientLeft||a.clientLeft||0,o=i===t?t.scrollY:i.scrollTop,l=i===t?t.scrollX:i.scrollLeft;return{top:s.top+o-r,left:s.left+l-n}}return null},css:function(e,i){var s;if(1===arguments.length){if("string"!=typeof e){for(s=0;ss-1?[]:e<0?(t=s+e)<0?[]:[this[t]]:[this[e]])},append:function(){for(var t,s=[],a=arguments.length;a--;)s[a]=arguments[a];for(var r=0;r=0;a-=1)this[s].insertBefore(r.childNodes[a],this[s].childNodes[0])}else if(t instanceof i)for(a=0;a0?e?this[0].nextElementSibling&&s(this[0].nextElementSibling).is(e)?new i([this[0].nextElementSibling]):new i([]):this[0].nextElementSibling?new i([this[0].nextElementSibling]):new i([]):new i([])},nextAll:function(e){var t=[],a=this[0];if(!a)return new i([]);for(;a.nextElementSibling;){var r=a.nextElementSibling;e?s(r).is(e)&&t.push(r):t.push(r),a=r}return new i(t)},prev:function(e){if(this.length>0){var t=this[0];return e?t.previousElementSibling&&s(t.previousElementSibling).is(e)?new i([t.previousElementSibling]):new i([]):t.previousElementSibling?new i([t.previousElementSibling]):new i([])}return new i([])},prevAll:function(e){var t=[],a=this[0];if(!a)return new i([]);for(;a.previousElementSibling;){var r=a.previousElementSibling;e?s(r).is(e)&&t.push(r):t.push(r),a=r}return new i(t)},parent:function(e){for(var t=[],i=0;i6&&(a=a.split(", ").map((function(e){return e.replace(",",".")})).join(", ")),r=new t.WebKitCSSMatrix("none"===a?"":a)):s=(r=n.MozTransform||n.OTransform||n.MsTransform||n.msTransform||n.transform||n.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,")).toString().split(","),"x"===i&&(a=t.WebKitCSSMatrix?r.m41:16===s.length?parseFloat(s[12]):parseFloat(s[4])),"y"===i&&(a=t.WebKitCSSMatrix?r.m42:16===s.length?parseFloat(s[13]):parseFloat(s[5])),a||0},parseUrlQuery:function(e){var i,s,a,r,n={},o=e||t.location.href;if("string"==typeof o&&o.length)for(r=(s=(o=o.indexOf("?")>-1?o.replace(/\S*\?/,""):"").split("&").filter((function(e){return""!==e}))).length,i=0;i0||"ontouchstart"in t||t.DocumentTouch&&e instanceof t.DocumentTouch),pointerEvents:!!t.PointerEvent&&"maxTouchPoints"in t.navigator&&t.navigator.maxTouchPoints>0,observer:"MutationObserver"in t||"WebkitMutationObserver"in t,passiveListener:function(){var e=!1;try{var i=Object.defineProperty({},"passive",{get:function(){e=!0}});t.addEventListener("testPassiveListener",null,i)}catch(e){}return e}(),gestures:"ongesturestart"in t},l=function(e){void 0===e&&(e={});var t=this;t.params=e,t.eventsListeners={},t.params&&t.params.on&&Object.keys(t.params.on).forEach((function(e){t.on(e,t.params.on[e])}))},d={components:{configurable:!0}};l.prototype.on=function(e,t,i){var s=this;if("function"!=typeof t)return s;var a=i?"unshift":"push";return e.split(" ").forEach((function(e){s.eventsListeners[e]||(s.eventsListeners[e]=[]),s.eventsListeners[e][a](t)})),s},l.prototype.once=function(e,t,i){var s=this;if("function"!=typeof t)return s;function a(){for(var i=[],r=arguments.length;r--;)i[r]=arguments[r];s.off(e,a),a.f7proxy&&delete a.f7proxy,t.apply(s,i)}return a.f7proxy=t,s.on(e,a,i)},l.prototype.off=function(e,t){var i=this;return i.eventsListeners?(e.split(" ").forEach((function(e){void 0===t?i.eventsListeners[e]=[]:i.eventsListeners[e]&&i.eventsListeners[e].length&&i.eventsListeners[e].forEach((function(s,a){(s===t||s.f7proxy&&s.f7proxy===t)&&i.eventsListeners[e].splice(a,1)}))})),i):i},l.prototype.emit=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var i,s,a,r=this;if(!r.eventsListeners)return r;"string"==typeof e[0]||Array.isArray(e[0])?(i=e[0],s=e.slice(1,e.length),a=r):(i=e[0].events,s=e[0].data,a=e[0].context||r);var n=Array.isArray(i)?i:i.split(" ");return n.forEach((function(e){if(r.eventsListeners&&r.eventsListeners[e]){var t=[];r.eventsListeners[e].forEach((function(e){t.push(e)})),t.forEach((function(e){e.apply(a,s)}))}})),r},l.prototype.useModulesParams=function(e){var t=this;t.modules&&Object.keys(t.modules).forEach((function(i){var s=t.modules[i];s.params&&n.extend(e,s.params)}))},l.prototype.useModules=function(e){void 0===e&&(e={});var t=this;t.modules&&Object.keys(t.modules).forEach((function(i){var s=t.modules[i],a=e[i]||{};s.instance&&Object.keys(s.instance).forEach((function(e){var i=s.instance[e];t[e]="function"==typeof i?i.bind(t):i})),s.on&&t.on&&Object.keys(s.on).forEach((function(e){t.on(e,s.on[e])})),s.create&&s.create.bind(t)(a)}))},d.components.set=function(e){this.use&&this.use(e)},l.installModule=function(e){for(var t=[],i=arguments.length-1;i-- >0;)t[i]=arguments[i+1];var s=this;s.prototype.modules||(s.prototype.modules={});var a=e.name||Object.keys(s.prototype.modules).length+"_"+n.now();return s.prototype.modules[a]=e,e.proto&&Object.keys(e.proto).forEach((function(t){s.prototype[t]=e.proto[t]})),e.static&&Object.keys(e.static).forEach((function(t){s[t]=e.static[t]})),e.install&&e.install.apply(s,t),s},l.use=function(e){for(var t=[],i=arguments.length-1;i-- >0;)t[i]=arguments[i+1];var s=this;return Array.isArray(e)?(e.forEach((function(e){return s.installModule(e)})),s):s.installModule.apply(s,[e].concat(t))},Object.defineProperties(l,d);var h={updateSize:function(){var e,t,i=this.$el;e=void 0!==this.params.width?this.params.width:i[0].clientWidth,t=void 0!==this.params.height?this.params.height:i[0].clientHeight,0===e&&this.isHorizontal()||0===t&&this.isVertical()||(e=e-parseInt(i.css("padding-left"),10)-parseInt(i.css("padding-right"),10),t=t-parseInt(i.css("padding-top"),10)-parseInt(i.css("padding-bottom"),10),n.extend(this,{width:e,height:t,size:this.isHorizontal()?e:t}))},updateSlides:function(){var e=this.params,i=this.$wrapperEl,s=this.size,a=this.rtlTranslate,r=this.wrongRTL,o=this.virtual&&e.virtual.enabled,l=o?this.virtual.slides.length:this.slides.length,d=i.children("."+this.params.slideClass),h=o?this.virtual.slides.length:d.length,p=[],c=[],u=[];function v(t){return!e.cssMode||t!==d.length-1}var f=e.slidesOffsetBefore;"function"==typeof f&&(f=e.slidesOffsetBefore.call(this));var m=e.slidesOffsetAfter;"function"==typeof m&&(m=e.slidesOffsetAfter.call(this));var g=this.snapGrid.length,b=this.snapGrid.length,w=e.spaceBetween,y=-f,x=0,T=0;if(void 0!==s){var E,S;"string"==typeof w&&w.indexOf("%")>=0&&(w=parseFloat(w.replace("%",""))/100*s),this.virtualSize=-w,a?d.css({marginLeft:"",marginTop:""}):d.css({marginRight:"",marginBottom:""}),e.slidesPerColumn>1&&(E=Math.floor(h/e.slidesPerColumn)===h/this.params.slidesPerColumn?h:Math.ceil(h/e.slidesPerColumn)*e.slidesPerColumn,"auto"!==e.slidesPerView&&"row"===e.slidesPerColumnFill&&(E=Math.max(E,e.slidesPerView*e.slidesPerColumn)));for(var C,M=e.slidesPerColumn,P=E/M,z=Math.floor(h/e.slidesPerColumn),k=0;k1){var L=void 0,I=void 0,D=void 0;if("row"===e.slidesPerColumnFill&&e.slidesPerGroup>1){var O=Math.floor(k/(e.slidesPerGroup*e.slidesPerColumn)),A=k-e.slidesPerColumn*e.slidesPerGroup*O,G=0===O?e.slidesPerGroup:Math.min(Math.ceil((h-O*M*e.slidesPerGroup)/M),e.slidesPerGroup);L=(I=A-(D=Math.floor(A/G))*G+O*e.slidesPerGroup)+D*E/M,$.css({"-webkit-box-ordinal-group":L,"-moz-box-ordinal-group":L,"-ms-flex-order":L,"-webkit-order":L,order:L})}else"column"===e.slidesPerColumnFill?(D=k-(I=Math.floor(k/M))*M,(I>z||I===z&&D===M-1)&&(D+=1)>=M&&(D=0,I+=1)):I=k-(D=Math.floor(k/P))*P;$.css("margin-"+(this.isHorizontal()?"top":"left"),0!==D&&e.spaceBetween&&e.spaceBetween+"px")}if("none"!==$.css("display")){if("auto"===e.slidesPerView){var H=t.getComputedStyle($[0],null),B=$[0].style.transform,N=$[0].style.webkitTransform;if(B&&($[0].style.transform="none"),N&&($[0].style.webkitTransform="none"),e.roundLengths)S=this.isHorizontal()?$.outerWidth(!0):$.outerHeight(!0);else if(this.isHorizontal()){var X=parseFloat(H.getPropertyValue("width")),V=parseFloat(H.getPropertyValue("padding-left")),Y=parseFloat(H.getPropertyValue("padding-right")),F=parseFloat(H.getPropertyValue("margin-left")),W=parseFloat(H.getPropertyValue("margin-right")),R=H.getPropertyValue("box-sizing");S=R&&"border-box"===R?X+F+W:X+V+Y+F+W}else{var q=parseFloat(H.getPropertyValue("height")),j=parseFloat(H.getPropertyValue("padding-top")),K=parseFloat(H.getPropertyValue("padding-bottom")),U=parseFloat(H.getPropertyValue("margin-top")),_=parseFloat(H.getPropertyValue("margin-bottom")),Z=H.getPropertyValue("box-sizing");S=Z&&"border-box"===Z?q+U+_:q+j+K+U+_}B&&($[0].style.transform=B),N&&($[0].style.webkitTransform=N),e.roundLengths&&(S=Math.floor(S))}else S=(s-(e.slidesPerView-1)*w)/e.slidesPerView,e.roundLengths&&(S=Math.floor(S)),d[k]&&(this.isHorizontal()?d[k].style.width=S+"px":d[k].style.height=S+"px");d[k]&&(d[k].swiperSlideSize=S),u.push(S),e.centeredSlides?(y=y+S/2+x/2+w,0===x&&0!==k&&(y=y-s/2-w),0===k&&(y=y-s/2-w),Math.abs(y)<.001&&(y=0),e.roundLengths&&(y=Math.floor(y)),T%e.slidesPerGroup==0&&p.push(y),c.push(y)):(e.roundLengths&&(y=Math.floor(y)),(T-Math.min(this.params.slidesPerGroupSkip,T))%this.params.slidesPerGroup==0&&p.push(y),c.push(y),y=y+S+w),this.virtualSize+=S+w,x=S,T+=1}}if(this.virtualSize=Math.max(this.virtualSize,s)+m,a&&r&&("slide"===e.effect||"coverflow"===e.effect)&&i.css({width:this.virtualSize+e.spaceBetween+"px"}),e.setWrapperSize&&(this.isHorizontal()?i.css({width:this.virtualSize+e.spaceBetween+"px"}):i.css({height:this.virtualSize+e.spaceBetween+"px"})),e.slidesPerColumn>1&&(this.virtualSize=(S+e.spaceBetween)*E,this.virtualSize=Math.ceil(this.virtualSize/e.slidesPerColumn)-e.spaceBetween,this.isHorizontal()?i.css({width:this.virtualSize+e.spaceBetween+"px"}):i.css({height:this.virtualSize+e.spaceBetween+"px"}),e.centeredSlides)){C=[];for(var Q=0;Q1&&p.push(this.virtualSize-s)}if(0===p.length&&(p=[0]),0!==e.spaceBetween&&(this.isHorizontal()?a?d.filter(v).css({marginLeft:w+"px"}):d.filter(v).css({marginRight:w+"px"}):d.filter(v).css({marginBottom:w+"px"})),e.centeredSlides&&e.centeredSlidesBounds){var ie=0;u.forEach((function(t){ie+=t+(e.spaceBetween?e.spaceBetween:0)}));var se=(ie-=e.spaceBetween)-s;p=p.map((function(e){return e<0?-f:e>se?se+m:e}))}if(e.centerInsufficientSlides){var ae=0;if(u.forEach((function(t){ae+=t+(e.spaceBetween?e.spaceBetween:0)})),(ae-=e.spaceBetween)1)if(this.params.centeredSlides)this.visibleSlides.each((function(e,t){i.push(t)}));else for(t=0;tthis.slides.length)break;i.push(this.slides.eq(a)[0])}else i.push(this.slides.eq(this.activeIndex)[0]);for(t=0;ts?r:s}s&&this.$wrapperEl.css("height",s+"px")},updateSlidesOffset:function(){for(var e=this.slides,t=0;t=0&&d1&&h<=this.size||d<=0&&h>=this.size)&&(this.visibleSlides.push(o),this.visibleSlidesIndexes.push(n),i.eq(n).addClass(t.slideVisibleClass))}o.progress=a?-l:l}this.visibleSlides=s(this.visibleSlides)}},updateProgress:function(e){if(void 0===e){var t=this.rtlTranslate?-1:1;e=this&&this.translate&&this.translate*t||0}var i=this.params,s=this.maxTranslate()-this.minTranslate(),a=this.progress,r=this.isBeginning,o=this.isEnd,l=r,d=o;0===s?(a=0,r=!0,o=!0):(r=(a=(e-this.minTranslate())/s)<=0,o=a>=1),n.extend(this,{progress:a,isBeginning:r,isEnd:o}),(i.watchSlidesProgress||i.watchSlidesVisibility||i.centeredSlides&&i.autoHeight)&&this.updateSlidesProgress(e),r&&!l&&this.emit("reachBeginning toEdge"),o&&!d&&this.emit("reachEnd toEdge"),(l&&!r||d&&!o)&&this.emit("fromEdge"),this.emit("progress",a)},updateSlidesClasses:function(){var e,t=this.slides,i=this.params,s=this.$wrapperEl,a=this.activeIndex,r=this.realIndex,n=this.virtual&&i.virtual.enabled;t.removeClass(i.slideActiveClass+" "+i.slideNextClass+" "+i.slidePrevClass+" "+i.slideDuplicateActiveClass+" "+i.slideDuplicateNextClass+" "+i.slideDuplicatePrevClass),(e=n?this.$wrapperEl.find("."+i.slideClass+'[data-swiper-slide-index="'+a+'"]'):t.eq(a)).addClass(i.slideActiveClass),i.loop&&(e.hasClass(i.slideDuplicateClass)?s.children("."+i.slideClass+":not(."+i.slideDuplicateClass+')[data-swiper-slide-index="'+r+'"]').addClass(i.slideDuplicateActiveClass):s.children("."+i.slideClass+"."+i.slideDuplicateClass+'[data-swiper-slide-index="'+r+'"]').addClass(i.slideDuplicateActiveClass));var o=e.nextAll("."+i.slideClass).eq(0).addClass(i.slideNextClass);i.loop&&0===o.length&&(o=t.eq(0)).addClass(i.slideNextClass);var l=e.prevAll("."+i.slideClass).eq(0).addClass(i.slidePrevClass);i.loop&&0===l.length&&(l=t.eq(-1)).addClass(i.slidePrevClass),i.loop&&(o.hasClass(i.slideDuplicateClass)?s.children("."+i.slideClass+":not(."+i.slideDuplicateClass+')[data-swiper-slide-index="'+o.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicateNextClass):s.children("."+i.slideClass+"."+i.slideDuplicateClass+'[data-swiper-slide-index="'+o.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicateNextClass),l.hasClass(i.slideDuplicateClass)?s.children("."+i.slideClass+":not(."+i.slideDuplicateClass+')[data-swiper-slide-index="'+l.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicatePrevClass):s.children("."+i.slideClass+"."+i.slideDuplicateClass+'[data-swiper-slide-index="'+l.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicatePrevClass))},updateActiveIndex:function(e){var t,i=this.rtlTranslate?this.translate:-this.translate,s=this.slidesGrid,a=this.snapGrid,r=this.params,o=this.activeIndex,l=this.realIndex,d=this.snapIndex,h=e;if(void 0===h){for(var p=0;p=s[p]&&i=s[p]&&i=s[p]&&(h=p);r.normalizeSlideIndex&&(h<0||void 0===h)&&(h=0)}if(a.indexOf(i)>=0)t=a.indexOf(i);else{var c=Math.min(r.slidesPerGroupSkip,h);t=c+Math.floor((h-c)/r.slidesPerGroup)}if(t>=a.length&&(t=a.length-1),h!==o){var u=parseInt(this.slides.eq(h).attr("data-swiper-slide-index")||h,10);n.extend(this,{snapIndex:t,realIndex:u,previousIndex:o,activeIndex:h}),this.emit("activeIndexChange"),this.emit("snapIndexChange"),l!==u&&this.emit("realIndexChange"),(this.initialized||this.params.runCallbacksOnInit)&&this.emit("slideChange")}else t!==d&&(this.snapIndex=t,this.emit("snapIndexChange"))},updateClickedSlide:function(e){var t=this.params,i=s(e.target).closest("."+t.slideClass)[0],a=!1;if(i)for(var r=0;rh?h:s&&ea?"next":is?"next":i=l.length&&(f=l.length-1),(p||o.initialSlide||0)===(h||0)&&i&&r.emit("beforeSlideChangeStart");var m,g=-l[f];if(r.updateProgress(g),o.normalizeSlideIndex)for(var b=0;b=Math.floor(100*d[b])&&(n=b);if(r.initialized&&n!==p){if(!r.allowSlideNext&&gr.translate&&g>r.maxTranslate()&&(p||0)!==n)return!1}if(m=n>p?"next":n=e&&(c=e)})),void 0!==c&&(d=n.indexOf(c))<0&&(d=this.activeIndex-1),this.slideTo(d,e,t,i)},slideReset:function(e,t,i){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,i)},slideToClosest:function(e,t,i,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===s&&(s=.5);var a=this.activeIndex,r=Math.min(this.params.slidesPerGroupSkip,a),n=r+Math.floor((a-r)/this.params.slidesPerGroup),o=this.rtlTranslate?this.translate:-this.translate;if(o>=this.snapGrid[n]){var l=this.snapGrid[n];o-l>(this.snapGrid[n+1]-l)*s&&(a+=this.params.slidesPerGroup)}else{var d=this.snapGrid[n-1];o-d<=(this.snapGrid[n]-d)*s&&(a-=this.params.slidesPerGroup)}return a=Math.max(a,0),a=Math.min(a,this.slidesGrid.length-1),this.slideTo(a,e,t,i)},slideToClickedSlide:function(){var e,t=this,i=t.params,a=t.$wrapperEl,r="auto"===i.slidesPerView?t.slidesPerViewDynamic():i.slidesPerView,o=t.clickedIndex;if(i.loop){if(t.animating)return;e=parseInt(s(t.clickedSlide).attr("data-swiper-slide-index"),10),i.centeredSlides?ot.slides.length-t.loopedSlides+r/2?(t.loopFix(),o=a.children("."+i.slideClass+'[data-swiper-slide-index="'+e+'"]:not(.'+i.slideDuplicateClass+")").eq(0).index(),n.nextTick((function(){t.slideTo(o)}))):t.slideTo(o):o>t.slides.length-r?(t.loopFix(),o=a.children("."+i.slideClass+'[data-swiper-slide-index="'+e+'"]:not(.'+i.slideDuplicateClass+")").eq(0).index(),n.nextTick((function(){t.slideTo(o)}))):t.slideTo(o)}else t.slideTo(o)}};var v={loopCreate:function(){var t=this,i=t.params,a=t.$wrapperEl;a.children("."+i.slideClass+"."+i.slideDuplicateClass).remove();var r=a.children("."+i.slideClass);if(i.loopFillGroupWithBlank){var n=i.slidesPerGroup-r.length%i.slidesPerGroup;if(n!==i.slidesPerGroup){for(var o=0;or.length&&(t.loopedSlides=r.length);var d=[],h=[];r.each((function(e,i){var a=s(i);e=r.length-t.loopedSlides&&d.push(i),a.attr("data-swiper-slide-index",e)}));for(var p=0;p=0;c-=1)a.prepend(s(d[c].cloneNode(!0)).addClass(i.slideDuplicateClass))},loopFix:function(){this.emit("beforeLoopFix");var e,t=this.activeIndex,i=this.slides,s=this.loopedSlides,a=this.allowSlidePrev,r=this.allowSlideNext,n=this.snapGrid,o=this.rtlTranslate;this.allowSlidePrev=!0,this.allowSlideNext=!0;var l=-n[t]-this.getTranslate();if(t=i.length-s){e=-i.length+t+s,e+=s,this.slideTo(e,0,!1,!0)&&0!==l&&this.setTranslate((o?-this.translate:this.translate)-l)}this.allowSlidePrev=a,this.allowSlideNext=r,this.emit("loopFix")},loopDestroy:function(){var e=this.$wrapperEl,t=this.params,i=this.slides;e.children("."+t.slideClass+"."+t.slideDuplicateClass+",."+t.slideClass+"."+t.slideBlankClass).remove(),i.removeAttr("data-swiper-slide-index")}};var f={setGrabCursor:function(e){if(!(o.touch||!this.params.simulateTouch||this.params.watchOverflow&&this.isLocked||this.params.cssMode)){var t=this.el;t.style.cursor="move",t.style.cursor=e?"-webkit-grabbing":"-webkit-grab",t.style.cursor=e?"-moz-grabbin":"-moz-grab",t.style.cursor=e?"grabbing":"grab"}},unsetGrabCursor:function(){o.touch||this.params.watchOverflow&&this.isLocked||this.params.cssMode||(this.el.style.cursor="")}};var m,g,b,w,y,x,T,E,S,C,M,P,z,k,$,L={appendSlide:function(e){var t=this.$wrapperEl,i=this.params;if(i.loop&&this.loopDestroy(),"object"==typeof e&&"length"in e)for(var s=0;s=r)this.appendSlide(t);else{for(var n=a>e?a+1:a,l=[],d=r-1;d>=e;d-=1){var h=this.slides.eq(d);h.remove(),l.unshift(h)}if("object"==typeof t&&"length"in t){for(var p=0;pe?a+t.length:a}else i.append(t);for(var c=0;c=0||g.indexOf("Trident/")>=0,M=g.indexOf("Edge/")>=0,P=g.indexOf("Gecko/")>=0&&g.indexOf("Firefox/")>=0,z="Win32"===m,k=g.toLowerCase().indexOf("electron")>=0,$="MacIntel"===m,!T&&$&&o.touch&&(1024===w&&1366===y||834===w&&1194===y||834===w&&1112===y||768===w&&1024===y)&&(T=g.match(/(Version)\/([\d.]+)/),$=!1),b.ie=C,b.edge=M,b.firefox=P,x&&!z&&(b.os="android",b.osVersion=x[2],b.android=!0,b.androidChrome=g.toLowerCase().indexOf("chrome")>=0),(T||S||E)&&(b.os="ios",b.ios=!0),S&&!E&&(b.osVersion=S[2].replace(/_/g,"."),b.iphone=!0),T&&(b.osVersion=T[2].replace(/_/g,"."),b.ipad=!0),E&&(b.osVersion=E[3]?E[3].replace(/_/g,"."):null,b.ipod=!0),b.ios&&b.osVersion&&g.indexOf("Version/")>=0&&"10"===b.osVersion.split(".")[0]&&(b.osVersion=g.toLowerCase().split("version/")[1].split(" ")[0]),b.webView=!(!(S||T||E)||!g.match(/.*AppleWebKit(?!.*Safari)/i)&&!t.navigator.standalone)||t.matchMedia&&t.matchMedia("(display-mode: standalone)").matches,b.webview=b.webView,b.standalone=b.webView,b.desktop=!(b.ios||b.android)||k,b.desktop&&(b.electron=k,b.macos=$,b.windows=z,b.macos&&(b.os="macos"),b.windows&&(b.os="windows")),b.pixelRatio=t.devicePixelRatio||1,b);function D(i){var a=this.touchEventsData,r=this.params,o=this.touches;if(!this.animating||!r.preventInteractionOnTransition){var l=i;l.originalEvent&&(l=l.originalEvent);var d=s(l.target);if(("wrapper"!==r.touchEventsTarget||d.closest(this.wrapperEl).length)&&(a.isTouchEvent="touchstart"===l.type,(a.isTouchEvent||!("which"in l)||3!==l.which)&&!(!a.isTouchEvent&&"button"in l&&l.button>0||a.isTouched&&a.isMoved)))if(r.noSwiping&&d.closest(r.noSwipingSelector?r.noSwipingSelector:"."+r.noSwipingClass)[0])this.allowClick=!0;else if(!r.swipeHandler||d.closest(r.swipeHandler)[0]){o.currentX="touchstart"===l.type?l.targetTouches[0].pageX:l.pageX,o.currentY="touchstart"===l.type?l.targetTouches[0].pageY:l.pageY;var h=o.currentX,p=o.currentY,c=r.edgeSwipeDetection||r.iOSEdgeSwipeDetection,u=r.edgeSwipeThreshold||r.iOSEdgeSwipeThreshold;if(!c||!(h<=u||h>=t.screen.width-u)){if(n.extend(a,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),o.startX=h,o.startY=p,a.touchStartTime=n.now(),this.allowClick=!0,this.updateSize(),this.swipeDirection=void 0,r.threshold>0&&(a.allowThresholdMove=!1),"touchstart"!==l.type){var v=!0;d.is(a.formElements)&&(v=!1),e.activeElement&&s(e.activeElement).is(a.formElements)&&e.activeElement!==d[0]&&e.activeElement.blur();var f=v&&this.allowTouchMove&&r.touchStartPreventDefault;(r.touchStartForcePreventDefault||f)&&l.preventDefault()}this.emit("touchStart",l)}}}}function O(t){var i=this.touchEventsData,a=this.params,r=this.touches,o=this.rtlTranslate,l=t;if(l.originalEvent&&(l=l.originalEvent),i.isTouched){if(!i.isTouchEvent||"mousemove"!==l.type){var d="touchmove"===l.type&&l.targetTouches&&(l.targetTouches[0]||l.changedTouches[0]),h="touchmove"===l.type?d.pageX:l.pageX,p="touchmove"===l.type?d.pageY:l.pageY;if(l.preventedByNestedSwiper)return r.startX=h,void(r.startY=p);if(!this.allowTouchMove)return this.allowClick=!1,void(i.isTouched&&(n.extend(r,{startX:h,startY:p,currentX:h,currentY:p}),i.touchStartTime=n.now()));if(i.isTouchEvent&&a.touchReleaseOnEdges&&!a.loop)if(this.isVertical()){if(pr.startY&&this.translate>=this.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(hr.startX&&this.translate>=this.minTranslate())return;if(i.isTouchEvent&&e.activeElement&&l.target===e.activeElement&&s(l.target).is(i.formElements))return i.isMoved=!0,void(this.allowClick=!1);if(i.allowTouchCallbacks&&this.emit("touchMove",l),!(l.targetTouches&&l.targetTouches.length>1)){r.currentX=h,r.currentY=p;var c=r.currentX-r.startX,u=r.currentY-r.startY;if(!(this.params.threshold&&Math.sqrt(Math.pow(c,2)+Math.pow(u,2))=25&&(v=180*Math.atan2(Math.abs(u),Math.abs(c))/Math.PI,i.isScrolling=this.isHorizontal()?v>a.touchAngle:90-v>a.touchAngle);if(i.isScrolling&&this.emit("touchMoveOpposite",l),void 0===i.startMoving&&(r.currentX===r.startX&&r.currentY===r.startY||(i.startMoving=!0)),i.isScrolling)i.isTouched=!1;else if(i.startMoving){this.allowClick=!1,a.cssMode||l.preventDefault(),a.touchMoveStopPropagation&&!a.nested&&l.stopPropagation(),i.isMoved||(a.loop&&this.loopFix(),i.startTranslate=this.getTranslate(),this.setTransition(0),this.animating&&this.$wrapperEl.trigger("webkitTransitionEnd transitionend"),i.allowMomentumBounce=!1,!a.grabCursor||!0!==this.allowSlideNext&&!0!==this.allowSlidePrev||this.setGrabCursor(!0),this.emit("sliderFirstMove",l)),this.emit("sliderMove",l),i.isMoved=!0;var f=this.isHorizontal()?c:u;r.diff=f,f*=a.touchRatio,o&&(f=-f),this.swipeDirection=f>0?"prev":"next",i.currentTranslate=f+i.startTranslate;var m=!0,g=a.resistanceRatio;if(a.touchReleaseOnEdges&&(g=0),f>0&&i.currentTranslate>this.minTranslate()?(m=!1,a.resistance&&(i.currentTranslate=this.minTranslate()-1+Math.pow(-this.minTranslate()+i.startTranslate+f,g))):f<0&&i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),a.threshold>0){if(!(Math.abs(f)>a.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,r.startX=r.currentX,r.startY=r.currentY,i.currentTranslate=i.startTranslate,void(r.diff=this.isHorizontal()?r.currentX-r.startX:r.currentY-r.startY)}a.followFinger&&!a.cssMode&&((a.freeMode||a.watchSlidesProgress||a.watchSlidesVisibility)&&(this.updateActiveIndex(),this.updateSlidesClasses()),a.freeMode&&(0===i.velocities.length&&i.velocities.push({position:r[this.isHorizontal()?"startX":"startY"],time:i.touchStartTime}),i.velocities.push({position:r[this.isHorizontal()?"currentX":"currentY"],time:n.now()})),this.updateProgress(i.currentTranslate),this.setTranslate(i.currentTranslate))}}}}}else i.startMoving&&i.isScrolling&&this.emit("touchMoveOpposite",l)}function A(e){var t=this,i=t.touchEventsData,s=t.params,a=t.touches,r=t.rtlTranslate,o=t.$wrapperEl,l=t.slidesGrid,d=t.snapGrid,h=e;if(h.originalEvent&&(h=h.originalEvent),i.allowTouchCallbacks&&t.emit("touchEnd",h),i.allowTouchCallbacks=!1,!i.isTouched)return i.isMoved&&s.grabCursor&&t.setGrabCursor(!1),i.isMoved=!1,void(i.startMoving=!1);s.grabCursor&&i.isMoved&&i.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);var p,c=n.now(),u=c-i.touchStartTime;if(t.allowClick&&(t.updateClickedSlide(h),t.emit("tap click",h),u<300&&c-i.lastClickTime<300&&t.emit("doubleTap doubleClick",h)),i.lastClickTime=n.now(),n.nextTick((function(){t.destroyed||(t.allowClick=!0)})),!i.isTouched||!i.isMoved||!t.swipeDirection||0===a.diff||i.currentTranslate===i.startTranslate)return i.isTouched=!1,i.isMoved=!1,void(i.startMoving=!1);if(i.isTouched=!1,i.isMoved=!1,i.startMoving=!1,p=s.followFinger?r?t.translate:-t.translate:-i.currentTranslate,!s.cssMode)if(s.freeMode){if(p<-t.minTranslate())return void t.slideTo(t.activeIndex);if(p>-t.maxTranslate())return void(t.slides.length1){var v=i.velocities.pop(),f=i.velocities.pop(),m=v.position-f.position,g=v.time-f.time;t.velocity=m/g,t.velocity/=2,Math.abs(t.velocity)150||n.now()-v.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=s.freeModeMomentumVelocityRatio,i.velocities.length=0;var b=1e3*s.freeModeMomentumRatio,w=t.velocity*b,y=t.translate+w;r&&(y=-y);var x,T,E=!1,S=20*Math.abs(t.velocity)*s.freeModeMomentumBounceRatio;if(yt.minTranslate())s.freeModeMomentumBounce?(y-t.minTranslate()>S&&(y=t.minTranslate()+S),x=t.minTranslate(),E=!0,i.allowMomentumBounce=!0):y=t.minTranslate(),s.loop&&s.centeredSlides&&(T=!0);else if(s.freeModeSticky){for(var C,M=0;M-y){C=M;break}y=-(y=Math.abs(d[C]-y)=s.longSwipesMs)&&(t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}else{for(var k=0,$=t.slidesSizesGrid[0],L=0;L=l[L]&&p=l[L]&&(k=L,$=l[l.length-1]-l[l.length-2])}var D=(p-l[k])/$,O=ks.longSwipesMs){if(!s.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(D>=s.longSwipesRatio?t.slideTo(k+O):t.slideTo(k)),"prev"===t.swipeDirection&&(D>1-s.longSwipesRatio?t.slideTo(k+O):t.slideTo(k))}else{if(!s.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(h.target===t.navigation.nextEl||h.target===t.navigation.prevEl)?h.target===t.navigation.nextEl?t.slideTo(k+O):t.slideTo(k):("next"===t.swipeDirection&&t.slideTo(k+O),"prev"===t.swipeDirection&&t.slideTo(k))}}}function G(){var e=this.params,t=this.el;if(!t||0!==t.offsetWidth){e.breakpoints&&this.setBreakpoint();var i=this.allowSlideNext,s=this.allowSlidePrev,a=this.snapGrid;this.allowSlideNext=!0,this.allowSlidePrev=!0,this.updateSize(),this.updateSlides(),this.updateSlidesClasses(),("auto"===e.slidesPerView||e.slidesPerView>1)&&this.isEnd&&!this.params.centeredSlides?this.slideTo(this.slides.length-1,0,!1,!0):this.slideTo(this.activeIndex,0,!1,!0),this.autoplay&&this.autoplay.running&&this.autoplay.paused&&this.autoplay.run(),this.allowSlidePrev=s,this.allowSlideNext=i,this.params.watchOverflow&&a!==this.snapGrid&&this.checkOverflow()}}function H(e){this.allowClick||(this.params.preventClicks&&e.preventDefault(),this.params.preventClicksPropagation&&this.animating&&(e.stopPropagation(),e.stopImmediatePropagation()))}function B(){var e=this.wrapperEl,t=this.rtlTranslate;this.previousTranslate=this.translate,this.isHorizontal()?this.translate=t?e.scrollWidth-e.offsetWidth-e.scrollLeft:-e.scrollLeft:this.translate=-e.scrollTop,-0===this.translate&&(this.translate=0),this.updateActiveIndex(),this.updateSlidesClasses();var i=this.maxTranslate()-this.minTranslate();(0===i?0:(this.translate-this.minTranslate())/i)!==this.progress&&this.updateProgress(t?-this.translate:this.translate),this.emit("setTranslate",this.translate,!1)}var N=!1;function X(){}var V={init:!0,direction:"horizontal",touchEventsTarget:"container",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,preventInteractionOnTransition:!1,edgeSwipeDetection:!1,edgeSwipeThreshold:20,freeMode:!1,freeModeMomentum:!0,freeModeMomentumRatio:1,freeModeMomentumBounce:!0,freeModeMomentumBounceRatio:1,freeModeMomentumVelocityRatio:1,freeModeSticky:!1,freeModeMinimumVelocity:.02,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,spaceBetween:0,slidesPerView:1,slidesPerColumn:1,slidesPerColumnFill:"column",slidesPerGroup:1,slidesPerGroupSkip:0,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!1,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:0,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,watchSlidesVisibility:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopFillGroupWithBlank:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,containerModifierClass:"swiper-container-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-invisible-blank",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",runCallbacksOnInit:!0},Y={update:h,translate:p,transition:c,slide:u,loop:v,grabCursor:f,manipulation:L,events:{attachEvents:function(){var t=this.params,i=this.touchEvents,s=this.el,a=this.wrapperEl;this.onTouchStart=D.bind(this),this.onTouchMove=O.bind(this),this.onTouchEnd=A.bind(this),t.cssMode&&(this.onScroll=B.bind(this)),this.onClick=H.bind(this);var r=!!t.nested;if(!o.touch&&o.pointerEvents)s.addEventListener(i.start,this.onTouchStart,!1),e.addEventListener(i.move,this.onTouchMove,r),e.addEventListener(i.end,this.onTouchEnd,!1);else{if(o.touch){var n=!("touchstart"!==i.start||!o.passiveListener||!t.passiveListeners)&&{passive:!0,capture:!1};s.addEventListener(i.start,this.onTouchStart,n),s.addEventListener(i.move,this.onTouchMove,o.passiveListener?{passive:!1,capture:r}:r),s.addEventListener(i.end,this.onTouchEnd,n),i.cancel&&s.addEventListener(i.cancel,this.onTouchEnd,n),N||(e.addEventListener("touchstart",X),N=!0)}(t.simulateTouch&&!I.ios&&!I.android||t.simulateTouch&&!o.touch&&I.ios)&&(s.addEventListener("mousedown",this.onTouchStart,!1),e.addEventListener("mousemove",this.onTouchMove,r),e.addEventListener("mouseup",this.onTouchEnd,!1))}(t.preventClicks||t.preventClicksPropagation)&&s.addEventListener("click",this.onClick,!0),t.cssMode&&a.addEventListener("scroll",this.onScroll),t.updateOnWindowResize?this.on(I.ios||I.android?"resize orientationchange observerUpdate":"resize observerUpdate",G,!0):this.on("observerUpdate",G,!0)},detachEvents:function(){var t=this.params,i=this.touchEvents,s=this.el,a=this.wrapperEl,r=!!t.nested;if(!o.touch&&o.pointerEvents)s.removeEventListener(i.start,this.onTouchStart,!1),e.removeEventListener(i.move,this.onTouchMove,r),e.removeEventListener(i.end,this.onTouchEnd,!1);else{if(o.touch){var n=!("onTouchStart"!==i.start||!o.passiveListener||!t.passiveListeners)&&{passive:!0,capture:!1};s.removeEventListener(i.start,this.onTouchStart,n),s.removeEventListener(i.move,this.onTouchMove,r),s.removeEventListener(i.end,this.onTouchEnd,n),i.cancel&&s.removeEventListener(i.cancel,this.onTouchEnd,n)}(t.simulateTouch&&!I.ios&&!I.android||t.simulateTouch&&!o.touch&&I.ios)&&(s.removeEventListener("mousedown",this.onTouchStart,!1),e.removeEventListener("mousemove",this.onTouchMove,r),e.removeEventListener("mouseup",this.onTouchEnd,!1))}(t.preventClicks||t.preventClicksPropagation)&&s.removeEventListener("click",this.onClick,!0),t.cssMode&&a.removeEventListener("scroll",this.onScroll),this.off(I.ios||I.android?"resize orientationchange observerUpdate":"resize observerUpdate",G)}},breakpoints:{setBreakpoint:function(){var e=this.activeIndex,t=this.initialized,i=this.loopedSlides;void 0===i&&(i=0);var s=this.params,a=this.$el,r=s.breakpoints;if(r&&(!r||0!==Object.keys(r).length)){var o=this.getBreakpoint(r);if(o&&this.currentBreakpoint!==o){var l=o in r?r[o]:void 0;l&&["slidesPerView","spaceBetween","slidesPerGroup","slidesPerGroupSkip","slidesPerColumn"].forEach((function(e){var t=l[e];void 0!==t&&(l[e]="slidesPerView"!==e||"AUTO"!==t&&"auto"!==t?"slidesPerView"===e?parseFloat(t):parseInt(t,10):"auto")}));var d=l||this.originalParams,h=s.slidesPerColumn>1,p=d.slidesPerColumn>1;h&&!p?a.removeClass(s.containerModifierClass+"multirow "+s.containerModifierClass+"multirow-column"):!h&&p&&(a.addClass(s.containerModifierClass+"multirow"),"column"===d.slidesPerColumnFill&&a.addClass(s.containerModifierClass+"multirow-column"));var c=d.direction&&d.direction!==s.direction,u=s.loop&&(d.slidesPerView!==s.slidesPerView||c);c&&t&&this.changeDirection(),n.extend(this.params,d),n.extend(this,{allowTouchMove:this.params.allowTouchMove,allowSlideNext:this.params.allowSlideNext,allowSlidePrev:this.params.allowSlidePrev}),this.currentBreakpoint=o,u&&t&&(this.loopDestroy(),this.loopCreate(),this.updateSlides(),this.slideTo(e-i+this.loopedSlides,0,!1)),this.emit("breakpoint",d)}}},getBreakpoint:function(e){if(e){var i=!1,s=Object.keys(e).map((function(e){if("string"==typeof e&&0===e.indexOf("@")){var i=parseFloat(e.substr(1));return{value:t.innerHeight*i,point:e}}return{value:e,point:e}}));s.sort((function(e,t){return parseInt(e.value,10)-parseInt(t.value,10)}));for(var a=0;a0&&e.slidesOffsetBefore+e.spaceBetween*(this.slides.length-1)+this.slides[0].offsetWidth*this.slides.length;e.slidesOffsetBefore&&e.slidesOffsetAfter&&i?this.isLocked=i<=this.size:this.isLocked=1===this.snapGrid.length,this.allowSlideNext=!this.isLocked,this.allowSlidePrev=!this.isLocked,t!==this.isLocked&&this.emit(this.isLocked?"lock":"unlock"),t&&t!==this.isLocked&&(this.isEnd=!1,this.navigation.update())}},classes:{addClasses:function(){var e=this.classNames,t=this.params,i=this.rtl,s=this.$el,a=[];a.push("initialized"),a.push(t.direction),t.freeMode&&a.push("free-mode"),t.autoHeight&&a.push("autoheight"),i&&a.push("rtl"),t.slidesPerColumn>1&&(a.push("multirow"),"column"===t.slidesPerColumnFill&&a.push("multirow-column")),I.android&&a.push("android"),I.ios&&a.push("ios"),t.cssMode&&a.push("css-mode"),a.forEach((function(i){e.push(t.containerModifierClass+i)})),s.addClass(e.join(" "))},removeClasses:function(){var e=this.$el,t=this.classNames;e.removeClass(t.join(" "))}},images:{loadImage:function(e,i,s,a,r,n){var o;function l(){n&&n()}e.complete&&r?l():i?((o=new t.Image).onload=l,o.onerror=l,a&&(o.sizes=a),s&&(o.srcset=s),i&&(o.src=i)):l()},preloadImages:function(){var e=this;function t(){null!=e&&e&&!e.destroyed&&(void 0!==e.imagesLoaded&&(e.imagesLoaded+=1),e.imagesLoaded===e.imagesToLoad.length&&(e.params.updateOnImagesReady&&e.update(),e.emit("imagesReady")))}e.imagesToLoad=e.$el.find("img");for(var i=0;i1){var u=[];return c.each((function(e,i){var s=n.extend({},r,{el:i});u.push(new t(s))})),u}var v,f,m;return a.swiper=h,c.data("swiper",h),a&&a.shadowRoot&&a.shadowRoot.querySelector?(v=s(a.shadowRoot.querySelector("."+h.params.wrapperClass))).children=function(e){return c.children(e)}:v=c.children("."+h.params.wrapperClass),n.extend(h,{$el:c,el:a,$wrapperEl:v,wrapperEl:v[0],classNames:[],slides:s(),slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:function(){return"horizontal"===h.params.direction},isVertical:function(){return"vertical"===h.params.direction},rtl:"rtl"===a.dir.toLowerCase()||"rtl"===c.css("direction"),rtlTranslate:"horizontal"===h.params.direction&&("rtl"===a.dir.toLowerCase()||"rtl"===c.css("direction")),wrongRTL:"-webkit-box"===v.css("display"),activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,allowSlideNext:h.params.allowSlideNext,allowSlidePrev:h.params.allowSlidePrev,touchEvents:(f=["touchstart","touchmove","touchend","touchcancel"],m=["mousedown","mousemove","mouseup"],o.pointerEvents&&(m=["pointerdown","pointermove","pointerup"]),h.touchEventsTouch={start:f[0],move:f[1],end:f[2],cancel:f[3]},h.touchEventsDesktop={start:m[0],move:m[1],end:m[2]},o.touch||!h.params.simulateTouch?h.touchEventsTouch:h.touchEventsDesktop),touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,formElements:"input, select, option, textarea, button, video, label",lastClickTime:n.now(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},allowClick:!0,allowTouchMove:h.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),h.useModules(),h.params.init&&h.init(),h}}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var i={extendedDefaults:{configurable:!0},defaults:{configurable:!0},Class:{configurable:!0},$:{configurable:!0}};return t.prototype.slidesPerViewDynamic=function(){var e=this.params,t=this.slides,i=this.slidesGrid,s=this.size,a=this.activeIndex,r=1;if(e.centeredSlides){for(var n,o=t[a].swiperSlideSize,l=a+1;ls&&(n=!0));for(var d=a-1;d>=0;d-=1)t[d]&&!n&&(r+=1,(o+=t[d].swiperSlideSize)>s&&(n=!0))}else for(var h=a+1;h1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0))||s(),i.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}function s(){var t=e.rtlTranslate?-1*e.translate:e.translate,i=Math.min(Math.max(t,e.maxTranslate()),e.minTranslate());e.setTranslate(i),e.updateActiveIndex(),e.updateSlidesClasses()}},t.prototype.changeDirection=function(e,t){void 0===t&&(t=!0);var i=this.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(this.$el.removeClass(""+this.params.containerModifierClass+i).addClass(""+this.params.containerModifierClass+e),this.params.direction=e,this.slides.each((function(t,i){"vertical"===e?i.style.width="":i.style.height=""})),this.emit("changeDirection"),t&&this.update()),this},t.prototype.init=function(){this.initialized||(this.emit("beforeInit"),this.params.breakpoints&&this.setBreakpoint(),this.addClasses(),this.params.loop&&this.loopCreate(),this.updateSize(),this.updateSlides(),this.params.watchOverflow&&this.checkOverflow(),this.params.grabCursor&&this.setGrabCursor(),this.params.preloadImages&&this.preloadImages(),this.params.loop?this.slideTo(this.params.initialSlide+this.loopedSlides,0,this.params.runCallbacksOnInit):this.slideTo(this.params.initialSlide,0,this.params.runCallbacksOnInit),this.attachEvents(),this.initialized=!0,this.emit("init"))},t.prototype.destroy=function(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);var i=this,s=i.params,a=i.$el,r=i.$wrapperEl,o=i.slides;return void 0===i.params||i.destroyed||(i.emit("beforeDestroy"),i.initialized=!1,i.detachEvents(),s.loop&&i.loopDestroy(),t&&(i.removeClasses(),a.removeAttr("style"),r.removeAttr("style"),o&&o.length&&o.removeClass([s.slideVisibleClass,s.slideActiveClass,s.slideNextClass,s.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),i.emit("destroy"),Object.keys(i.eventsListeners).forEach((function(e){i.off(e)})),!1!==e&&(i.$el[0].swiper=null,i.$el.data("swiper",null),n.deleteProps(i)),i.destroyed=!0),null},t.extendDefaults=function(e){n.extend(F,e)},i.extendedDefaults.get=function(){return F},i.defaults.get=function(){return V},i.Class.get=function(){return e},i.$.get=function(){return s},Object.defineProperties(t,i),t}(l),R={name:"device",proto:{device:I},static:{device:I}},q={name:"support",proto:{support:o},static:{support:o}},j={isEdge:!!t.navigator.userAgent.match(/Edge/g),isSafari:function(){var e=t.navigator.userAgent.toLowerCase();return e.indexOf("safari")>=0&&e.indexOf("chrome")<0&&e.indexOf("android")<0}(),isUiWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(t.navigator.userAgent)},K={name:"browser",proto:{browser:j},static:{browser:j}},U={name:"resize",create:function(){var e=this;n.extend(e,{resize:{resizeHandler:function(){e&&!e.destroyed&&e.initialized&&(e.emit("beforeResize"),e.emit("resize"))},orientationChangeHandler:function(){e&&!e.destroyed&&e.initialized&&e.emit("orientationchange")}}})},on:{init:function(){t.addEventListener("resize",this.resize.resizeHandler),t.addEventListener("orientationchange",this.resize.orientationChangeHandler)},destroy:function(){t.removeEventListener("resize",this.resize.resizeHandler),t.removeEventListener("orientationchange",this.resize.orientationChangeHandler)}}},_={func:t.MutationObserver||t.WebkitMutationObserver,attach:function(e,i){void 0===i&&(i={});var s=this,a=new(0,_.func)((function(e){if(1!==e.length){var i=function(){s.emit("observerUpdate",e[0])};t.requestAnimationFrame?t.requestAnimationFrame(i):t.setTimeout(i,0)}else s.emit("observerUpdate",e[0])}));a.observe(e,{attributes:void 0===i.attributes||i.attributes,childList:void 0===i.childList||i.childList,characterData:void 0===i.characterData||i.characterData}),s.observer.observers.push(a)},init:function(){if(o.observer&&this.params.observer){if(this.params.observeParents)for(var e=this.$el.parents(),t=0;tT)&&t.$wrapperEl.find("."+t.params.slideClass+'[data-swiper-slide-index="'+P+'"]').remove();for(var z=0;z=x&&z<=T&&(void 0===c||e?M.push(z):(z>c&&M.push(z),z'+e+"");return a.attr("data-swiper-slide-index")||a.attr("data-swiper-slide-index",t),i.cache&&(this.virtual.cache[t]=a),a},appendSlide:function(e){if("object"==typeof e&&"length"in e)for(var t=0;t=0;i-=1)this.virtual.slides.splice(e[i],1),this.params.virtual.cache&&delete this.virtual.cache[e[i]],e[i]0&&0===this.$el.parents("."+this.params.slideActiveClass).length)return;var o=t.innerWidth,l=t.innerHeight,d=this.$el.offset();s&&(d.left-=this.$el[0].scrollLeft);for(var h=[[d.left,d.top],[d.left+this.width,d.top],[d.left,d.top+this.height],[d.left+this.width,d.top+this.height]],p=0;p=0&&c[0]<=o&&c[1]>=0&&c[1]<=l&&(n=!0)}if(!n)return}this.isHorizontal()?(33!==r&&34!==r&&37!==r&&39!==r||(a.preventDefault?a.preventDefault():a.returnValue=!1),(34!==r&&39!==r||s)&&(33!==r&&37!==r||!s)||this.slideNext(),(33!==r&&37!==r||s)&&(34!==r&&39!==r||!s)||this.slidePrev()):(33!==r&&34!==r&&38!==r&&40!==r||(a.preventDefault?a.preventDefault():a.returnValue=!1),34!==r&&40!==r||this.slideNext(),33!==r&&38!==r||this.slidePrev()),this.emit("keyPress",r)}},enable:function(){this.keyboard.enabled||(s(e).on("keydown",this.keyboard.handle),this.keyboard.enabled=!0)},disable:function(){this.keyboard.enabled&&(s(e).off("keydown",this.keyboard.handle),this.keyboard.enabled=!1)}},te={name:"keyboard",params:{keyboard:{enabled:!1,onlyInViewport:!0}},create:function(){n.extend(this,{keyboard:{enabled:!1,enable:ee.enable.bind(this),disable:ee.disable.bind(this),handle:ee.handle.bind(this)}})},on:{init:function(){this.params.keyboard.enabled&&this.keyboard.enable()},destroy:function(){this.keyboard.enabled&&this.keyboard.disable()}}};var ie={lastScrollTime:n.now(),lastEventBeforeSnap:void 0,recentWheelEvents:[],event:function(){return t.navigator.userAgent.indexOf("firefox")>-1?"DOMMouseScroll":function(){var t="onwheel"in e;if(!t){var i=e.createElement("div");i.setAttribute("onwheel","return;"),t="function"==typeof i.onwheel}return!t&&e.implementation&&e.implementation.hasFeature&&!0!==e.implementation.hasFeature("","")&&(t=e.implementation.hasFeature("Events.wheel","3.0")),t}()?"wheel":"mousewheel"},normalize:function(e){var t=0,i=0,s=0,a=0;return"detail"in e&&(i=e.detail),"wheelDelta"in e&&(i=-e.wheelDelta/120),"wheelDeltaY"in e&&(i=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=i,i=0),s=10*t,a=10*i,"deltaY"in e&&(a=e.deltaY),"deltaX"in e&&(s=e.deltaX),e.shiftKey&&!s&&(s=a,a=0),(s||a)&&e.deltaMode&&(1===e.deltaMode?(s*=40,a*=40):(s*=800,a*=800)),s&&!t&&(t=s<1?-1:1),a&&!i&&(i=a<1?-1:1),{spinX:t,spinY:i,pixelX:s,pixelY:a}},handleMouseEnter:function(){this.mouseEntered=!0},handleMouseLeave:function(){this.mouseEntered=!1},handle:function(e){var t=e,i=this,a=i.params.mousewheel;i.params.cssMode&&t.preventDefault();var r=i.$el;if("container"!==i.params.mousewheel.eventsTarged&&(r=s(i.params.mousewheel.eventsTarged)),!i.mouseEntered&&!r[0].contains(t.target)&&!a.releaseOnEdges)return!0;t.originalEvent&&(t=t.originalEvent);var o=0,l=i.rtlTranslate?-1:1,d=ie.normalize(t);if(a.forceToAxis)if(i.isHorizontal()){if(!(Math.abs(d.pixelX)>Math.abs(d.pixelY)))return!0;o=d.pixelX*l}else{if(!(Math.abs(d.pixelY)>Math.abs(d.pixelX)))return!0;o=d.pixelY}else o=Math.abs(d.pixelX)>Math.abs(d.pixelY)?-d.pixelX*l:-d.pixelY;if(0===o)return!0;if(a.invert&&(o=-o),i.params.freeMode){var h={time:n.now(),delta:Math.abs(o),direction:Math.sign(o)},p=i.mousewheel.lastEventBeforeSnap,c=p&&h.time=i.minTranslate()&&(u=i.minTranslate()),u<=i.maxTranslate()&&(u=i.maxTranslate()),i.setTransition(0),i.setTranslate(u),i.updateProgress(),i.updateActiveIndex(),i.updateSlidesClasses(),(!v&&i.isBeginning||!f&&i.isEnd)&&i.updateSlidesClasses(),i.params.freeModeSticky){clearTimeout(i.mousewheel.timeout),i.mousewheel.timeout=void 0;var m=i.mousewheel.recentWheelEvents;m.length>=15&&m.shift();var g=m.length?m[m.length-1]:void 0,b=m[0];if(m.push(h),g&&(h.delta>g.delta||h.direction!==g.direction))m.splice(0);else if(m.length>=15&&h.time-b.time<500&&b.delta-h.delta>=1&&h.delta<=6){var w=o>0?.8:.2;i.mousewheel.lastEventBeforeSnap=h,m.splice(0),i.mousewheel.timeout=n.nextTick((function(){i.slideToClosest(i.params.speed,!0,void 0,w)}),0)}i.mousewheel.timeout||(i.mousewheel.timeout=n.nextTick((function(){i.mousewheel.lastEventBeforeSnap=h,m.splice(0),i.slideToClosest(i.params.speed,!0,void 0,.5)}),500))}if(c||i.emit("scroll",t),i.params.autoplay&&i.params.autoplayDisableOnInteraction&&i.autoplay.stop(),u===i.minTranslate()||u===i.maxTranslate())return!0}}else{var y={time:n.now(),delta:Math.abs(o),direction:Math.sign(o),raw:e},x=i.mousewheel.recentWheelEvents;x.length>=2&&x.shift();var T=x.length?x[x.length-1]:void 0;if(x.push(y),T?(y.direction!==T.direction||y.delta>T.delta)&&i.mousewheel.animateSlider(y):i.mousewheel.animateSlider(y),i.mousewheel.releaseScroll(y))return!0}return t.preventDefault?t.preventDefault():t.returnValue=!1,!1},animateSlider:function(e){return e.delta>=6&&n.now()-this.mousewheel.lastScrollTime<60||(e.direction<0?this.isEnd&&!this.params.loop||this.animating||(this.slideNext(),this.emit("scroll",e.raw)):this.isBeginning&&!this.params.loop||this.animating||(this.slidePrev(),this.emit("scroll",e.raw)),this.mousewheel.lastScrollTime=(new t.Date).getTime(),!1)},releaseScroll:function(e){var t=this.params.mousewheel;if(e.direction<0){if(this.isEnd&&!this.params.loop&&t.releaseOnEdges)return!0}else if(this.isBeginning&&!this.params.loop&&t.releaseOnEdges)return!0;return!1},enable:function(){var e=ie.event();if(this.params.cssMode)return this.wrapperEl.removeEventListener(e,this.mousewheel.handle),!0;if(!e)return!1;if(this.mousewheel.enabled)return!1;var t=this.$el;return"container"!==this.params.mousewheel.eventsTarged&&(t=s(this.params.mousewheel.eventsTarged)),t.on("mouseenter",this.mousewheel.handleMouseEnter),t.on("mouseleave",this.mousewheel.handleMouseLeave),t.on(e,this.mousewheel.handle),this.mousewheel.enabled=!0,!0},disable:function(){var e=ie.event();if(this.params.cssMode)return this.wrapperEl.addEventListener(e,this.mousewheel.handle),!0;if(!e)return!1;if(!this.mousewheel.enabled)return!1;var t=this.$el;return"container"!==this.params.mousewheel.eventsTarged&&(t=s(this.params.mousewheel.eventsTarged)),t.off(e,this.mousewheel.handle),this.mousewheel.enabled=!1,!0}},se={update:function(){var e=this.params.navigation;if(!this.params.loop){var t=this.navigation,i=t.$nextEl,s=t.$prevEl;s&&s.length>0&&(this.isBeginning?s.addClass(e.disabledClass):s.removeClass(e.disabledClass),s[this.params.watchOverflow&&this.isLocked?"addClass":"removeClass"](e.lockClass)),i&&i.length>0&&(this.isEnd?i.addClass(e.disabledClass):i.removeClass(e.disabledClass),i[this.params.watchOverflow&&this.isLocked?"addClass":"removeClass"](e.lockClass))}},onPrevClick:function(e){e.preventDefault(),this.isBeginning&&!this.params.loop||this.slidePrev()},onNextClick:function(e){e.preventDefault(),this.isEnd&&!this.params.loop||this.slideNext()},init:function(){var e,t,i=this.params.navigation;(i.nextEl||i.prevEl)&&(i.nextEl&&(e=s(i.nextEl),this.params.uniqueNavElements&&"string"==typeof i.nextEl&&e.length>1&&1===this.$el.find(i.nextEl).length&&(e=this.$el.find(i.nextEl))),i.prevEl&&(t=s(i.prevEl),this.params.uniqueNavElements&&"string"==typeof i.prevEl&&t.length>1&&1===this.$el.find(i.prevEl).length&&(t=this.$el.find(i.prevEl))),e&&e.length>0&&e.on("click",this.navigation.onNextClick),t&&t.length>0&&t.on("click",this.navigation.onPrevClick),n.extend(this.navigation,{$nextEl:e,nextEl:e&&e[0],$prevEl:t,prevEl:t&&t[0]}))},destroy:function(){var e=this.navigation,t=e.$nextEl,i=e.$prevEl;t&&t.length&&(t.off("click",this.navigation.onNextClick),t.removeClass(this.params.navigation.disabledClass)),i&&i.length&&(i.off("click",this.navigation.onPrevClick),i.removeClass(this.params.navigation.disabledClass))}},ae={update:function(){var e=this.rtl,t=this.params.pagination;if(t.el&&this.pagination.el&&this.pagination.$el&&0!==this.pagination.$el.length){var i,a=this.virtual&&this.params.virtual.enabled?this.virtual.slides.length:this.slides.length,r=this.pagination.$el,n=this.params.loop?Math.ceil((a-2*this.loopedSlides)/this.params.slidesPerGroup):this.snapGrid.length;if(this.params.loop?((i=Math.ceil((this.activeIndex-this.loopedSlides)/this.params.slidesPerGroup))>a-1-2*this.loopedSlides&&(i-=a-2*this.loopedSlides),i>n-1&&(i-=n),i<0&&"bullets"!==this.params.paginationType&&(i=n+i)):i=void 0!==this.snapIndex?this.snapIndex:this.activeIndex||0,"bullets"===t.type&&this.pagination.bullets&&this.pagination.bullets.length>0){var o,l,d,h=this.pagination.bullets;if(t.dynamicBullets&&(this.pagination.bulletSize=h.eq(0)[this.isHorizontal()?"outerWidth":"outerHeight"](!0),r.css(this.isHorizontal()?"width":"height",this.pagination.bulletSize*(t.dynamicMainBullets+4)+"px"),t.dynamicMainBullets>1&&void 0!==this.previousIndex&&(this.pagination.dynamicBulletIndex+=i-this.previousIndex,this.pagination.dynamicBulletIndex>t.dynamicMainBullets-1?this.pagination.dynamicBulletIndex=t.dynamicMainBullets-1:this.pagination.dynamicBulletIndex<0&&(this.pagination.dynamicBulletIndex=0)),o=i-this.pagination.dynamicBulletIndex,d=((l=o+(Math.min(h.length,t.dynamicMainBullets)-1))+o)/2),h.removeClass(t.bulletActiveClass+" "+t.bulletActiveClass+"-next "+t.bulletActiveClass+"-next-next "+t.bulletActiveClass+"-prev "+t.bulletActiveClass+"-prev-prev "+t.bulletActiveClass+"-main"),r.length>1)h.each((function(e,a){var r=s(a),n=r.index();n===i&&r.addClass(t.bulletActiveClass),t.dynamicBullets&&(n>=o&&n<=l&&r.addClass(t.bulletActiveClass+"-main"),n===o&&r.prev().addClass(t.bulletActiveClass+"-prev").prev().addClass(t.bulletActiveClass+"-prev-prev"),n===l&&r.next().addClass(t.bulletActiveClass+"-next").next().addClass(t.bulletActiveClass+"-next-next"))}));else{var p=h.eq(i),c=p.index();if(p.addClass(t.bulletActiveClass),t.dynamicBullets){for(var u=h.eq(o),v=h.eq(l),f=o;f<=l;f+=1)h.eq(f).addClass(t.bulletActiveClass+"-main");if(this.params.loop)if(c>=h.length-t.dynamicMainBullets){for(var m=t.dynamicMainBullets;m>=0;m-=1)h.eq(h.length-m).addClass(t.bulletActiveClass+"-main");h.eq(h.length-t.dynamicMainBullets-1).addClass(t.bulletActiveClass+"-prev")}else u.prev().addClass(t.bulletActiveClass+"-prev").prev().addClass(t.bulletActiveClass+"-prev-prev"),v.next().addClass(t.bulletActiveClass+"-next").next().addClass(t.bulletActiveClass+"-next-next");else u.prev().addClass(t.bulletActiveClass+"-prev").prev().addClass(t.bulletActiveClass+"-prev-prev"),v.next().addClass(t.bulletActiveClass+"-next").next().addClass(t.bulletActiveClass+"-next-next")}}if(t.dynamicBullets){var g=Math.min(h.length,t.dynamicMainBullets+4),b=(this.pagination.bulletSize*g-this.pagination.bulletSize)/2-d*this.pagination.bulletSize,w=e?"right":"left";h.css(this.isHorizontal()?w:"top",b+"px")}}if("fraction"===t.type&&(r.find("."+t.currentClass).text(t.formatFractionCurrent(i+1)),r.find("."+t.totalClass).text(t.formatFractionTotal(n))),"progressbar"===t.type){var y;y=t.progressbarOpposite?this.isHorizontal()?"vertical":"horizontal":this.isHorizontal()?"horizontal":"vertical";var x=(i+1)/n,T=1,E=1;"horizontal"===y?T=x:E=x,r.find("."+t.progressbarFillClass).transform("translate3d(0,0,0) scaleX("+T+") scaleY("+E+")").transition(this.params.speed)}"custom"===t.type&&t.renderCustom?(r.html(t.renderCustom(this,i+1,n)),this.emit("paginationRender",this,r[0])):this.emit("paginationUpdate",this,r[0]),r[this.params.watchOverflow&&this.isLocked?"addClass":"removeClass"](t.lockClass)}},render:function(){var e=this.params.pagination;if(e.el&&this.pagination.el&&this.pagination.$el&&0!==this.pagination.$el.length){var t=this.virtual&&this.params.virtual.enabled?this.virtual.slides.length:this.slides.length,i=this.pagination.$el,s="";if("bullets"===e.type){for(var a=this.params.loop?Math.ceil((t-2*this.loopedSlides)/this.params.slidesPerGroup):this.snapGrid.length,r=0;r";i.html(s),this.pagination.bullets=i.find("."+e.bulletClass)}"fraction"===e.type&&(s=e.renderFraction?e.renderFraction.call(this,e.currentClass,e.totalClass):' / ',i.html(s)),"progressbar"===e.type&&(s=e.renderProgressbar?e.renderProgressbar.call(this,e.progressbarFillClass):'',i.html(s)),"custom"!==e.type&&this.emit("paginationRender",this.pagination.$el[0])}},init:function(){var e=this,t=e.params.pagination;if(t.el){var i=s(t.el);0!==i.length&&(e.params.uniqueNavElements&&"string"==typeof t.el&&i.length>1&&1===e.$el.find(t.el).length&&(i=e.$el.find(t.el)),"bullets"===t.type&&t.clickable&&i.addClass(t.clickableClass),i.addClass(t.modifierClass+t.type),"bullets"===t.type&&t.dynamicBullets&&(i.addClass(""+t.modifierClass+t.type+"-dynamic"),e.pagination.dynamicBulletIndex=0,t.dynamicMainBullets<1&&(t.dynamicMainBullets=1)),"progressbar"===t.type&&t.progressbarOpposite&&i.addClass(t.progressbarOppositeClass),t.clickable&&i.on("click","."+t.bulletClass,(function(t){t.preventDefault();var i=s(this).index()*e.params.slidesPerGroup;e.params.loop&&(i+=e.loopedSlides),e.slideTo(i)})),n.extend(e.pagination,{$el:i,el:i[0]}))}},destroy:function(){var e=this.params.pagination;if(e.el&&this.pagination.el&&this.pagination.$el&&0!==this.pagination.$el.length){var t=this.pagination.$el;t.removeClass(e.hiddenClass),t.removeClass(e.modifierClass+e.type),this.pagination.bullets&&this.pagination.bullets.removeClass(e.bulletActiveClass),e.clickable&&t.off("click","."+e.bulletClass)}}},re={setTranslate:function(){if(this.params.scrollbar.el&&this.scrollbar.el){var e=this.scrollbar,t=this.rtlTranslate,i=this.progress,s=e.dragSize,a=e.trackSize,r=e.$dragEl,n=e.$el,o=this.params.scrollbar,l=s,d=(a-s)*i;t?(d=-d)>0?(l=s-d,d=0):-d+s>a&&(l=a+d):d<0?(l=s+d,d=0):d+s>a&&(l=a-d),this.isHorizontal()?(r.transform("translate3d("+d+"px, 0, 0)"),r[0].style.width=l+"px"):(r.transform("translate3d(0px, "+d+"px, 0)"),r[0].style.height=l+"px"),o.hide&&(clearTimeout(this.scrollbar.timeout),n[0].style.opacity=1,this.scrollbar.timeout=setTimeout((function(){n[0].style.opacity=0,n.transition(400)}),1e3))}},setTransition:function(e){this.params.scrollbar.el&&this.scrollbar.el&&this.scrollbar.$dragEl.transition(e)},updateSize:function(){if(this.params.scrollbar.el&&this.scrollbar.el){var e=this.scrollbar,t=e.$dragEl,i=e.$el;t[0].style.width="",t[0].style.height="";var s,a=this.isHorizontal()?i[0].offsetWidth:i[0].offsetHeight,r=this.size/this.virtualSize,o=r*(a/this.size);s="auto"===this.params.scrollbar.dragSize?a*r:parseInt(this.params.scrollbar.dragSize,10),this.isHorizontal()?t[0].style.width=s+"px":t[0].style.height=s+"px",i[0].style.display=r>=1?"none":"",this.params.scrollbar.hide&&(i[0].style.opacity=0),n.extend(e,{trackSize:a,divider:r,moveDivider:o,dragSize:s}),e.$el[this.params.watchOverflow&&this.isLocked?"addClass":"removeClass"](this.params.scrollbar.lockClass)}},getPointerPosition:function(e){return this.isHorizontal()?"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientX:e.clientX:"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientY:e.clientY},setDragPosition:function(e){var t,i=this.scrollbar,s=this.rtlTranslate,a=i.$el,r=i.dragSize,n=i.trackSize,o=i.dragStartPos;t=(i.getPointerPosition(e)-a.offset()[this.isHorizontal()?"left":"top"]-(null!==o?o:r/2))/(n-r),t=Math.max(Math.min(t,1),0),s&&(t=1-t);var l=this.minTranslate()+(this.maxTranslate()-this.minTranslate())*t;this.updateProgress(l),this.setTranslate(l),this.updateActiveIndex(),this.updateSlidesClasses()},onDragStart:function(e){var t=this.params.scrollbar,i=this.scrollbar,s=this.$wrapperEl,a=i.$el,r=i.$dragEl;this.scrollbar.isTouched=!0,this.scrollbar.dragStartPos=e.target===r[0]||e.target===r?i.getPointerPosition(e)-e.target.getBoundingClientRect()[this.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),s.transition(100),r.transition(100),i.setDragPosition(e),clearTimeout(this.scrollbar.dragTimeout),a.transition(0),t.hide&&a.css("opacity",1),this.params.cssMode&&this.$wrapperEl.css("scroll-snap-type","none"),this.emit("scrollbarDragStart",e)},onDragMove:function(e){var t=this.scrollbar,i=this.$wrapperEl,s=t.$el,a=t.$dragEl;this.scrollbar.isTouched&&(e.preventDefault?e.preventDefault():e.returnValue=!1,t.setDragPosition(e),i.transition(0),s.transition(0),a.transition(0),this.emit("scrollbarDragMove",e))},onDragEnd:function(e){var t=this.params.scrollbar,i=this.scrollbar,s=this.$wrapperEl,a=i.$el;this.scrollbar.isTouched&&(this.scrollbar.isTouched=!1,this.params.cssMode&&(this.$wrapperEl.css("scroll-snap-type",""),s.transition("")),t.hide&&(clearTimeout(this.scrollbar.dragTimeout),this.scrollbar.dragTimeout=n.nextTick((function(){a.css("opacity",0),a.transition(400)}),1e3)),this.emit("scrollbarDragEnd",e),t.snapOnRelease&&this.slideToClosest())},enableDraggable:function(){if(this.params.scrollbar.el){var t=this.scrollbar,i=this.touchEventsTouch,s=this.touchEventsDesktop,a=this.params,r=t.$el[0],n=!(!o.passiveListener||!a.passiveListeners)&&{passive:!1,capture:!1},l=!(!o.passiveListener||!a.passiveListeners)&&{passive:!0,capture:!1};o.touch?(r.addEventListener(i.start,this.scrollbar.onDragStart,n),r.addEventListener(i.move,this.scrollbar.onDragMove,n),r.addEventListener(i.end,this.scrollbar.onDragEnd,l)):(r.addEventListener(s.start,this.scrollbar.onDragStart,n),e.addEventListener(s.move,this.scrollbar.onDragMove,n),e.addEventListener(s.end,this.scrollbar.onDragEnd,l))}},disableDraggable:function(){if(this.params.scrollbar.el){var t=this.scrollbar,i=this.touchEventsTouch,s=this.touchEventsDesktop,a=this.params,r=t.$el[0],n=!(!o.passiveListener||!a.passiveListeners)&&{passive:!1,capture:!1},l=!(!o.passiveListener||!a.passiveListeners)&&{passive:!0,capture:!1};o.touch?(r.removeEventListener(i.start,this.scrollbar.onDragStart,n),r.removeEventListener(i.move,this.scrollbar.onDragMove,n),r.removeEventListener(i.end,this.scrollbar.onDragEnd,l)):(r.removeEventListener(s.start,this.scrollbar.onDragStart,n),e.removeEventListener(s.move,this.scrollbar.onDragMove,n),e.removeEventListener(s.end,this.scrollbar.onDragEnd,l))}},init:function(){if(this.params.scrollbar.el){var e=this.scrollbar,t=this.$el,i=this.params.scrollbar,a=s(i.el);this.params.uniqueNavElements&&"string"==typeof i.el&&a.length>1&&1===t.find(i.el).length&&(a=t.find(i.el));var r=a.find("."+this.params.scrollbar.dragClass);0===r.length&&(r=s('
      '),a.append(r)),n.extend(e,{$el:a,el:a[0],$dragEl:r,dragEl:r[0]}),i.draggable&&e.enableDraggable()}},destroy:function(){this.scrollbar.disableDraggable()}},ne={setTransform:function(e,t){var i=this.rtl,a=s(e),r=i?-1:1,n=a.attr("data-swiper-parallax")||"0",o=a.attr("data-swiper-parallax-x"),l=a.attr("data-swiper-parallax-y"),d=a.attr("data-swiper-parallax-scale"),h=a.attr("data-swiper-parallax-opacity");if(o||l?(o=o||"0",l=l||"0"):this.isHorizontal()?(o=n,l="0"):(l=n,o="0"),o=o.indexOf("%")>=0?parseInt(o,10)*t*r+"%":o*t*r+"px",l=l.indexOf("%")>=0?parseInt(l,10)*t+"%":l*t+"px",null!=h){var p=h-(h-1)*(1-Math.abs(t));a[0].style.opacity=p}if(null==d)a.transform("translate3d("+o+", "+l+", 0px)");else{var c=d-(d-1)*(1-Math.abs(t));a.transform("translate3d("+o+", "+l+", 0px) scale("+c+")")}},setTranslate:function(){var e=this,t=e.$el,i=e.slides,a=e.progress,r=e.snapGrid;t.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t,i){e.parallax.setTransform(i,a)})),i.each((function(t,i){var n=i.progress;e.params.slidesPerGroup>1&&"auto"!==e.params.slidesPerView&&(n+=Math.ceil(t/2)-a*(r.length-1)),n=Math.min(Math.max(n,-1),1),s(i).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t,i){e.parallax.setTransform(i,n)}))}))},setTransition:function(e){void 0===e&&(e=this.params.speed);this.$el.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t,i){var a=s(i),r=parseInt(a.attr("data-swiper-parallax-duration"),10)||e;0===e&&(r=0),a.transition(r)}))}},oe={getDistanceBetweenTouches:function(e){if(e.targetTouches.length<2)return 1;var t=e.targetTouches[0].pageX,i=e.targetTouches[0].pageY,s=e.targetTouches[1].pageX,a=e.targetTouches[1].pageY;return Math.sqrt(Math.pow(s-t,2)+Math.pow(a-i,2))},onGestureStart:function(e){var t=this.params.zoom,i=this.zoom,a=i.gesture;if(i.fakeGestureTouched=!1,i.fakeGestureMoved=!1,!o.gestures){if("touchstart"!==e.type||"touchstart"===e.type&&e.targetTouches.length<2)return;i.fakeGestureTouched=!0,a.scaleStart=oe.getDistanceBetweenTouches(e)}a.$slideEl&&a.$slideEl.length||(a.$slideEl=s(e.target).closest("."+this.params.slideClass),0===a.$slideEl.length&&(a.$slideEl=this.slides.eq(this.activeIndex)),a.$imageEl=a.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),a.$imageWrapEl=a.$imageEl.parent("."+t.containerClass),a.maxRatio=a.$imageWrapEl.attr("data-swiper-zoom")||t.maxRatio,0!==a.$imageWrapEl.length)?(a.$imageEl&&a.$imageEl.transition(0),this.zoom.isScaling=!0):a.$imageEl=void 0},onGestureChange:function(e){var t=this.params.zoom,i=this.zoom,s=i.gesture;if(!o.gestures){if("touchmove"!==e.type||"touchmove"===e.type&&e.targetTouches.length<2)return;i.fakeGestureMoved=!0,s.scaleMove=oe.getDistanceBetweenTouches(e)}s.$imageEl&&0!==s.$imageEl.length&&(i.scale=o.gestures?e.scale*i.currentScale:s.scaleMove/s.scaleStart*i.currentScale,i.scale>s.maxRatio&&(i.scale=s.maxRatio-1+Math.pow(i.scale-s.maxRatio+1,.5)),i.scales.touchesStart.x))return void(s.isTouched=!1);if(!this.isHorizontal()&&(Math.floor(s.minY)===Math.floor(s.startY)&&s.touchesCurrent.ys.touchesStart.y))return void(s.isTouched=!1)}e.preventDefault(),e.stopPropagation(),s.isMoved=!0,s.currentX=s.touchesCurrent.x-s.touchesStart.x+s.startX,s.currentY=s.touchesCurrent.y-s.touchesStart.y+s.startY,s.currentXs.maxX&&(s.currentX=s.maxX-1+Math.pow(s.currentX-s.maxX+1,.8)),s.currentYs.maxY&&(s.currentY=s.maxY-1+Math.pow(s.currentY-s.maxY+1,.8)),a.prevPositionX||(a.prevPositionX=s.touchesCurrent.x),a.prevPositionY||(a.prevPositionY=s.touchesCurrent.y),a.prevTime||(a.prevTime=Date.now()),a.x=(s.touchesCurrent.x-a.prevPositionX)/(Date.now()-a.prevTime)/2,a.y=(s.touchesCurrent.y-a.prevPositionY)/(Date.now()-a.prevTime)/2,Math.abs(s.touchesCurrent.x-a.prevPositionX)<2&&(a.x=0),Math.abs(s.touchesCurrent.y-a.prevPositionY)<2&&(a.y=0),a.prevPositionX=s.touchesCurrent.x,a.prevPositionY=s.touchesCurrent.y,a.prevTime=Date.now(),i.$imageWrapEl.transform("translate3d("+s.currentX+"px, "+s.currentY+"px,0)")}}},onTouchEnd:function(){var e=this.zoom,t=e.gesture,i=e.image,s=e.velocity;if(t.$imageEl&&0!==t.$imageEl.length){if(!i.isTouched||!i.isMoved)return i.isTouched=!1,void(i.isMoved=!1);i.isTouched=!1,i.isMoved=!1;var a=300,r=300,n=s.x*a,o=i.currentX+n,l=s.y*r,d=i.currentY+l;0!==s.x&&(a=Math.abs((o-i.currentX)/s.x)),0!==s.y&&(r=Math.abs((d-i.currentY)/s.y));var h=Math.max(a,r);i.currentX=o,i.currentY=d;var p=i.width*e.scale,c=i.height*e.scale;i.minX=Math.min(t.slideWidth/2-p/2,0),i.maxX=-i.minX,i.minY=Math.min(t.slideHeight/2-c/2,0),i.maxY=-i.minY,i.currentX=Math.max(Math.min(i.currentX,i.maxX),i.minX),i.currentY=Math.max(Math.min(i.currentY,i.maxY),i.minY),t.$imageWrapEl.transition(h).transform("translate3d("+i.currentX+"px, "+i.currentY+"px,0)")}},onTransitionEnd:function(){var e=this.zoom,t=e.gesture;t.$slideEl&&this.previousIndex!==this.activeIndex&&(t.$imageEl&&t.$imageEl.transform("translate3d(0,0,0) scale(1)"),t.$imageWrapEl&&t.$imageWrapEl.transform("translate3d(0,0,0)"),e.scale=1,e.currentScale=1,t.$slideEl=void 0,t.$imageEl=void 0,t.$imageWrapEl=void 0)},toggle:function(e){var t=this.zoom;t.scale&&1!==t.scale?t.out():t.in(e)},in:function(e){var t,i,s,a,r,n,o,l,d,h,p,c,u,v,f,m,g=this.zoom,b=this.params.zoom,w=g.gesture,y=g.image;(w.$slideEl||(this.params.virtual&&this.params.virtual.enabled&&this.virtual?w.$slideEl=this.$wrapperEl.children("."+this.params.slideActiveClass):w.$slideEl=this.slides.eq(this.activeIndex),w.$imageEl=w.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),w.$imageWrapEl=w.$imageEl.parent("."+b.containerClass)),w.$imageEl&&0!==w.$imageEl.length)&&(w.$slideEl.addClass(""+b.zoomedSlideClass),void 0===y.touchesStart.x&&e?(t="touchend"===e.type?e.changedTouches[0].pageX:e.pageX,i="touchend"===e.type?e.changedTouches[0].pageY:e.pageY):(t=y.touchesStart.x,i=y.touchesStart.y),g.scale=w.$imageWrapEl.attr("data-swiper-zoom")||b.maxRatio,g.currentScale=w.$imageWrapEl.attr("data-swiper-zoom")||b.maxRatio,e?(f=w.$slideEl[0].offsetWidth,m=w.$slideEl[0].offsetHeight,s=w.$slideEl.offset().left+f/2-t,a=w.$slideEl.offset().top+m/2-i,o=w.$imageEl[0].offsetWidth,l=w.$imageEl[0].offsetHeight,d=o*g.scale,h=l*g.scale,u=-(p=Math.min(f/2-d/2,0)),v=-(c=Math.min(m/2-h/2,0)),(r=s*g.scale)u&&(r=u),(n=a*g.scale)v&&(n=v)):(r=0,n=0),w.$imageWrapEl.transition(300).transform("translate3d("+r+"px, "+n+"px,0)"),w.$imageEl.transition(300).transform("translate3d(0,0,0) scale("+g.scale+")"))},out:function(){var e=this.zoom,t=this.params.zoom,i=e.gesture;i.$slideEl||(this.params.virtual&&this.params.virtual.enabled&&this.virtual?i.$slideEl=this.$wrapperEl.children("."+this.params.slideActiveClass):i.$slideEl=this.slides.eq(this.activeIndex),i.$imageEl=i.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),i.$imageWrapEl=i.$imageEl.parent("."+t.containerClass)),i.$imageEl&&0!==i.$imageEl.length&&(e.scale=1,e.currentScale=1,i.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),i.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"),i.$slideEl.removeClass(""+t.zoomedSlideClass),i.$slideEl=void 0)},enable:function(){var e=this.zoom;if(!e.enabled){e.enabled=!0;var t=!("touchstart"!==this.touchEvents.start||!o.passiveListener||!this.params.passiveListeners)&&{passive:!0,capture:!1},i=!o.passiveListener||{passive:!1,capture:!0},s="."+this.params.slideClass;o.gestures?(this.$wrapperEl.on("gesturestart",s,e.onGestureStart,t),this.$wrapperEl.on("gesturechange",s,e.onGestureChange,t),this.$wrapperEl.on("gestureend",s,e.onGestureEnd,t)):"touchstart"===this.touchEvents.start&&(this.$wrapperEl.on(this.touchEvents.start,s,e.onGestureStart,t),this.$wrapperEl.on(this.touchEvents.move,s,e.onGestureChange,i),this.$wrapperEl.on(this.touchEvents.end,s,e.onGestureEnd,t),this.touchEvents.cancel&&this.$wrapperEl.on(this.touchEvents.cancel,s,e.onGestureEnd,t)),this.$wrapperEl.on(this.touchEvents.move,"."+this.params.zoom.containerClass,e.onTouchMove,i)}},disable:function(){var e=this.zoom;if(e.enabled){this.zoom.enabled=!1;var t=!("touchstart"!==this.touchEvents.start||!o.passiveListener||!this.params.passiveListeners)&&{passive:!0,capture:!1},i=!o.passiveListener||{passive:!1,capture:!0},s="."+this.params.slideClass;o.gestures?(this.$wrapperEl.off("gesturestart",s,e.onGestureStart,t),this.$wrapperEl.off("gesturechange",s,e.onGestureChange,t),this.$wrapperEl.off("gestureend",s,e.onGestureEnd,t)):"touchstart"===this.touchEvents.start&&(this.$wrapperEl.off(this.touchEvents.start,s,e.onGestureStart,t),this.$wrapperEl.off(this.touchEvents.move,s,e.onGestureChange,i),this.$wrapperEl.off(this.touchEvents.end,s,e.onGestureEnd,t),this.touchEvents.cancel&&this.$wrapperEl.off(this.touchEvents.cancel,s,e.onGestureEnd,t)),this.$wrapperEl.off(this.touchEvents.move,"."+this.params.zoom.containerClass,e.onTouchMove,i)}}},le={loadInSlide:function(e,t){void 0===t&&(t=!0);var i=this,a=i.params.lazy;if(void 0!==e&&0!==i.slides.length){var r=i.virtual&&i.params.virtual.enabled?i.$wrapperEl.children("."+i.params.slideClass+'[data-swiper-slide-index="'+e+'"]'):i.slides.eq(e),n=r.find("."+a.elementClass+":not(."+a.loadedClass+"):not(."+a.loadingClass+")");!r.hasClass(a.elementClass)||r.hasClass(a.loadedClass)||r.hasClass(a.loadingClass)||(n=n.add(r[0])),0!==n.length&&n.each((function(e,n){var o=s(n);o.addClass(a.loadingClass);var l=o.attr("data-background"),d=o.attr("data-src"),h=o.attr("data-srcset"),p=o.attr("data-sizes");i.loadImage(o[0],d||l,h,p,!1,(function(){if(null!=i&&i&&(!i||i.params)&&!i.destroyed){if(l?(o.css("background-image",'url("'+l+'")'),o.removeAttr("data-background")):(h&&(o.attr("srcset",h),o.removeAttr("data-srcset")),p&&(o.attr("sizes",p),o.removeAttr("data-sizes")),d&&(o.attr("src",d),o.removeAttr("data-src"))),o.addClass(a.loadedClass).removeClass(a.loadingClass),r.find("."+a.preloaderClass).remove(),i.params.loop&&t){var e=r.attr("data-swiper-slide-index");if(r.hasClass(i.params.slideDuplicateClass)){var s=i.$wrapperEl.children('[data-swiper-slide-index="'+e+'"]:not(.'+i.params.slideDuplicateClass+")");i.lazy.loadInSlide(s.index(),!1)}else{var n=i.$wrapperEl.children("."+i.params.slideDuplicateClass+'[data-swiper-slide-index="'+e+'"]');i.lazy.loadInSlide(n.index(),!1)}}i.emit("lazyImageReady",r[0],o[0]),i.params.autoHeight&&i.updateAutoHeight()}})),i.emit("lazyImageLoad",r[0],o[0])}))}},load:function(){var e=this,t=e.$wrapperEl,i=e.params,a=e.slides,r=e.activeIndex,n=e.virtual&&i.virtual.enabled,o=i.lazy,l=i.slidesPerView;function d(e){if(n){if(t.children("."+i.slideClass+'[data-swiper-slide-index="'+e+'"]').length)return!0}else if(a[e])return!0;return!1}function h(e){return n?s(e).attr("data-swiper-slide-index"):s(e).index()}if("auto"===l&&(l=0),e.lazy.initialImageLoaded||(e.lazy.initialImageLoaded=!0),e.params.watchSlidesVisibility)t.children("."+i.slideVisibleClass).each((function(t,i){var a=n?s(i).attr("data-swiper-slide-index"):s(i).index();e.lazy.loadInSlide(a)}));else if(l>1)for(var p=r;p1||o.loadPrevNextAmount&&o.loadPrevNextAmount>1){for(var c=o.loadPrevNextAmount,u=l,v=Math.min(r+u+Math.max(c,u),a.length),f=Math.max(r-Math.max(u,c),0),m=r+l;m0&&e.lazy.loadInSlide(h(b));var w=t.children("."+i.slidePrevClass);w.length>0&&e.lazy.loadInSlide(h(w))}}},de={LinearSpline:function(e,t){var i,s,a,r,n,o=function(e,t){for(s=-1,i=e.length;i-s>1;)e[a=i+s>>1]<=t?s=a:i=a;return i};return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(n=o(this.x,e),r=n-1,(e-this.x[r])*(this.y[n]-this.y[r])/(this.x[n]-this.x[r])+this.y[r]):0},this},getInterpolateFunction:function(e){this.controller.spline||(this.controller.spline=this.params.loop?new de.LinearSpline(this.slidesGrid,e.slidesGrid):new de.LinearSpline(this.snapGrid,e.snapGrid))},setTranslate:function(e,t){var i,s,a=this,r=a.controller.control;function n(e){var t=a.rtlTranslate?-a.translate:a.translate;"slide"===a.params.controller.by&&(a.controller.getInterpolateFunction(e),s=-a.controller.spline.interpolate(-t)),s&&"container"!==a.params.controller.by||(i=(e.maxTranslate()-e.minTranslate())/(a.maxTranslate()-a.minTranslate()),s=(t-a.minTranslate())*i+e.minTranslate()),a.params.controller.inverse&&(s=e.maxTranslate()-s),e.updateProgress(s),e.setTranslate(s,a),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(r))for(var o=0;o0&&(this.isBeginning?this.a11y.disableEl(i):this.a11y.enableEl(i)),t&&t.length>0&&(this.isEnd?this.a11y.disableEl(t):this.a11y.enableEl(t))}},updatePagination:function(){var e=this,t=e.params.a11y;e.pagination&&e.params.pagination.clickable&&e.pagination.bullets&&e.pagination.bullets.length&&e.pagination.bullets.each((function(i,a){var r=s(a);e.a11y.makeElFocusable(r),e.a11y.addElRole(r,"button"),e.a11y.addElLabel(r,t.paginationBulletMessage.replace(/\{\{index\}\}/,r.index()+1))}))},init:function(){this.$el.append(this.a11y.liveRegion);var e,t,i=this.params.a11y;this.navigation&&this.navigation.$nextEl&&(e=this.navigation.$nextEl),this.navigation&&this.navigation.$prevEl&&(t=this.navigation.$prevEl),e&&(this.a11y.makeElFocusable(e),this.a11y.addElRole(e,"button"),this.a11y.addElLabel(e,i.nextSlideMessage),e.on("keydown",this.a11y.onEnterKey)),t&&(this.a11y.makeElFocusable(t),this.a11y.addElRole(t,"button"),this.a11y.addElLabel(t,i.prevSlideMessage),t.on("keydown",this.a11y.onEnterKey)),this.pagination&&this.params.pagination.clickable&&this.pagination.bullets&&this.pagination.bullets.length&&this.pagination.$el.on("keydown","."+this.params.pagination.bulletClass,this.a11y.onEnterKey)},destroy:function(){var e,t;this.a11y.liveRegion&&this.a11y.liveRegion.length>0&&this.a11y.liveRegion.remove(),this.navigation&&this.navigation.$nextEl&&(e=this.navigation.$nextEl),this.navigation&&this.navigation.$prevEl&&(t=this.navigation.$prevEl),e&&e.off("keydown",this.a11y.onEnterKey),t&&t.off("keydown",this.a11y.onEnterKey),this.pagination&&this.params.pagination.clickable&&this.pagination.bullets&&this.pagination.bullets.length&&this.pagination.$el.off("keydown","."+this.params.pagination.bulletClass,this.a11y.onEnterKey)}},pe={init:function(){if(this.params.history){if(!t.history||!t.history.pushState)return this.params.history.enabled=!1,void(this.params.hashNavigation.enabled=!0);var e=this.history;e.initialized=!0,e.paths=pe.getPathValues(),(e.paths.key||e.paths.value)&&(e.scrollToSlide(0,e.paths.value,this.params.runCallbacksOnInit),this.params.history.replaceState||t.addEventListener("popstate",this.history.setHistoryPopState))}},destroy:function(){this.params.history.replaceState||t.removeEventListener("popstate",this.history.setHistoryPopState)},setHistoryPopState:function(){this.history.paths=pe.getPathValues(),this.history.scrollToSlide(this.params.speed,this.history.paths.value,!1)},getPathValues:function(){var e=t.location.pathname.slice(1).split("/").filter((function(e){return""!==e})),i=e.length;return{key:e[i-2],value:e[i-1]}},setHistory:function(e,i){if(this.history.initialized&&this.params.history.enabled){var s=this.slides.eq(i),a=pe.slugify(s.attr("data-history"));t.location.pathname.includes(e)||(a=e+"/"+a);var r=t.history.state;r&&r.value===a||(this.params.history.replaceState?t.history.replaceState({value:a},null,a):t.history.pushState({value:a},null,a))}},slugify:function(e){return e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,"")},scrollToSlide:function(e,t,i){if(t)for(var s=0,a=this.slides.length;s'),i.append(e)),e.css({height:r+"px"})):0===(e=t.find(".swiper-cube-shadow")).length&&(e=s('
      '),t.append(e)));for(var u=0;u-1&&(c=90*f+90*b,o&&(c=90*-f-90*b)),v.transform(T),d.slideShadows){var E=h?v.find(".swiper-slide-shadow-left"):v.find(".swiper-slide-shadow-top"),S=h?v.find(".swiper-slide-shadow-right"):v.find(".swiper-slide-shadow-bottom");0===E.length&&(E=s('
      '),v.append(E)),0===S.length&&(S=s('
      '),v.append(S)),E.length&&(E[0].style.opacity=Math.max(-b,0)),S.length&&(S[0].style.opacity=Math.max(b,0))}}if(i.css({"-webkit-transform-origin":"50% 50% -"+l/2+"px","-moz-transform-origin":"50% 50% -"+l/2+"px","-ms-transform-origin":"50% 50% -"+l/2+"px","transform-origin":"50% 50% -"+l/2+"px"}),d.shadow)if(h)e.transform("translate3d(0px, "+(r/2+d.shadowOffset)+"px, "+-r/2+"px) rotateX(90deg) rotateZ(0deg) scale("+d.shadowScale+")");else{var C=Math.abs(c)-90*Math.floor(Math.abs(c)/90),M=1.5-(Math.sin(2*C*Math.PI/360)/2+Math.cos(2*C*Math.PI/360)/2),P=d.shadowScale,z=d.shadowScale/M,k=d.shadowOffset;e.transform("scale3d("+P+", 1, "+z+") translate3d(0px, "+(n/2+k)+"px, "+-n/2/z+"px) rotateX(-90deg)")}var $=j.isSafari||j.isUiWebView?-l/2:0;i.transform("translate3d(0px,0,"+$+"px) rotateX("+(this.isHorizontal()?0:c)+"deg) rotateY("+(this.isHorizontal()?-c:0)+"deg)")},setTransition:function(e){var t=this.$el;this.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),this.params.cubeEffect.shadow&&!this.isHorizontal()&&t.find(".swiper-cube-shadow").transition(e)}},me={setTranslate:function(){for(var e=this.slides,t=this.rtlTranslate,i=0;i'),a.append(h)),0===p.length&&(p=s('
      '),a.append(p)),h.length&&(h[0].style.opacity=Math.max(-r,0)),p.length&&(p[0].style.opacity=Math.max(r,0))}a.transform("translate3d("+l+"px, "+d+"px, 0px) rotateX("+o+"deg) rotateY("+n+"deg)")}},setTransition:function(e){var t=this,i=t.slides,s=t.activeIndex,a=t.$wrapperEl;if(i.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),t.params.virtualTranslate&&0!==e){var r=!1;i.eq(s).transitionEnd((function(){if(!r&&t&&!t.destroyed){r=!0,t.animating=!1;for(var e=["webkitTransitionEnd","transitionend"],i=0;i'),f.append(C)),0===M.length&&(M=s('
      '),f.append(M)),C.length&&(C[0].style.opacity=g>0?g:0),M.length&&(M[0].style.opacity=-g>0?-g:0)}}(o.pointerEvents||o.prefixedPointerEvents)&&(a[0].style.perspectiveOrigin=h+"px 50%")},setTransition:function(e){this.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)}},be={init:function(){var e=this.params.thumbs,t=this.constructor;e.swiper instanceof t?(this.thumbs.swiper=e.swiper,n.extend(this.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),n.extend(this.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1})):n.isObject(e.swiper)&&(this.thumbs.swiper=new t(n.extend({},e.swiper,{watchSlidesVisibility:!0,watchSlidesProgress:!0,slideToClickedSlide:!1})),this.thumbs.swiperCreated=!0),this.thumbs.swiper.$el.addClass(this.params.thumbs.thumbsContainerClass),this.thumbs.swiper.on("tap",this.thumbs.onThumbClick)},onThumbClick:function(){var e=this.thumbs.swiper;if(e){var t=e.clickedIndex,i=e.clickedSlide;if(!(i&&s(i).hasClass(this.params.thumbs.slideThumbActiveClass)||null==t)){var a;if(a=e.params.loop?parseInt(s(e.clickedSlide).attr("data-swiper-slide-index"),10):t,this.params.loop){var r=this.activeIndex;this.slides.eq(r).hasClass(this.params.slideDuplicateClass)&&(this.loopFix(),this._clientLeft=this.$wrapperEl[0].clientLeft,r=this.activeIndex);var n=this.slides.eq(r).prevAll('[data-swiper-slide-index="'+a+'"]').eq(0).index(),o=this.slides.eq(r).nextAll('[data-swiper-slide-index="'+a+'"]').eq(0).index();a=void 0===n?o:void 0===o?n:o-rthis.previousIndex?"next":"prev"}else n=(r=this.realIndex)>this.previousIndex?"next":"prev";a&&(r+="next"===n?s:-1*s),t.visibleSlidesIndexes&&t.visibleSlidesIndexes.indexOf(r)<0&&(t.params.centeredSlides?r=r>o?r-Math.floor(i/2)+1:r+Math.floor(i/2)-1:r>o&&(r=r-i+1),t.slideTo(r,e?0:void 0))}var h=1,p=this.params.thumbs.slideThumbActiveClass;if(this.params.slidesPerView>1&&!this.params.centeredSlides&&(h=this.params.slidesPerView),this.params.thumbs.multipleActiveThumbs||(h=1),h=Math.floor(h),t.slides.removeClass(p),t.params.loop||t.params.virtual&&t.params.virtual.enabled)for(var c=0;c0&&!s(e.target).hasClass(this.params.pagination.bulletClass)&&(!0===this.pagination.$el.hasClass(this.params.pagination.hiddenClass)?this.emit("paginationShow",this):this.emit("paginationHide",this),this.pagination.$el.toggleClass(this.params.pagination.hiddenClass))}}},{name:"scrollbar",params:{scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag"}},create:function(){n.extend(this,{scrollbar:{init:re.init.bind(this),destroy:re.destroy.bind(this),updateSize:re.updateSize.bind(this),setTranslate:re.setTranslate.bind(this),setTransition:re.setTransition.bind(this),enableDraggable:re.enableDraggable.bind(this),disableDraggable:re.disableDraggable.bind(this),setDragPosition:re.setDragPosition.bind(this),getPointerPosition:re.getPointerPosition.bind(this),onDragStart:re.onDragStart.bind(this),onDragMove:re.onDragMove.bind(this),onDragEnd:re.onDragEnd.bind(this),isTouched:!1,timeout:null,dragTimeout:null}})},on:{init:function(){this.scrollbar.init(),this.scrollbar.updateSize(),this.scrollbar.setTranslate()},update:function(){this.scrollbar.updateSize()},resize:function(){this.scrollbar.updateSize()},observerUpdate:function(){this.scrollbar.updateSize()},setTranslate:function(){this.scrollbar.setTranslate()},setTransition:function(e){this.scrollbar.setTransition(e)},destroy:function(){this.scrollbar.destroy()}}},{name:"parallax",params:{parallax:{enabled:!1}},create:function(){n.extend(this,{parallax:{setTransform:ne.setTransform.bind(this),setTranslate:ne.setTranslate.bind(this),setTransition:ne.setTransition.bind(this)}})},on:{beforeInit:function(){this.params.parallax.enabled&&(this.params.watchSlidesProgress=!0,this.originalParams.watchSlidesProgress=!0)},init:function(){this.params.parallax.enabled&&this.parallax.setTranslate()},setTranslate:function(){this.params.parallax.enabled&&this.parallax.setTranslate()},setTransition:function(e){this.params.parallax.enabled&&this.parallax.setTransition(e)}}},{name:"zoom",params:{zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}},create:function(){var e=this,t={enabled:!1,scale:1,currentScale:1,isScaling:!1,gesture:{$slideEl:void 0,slideWidth:void 0,slideHeight:void 0,$imageEl:void 0,$imageWrapEl:void 0,maxRatio:3},image:{isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},velocity:{x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0}};"onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out".split(" ").forEach((function(i){t[i]=oe[i].bind(e)})),n.extend(e,{zoom:t});var i=1;Object.defineProperty(e.zoom,"scale",{get:function(){return i},set:function(t){if(i!==t){var s=e.zoom.gesture.$imageEl?e.zoom.gesture.$imageEl[0]:void 0,a=e.zoom.gesture.$slideEl?e.zoom.gesture.$slideEl[0]:void 0;e.emit("zoomChange",t,s,a)}i=t}})},on:{init:function(){this.params.zoom.enabled&&this.zoom.enable()},destroy:function(){this.zoom.disable()},touchStart:function(e){this.zoom.enabled&&this.zoom.onTouchStart(e)},touchEnd:function(e){this.zoom.enabled&&this.zoom.onTouchEnd(e)},doubleTap:function(e){this.params.zoom.enabled&&this.zoom.enabled&&this.params.zoom.toggle&&this.zoom.toggle(e)},transitionEnd:function(){this.zoom.enabled&&this.params.zoom.enabled&&this.zoom.onTransitionEnd()},slideChange:function(){this.zoom.enabled&&this.params.zoom.enabled&&this.params.cssMode&&this.zoom.onTransitionEnd()}}},{name:"lazy",params:{lazy:{enabled:!1,loadPrevNext:!1,loadPrevNextAmount:1,loadOnTransitionStart:!1,elementClass:"swiper-lazy",loadingClass:"swiper-lazy-loading",loadedClass:"swiper-lazy-loaded",preloaderClass:"swiper-lazy-preloader"}},create:function(){n.extend(this,{lazy:{initialImageLoaded:!1,load:le.load.bind(this),loadInSlide:le.loadInSlide.bind(this)}})},on:{beforeInit:function(){this.params.lazy.enabled&&this.params.preloadImages&&(this.params.preloadImages=!1)},init:function(){this.params.lazy.enabled&&!this.params.loop&&0===this.params.initialSlide&&this.lazy.load()},scroll:function(){this.params.freeMode&&!this.params.freeModeSticky&&this.lazy.load()},resize:function(){this.params.lazy.enabled&&this.lazy.load()},scrollbarDragMove:function(){this.params.lazy.enabled&&this.lazy.load()},transitionStart:function(){this.params.lazy.enabled&&(this.params.lazy.loadOnTransitionStart||!this.params.lazy.loadOnTransitionStart&&!this.lazy.initialImageLoaded)&&this.lazy.load()},transitionEnd:function(){this.params.lazy.enabled&&!this.params.lazy.loadOnTransitionStart&&this.lazy.load()},slideChange:function(){this.params.lazy.enabled&&this.params.cssMode&&this.lazy.load()}}},{name:"controller",params:{controller:{control:void 0,inverse:!1,by:"slide"}},create:function(){n.extend(this,{controller:{control:this.params.controller.control,getInterpolateFunction:de.getInterpolateFunction.bind(this),setTranslate:de.setTranslate.bind(this),setTransition:de.setTransition.bind(this)}})},on:{update:function(){this.controller.control&&this.controller.spline&&(this.controller.spline=void 0,delete this.controller.spline)},resize:function(){this.controller.control&&this.controller.spline&&(this.controller.spline=void 0,delete this.controller.spline)},observerUpdate:function(){this.controller.control&&this.controller.spline&&(this.controller.spline=void 0,delete this.controller.spline)},setTranslate:function(e,t){this.controller.control&&this.controller.setTranslate(e,t)},setTransition:function(e,t){this.controller.control&&this.controller.setTransition(e,t)}}},{name:"a11y",params:{a11y:{enabled:!0,notificationClass:"swiper-notification",prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}"}},create:function(){var e=this;n.extend(e,{a11y:{liveRegion:s('')}}),Object.keys(he).forEach((function(t){e.a11y[t]=he[t].bind(e)}))},on:{init:function(){this.params.a11y.enabled&&(this.a11y.init(),this.a11y.updateNavigation())},toEdge:function(){this.params.a11y.enabled&&this.a11y.updateNavigation()},fromEdge:function(){this.params.a11y.enabled&&this.a11y.updateNavigation()},paginationUpdate:function(){this.params.a11y.enabled&&this.a11y.updatePagination()},destroy:function(){this.params.a11y.enabled&&this.a11y.destroy()}}},{name:"history",params:{history:{enabled:!1,replaceState:!1,key:"slides"}},create:function(){n.extend(this,{history:{init:pe.init.bind(this),setHistory:pe.setHistory.bind(this),setHistoryPopState:pe.setHistoryPopState.bind(this),scrollToSlide:pe.scrollToSlide.bind(this),destroy:pe.destroy.bind(this)}})},on:{init:function(){this.params.history.enabled&&this.history.init()},destroy:function(){this.params.history.enabled&&this.history.destroy()},transitionEnd:function(){this.history.initialized&&this.history.setHistory(this.params.history.key,this.activeIndex)},slideChange:function(){this.history.initialized&&this.params.cssMode&&this.history.setHistory(this.params.history.key,this.activeIndex)}}},{name:"hash-navigation",params:{hashNavigation:{enabled:!1,replaceState:!1,watchState:!1}},create:function(){n.extend(this,{hashNavigation:{initialized:!1,init:ce.init.bind(this),destroy:ce.destroy.bind(this),setHash:ce.setHash.bind(this),onHashCange:ce.onHashCange.bind(this)}})},on:{init:function(){this.params.hashNavigation.enabled&&this.hashNavigation.init()},destroy:function(){this.params.hashNavigation.enabled&&this.hashNavigation.destroy()},transitionEnd:function(){this.hashNavigation.initialized&&this.hashNavigation.setHash()},slideChange:function(){this.hashNavigation.initialized&&this.params.cssMode&&this.hashNavigation.setHash()}}},{name:"autoplay",params:{autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1}},create:function(){var e=this;n.extend(e,{autoplay:{running:!1,paused:!1,run:ue.run.bind(e),start:ue.start.bind(e),stop:ue.stop.bind(e),pause:ue.pause.bind(e),onVisibilityChange:function(){"hidden"===document.visibilityState&&e.autoplay.running&&e.autoplay.pause(),"visible"===document.visibilityState&&e.autoplay.paused&&(e.autoplay.run(),e.autoplay.paused=!1)},onTransitionEnd:function(t){e&&!e.destroyed&&e.$wrapperEl&&t.target===this&&(e.$wrapperEl[0].removeEventListener("transitionend",e.autoplay.onTransitionEnd),e.$wrapperEl[0].removeEventListener("webkitTransitionEnd",e.autoplay.onTransitionEnd),e.autoplay.paused=!1,e.autoplay.running?e.autoplay.run():e.autoplay.stop())}}})},on:{init:function(){this.params.autoplay.enabled&&(this.autoplay.start(),document.addEventListener("visibilitychange",this.autoplay.onVisibilityChange))},beforeTransitionStart:function(e,t){this.autoplay.running&&(t||!this.params.autoplay.disableOnInteraction?this.autoplay.pause(e):this.autoplay.stop())},sliderFirstMove:function(){this.autoplay.running&&(this.params.autoplay.disableOnInteraction?this.autoplay.stop():this.autoplay.pause())},touchEnd:function(){this.params.cssMode&&this.autoplay.paused&&!this.params.autoplay.disableOnInteraction&&this.autoplay.run()},destroy:function(){this.autoplay.running&&this.autoplay.stop(),document.removeEventListener("visibilitychange",this.autoplay.onVisibilityChange)}}},{name:"effect-fade",params:{fadeEffect:{crossFade:!1}},create:function(){n.extend(this,{fadeEffect:{setTranslate:ve.setTranslate.bind(this),setTransition:ve.setTransition.bind(this)}})},on:{beforeInit:function(){if("fade"===this.params.effect){this.classNames.push(this.params.containerModifierClass+"fade");var e={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!0};n.extend(this.params,e),n.extend(this.originalParams,e)}},setTranslate:function(){"fade"===this.params.effect&&this.fadeEffect.setTranslate()},setTransition:function(e){"fade"===this.params.effect&&this.fadeEffect.setTransition(e)}}},{name:"effect-cube",params:{cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}},create:function(){n.extend(this,{cubeEffect:{setTranslate:fe.setTranslate.bind(this),setTransition:fe.setTransition.bind(this)}})},on:{beforeInit:function(){if("cube"===this.params.effect){this.classNames.push(this.params.containerModifierClass+"cube"),this.classNames.push(this.params.containerModifierClass+"3d");var e={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0};n.extend(this.params,e),n.extend(this.originalParams,e)}},setTranslate:function(){"cube"===this.params.effect&&this.cubeEffect.setTranslate()},setTransition:function(e){"cube"===this.params.effect&&this.cubeEffect.setTransition(e)}}},{name:"effect-flip",params:{flipEffect:{slideShadows:!0,limitRotation:!0}},create:function(){n.extend(this,{flipEffect:{setTranslate:me.setTranslate.bind(this),setTransition:me.setTransition.bind(this)}})},on:{beforeInit:function(){if("flip"===this.params.effect){this.classNames.push(this.params.containerModifierClass+"flip"),this.classNames.push(this.params.containerModifierClass+"3d");var e={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!0};n.extend(this.params,e),n.extend(this.originalParams,e)}},setTranslate:function(){"flip"===this.params.effect&&this.flipEffect.setTranslate()},setTransition:function(e){"flip"===this.params.effect&&this.flipEffect.setTransition(e)}}},{name:"effect-coverflow",params:{coverflowEffect:{rotate:50,stretch:0,depth:100,modifier:1,slideShadows:!0}},create:function(){n.extend(this,{coverflowEffect:{setTranslate:ge.setTranslate.bind(this),setTransition:ge.setTransition.bind(this)}})},on:{beforeInit:function(){"coverflow"===this.params.effect&&(this.classNames.push(this.params.containerModifierClass+"coverflow"),this.classNames.push(this.params.containerModifierClass+"3d"),this.params.watchSlidesProgress=!0,this.originalParams.watchSlidesProgress=!0)},setTranslate:function(){"coverflow"===this.params.effect&&this.coverflowEffect.setTranslate()},setTransition:function(e){"coverflow"===this.params.effect&&this.coverflowEffect.setTransition(e)}}},{name:"thumbs",params:{thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-container-thumbs"}},create:function(){n.extend(this,{thumbs:{swiper:null,init:be.init.bind(this),update:be.update.bind(this),onThumbClick:be.onThumbClick.bind(this)}})},on:{beforeInit:function(){var e=this.params.thumbs;e&&e.swiper&&(this.thumbs.init(),this.thumbs.update(!0))},slideChange:function(){this.thumbs.swiper&&this.thumbs.update()},update:function(){this.thumbs.swiper&&this.thumbs.update()},resize:function(){this.thumbs.swiper&&this.thumbs.update()},observerUpdate:function(){this.thumbs.swiper&&this.thumbs.update()},setTransition:function(e){var t=this.thumbs.swiper;t&&t.setTransition(e)},beforeDestroy:function(){var e=this.thumbs.swiper;e&&this.thumbs.swiperCreated&&e&&e.destroy()}}}];return void 0===W.use&&(W.use=W.Class.use,W.installModule=W.Class.installModule),W.use(we),W})); +//# sourceMappingURL=swiper.min.js.map \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/package/js/swiper.min.js.map b/static/libs/swiper-5.3.8/package/js/swiper.min.js.map new file mode 100644 index 0000000..a568d87 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/js/swiper.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["0"],"names":["global","factory","exports","module","define","amd","self","Swiper","this","doc","document","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","location","hash","win","window","navigator","userAgent","history","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","Dom7","arr","i","length","$","selector","context","els","tempParent","html","trim","indexOf","toCreate","innerHTML","push","match","split","nodeType","unique","uniqueArray","fn","prototype","Class","Methods","addClass","className","classes","j","classList","add","removeClass","remove","hasClass","contains","toggleClass","toggle","attr","attrs","value","arguments$1","arguments","getAttribute","attrName","removeAttr","removeAttribute","data","key","el","dom7ElementDataStorage","dataKey","transform","elStyle","webkitTransform","transition","duration","webkitTransitionDuration","transitionDuration","on","assign","args","len","eventType","targetSelector","listener","capture","handleLiveEvent","e","target","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","event$1","dom7LiveListeners","proxyListener","event","dom7Listeners","off","handlers","handler","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","filter","dataIndex","dispatchEvent","transitionEnd","callback","dom","fireCallBack","call","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","index","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","matchedItems","removeChild","toAdd","Object","keys","forEach","methodName","Utils","deleteProps","obj","object","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","parseUrlQuery","url","params","param","query","urlToParse","href","paramsPart","decodeURIComponent","isObject","o","constructor","extend","len$1","to","nextSource","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","enumerable","Support","touch","Modernizr","maxTouchPoints","DocumentTouch","pointerEvents","PointerEvent","observer","passiveListener","supportsPassive","opts","defineProperty","get","gestures","SwiperClass","eventsListeners","eventName","staticAccessors","components","configurable","priority","method","once","onceHandler","f7proxy","eventHandler","emit","Array","isArray","slice","eventsArray","useModulesParams","instanceParams","instance","modules","moduleName","useModules","modulesParams","moduleParams","modulePropName","moduleProp","bind","moduleEventName","create","set","use","installModule","name","proto","static","install","m","concat","defineProperties","update","updateSize","width","height","$el","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","size","updateSlides","$wrapperEl","swiperSize","rtl","rtlTranslate","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","Math","floor","ceil","slidesPerView","slidesPerColumnFill","max","newSlidesGrid","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","min","-webkit-box-ordinal-group","-moz-box-ordinal-group","-ms-flex-order","-webkit-order","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","boxSizing$1","swiperSlideSize","centeredSlides","abs","slidesPerGroupSkip","effect","setWrapperSize","i$1","slidesGridItem","i$2","slidesGridItem$1","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesSize$1","allSlidesOffset","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","visibleSlides","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","progress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeSlide","realIndex","slideActiveClass","loop","slideDuplicateClass","slideDuplicateActiveClass","nextSlide","slideNextClass","prevSlide","slidePrevClass","slideDuplicateNextClass","slideDuplicatePrevClass","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","swiper","animating","preventInteractionOnTransition","newTranslate","isH","scrollTo","behavior","onTranslateToWrapperTransitionEnd","destroyed","transition$1","transitionStart","direction","dir","slideTo","initialSlide","allowSlideNext","allowSlidePrev","t","scrollWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopFix","_clientLeft","slidePrev","normalize","val","prevIndex","normalizedTranslate","normalizedSnapGrid","prevSnap","slideReset","slideToClosest","threshold","currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","loopDestroy","grabCursor","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","platform","ua","device","screenWidth","screenHeight","android","ipad","ipod","iphone","ie","edge","firefox","windows","electron","macos","manipulation","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","Device","ios","androidChrome","desktop","cordova","phonegap","toLowerCase","os","osVersion","webView","standalone","matchMedia","webview","pixelRatio","devicePixelRatio","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","noSwiping","noSwipingSelector","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","preventDefault","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","pow","touchAngle","atan2","PI","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","position","time","onTouchEnd","currentPos","touchEndTime","timeDiff","lastClickTime","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","freeModeSticky","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","increment$1","ratio","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","defaults","init","updateOnWindowResize","uniqueNavElements","preloadImages","updateOnImagesReady","noSwipingClass","passiveListeners","containerModifierClass","slideClass","slideBlankClass","wrapperClass","prototypes","attachEvents","touchEvents","start","move","end","passive","cancel","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","directionChanged","needsReLoop","changeDirection","points","point","minRatio","substr","innerHeight","sort","b","ref","innerWidth","wasLocked","lastSlidePosition","addClasses","classNames","suffixes","suffix","removeClasses","images","loadImage","imageEl","src","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","prototypeGroup","protoMethod","moduleParamName","swiperParams","passedParams","swipers","containerEl","newParams","shadowRoot","options","touchEventsTouch","touchEventsDesktop","clickTimeout","__proto__","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","slideEl","destroy","deleteInstance","cleanStyles","extendDefaults","newDefaults","Device$1","Support$1","support","Browser","isEdge","isSafari","isUiWebView","test","Browser$1","browser","Resize","resize","resizeHandler","orientationChangeHandler","Observer","func","MutationObserver","WebkitMutationObserver","attach","ObserverFunc","mutations","observerUpdate","requestAnimationFrame","observe","attributes","childList","characterData","observers","observeParents","containerParents","observeSlideChildren","disconnect","Observer$1","Virtual","force","ref$1","addSlidesBefore","addSlidesAfter","ref$2","previousFrom","from","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","prependIndexes","appendIndexes","cache","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","Virtual$1","beforeInit","overwriteParams","Keyboard","handle","kc","keyCode","charCode","shiftKey","altKey","ctrlKey","metaKey","keyboard","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","enable","disable","Keyboard$1","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","isSupported","element","implementation","hasFeature","isEventSupported","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","eventsTarged","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","newEvent$1","sign","ignoreWheelEvents","sensitivity","timeout","recentWheelEvents$1","shift","prevEvent$1","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","newEvent","raw","prevEvent","animateSlider","releaseScroll","getTime","Navigation","$nextEl","$prevEl","disabledClass","lockClass","onPrevClick","onNextClick","Pagination","pagination","current","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bullet","$bullet","bulletIndex","bulletActiveClass","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","formatFractionCurrent","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","renderCustom","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","renderFraction","currentClass","totalClass","renderProgressbar","progressbarFillClass","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","dragStartPos","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragEl","draggable","Parallax","setTransform","p","currentOpacity","currentScale","parallax","parallaxEl","$parallaxEl","parallaxDuration","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageEl","$imageWrapEl","maxRatio","isScaling","onGestureChange","scaleMove","onGestureEnd","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","out","in","touchX","touchY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","activeListenerWithCapture","slideSelector","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","elIndex","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","Controller","LinearSpline","guess","i1","i3","binarySearch","array","interpolate","getInterpolateFunction","c","controller","spline","setTranslate$1","controlledTranslate","controlled","control","setControlledTranslate","by","inverse","setControlledTransition","a11y","makeElFocusable","addElRole","role","addElLabel","label","disableEl","enableEl","onEnterKey","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","click","message","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","History","pushState","hashNavigation","paths","getPathValues","scrollToSlide","replaceState","setHistoryPopState","pathArray","pathname","part","setHistory","slugify","includes","currentState","state","HashNavigation","onHashCange","newHash","setHash","watchState","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","pause","waitForTransition","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","$cubeShadowEl","swiperWidth","swiperHeight","cubeEffect","wrapperRotate","shadow","slideAngle","round","tz","slideShadows","shadowBefore","shadowAfter","-webkit-transform-origin","-moz-transform-origin","-ms-transform-origin","transform-origin","shadowOffset","shadowAngle","sin","cos","scale1","shadowScale","scale2","zFactor","Flip","flipEffect","limitRotation","rotateY","rotateX","zIndex","Coverflow","coverflowEffect","center","rotate","depth","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","prefixedPointerEvents","perspectiveOrigin","Thumbs","thumbsParams","thumbs","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","initial","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","hideOnClick","toEdge","fromEdge","isHidden","bulletElement","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","dragClass","containerClass","zoomedSlideClass","touchStart","touchEnd","doubleTap","slideChange","loadOnTransitionStart","preloaderClass","scroll","scrollbarDragMove","notificationClass","paginationUpdate","disableOnInteraction","onVisibilityChange","visibilityState","beforeTransitionStart","sliderFirstMove","beforeDestroy"],"mappings":"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","file":"swiper.min.js"} \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/package/less/mixins.less b/static/libs/swiper-5.3.8/package/less/mixins.less new file mode 100644 index 0000000..f8fedd5 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/less/mixins.less @@ -0,0 +1,24 @@ +@plugin './plugin.js'; +.navigation-color-loop(@ruleset) when (length( @colors ) >= 1) { + @length: length( @colors ) ; + .looper( 1 ) ; + .looper( @index ) when ( @index <= @length ) and (length(extract( @colors, @index )) = 2) { + @navPair: extract( @colors, @index ); + @navColorName: extract( @navPair, 1 ) ; + @navColorValue: extract( @navPair, 2 ) ; + @ruleset(); + .looper( @index + 1 ) ; + } +} + +.pagination-color-loop(@ruleset) when (length( @colors ) >= 1) { + @length: length( @colors ) ; + .looper( 1 ) ; + .looper( @index ) when ( @index <= @length ) and (length(extract( @colors, @index )) = 2) { + @paginationPair: extract( @colors, @index ); + @paginationColorName: extract( @paginationPair, 1 ) ; + @paginationColorValue: extract( @paginationPair, 2 ) ; + @ruleset(); + .looper( @index + 1 ) ; + } +} diff --git a/static/libs/swiper-5.3.8/package/package.json b/static/libs/swiper-5.3.8/package/package.json new file mode 100644 index 0000000..ec58246 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/package.json @@ -0,0 +1,56 @@ +{ + "name": "swiper", + "version": "5.3.8", + "description": "Most modern mobile touch slider and framework with hardware accelerated transitions", + "main": "js/swiper.js", + "jsnext:main": "js/swiper.esm.bundle.js", + "module": "js/swiper.esm.bundle.js", + "scripts": { + "postinstall": "echo \"\u001b[35m\u001b[1mLove Swiper? Support Vladimir's work by donating or pledging on patreon:\u001b[22m\u001b[39m\n > \u001b[32mhttps://patreon.com/vladimirkharlampidi\u001b[0m\n\"" + }, + "repository": { + "type": "git", + "url": "https://github.com/nolimits4web/Swiper.git" + }, + "keywords": [ + "swiper", + "swipe", + "slider", + "touch", + "ios", + "mobile", + "cordova", + "phonegap", + "app", + "framework", + "framework7", + "carousel", + "gallery", + "plugin" + ], + "author": "Vladimir Kharlampidi", + "license": "MIT", + "bugs": { + "url": "https://github.com/nolimits4web/Swiper/issues" + }, + "homepage": "https://swiperjs.com", + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/vladimirkharlampidi" + }, + "engines": { + "node": ">= 4.7.0" + }, + "browserslist": [ + "Android >= 7", + "IOS >= 11", + "Safari >= 11", + "Chrome >= 49", + "Firefox >= 31", + "Samsung >= 5" + ], + "dependencies": { + "dom7": "^2.1.3", + "ssr-window": "^1.0.1" + } +} diff --git a/static/libs/swiper-5.3.8/package/scss/functions.scss b/static/libs/swiper-5.3.8/package/scss/functions.scss new file mode 100644 index 0000000..14bae70 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/scss/functions.scss @@ -0,0 +1,60 @@ +/// Urlencode the SVG string +/// @param {String} $svg - SVG image to encode +/// @return {String} - Encoded SVG data uri +@function swiper-svg-uri($svg) { + $encoded: ''; + $chunkSize: 2048; + $index: 0; + $loops: ceil(str-length($svg) / $chunkSize); + + $map: ( + "%": "%25", + "<": "%3C", + ">": "%3E", + " ": "%20", + "!": "%21", + "*": "%2A", + '"': "%22", + ";": "%3B", + ":": "%3A", + "@": "%40", + "&": "%26", + "=": "%3D", + "+": "%2B", + "$": "%24", + ",": "%2C", + "/": "%2F", + "?": "%3F", + "#": "%23", + "[": "%5B", + "]": "%5D" + ); + + @for $i from 1 through $loops { + $chunk: str-slice($svg, $index, $index + $chunkSize - 1); + @each $search, $replace in $map { + $chunk: swiper-str-replace($chunk, $search, $replace); + } + $encoded: #{$encoded}#{$chunk}; + $index: $index + $chunkSize; + } + + @return url("data:image/svg+xml;charset=utf-8,#{$encoded}"); +} + +/// Replace `$search` with `$replace` in `$string` +/// @author Hugo Giraudel +/// @link http://sassmeister.com/gist/1b4f2da5527830088e4d +/// @param {String} $string - Initial string +/// @param {String} $search - Substring to replace +/// @param {String} $replace ('') - New value +/// @return {String} - Updated string +@function swiper-str-replace($string, $search, $replace: '') { + $index: str-index($string, $search); + + @if $index { + @return str-slice($string, 1, $index - 1) + $replace + swiper-str-replace(str-slice($string, $index + str-length($search)), $search, $replace); + } + + @return $string; +} diff --git a/static/libs/swiper-5.3.8/package/src/components/a11y/a11y.js b/static/libs/swiper-5.3.8/package/src/components/a11y/a11y.js new file mode 100644 index 0000000..7e3a2bd --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/a11y/a11y.js @@ -0,0 +1,204 @@ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +const a11y = { + makeElFocusable($el) { + $el.attr('tabIndex', '0'); + return $el; + }, + addElRole($el, role) { + $el.attr('role', role); + return $el; + }, + addElLabel($el, label) { + $el.attr('aria-label', label); + return $el; + }, + disableEl($el) { + $el.attr('aria-disabled', true); + return $el; + }, + enableEl($el) { + $el.attr('aria-disabled', false); + return $el; + }, + onEnterKey(e) { + const swiper = this; + const params = swiper.params.a11y; + if (e.keyCode !== 13) return; + const $targetEl = $(e.target); + if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + swiper.a11y.notify(params.lastSlideMessage); + } else { + swiper.a11y.notify(params.nextSlideMessage); + } + } + if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + swiper.a11y.notify(params.firstSlideMessage); + } else { + swiper.a11y.notify(params.prevSlideMessage); + } + } + if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) { + $targetEl[0].click(); + } + }, + notify(message) { + const swiper = this; + const notification = swiper.a11y.liveRegion; + if (notification.length === 0) return; + notification.html(''); + notification.html(message); + }, + updateNavigation() { + const swiper = this; + + if (swiper.params.loop || !swiper.navigation) return; + const { $nextEl, $prevEl } = swiper.navigation; + + if ($prevEl && $prevEl.length > 0) { + if (swiper.isBeginning) { + swiper.a11y.disableEl($prevEl); + } else { + swiper.a11y.enableEl($prevEl); + } + } + if ($nextEl && $nextEl.length > 0) { + if (swiper.isEnd) { + swiper.a11y.disableEl($nextEl); + } else { + swiper.a11y.enableEl($nextEl); + } + } + }, + updatePagination() { + const swiper = this; + const params = swiper.params.a11y; + if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { + swiper.pagination.bullets.each((bulletIndex, bulletEl) => { + const $bulletEl = $(bulletEl); + swiper.a11y.makeElFocusable($bulletEl); + swiper.a11y.addElRole($bulletEl, 'button'); + swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1)); + }); + } + }, + init() { + const swiper = this; + + swiper.$el.append(swiper.a11y.liveRegion); + + // Navigation + const params = swiper.params.a11y; + let $nextEl; + let $prevEl; + if (swiper.navigation && swiper.navigation.$nextEl) { + $nextEl = swiper.navigation.$nextEl; + } + if (swiper.navigation && swiper.navigation.$prevEl) { + $prevEl = swiper.navigation.$prevEl; + } + if ($nextEl) { + swiper.a11y.makeElFocusable($nextEl); + swiper.a11y.addElRole($nextEl, 'button'); + swiper.a11y.addElLabel($nextEl, params.nextSlideMessage); + $nextEl.on('keydown', swiper.a11y.onEnterKey); + } + if ($prevEl) { + swiper.a11y.makeElFocusable($prevEl); + swiper.a11y.addElRole($prevEl, 'button'); + swiper.a11y.addElLabel($prevEl, params.prevSlideMessage); + $prevEl.on('keydown', swiper.a11y.onEnterKey); + } + + // Pagination + if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { + swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey); + } + }, + destroy() { + const swiper = this; + if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove(); + + let $nextEl; + let $prevEl; + if (swiper.navigation && swiper.navigation.$nextEl) { + $nextEl = swiper.navigation.$nextEl; + } + if (swiper.navigation && swiper.navigation.$prevEl) { + $prevEl = swiper.navigation.$prevEl; + } + if ($nextEl) { + $nextEl.off('keydown', swiper.a11y.onEnterKey); + } + if ($prevEl) { + $prevEl.off('keydown', swiper.a11y.onEnterKey); + } + + // Pagination + if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { + swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey); + } + }, +}; +export default { + name: 'a11y', + params: { + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + a11y: { + liveRegion: $(``), + }, + }); + Object.keys(a11y).forEach((methodName) => { + swiper.a11y[methodName] = a11y[methodName].bind(swiper); + }); + }, + on: { + init() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.init(); + swiper.a11y.updateNavigation(); + }, + toEdge() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.updateNavigation(); + }, + fromEdge() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.updateNavigation(); + }, + paginationUpdate() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.updatePagination(); + }, + destroy() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.destroy(); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/a11y/a11y.less b/static/libs/swiper-5.3.8/package/src/components/a11y/a11y.less new file mode 100644 index 0000000..0f55f89 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/a11y/a11y.less @@ -0,0 +1,9 @@ +/* a11y */ +.swiper-container .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/static/libs/swiper-5.3.8/package/src/components/a11y/a11y.scss b/static/libs/swiper-5.3.8/package/src/components/a11y/a11y.scss new file mode 100644 index 0000000..0f55f89 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/a11y/a11y.scss @@ -0,0 +1,9 @@ +/* a11y */ +.swiper-container .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/static/libs/swiper-5.3.8/package/src/components/autoplay/autoplay.js b/static/libs/swiper-5.3.8/package/src/components/autoplay/autoplay.js new file mode 100644 index 0000000..b9d52c8 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/autoplay/autoplay.js @@ -0,0 +1,170 @@ +/* eslint no-underscore-dangle: "off" */ +import Utils from '../../utils/utils'; + +const Autoplay = { + run() { + const swiper = this; + const $activeSlideEl = swiper.slides.eq(swiper.activeIndex); + let delay = swiper.params.autoplay.delay; + if ($activeSlideEl.attr('data-swiper-autoplay')) { + delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; + } + clearTimeout(swiper.autoplay.timeout); + swiper.autoplay.timeout = Utils.nextTick(() => { + if (swiper.params.autoplay.reverseDirection) { + if (swiper.params.loop) { + swiper.loopFix(); + swiper.slidePrev(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.isBeginning) { + swiper.slidePrev(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else { + swiper.autoplay.stop(); + } + } else if (swiper.params.loop) { + swiper.loopFix(); + swiper.slideNext(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.isEnd) { + swiper.slideNext(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else { + swiper.autoplay.stop(); + } + if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run(); + }, delay); + }, + start() { + const swiper = this; + if (typeof swiper.autoplay.timeout !== 'undefined') return false; + if (swiper.autoplay.running) return false; + swiper.autoplay.running = true; + swiper.emit('autoplayStart'); + swiper.autoplay.run(); + return true; + }, + stop() { + const swiper = this; + if (!swiper.autoplay.running) return false; + if (typeof swiper.autoplay.timeout === 'undefined') return false; + + if (swiper.autoplay.timeout) { + clearTimeout(swiper.autoplay.timeout); + swiper.autoplay.timeout = undefined; + } + swiper.autoplay.running = false; + swiper.emit('autoplayStop'); + return true; + }, + pause(speed) { + const swiper = this; + if (!swiper.autoplay.running) return; + if (swiper.autoplay.paused) return; + if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout); + swiper.autoplay.paused = true; + if (speed === 0 || !swiper.params.autoplay.waitForTransition) { + swiper.autoplay.paused = false; + swiper.autoplay.run(); + } else { + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); + } + }, +}; + +export default { + name: 'autoplay', + params: { + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: true, + stopOnLastSlide: false, + reverseDirection: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + autoplay: { + running: false, + paused: false, + run: Autoplay.run.bind(swiper), + start: Autoplay.start.bind(swiper), + stop: Autoplay.stop.bind(swiper), + pause: Autoplay.pause.bind(swiper), + onVisibilityChange() { + if (document.visibilityState === 'hidden' && swiper.autoplay.running) { + swiper.autoplay.pause(); + } + if (document.visibilityState === 'visible' && swiper.autoplay.paused) { + swiper.autoplay.run(); + swiper.autoplay.paused = false; + } + }, + onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); + swiper.autoplay.paused = false; + if (!swiper.autoplay.running) { + swiper.autoplay.stop(); + } else { + swiper.autoplay.run(); + } + }, + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.autoplay.enabled) { + swiper.autoplay.start(); + document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange); + } + }, + beforeTransitionStart(speed, internal) { + const swiper = this; + if (swiper.autoplay.running) { + if (internal || !swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.pause(speed); + } else { + swiper.autoplay.stop(); + } + } + }, + sliderFirstMove() { + const swiper = this; + if (swiper.autoplay.running) { + if (swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.stop(); + } else { + swiper.autoplay.pause(); + } + } + }, + touchEnd() { + const swiper = this; + if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.run(); + } + }, + destroy() { + const swiper = this; + if (swiper.autoplay.running) { + swiper.autoplay.stop(); + } + document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/controller/controller.js b/static/libs/swiper-5.3.8/package/src/components/controller/controller.js new file mode 100644 index 0000000..0c9addf --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/controller/controller.js @@ -0,0 +1,186 @@ +/* eslint no-bitwise: ["error", { "allow": [">>"] }] */ +import Swiper from '../core/core-class'; +import Utils from '../../utils/utils'; + +const Controller = { + LinearSpline: function LinearSpline(x, y) { + const binarySearch = (function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }()); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1]; + }; + return this; + }, + // xxx: for now i will just save one spline function to to + getInterpolateFunction(c) { + const swiper = this; + if (!swiper.controller.spline) { + swiper.controller.spline = swiper.params.loop + ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) + : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid); + } + }, + setTranslate(setTranslate, byController) { + const swiper = this; + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + function setControlledTranslate(c) { + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + swiper.controller.getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate(); + } + + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + }, + setTransition(duration, byController) { + const swiper = this; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + Utils.nextTick(() => { + c.updateAutoHeight(); + }); + } + c.$wrapperEl.transitionEnd(() => { + if (!controlled) return; + if (c.params.loop && swiper.params.controller.by === 'slide') { + c.loopFix(); + } + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + }, +}; +export default { + name: 'controller', + params: { + controller: { + control: undefined, + inverse: false, + by: 'slide', // or 'container' + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + controller: { + control: swiper.params.controller.control, + getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper), + setTranslate: Controller.setTranslate.bind(swiper), + setTransition: Controller.setTransition.bind(swiper), + }, + }); + }, + on: { + update() { + const swiper = this; + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + }, + resize() { + const swiper = this; + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + }, + observerUpdate() { + const swiper = this; + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + }, + setTranslate(translate, byController) { + const swiper = this; + if (!swiper.controller.control) return; + swiper.controller.setTranslate(translate, byController); + }, + setTransition(duration, byController) { + const swiper = this; + if (!swiper.controller.control) return; + swiper.controller.setTransition(duration, byController); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/controller/controller.less b/static/libs/swiper-5.3.8/package/src/components/controller/controller.less new file mode 100644 index 0000000..e69de29 diff --git a/static/libs/swiper-5.3.8/package/src/components/controller/controller.scss b/static/libs/swiper-5.3.8/package/src/components/controller/controller.scss new file mode 100644 index 0000000..e69de29 diff --git a/static/libs/swiper-5.3.8/package/src/components/core/breakpoints/getBreakpoint.js b/static/libs/swiper-5.3.8/package/src/components/core/breakpoints/getBreakpoint.js new file mode 100644 index 0000000..768f985 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/breakpoints/getBreakpoint.js @@ -0,0 +1,25 @@ +import { window } from 'ssr-window'; + +export default function (breakpoints) { + // Get breakpoint for window width + if (!breakpoints) return undefined; + let breakpoint = false; + + const points = Object.keys(breakpoints).map((point) => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = window.innerHeight * minRatio; + return { value, point }; + } + return { value: point, point }; + }); + + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { point, value } = points[i]; + if (value <= window.innerWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/breakpoints/index.js b/static/libs/swiper-5.3.8/package/src/components/core/breakpoints/index.js new file mode 100644 index 0000000..08b66bb --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/breakpoints/index.js @@ -0,0 +1,4 @@ +import setBreakpoint from './setBreakpoint'; +import getBreakpoint from './getBreakpoint'; + +export default { setBreakpoint, getBreakpoint }; diff --git a/static/libs/swiper-5.3.8/package/src/components/core/breakpoints/setBreakpoint.js b/static/libs/swiper-5.3.8/package/src/components/core/breakpoints/setBreakpoint.js new file mode 100644 index 0000000..b1533a4 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/breakpoints/setBreakpoint.js @@ -0,0 +1,68 @@ +import Utils from '../../../utils/utils'; + +export default function () { + const swiper = this; + const { + activeIndex, initialized, loopedSlides = 0, params, $el, + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints); + + if (breakpoint && swiper.currentBreakpoint !== breakpoint) { + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + if (breakpointOnlyParams) { + ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => { + const paramValue = breakpointOnlyParams[param]; + if (typeof paramValue === 'undefined') return; + if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) { + breakpointOnlyParams[param] = 'auto'; + } else if (param === 'slidesPerView') { + breakpointOnlyParams[param] = parseFloat(paramValue); + } else { + breakpointOnlyParams[param] = parseInt(paramValue, 10); + } + }); + } + + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = params.slidesPerColumn > 1; + const isMultiRow = breakpointParams.slidesPerColumn > 1; + if (wasMultiRow && !isMultiRow) { + $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`); + } else if (!wasMultiRow && isMultiRow) { + $el.addClass(`${params.containerModifierClass}multirow`); + if (breakpointParams.slidesPerColumnFill === 'column') { + $el.addClass(`${params.containerModifierClass}multirow-column`); + } + } + + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + + if (directionChanged && initialized) { + swiper.changeDirection(); + } + + Utils.extend(swiper.params, breakpointParams); + + Utils.extend(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + }); + + swiper.currentBreakpoint = breakpoint; + + if (needsReLoop && initialized) { + swiper.loopDestroy(); + swiper.loopCreate(); + swiper.updateSlides(); + swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false); + } + + swiper.emit('breakpoint', breakpointParams); + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/check-overflow/index.js b/static/libs/swiper-5.3.8/package/src/components/core/check-overflow/index.js new file mode 100644 index 0000000..8a9d7b5 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/check-overflow/index.js @@ -0,0 +1,26 @@ + +function checkOverflow() { + const swiper = this; + const params = swiper.params; + const wasLocked = swiper.isLocked; + const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length); + + if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) { + swiper.isLocked = lastSlidePosition <= swiper.size; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + + swiper.allowSlideNext = !swiper.isLocked; + swiper.allowSlidePrev = !swiper.isLocked; + + // events + if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + swiper.navigation.update(); + } +} + +export default { checkOverflow }; diff --git a/static/libs/swiper-5.3.8/package/src/components/core/classes/addClasses.js b/static/libs/swiper-5.3.8/package/src/components/core/classes/addClasses.js new file mode 100644 index 0000000..3b14aab --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/classes/addClasses.js @@ -0,0 +1,44 @@ +import Device from '../../../utils/device'; + +export default function () { + const swiper = this; + const { + classNames, params, rtl, $el, + } = swiper; + const suffixes = []; + + suffixes.push('initialized'); + suffixes.push(params.direction); + + if (params.freeMode) { + suffixes.push('free-mode'); + } + if (params.autoHeight) { + suffixes.push('autoheight'); + } + if (rtl) { + suffixes.push('rtl'); + } + if (params.slidesPerColumn > 1) { + suffixes.push('multirow'); + if (params.slidesPerColumnFill === 'column') { + suffixes.push('multirow-column'); + } + } + if (Device.android) { + suffixes.push('android'); + } + if (Device.ios) { + suffixes.push('ios'); + } + + if (params.cssMode) { + suffixes.push('css-mode'); + } + + suffixes.forEach((suffix) => { + classNames.push(params.containerModifierClass + suffix); + }); + + $el.addClass(classNames.join(' ')); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/classes/index.js b/static/libs/swiper-5.3.8/package/src/components/core/classes/index.js new file mode 100644 index 0000000..32826e8 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/classes/index.js @@ -0,0 +1,4 @@ +import addClasses from './addClasses'; +import removeClasses from './removeClasses'; + +export default { addClasses, removeClasses }; diff --git a/static/libs/swiper-5.3.8/package/src/components/core/classes/removeClasses.js b/static/libs/swiper-5.3.8/package/src/components/core/classes/removeClasses.js new file mode 100644 index 0000000..699f814 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/classes/removeClasses.js @@ -0,0 +1,6 @@ +export default function () { + const swiper = this; + const { $el, classNames } = swiper; + + $el.removeClass(classNames.join(' ')); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/core-class.js b/static/libs/swiper-5.3.8/package/src/components/core/core-class.js new file mode 100644 index 0000000..725a4eb --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/core-class.js @@ -0,0 +1,490 @@ +/* eslint no-param-reassign: "off" */ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; +import Support from '../../utils/support'; + +import SwiperClass from '../../utils/class'; + +import update from './update/index'; +import translate from './translate/index'; +import transition from './transition/index'; +import slide from './slide/index'; +import loop from './loop/index'; +import grabCursor from './grab-cursor/index'; +import manipulation from './manipulation/index'; +import events from './events/index'; +import breakpoints from './breakpoints/index'; +import classes from './classes/index'; +import images from './images/index'; +import checkOverflow from './check-overflow/index'; + +import defaults from './defaults'; + +const prototypes = { + update, + translate, + transition, + slide, + loop, + grabCursor, + manipulation, + events, + breakpoints, + checkOverflow, + classes, + images, +}; + +const extendedDefaults = {}; + +class Swiper extends SwiperClass { + constructor(...args) { + let el; + let params; + if (args.length === 1 && args[0].constructor && args[0].constructor === Object) { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + + params = Utils.extend({}, params); + if (el && !params.el) params.el = el; + + super(params); + + Object.keys(prototypes).forEach((prototypeGroup) => { + Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => { + if (!Swiper.prototype[protoMethod]) { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + } + }); + }); + + // Swiper Instance + const swiper = this; + if (typeof swiper.modules === 'undefined') { + swiper.modules = {}; + } + Object.keys(swiper.modules).forEach((moduleName) => { + const module = swiper.modules[moduleName]; + if (module.params) { + const moduleParamName = Object.keys(module.params)[0]; + const moduleParams = module.params[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) return; + if (!(moduleParamName in params && 'enabled' in moduleParams)) return; + if (params[moduleParamName] === true) { + params[moduleParamName] = { enabled: true }; + } + if ( + typeof params[moduleParamName] === 'object' + && !('enabled' in params[moduleParamName]) + ) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { enabled: false }; + } + }); + + // Extend defaults with modules params + const swiperParams = Utils.extend({}, defaults); + swiper.useModulesParams(swiperParams); + + // Extend defaults with passed params + swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = Utils.extend({}, swiper.params); + swiper.passedParams = Utils.extend({}, params); + + // Save Dom lib + swiper.$ = $; + + // Find el + const $el = $(swiper.params.el); + el = $el[0]; + + if (!el) { + return undefined; + } + + if ($el.length > 1) { + const swipers = []; + $el.each((index, containerEl) => { + const newParams = Utils.extend({}, params, { el: containerEl }); + swipers.push(new Swiper(newParams)); + }); + return swipers; + } + + el.swiper = swiper; + $el.data('swiper', swiper); + + // Find Wrapper + let $wrapperEl; + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`)); + // Children needs to return slot items + $wrapperEl.children = (options) => $el.children(options); + } else { + $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`); + } + // Extend Swiper + Utils.extend(swiper, { + $el, + el, + $wrapperEl, + wrapperEl: $wrapperEl[0], + + // Classes + classNames: [], + + // Slides + slides: $(), + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // RTL + rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), + wrongRTL: $wrapperEl.css('display') === '-webkit-box', + + // Indexes + activeIndex: 0, + realIndex: 0, + + // + isBeginning: true, + isEnd: false, + + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + + // Touch Events + touchEvents: (function touchEvents() { + const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel']; + let desktop = ['mousedown', 'mousemove', 'mouseup']; + if (Support.pointerEvents) { + desktop = ['pointerdown', 'pointermove', 'pointerup']; + } + swiper.touchEventsTouch = { + start: touch[0], + move: touch[1], + end: touch[2], + cancel: touch[3], + }; + swiper.touchEventsDesktop = { + start: desktop[0], + move: desktop[1], + end: desktop[2], + }; + return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; + }()), + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + formElements: 'input, select, option, textarea, button, video, label', + // Last click time + lastClickTime: Utils.now(), + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + isTouchEvent: undefined, + startMoving: undefined, + }, + + // Clicks + allowClick: true, + + // Touches + allowTouchMove: swiper.params.allowTouchMove, + + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0, + }, + + // Images + imagesToLoad: [], + imagesLoaded: 0, + + }); + + // Install Modules + swiper.useModules(); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + return swiper; + } + + slidesPerViewDynamic() { + const swiper = this; + const { + params, slides, slidesGrid, size: swiperSize, activeIndex, + } = swiper; + let spv = 1; + if (params.centeredSlides) { + let slideSize = slides[activeIndex].swiperSlideSize; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) { + spv += 1; + } + } + } + return spv; + } + + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { snapGrid, params } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (swiper.params.freeMode) { + setTranslate(); + if (swiper.params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { + translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + + changeDirection(newDirection, needUpdate = true) { + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) { + return swiper; + } + + swiper.$el + .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`) + .addClass(`${swiper.params.containerModifierClass}${newDirection}`); + + swiper.params.direction = newDirection; + + swiper.slides.each((slideIndex, slideEl) => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + + return swiper; + } + + init() { + const swiper = this; + if (swiper.initialized) return; + + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + + if (swiper.params.preloadImages) { + swiper.preloadImages(); + } + + // Slide To Initial Slide + if (swiper.params.loop) { + swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit); + } + + // Attach events + swiper.attachEvents(); + + // Init Flag + swiper.initialized = true; + + // Emit + swiper.emit('init'); + } + + destroy(deleteInstance = true, cleanStyles = true) { + const swiper = this; + const { + params, $el, $wrapperEl, slides, + } = swiper; + + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + $el.removeAttr('style'); + $wrapperEl.removeAttr('style'); + if (slides && slides.length) { + slides + .removeClass([ + params.slideVisibleClass, + params.slideActiveClass, + params.slideNextClass, + params.slidePrevClass, + ].join(' ')) + .removeAttr('style') + .removeAttr('data-swiper-slide-index'); + } + } + + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach((eventName) => { + swiper.off(eventName); + }); + + if (deleteInstance !== false) { + swiper.$el[0].swiper = null; + swiper.$el.data('swiper', null); + Utils.deleteProps(swiper); + } + swiper.destroyed = true; + + return null; + } + + static extendDefaults(newDefaults) { + Utils.extend(extendedDefaults, newDefaults); + } + + static get extendedDefaults() { + return extendedDefaults; + } + + static get defaults() { + return defaults; + } + + static get Class() { + return SwiperClass; + } + + static get $() { + return $; + } +} + +export default Swiper; diff --git a/static/libs/swiper-5.3.8/package/src/components/core/core.less b/static/libs/swiper-5.3.8/package/src/components/core/core.less new file mode 100644 index 0000000..e5fcf28 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/core.less @@ -0,0 +1,111 @@ +:root { + --swiper-theme-color: @themeColor; +} +.swiper-container { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index:1; +} +.swiper-container-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position:relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property:transform; + box-sizing: content-box; +} +.swiper-container-android .swiper-slide, .swiper-wrapper { + transform:translate3d(0px,0,0); +} +.swiper-container-multirow > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-container-multirow-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} +.swiper-container-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-container-autoheight, .swiper-container-autoheight .swiper-slide { + height: auto; +} +.swiper-container-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} + +/* 3D Effects */ +.swiper-container-3d { + perspective: 1200px; + .swiper-wrapper, .swiper-slide, .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-cube-shadow { + transform-style: preserve-3d; + } + .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } +} + +/* CSS Mode */ +.swiper-container-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } +} +.swiper-container-horizontal.swiper-container-css-mode { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } +} +.swiper-container-vertical.swiper-container-css-mode { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/core.scss b/static/libs/swiper-5.3.8/package/src/components/core/core.scss new file mode 100644 index 0000000..e4df1f2 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/core.scss @@ -0,0 +1,115 @@ +:root { + --swiper-theme-color: #{$themeColor}; +} +.swiper-container { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index:1; +} +.swiper-container-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position:relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property:transform; + box-sizing: content-box; +} +.swiper-container-android .swiper-slide, +.swiper-wrapper { + transform:translate3d(0px,0,0); +} +.swiper-container-multirow > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-container-multirow-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} +.swiper-container-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-container-autoheight { + &, .swiper-slide { + height: auto; + } + + .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; + } +} + +/* 3D Effects */ +.swiper-container-3d { + perspective: 1200px; + .swiper-wrapper, .swiper-slide, .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-cube-shadow { + transform-style: preserve-3d; + } + .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } +} + +/* CSS Mode */ +.swiper-container-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } +} +.swiper-container-horizontal.swiper-container-css-mode { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } +} +.swiper-container-vertical.swiper-container-css-mode { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/defaults.js b/static/libs/swiper-5.3.8/package/src/components/core/defaults.js new file mode 100644 index 0000000..0fa443c --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/defaults.js @@ -0,0 +1,133 @@ +export default { + init: true, + direction: 'horizontal', + touchEventsTarget: 'container', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + // + preventInteractionOnTransition: false, + + // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + + // Free mode + freeMode: false, + freeModeMomentum: true, + freeModeMomentumRatio: 1, + freeModeMomentumBounce: true, + freeModeMomentumBounceRatio: 1, + freeModeMomentumVelocityRatio: 1, + freeModeSticky: false, + freeModeMinimumVelocity: 0.02, + + // Autoheight + autoHeight: false, + + // Set wrapper width + setWrapperSize: false, + + // Virtual Translate + virtualTranslate: false, + + // Effects + effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerColumnFill: 'column', + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, // in px + slidesOffsetAfter: 0, // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + + // Disable swiper and hide navigation when container not overflow + watchOverflow: false, + + // Round length + roundLengths: false, + + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 0, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + + // Unique Navigation Elements + uniqueNavElements: true, + + // Resistance + resistance: true, + resistanceRatio: 0.85, + + // Progress + watchSlidesProgress: false, + watchSlidesVisibility: false, + + // Cursor + grabCursor: false, + + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + + // Images + preloadImages: true, + updateOnImagesReady: true, + + // loop + loop: false, + loopAdditionalSlides: 0, + loopedSlides: null, + loopFillGroupWithBlank: false, + + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + + // Passive Listeners + passiveListeners: true, + + // NS + containerModifierClass: 'swiper-container-', // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-invisible-blank', + slideActiveClass: 'swiper-slide-active', + slideDuplicateActiveClass: 'swiper-slide-duplicate-active', + slideVisibleClass: 'swiper-slide-visible', + slideDuplicateClass: 'swiper-slide-duplicate', + slideNextClass: 'swiper-slide-next', + slideDuplicateNextClass: 'swiper-slide-duplicate-next', + slidePrevClass: 'swiper-slide-prev', + slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', + wrapperClass: 'swiper-wrapper', + + // Callbacks + runCallbacksOnInit: true, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/core/events/index.js b/static/libs/swiper-5.3.8/package/src/components/core/events/index.js new file mode 100644 index 0000000..29e18b5 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/events/index.js @@ -0,0 +1,119 @@ +import { document } from 'ssr-window'; +import Device from '../../../utils/device'; +import Support from '../../../utils/support'; + +import onTouchStart from './onTouchStart'; +import onTouchMove from './onTouchMove'; +import onTouchEnd from './onTouchEnd'; +import onResize from './onResize'; +import onClick from './onClick'; +import onScroll from './onScroll'; + +let dummyEventAttached = false; +function dummyEventListener() {} + +function attachEvents() { + const swiper = this; + const { + params, touchEvents, el, wrapperEl, + } = swiper; + + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + + swiper.onClick = onClick.bind(swiper); + + const capture = !!params.nested; + + // Touch Events + if (!Support.touch && Support.pointerEvents) { + el.addEventListener(touchEvents.start, swiper.onTouchStart, false); + document.addEventListener(touchEvents.move, swiper.onTouchMove, capture); + document.addEventListener(touchEvents.end, swiper.onTouchEnd, false); + } else { + if (Support.touch) { + const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); + el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture); + el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); + if (touchEvents.cancel) { + el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener); + } + if (!dummyEventAttached) { + document.addEventListener('touchstart', dummyEventListener); + dummyEventAttached = true; + } + } + if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { + el.addEventListener('mousedown', swiper.onTouchStart, false); + document.addEventListener('mousemove', swiper.onTouchMove, capture); + document.addEventListener('mouseup', swiper.onTouchEnd, false); + } + } + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el.addEventListener('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl.addEventListener('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true); + } else { + swiper.on('observerUpdate', onResize, true); + } +} + +function detachEvents() { + const swiper = this; + + const { + params, touchEvents, el, wrapperEl, + } = swiper; + + const capture = !!params.nested; + + // Touch Events + if (!Support.touch && Support.pointerEvents) { + el.removeEventListener(touchEvents.start, swiper.onTouchStart, false); + document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); + document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false); + } else { + if (Support.touch) { + const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); + el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); + el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); + if (touchEvents.cancel) { + el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener); + } + } + if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { + el.removeEventListener('mousedown', swiper.onTouchStart, false); + document.removeEventListener('mousemove', swiper.onTouchMove, capture); + document.removeEventListener('mouseup', swiper.onTouchEnd, false); + } + } + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el.removeEventListener('click', swiper.onClick, true); + } + + if (params.cssMode) { + wrapperEl.removeEventListener('scroll', swiper.onScroll); + } + + // Resize handler + swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize); +} + +export default { + attachEvents, + detachEvents, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/core/events/onClick.js b/static/libs/swiper-5.3.8/package/src/components/core/events/onClick.js new file mode 100644 index 0000000..a6084ea --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/events/onClick.js @@ -0,0 +1,10 @@ +export default function (e) { + const swiper = this; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/events/onResize.js b/static/libs/swiper-5.3.8/package/src/components/core/events/onResize.js new file mode 100644 index 0000000..1f736bb --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/events/onResize.js @@ -0,0 +1,40 @@ +export default function () { + const swiper = this; + + const { params, el } = swiper; + + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { allowSlideNext, allowSlidePrev, snapGrid } = swiper; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + + swiper.updateSize(); + swiper.updateSlides(); + + swiper.updateSlidesClasses(); + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.run(); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/events/onScroll.js b/static/libs/swiper-5.3.8/package/src/components/core/events/onScroll.js new file mode 100644 index 0000000..70323e9 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/events/onScroll.js @@ -0,0 +1,32 @@ +export default function () { + const swiper = this; + const { wrapperEl, rtlTranslate } = swiper; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + if (rtlTranslate) { + swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft); + } else { + swiper.translate = -wrapperEl.scrollLeft; + } + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === -0) swiper.translate = 0; + + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff); + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + + swiper.emit('setTranslate', swiper.translate, false); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/events/onTouchEnd.js b/static/libs/swiper-5.3.8/package/src/components/core/events/onTouchEnd.js new file mode 100644 index 0000000..df570aa --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/events/onTouchEnd.js @@ -0,0 +1,293 @@ +import Utils from '../../../utils/utils'; + +export default function (event) { + const swiper = this; + const data = swiper.touchEventsData; + + const { + params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid, + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = Utils.now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + swiper.updateClickedSlide(e); + swiper.emit('tap click', e); + if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + + data.lastClickTime = Utils.now(); + Utils.nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + + if (params.cssMode) { + return; + } + + if (params.freeMode) { + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + + if (params.freeModeMomentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeModeMomentumVelocityRatio; + + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeModeMomentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeModeMomentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeModeMomentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeModeSticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + swiper.once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeModeSticky) { + // If freeModeSticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeModeSticky) { + swiper.slideToClosest(); + return; + } + + if (params.freeModeMomentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + swiper.emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeModeSticky) { + swiper.slideToClosest(); + return; + } + + if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) { + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + return; + } + + // Find current slide + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) { + const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup); + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup); + + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment); + else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment); + else swiper.slideTo(stopIndex); + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/events/onTouchMove.js b/static/libs/swiper-5.3.8/package/src/components/core/events/onTouchMove.js new file mode 100644 index 0000000..757b768 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/events/onTouchMove.js @@ -0,0 +1,207 @@ +import { document } from 'ssr-window'; +import $ from '../../../utils/dom'; +import Utils from '../../../utils/utils'; + +export default function (event) { + const swiper = this; + const data = swiper.touchEventsData; + const { params, touches, rtlTranslate: rtl } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + if (data.isTouchEvent && e.type === 'mousemove') return; + const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]); + const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX; + const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + // isMoved = true; + swiper.allowClick = false; + if (data.isTouched) { + Utils.extend(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + }); + data.touchStartTime = Utils.now(); + } + return; + } + if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if ( + (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) + || (pageY > touches.startY && swiper.translate >= swiper.minTranslate()) + ) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if ( + (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) + || (pageX > touches.startX && swiper.translate >= swiper.minTranslate()) + ) { + return; + } + } + if (data.isTouchEvent && document.activeElement) { + if (e.target === document.activeElement && $(e.target).is(data.formElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + if (e.targetTouches && e.targetTouches.length > 1) return; + + touches.currentX = pageX; + touches.currentY = pageY; + + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return; + + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if ((diffX * diffX) + (diffY * diffY) >= 25) { + touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle); + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + + if (!data.isMoved) { + if (params.loop) { + swiper.loopFix(); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + swiper.emit('sliderMove', e); + data.isMoved = true; + + let diff = swiper.isHorizontal() ? diffX : diffY; + touches.diff = diff; + + diff *= params.touchRatio; + if (rtl) diff = -diff; + + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + data.currentTranslate = diff + data.startTranslate; + + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) { + disableParentSwiper = false; + if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio); + } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio); + } + + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode) { + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime, + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: Utils.now(), + }); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/events/onTouchStart.js b/static/libs/swiper-5.3.8/package/src/components/core/events/onTouchStart.js new file mode 100644 index 0000000..b71a28a --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/events/onTouchStart.js @@ -0,0 +1,81 @@ +import { window, document } from 'ssr-window'; +import $ from '../../../utils/dom'; +import Utils from '../../../utils/utils'; + +export default function (event) { + const swiper = this; + const data = swiper.touchEventsData; + const { params, touches } = swiper; + + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + let e = event; + if (e.originalEvent) e = e.originalEvent; + const $targetEl = $(e.target); + + if (params.touchEventsTarget === 'wrapper') { + if (!$targetEl.closest(swiper.wrapperEl).length) return; + } + data.isTouchEvent = e.type === 'touchstart'; + if (!data.isTouchEvent && 'which' in e && e.which === 3) return; + if (!data.isTouchEvent && 'button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!$targetEl.closest(params.swipeHandler)[0]) return; + } + + touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; + touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore + + const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; + if ( + edgeSwipeDetection + && ((startX <= edgeSwipeThreshold) + || (startX >= window.screen.width - edgeSwipeThreshold)) + ) { + return; + } + + Utils.extend(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined, + }); + + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = Utils.now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + if (e.type !== 'touchstart') { + let preventDefault = true; + if ($targetEl.is(data.formElements)) preventDefault = false; + if ( + document.activeElement + && $(document.activeElement).is(data.formElements) + && document.activeElement !== $targetEl[0] + ) { + document.activeElement.blur(); + } + + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if (params.touchStartForcePreventDefault || shouldPreventDefault) { + e.preventDefault(); + } + } + swiper.emit('touchStart', e); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/grab-cursor/index.js b/static/libs/swiper-5.3.8/package/src/components/core/grab-cursor/index.js new file mode 100644 index 0000000..57592d3 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/grab-cursor/index.js @@ -0,0 +1,7 @@ +import setGrabCursor from './setGrabCursor'; +import unsetGrabCursor from './unsetGrabCursor'; + +export default { + setGrabCursor, + unsetGrabCursor, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/core/grab-cursor/setGrabCursor.js b/static/libs/swiper-5.3.8/package/src/components/core/grab-cursor/setGrabCursor.js new file mode 100644 index 0000000..aec4020 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/grab-cursor/setGrabCursor.js @@ -0,0 +1,11 @@ +import Support from '../../../utils/support'; + +export default function (moving) { + const swiper = this; + if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return; + const el = swiper.el; + el.style.cursor = 'move'; + el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab'; + el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab'; + el.style.cursor = moving ? 'grabbing' : 'grab'; +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/grab-cursor/unsetGrabCursor.js b/static/libs/swiper-5.3.8/package/src/components/core/grab-cursor/unsetGrabCursor.js new file mode 100644 index 0000000..945121f --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/grab-cursor/unsetGrabCursor.js @@ -0,0 +1,7 @@ +import Support from '../../../utils/support'; + +export default function () { + const swiper = this; + if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return; + swiper.el.style.cursor = ''; +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/images/index.js b/static/libs/swiper-5.3.8/package/src/components/core/images/index.js new file mode 100644 index 0000000..1a889f6 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/images/index.js @@ -0,0 +1,7 @@ +import loadImage from './loadImage'; +import preloadImages from './preloadImages'; + +export default { + loadImage, + preloadImages, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/core/images/loadImage.js b/static/libs/swiper-5.3.8/package/src/components/core/images/loadImage.js new file mode 100644 index 0000000..4d5c98a --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/images/loadImage.js @@ -0,0 +1,29 @@ +import { window } from 'ssr-window'; + +export default function (imageEl, src, srcset, sizes, checkForComplete, callback) { + let image; + function onReady() { + if (callback) callback(); + } + if (!imageEl.complete || !checkForComplete) { + if (src) { + image = new window.Image(); + image.onload = onReady; + image.onerror = onReady; + if (sizes) { + image.sizes = sizes; + } + if (srcset) { + image.srcset = srcset; + } + if (src) { + image.src = src; + } + } else { + onReady(); + } + } else { + // image already loaded... + onReady(); + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/images/preloadImages.js b/static/libs/swiper-5.3.8/package/src/components/core/images/preloadImages.js new file mode 100644 index 0000000..b6f1db4 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/images/preloadImages.js @@ -0,0 +1,23 @@ +export default function () { + const swiper = this; + swiper.imagesToLoad = swiper.$el.find('img'); + function onReady() { + if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return; + if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1; + if (swiper.imagesLoaded === swiper.imagesToLoad.length) { + if (swiper.params.updateOnImagesReady) swiper.update(); + swiper.emit('imagesReady'); + } + } + for (let i = 0; i < swiper.imagesToLoad.length; i += 1) { + const imageEl = swiper.imagesToLoad[i]; + swiper.loadImage( + imageEl, + imageEl.currentSrc || imageEl.getAttribute('src'), + imageEl.srcset || imageEl.getAttribute('srcset'), + imageEl.sizes || imageEl.getAttribute('sizes'), + true, + onReady + ); + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/loop/index.js b/static/libs/swiper-5.3.8/package/src/components/core/loop/index.js new file mode 100644 index 0000000..2bde084 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/loop/index.js @@ -0,0 +1,9 @@ +import loopCreate from './loopCreate'; +import loopFix from './loopFix'; +import loopDestroy from './loopDestroy'; + +export default { + loopCreate, + loopFix, + loopDestroy, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/core/loop/loopCreate.js b/static/libs/swiper-5.3.8/package/src/components/core/loop/loopCreate.js new file mode 100644 index 0000000..ac427d6 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/loop/loopCreate.js @@ -0,0 +1,45 @@ +import { document } from 'ssr-window'; +import $ from '../../../utils/dom'; + +export default function () { + const swiper = this; + const { params, $wrapperEl } = swiper; + // Remove duplicated slides + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove(); + + let slides = $wrapperEl.children(`.${params.slideClass}`); + + if (params.loopFillGroupWithBlank) { + const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup); + if (blankSlidesNum !== params.slidesPerGroup) { + for (let i = 0; i < blankSlidesNum; i += 1) { + const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`); + $wrapperEl.append(blankNode); + } + slides = $wrapperEl.children(`.${params.slideClass}`); + } + } + + if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length; + + swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10)); + swiper.loopedSlides += params.loopAdditionalSlides; + if (swiper.loopedSlides > slides.length) { + swiper.loopedSlides = slides.length; + } + + const prependSlides = []; + const appendSlides = []; + slides.each((index, el) => { + const slide = $(el); + if (index < swiper.loopedSlides) appendSlides.push(el); + if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el); + slide.attr('data-swiper-slide-index', index); + }); + for (let i = 0; i < appendSlides.length; i += 1) { + $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); + } + for (let i = prependSlides.length - 1; i >= 0; i -= 1) { + $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/loop/loopDestroy.js b/static/libs/swiper-5.3.8/package/src/components/core/loop/loopDestroy.js new file mode 100644 index 0000000..a501936 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/loop/loopDestroy.js @@ -0,0 +1,6 @@ +export default function () { + const swiper = this; + const { $wrapperEl, params, slides } = swiper; + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove(); + slides.removeAttr('data-swiper-slide-index'); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/loop/loopFix.js b/static/libs/swiper-5.3.8/package/src/components/core/loop/loopFix.js new file mode 100644 index 0000000..ce1c2f7 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/loop/loopFix.js @@ -0,0 +1,37 @@ +export default function () { + const swiper = this; + + swiper.emit('beforeLoopFix'); + + const { + activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl, + } = swiper; + let newIndex; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + + const snapTranslate = -snapGrid[activeIndex]; + const diff = snapTranslate - swiper.getTranslate(); + + // Fix For Negative Oversliding + if (activeIndex < loopedSlides) { + newIndex = (slides.length - (loopedSlides * 3)) + activeIndex; + newIndex += loopedSlides; + const slideChanged = swiper.slideTo(newIndex, 0, false, true); + if (slideChanged && diff !== 0) { + swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); + } + } else if (activeIndex >= slides.length - loopedSlides) { + // Fix For Positive Oversliding + newIndex = -slides.length + activeIndex + loopedSlides; + newIndex += loopedSlides; + const slideChanged = swiper.slideTo(newIndex, 0, false, true); + if (slideChanged && diff !== 0) { + swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + + swiper.emit('loopFix'); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/manipulation/addSlide.js b/static/libs/swiper-5.3.8/package/src/components/core/manipulation/addSlide.js new file mode 100644 index 0000000..3f8eef2 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/manipulation/addSlide.js @@ -0,0 +1,54 @@ +import Support from '../../../utils/support'; + +export default function (index, slides) { + const swiper = this; + const { $wrapperEl, params, activeIndex } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.slides = $wrapperEl.children(`.${params.slideClass}`); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides.eq(i); + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + $wrapperEl.append(slides); + } + + for (let i = 0; i < slidesBuffer.length; i += 1) { + $wrapperEl.append(slidesBuffer[i]); + } + + if (params.loop) { + swiper.loopCreate(); + } + if (!(params.observer && Support.observer)) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/manipulation/appendSlide.js b/static/libs/swiper-5.3.8/package/src/components/core/manipulation/appendSlide.js new file mode 100644 index 0000000..12447be --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/manipulation/appendSlide.js @@ -0,0 +1,22 @@ +import Support from '../../../utils/support'; + +export default function (slides) { + const swiper = this; + const { $wrapperEl, params } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.append(slides[i]); + } + } else { + $wrapperEl.append(slides); + } + if (params.loop) { + swiper.loopCreate(); + } + if (!(params.observer && Support.observer)) { + swiper.update(); + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/manipulation/index.js b/static/libs/swiper-5.3.8/package/src/components/core/manipulation/index.js new file mode 100644 index 0000000..39706b4 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/manipulation/index.js @@ -0,0 +1,13 @@ +import appendSlide from './appendSlide'; +import prependSlide from './prependSlide'; +import addSlide from './addSlide'; +import removeSlide from './removeSlide'; +import removeAllSlides from './removeAllSlides'; + +export default { + appendSlide, + prependSlide, + addSlide, + removeSlide, + removeAllSlides, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/core/manipulation/prependSlide.js b/static/libs/swiper-5.3.8/package/src/components/core/manipulation/prependSlide.js new file mode 100644 index 0000000..235565a --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/manipulation/prependSlide.js @@ -0,0 +1,26 @@ +import Support from '../../../utils/support'; + +export default function (slides) { + const swiper = this; + const { params, $wrapperEl, activeIndex } = swiper; + + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.prepend(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + $wrapperEl.prepend(slides); + } + if (params.loop) { + swiper.loopCreate(); + } + if (!(params.observer && Support.observer)) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/manipulation/removeAllSlides.js b/static/libs/swiper-5.3.8/package/src/components/core/manipulation/removeAllSlides.js new file mode 100644 index 0000000..307d580 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/manipulation/removeAllSlides.js @@ -0,0 +1,9 @@ +export default function () { + const swiper = this; + + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/manipulation/removeSlide.js b/static/libs/swiper-5.3.8/package/src/components/core/manipulation/removeSlide.js new file mode 100644 index 0000000..90cb268 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/manipulation/removeSlide.js @@ -0,0 +1,42 @@ +import Support from '../../../utils/support'; + +export default function (slidesIndexes) { + const swiper = this; + const { params, $wrapperEl, activeIndex } = swiper; + + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.slides = $wrapperEl.children(`.${params.slideClass}`); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + + if (params.loop) { + swiper.loopCreate(); + } + + if (!(params.observer && Support.observer)) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/slide/index.js b/static/libs/swiper-5.3.8/package/src/components/core/slide/index.js new file mode 100644 index 0000000..a2b14c2 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/slide/index.js @@ -0,0 +1,17 @@ +import slideTo from './slideTo'; +import slideToLoop from './slideToLoop'; +import slideNext from './slideNext'; +import slidePrev from './slidePrev'; +import slideReset from './slideReset'; +import slideToClosest from './slideToClosest'; +import slideToClickedSlide from './slideToClickedSlide'; + +export default { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/core/slide/slideNext.js b/static/libs/swiper-5.3.8/package/src/components/core/slide/slideNext.js new file mode 100644 index 0000000..79b55bd --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/slide/slideNext.js @@ -0,0 +1,13 @@ +/* eslint no-unused-vars: "off" */ +export default function (speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + const { params, animating } = swiper; + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup; + if (params.loop) { + if (animating) return false; + swiper.loopFix(); + // eslint-disable-next-line + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/slide/slidePrev.js b/static/libs/swiper-5.3.8/package/src/components/core/slide/slidePrev.js new file mode 100644 index 0000000..66880c4 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/slide/slidePrev.js @@ -0,0 +1,36 @@ +/* eslint no-unused-vars: "off" */ +export default function (speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + const { + params, animating, snapGrid, slidesGrid, rtlTranslate, + } = swiper; + + if (params.loop) { + if (animating) return false; + swiper.loopFix(); + // eslint-disable-next-line + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map((val) => normalize(val)); + const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val)); + + const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)]; + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + snapGrid.forEach((snap) => { + if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap; + }); + } + let prevIndex; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/slide/slideReset.js b/static/libs/swiper-5.3.8/package/src/components/core/slide/slideReset.js new file mode 100644 index 0000000..90154f9 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/slide/slideReset.js @@ -0,0 +1,5 @@ +/* eslint no-unused-vars: "off" */ +export default function (speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/slide/slideTo.js b/static/libs/swiper-5.3.8/package/src/components/core/slide/slideTo.js new file mode 100644 index 0000000..3d91589 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/slide/slideTo.js @@ -0,0 +1,123 @@ +export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + + const { + params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl, + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + + if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + const translate = -snapGrid[snapIndex]; + + // Update progress + swiper.updateProgress(translate); + + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) return false; + } + } + + let direction; + if (slideIndex > activeIndex) direction = 'next'; + else if (slideIndex < activeIndex) direction = 'prev'; + else direction = 'reset'; + + + // Update Index + if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + let t = -translate; + if (rtl) { + t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t; + } + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } else { + // eslint-disable-next-line + if (wrapperEl.scrollTo) { + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth', + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + } + return true; + } + + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } else { + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); + } + } + + return true; +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/slide/slideToClickedSlide.js b/static/libs/swiper-5.3.8/package/src/components/core/slide/slideToClickedSlide.js new file mode 100644 index 0000000..0afd3d0 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/slide/slideToClickedSlide.js @@ -0,0 +1,47 @@ +import $ from '../../../utils/dom'; +import Utils from '../../../utils/utils'; + +export default function () { + const swiper = this; + const { params, $wrapperEl } = swiper; + + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if ( + (slideToIndex < swiper.loopedSlides - (slidesPerView / 2)) + || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2)) + ) { + swiper.loopFix(); + slideToIndex = $wrapperEl + .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`) + .eq(0) + .index(); + + Utils.nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = $wrapperEl + .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`) + .eq(0) + .index(); + + Utils.nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/slide/slideToClosest.js b/static/libs/swiper-5.3.8/package/src/components/core/slide/slideToClosest.js new file mode 100644 index 0000000..75e5564 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/slide/slideToClosest.js @@ -0,0 +1,31 @@ +/* eslint no-unused-vars: "off" */ +export default function (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) { + const swiper = this; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + + return swiper.slideTo(index, speed, runCallbacks, internal); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/slide/slideToLoop.js b/static/libs/swiper-5.3.8/package/src/components/core/slide/slideToLoop.js new file mode 100644 index 0000000..66e258e --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/slide/slideToLoop.js @@ -0,0 +1,9 @@ +export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + let newIndex = index; + if (swiper.params.loop) { + newIndex += swiper.loopedSlides; + } + + return swiper.slideTo(newIndex, speed, runCallbacks, internal); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/transition/index.js b/static/libs/swiper-5.3.8/package/src/components/core/transition/index.js new file mode 100644 index 0000000..a3be57f --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/transition/index.js @@ -0,0 +1,9 @@ +import setTransition from './setTransition'; +import transitionStart from './transitionStart'; +import transitionEnd from './transitionEnd'; + +export default { + setTransition, + transitionStart, + transitionEnd, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/core/transition/setTransition.js b/static/libs/swiper-5.3.8/package/src/components/core/transition/setTransition.js new file mode 100644 index 0000000..b31ba79 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/transition/setTransition.js @@ -0,0 +1,9 @@ +export default function (duration, byController) { + const swiper = this; + + if (!swiper.params.cssMode) { + swiper.$wrapperEl.transition(duration); + } + + swiper.emit('setTransition', duration, byController); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/transition/transitionEnd.js b/static/libs/swiper-5.3.8/package/src/components/core/transition/transitionEnd.js new file mode 100644 index 0000000..b367194 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/transition/transitionEnd.js @@ -0,0 +1,29 @@ +export default function (runCallbacks = true, direction) { + const swiper = this; + const { activeIndex, previousIndex, params } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next'; + else if (activeIndex < previousIndex) dir = 'prev'; + else dir = 'reset'; + } + + swiper.emit('transitionEnd'); + + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit('slideResetTransitionEnd'); + return; + } + swiper.emit('slideChangeTransitionEnd'); + if (dir === 'next') { + swiper.emit('slideNextTransitionEnd'); + } else { + swiper.emit('slidePrevTransitionEnd'); + } + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/transition/transitionStart.js b/static/libs/swiper-5.3.8/package/src/components/core/transition/transitionStart.js new file mode 100644 index 0000000..f0b3976 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/transition/transitionStart.js @@ -0,0 +1,30 @@ +export default function (runCallbacks = true, direction) { + const swiper = this; + const { activeIndex, params, previousIndex } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next'; + else if (activeIndex < previousIndex) dir = 'prev'; + else dir = 'reset'; + } + + swiper.emit('transitionStart'); + + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit('slideResetTransitionStart'); + return; + } + swiper.emit('slideChangeTransitionStart'); + if (dir === 'next') { + swiper.emit('slideNextTransitionStart'); + } else { + swiper.emit('slidePrevTransitionStart'); + } + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/translate/getTranslate.js b/static/libs/swiper-5.3.8/package/src/components/core/translate/getTranslate.js new file mode 100644 index 0000000..25cb219 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/translate/getTranslate.js @@ -0,0 +1,21 @@ +import Utils from '../../../utils/utils'; + +export default function (axis = this.isHorizontal() ? 'x' : 'y') { + const swiper = this; + + const { + params, rtlTranslate: rtl, translate, $wrapperEl, + } = swiper; + + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + + let currentTranslate = Utils.getTranslate($wrapperEl[0], axis); + if (rtl) currentTranslate = -currentTranslate; + + return currentTranslate || 0; +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/translate/index.js b/static/libs/swiper-5.3.8/package/src/components/core/translate/index.js new file mode 100644 index 0000000..3ca685d --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/translate/index.js @@ -0,0 +1,13 @@ +import getTranslate from './getTranslate'; +import setTranslate from './setTranslate'; +import minTranslate from './minTranslate'; +import maxTranslate from './maxTranslate'; +import translateTo from './translateTo'; + +export default { + getTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/core/translate/maxTranslate.js b/static/libs/swiper-5.3.8/package/src/components/core/translate/maxTranslate.js new file mode 100644 index 0000000..1e07edb --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/translate/maxTranslate.js @@ -0,0 +1,3 @@ +export default function () { + return (-this.snapGrid[this.snapGrid.length - 1]); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/translate/minTranslate.js b/static/libs/swiper-5.3.8/package/src/components/core/translate/minTranslate.js new file mode 100644 index 0000000..99cb93b --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/translate/minTranslate.js @@ -0,0 +1,3 @@ +export default function () { + return (-this.snapGrid[0]); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/translate/setTranslate.js b/static/libs/swiper-5.3.8/package/src/components/core/translate/setTranslate.js new file mode 100644 index 0000000..71252d0 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/translate/setTranslate.js @@ -0,0 +1,42 @@ +export default function (translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress, + } = swiper; + let x = 0; + let y = 0; + const z = 0; + + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / (translatesDiff); + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + + swiper.emit('setTranslate', swiper.translate, byController); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/translate/translateTo.js b/static/libs/swiper-5.3.8/package/src/components/core/translate/translateTo.js new file mode 100644 index 0000000..51b1802 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/translate/translateTo.js @@ -0,0 +1,76 @@ +export default function (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) { + const swiper = this; + + const { + params, + wrapperEl, + } = swiper; + + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate; + else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate; + else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + // eslint-disable-next-line + if (wrapperEl.scrollTo) { + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth', + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } + } + return true; + } + + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); + } + } + + return true; +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/update/index.js b/static/libs/swiper-5.3.8/package/src/components/core/update/index.js new file mode 100644 index 0000000..6a7fffa --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/update/index.js @@ -0,0 +1,21 @@ +import updateSize from './updateSize'; +import updateSlides from './updateSlides'; +import updateAutoHeight from './updateAutoHeight'; +import updateSlidesOffset from './updateSlidesOffset'; +import updateSlidesProgress from './updateSlidesProgress'; +import updateProgress from './updateProgress'; +import updateSlidesClasses from './updateSlidesClasses'; +import updateActiveIndex from './updateActiveIndex'; +import updateClickedSlide from './updateClickedSlide'; + +export default { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/core/update/updateActiveIndex.js b/static/libs/swiper-5.3.8/package/src/components/core/update/updateActiveIndex.js new file mode 100644 index 0000000..2a466a3 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/update/updateActiveIndex.js @@ -0,0 +1,60 @@ +import Utils from '../../../utils/utils'; + +export default function (newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex, + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + if (typeof activeIndex === 'undefined') { + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + + // Get real index + const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); + + Utils.extend(swiper, { + snapIndex, + realIndex, + previousIndex, + activeIndex, + }); + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + swiper.emit('slideChange'); + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/update/updateAutoHeight.js b/static/libs/swiper-5.3.8/package/src/components/core/update/updateAutoHeight.js new file mode 100644 index 0000000..f22edd6 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/update/updateAutoHeight.js @@ -0,0 +1,38 @@ +export default function (speed) { + const swiper = this; + const activeSlides = []; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + swiper.visibleSlides.each((index, slide) => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length) break; + activeSlides.push(swiper.slides.eq(index)[0]); + } + } + } else { + activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/update/updateClickedSlide.js b/static/libs/swiper-5.3.8/package/src/components/core/update/updateClickedSlide.js new file mode 100644 index 0000000..b429cea --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/update/updateClickedSlide.js @@ -0,0 +1,29 @@ +import $ from '../../../utils/dom'; + +export default function (e) { + const swiper = this; + const params = swiper.params; + const slide = $(e.target).closest(`.${params.slideClass}`)[0]; + let slideFound = false; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) slideFound = true; + } + } + + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = $(slide).index(); + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/update/updateProgress.js b/static/libs/swiper-5.3.8/package/src/components/core/update/updateProgress.js new file mode 100644 index 0000000..2d1b414 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/update/updateProgress.js @@ -0,0 +1,43 @@ +import Utils from '../../../utils/utils'; + +export default function (translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { progress, isBeginning, isEnd } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / (translatesDiff); + isBeginning = progress <= 0; + isEnd = progress >= 1; + } + Utils.extend(swiper, { + progress, + isBeginning, + isEnd, + }); + + if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate); + + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) { + swiper.emit('fromEdge'); + } + + swiper.emit('progress', progress); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/update/updateSize.js b/static/libs/swiper-5.3.8/package/src/components/core/update/updateSize.js new file mode 100644 index 0000000..8e35d21 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/update/updateSize.js @@ -0,0 +1,31 @@ +import Utils from '../../../utils/utils'; + +export default function () { + const swiper = this; + let width; + let height; + const $el = swiper.$el; + if (typeof swiper.params.width !== 'undefined') { + width = swiper.params.width; + } else { + width = $el[0].clientWidth; + } + if (typeof swiper.params.height !== 'undefined') { + height = swiper.params.height; + } else { + height = $el[0].clientHeight; + } + if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) { + return; + } + + // Subtract paddings + width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10); + height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10); + + Utils.extend(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height, + }); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/update/updateSlides.js b/static/libs/swiper-5.3.8/package/src/components/core/update/updateSlides.js new file mode 100644 index 0000000..9e057f4 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/update/updateSlides.js @@ -0,0 +1,313 @@ +import { window } from 'ssr-window'; +import Utils from '../../../utils/utils'; + +export default function () { + const swiper = this; + const params = swiper.params; + + const { + $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL, + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = $wrapperEl.children(`.${swiper.params.slideClass}`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + + function slidesForMargin(slideIndex) { + if (!params.cssMode) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + } + + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.snapGrid.length; + + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize; + } + + swiper.virtualSize = -spaceBetween; + + // reset margins + if (rtl) slides.css({ marginLeft: '', marginTop: '' }); + else slides.css({ marginRight: '', marginBottom: '' }); + + let slidesNumberEvenToRows; + if (params.slidesPerColumn > 1) { + if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn; + } + if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn); + } + } + + // Calc slides + let slideSize; + const slidesPerColumn = params.slidesPerColumn; + const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn; + const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn); + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + const slide = slides.eq(i); + if (params.slidesPerColumn > 1) { + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn)); + const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 + ? params.slidesPerGroup + : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup; + + newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn); + slide + .css({ + '-webkit-box-ordinal-group': newSlideOrderIndex, + '-moz-box-ordinal-group': newSlideOrderIndex, + '-ms-flex-order': newSlideOrderIndex, + '-webkit-order': newSlideOrderIndex, + order: newSlideOrderIndex, + }); + } else if (params.slidesPerColumnFill === 'column') { + column = Math.floor(i / slidesPerColumn); + row = i - (column * slidesPerColumn); + if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) { + row += 1; + if (row >= slidesPerColumn) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - (row * slidesPerRow); + } + slide.css( + `margin-${swiper.isHorizontal() ? 'top' : 'left'}`, + (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`) + ); + } + if (slide.css('display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + const slideStyles = window.getComputedStyle(slide[0], null); + const currentTransform = slide[0].style.transform; + const currentWebKitTransform = slide[0].style.webkitTransform; + if (currentTransform) { + slide[0].style.transform = 'none'; + } + if (currentWebKitTransform) { + slide[0].style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() + ? slide.outerWidth(true) + : slide.outerHeight(true); + } else { + // eslint-disable-next-line + if (swiper.isHorizontal()) { + const width = parseFloat(slideStyles.getPropertyValue('width')); + const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left')); + const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right')); + const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left')); + const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right')); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight; + } + } else { + const height = parseFloat(slideStyles.getPropertyValue('height')); + const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top')); + const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom')); + const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top')); + const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom')); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = height + marginTop + marginBottom; + } else { + slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom; + } + } + } + if (currentTransform) { + slide[0].style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide[0].style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + + if (slides[i]) { + if (swiper.isHorizontal()) { + slides[i].style.width = `${slideSize}px`; + } else { + slides[i].style.height = `${slideSize}px`; + } + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + + + if (params.centeredSlides) { + slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; + if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + + swiper.virtualSize += slideSize + spaceBetween; + + prevSlideSize = slideSize; + + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + let newSlidesGrid; + + if ( + rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` }); + } + if (params.setWrapperSize) { + if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` }); + else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` }); + } + + if (params.slidesPerColumn > 1) { + swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween; + if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` }); + else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` }); + if (params.centeredSlides) { + newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid = newSlidesGrid; + } + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (snapGrid.length === 0) snapGrid = [0]; + + if (params.spaceBetween !== 0) { + if (swiper.isHorizontal()) { + if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` }); + else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` }); + } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` }); + } + + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach((slideSizeValue) => { + allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); + }); + allSlidesSize -= params.spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map((snap) => { + if (snap < 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach((slideSizeValue) => { + allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); + }); + allSlidesSize -= params.spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + + Utils.extend(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid, + }); + + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + + if (params.watchSlidesProgress || params.watchSlidesVisibility) { + swiper.updateSlidesOffset(); + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/update/updateSlidesClasses.js b/static/libs/swiper-5.3.8/package/src/components/core/update/updateSlidesClasses.js new file mode 100644 index 0000000..b329e26 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/update/updateSlidesClasses.js @@ -0,0 +1,66 @@ +export default function () { + const swiper = this; + + const { + slides, params, $wrapperEl, activeIndex, realIndex, + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + + slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`); + + let activeSlide; + if (isVirtual) { + activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`); + } else { + activeSlide = slides.eq(activeIndex); + } + + // Active classes + activeSlide.addClass(params.slideActiveClass); + + if (params.loop) { + // Duplicate to all looped slides + if (activeSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl + .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`) + .addClass(params.slideDuplicateActiveClass); + } else { + $wrapperEl + .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`) + .addClass(params.slideDuplicateActiveClass); + } + } + // Next Slide + let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass); + if (params.loop && nextSlide.length === 0) { + nextSlide = slides.eq(0); + nextSlide.addClass(params.slideNextClass); + } + // Prev Slide + let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass); + if (params.loop && prevSlide.length === 0) { + prevSlide = slides.eq(-1); + prevSlide.addClass(params.slidePrevClass); + } + if (params.loop) { + // Duplicate to all looped slides + if (nextSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl + .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicateNextClass); + } else { + $wrapperEl + .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicateNextClass); + } + if (prevSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl + .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicatePrevClass); + } else { + $wrapperEl + .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicatePrevClass); + } + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/update/updateSlidesOffset.js b/static/libs/swiper-5.3.8/package/src/components/core/update/updateSlidesOffset.js new file mode 100644 index 0000000..dc886b4 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/update/updateSlidesOffset.js @@ -0,0 +1,7 @@ +export default function () { + const swiper = this; + const slides = swiper.slides; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/core/update/updateSlidesProgress.js b/static/libs/swiper-5.3.8/package/src/components/core/update/updateSlidesProgress.js new file mode 100644 index 0000000..85dd640 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/core/update/updateSlidesProgress.js @@ -0,0 +1,41 @@ +import $ from '../../../utils/dom'; + +export default function (translate = (this && this.translate) || 0) { + const swiper = this; + const params = swiper.params; + + const { slides, rtlTranslate: rtl } = swiper; + + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.removeClass(params.slideVisibleClass); + + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + const slideProgress = ( + (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset + ) / (slide.swiperSlideSize + params.spaceBetween); + if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) { + const slideBefore = -(offsetCenter - slide.swiperSlideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1) + || (slideAfter > 1 && slideAfter <= swiper.size) + || (slideBefore <= 0 && slideAfter >= swiper.size); + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides.eq(i).addClass(params.slideVisibleClass); + } + } + slide.progress = rtl ? -slideProgress : slideProgress; + } + swiper.visibleSlides = $(swiper.visibleSlides); +} diff --git a/static/libs/swiper-5.3.8/package/src/components/effect-coverflow/effect-coverflow.js b/static/libs/swiper-5.3.8/package/src/components/effect-coverflow/effect-coverflow.js new file mode 100644 index 0000000..085aec9 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/effect-coverflow/effect-coverflow.js @@ -0,0 +1,122 @@ +import $ from '../../utils/dom'; +import Support from '../../utils/support'; +import Utils from '../../utils/utils'; + +const Coverflow = { + setTranslate() { + const swiper = this; + const { + width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid, + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2); + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const $slideEl = slides.eq(i); + const slideSize = slidesSizesGrid[i]; + const slideOffset = $slideEl[0].swiperSlideOffset; + const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier; + + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = ((parseFloat(params.stretch) / 100) * slideSize); + } + let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier); + let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0; + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; + + $slideEl.transform(slideTransform); + $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + if ($shadowBeforeEl.length === 0) { + $shadowBeforeEl = $(`
      `); + $slideEl.append($shadowBeforeEl); + } + if ($shadowAfterEl.length === 0) { + $shadowAfterEl = $(`
      `); + $slideEl.append($shadowAfterEl); + } + if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; + } + } + + // Set correct perspective for IE10 + if (Support.pointerEvents || Support.prefixedPointerEvents) { + const ws = $wrapperEl[0].style; + ws.perspectiveOrigin = `${center}px 50%`; + } + }, + setTransition(duration) { + const swiper = this; + swiper.slides + .transition(duration) + .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') + .transition(duration); + }, +}; + +export default { + name: 'effect-coverflow', + params: { + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + modifier: 1, + slideShadows: true, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + coverflowEffect: { + setTranslate: Coverflow.setTranslate.bind(swiper), + setTransition: Coverflow.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'coverflow') return; + + swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`); + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'coverflow') return; + swiper.coverflowEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'coverflow') return; + swiper.coverflowEffect.setTransition(duration); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/effect-coverflow/effect-coverflow.less b/static/libs/swiper-5.3.8/package/src/components/effect-coverflow/effect-coverflow.less new file mode 100644 index 0000000..99f258b --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/effect-coverflow/effect-coverflow.less @@ -0,0 +1 @@ +.swiper-container-coverflow {} diff --git a/static/libs/swiper-5.3.8/package/src/components/effect-coverflow/effect-coverflow.scss b/static/libs/swiper-5.3.8/package/src/components/effect-coverflow/effect-coverflow.scss new file mode 100644 index 0000000..99f258b --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/effect-coverflow/effect-coverflow.scss @@ -0,0 +1 @@ +.swiper-container-coverflow {} diff --git a/static/libs/swiper-5.3.8/package/src/components/effect-cube/effect-cube.js b/static/libs/swiper-5.3.8/package/src/components/effect-cube/effect-cube.js new file mode 100644 index 0000000..fa9415c --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/effect-cube/effect-cube.js @@ -0,0 +1,180 @@ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; +import Browser from '../../utils/browser'; + +const Cube = { + setTranslate() { + const swiper = this; + const { + $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize, + } = swiper; + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let $cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow'); + if ($cubeShadowEl.length === 0) { + $cubeShadowEl = $('
      '); + $wrapperEl.append($cubeShadowEl); + } + $cubeShadowEl.css({ height: `${swiperWidth}px` }); + } else { + $cubeShadowEl = $el.find('.swiper-cube-shadow'); + if ($cubeShadowEl.length === 0) { + $cubeShadowEl = $('
      '); + $el.append($cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min($slideEl[0].progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + (round * 4 * swiperSize); + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = (3 * swiperSize) + (swiperSize * 4 * round); + } + if (rtl) { + tx = -tx; + } + + if (!isHorizontal) { + ty = tx; + tx = 0; + } + + const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = (slideIndex * 90) + (progress * 90); + if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90); + } + $slideEl.transform(transform); + if (params.slideShadows) { + // Set shadows + let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + if (shadowBefore.length === 0) { + shadowBefore = $(`
      `); + $slideEl.append(shadowBefore); + } + if (shadowAfter.length === 0) { + shadowAfter = $(`
      `); + $slideEl.append(shadowAfter); + } + if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); + if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); + } + } + $wrapperEl.css({ + '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`, + '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`, + '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`, + 'transform-origin': `50% 50% -${swiperSize / 2}px`, + }); + + if (params.shadow) { + if (isHorizontal) { + $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`); + } else { + const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90); + const multiplier = 1.5 - ( + (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2) + + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2) + ); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`); + } + } + const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0; + $wrapperEl + .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`); + }, + setTransition(duration) { + const swiper = this; + const { $el, slides } = swiper; + slides + .transition(duration) + .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') + .transition(duration); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + $el.find('.swiper-cube-shadow').transition(duration); + } + }, +}; + +export default { + name: 'effect-cube', + params: { + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + cubeEffect: { + setTranslate: Cube.setTranslate.bind(swiper), + setTransition: Cube.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'cube') return; + swiper.classNames.push(`${swiper.params.containerModifierClass}cube`); + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + const overwriteParams = { + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'cube') return; + swiper.cubeEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'cube') return; + swiper.cubeEffect.setTransition(duration); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/effect-cube/effect-cube.less b/static/libs/swiper-5.3.8/package/src/components/effect-cube/effect-cube.less new file mode 100644 index 0000000..cbb0ead --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/effect-cube/effect-cube.less @@ -0,0 +1,43 @@ +.swiper-container-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-container-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, .swiper-slide-next, .swiper-slide-prev, .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } + .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + background: #000; + opacity: 0.6; + -webkit-filter: blur(50px); + filter: blur(50px); + z-index: 0; + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/effect-cube/effect-cube.scss b/static/libs/swiper-5.3.8/package/src/components/effect-cube/effect-cube.scss new file mode 100644 index 0000000..cbb0ead --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/effect-cube/effect-cube.scss @@ -0,0 +1,43 @@ +.swiper-container-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-container-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, .swiper-slide-next, .swiper-slide-prev, .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } + .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + background: #000; + opacity: 0.6; + -webkit-filter: blur(50px); + filter: blur(50px); + z-index: 0; + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/effect-fade/effect-fade.js b/static/libs/swiper-5.3.8/package/src/components/effect-fade/effect-fade.js new file mode 100644 index 0000000..e6de8f7 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/effect-fade/effect-fade.js @@ -0,0 +1,90 @@ +import Utils from '../../utils/utils'; + +const Fade = { + setTranslate() { + const swiper = this; + const { slides } = swiper; + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = swiper.slides.eq(i); + const offset = $slideEl[0].swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade + ? Math.max(1 - Math.abs($slideEl[0].progress), 0) + : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); + $slideEl + .css({ + opacity: slideOpacity, + }) + .transform(`translate3d(${tx}px, ${ty}px, 0px)`); + } + }, + setTransition(duration) { + const swiper = this; + const { slides, $wrapperEl } = swiper; + slides.transition(duration); + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + slides.transitionEnd(() => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const triggerEvents = ['webkitTransitionEnd', 'transitionend']; + for (let i = 0; i < triggerEvents.length; i += 1) { + $wrapperEl.trigger(triggerEvents[i]); + } + }); + } + }, +}; + +export default { + name: 'effect-fade', + params: { + fadeEffect: { + crossFade: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + fadeEffect: { + setTranslate: Fade.setTranslate.bind(swiper), + setTransition: Fade.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'fade') return; + swiper.classNames.push(`${swiper.params.containerModifierClass}fade`); + const overwriteParams = { + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'fade') return; + swiper.fadeEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'fade') return; + swiper.fadeEffect.setTransition(duration); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/effect-fade/effect-fade.less b/static/libs/swiper-5.3.8/package/src/components/effect-fade/effect-fade.less new file mode 100644 index 0000000..1b146b0 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/effect-fade/effect-fade.less @@ -0,0 +1,19 @@ +.swiper-container-fade { + &.swiper-container-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/effect-fade/effect-fade.scss b/static/libs/swiper-5.3.8/package/src/components/effect-fade/effect-fade.scss new file mode 100644 index 0000000..1b146b0 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/effect-fade/effect-fade.scss @@ -0,0 +1,19 @@ +.swiper-container-fade { + &.swiper-container-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/effect-flip/effect-flip.js b/static/libs/swiper-5.3.8/package/src/components/effect-flip/effect-flip.js new file mode 100644 index 0000000..4c0c745 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/effect-flip/effect-flip.js @@ -0,0 +1,120 @@ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +const Flip = { + setTranslate() { + const swiper = this; + const { slides, rtlTranslate: rtl } = swiper; + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + let progress = $slideEl[0].progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min($slideEl[0].progress, 1), -1); + } + const offset = $slideEl[0].swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + + $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + + if (swiper.params.flipEffect.slideShadows) { + // Set shadows + let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + if (shadowBefore.length === 0) { + shadowBefore = $(`
      `); + $slideEl.append(shadowBefore); + } + if (shadowAfter.length === 0) { + shadowAfter = $(`
      `); + $slideEl.append(shadowAfter); + } + if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); + if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); + } + $slideEl + .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`); + } + }, + setTransition(duration) { + const swiper = this; + const { slides, activeIndex, $wrapperEl } = swiper; + slides + .transition(duration) + .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') + .transition(duration); + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + // eslint-disable-next-line + slides.eq(activeIndex).transitionEnd(function onTransitionEnd() { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + // if (!$(this).hasClass(swiper.params.slideActiveClass)) return; + eventTriggered = true; + swiper.animating = false; + const triggerEvents = ['webkitTransitionEnd', 'transitionend']; + for (let i = 0; i < triggerEvents.length; i += 1) { + $wrapperEl.trigger(triggerEvents[i]); + } + }); + } + }, +}; + +export default { + name: 'effect-flip', + params: { + flipEffect: { + slideShadows: true, + limitRotation: true, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + flipEffect: { + setTranslate: Flip.setTranslate.bind(swiper), + setTransition: Flip.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'flip') return; + swiper.classNames.push(`${swiper.params.containerModifierClass}flip`); + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + const overwriteParams = { + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'flip') return; + swiper.flipEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'flip') return; + swiper.flipEffect.setTransition(duration); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/effect-flip/effect-flip.less b/static/libs/swiper-5.3.8/package/src/components/effect-flip/effect-flip.less new file mode 100644 index 0000000..3989cfb --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/effect-flip/effect-flip.less @@ -0,0 +1,20 @@ +.swiper-container-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/effect-flip/effect-flip.scss b/static/libs/swiper-5.3.8/package/src/components/effect-flip/effect-flip.scss new file mode 100644 index 0000000..3989cfb --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/effect-flip/effect-flip.scss @@ -0,0 +1,20 @@ +.swiper-container-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/hash-navigation/hash-navigation.js b/static/libs/swiper-5.3.8/package/src/components/hash-navigation/hash-navigation.js new file mode 100644 index 0000000..6feb731 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/hash-navigation/hash-navigation.js @@ -0,0 +1,101 @@ +import { window, document } from 'ssr-window'; +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +const HashNavigation = { + onHashCange() { + const swiper = this; + const newHash = document.location.hash.replace('#', ''); + const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash'); + if (newHash !== activeSlideHash) { + const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index(); + if (typeof newIndex === 'undefined') return; + swiper.slideTo(newIndex); + } + }, + setHash() { + const swiper = this; + if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '')); + } else { + const slide = swiper.slides.eq(swiper.activeIndex); + const hash = slide.attr('data-hash') || slide.attr('data-history'); + document.location.hash = hash || ''; + } + }, + init() { + const swiper = this; + if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return; + swiper.hashNavigation.initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides.eq(i); + const slideHash = slide.attr('data-hash') || slide.attr('data-history'); + if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) { + const index = slide.index(); + swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); + } + } + } + if (swiper.params.hashNavigation.watchState) { + $(window).on('hashchange', swiper.hashNavigation.onHashCange); + } + }, + destroy() { + const swiper = this; + if (swiper.params.hashNavigation.watchState) { + $(window).off('hashchange', swiper.hashNavigation.onHashCange); + } + }, +}; +export default { + name: 'hash-navigation', + params: { + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + hashNavigation: { + initialized: false, + init: HashNavigation.init.bind(swiper), + destroy: HashNavigation.destroy.bind(swiper), + setHash: HashNavigation.setHash.bind(swiper), + onHashCange: HashNavigation.onHashCange.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.hashNavigation.enabled) { + swiper.hashNavigation.init(); + } + }, + destroy() { + const swiper = this; + if (swiper.params.hashNavigation.enabled) { + swiper.hashNavigation.destroy(); + } + }, + transitionEnd() { + const swiper = this; + if (swiper.hashNavigation.initialized) { + swiper.hashNavigation.setHash(); + } + }, + slideChange() { + const swiper = this; + if (swiper.hashNavigation.initialized && swiper.params.cssMode) { + swiper.hashNavigation.setHash(); + } + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/history/history.js b/static/libs/swiper-5.3.8/package/src/components/history/history.js new file mode 100644 index 0000000..3c2675a --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/history/history.js @@ -0,0 +1,130 @@ +import { window } from 'ssr-window'; +import Utils from '../../utils/utils'; + +const History = { + init() { + const swiper = this; + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + const history = swiper.history; + history.initialized = true; + history.paths = History.getPathValues(); + if (!history.paths.key && !history.paths.value) return; + history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', swiper.history.setHistoryPopState); + } + }, + destroy() { + const swiper = this; + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', swiper.history.setHistoryPopState); + } + }, + setHistoryPopState() { + const swiper = this; + swiper.history.paths = History.getPathValues(); + swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false); + }, + getPathValues() { + const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { key, value }; + }, + setHistory(key, index) { + const swiper = this; + if (!swiper.history.initialized || !swiper.params.history.enabled) return; + const slide = swiper.slides.eq(index); + let value = History.slugify(slide.attr('data-history')); + if (!window.location.pathname.includes(key)) { + value = `${key}/${value}`; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ value }, null, value); + } else { + window.history.pushState({ value }, null, value); + } + }, + slugify(text) { + return text.toString() + .replace(/\s+/g, '-') + .replace(/[^\w-]+/g, '') + .replace(/--+/g, '-') + .replace(/^-+/, '') + .replace(/-+$/, ''); + }, + scrollToSlide(speed, value, runCallbacks) { + const swiper = this; + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides.eq(i); + const slideHistory = History.slugify(slide.attr('data-history')); + if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) { + const index = slide.index(); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }, +}; + +export default { + name: 'history', + params: { + history: { + enabled: false, + replaceState: false, + key: 'slides', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + history: { + init: History.init.bind(swiper), + setHistory: History.setHistory.bind(swiper), + setHistoryPopState: History.setHistoryPopState.bind(swiper), + scrollToSlide: History.scrollToSlide.bind(swiper), + destroy: History.destroy.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.history.enabled) { + swiper.history.init(); + } + }, + destroy() { + const swiper = this; + if (swiper.params.history.enabled) { + swiper.history.destroy(); + } + }, + transitionEnd() { + const swiper = this; + if (swiper.history.initialized) { + swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex); + } + }, + slideChange() { + const swiper = this; + if (swiper.history.initialized && swiper.params.cssMode) { + swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex); + } + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/keyboard/keyboard.js b/static/libs/swiper-5.3.8/package/src/components/keyboard/keyboard.js new file mode 100644 index 0000000..d3a3b66 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/keyboard/keyboard.js @@ -0,0 +1,117 @@ +import { window, document } from 'ssr-window'; +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +const Keyboard = { + handle(event) { + const swiper = this; + const { rtlTranslate: rtl } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + // Directions locks + if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) { + return false; + } + if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = swiper.$el.offset(); + if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft; + const swiperCoord = [ + [swiperOffset.left, swiperOffset.top], + [swiperOffset.left + swiper.width, swiperOffset.top], + [swiperOffset.left, swiperOffset.top + swiper.height], + [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height], + ]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if ( + point[0] >= 0 && point[0] <= windowWidth + && point[1] >= 0 && point[1] <= windowHeight + ) { + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (kc === 33 || kc === 34 || kc === 37 || kc === 39) { + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + } + if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext(); + if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev(); + } else { + if (kc === 33 || kc === 34 || kc === 38 || kc === 40) { + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + } + if (kc === 34 || kc === 40) swiper.slideNext(); + if (kc === 33 || kc === 38) swiper.slidePrev(); + } + swiper.emit('keyPress', kc); + return undefined; + }, + enable() { + const swiper = this; + if (swiper.keyboard.enabled) return; + $(document).on('keydown', swiper.keyboard.handle); + swiper.keyboard.enabled = true; + }, + disable() { + const swiper = this; + if (!swiper.keyboard.enabled) return; + $(document).off('keydown', swiper.keyboard.handle); + swiper.keyboard.enabled = false; + }, +}; + +export default { + name: 'keyboard', + params: { + keyboard: { + enabled: false, + onlyInViewport: true, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + keyboard: { + enabled: false, + enable: Keyboard.enable.bind(swiper), + disable: Keyboard.disable.bind(swiper), + handle: Keyboard.handle.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.keyboard.enabled) { + swiper.keyboard.enable(); + } + }, + destroy() { + const swiper = this; + if (swiper.keyboard.enabled) { + swiper.keyboard.disable(); + } + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/lazy/lazy.js b/static/libs/swiper-5.3.8/package/src/components/lazy/lazy.js new file mode 100644 index 0000000..3d1a6e6 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/lazy/lazy.js @@ -0,0 +1,215 @@ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +const Lazy = { + loadInSlide(index, loadInDuplicate = true) { + const swiper = this; + const params = swiper.params.lazy; + if (typeof index === 'undefined') return; + if (swiper.slides.length === 0) return; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + const $slideEl = isVirtual + ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`) + : swiper.slides.eq(index); + + let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`); + if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { + $images = $images.add($slideEl[0]); + } + if ($images.length === 0) return; + + $images.each((imageIndex, imageEl) => { + const $imageEl = $(imageEl); + $imageEl.addClass(params.loadingClass); + + const background = $imageEl.attr('data-background'); + const src = $imageEl.attr('data-src'); + const srcset = $imageEl.attr('data-srcset'); + const sizes = $imageEl.attr('data-sizes'); + + swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => { + if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return; + if (background) { + $imageEl.css('background-image', `url("${background}")`); + $imageEl.removeAttr('data-background'); + } else { + if (srcset) { + $imageEl.attr('srcset', srcset); + $imageEl.removeAttr('data-srcset'); + } + if (sizes) { + $imageEl.attr('sizes', sizes); + $imageEl.removeAttr('data-sizes'); + } + if (src) { + $imageEl.attr('src', src); + $imageEl.removeAttr('data-src'); + } + } + + $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); + $slideEl.find(`.${params.preloaderClass}`).remove(); + if (swiper.params.loop && loadInDuplicate) { + const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); + if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { + const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`); + swiper.lazy.loadInSlide(originalSlide.index(), false); + } else { + const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`); + swiper.lazy.loadInSlide(duplicatedSlide.index(), false); + } + } + swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]); + if (swiper.params.autoHeight) { + swiper.updateAutoHeight(); + } + }); + + swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]); + }); + }, + load() { + const swiper = this; + const { + $wrapperEl, params: swiperParams, slides, activeIndex, + } = swiper; + const isVirtual = swiper.virtual && swiperParams.virtual.enabled; + const params = swiperParams.lazy; + + let slidesPerView = swiperParams.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = 0; + } + + function slideExist(index) { + if (isVirtual) { + if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) { + return true; + } + } else if (slides[index]) return true; + return false; + } + function slideIndex(slideEl) { + if (isVirtual) { + return $(slideEl).attr('data-swiper-slide-index'); + } + return $(slideEl).index(); + } + + if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true; + if (swiper.params.watchSlidesVisibility) { + $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => { + const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index(); + swiper.lazy.loadInSlide(index); + }); + } else if (slidesPerView > 1) { + for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) { + if (slideExist(i)) swiper.lazy.loadInSlide(i); + } + } else { + swiper.lazy.loadInSlide(activeIndex); + } + if (params.loadPrevNext) { + if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) { + const amount = params.loadPrevNextAmount; + const spv = slidesPerView; + const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); + const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); + // Next Slides + for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) { + if (slideExist(i)) swiper.lazy.loadInSlide(i); + } + // Prev Slides + for (let i = minIndex; i < activeIndex; i += 1) { + if (slideExist(i)) swiper.lazy.loadInSlide(i); + } + } else { + const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`); + if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide)); + + const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`); + if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide)); + } + } + }, +}; + +export default { + name: 'lazy', + params: { + lazy: { + enabled: false, + loadPrevNext: false, + loadPrevNextAmount: 1, + loadOnTransitionStart: false, + + elementClass: 'swiper-lazy', + loadingClass: 'swiper-lazy-loading', + loadedClass: 'swiper-lazy-loaded', + preloaderClass: 'swiper-lazy-preloader', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + lazy: { + initialImageLoaded: false, + load: Lazy.load.bind(swiper), + loadInSlide: Lazy.loadInSlide.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.lazy.enabled && swiper.params.preloadImages) { + swiper.params.preloadImages = false; + } + }, + init() { + const swiper = this; + if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) { + swiper.lazy.load(); + } + }, + scroll() { + const swiper = this; + if (swiper.params.freeMode && !swiper.params.freeModeSticky) { + swiper.lazy.load(); + } + }, + resize() { + const swiper = this; + if (swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + }, + scrollbarDragMove() { + const swiper = this; + if (swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + }, + transitionStart() { + const swiper = this; + if (swiper.params.lazy.enabled) { + if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) { + swiper.lazy.load(); + } + } + }, + transitionEnd() { + const swiper = this; + if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { + swiper.lazy.load(); + } + }, + slideChange() { + const swiper = this; + if (swiper.params.lazy.enabled && swiper.params.cssMode) { + swiper.lazy.load(); + } + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/lazy/lazy.less b/static/libs/swiper-5.3.8/package/src/components/lazy/lazy.less new file mode 100644 index 0000000..caaf125 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/lazy/lazy.less @@ -0,0 +1,34 @@ +/* Preloader */ +:root { + /* + --swiper-preloader-color: var(--swiper-theme-color); + */ +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + animation: swiper-preloader-spin 1s infinite linear; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} + +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 100% { + transform: rotate(360deg); + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/lazy/lazy.scss b/static/libs/swiper-5.3.8/package/src/components/lazy/lazy.scss new file mode 100644 index 0000000..caaf125 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/lazy/lazy.scss @@ -0,0 +1,34 @@ +/* Preloader */ +:root { + /* + --swiper-preloader-color: var(--swiper-theme-color); + */ +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + animation: swiper-preloader-spin 1s infinite linear; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} + +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 100% { + transform: rotate(360deg); + } +} diff --git a/static/libs/swiper-5.3.8/package/src/components/mousewheel/mousewheel.js b/static/libs/swiper-5.3.8/package/src/components/mousewheel/mousewheel.js new file mode 100644 index 0000000..3fc4f62 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/mousewheel/mousewheel.js @@ -0,0 +1,424 @@ +import { window, document } from 'ssr-window'; +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +function isEventSupported() { + const eventName = 'onwheel'; + let isSupported = eventName in document; + + if (!isSupported) { + const element = document.createElement('div'); + element.setAttribute(eventName, 'return;'); + isSupported = typeof element[eventName] === 'function'; + } + + if (!isSupported + && document.implementation + && document.implementation.hasFeature + // always returns true in newer browsers as per the standard. + // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature + && document.implementation.hasFeature('', '') !== true + ) { + // This is the only way to test support for the `wheel` event in IE9+. + isSupported = document.implementation.hasFeature('Events.wheel', '3.0'); + } + + return isSupported; +} +const Mousewheel = { + lastScrollTime: Utils.now(), + lastEventBeforeSnap: undefined, + recentWheelEvents: [], + event() { + if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll'; + return isEventSupported() ? 'wheel' : 'mousewheel'; + }, + normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + + if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = (pX < 1) ? -1 : 1; + } + if (pY && !sY) { + sY = (pY < 1) ? -1 : 1; + } + + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY, + }; + }, + handleMouseEnter() { + const swiper = this; + swiper.mouseEntered = true; + }, + handleMouseLeave() { + const swiper = this; + swiper.mouseEntered = false; + }, + handle(event) { + let e = event; + const swiper = this; + const params = swiper.params.mousewheel; + + if (swiper.params.cssMode) { + e.preventDefault(); + } + + let target = swiper.$el; + if (swiper.params.mousewheel.eventsTarged !== 'container') { + target = $(swiper.params.mousewheel.eventsTarged); + } + if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true; + + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + + const data = Mousewheel.normalize(e); + + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor; + else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY; + else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + + if (delta === 0) return true; + + if (params.invert) delta = -delta; + + if (!swiper.params.freeMode) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: Utils.now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event, + }; + + // Keep the most recent events + const recentWheelEvents = swiper.mousewheel.recentWheelEvents; + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta) { + swiper.mousewheel.animateSlider(newEvent); + } + } else { + swiper.mousewheel.animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (swiper.mousewheel.releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) }; + const { lastEventBeforeSnap } = swiper.mousewheel; + const ignoreWheelEvents = lastEventBeforeSnap + && newEvent.time < lastEventBeforeSnap.time + 500 + && newEvent.delta <= lastEventBeforeSnap.delta + && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + swiper.mousewheel.lastEventBeforeSnap = undefined; + + if (swiper.params.loop) { + swiper.loopFix(); + } + let position = swiper.getTranslate() + (delta * params.sensitivity); + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + + if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) { + swiper.updateSlidesClasses(); + } + + if (swiper.params.freeModeSticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momuntum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(swiper.mousewheel.timeout); + swiper.mousewheel.timeout = undefined; + const recentWheelEvents = swiper.mousewheel.recentWheelEvents; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 + && newEvent.time - firstEvent.time < 500 + && firstEvent.delta - newEvent.delta >= 1 + && newEvent.delta <= 6 + ) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + swiper.mousewheel.lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.mousewheel.timeout = Utils.nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + if (!swiper.mousewheel.timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + swiper.mousewheel.timeout = Utils.nextTick(() => { + const snapToThreshold = 0.5; + swiper.mousewheel.lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) swiper.emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true; + } + } + + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + return false; + }, + animateSlider(newEvent) { + const swiper = this; + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + swiper.emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + swiper.emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + swiper.mousewheel.lastScrollTime = (new window.Date()).getTime(); + // Return false as a default + return false; + }, + releaseScroll(newEvent) { + const swiper = this; + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + }, + enable() { + const swiper = this; + const event = Mousewheel.event(); + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle); + return true; + } + if (!event) return false; + if (swiper.mousewheel.enabled) return false; + let target = swiper.$el; + if (swiper.params.mousewheel.eventsTarged !== 'container') { + target = $(swiper.params.mousewheel.eventsTarged); + } + target.on('mouseenter', swiper.mousewheel.handleMouseEnter); + target.on('mouseleave', swiper.mousewheel.handleMouseLeave); + target.on(event, swiper.mousewheel.handle); + swiper.mousewheel.enabled = true; + return true; + }, + disable() { + const swiper = this; + const event = Mousewheel.event(); + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle); + return true; + } + if (!event) return false; + if (!swiper.mousewheel.enabled) return false; + let target = swiper.$el; + if (swiper.params.mousewheel.eventsTarged !== 'container') { + target = $(swiper.params.mousewheel.eventsTarged); + } + target.off(event, swiper.mousewheel.handle); + swiper.mousewheel.enabled = false; + return true; + }, +}; + +export default { + name: 'mousewheel', + params: { + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarged: 'container', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + mousewheel: { + enabled: false, + enable: Mousewheel.enable.bind(swiper), + disable: Mousewheel.disable.bind(swiper), + handle: Mousewheel.handle.bind(swiper), + handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper), + handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper), + animateSlider: Mousewheel.animateSlider.bind(swiper), + releaseScroll: Mousewheel.releaseScroll.bind(swiper), + lastScrollTime: Utils.now(), + lastEventBeforeSnap: undefined, + recentWheelEvents: [], + }, + }); + }, + on: { + init() { + const swiper = this; + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + swiper.mousewheel.disable(); + } + if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable(); + }, + destroy() { + const swiper = this; + if (swiper.params.cssMode) { + swiper.mousewheel.enable(); + } + if (swiper.mousewheel.enabled) swiper.mousewheel.disable(); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/navigation/navigation.js b/static/libs/swiper-5.3.8/package/src/components/navigation/navigation.js new file mode 100644 index 0000000..2a10dc5 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/navigation/navigation.js @@ -0,0 +1,171 @@ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +const Navigation = { + update() { + // Update Navigation Buttons + const swiper = this; + const params = swiper.params.navigation; + + if (swiper.params.loop) return; + const { $nextEl, $prevEl } = swiper.navigation; + + if ($prevEl && $prevEl.length > 0) { + if (swiper.isBeginning) { + $prevEl.addClass(params.disabledClass); + } else { + $prevEl.removeClass(params.disabledClass); + } + $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + } + if ($nextEl && $nextEl.length > 0) { + if (swiper.isEnd) { + $nextEl.addClass(params.disabledClass); + } else { + $nextEl.removeClass(params.disabledClass); + } + $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + } + }, + onPrevClick(e) { + const swiper = this; + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop) return; + swiper.slidePrev(); + }, + onNextClick(e) { + const swiper = this; + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop) return; + swiper.slideNext(); + }, + init() { + const swiper = this; + const params = swiper.params.navigation; + if (!(params.nextEl || params.prevEl)) return; + + let $nextEl; + let $prevEl; + if (params.nextEl) { + $nextEl = $(params.nextEl); + if ( + swiper.params.uniqueNavElements + && typeof params.nextEl === 'string' + && $nextEl.length > 1 + && swiper.$el.find(params.nextEl).length === 1 + ) { + $nextEl = swiper.$el.find(params.nextEl); + } + } + if (params.prevEl) { + $prevEl = $(params.prevEl); + if ( + swiper.params.uniqueNavElements + && typeof params.prevEl === 'string' + && $prevEl.length > 1 + && swiper.$el.find(params.prevEl).length === 1 + ) { + $prevEl = swiper.$el.find(params.prevEl); + } + } + + if ($nextEl && $nextEl.length > 0) { + $nextEl.on('click', swiper.navigation.onNextClick); + } + if ($prevEl && $prevEl.length > 0) { + $prevEl.on('click', swiper.navigation.onPrevClick); + } + + Utils.extend(swiper.navigation, { + $nextEl, + nextEl: $nextEl && $nextEl[0], + $prevEl, + prevEl: $prevEl && $prevEl[0], + }); + }, + destroy() { + const swiper = this; + const { $nextEl, $prevEl } = swiper.navigation; + if ($nextEl && $nextEl.length) { + $nextEl.off('click', swiper.navigation.onNextClick); + $nextEl.removeClass(swiper.params.navigation.disabledClass); + } + if ($prevEl && $prevEl.length) { + $prevEl.off('click', swiper.navigation.onPrevClick); + $prevEl.removeClass(swiper.params.navigation.disabledClass); + } + }, +}; + +export default { + name: 'navigation', + params: { + navigation: { + nextEl: null, + prevEl: null, + + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + navigation: { + init: Navigation.init.bind(swiper), + update: Navigation.update.bind(swiper), + destroy: Navigation.destroy.bind(swiper), + onNextClick: Navigation.onNextClick.bind(swiper), + onPrevClick: Navigation.onPrevClick.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.navigation.init(); + swiper.navigation.update(); + }, + toEdge() { + const swiper = this; + swiper.navigation.update(); + }, + fromEdge() { + const swiper = this; + swiper.navigation.update(); + }, + destroy() { + const swiper = this; + swiper.navigation.destroy(); + }, + click(e) { + const swiper = this; + const { $nextEl, $prevEl } = swiper.navigation; + if ( + swiper.params.navigation.hideOnClick + && !$(e.target).is($prevEl) + && !$(e.target).is($nextEl) + ) { + let isHidden; + if ($nextEl) { + isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass); + } else if ($prevEl) { + isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + swiper.emit('navigationShow', swiper); + } else { + swiper.emit('navigationHide', swiper); + } + if ($nextEl) { + $nextEl.toggleClass(swiper.params.navigation.hiddenClass); + } + if ($prevEl) { + $prevEl.toggleClass(swiper.params.navigation.hiddenClass); + } + } + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/navigation/navigation.less b/static/libs/swiper-5.3.8/package/src/components/navigation/navigation.less new file mode 100644 index 0000000..96043fd --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/navigation/navigation.less @@ -0,0 +1,60 @@ +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, .swiper-button-next { + position: absolute; + top: 50%; + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(-1 * var(--swiper-navigation-size) / 2); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + text-transform: none; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-container-rtl .swiper-button-next { + &:after { + content: 'prev'; + } + left: 10px; + right: auto; +} +.swiper-button-next, +.swiper-container-rtl .swiper-button-prev { + &:after { + content: 'next'; + } + right: 10px; + left: auto; +} +.navigation-color-loop({ + .swiper-button-prev, + .swiper-button-next { + &.swiper-button-@{navColorName} { + --swiper-navigation-color: @navColorValue; + } + } +}); +.swiper-button-lock { + display: none; +} diff --git a/static/libs/swiper-5.3.8/package/src/components/navigation/navigation.scss b/static/libs/swiper-5.3.8/package/src/components/navigation/navigation.scss new file mode 100644 index 0000000..bdca5ef --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/navigation/navigation.scss @@ -0,0 +1,61 @@ +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, .swiper-button-next { + position: absolute; + top: 50%; + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(-1 * var(--swiper-navigation-size) / 2); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + text-transform: none; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-container-rtl .swiper-button-next { + &:after { + content: 'prev'; + } + left: 10px; + right: auto; +} +.swiper-button-next, +.swiper-container-rtl .swiper-button-prev { + &:after { + content: 'next'; + } + right: 10px; + left: auto; +} + +@each $navColorName, $navColorValue in $colors { + .swiper-button-prev, + .swiper-button-next { + &.swiper-button-#{$navColorName} { + --swiper-navigation-color: #{$navColorValue}; + } + } +} +.swiper-button-lock { + display: none; +} diff --git a/static/libs/swiper-5.3.8/package/src/components/pagination/pagination.js b/static/libs/swiper-5.3.8/package/src/components/pagination/pagination.js new file mode 100644 index 0000000..c392a3f --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/pagination/pagination.js @@ -0,0 +1,360 @@ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +const Pagination = { + update() { + // Render || Update Pagination bullets/items + const swiper = this; + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const $el = swiper.pagination.$el; + // Current/Total + let current; + const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); + if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) { + current -= (slidesLength - (swiper.loopedSlides * 2)); + } + if (current > total - 1) current -= total; + if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + } else { + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); + $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`); + if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { + swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex); + if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) { + swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (swiper.pagination.dynamicBulletIndex < 0) { + swiper.pagination.dynamicBulletIndex = 0; + } + } + firstIndex = current - swiper.pagination.dynamicBulletIndex; + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`); + if ($el.length > 1) { + bullets.each((index, bullet) => { + const $bullet = $(bullet); + const bulletIndex = $bullet.index(); + if (bulletIndex === current) { + $bullet.addClass(params.bulletActiveClass); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + $bullet.addClass(`${params.bulletActiveClass}-main`); + } + if (bulletIndex === firstIndex) { + $bullet + .prev() + .addClass(`${params.bulletActiveClass}-prev`) + .prev() + .addClass(`${params.bulletActiveClass}-prev-prev`); + } + if (bulletIndex === lastIndex) { + $bullet + .next() + .addClass(`${params.bulletActiveClass}-next`) + .next() + .addClass(`${params.bulletActiveClass}-next-next`); + } + } + }); + } else { + const $bullet = bullets.eq(current); + const bulletIndex = $bullet.index(); + $bullet.addClass(params.bulletActiveClass); + if (params.dynamicBullets) { + const $firstDisplayedBullet = bullets.eq(firstIndex); + const $lastDisplayedBullet = bullets.eq(lastIndex); + for (let i = firstIndex; i <= lastIndex; i += 1) { + bullets.eq(i).addClass(`${params.bulletActiveClass}-main`); + } + if (swiper.params.loop) { + if (bulletIndex >= bullets.length - params.dynamicMainBullets) { + for (let i = params.dynamicMainBullets; i >= 0; i -= 1) { + bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`); + } + bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`); + } else { + $firstDisplayedBullet + .prev() + .addClass(`${params.bulletActiveClass}-prev`) + .prev() + .addClass(`${params.bulletActiveClass}-prev-prev`); + $lastDisplayedBullet + .next() + .addClass(`${params.bulletActiveClass}-next`) + .next() + .addClass(`${params.bulletActiveClass}-next-next`); + } + } else { + $firstDisplayedBullet + .prev() + .addClass(`${params.bulletActiveClass}-prev`) + .prev() + .addClass(`${params.bulletActiveClass}-prev-prev`); + $lastDisplayedBullet + .next() + .addClass(`${params.bulletActiveClass}-next`) + .next() + .addClass(`${params.bulletActiveClass}-next-next`); + } + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize); + const offsetProp = rtl ? 'right' : 'left'; + bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`); + } + } + if (params.type === 'fraction') { + $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1)); + $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total)); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed); + } + if (params.type === 'custom' && params.renderCustom) { + $el.html(params.renderCustom(swiper, current + 1, total)); + swiper.emit('paginationRender', swiper, $el[0]); + } else { + swiper.emit('paginationUpdate', swiper, $el[0]); + } + $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + }, + render() { + // Render Container + const swiper = this; + const params = swiper.params.pagination; + if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + + const $el = swiper.pagination.$el; + let paginationHTML = ''; + if (params.type === 'bullets') { + const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + paginationHTML += `<${params.bulletElement} class="${params.bulletClass}">`; + } + } + $el.html(paginationHTML); + swiper.pagination.bullets = $el.find(`.${params.bulletClass}`); + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + + ' / ' + + ``; + } + $el.html(paginationHTML); + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + $el.html(paginationHTML); + } + if (params.type !== 'custom') { + swiper.emit('paginationRender', swiper.pagination.$el[0]); + } + }, + init() { + const swiper = this; + const params = swiper.params.pagination; + if (!params.el) return; + + let $el = $(params.el); + if ($el.length === 0) return; + + if ( + swiper.params.uniqueNavElements + && typeof params.el === 'string' + && $el.length > 1 + && swiper.$el.find(params.el).length === 1 + ) { + $el = swiper.$el.find(params.el); + } + + if (params.type === 'bullets' && params.clickable) { + $el.addClass(params.clickableClass); + } + + $el.addClass(params.modifierClass + params.type); + + if (params.type === 'bullets' && params.dynamicBullets) { + $el.addClass(`${params.modifierClass}${params.type}-dynamic`); + swiper.pagination.dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + $el.addClass(params.progressbarOppositeClass); + } + + if (params.clickable) { + $el.on('click', `.${params.bulletClass}`, function onClick(e) { + e.preventDefault(); + let index = $(this).index() * swiper.params.slidesPerGroup; + if (swiper.params.loop) index += swiper.loopedSlides; + swiper.slideTo(index); + }); + } + + Utils.extend(swiper.pagination, { + $el, + el: $el[0], + }); + }, + destroy() { + const swiper = this; + const params = swiper.params.pagination; + if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return; + const $el = swiper.pagination.$el; + + $el.removeClass(params.hiddenClass); + $el.removeClass(params.modifierClass + params.type); + if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass); + if (params.clickable) { + $el.off('click', `.${params.bulletClass}`); + } + }, +}; + +export default { + name: 'pagination', + params: { + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: (number) => number, + formatFractionTotal: (number) => number, + bulletClass: 'swiper-pagination-bullet', + bulletActiveClass: 'swiper-pagination-bullet-active', + modifierClass: 'swiper-pagination-', // NEW + currentClass: 'swiper-pagination-current', + totalClass: 'swiper-pagination-total', + hiddenClass: 'swiper-pagination-hidden', + progressbarFillClass: 'swiper-pagination-progressbar-fill', + progressbarOppositeClass: 'swiper-pagination-progressbar-opposite', + clickableClass: 'swiper-pagination-clickable', // NEW + lockClass: 'swiper-pagination-lock', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + pagination: { + init: Pagination.init.bind(swiper), + render: Pagination.render.bind(swiper), + update: Pagination.update.bind(swiper), + destroy: Pagination.destroy.bind(swiper), + dynamicBulletIndex: 0, + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.pagination.init(); + swiper.pagination.render(); + swiper.pagination.update(); + }, + activeIndexChange() { + const swiper = this; + if (swiper.params.loop) { + swiper.pagination.update(); + } else if (typeof swiper.snapIndex === 'undefined') { + swiper.pagination.update(); + } + }, + snapIndexChange() { + const swiper = this; + if (!swiper.params.loop) { + swiper.pagination.update(); + } + }, + slidesLengthChange() { + const swiper = this; + if (swiper.params.loop) { + swiper.pagination.render(); + swiper.pagination.update(); + } + }, + snapGridLengthChange() { + const swiper = this; + if (!swiper.params.loop) { + swiper.pagination.render(); + swiper.pagination.update(); + } + }, + destroy() { + const swiper = this; + swiper.pagination.destroy(); + }, + click(e) { + const swiper = this; + if ( + swiper.params.pagination.el + && swiper.params.pagination.hideOnClick + && swiper.pagination.$el.length > 0 + && !$(e.target).hasClass(swiper.params.pagination.bulletClass) + ) { + const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + swiper.emit('paginationShow', swiper); + } else { + swiper.emit('paginationHide', swiper); + } + swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass); + } + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/pagination/pagination.less b/static/libs/swiper-5.3.8/package/src/components/pagination/pagination.less new file mode 100644 index 0000000..8db644e --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/pagination/pagination.less @@ -0,0 +1,149 @@ +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0,0,0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } +} +/* Common Styles */ +.swiper-pagination-fraction, .swiper-pagination-custom, .swiper-container-horizontal > .swiper-pagination-bullets{ + bottom: 10px; + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: 8px; + height: 8px; + display: inline-block; + border-radius: 100%; + background: #000; + opacity: 0.2; + button& { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } +} +.swiper-pagination-bullet-active { + opacity: 1; + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-container-vertical { + > .swiper-pagination-bullets { + right: 10px; + top: 50%; + transform:translate3d(0px,-50%,0); + .swiper-pagination-bullet { + margin: 6px 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, 200ms top; + } + } + } +} +.swiper-container-horizontal { + > .swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 4px; + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: 200ms transform, 200ms left; + } + } + } + &.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, 200ms right; + } +} +/* Progress */ +.swiper-pagination-progressbar { + background: rgba(0,0,0,0.25); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-container-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-container-horizontal > &, + .swiper-container-vertical > &.swiper-pagination-progressbar-opposite { + width: 100%; + height: 4px; + left: 0; + top: 0; + } + .swiper-container-vertical > &, + .swiper-container-horizontal > &.swiper-pagination-progressbar-opposite { + width: 4px; + height: 100%; + left: 0; + top: 0; + } +} +.pagination-color-loop({ + .swiper-pagination-@{paginationColorName} { + --swiper-pagination-color: @paginationColorValue; + } +}); +.swiper-pagination-lock { + display: none; +} diff --git a/static/libs/swiper-5.3.8/package/src/components/pagination/pagination.scss b/static/libs/swiper-5.3.8/package/src/components/pagination/pagination.scss new file mode 100644 index 0000000..759331e --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/pagination/pagination.scss @@ -0,0 +1,149 @@ +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0,0,0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } +} +/* Common Styles */ +.swiper-pagination-fraction, .swiper-pagination-custom, .swiper-container-horizontal > .swiper-pagination-bullets{ + bottom: 10px; + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: 8px; + height: 8px; + display: inline-block; + border-radius: 100%; + background: #000; + opacity: 0.2; + @at-root button#{&} { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } +} +.swiper-pagination-bullet-active { + opacity: 1; + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-container-vertical { + > .swiper-pagination-bullets { + right: 10px; + top: 50%; + transform:translate3d(0px,-50%,0); + .swiper-pagination-bullet { + margin: 6px 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, 200ms top; + } + } + } +} +.swiper-container-horizontal { + > .swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 4px; + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: 200ms transform, 200ms left; + } + } + } + &.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, 200ms right; + } +} +/* Progress */ +.swiper-pagination-progressbar { + background: rgba(0,0,0,0.25); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-container-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-container-horizontal > &, + .swiper-container-vertical > &.swiper-pagination-progressbar-opposite { + width: 100%; + height: 4px; + left: 0; + top: 0; + } + .swiper-container-vertical > &, + .swiper-container-horizontal > &.swiper-pagination-progressbar-opposite { + width: 4px; + height: 100%; + left: 0; + top: 0; + } +} +@each $paginationColorName, $paginationColorValue in $colors { + .swiper-pagination-#{$paginationColorName} { + --swiper-pagination-color: #{$paginationColorValue}; + } +} +.swiper-pagination-lock { + display: none; +} diff --git a/static/libs/swiper-5.3.8/package/src/components/parallax/parallax.js b/static/libs/swiper-5.3.8/package/src/components/parallax/parallax.js new file mode 100644 index 0000000..6447d82 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/parallax/parallax.js @@ -0,0 +1,125 @@ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +const Parallax = { + setTransform(el, progress) { + const swiper = this; + const { rtl } = swiper; + + const $el = $(el); + const rtlFactor = rtl ? -1 : 1; + + const p = $el.attr('data-swiper-parallax') || '0'; + let x = $el.attr('data-swiper-parallax-x'); + let y = $el.attr('data-swiper-parallax-y'); + const scale = $el.attr('data-swiper-parallax-scale'); + const opacity = $el.attr('data-swiper-parallax-opacity'); + + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + + if ((x).indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if ((y).indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress))); + $el[0].style.opacity = currentOpacity; + } + if (typeof scale === 'undefined' || scale === null) { + $el.transform(`translate3d(${x}, ${y}, 0px)`); + } else { + const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress))); + $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`); + } + }, + setTranslate() { + const swiper = this; + const { + $el, slides, progress, snapGrid, + } = swiper; + $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') + .each((index, el) => { + swiper.parallax.setTransform(el, progress); + }); + slides.each((slideIndex, slideEl) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1)); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') + .each((index, el) => { + swiper.parallax.setTransform(el, slideProgress); + }); + }); + }, + setTransition(duration = this.params.speed) { + const swiper = this; + const { $el } = swiper; + $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') + .each((index, parallaxEl) => { + const $parallaxEl = $(parallaxEl); + let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + $parallaxEl.transition(parallaxDuration); + }); + }, +}; + +export default { + name: 'parallax', + params: { + parallax: { + enabled: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + parallax: { + setTransform: Parallax.setTransform.bind(swiper), + setTranslate: Parallax.setTranslate.bind(swiper), + setTransition: Parallax.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }, + init() { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.parallax.setTranslate(); + }, + setTranslate() { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.parallax.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.parallax.setTransition(duration); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/scrollbar/scrollbar.js b/static/libs/swiper-5.3.8/package/src/components/scrollbar/scrollbar.js new file mode 100644 index 0000000..aaee38b --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/scrollbar/scrollbar.js @@ -0,0 +1,333 @@ +import { document } from 'ssr-window'; +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; +import Support from '../../utils/support'; + +const Scrollbar = { + setTranslate() { + const swiper = this; + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { scrollbar, rtlTranslate: rtl, progress } = swiper; + const { + dragSize, trackSize, $dragEl, $el, + } = scrollbar; + const params = swiper.params.scrollbar; + + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + $dragEl.transform(`translate3d(${newPos}px, 0, 0)`); + $dragEl[0].style.width = `${newSize}px`; + } else { + $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`); + $dragEl[0].style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(swiper.scrollbar.timeout); + $el[0].style.opacity = 1; + swiper.scrollbar.timeout = setTimeout(() => { + $el[0].style.opacity = 0; + $el.transition(400); + }, 1000); + } + }, + setTransition(duration) { + const swiper = this; + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.$dragEl.transition(duration); + }, + updateSize() { + const swiper = this; + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + + const { scrollbar } = swiper; + const { $dragEl, $el } = scrollbar; + + $dragEl[0].style.width = ''; + $dragEl[0].style.height = ''; + const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight; + + const divider = swiper.size / swiper.virtualSize; + const moveDivider = divider * (trackSize / swiper.size); + let dragSize; + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + + if (swiper.isHorizontal()) { + $dragEl[0].style.width = `${dragSize}px`; + } else { + $dragEl[0].style.height = `${dragSize}px`; + } + + if (divider >= 1) { + $el[0].style.display = 'none'; + } else { + $el[0].style.display = ''; + } + if (swiper.params.scrollbar.hide) { + $el[0].style.opacity = 0; + } + Utils.extend(scrollbar, { + trackSize, + divider, + moveDivider, + dragSize, + }); + scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); + }, + getPointerPosition(e) { + const swiper = this; + if (swiper.isHorizontal()) { + return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX); + } + return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY); + }, + setDragPosition(e) { + const swiper = this; + const { scrollbar, rtlTranslate: rtl } = swiper; + const { + $el, + dragSize, + trackSize, + dragStartPos, + } = scrollbar; + + let positionRatio; + positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] + - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + + const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio); + + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + }, + onDragStart(e) { + const swiper = this; + const params = swiper.params.scrollbar; + const { scrollbar, $wrapperEl } = swiper; + const { $el, $dragEl } = scrollbar; + swiper.scrollbar.isTouched = true; + swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl) + ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + + $wrapperEl.transition(100); + $dragEl.transition(100); + scrollbar.setDragPosition(e); + + clearTimeout(swiper.scrollbar.dragTimeout); + + $el.transition(0); + if (params.hide) { + $el.css('opacity', 1); + } + if (swiper.params.cssMode) { + swiper.$wrapperEl.css('scroll-snap-type', 'none'); + } + swiper.emit('scrollbarDragStart', e); + }, + onDragMove(e) { + const swiper = this; + const { scrollbar, $wrapperEl } = swiper; + const { $el, $dragEl } = scrollbar; + + if (!swiper.scrollbar.isTouched) return; + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + scrollbar.setDragPosition(e); + $wrapperEl.transition(0); + $el.transition(0); + $dragEl.transition(0); + swiper.emit('scrollbarDragMove', e); + }, + onDragEnd(e) { + const swiper = this; + + const params = swiper.params.scrollbar; + const { scrollbar, $wrapperEl } = swiper; + const { $el } = scrollbar; + + if (!swiper.scrollbar.isTouched) return; + swiper.scrollbar.isTouched = false; + if (swiper.params.cssMode) { + swiper.$wrapperEl.css('scroll-snap-type', ''); + $wrapperEl.transition(''); + } + if (params.hide) { + clearTimeout(swiper.scrollbar.dragTimeout); + swiper.scrollbar.dragTimeout = Utils.nextTick(() => { + $el.css('opacity', 0); + $el.transition(400); + }, 1000); + } + swiper.emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + }, + enableDraggable() { + const swiper = this; + if (!swiper.params.scrollbar.el) return; + const { + scrollbar, touchEventsTouch, touchEventsDesktop, params, + } = swiper; + const $el = scrollbar.$el; + const target = $el[0]; + const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; + const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + if (!Support.touch) { + target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); + document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); + document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); + } else { + target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener); + target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener); + target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener); + } + }, + disableDraggable() { + const swiper = this; + if (!swiper.params.scrollbar.el) return; + const { + scrollbar, touchEventsTouch, touchEventsDesktop, params, + } = swiper; + const $el = scrollbar.$el; + const target = $el[0]; + const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; + const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + if (!Support.touch) { + target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); + document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); + document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); + } else { + target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener); + target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener); + target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener); + } + }, + init() { + const swiper = this; + if (!swiper.params.scrollbar.el) return; + const { scrollbar, $el: $swiperEl } = swiper; + const params = swiper.params.scrollbar; + + let $el = $(params.el); + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { + $el = $swiperEl.find(params.el); + } + + let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`); + if ($dragEl.length === 0) { + $dragEl = $(`
      `); + $el.append($dragEl); + } + + Utils.extend(scrollbar, { + $el, + el: $el[0], + $dragEl, + dragEl: $dragEl[0], + }); + + if (params.draggable) { + scrollbar.enableDraggable(); + } + }, + destroy() { + const swiper = this; + swiper.scrollbar.disableDraggable(); + }, +}; + +export default { + name: 'scrollbar', + params: { + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + scrollbar: { + init: Scrollbar.init.bind(swiper), + destroy: Scrollbar.destroy.bind(swiper), + updateSize: Scrollbar.updateSize.bind(swiper), + setTranslate: Scrollbar.setTranslate.bind(swiper), + setTransition: Scrollbar.setTransition.bind(swiper), + enableDraggable: Scrollbar.enableDraggable.bind(swiper), + disableDraggable: Scrollbar.disableDraggable.bind(swiper), + setDragPosition: Scrollbar.setDragPosition.bind(swiper), + getPointerPosition: Scrollbar.getPointerPosition.bind(swiper), + onDragStart: Scrollbar.onDragStart.bind(swiper), + onDragMove: Scrollbar.onDragMove.bind(swiper), + onDragEnd: Scrollbar.onDragEnd.bind(swiper), + isTouched: false, + timeout: null, + dragTimeout: null, + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.scrollbar.init(); + swiper.scrollbar.updateSize(); + swiper.scrollbar.setTranslate(); + }, + update() { + const swiper = this; + swiper.scrollbar.updateSize(); + }, + resize() { + const swiper = this; + swiper.scrollbar.updateSize(); + }, + observerUpdate() { + const swiper = this; + swiper.scrollbar.updateSize(); + }, + setTranslate() { + const swiper = this; + swiper.scrollbar.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + swiper.scrollbar.setTransition(duration); + }, + destroy() { + const swiper = this; + swiper.scrollbar.destroy(); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/scrollbar/scrollbar.less b/static/libs/swiper-5.3.8/package/src/components/scrollbar/scrollbar.less new file mode 100644 index 0000000..abe1843 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/scrollbar/scrollbar.less @@ -0,0 +1,38 @@ +/* Scrollbar */ +.swiper-scrollbar { + border-radius: 10px; + position: relative; + -ms-touch-action: none; + background: rgba(0,0,0,0.1); + .swiper-container-horizontal > & { + position: absolute; + left: 1%; + bottom: 3px; + z-index: 50; + height: 5px; + width: 98%; + } + .swiper-container-vertical > & { + position: absolute; + right: 3px; + top: 1%; + z-index: 50; + width: 5px; + height: 98%; + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: rgba(0,0,0,0.5); + border-radius: 10px; + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/package/src/components/scrollbar/scrollbar.scss b/static/libs/swiper-5.3.8/package/src/components/scrollbar/scrollbar.scss new file mode 100644 index 0000000..abe1843 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/scrollbar/scrollbar.scss @@ -0,0 +1,38 @@ +/* Scrollbar */ +.swiper-scrollbar { + border-radius: 10px; + position: relative; + -ms-touch-action: none; + background: rgba(0,0,0,0.1); + .swiper-container-horizontal > & { + position: absolute; + left: 1%; + bottom: 3px; + z-index: 50; + height: 5px; + width: 98%; + } + .swiper-container-vertical > & { + position: absolute; + right: 3px; + top: 1%; + z-index: 50; + width: 5px; + height: 98%; + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: rgba(0,0,0,0.5); + border-radius: 10px; + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/package/src/components/thumbs/thumbs.js b/static/libs/swiper-5.3.8/package/src/components/thumbs/thumbs.js new file mode 100644 index 0000000..ad055e7 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/thumbs/thumbs.js @@ -0,0 +1,211 @@ +import Utils from '../../utils/utils'; +import $ from '../../utils/dom'; + +const Thumbs = { + init() { + const swiper = this; + const { thumbs: thumbsParams } = swiper.params; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Utils.extend(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false, + }); + Utils.extend(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false, + }); + } else if (Utils.isObject(thumbsParams.swiper)) { + swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, { + watchSlidesVisibility: true, + watchSlidesProgress: true, + slideToClickedSlide: false, + })); + swiper.thumbs.swiperCreated = true; + } + swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick); + }, + onThumbClick() { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + let currentIndex = swiper.activeIndex; + if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) { + swiper.loopFix(); + // eslint-disable-next-line + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + currentIndex = swiper.activeIndex; + } + const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); + const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); + if (typeof prevIndex === 'undefined') slideToIndex = nextIndex; + else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex; + else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex; + else slideToIndex = prevIndex; + } + swiper.slideTo(slideToIndex); + }, + update(initial) { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' + ? thumbsSwiper.slidesPerViewDynamic() + : thumbsSwiper.params.slidesPerView; + + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + let currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) { + thumbsSwiper.loopFix(); + // eslint-disable-next-line + thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft; + currentThumbsIndex = thumbsSwiper.activeIndex; + } + // Find actual thumbs index to slide to + const prevThumbsIndex = thumbsSwiper.slides + .eq(currentThumbsIndex) + .prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0) + .index(); + const nextThumbsIndex = thumbsSwiper.slides + .eq(currentThumbsIndex) + .nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0) + .index(); + if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex; + else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex; + else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex; + else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex; + else newThumbsIndex = prevThumbsIndex; + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - slidesPerView + 1; + } + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + + thumbsToActivate = Math.floor(thumbsToActivate); + + thumbsSwiper.slides.removeClass(thumbActiveClass); + if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) { + for (let i = 0; i < thumbsToActivate; i += 1) { + thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass); + } + } + }, +}; +export default { + name: 'thumbs', + params: { + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-container-thumbs', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + thumbs: { + swiper: null, + init: Thumbs.init.bind(swiper), + update: Thumbs.update.bind(swiper), + onThumbClick: Thumbs.onThumbClick.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + const { thumbs } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + swiper.thumbs.init(); + swiper.thumbs.update(true); + }, + slideChange() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + update() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + resize() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + observerUpdate() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + setTransition(duration) { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + thumbsSwiper.setTransition(duration); + }, + beforeDestroy() { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + if (swiper.thumbs.swiperCreated && thumbsSwiper) { + thumbsSwiper.destroy(); + } + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/thumbs/thumbs.less b/static/libs/swiper-5.3.8/package/src/components/thumbs/thumbs.less new file mode 100644 index 0000000..05ac723 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/thumbs/thumbs.less @@ -0,0 +1,5 @@ +.swiper-container-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/package/src/components/thumbs/thumbs.scss b/static/libs/swiper-5.3.8/package/src/components/thumbs/thumbs.scss new file mode 100644 index 0000000..05ac723 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/thumbs/thumbs.scss @@ -0,0 +1,5 @@ +.swiper-container-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/package/src/components/virtual/virtual.js b/static/libs/swiper-5.3.8/package/src/components/virtual/virtual.js new file mode 100644 index 0000000..010b633 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/virtual/virtual.js @@ -0,0 +1,245 @@ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +const Virtual = { + update(force) { + const swiper = this; + const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params; + const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + renderSlide, + offset: previousOffset, + } = swiper.virtual; + swiper.updateActiveIndex(); + const activeIndex = swiper.activeIndex || 0; + + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right'; + else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore; + slidesBefore = slidesPerGroup + addSlidesAfter; + } + const from = Math.max((activeIndex || 0) - slidesBefore, 0); + const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1); + const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + + Utils.extend(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + }); + + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + if (swiper.lazy && swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + } + + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.css(offsetProp, `${offset}px`); + } + swiper.updateProgress(); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: (function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }()), + }); + onRendered(); + return; + } + const prependIndexes = []; + const appendIndexes = []; + if (force) { + swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove(); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove(); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + if (i >= from && i <= to) { + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(i); + } else { + if (i > previousTo) appendIndexes.push(i); + if (i < previousFrom) prependIndexes.push(i); + } + } + } + appendIndexes.forEach((index) => { + swiper.$wrapperEl.append(renderSlide(slides[index], index)); + }); + prependIndexes.sort((a, b) => b - a).forEach((index) => { + swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); + }); + swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`); + onRendered(); + }, + renderSlide(slide, index) { + const swiper = this; + const params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + const $slideEl = params.renderSlide + ? $(params.renderSlide.call(swiper, slide, index)) + : $(`
      ${slide}
      `); + if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index); + if (params.cache) swiper.virtual.cache[index] = $slideEl; + return $slideEl; + }, + appendSlide(slides) { + const swiper = this; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + swiper.virtual.update(true); + }, + prependSlide(slides) { + const swiper = this; + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach((cachedIndex) => { + const $cachedEl = cache[cachedIndex]; + const cachedElIndex = $cachedEl.attr('data-swiper-slide-index'); + if (cachedElIndex) { + $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl; + }); + swiper.virtual.cache = newCache; + } + swiper.virtual.update(true); + swiper.slideTo(newActiveIndex, 0); + }, + removeSlide(slidesIndexes) { + const swiper = this; + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + } + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + swiper.virtual.slides.splice(slidesIndexes, 1); + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + } + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + swiper.virtual.update(true); + swiper.slideTo(activeIndex, 0); + }, + removeAllSlides() { + const swiper = this; + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + swiper.virtual.update(true); + swiper.slideTo(0, 0); + }, +}; + +export default { + name: 'virtual', + params: { + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + addSlidesBefore: 0, + addSlidesAfter: 0, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + virtual: { + update: Virtual.update.bind(swiper), + appendSlide: Virtual.appendSlide.bind(swiper), + prependSlide: Virtual.prependSlide.bind(swiper), + removeSlide: Virtual.removeSlide.bind(swiper), + removeAllSlides: Virtual.removeAllSlides.bind(swiper), + renderSlide: Virtual.renderSlide.bind(swiper), + slides: swiper.params.virtual.slides, + cache: {}, + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (!swiper.params.virtual.enabled) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + const overwriteParams = { + watchSlidesProgress: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + + if (!swiper.params.initialSlide) { + swiper.virtual.update(); + } + }, + setTranslate() { + const swiper = this; + if (!swiper.params.virtual.enabled) return; + swiper.virtual.update(); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/zoom/zoom.js b/static/libs/swiper-5.3.8/package/src/components/zoom/zoom.js new file mode 100644 index 0000000..1e67745 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/zoom/zoom.js @@ -0,0 +1,559 @@ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; +import Device from '../../utils/device'; +import Support from '../../utils/support'; + +const Zoom = { + // Calc Scale From Multi-touches + getDistanceBetweenTouches(e) { + if (e.targetTouches.length < 2) return 1; + const x1 = e.targetTouches[0].pageX; + const y1 = e.targetTouches[0].pageY; + const x2 = e.targetTouches[1].pageX; + const y2 = e.targetTouches[1].pageY; + const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2)); + return distance; + }, + // Events + onGestureStart(e) { + const swiper = this; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const { gesture } = zoom; + zoom.fakeGestureTouched = false; + zoom.fakeGestureMoved = false; + if (!Support.gestures) { + if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) { + return; + } + zoom.fakeGestureTouched = true; + gesture.scaleStart = Zoom.getDistanceBetweenTouches(e); + } + if (!gesture.$slideEl || !gesture.$slideEl.length) { + gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`); + if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target'); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + if (gesture.$imageWrapEl.length === 0) { + gesture.$imageEl = undefined; + return; + } + } + if (gesture.$imageEl) { + gesture.$imageEl.transition(0); + } + swiper.zoom.isScaling = true; + }, + onGestureChange(e) { + const swiper = this; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const { gesture } = zoom; + if (!Support.gestures) { + if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) { + return; + } + zoom.fakeGestureMoved = true; + gesture.scaleMove = Zoom.getDistanceBetweenTouches(e); + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + if (Support.gestures) { + zoom.scale = e.scale * zoom.currentScale; + } else { + zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale; + } + if (zoom.scale > gesture.maxRatio) { + zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5); + } + if (zoom.scale < params.minRatio) { + zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5); + } + gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`); + }, + onGestureEnd(e) { + const swiper = this; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const { gesture } = zoom; + if (!Support.gestures) { + if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) { + return; + } + if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) { + return; + } + zoom.fakeGestureTouched = false; + zoom.fakeGestureMoved = false; + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`); + zoom.currentScale = zoom.scale; + zoom.isScaling = false; + if (zoom.scale === 1) gesture.$slideEl = undefined; + }, + onTouchStart(e) { + const swiper = this; + const zoom = swiper.zoom; + const { gesture, image } = zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + if (image.isTouched) return; + if (Device.android) e.preventDefault(); + image.isTouched = true; + image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; + image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; + }, + onTouchMove(e) { + const swiper = this; + const zoom = swiper.zoom; + const { gesture, image, velocity } = zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + swiper.allowClick = false; + if (!image.isTouched || !gesture.$slideEl) return; + + if (!image.isMoved) { + image.width = gesture.$imageEl[0].offsetWidth; + image.height = gesture.$imageEl[0].offsetHeight; + image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0; + image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0; + gesture.slideWidth = gesture.$slideEl[0].offsetWidth; + gesture.slideHeight = gesture.$slideEl[0].offsetHeight; + gesture.$imageWrapEl.transition(0); + if (swiper.rtl) { + image.startX = -image.startX; + image.startY = -image.startY; + } + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + + if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; + + image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); + image.maxX = -image.minX; + image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); + image.maxY = -image.minY; + + image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; + image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; + + if (!image.isMoved && !zoom.isScaling) { + if ( + swiper.isHorizontal() + && ( + (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x) + || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x) + ) + ) { + image.isTouched = false; + return; + } if ( + !swiper.isHorizontal() + && ( + (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y) + || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y) + ) + ) { + image.isTouched = false; + return; + } + } + e.preventDefault(); + e.stopPropagation(); + + image.isMoved = true; + image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX; + image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY; + + if (image.currentX < image.minX) { + image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8); + } + if (image.currentX > image.maxX) { + image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8); + } + + if (image.currentY < image.minY) { + image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8); + } + if (image.currentY > image.maxY) { + image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8); + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + + gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); + }, + onTouchEnd() { + const swiper = this; + const zoom = swiper.zoom; + const { gesture, image, velocity } = zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + + image.currentX = newPositionX; + image.currentY = newPositionY; + + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); + image.maxX = -image.minX; + image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + + gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); + }, + onTransitionEnd() { + const swiper = this; + const zoom = swiper.zoom; + const { gesture } = zoom; + if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) { + if (gesture.$imageEl) { + gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); + } + if (gesture.$imageWrapEl) { + gesture.$imageWrapEl.transform('translate3d(0,0,0)'); + } + + zoom.scale = 1; + zoom.currentScale = 1; + + gesture.$slideEl = undefined; + gesture.$imageEl = undefined; + gesture.$imageWrapEl = undefined; + } + }, + // Toggle Zoom + toggle(e) { + const swiper = this; + const zoom = swiper.zoom; + + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoom.out(); + } else { + // Zoom In + zoom.in(e); + } + }, + in(e) { + const swiper = this; + + const zoom = swiper.zoom; + const params = swiper.params.zoom; + const { gesture, image } = zoom; + + if (!gesture.$slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); + } else { + gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + } + gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target'); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + + gesture.$slideEl.addClass(`${params.zoomedSlideClass}`); + + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; + touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + + zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + if (e) { + slideWidth = gesture.$slideEl[0].offsetWidth; + slideHeight = gesture.$slideEl[0].offsetHeight; + offsetX = gesture.$slideEl.offset().left; + offsetY = gesture.$slideEl.offset().top; + diffX = (offsetX + (slideWidth / 2)) - touchX; + diffY = (offsetY + (slideHeight / 2)) - touchY; + + imageWidth = gesture.$imageEl[0].offsetWidth; + imageHeight = gesture.$imageEl[0].offsetHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + + translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0); + translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`); + gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`); + }, + out() { + const swiper = this; + + const zoom = swiper.zoom; + const params = swiper.params.zoom; + const { gesture } = zoom; + + if (!gesture.$slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); + } else { + gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + } + gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target'); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + + zoom.scale = 1; + zoom.currentScale = 1; + gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); + gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); + gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`); + gesture.$slideEl = undefined; + }, + // Attach/Detach Events + enable() { + const swiper = this; + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + + const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; + const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true; + + const slideSelector = `.${swiper.params.slideClass}`; + + // Scale image + if (Support.gestures) { + swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener); + swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener); + } else if (swiper.touchEvents.start === 'touchstart') { + swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture); + swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener); + if (swiper.touchEvents.cancel) { + swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener); + } + } + + // Move image + swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture); + }, + disable() { + const swiper = this; + const zoom = swiper.zoom; + if (!zoom.enabled) return; + + swiper.zoom.enabled = false; + + const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; + const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true; + + const slideSelector = `.${swiper.params.slideClass}`; + + // Scale image + if (Support.gestures) { + swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener); + swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener); + } else if (swiper.touchEvents.start === 'touchstart') { + swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture); + swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener); + if (swiper.touchEvents.cancel) { + swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener); + } + } + + // Move image + swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture); + }, +}; + +export default { + name: 'zoom', + params: { + zoom: { + enabled: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed', + }, + }, + create() { + const swiper = this; + const zoom = { + enabled: false, + scale: 1, + currentScale: 1, + isScaling: false, + gesture: { + $slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + $imageEl: undefined, + $imageWrapEl: undefined, + maxRatio: 3, + }, + image: { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {}, + }, + velocity: { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined, + }, + }; + + ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => { + zoom[methodName] = Zoom[methodName].bind(swiper); + }); + Utils.extend(swiper, { + zoom, + }); + + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined; + const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined; + swiper.emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.zoom.enabled) { + swiper.zoom.enable(); + } + }, + destroy() { + const swiper = this; + swiper.zoom.disable(); + }, + touchStart(e) { + const swiper = this; + if (!swiper.zoom.enabled) return; + swiper.zoom.onTouchStart(e); + }, + touchEnd(e) { + const swiper = this; + if (!swiper.zoom.enabled) return; + swiper.zoom.onTouchEnd(e); + }, + doubleTap(e) { + const swiper = this; + if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + swiper.zoom.toggle(e); + } + }, + transitionEnd() { + const swiper = this; + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + swiper.zoom.onTransitionEnd(); + } + }, + slideChange() { + const swiper = this; + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + swiper.zoom.onTransitionEnd(); + } + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/components/zoom/zoom.less b/static/libs/swiper-5.3.8/package/src/components/zoom/zoom.less new file mode 100644 index 0000000..50b5305 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/zoom/zoom.less @@ -0,0 +1,18 @@ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, > svg, > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} + +.swiper-slide-zoomed { + cursor: move; +} diff --git a/static/libs/swiper-5.3.8/package/src/components/zoom/zoom.scss b/static/libs/swiper-5.3.8/package/src/components/zoom/zoom.scss new file mode 100644 index 0000000..50b5305 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/components/zoom/zoom.scss @@ -0,0 +1,18 @@ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, > svg, > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} + +.swiper-slide-zoomed { + cursor: move; +} diff --git a/static/libs/swiper-5.3.8/package/src/icons/font/swiper-icons.ttf b/static/libs/swiper-5.3.8/package/src/icons/font/swiper-icons.ttf new file mode 100644 index 0000000..e89be04 Binary files /dev/null and b/static/libs/swiper-5.3.8/package/src/icons/font/swiper-icons.ttf differ diff --git a/static/libs/swiper-5.3.8/package/src/icons/font/swiper-icons.woff b/static/libs/swiper-5.3.8/package/src/icons/font/swiper-icons.woff new file mode 100644 index 0000000..6b11edd Binary files /dev/null and b/static/libs/swiper-5.3.8/package/src/icons/font/swiper-icons.woff differ diff --git a/static/libs/swiper-5.3.8/package/src/icons/font/swiper-icons.woff2 b/static/libs/swiper-5.3.8/package/src/icons/font/swiper-icons.woff2 new file mode 100644 index 0000000..f48fa0e Binary files /dev/null and b/static/libs/swiper-5.3.8/package/src/icons/font/swiper-icons.woff2 differ diff --git a/static/libs/swiper-5.3.8/package/src/icons/svg/next.svg b/static/libs/swiper-5.3.8/package/src/icons/svg/next.svg new file mode 100644 index 0000000..453a99f --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/icons/svg/next.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/libs/swiper-5.3.8/package/src/icons/svg/prev.svg b/static/libs/swiper-5.3.8/package/src/icons/svg/prev.svg new file mode 100644 index 0000000..e639123 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/icons/svg/prev.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/libs/swiper-5.3.8/package/src/less/mixins.less b/static/libs/swiper-5.3.8/package/src/less/mixins.less new file mode 100644 index 0000000..f8fedd5 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/less/mixins.less @@ -0,0 +1,24 @@ +@plugin './plugin.js'; +.navigation-color-loop(@ruleset) when (length( @colors ) >= 1) { + @length: length( @colors ) ; + .looper( 1 ) ; + .looper( @index ) when ( @index <= @length ) and (length(extract( @colors, @index )) = 2) { + @navPair: extract( @colors, @index ); + @navColorName: extract( @navPair, 1 ) ; + @navColorValue: extract( @navPair, 2 ) ; + @ruleset(); + .looper( @index + 1 ) ; + } +} + +.pagination-color-loop(@ruleset) when (length( @colors ) >= 1) { + @length: length( @colors ) ; + .looper( 1 ) ; + .looper( @index ) when ( @index <= @length ) and (length(extract( @colors, @index )) = 2) { + @paginationPair: extract( @colors, @index ); + @paginationColorName: extract( @paginationPair, 1 ) ; + @paginationColorValue: extract( @paginationPair, 2 ) ; + @ruleset(); + .looper( @index + 1 ) ; + } +} diff --git a/static/libs/swiper-5.3.8/package/src/less/plugin.js b/static/libs/swiper-5.3.8/package/src/less/plugin.js new file mode 100644 index 0000000..0e310f5 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/less/plugin.js @@ -0,0 +1,17 @@ +const fs = require('fs'); + +function base64Encode(file) { + // read binary data + const bitmap = fs.readFileSync(file); + // convert binary data to base64 encoded string + return Buffer.from(bitmap).toString('base64'); +} + +module.exports = { + install(less, pluginManager, functions) { + functions.add('swiperIconsFont', () => { + const iconsFontBase64 = base64Encode('./src/icons/font/swiper-icons.woff'); + return iconsFontBase64; + }); + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/modules/browser/browser.js b/static/libs/swiper-5.3.8/package/src/modules/browser/browser.js new file mode 100644 index 0000000..be8a386 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/modules/browser/browser.js @@ -0,0 +1,11 @@ +import Browser from '../../utils/browser'; + +export default { + name: 'browser', + proto: { + browser: Browser, + }, + static: { + browser: Browser, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/modules/device/device.js b/static/libs/swiper-5.3.8/package/src/modules/device/device.js new file mode 100644 index 0000000..d4b31cc --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/modules/device/device.js @@ -0,0 +1,11 @@ +import Device from '../../utils/device'; + +export default { + name: 'device', + proto: { + device: Device, + }, + static: { + device: Device, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/modules/observer/observer.js b/static/libs/swiper-5.3.8/package/src/modules/observer/observer.js new file mode 100644 index 0000000..1bf4131 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/modules/observer/observer.js @@ -0,0 +1,90 @@ +import { window } from 'ssr-window'; +import Utils from '../../utils/utils'; +import Support from '../../utils/support'; + +const Observer = { + func: window.MutationObserver || window.WebkitMutationObserver, + attach(target, options = {}) { + const swiper = this; + + const ObserverFunc = Observer.func; + const observer = new ObserverFunc((mutations) => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (mutations.length === 1) { + swiper.emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + swiper.emit('observerUpdate', mutations[0]); + }; + + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData, + }); + + swiper.observer.observers.push(observer); + }, + init() { + const swiper = this; + if (!Support.observer || !swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = swiper.$el.parents(); + for (let i = 0; i < containerParents.length; i += 1) { + swiper.observer.attach(containerParents[i]); + } + } + // Observe container + swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren }); + + // Observe wrapper + swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false }); + }, + destroy() { + const swiper = this; + swiper.observer.observers.forEach((observer) => { + observer.disconnect(); + }); + swiper.observer.observers = []; + }, +}; + +export default { + name: 'observer', + params: { + observer: false, + observeParents: false, + observeSlideChildren: false, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + observer: { + init: Observer.init.bind(swiper), + attach: Observer.attach.bind(swiper), + destroy: Observer.destroy.bind(swiper), + observers: [], + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.observer.init(); + }, + destroy() { + const swiper = this; + swiper.observer.destroy(); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/modules/resize/resize.js b/static/libs/swiper-5.3.8/package/src/modules/resize/resize.js new file mode 100644 index 0000000..4f14b3d --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/modules/resize/resize.js @@ -0,0 +1,37 @@ +import { window } from 'ssr-window'; +import Utils from '../../utils/utils'; + +export default { + name: 'resize', + create() { + const swiper = this; + Utils.extend(swiper, { + resize: { + resizeHandler() { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + swiper.emit('beforeResize'); + swiper.emit('resize'); + }, + orientationChangeHandler() { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + swiper.emit('orientationchange'); + }, + }, + }); + }, + on: { + init() { + const swiper = this; + // Emit resize + window.addEventListener('resize', swiper.resize.resizeHandler); + + // Emit orientationchange + window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler); + }, + destroy() { + const swiper = this; + window.removeEventListener('resize', swiper.resize.resizeHandler); + window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/modules/support/support.js b/static/libs/swiper-5.3.8/package/src/modules/support/support.js new file mode 100644 index 0000000..05e61da --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/modules/support/support.js @@ -0,0 +1,11 @@ +import Support from '../../utils/support'; + +export default { + name: 'support', + proto: { + support: Support, + }, + static: { + support: Support, + }, +}; diff --git a/static/libs/swiper-5.3.8/package/src/scss/functions.scss b/static/libs/swiper-5.3.8/package/src/scss/functions.scss new file mode 100644 index 0000000..14bae70 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/scss/functions.scss @@ -0,0 +1,60 @@ +/// Urlencode the SVG string +/// @param {String} $svg - SVG image to encode +/// @return {String} - Encoded SVG data uri +@function swiper-svg-uri($svg) { + $encoded: ''; + $chunkSize: 2048; + $index: 0; + $loops: ceil(str-length($svg) / $chunkSize); + + $map: ( + "%": "%25", + "<": "%3C", + ">": "%3E", + " ": "%20", + "!": "%21", + "*": "%2A", + '"': "%22", + ";": "%3B", + ":": "%3A", + "@": "%40", + "&": "%26", + "=": "%3D", + "+": "%2B", + "$": "%24", + ",": "%2C", + "/": "%2F", + "?": "%3F", + "#": "%23", + "[": "%5B", + "]": "%5D" + ); + + @for $i from 1 through $loops { + $chunk: str-slice($svg, $index, $index + $chunkSize - 1); + @each $search, $replace in $map { + $chunk: swiper-str-replace($chunk, $search, $replace); + } + $encoded: #{$encoded}#{$chunk}; + $index: $index + $chunkSize; + } + + @return url("data:image/svg+xml;charset=utf-8,#{$encoded}"); +} + +/// Replace `$search` with `$replace` in `$string` +/// @author Hugo Giraudel +/// @link http://sassmeister.com/gist/1b4f2da5527830088e4d +/// @param {String} $string - Initial string +/// @param {String} $search - Substring to replace +/// @param {String} $replace ('') - New value +/// @return {String} - Updated string +@function swiper-str-replace($string, $search, $replace: '') { + $index: str-index($string, $search); + + @if $index { + @return str-slice($string, 1, $index - 1) + $replace + swiper-str-replace(str-slice($string, $index + str-length($search)), $search, $replace); + } + + @return $string; +} diff --git a/static/libs/swiper-5.3.8/package/src/swiper.js b/static/libs/swiper-5.3.8/package/src/swiper.js new file mode 100644 index 0000000..b4984da --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/swiper.js @@ -0,0 +1,29 @@ +// Swiper Class +import Swiper from './components/core/core-class'; + +// Core Modules +import Device from './modules/device/device'; +import Support from './modules/support/support'; +import Browser from './modules/browser/browser'; +import Resize from './modules/resize/resize'; +import Observer from './modules/observer/observer'; + +//IMPORT_COMPONENTS + +const components = [ + Device, + Support, + Browser, + Resize, + Observer, + //INSTALL_COMPONENTS +]; + +if (typeof Swiper.use === 'undefined') { + Swiper.use = Swiper.Class.use; + Swiper.installModule = Swiper.Class.installModule; +} + +Swiper.use(components); + +//EXPORT diff --git a/static/libs/swiper-5.3.8/package/src/swiper.less b/static/libs/swiper-5.3.8/package/src/swiper.less new file mode 100644 index 0000000..41bca4b --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/swiper.less @@ -0,0 +1,16 @@ +@import url('./less/mixins.less'); + +@themeColor: $themeColor; +@colors: $colors; + +@font-face { + @fontBase64: swiperIconsFont(); + font-family: 'swiper-icons'; + src: url("data:application/font-woff;charset=utf-8;base64, @{fontBase64}") format("woff"); + font-weight: 400; + font-style: normal; +} + +@import url('./components/core/core.less'); + +//IMPORT_COMPONENTS diff --git a/static/libs/swiper-5.3.8/package/src/swiper.scss b/static/libs/swiper-5.3.8/package/src/swiper.scss new file mode 100644 index 0000000..b8958c1 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/swiper.scss @@ -0,0 +1,15 @@ +@import "./scss/functions"; + +$themeColor: #007aff !default; +$colors: ('white': #ffffff, 'black': #000000) !default; + +@font-face { + font-family: 'swiper-icons'; + src: url("data:application/font-woff;charset=utf-8;base64, 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") format("woff"); + font-weight: 400; + font-style: normal; +} + +@import "./components/core/core"; + +//IMPORT_COMPONENTS diff --git a/static/libs/swiper-5.3.8/package/src/utils/browser.js b/static/libs/swiper-5.3.8/package/src/utils/browser.js new file mode 100644 index 0000000..ac64a70 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/utils/browser.js @@ -0,0 +1,15 @@ +import { window } from 'ssr-window'; + +const Browser = (function Browser() { + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0); + } + return { + isEdge: !!window.navigator.userAgent.match(/Edge/g), + isSafari: isSafari(), + isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent), + }; +}()); + +export default Browser; diff --git a/static/libs/swiper-5.3.8/package/src/utils/class.js b/static/libs/swiper-5.3.8/package/src/utils/class.js new file mode 100644 index 0000000..1cf2b37 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/utils/class.js @@ -0,0 +1,173 @@ +import Utils from './utils'; + +class SwiperClass { + constructor(params = {}) { + const self = this; + self.params = params; + + // Events + self.eventsListeners = {}; + + if (self.params && self.params.on) { + Object.keys(self.params.on).forEach((eventName) => { + self.on(eventName, self.params.on[eventName]); + }); + } + } + + on(events, handler, priority) { + const self = this; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach((event) => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + } + + once(events, handler, priority) { + const self = this; + if (typeof handler !== 'function') return self; + function onceHandler(...args) { + self.off(events, onceHandler); + if (onceHandler.f7proxy) { + delete onceHandler.f7proxy; + } + handler.apply(self, args); + } + onceHandler.f7proxy = handler; + return self.on(events, onceHandler, priority); + } + + off(events, handler) { + const self = this; + if (!self.eventsListeners) return self; + events.split(' ').forEach((event) => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event] && self.eventsListeners[event].length) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + } + + emit(...args) { + const self = this; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach((event) => { + if (self.eventsListeners && self.eventsListeners[event]) { + const handlers = []; + self.eventsListeners[event].forEach((eventHandler) => { + handlers.push(eventHandler); + }); + handlers.forEach((eventHandler) => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + + useModulesParams(instanceParams) { + const instance = this; + if (!instance.modules) return; + Object.keys(instance.modules).forEach((moduleName) => { + const module = instance.modules[moduleName]; + // Extend params + if (module.params) { + Utils.extend(instanceParams, module.params); + } + }); + } + + useModules(modulesParams = {}) { + const instance = this; + if (!instance.modules) return; + Object.keys(instance.modules).forEach((moduleName) => { + const module = instance.modules[moduleName]; + const moduleParams = modulesParams[moduleName] || {}; + // Extend instance methods and props + if (module.instance) { + Object.keys(module.instance).forEach((modulePropName) => { + const moduleProp = module.instance[modulePropName]; + if (typeof moduleProp === 'function') { + instance[modulePropName] = moduleProp.bind(instance); + } else { + instance[modulePropName] = moduleProp; + } + }); + } + // Add event listeners + if (module.on && instance.on) { + Object.keys(module.on).forEach((moduleEventName) => { + instance.on(moduleEventName, module.on[moduleEventName]); + }); + } + + // Module create callback + if (module.create) { + module.create.bind(instance)(moduleParams); + } + }); + } + + static set components(components) { + const Class = this; + if (!Class.use) return; + Class.use(components); + } + + static installModule(module, ...params) { + const Class = this; + if (!Class.prototype.modules) Class.prototype.modules = {}; + const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`); + Class.prototype.modules[name] = module; + // Prototype + if (module.proto) { + Object.keys(module.proto).forEach((key) => { + Class.prototype[key] = module.proto[key]; + }); + } + // Class + if (module.static) { + Object.keys(module.static).forEach((key) => { + Class[key] = module.static[key]; + }); + } + // Callback + if (module.install) { + module.install.apply(Class, params); + } + return Class; + } + + static use(module, ...params) { + const Class = this; + if (Array.isArray(module)) { + module.forEach((m) => Class.installModule(m)); + return Class; + } + return Class.installModule(module, ...params); + } +} + +export default SwiperClass; diff --git a/static/libs/swiper-5.3.8/package/src/utils/device.js b/static/libs/swiper-5.3.8/package/src/utils/device.js new file mode 100644 index 0000000..255180f --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/utils/device.js @@ -0,0 +1,117 @@ +import { window } from 'ssr-window'; +import Support from './support'; + +const Device = (function Device() { + const platform = window.navigator.platform; + const ua = window.navigator.userAgent; + + const device = { + ios: false, + android: false, + androidChrome: false, + desktop: false, + iphone: false, + ipod: false, + ipad: false, + edge: false, + ie: false, + firefox: false, + macos: false, + windows: false, + cordova: !!(window.cordova || window.phonegap), + phonegap: !!(window.cordova || window.phonegap), + electron: false, + }; + + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0; + const edge = ua.indexOf('Edge/') >= 0; + const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0; + const windows = platform === 'Win32'; + const electron = ua.toLowerCase().indexOf('electron') >= 0; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + if (!ipad + && macos + && Support.touch + && ( + (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9 + || (screenWidth === 834 && screenHeight === 1194) // Pro 11 + || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5 + || (screenWidth === 768 && screenHeight === 1024) // other + ) + ) { + ipad = ua.match(/(Version)\/([\d.]+)/); + macos = false; + } + + device.ie = ie; + device.edge = edge; + device.firefox = firefox; + + // Android + if (android && !windows) { + device.os = 'android'; + device.osVersion = android[2]; + device.android = true; + device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + // iOS + if (iphone && !ipod) { + device.osVersion = iphone[2].replace(/_/g, '.'); + device.iphone = true; + } + if (ipad) { + device.osVersion = ipad[2].replace(/_/g, '.'); + device.ipad = true; + } + if (ipod) { + device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null; + device.ipod = true; + } + // iOS 8+ changed UA + if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) { + if (device.osVersion.split('.')[0] === '10') { + device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0]; + } + } + + // Webview + device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone)) + || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches); + device.webview = device.webView; + device.standalone = device.webView; + + // Desktop + device.desktop = !(device.ios || device.android) || electron; + if (device.desktop) { + device.electron = electron; + device.macos = macos; + device.windows = windows; + if (device.macos) { + device.os = 'macos'; + } + if (device.windows) { + device.os = 'windows'; + } + } + + // Pixel Ratio + device.pixelRatio = window.devicePixelRatio || 1; + + // Export object + return device; +}()); + +export default Device; diff --git a/static/libs/swiper-5.3.8/package/src/utils/dom.js b/static/libs/swiper-5.3.8/package/src/utils/dom.js new file mode 100644 index 0000000..0f532c6 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/utils/dom.js @@ -0,0 +1,88 @@ +import { + $, + addClass, + removeClass, + hasClass, + toggleClass, + attr, + removeAttr, + data, + transform, + transition, + on, + off, + trigger, + transitionEnd, + outerWidth, + outerHeight, + offset, + css, + each, + html, + text, + is, + index, + eq, + append, + prepend, + next, + nextAll, + prev, + prevAll, + parent, + parents, + closest, + find, + children, + filter, + remove, + add, + styles, +} from 'dom7/dist/dom7.modular'; + +const Methods = { + addClass, + removeClass, + hasClass, + toggleClass, + attr, + removeAttr, + data, + transform, + transition, + on, + off, + trigger, + transitionEnd, + outerWidth, + outerHeight, + offset, + css, + each, + html, + text, + is, + index, + eq, + append, + prepend, + next, + nextAll, + prev, + prevAll, + parent, + parents, + closest, + find, + children, + filter, + remove, + add, + styles, +}; + +Object.keys(Methods).forEach((methodName) => { + $.fn[methodName] = $.fn[methodName] || Methods[methodName]; +}); + +export default $; diff --git a/static/libs/swiper-5.3.8/package/src/utils/support.js b/static/libs/swiper-5.3.8/package/src/utils/support.js new file mode 100644 index 0000000..fb46601 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/utils/support.js @@ -0,0 +1,37 @@ +import { window, document } from 'ssr-window'; + +const Support = (function Support() { + return { + touch: (window.Modernizr && window.Modernizr.touch === true) || (function checkTouch() { + return !!((window.navigator.maxTouchPoints > 0) || ('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch)); + }()), + + pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints > 0, + + observer: (function checkObserver() { + return ('MutationObserver' in window || 'WebkitMutationObserver' in window); + }()), + + passiveListener: (function checkPassiveListener() { + let supportsPassive = false; + try { + const opts = Object.defineProperty({}, 'passive', { + // eslint-disable-next-line + get() { + supportsPassive = true; + }, + }); + window.addEventListener('testPassiveListener', null, opts); + } catch (e) { + // No support + } + return supportsPassive; + }()), + + gestures: (function checkGestures() { + return 'ongesturestart' in window; + }()), + }; +}()); + +export default Support; diff --git a/static/libs/swiper-5.3.8/package/src/utils/utils.js b/static/libs/swiper-5.3.8/package/src/utils/utils.js new file mode 100644 index 0000000..c2b2e7c --- /dev/null +++ b/static/libs/swiper-5.3.8/package/src/utils/utils.js @@ -0,0 +1,110 @@ +import { window } from 'ssr-window'; + +const Utils = { + deleteProps(obj) { + const object = obj; + Object.keys(object).forEach((key) => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + }, + nextTick(callback, delay = 0) { + return setTimeout(callback, delay); + }, + now() { + return Date.now(); + }, + getTranslate(el, axis = 'x') { + let matrix; + let curTransform; + let transformMatrix; + + const curStyle = window.getComputedStyle(el, null); + + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + }, + parseUrlQuery(url) { + const query = {}; + let urlToParse = url || window.location.href; + let i; + let params; + let param; + let length; + if (typeof urlToParse === 'string' && urlToParse.length) { + urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : ''; + params = urlToParse.split('&').filter((paramsPart) => paramsPart !== ''); + length = params.length; + + for (i = 0; i < length; i += 1) { + param = params[i].replace(/#\S+/g, '').split('='); + query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || ''; + } + } + return query; + }, + isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object; + }, + extend(...args) { + const to = Object(args[0]); + for (let i = 1; i < args.length; i += 1) { + const nextSource = args[i]; + if (nextSource !== undefined && nextSource !== null) { + const keysArray = Object.keys(Object(nextSource)); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) { + Utils.extend(to[nextKey], nextSource[nextKey]); + } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) { + to[nextKey] = {}; + Utils.extend(to[nextKey], nextSource[nextKey]); + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + }, +}; +export default Utils; diff --git a/static/libs/swiper-5.3.8/package/swiper.less b/static/libs/swiper-5.3.8/package/swiper.less new file mode 100644 index 0000000..1ec8396 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/swiper.less @@ -0,0 +1,16 @@ +@import url('./less/mixins.less'); + +@themeColor: #007aff; +@colors: white #ffffff, black #000000; + +@font-face { + @fontBase64: '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'; + font-family: 'swiper-icons'; + src: url("data:application/font-woff;charset=utf-8;base64, @{fontBase64}") format("woff"); + font-weight: 400; + font-style: normal; +} + +@import url('./components/core/core.less'); + +//IMPORT_COMPONENTS diff --git a/static/libs/swiper-5.3.8/package/swiper.scss b/static/libs/swiper-5.3.8/package/swiper.scss new file mode 100644 index 0000000..b8958c1 --- /dev/null +++ b/static/libs/swiper-5.3.8/package/swiper.scss @@ -0,0 +1,15 @@ +@import "./scss/functions"; + +$themeColor: #007aff !default; +$colors: ('white': #ffffff, 'black': #000000) !default; + +@font-face { + font-family: 'swiper-icons'; + src: url("data:application/font-woff;charset=utf-8;base64, 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") format("woff"); + font-weight: 400; + font-style: normal; +} + +@import "./components/core/core"; + +//IMPORT_COMPONENTS diff --git a/static/libs/swiper-5.3.8/playground/index.html b/static/libs/swiper-5.3.8/playground/index.html new file mode 100644 index 0000000..185c83a --- /dev/null +++ b/static/libs/swiper-5.3.8/playground/index.html @@ -0,0 +1,76 @@ + + + + + Swiper Playground + + + + +
      +
      +
      +
      +
      +
      Slide 1
      +
      Slide 2
      +
      Slide 3
      +
      Slide 4
      +
      Slide 5
      +
      Slide 6
      +
      Slide 7
      +
      Slide 8
      +
      Slide 9
      +
      Slide 10
      +
      +
      +
      + + + + + diff --git a/static/libs/swiper-5.3.8/scripts/banner.js b/static/libs/swiper-5.3.8/scripts/banner.js new file mode 100644 index 0000000..a84148f --- /dev/null +++ b/static/libs/swiper-5.3.8/scripts/banner.js @@ -0,0 +1,21 @@ +const pkg = require('../package.json'); + +const date = { + day: new Date().getDate(), + month: ('January February March April May June July August September October November December').split(' ')[new Date().getMonth()], + year: new Date().getFullYear(), +}; + +module.exports = `${` +/** + * Swiper ${pkg.version} + * ${pkg.description} + * ${pkg.homepage} + * + * Copyright 2014-${date.year} ${pkg.author} + * + * Released under the ${pkg.license} License + * + * Released on: ${date.month} ${date.day}, ${date.year} + */ +`.trim()}\n`; diff --git a/static/libs/swiper-5.3.8/scripts/build-config.js b/static/libs/swiper-5.3.8/scripts/build-config.js new file mode 100644 index 0000000..8e4e3dc --- /dev/null +++ b/static/libs/swiper-5.3.8/scripts/build-config.js @@ -0,0 +1,28 @@ +module.exports = { + components: [ + 'virtual', + 'keyboard', + 'mousewheel', + 'navigation', + 'pagination', + 'scrollbar', + 'parallax', + 'zoom', + 'lazy', + 'controller', + 'a11y', + 'history', + 'hash-navigation', + 'autoplay', + 'effect-fade', + 'effect-cube', + 'effect-flip', + 'effect-coverflow', + 'thumbs', + ], + themeColor: '#007aff', + colors: { + white: '#ffffff', + black: '#000000', + }, +}; diff --git a/static/libs/swiper-5.3.8/scripts/build-js.js b/static/libs/swiper-5.3.8/scripts/build-js.js new file mode 100644 index 0000000..d5c4a84 --- /dev/null +++ b/static/libs/swiper-5.3.8/scripts/build-js.js @@ -0,0 +1,204 @@ +/* eslint import/no-extraneous-dependencies: ["error", {"devDependencies": true}] */ +/* eslint no-console: "off" */ + +const fs = require('fs'); +const rollup = require('rollup'); +const buble = require('@rollup/plugin-buble'); +const replace = require('@rollup/plugin-replace'); +const resolve = require('@rollup/plugin-node-resolve'); +const Terser = require('terser'); + +const config = require('./build-config.js'); +const banner = require('./banner.js'); + +function es(components, cb) { + const env = process.env.NODE_ENV || 'development'; + + // Bundle + rollup.rollup({ + input: './src/swiper.js', + external: ['dom7/dist/dom7.modular', 'ssr-window'], + plugins: [ + replace({ + delimiters: ['', ''], + 'process.env.NODE_ENV': JSON.stringify(env), + '//IMPORT_COMPONENTS': components.map((component) => `import ${component.capitalized} from './components/${component.name}/${component.name}';`).join('\n'), + '//INSTALL_COMPONENTS': components.map((component) => `${component.capitalized}`).join(',\n '), + '//EXPORT': 'export default Swiper', + }), + resolve({ mainFields: ['module', 'main', 'jsnext'] }), + ], + }).then((bundle) => bundle.write({ + format: 'es', + name: 'Swiper', + strict: true, + sourcemap: true, + sourcemapFile: `./${env === 'development' ? 'build' : 'package'}/js/swiper.esm.bundle.js.map`, + banner, + file: `./${env === 'development' ? 'build' : 'package'}/js/swiper.esm.bundle.js`, + })).then(() => { + if (cb) cb(); + }).catch((err) => { + if (cb) cb(); + console.error(err.toString()); + }); + + // Browser Bundle + rollup.rollup({ + input: './src/swiper.js', + plugins: [ + replace({ + delimiters: ['', ''], + 'process.env.NODE_ENV': JSON.stringify(env), + '//IMPORT_COMPONENTS': components.map((component) => `import ${component.capitalized} from './components/${component.name}/${component.name}';`).join('\n'), + '//INSTALL_COMPONENTS': components.map((component) => `${component.capitalized}`).join(',\n '), + '//EXPORT': 'export default Swiper', + }), + resolve({ mainFields: ['module', 'main', 'jsnext'] }), + ], + }).then((bundle) => bundle.write({ + format: 'es', + name: 'Swiper', + strict: true, + sourcemap: true, + sourcemapFile: `./${env === 'development' ? 'build' : 'package'}/js/swiper.esm.browser.bundle.js.map`, + banner, + file: `./${env === 'development' ? 'build' : 'package'}/js/swiper.esm.browser.bundle.js`, + })).then((bundle) => { + if (env === 'development') { + if (cb) cb(); + return; + } + const result = bundle.output[0]; + const minified = Terser.minify(result.code, { + sourceMap: { + content: env === 'development' ? result.map : undefined, + filename: env === 'development' ? undefined : 'swiper.esm.browser.bundle.min.js', + url: 'swiper.esm.browser.bundle.min.js.map', + }, + output: { + preamble: banner, + }, + }); + + fs.writeFileSync('./package/js/swiper.esm.browser.bundle.min.js', minified.code); + fs.writeFileSync('./package/js/swiper.esm.browser.bundle.min.js.map', minified.map); + if (cb) cb(); + }).catch((err) => { + if (cb) cb(); + console.error(err.toString()); + }); + + // Modular + rollup.rollup({ + input: './src/swiper.js', + external: ['dom7/dist/dom7.modular', 'ssr-window'], + plugins: [ + replace({ + delimiters: ['', ''], + 'process.env.NODE_ENV': JSON.stringify(env), + '//IMPORT_COMPONENTS': components.map((component) => `import ${component.capitalized} from './components/${component.name}/${component.name}';`).join('\n'), + '//INSTALL_COMPONENTS': '', + '//EXPORT': `export { Swiper, ${components.map((component) => component.capitalized).join(', ')} }`, + }), + resolve({ mainFields: ['module', 'main', 'jsnext'] }), + ], + }).then((bundle) => bundle.write({ + format: 'es', + name: 'Swiper', + strict: true, + banner, + sourcemap: true, + sourcemapFile: `./${env === 'development' ? 'build' : 'package'}/js/swiper.esm.js.map`, + file: `./${env === 'development' ? 'build' : 'package'}/js/swiper.esm.js`, + })).then(() => { + if (cb) cb(); + }).catch((err) => { + if (cb) cb(); + console.error(err.toString()); + }); +} +function umd(components, cb) { + const env = process.env.NODE_ENV || 'development'; + + rollup.rollup({ + input: './src/swiper.js', + plugins: [ + replace({ + delimiters: ['', ''], + 'process.env.NODE_ENV': JSON.stringify(env), + '//IMPORT_COMPONENTS': components.map((component) => `import ${component.capitalized} from './components/${component.name}/${component.name}';`).join('\n'), + '//INSTALL_COMPONENTS': components.map((component) => `${component.capitalized}`).join(',\n '), + '//EXPORT': 'export default Swiper;', + }), + resolve({ mainFields: ['module', 'main', 'jsnext'] }), + buble(), + ], + }).then((bundle) => bundle.write({ + format: 'umd', + name: 'Swiper', + strict: true, + sourcemap: true, + sourcemapFile: `./${env === 'development' ? 'build' : 'package'}/js/swiper.js.map`, + banner, + file: `./${env === 'development' ? 'build' : 'package'}/js/swiper.js`, + })).then((bundle) => { + if (env === 'development') { + if (cb) cb(); + return; + } + const result = bundle.output[0]; + const minified = Terser.minify(result.code, { + sourceMap: { + content: env === 'development' ? result.map : undefined, + filename: env === 'development' ? undefined : 'swiper.min.js', + url: 'swiper.min.js.map', + }, + output: { + preamble: banner, + }, + }); + + fs.writeFileSync('./package/js/swiper.min.js', minified.code); + fs.writeFileSync('./package/js/swiper.min.js.map', minified.map); + + cb(); + }).catch((err) => { + if (cb) cb(); + console.error(err.toString()); + }); +} +function build(cb) { + const env = process.env.NODE_ENV || 'development'; + + const components = []; + config.components.forEach((name) => { + // eslint-disable-next-line + const capitalized = name.split('-').map((word) => { + return word.split('').map((char, index) => { + if (index === 0) return char.toUpperCase(); + return char; + }).join(''); + }).join(''); + const jsFilePath = `./src/components/${name}/${name}.js`; + if (fs.existsSync(jsFilePath)) { + components.push({ name, capitalized }); + } + }); + + const expectCbs = env === 'development' ? 1 : 2; + let cbs = 0; + + umd(components, () => { + cbs += 1; + if (cbs === expectCbs) cb(); + }); + if (env !== 'development') { + es(components, () => { + cbs += 1; + if (cbs === expectCbs) cb(); + }); + } +} + +module.exports = build; diff --git a/static/libs/swiper-5.3.8/scripts/build-styles.js b/static/libs/swiper-5.3.8/scripts/build-styles.js new file mode 100644 index 0000000..0195df2 --- /dev/null +++ b/static/libs/swiper-5.3.8/scripts/build-styles.js @@ -0,0 +1,93 @@ +/* eslint import/no-extraneous-dependencies: ["error", {"devDependencies": true}] */ +/* eslint no-console: "off" */ + +const fs = require('fs'); +const path = require('path'); +const glob = require('glob'); +const fse = require('./utils/fs-extra.js'); +const less = require('./utils/less.js'); +const autoprefixer = require('./utils/autoprefixer.js'); +const cleanCSS = require('./utils/clean-css.js'); +const banner = require('./banner.js'); + +const config = require('./build-config.js'); + +function base64Encode(file) { + // read binary data + const bitmap = fs.readFileSync(file); + // convert binary data to base64 encoded string + return Buffer.from(bitmap).toString('base64'); +} + +async function build(cb) { + const env = process.env.NODE_ENV || 'development'; + + const components = []; + config.components.forEach((name) => { + const lessFilePath = `./src/components/${name}/${name}.less`; + + if (fs.existsSync(lessFilePath)) { + components.push(name); + } + }); + + const colors = []; + + Object.keys(config.colors).forEach((key) => { + colors.push(`${key} ${config.colors[key]}`); + }); + + let lessContent = fs.readFileSync(path.resolve(__dirname, '../src/swiper.less'), 'utf8'); + lessContent = lessContent + .replace('//IMPORT_COMPONENTS', components.map((component) => `@import url('./components/${component}/${component}.less');`).join('\n')) + .replace('$themeColor', config.themeColor) + .replace('$colors', colors.join(', ')); + + let cssContent; + try { + cssContent = await autoprefixer( + await less(lessContent, path.resolve(__dirname, '../src')) + ); + } catch (err) { + console.log(err); + } + + // Write file + fse.writeFileSync(`./${env === 'development' ? 'build' : 'package'}/css/swiper.css`, `${banner}\n${cssContent}`); + + if (env === 'development') { + if (cb) cb(); + return; + } + + // Copy less & scss + const iconsFontBase64 = base64Encode('./src/icons/font/swiper-icons.woff'); + + glob('**/*.*', { cwd: path.resolve(__dirname, '../src') }, (err, files) => { + files.forEach((file, index) => { + if (file.indexOf('icons/') === 0) return; + if (file.indexOf('.js') >= 0) return; + + let fileContent = fse.readFileSync(path.resolve(__dirname, '../src', file)); + if (file.indexOf('swiper.less') >= 0) { + fileContent = fileContent + .replace('swiperIconsFont()', `'${iconsFontBase64}'`) + .replace('$themeColor', config.themeColor) + .replace('$colors', colors.join(', ')); + } + + fse.writeFileSync(path.resolve(__dirname, '../package', file), fileContent); + if (index === files.length - 1) cb(); + }); + }); + + // Minified + const minifiedContent = await cleanCSS(cssContent); + + // Write file + fse.writeFileSync('./package/css/swiper.min.css', `${banner}\n${minifiedContent}`); + + if (cb) cb(); +} + +module.exports = build; diff --git a/static/libs/swiper-5.3.8/scripts/gulpfile.js b/static/libs/swiper-5.3.8/scripts/gulpfile.js new file mode 100644 index 0000000..09a962f --- /dev/null +++ b/static/libs/swiper-5.3.8/scripts/gulpfile.js @@ -0,0 +1,87 @@ +/* eslint no-console: ["error", { allow: ["log"] }] */ +const gulp = require('gulp'); +const connect = require('gulp-connect'); +const gopen = require('gulp-open'); +const fs = require('fs'); +const path = require('path'); + +const buildJs = require('./build-js.js'); +const buildStyles = require('./build-styles.js'); + +// Tasks +gulp.task('playground', (cb) => { + const env = process.env.NODE_ENV || 'development'; + let content = fs.readFileSync(path.resolve(__dirname, '../playground/index.html'), 'utf8'); + if (env === 'development') { + content = content + .replace('../package/css/swiper.min.css', '../build/css/swiper.css') + .replace('../package/js/swiper.min.js', '../build/js/swiper.js'); + } else { + content = content + .replace('../build/css/swiper.css', '../package/css/swiper.min.css') + .replace('../build/js/swiper.js', '../package/js/swiper.min.js'); + } + fs.writeFileSync(path.resolve(__dirname, '../playground/index.html'), content); + if (cb) cb(); +}); +gulp.task('js', (cb) => { + buildJs(cb); +}); + +gulp.task('styles', (cb) => { + buildStyles(cb); +}); + + +// in prod builds, copy /src folder into /package +gulp.task('prod-source-copy', (cb) => { + const env = process.env.NODE_ENV || 'development'; + if (env === 'production') { + gulp.src(['./src/**/*']).pipe(gulp.dest('./package/src/')); + } + if (cb) cb(); +}); + +// in prod builds, adjust sourcemap paths to actual src location +gulp.task('prod-source-sourcemap-fix-paths', (cb) => { + const env = process.env.NODE_ENV || 'development'; + if (env === 'production') { + const jsDir = path.resolve(__dirname, '../package/js/'); + const mapFiles = fs + .readdirSync(jsDir) + .filter((file) => file.toLowerCase().endsWith('.map')); + mapFiles.forEach((mapFile) => { + const mapFilePath = path.resolve(jsDir, mapFile); + let content = fs.readFileSync(mapFilePath, 'utf8'); + content = content + .replace(/"\.\.\/\.\.\//g, '"../') + .replace(/"\.\.\/node_modules\//g, '"~/'); + fs.writeFileSync(mapFilePath, content); + }); + } + if (cb) cb(); +}); + +gulp.task('build', gulp.series(['js', 'styles', 'prod-source-copy', 'prod-source-sourcemap-fix-paths'])); + +gulp.task('watch', () => { + gulp.watch('./src/**/**/*.js', gulp.series('js')); + gulp.watch('./src/**/**/*.less', gulp.series('styles')); +}); + +gulp.task('connect', () => { + connect.server({ + root: ['./'], + livereload: true, + host: '0.0.0.0', + port: '3000', + }); +}); + +gulp.task('open', () => { + gulp.src('./playground/index.html').pipe(gopen({ uri: 'http://localhost:3000/playground/' })); +}); + +gulp.task('server', gulp.parallel(['watch', 'connect', 'open'])); + +gulp.task('default', gulp.series('server')); diff --git a/static/libs/swiper-5.3.8/scripts/icon-font/blank.svg b/static/libs/swiper-5.3.8/scripts/icon-font/blank.svg new file mode 100644 index 0000000..2ab6c66 --- /dev/null +++ b/static/libs/swiper-5.3.8/scripts/icon-font/blank.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/scripts/icon-font/generate.py b/static/libs/swiper-5.3.8/scripts/icon-font/generate.py new file mode 100644 index 0000000..f55888c --- /dev/null +++ b/static/libs/swiper-5.3.8/scripts/icon-font/generate.py @@ -0,0 +1,16 @@ +from subprocess import call +import os +import json + +BUILDER_PATH = os.path.dirname(os.path.abspath(__file__)) + +def main(): + generate_font_files() + +def generate_font_files(): + print "Generate Fonts" + cmd = "fontforge -script %s/generate_font.py" % (BUILDER_PATH) + call(cmd, shell=True) + +if __name__ == "__main__": + main() diff --git a/static/libs/swiper-5.3.8/scripts/icon-font/generate_font.py b/static/libs/swiper-5.3.8/scripts/icon-font/generate_font.py new file mode 100644 index 0000000..a36d837 --- /dev/null +++ b/static/libs/swiper-5.3.8/scripts/icon-font/generate_font.py @@ -0,0 +1,117 @@ +import fontforge +import os +import md5 +import subprocess +import tempfile +import json +import copy + +SCRIPT_PATH = os.path.dirname(os.path.abspath(__file__)) +BLANK_PATH = os.path.join(SCRIPT_PATH, 'blank.svg') +INPUT_SVG_DIR = os.path.join(SCRIPT_PATH, '..', '..', 'src/icons/svg') +OUTPUT_FONT_DIR = os.path.join(SCRIPT_PATH, '..', '..', 'src/icons/font') +AUTO_WIDTH = True +KERNING = 15 + +m = md5.new() + +f = fontforge.font() +f.encoding = 'UnicodeFull' +f.design_size = 24 +f.em = 24 +f.ascent = 448 +f.descent = 64 + +# Add lookup table +f.addLookup("ligatable","gsub_ligature",(),(("liga",(("latn",("dflt")),)),)) +f.addLookupSubtable("ligatable","ligatable1") + +# Import base characters +for char in "0123456789abcdefghijklmnopqrstuvwzxyz_- ": + glyph = f.createChar(ord(char)) + glyph.importOutlines(BLANK_PATH) + glyph.width = 0 + +font_name = 'swiper-icons'; +m.update(font_name + ';') + +for dirname, dirnames, filenames in os.walk(INPUT_SVG_DIR): + for filename in filenames: + name, ext = os.path.splitext(filename) + filePath = os.path.join(dirname, filename) + size = os.path.getsize(filePath) + if ext in ['.svg', '.eps']: + if ext in ['.svg']: + # hack removal of tags + svgfile = open(filePath, 'r+') + tmpsvgfile = tempfile.NamedTemporaryFile(suffix=ext, delete=False) + svgtext = svgfile.read() + svgfile.seek(0) + + # replace the tags with 'nothing' + svgtext = svgtext.replace('', '') + svgtext = svgtext.replace('', '') + + tmpsvgfile.file.write(svgtext) + + svgfile.close() + tmpsvgfile.file.close() + + filePath = tmpsvgfile.name + # end hack + + m.update(name + str(size) + ';') + + glyph = f.createChar(-1, name) + glyph.importOutlines(filePath) + + # Add ligatures + ligature = []; + for c in name: + if (c == '_'): + c = "underscore" + if (c == '-'): + c = "hyphen" + if (c == ' '): + c = "space" + ligature.append(c) + glyph.addPosSub('ligatable1', ligature) + + # if we created a temporary file, let's clean it up + if tmpsvgfile: + os.unlink(tmpsvgfile.name) + + # set glyph size explicitly or automatically depending on autowidth + if AUTO_WIDTH: + glyph.left_side_bearing = glyph.right_side_bearing = 0 + glyph.round() + + # resize glyphs if autowidth is enabled + if AUTO_WIDTH: + f.autoWidth(0, 0, 512) + +fontfile = '%s/swiper-icons' % (OUTPUT_FONT_DIR) +print fontfile; +build_hash = m.hexdigest() + +f.fontname = font_name +f.familyname = font_name +f.fullname = font_name + +f.generate(fontfile + '.ttf') + +scriptPath = os.path.dirname(os.path.realpath(__file__)) +try: + subprocess.Popen([scriptPath + '/sfnt2woff', fontfile + '.ttf'], stdout=subprocess.PIPE) +except OSError: + # If the local version of sfnt2woff fails (i.e., on Linux), try to use the + # global version. This allows us to avoid forcing OS X users to compile + # sfnt2woff from source, simplifying install. + subprocess.call(['sfnt2woff', fontfile + '.ttf']) + + +# Hint the TTF file +subprocess.call('ttfautohint -s -f -n ' + fontfile + '.ttf ' + fontfile + '-hinted.ttf > /dev/null 2>&1 && mv ' + fontfile + '-hinted.ttf ' + fontfile + '.ttf', shell=True) + +# WOFF2 Font +subprocess.call('woff2_compress ' + fontfile + '.ttf', shell=True) diff --git a/static/libs/swiper-5.3.8/scripts/icon-font/sfnt2woff b/static/libs/swiper-5.3.8/scripts/icon-font/sfnt2woff new file mode 100644 index 0000000..1a16944 Binary files /dev/null and b/static/libs/swiper-5.3.8/scripts/icon-font/sfnt2woff differ diff --git a/static/libs/swiper-5.3.8/scripts/utils/autoprefixer.js b/static/libs/swiper-5.3.8/scripts/utils/autoprefixer.js new file mode 100644 index 0000000..e469b3c --- /dev/null +++ b/static/libs/swiper-5.3.8/scripts/utils/autoprefixer.js @@ -0,0 +1,19 @@ +/* eslint import/no-extraneous-dependencies: ["error", {"devDependencies": true}] */ +/* eslint no-console: "off" */ +const postcss = require('postcss'); +const autoprefixer = require('autoprefixer'); + +module.exports = async (content, { from = undefined, to = undefined } = {}) => new Promise((resolve, reject) => { + postcss([autoprefixer]) + .process(content, { from, to }) + .then((result) => { + result.warnings().forEach((warn) => { + console.warn(warn.toString()); + }); + resolve(result.css); + }) + .catch((err) => { + reject(err); + throw err; + }); +}); diff --git a/static/libs/swiper-5.3.8/scripts/utils/clean-css.js b/static/libs/swiper-5.3.8/scripts/utils/clean-css.js new file mode 100644 index 0000000..e282d01 --- /dev/null +++ b/static/libs/swiper-5.3.8/scripts/utils/clean-css.js @@ -0,0 +1,24 @@ +/* eslint import/no-extraneous-dependencies: ["error", {"devDependencies": true}] */ +const CleanCSS = require('clean-css'); + +module.exports = (content, options = {}) => { + // eslint-disable-next-line + options = Object.assign({ + compatibility: '*,-properties.zeroUnits', + }, options); + + return new Promise((resolve, reject) => { + if (content instanceof Promise) { + content.then((c) => { + const minified = new CleanCSS(options).minify(c); + resolve(minified.styles); + }).catch((err) => { + reject(err); + throw err; + }); + return; + } + const minified = new CleanCSS(options).minify(content); + resolve(minified.styles); + }); +}; diff --git a/static/libs/swiper-5.3.8/scripts/utils/fs-extra.js b/static/libs/swiper-5.3.8/scripts/utils/fs-extra.js new file mode 100644 index 0000000..d558ec0 --- /dev/null +++ b/static/libs/swiper-5.3.8/scripts/utils/fs-extra.js @@ -0,0 +1,38 @@ +const fs = require('fs'); +const path = require('path'); + +const fsExtra = { + unlinkSync(p) { + return fs.unlinkSync(p); + }, + existsSync(p) { + return fs.existsSync(p); + }, + readdirSync(dir) { + return fs.readdirSync(dir); + }, + mkdirSync(dir) { + if (fs.existsSync(dir)) { + fs.mkdirSync(dir); + return; + } + dir.split(path.sep).forEach((part, index) => { + if (!part) return; + const partialPath = dir.split(path.sep).slice(0, index + 1).join(path.sep); + if (!fs.existsSync(partialPath)) { + fs.mkdirSync(partialPath); + } + }); + }, + readFileSync(file) { + return fs.readFileSync(file, 'utf8'); + }, + writeFileSync(file, content) { + if (!fs.existsSync(path.dirname(file))) { + fsExtra.mkdirSync(path.dirname(file)); + } + return fs.writeFileSync(file, content); + }, +}; + +module.exports = fsExtra; diff --git a/static/libs/swiper-5.3.8/scripts/utils/less.js b/static/libs/swiper-5.3.8/scripts/utils/less.js new file mode 100644 index 0000000..b75b76a --- /dev/null +++ b/static/libs/swiper-5.3.8/scripts/utils/less.js @@ -0,0 +1,14 @@ +/* eslint import/no-extraneous-dependencies: ["error", {"devDependencies": true}] */ +const less = require('less'); +const path = require('path'); + +module.exports = (content, resolvePath = path.resolve(__dirname, '../../src/core')) => new Promise((resolve, reject) => { + less.render(content, { paths: [resolvePath] }) + .then((result) => { + resolve(result.css); + }) + .catch((err) => { + reject(err); + throw err; + }); +}); diff --git a/static/libs/swiper-5.3.8/src/components/a11y/a11y.js b/static/libs/swiper-5.3.8/src/components/a11y/a11y.js new file mode 100644 index 0000000..7e3a2bd --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/a11y/a11y.js @@ -0,0 +1,204 @@ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +const a11y = { + makeElFocusable($el) { + $el.attr('tabIndex', '0'); + return $el; + }, + addElRole($el, role) { + $el.attr('role', role); + return $el; + }, + addElLabel($el, label) { + $el.attr('aria-label', label); + return $el; + }, + disableEl($el) { + $el.attr('aria-disabled', true); + return $el; + }, + enableEl($el) { + $el.attr('aria-disabled', false); + return $el; + }, + onEnterKey(e) { + const swiper = this; + const params = swiper.params.a11y; + if (e.keyCode !== 13) return; + const $targetEl = $(e.target); + if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + swiper.a11y.notify(params.lastSlideMessage); + } else { + swiper.a11y.notify(params.nextSlideMessage); + } + } + if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + swiper.a11y.notify(params.firstSlideMessage); + } else { + swiper.a11y.notify(params.prevSlideMessage); + } + } + if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) { + $targetEl[0].click(); + } + }, + notify(message) { + const swiper = this; + const notification = swiper.a11y.liveRegion; + if (notification.length === 0) return; + notification.html(''); + notification.html(message); + }, + updateNavigation() { + const swiper = this; + + if (swiper.params.loop || !swiper.navigation) return; + const { $nextEl, $prevEl } = swiper.navigation; + + if ($prevEl && $prevEl.length > 0) { + if (swiper.isBeginning) { + swiper.a11y.disableEl($prevEl); + } else { + swiper.a11y.enableEl($prevEl); + } + } + if ($nextEl && $nextEl.length > 0) { + if (swiper.isEnd) { + swiper.a11y.disableEl($nextEl); + } else { + swiper.a11y.enableEl($nextEl); + } + } + }, + updatePagination() { + const swiper = this; + const params = swiper.params.a11y; + if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { + swiper.pagination.bullets.each((bulletIndex, bulletEl) => { + const $bulletEl = $(bulletEl); + swiper.a11y.makeElFocusable($bulletEl); + swiper.a11y.addElRole($bulletEl, 'button'); + swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1)); + }); + } + }, + init() { + const swiper = this; + + swiper.$el.append(swiper.a11y.liveRegion); + + // Navigation + const params = swiper.params.a11y; + let $nextEl; + let $prevEl; + if (swiper.navigation && swiper.navigation.$nextEl) { + $nextEl = swiper.navigation.$nextEl; + } + if (swiper.navigation && swiper.navigation.$prevEl) { + $prevEl = swiper.navigation.$prevEl; + } + if ($nextEl) { + swiper.a11y.makeElFocusable($nextEl); + swiper.a11y.addElRole($nextEl, 'button'); + swiper.a11y.addElLabel($nextEl, params.nextSlideMessage); + $nextEl.on('keydown', swiper.a11y.onEnterKey); + } + if ($prevEl) { + swiper.a11y.makeElFocusable($prevEl); + swiper.a11y.addElRole($prevEl, 'button'); + swiper.a11y.addElLabel($prevEl, params.prevSlideMessage); + $prevEl.on('keydown', swiper.a11y.onEnterKey); + } + + // Pagination + if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { + swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey); + } + }, + destroy() { + const swiper = this; + if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove(); + + let $nextEl; + let $prevEl; + if (swiper.navigation && swiper.navigation.$nextEl) { + $nextEl = swiper.navigation.$nextEl; + } + if (swiper.navigation && swiper.navigation.$prevEl) { + $prevEl = swiper.navigation.$prevEl; + } + if ($nextEl) { + $nextEl.off('keydown', swiper.a11y.onEnterKey); + } + if ($prevEl) { + $prevEl.off('keydown', swiper.a11y.onEnterKey); + } + + // Pagination + if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { + swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey); + } + }, +}; +export default { + name: 'a11y', + params: { + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + a11y: { + liveRegion: $(``), + }, + }); + Object.keys(a11y).forEach((methodName) => { + swiper.a11y[methodName] = a11y[methodName].bind(swiper); + }); + }, + on: { + init() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.init(); + swiper.a11y.updateNavigation(); + }, + toEdge() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.updateNavigation(); + }, + fromEdge() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.updateNavigation(); + }, + paginationUpdate() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.updatePagination(); + }, + destroy() { + const swiper = this; + if (!swiper.params.a11y.enabled) return; + swiper.a11y.destroy(); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/components/a11y/a11y.less b/static/libs/swiper-5.3.8/src/components/a11y/a11y.less new file mode 100644 index 0000000..0f55f89 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/a11y/a11y.less @@ -0,0 +1,9 @@ +/* a11y */ +.swiper-container .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/static/libs/swiper-5.3.8/src/components/a11y/a11y.scss b/static/libs/swiper-5.3.8/src/components/a11y/a11y.scss new file mode 100644 index 0000000..0f55f89 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/a11y/a11y.scss @@ -0,0 +1,9 @@ +/* a11y */ +.swiper-container .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/static/libs/swiper-5.3.8/src/components/autoplay/autoplay.js b/static/libs/swiper-5.3.8/src/components/autoplay/autoplay.js new file mode 100644 index 0000000..b9d52c8 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/autoplay/autoplay.js @@ -0,0 +1,170 @@ +/* eslint no-underscore-dangle: "off" */ +import Utils from '../../utils/utils'; + +const Autoplay = { + run() { + const swiper = this; + const $activeSlideEl = swiper.slides.eq(swiper.activeIndex); + let delay = swiper.params.autoplay.delay; + if ($activeSlideEl.attr('data-swiper-autoplay')) { + delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; + } + clearTimeout(swiper.autoplay.timeout); + swiper.autoplay.timeout = Utils.nextTick(() => { + if (swiper.params.autoplay.reverseDirection) { + if (swiper.params.loop) { + swiper.loopFix(); + swiper.slidePrev(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.isBeginning) { + swiper.slidePrev(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else { + swiper.autoplay.stop(); + } + } else if (swiper.params.loop) { + swiper.loopFix(); + swiper.slideNext(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.isEnd) { + swiper.slideNext(swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, swiper.params.speed, true, true); + swiper.emit('autoplay'); + } else { + swiper.autoplay.stop(); + } + if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run(); + }, delay); + }, + start() { + const swiper = this; + if (typeof swiper.autoplay.timeout !== 'undefined') return false; + if (swiper.autoplay.running) return false; + swiper.autoplay.running = true; + swiper.emit('autoplayStart'); + swiper.autoplay.run(); + return true; + }, + stop() { + const swiper = this; + if (!swiper.autoplay.running) return false; + if (typeof swiper.autoplay.timeout === 'undefined') return false; + + if (swiper.autoplay.timeout) { + clearTimeout(swiper.autoplay.timeout); + swiper.autoplay.timeout = undefined; + } + swiper.autoplay.running = false; + swiper.emit('autoplayStop'); + return true; + }, + pause(speed) { + const swiper = this; + if (!swiper.autoplay.running) return; + if (swiper.autoplay.paused) return; + if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout); + swiper.autoplay.paused = true; + if (speed === 0 || !swiper.params.autoplay.waitForTransition) { + swiper.autoplay.paused = false; + swiper.autoplay.run(); + } else { + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); + } + }, +}; + +export default { + name: 'autoplay', + params: { + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: true, + stopOnLastSlide: false, + reverseDirection: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + autoplay: { + running: false, + paused: false, + run: Autoplay.run.bind(swiper), + start: Autoplay.start.bind(swiper), + stop: Autoplay.stop.bind(swiper), + pause: Autoplay.pause.bind(swiper), + onVisibilityChange() { + if (document.visibilityState === 'hidden' && swiper.autoplay.running) { + swiper.autoplay.pause(); + } + if (document.visibilityState === 'visible' && swiper.autoplay.paused) { + swiper.autoplay.run(); + swiper.autoplay.paused = false; + } + }, + onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); + swiper.autoplay.paused = false; + if (!swiper.autoplay.running) { + swiper.autoplay.stop(); + } else { + swiper.autoplay.run(); + } + }, + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.autoplay.enabled) { + swiper.autoplay.start(); + document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange); + } + }, + beforeTransitionStart(speed, internal) { + const swiper = this; + if (swiper.autoplay.running) { + if (internal || !swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.pause(speed); + } else { + swiper.autoplay.stop(); + } + } + }, + sliderFirstMove() { + const swiper = this; + if (swiper.autoplay.running) { + if (swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.stop(); + } else { + swiper.autoplay.pause(); + } + } + }, + touchEnd() { + const swiper = this; + if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.run(); + } + }, + destroy() { + const swiper = this; + if (swiper.autoplay.running) { + swiper.autoplay.stop(); + } + document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/components/controller/controller.js b/static/libs/swiper-5.3.8/src/components/controller/controller.js new file mode 100644 index 0000000..0c9addf --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/controller/controller.js @@ -0,0 +1,186 @@ +/* eslint no-bitwise: ["error", { "allow": [">>"] }] */ +import Swiper from '../core/core-class'; +import Utils from '../../utils/utils'; + +const Controller = { + LinearSpline: function LinearSpline(x, y) { + const binarySearch = (function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }()); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1]; + }; + return this; + }, + // xxx: for now i will just save one spline function to to + getInterpolateFunction(c) { + const swiper = this; + if (!swiper.controller.spline) { + swiper.controller.spline = swiper.params.loop + ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) + : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid); + } + }, + setTranslate(setTranslate, byController) { + const swiper = this; + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + function setControlledTranslate(c) { + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + swiper.controller.getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate(); + } + + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + }, + setTransition(duration, byController) { + const swiper = this; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + Utils.nextTick(() => { + c.updateAutoHeight(); + }); + } + c.$wrapperEl.transitionEnd(() => { + if (!controlled) return; + if (c.params.loop && swiper.params.controller.by === 'slide') { + c.loopFix(); + } + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + }, +}; +export default { + name: 'controller', + params: { + controller: { + control: undefined, + inverse: false, + by: 'slide', // or 'container' + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + controller: { + control: swiper.params.controller.control, + getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper), + setTranslate: Controller.setTranslate.bind(swiper), + setTransition: Controller.setTransition.bind(swiper), + }, + }); + }, + on: { + update() { + const swiper = this; + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + }, + resize() { + const swiper = this; + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + }, + observerUpdate() { + const swiper = this; + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + }, + setTranslate(translate, byController) { + const swiper = this; + if (!swiper.controller.control) return; + swiper.controller.setTranslate(translate, byController); + }, + setTransition(duration, byController) { + const swiper = this; + if (!swiper.controller.control) return; + swiper.controller.setTransition(duration, byController); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/components/controller/controller.less b/static/libs/swiper-5.3.8/src/components/controller/controller.less new file mode 100644 index 0000000..e69de29 diff --git a/static/libs/swiper-5.3.8/src/components/controller/controller.scss b/static/libs/swiper-5.3.8/src/components/controller/controller.scss new file mode 100644 index 0000000..e69de29 diff --git a/static/libs/swiper-5.3.8/src/components/core/breakpoints/getBreakpoint.js b/static/libs/swiper-5.3.8/src/components/core/breakpoints/getBreakpoint.js new file mode 100644 index 0000000..768f985 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/breakpoints/getBreakpoint.js @@ -0,0 +1,25 @@ +import { window } from 'ssr-window'; + +export default function (breakpoints) { + // Get breakpoint for window width + if (!breakpoints) return undefined; + let breakpoint = false; + + const points = Object.keys(breakpoints).map((point) => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = window.innerHeight * minRatio; + return { value, point }; + } + return { value: point, point }; + }); + + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { point, value } = points[i]; + if (value <= window.innerWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; +} diff --git a/static/libs/swiper-5.3.8/src/components/core/breakpoints/index.js b/static/libs/swiper-5.3.8/src/components/core/breakpoints/index.js new file mode 100644 index 0000000..08b66bb --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/breakpoints/index.js @@ -0,0 +1,4 @@ +import setBreakpoint from './setBreakpoint'; +import getBreakpoint from './getBreakpoint'; + +export default { setBreakpoint, getBreakpoint }; diff --git a/static/libs/swiper-5.3.8/src/components/core/breakpoints/setBreakpoint.js b/static/libs/swiper-5.3.8/src/components/core/breakpoints/setBreakpoint.js new file mode 100644 index 0000000..b1533a4 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/breakpoints/setBreakpoint.js @@ -0,0 +1,68 @@ +import Utils from '../../../utils/utils'; + +export default function () { + const swiper = this; + const { + activeIndex, initialized, loopedSlides = 0, params, $el, + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints); + + if (breakpoint && swiper.currentBreakpoint !== breakpoint) { + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + if (breakpointOnlyParams) { + ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => { + const paramValue = breakpointOnlyParams[param]; + if (typeof paramValue === 'undefined') return; + if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) { + breakpointOnlyParams[param] = 'auto'; + } else if (param === 'slidesPerView') { + breakpointOnlyParams[param] = parseFloat(paramValue); + } else { + breakpointOnlyParams[param] = parseInt(paramValue, 10); + } + }); + } + + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = params.slidesPerColumn > 1; + const isMultiRow = breakpointParams.slidesPerColumn > 1; + if (wasMultiRow && !isMultiRow) { + $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`); + } else if (!wasMultiRow && isMultiRow) { + $el.addClass(`${params.containerModifierClass}multirow`); + if (breakpointParams.slidesPerColumnFill === 'column') { + $el.addClass(`${params.containerModifierClass}multirow-column`); + } + } + + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + + if (directionChanged && initialized) { + swiper.changeDirection(); + } + + Utils.extend(swiper.params, breakpointParams); + + Utils.extend(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + }); + + swiper.currentBreakpoint = breakpoint; + + if (needsReLoop && initialized) { + swiper.loopDestroy(); + swiper.loopCreate(); + swiper.updateSlides(); + swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false); + } + + swiper.emit('breakpoint', breakpointParams); + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/check-overflow/index.js b/static/libs/swiper-5.3.8/src/components/core/check-overflow/index.js new file mode 100644 index 0000000..8a9d7b5 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/check-overflow/index.js @@ -0,0 +1,26 @@ + +function checkOverflow() { + const swiper = this; + const params = swiper.params; + const wasLocked = swiper.isLocked; + const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length); + + if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) { + swiper.isLocked = lastSlidePosition <= swiper.size; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + + swiper.allowSlideNext = !swiper.isLocked; + swiper.allowSlidePrev = !swiper.isLocked; + + // events + if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + swiper.navigation.update(); + } +} + +export default { checkOverflow }; diff --git a/static/libs/swiper-5.3.8/src/components/core/classes/addClasses.js b/static/libs/swiper-5.3.8/src/components/core/classes/addClasses.js new file mode 100644 index 0000000..3b14aab --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/classes/addClasses.js @@ -0,0 +1,44 @@ +import Device from '../../../utils/device'; + +export default function () { + const swiper = this; + const { + classNames, params, rtl, $el, + } = swiper; + const suffixes = []; + + suffixes.push('initialized'); + suffixes.push(params.direction); + + if (params.freeMode) { + suffixes.push('free-mode'); + } + if (params.autoHeight) { + suffixes.push('autoheight'); + } + if (rtl) { + suffixes.push('rtl'); + } + if (params.slidesPerColumn > 1) { + suffixes.push('multirow'); + if (params.slidesPerColumnFill === 'column') { + suffixes.push('multirow-column'); + } + } + if (Device.android) { + suffixes.push('android'); + } + if (Device.ios) { + suffixes.push('ios'); + } + + if (params.cssMode) { + suffixes.push('css-mode'); + } + + suffixes.forEach((suffix) => { + classNames.push(params.containerModifierClass + suffix); + }); + + $el.addClass(classNames.join(' ')); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/classes/index.js b/static/libs/swiper-5.3.8/src/components/core/classes/index.js new file mode 100644 index 0000000..32826e8 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/classes/index.js @@ -0,0 +1,4 @@ +import addClasses from './addClasses'; +import removeClasses from './removeClasses'; + +export default { addClasses, removeClasses }; diff --git a/static/libs/swiper-5.3.8/src/components/core/classes/removeClasses.js b/static/libs/swiper-5.3.8/src/components/core/classes/removeClasses.js new file mode 100644 index 0000000..699f814 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/classes/removeClasses.js @@ -0,0 +1,6 @@ +export default function () { + const swiper = this; + const { $el, classNames } = swiper; + + $el.removeClass(classNames.join(' ')); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/core-class.js b/static/libs/swiper-5.3.8/src/components/core/core-class.js new file mode 100644 index 0000000..725a4eb --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/core-class.js @@ -0,0 +1,490 @@ +/* eslint no-param-reassign: "off" */ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; +import Support from '../../utils/support'; + +import SwiperClass from '../../utils/class'; + +import update from './update/index'; +import translate from './translate/index'; +import transition from './transition/index'; +import slide from './slide/index'; +import loop from './loop/index'; +import grabCursor from './grab-cursor/index'; +import manipulation from './manipulation/index'; +import events from './events/index'; +import breakpoints from './breakpoints/index'; +import classes from './classes/index'; +import images from './images/index'; +import checkOverflow from './check-overflow/index'; + +import defaults from './defaults'; + +const prototypes = { + update, + translate, + transition, + slide, + loop, + grabCursor, + manipulation, + events, + breakpoints, + checkOverflow, + classes, + images, +}; + +const extendedDefaults = {}; + +class Swiper extends SwiperClass { + constructor(...args) { + let el; + let params; + if (args.length === 1 && args[0].constructor && args[0].constructor === Object) { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + + params = Utils.extend({}, params); + if (el && !params.el) params.el = el; + + super(params); + + Object.keys(prototypes).forEach((prototypeGroup) => { + Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => { + if (!Swiper.prototype[protoMethod]) { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + } + }); + }); + + // Swiper Instance + const swiper = this; + if (typeof swiper.modules === 'undefined') { + swiper.modules = {}; + } + Object.keys(swiper.modules).forEach((moduleName) => { + const module = swiper.modules[moduleName]; + if (module.params) { + const moduleParamName = Object.keys(module.params)[0]; + const moduleParams = module.params[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) return; + if (!(moduleParamName in params && 'enabled' in moduleParams)) return; + if (params[moduleParamName] === true) { + params[moduleParamName] = { enabled: true }; + } + if ( + typeof params[moduleParamName] === 'object' + && !('enabled' in params[moduleParamName]) + ) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { enabled: false }; + } + }); + + // Extend defaults with modules params + const swiperParams = Utils.extend({}, defaults); + swiper.useModulesParams(swiperParams); + + // Extend defaults with passed params + swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = Utils.extend({}, swiper.params); + swiper.passedParams = Utils.extend({}, params); + + // Save Dom lib + swiper.$ = $; + + // Find el + const $el = $(swiper.params.el); + el = $el[0]; + + if (!el) { + return undefined; + } + + if ($el.length > 1) { + const swipers = []; + $el.each((index, containerEl) => { + const newParams = Utils.extend({}, params, { el: containerEl }); + swipers.push(new Swiper(newParams)); + }); + return swipers; + } + + el.swiper = swiper; + $el.data('swiper', swiper); + + // Find Wrapper + let $wrapperEl; + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`)); + // Children needs to return slot items + $wrapperEl.children = (options) => $el.children(options); + } else { + $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`); + } + // Extend Swiper + Utils.extend(swiper, { + $el, + el, + $wrapperEl, + wrapperEl: $wrapperEl[0], + + // Classes + classNames: [], + + // Slides + slides: $(), + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // RTL + rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), + wrongRTL: $wrapperEl.css('display') === '-webkit-box', + + // Indexes + activeIndex: 0, + realIndex: 0, + + // + isBeginning: true, + isEnd: false, + + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + + // Touch Events + touchEvents: (function touchEvents() { + const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel']; + let desktop = ['mousedown', 'mousemove', 'mouseup']; + if (Support.pointerEvents) { + desktop = ['pointerdown', 'pointermove', 'pointerup']; + } + swiper.touchEventsTouch = { + start: touch[0], + move: touch[1], + end: touch[2], + cancel: touch[3], + }; + swiper.touchEventsDesktop = { + start: desktop[0], + move: desktop[1], + end: desktop[2], + }; + return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; + }()), + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + formElements: 'input, select, option, textarea, button, video, label', + // Last click time + lastClickTime: Utils.now(), + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + isTouchEvent: undefined, + startMoving: undefined, + }, + + // Clicks + allowClick: true, + + // Touches + allowTouchMove: swiper.params.allowTouchMove, + + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0, + }, + + // Images + imagesToLoad: [], + imagesLoaded: 0, + + }); + + // Install Modules + swiper.useModules(); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + return swiper; + } + + slidesPerViewDynamic() { + const swiper = this; + const { + params, slides, slidesGrid, size: swiperSize, activeIndex, + } = swiper; + let spv = 1; + if (params.centeredSlides) { + let slideSize = slides[activeIndex].swiperSlideSize; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) { + spv += 1; + } + } + } + return spv; + } + + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { snapGrid, params } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (swiper.params.freeMode) { + setTranslate(); + if (swiper.params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { + translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + + changeDirection(newDirection, needUpdate = true) { + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) { + return swiper; + } + + swiper.$el + .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`) + .addClass(`${swiper.params.containerModifierClass}${newDirection}`); + + swiper.params.direction = newDirection; + + swiper.slides.each((slideIndex, slideEl) => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + + return swiper; + } + + init() { + const swiper = this; + if (swiper.initialized) return; + + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + + if (swiper.params.preloadImages) { + swiper.preloadImages(); + } + + // Slide To Initial Slide + if (swiper.params.loop) { + swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit); + } + + // Attach events + swiper.attachEvents(); + + // Init Flag + swiper.initialized = true; + + // Emit + swiper.emit('init'); + } + + destroy(deleteInstance = true, cleanStyles = true) { + const swiper = this; + const { + params, $el, $wrapperEl, slides, + } = swiper; + + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + $el.removeAttr('style'); + $wrapperEl.removeAttr('style'); + if (slides && slides.length) { + slides + .removeClass([ + params.slideVisibleClass, + params.slideActiveClass, + params.slideNextClass, + params.slidePrevClass, + ].join(' ')) + .removeAttr('style') + .removeAttr('data-swiper-slide-index'); + } + } + + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach((eventName) => { + swiper.off(eventName); + }); + + if (deleteInstance !== false) { + swiper.$el[0].swiper = null; + swiper.$el.data('swiper', null); + Utils.deleteProps(swiper); + } + swiper.destroyed = true; + + return null; + } + + static extendDefaults(newDefaults) { + Utils.extend(extendedDefaults, newDefaults); + } + + static get extendedDefaults() { + return extendedDefaults; + } + + static get defaults() { + return defaults; + } + + static get Class() { + return SwiperClass; + } + + static get $() { + return $; + } +} + +export default Swiper; diff --git a/static/libs/swiper-5.3.8/src/components/core/core.less b/static/libs/swiper-5.3.8/src/components/core/core.less new file mode 100644 index 0000000..e5fcf28 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/core.less @@ -0,0 +1,111 @@ +:root { + --swiper-theme-color: @themeColor; +} +.swiper-container { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index:1; +} +.swiper-container-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position:relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property:transform; + box-sizing: content-box; +} +.swiper-container-android .swiper-slide, .swiper-wrapper { + transform:translate3d(0px,0,0); +} +.swiper-container-multirow > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-container-multirow-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} +.swiper-container-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-container-autoheight, .swiper-container-autoheight .swiper-slide { + height: auto; +} +.swiper-container-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} + +/* 3D Effects */ +.swiper-container-3d { + perspective: 1200px; + .swiper-wrapper, .swiper-slide, .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-cube-shadow { + transform-style: preserve-3d; + } + .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } +} + +/* CSS Mode */ +.swiper-container-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } +} +.swiper-container-horizontal.swiper-container-css-mode { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } +} +.swiper-container-vertical.swiper-container-css-mode { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/core.scss b/static/libs/swiper-5.3.8/src/components/core/core.scss new file mode 100644 index 0000000..e4df1f2 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/core.scss @@ -0,0 +1,115 @@ +:root { + --swiper-theme-color: #{$themeColor}; +} +.swiper-container { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index:1; +} +.swiper-container-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position:relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property:transform; + box-sizing: content-box; +} +.swiper-container-android .swiper-slide, +.swiper-wrapper { + transform:translate3d(0px,0,0); +} +.swiper-container-multirow > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-container-multirow-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} +.swiper-container-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-container-autoheight { + &, .swiper-slide { + height: auto; + } + + .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; + } +} + +/* 3D Effects */ +.swiper-container-3d { + perspective: 1200px; + .swiper-wrapper, .swiper-slide, .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-cube-shadow { + transform-style: preserve-3d; + } + .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0,0,0,0.5), rgba(0,0,0,0)); + } +} + +/* CSS Mode */ +.swiper-container-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } +} +.swiper-container-horizontal.swiper-container-css-mode { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } +} +.swiper-container-vertical.swiper-container-css-mode { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/defaults.js b/static/libs/swiper-5.3.8/src/components/core/defaults.js new file mode 100644 index 0000000..0fa443c --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/defaults.js @@ -0,0 +1,133 @@ +export default { + init: true, + direction: 'horizontal', + touchEventsTarget: 'container', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + // + preventInteractionOnTransition: false, + + // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + + // Free mode + freeMode: false, + freeModeMomentum: true, + freeModeMomentumRatio: 1, + freeModeMomentumBounce: true, + freeModeMomentumBounceRatio: 1, + freeModeMomentumVelocityRatio: 1, + freeModeSticky: false, + freeModeMinimumVelocity: 0.02, + + // Autoheight + autoHeight: false, + + // Set wrapper width + setWrapperSize: false, + + // Virtual Translate + virtualTranslate: false, + + // Effects + effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerColumnFill: 'column', + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, // in px + slidesOffsetAfter: 0, // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + + // Disable swiper and hide navigation when container not overflow + watchOverflow: false, + + // Round length + roundLengths: false, + + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 0, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + + // Unique Navigation Elements + uniqueNavElements: true, + + // Resistance + resistance: true, + resistanceRatio: 0.85, + + // Progress + watchSlidesProgress: false, + watchSlidesVisibility: false, + + // Cursor + grabCursor: false, + + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + + // Images + preloadImages: true, + updateOnImagesReady: true, + + // loop + loop: false, + loopAdditionalSlides: 0, + loopedSlides: null, + loopFillGroupWithBlank: false, + + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + + // Passive Listeners + passiveListeners: true, + + // NS + containerModifierClass: 'swiper-container-', // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-invisible-blank', + slideActiveClass: 'swiper-slide-active', + slideDuplicateActiveClass: 'swiper-slide-duplicate-active', + slideVisibleClass: 'swiper-slide-visible', + slideDuplicateClass: 'swiper-slide-duplicate', + slideNextClass: 'swiper-slide-next', + slideDuplicateNextClass: 'swiper-slide-duplicate-next', + slidePrevClass: 'swiper-slide-prev', + slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', + wrapperClass: 'swiper-wrapper', + + // Callbacks + runCallbacksOnInit: true, +}; diff --git a/static/libs/swiper-5.3.8/src/components/core/events/index.js b/static/libs/swiper-5.3.8/src/components/core/events/index.js new file mode 100644 index 0000000..29e18b5 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/events/index.js @@ -0,0 +1,119 @@ +import { document } from 'ssr-window'; +import Device from '../../../utils/device'; +import Support from '../../../utils/support'; + +import onTouchStart from './onTouchStart'; +import onTouchMove from './onTouchMove'; +import onTouchEnd from './onTouchEnd'; +import onResize from './onResize'; +import onClick from './onClick'; +import onScroll from './onScroll'; + +let dummyEventAttached = false; +function dummyEventListener() {} + +function attachEvents() { + const swiper = this; + const { + params, touchEvents, el, wrapperEl, + } = swiper; + + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + + swiper.onClick = onClick.bind(swiper); + + const capture = !!params.nested; + + // Touch Events + if (!Support.touch && Support.pointerEvents) { + el.addEventListener(touchEvents.start, swiper.onTouchStart, false); + document.addEventListener(touchEvents.move, swiper.onTouchMove, capture); + document.addEventListener(touchEvents.end, swiper.onTouchEnd, false); + } else { + if (Support.touch) { + const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); + el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture); + el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); + if (touchEvents.cancel) { + el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener); + } + if (!dummyEventAttached) { + document.addEventListener('touchstart', dummyEventListener); + dummyEventAttached = true; + } + } + if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { + el.addEventListener('mousedown', swiper.onTouchStart, false); + document.addEventListener('mousemove', swiper.onTouchMove, capture); + document.addEventListener('mouseup', swiper.onTouchEnd, false); + } + } + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el.addEventListener('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl.addEventListener('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true); + } else { + swiper.on('observerUpdate', onResize, true); + } +} + +function detachEvents() { + const swiper = this; + + const { + params, touchEvents, el, wrapperEl, + } = swiper; + + const capture = !!params.nested; + + // Touch Events + if (!Support.touch && Support.pointerEvents) { + el.removeEventListener(touchEvents.start, swiper.onTouchStart, false); + document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); + document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false); + } else { + if (Support.touch) { + const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); + el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); + el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); + if (touchEvents.cancel) { + el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener); + } + } + if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { + el.removeEventListener('mousedown', swiper.onTouchStart, false); + document.removeEventListener('mousemove', swiper.onTouchMove, capture); + document.removeEventListener('mouseup', swiper.onTouchEnd, false); + } + } + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el.removeEventListener('click', swiper.onClick, true); + } + + if (params.cssMode) { + wrapperEl.removeEventListener('scroll', swiper.onScroll); + } + + // Resize handler + swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize); +} + +export default { + attachEvents, + detachEvents, +}; diff --git a/static/libs/swiper-5.3.8/src/components/core/events/onClick.js b/static/libs/swiper-5.3.8/src/components/core/events/onClick.js new file mode 100644 index 0000000..a6084ea --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/events/onClick.js @@ -0,0 +1,10 @@ +export default function (e) { + const swiper = this; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/events/onResize.js b/static/libs/swiper-5.3.8/src/components/core/events/onResize.js new file mode 100644 index 0000000..1f736bb --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/events/onResize.js @@ -0,0 +1,40 @@ +export default function () { + const swiper = this; + + const { params, el } = swiper; + + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { allowSlideNext, allowSlidePrev, snapGrid } = swiper; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + + swiper.updateSize(); + swiper.updateSlides(); + + swiper.updateSlidesClasses(); + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.run(); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/events/onScroll.js b/static/libs/swiper-5.3.8/src/components/core/events/onScroll.js new file mode 100644 index 0000000..70323e9 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/events/onScroll.js @@ -0,0 +1,32 @@ +export default function () { + const swiper = this; + const { wrapperEl, rtlTranslate } = swiper; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + if (rtlTranslate) { + swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft); + } else { + swiper.translate = -wrapperEl.scrollLeft; + } + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === -0) swiper.translate = 0; + + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff); + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + + swiper.emit('setTranslate', swiper.translate, false); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/events/onTouchEnd.js b/static/libs/swiper-5.3.8/src/components/core/events/onTouchEnd.js new file mode 100644 index 0000000..df570aa --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/events/onTouchEnd.js @@ -0,0 +1,293 @@ +import Utils from '../../../utils/utils'; + +export default function (event) { + const swiper = this; + const data = swiper.touchEventsData; + + const { + params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid, + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = Utils.now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + swiper.updateClickedSlide(e); + swiper.emit('tap click', e); + if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + + data.lastClickTime = Utils.now(); + Utils.nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + + if (params.cssMode) { + return; + } + + if (params.freeMode) { + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + + if (params.freeModeMomentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeModeMomentumVelocityRatio; + + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeModeMomentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeModeMomentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeModeMomentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeModeSticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + swiper.once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeModeSticky) { + // If freeModeSticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeModeSticky) { + swiper.slideToClosest(); + return; + } + + if (params.freeModeMomentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + swiper.emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeModeSticky) { + swiper.slideToClosest(); + return; + } + + if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) { + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + return; + } + + // Find current slide + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) { + const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup); + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup); + + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment); + else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment); + else swiper.slideTo(stopIndex); + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/events/onTouchMove.js b/static/libs/swiper-5.3.8/src/components/core/events/onTouchMove.js new file mode 100644 index 0000000..757b768 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/events/onTouchMove.js @@ -0,0 +1,207 @@ +import { document } from 'ssr-window'; +import $ from '../../../utils/dom'; +import Utils from '../../../utils/utils'; + +export default function (event) { + const swiper = this; + const data = swiper.touchEventsData; + const { params, touches, rtlTranslate: rtl } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + if (data.isTouchEvent && e.type === 'mousemove') return; + const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]); + const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX; + const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + // isMoved = true; + swiper.allowClick = false; + if (data.isTouched) { + Utils.extend(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + }); + data.touchStartTime = Utils.now(); + } + return; + } + if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if ( + (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) + || (pageY > touches.startY && swiper.translate >= swiper.minTranslate()) + ) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if ( + (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) + || (pageX > touches.startX && swiper.translate >= swiper.minTranslate()) + ) { + return; + } + } + if (data.isTouchEvent && document.activeElement) { + if (e.target === document.activeElement && $(e.target).is(data.formElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + if (e.targetTouches && e.targetTouches.length > 1) return; + + touches.currentX = pageX; + touches.currentY = pageY; + + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return; + + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if ((diffX * diffX) + (diffY * diffY) >= 25) { + touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle); + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + + if (!data.isMoved) { + if (params.loop) { + swiper.loopFix(); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + swiper.emit('sliderMove', e); + data.isMoved = true; + + let diff = swiper.isHorizontal() ? diffX : diffY; + touches.diff = diff; + + diff *= params.touchRatio; + if (rtl) diff = -diff; + + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + data.currentTranslate = diff + data.startTranslate; + + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) { + disableParentSwiper = false; + if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio); + } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio); + } + + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode) { + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime, + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: Utils.now(), + }); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/events/onTouchStart.js b/static/libs/swiper-5.3.8/src/components/core/events/onTouchStart.js new file mode 100644 index 0000000..b71a28a --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/events/onTouchStart.js @@ -0,0 +1,81 @@ +import { window, document } from 'ssr-window'; +import $ from '../../../utils/dom'; +import Utils from '../../../utils/utils'; + +export default function (event) { + const swiper = this; + const data = swiper.touchEventsData; + const { params, touches } = swiper; + + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + let e = event; + if (e.originalEvent) e = e.originalEvent; + const $targetEl = $(e.target); + + if (params.touchEventsTarget === 'wrapper') { + if (!$targetEl.closest(swiper.wrapperEl).length) return; + } + data.isTouchEvent = e.type === 'touchstart'; + if (!data.isTouchEvent && 'which' in e && e.which === 3) return; + if (!data.isTouchEvent && 'button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!$targetEl.closest(params.swipeHandler)[0]) return; + } + + touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; + touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore + + const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; + if ( + edgeSwipeDetection + && ((startX <= edgeSwipeThreshold) + || (startX >= window.screen.width - edgeSwipeThreshold)) + ) { + return; + } + + Utils.extend(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined, + }); + + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = Utils.now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + if (e.type !== 'touchstart') { + let preventDefault = true; + if ($targetEl.is(data.formElements)) preventDefault = false; + if ( + document.activeElement + && $(document.activeElement).is(data.formElements) + && document.activeElement !== $targetEl[0] + ) { + document.activeElement.blur(); + } + + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if (params.touchStartForcePreventDefault || shouldPreventDefault) { + e.preventDefault(); + } + } + swiper.emit('touchStart', e); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/grab-cursor/index.js b/static/libs/swiper-5.3.8/src/components/core/grab-cursor/index.js new file mode 100644 index 0000000..57592d3 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/grab-cursor/index.js @@ -0,0 +1,7 @@ +import setGrabCursor from './setGrabCursor'; +import unsetGrabCursor from './unsetGrabCursor'; + +export default { + setGrabCursor, + unsetGrabCursor, +}; diff --git a/static/libs/swiper-5.3.8/src/components/core/grab-cursor/setGrabCursor.js b/static/libs/swiper-5.3.8/src/components/core/grab-cursor/setGrabCursor.js new file mode 100644 index 0000000..aec4020 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/grab-cursor/setGrabCursor.js @@ -0,0 +1,11 @@ +import Support from '../../../utils/support'; + +export default function (moving) { + const swiper = this; + if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return; + const el = swiper.el; + el.style.cursor = 'move'; + el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab'; + el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab'; + el.style.cursor = moving ? 'grabbing' : 'grab'; +} diff --git a/static/libs/swiper-5.3.8/src/components/core/grab-cursor/unsetGrabCursor.js b/static/libs/swiper-5.3.8/src/components/core/grab-cursor/unsetGrabCursor.js new file mode 100644 index 0000000..945121f --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/grab-cursor/unsetGrabCursor.js @@ -0,0 +1,7 @@ +import Support from '../../../utils/support'; + +export default function () { + const swiper = this; + if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return; + swiper.el.style.cursor = ''; +} diff --git a/static/libs/swiper-5.3.8/src/components/core/images/index.js b/static/libs/swiper-5.3.8/src/components/core/images/index.js new file mode 100644 index 0000000..1a889f6 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/images/index.js @@ -0,0 +1,7 @@ +import loadImage from './loadImage'; +import preloadImages from './preloadImages'; + +export default { + loadImage, + preloadImages, +}; diff --git a/static/libs/swiper-5.3.8/src/components/core/images/loadImage.js b/static/libs/swiper-5.3.8/src/components/core/images/loadImage.js new file mode 100644 index 0000000..4d5c98a --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/images/loadImage.js @@ -0,0 +1,29 @@ +import { window } from 'ssr-window'; + +export default function (imageEl, src, srcset, sizes, checkForComplete, callback) { + let image; + function onReady() { + if (callback) callback(); + } + if (!imageEl.complete || !checkForComplete) { + if (src) { + image = new window.Image(); + image.onload = onReady; + image.onerror = onReady; + if (sizes) { + image.sizes = sizes; + } + if (srcset) { + image.srcset = srcset; + } + if (src) { + image.src = src; + } + } else { + onReady(); + } + } else { + // image already loaded... + onReady(); + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/images/preloadImages.js b/static/libs/swiper-5.3.8/src/components/core/images/preloadImages.js new file mode 100644 index 0000000..b6f1db4 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/images/preloadImages.js @@ -0,0 +1,23 @@ +export default function () { + const swiper = this; + swiper.imagesToLoad = swiper.$el.find('img'); + function onReady() { + if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return; + if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1; + if (swiper.imagesLoaded === swiper.imagesToLoad.length) { + if (swiper.params.updateOnImagesReady) swiper.update(); + swiper.emit('imagesReady'); + } + } + for (let i = 0; i < swiper.imagesToLoad.length; i += 1) { + const imageEl = swiper.imagesToLoad[i]; + swiper.loadImage( + imageEl, + imageEl.currentSrc || imageEl.getAttribute('src'), + imageEl.srcset || imageEl.getAttribute('srcset'), + imageEl.sizes || imageEl.getAttribute('sizes'), + true, + onReady + ); + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/loop/index.js b/static/libs/swiper-5.3.8/src/components/core/loop/index.js new file mode 100644 index 0000000..2bde084 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/loop/index.js @@ -0,0 +1,9 @@ +import loopCreate from './loopCreate'; +import loopFix from './loopFix'; +import loopDestroy from './loopDestroy'; + +export default { + loopCreate, + loopFix, + loopDestroy, +}; diff --git a/static/libs/swiper-5.3.8/src/components/core/loop/loopCreate.js b/static/libs/swiper-5.3.8/src/components/core/loop/loopCreate.js new file mode 100644 index 0000000..ac427d6 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/loop/loopCreate.js @@ -0,0 +1,45 @@ +import { document } from 'ssr-window'; +import $ from '../../../utils/dom'; + +export default function () { + const swiper = this; + const { params, $wrapperEl } = swiper; + // Remove duplicated slides + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove(); + + let slides = $wrapperEl.children(`.${params.slideClass}`); + + if (params.loopFillGroupWithBlank) { + const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup); + if (blankSlidesNum !== params.slidesPerGroup) { + for (let i = 0; i < blankSlidesNum; i += 1) { + const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`); + $wrapperEl.append(blankNode); + } + slides = $wrapperEl.children(`.${params.slideClass}`); + } + } + + if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length; + + swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10)); + swiper.loopedSlides += params.loopAdditionalSlides; + if (swiper.loopedSlides > slides.length) { + swiper.loopedSlides = slides.length; + } + + const prependSlides = []; + const appendSlides = []; + slides.each((index, el) => { + const slide = $(el); + if (index < swiper.loopedSlides) appendSlides.push(el); + if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el); + slide.attr('data-swiper-slide-index', index); + }); + for (let i = 0; i < appendSlides.length; i += 1) { + $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); + } + for (let i = prependSlides.length - 1; i >= 0; i -= 1) { + $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/loop/loopDestroy.js b/static/libs/swiper-5.3.8/src/components/core/loop/loopDestroy.js new file mode 100644 index 0000000..a501936 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/loop/loopDestroy.js @@ -0,0 +1,6 @@ +export default function () { + const swiper = this; + const { $wrapperEl, params, slides } = swiper; + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove(); + slides.removeAttr('data-swiper-slide-index'); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/loop/loopFix.js b/static/libs/swiper-5.3.8/src/components/core/loop/loopFix.js new file mode 100644 index 0000000..ce1c2f7 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/loop/loopFix.js @@ -0,0 +1,37 @@ +export default function () { + const swiper = this; + + swiper.emit('beforeLoopFix'); + + const { + activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl, + } = swiper; + let newIndex; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + + const snapTranslate = -snapGrid[activeIndex]; + const diff = snapTranslate - swiper.getTranslate(); + + // Fix For Negative Oversliding + if (activeIndex < loopedSlides) { + newIndex = (slides.length - (loopedSlides * 3)) + activeIndex; + newIndex += loopedSlides; + const slideChanged = swiper.slideTo(newIndex, 0, false, true); + if (slideChanged && diff !== 0) { + swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); + } + } else if (activeIndex >= slides.length - loopedSlides) { + // Fix For Positive Oversliding + newIndex = -slides.length + activeIndex + loopedSlides; + newIndex += loopedSlides; + const slideChanged = swiper.slideTo(newIndex, 0, false, true); + if (slideChanged && diff !== 0) { + swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + + swiper.emit('loopFix'); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/manipulation/addSlide.js b/static/libs/swiper-5.3.8/src/components/core/manipulation/addSlide.js new file mode 100644 index 0000000..3f8eef2 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/manipulation/addSlide.js @@ -0,0 +1,54 @@ +import Support from '../../../utils/support'; + +export default function (index, slides) { + const swiper = this; + const { $wrapperEl, params, activeIndex } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.slides = $wrapperEl.children(`.${params.slideClass}`); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides.eq(i); + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + $wrapperEl.append(slides); + } + + for (let i = 0; i < slidesBuffer.length; i += 1) { + $wrapperEl.append(slidesBuffer[i]); + } + + if (params.loop) { + swiper.loopCreate(); + } + if (!(params.observer && Support.observer)) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/manipulation/appendSlide.js b/static/libs/swiper-5.3.8/src/components/core/manipulation/appendSlide.js new file mode 100644 index 0000000..12447be --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/manipulation/appendSlide.js @@ -0,0 +1,22 @@ +import Support from '../../../utils/support'; + +export default function (slides) { + const swiper = this; + const { $wrapperEl, params } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.append(slides[i]); + } + } else { + $wrapperEl.append(slides); + } + if (params.loop) { + swiper.loopCreate(); + } + if (!(params.observer && Support.observer)) { + swiper.update(); + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/manipulation/index.js b/static/libs/swiper-5.3.8/src/components/core/manipulation/index.js new file mode 100644 index 0000000..39706b4 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/manipulation/index.js @@ -0,0 +1,13 @@ +import appendSlide from './appendSlide'; +import prependSlide from './prependSlide'; +import addSlide from './addSlide'; +import removeSlide from './removeSlide'; +import removeAllSlides from './removeAllSlides'; + +export default { + appendSlide, + prependSlide, + addSlide, + removeSlide, + removeAllSlides, +}; diff --git a/static/libs/swiper-5.3.8/src/components/core/manipulation/prependSlide.js b/static/libs/swiper-5.3.8/src/components/core/manipulation/prependSlide.js new file mode 100644 index 0000000..235565a --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/manipulation/prependSlide.js @@ -0,0 +1,26 @@ +import Support from '../../../utils/support'; + +export default function (slides) { + const swiper = this; + const { params, $wrapperEl, activeIndex } = swiper; + + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.prepend(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + $wrapperEl.prepend(slides); + } + if (params.loop) { + swiper.loopCreate(); + } + if (!(params.observer && Support.observer)) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/manipulation/removeAllSlides.js b/static/libs/swiper-5.3.8/src/components/core/manipulation/removeAllSlides.js new file mode 100644 index 0000000..307d580 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/manipulation/removeAllSlides.js @@ -0,0 +1,9 @@ +export default function () { + const swiper = this; + + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/manipulation/removeSlide.js b/static/libs/swiper-5.3.8/src/components/core/manipulation/removeSlide.js new file mode 100644 index 0000000..90cb268 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/manipulation/removeSlide.js @@ -0,0 +1,42 @@ +import Support from '../../../utils/support'; + +export default function (slidesIndexes) { + const swiper = this; + const { params, $wrapperEl, activeIndex } = swiper; + + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.slides = $wrapperEl.children(`.${params.slideClass}`); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + + if (params.loop) { + swiper.loopCreate(); + } + + if (!(params.observer && Support.observer)) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/slide/index.js b/static/libs/swiper-5.3.8/src/components/core/slide/index.js new file mode 100644 index 0000000..a2b14c2 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/slide/index.js @@ -0,0 +1,17 @@ +import slideTo from './slideTo'; +import slideToLoop from './slideToLoop'; +import slideNext from './slideNext'; +import slidePrev from './slidePrev'; +import slideReset from './slideReset'; +import slideToClosest from './slideToClosest'; +import slideToClickedSlide from './slideToClickedSlide'; + +export default { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide, +}; diff --git a/static/libs/swiper-5.3.8/src/components/core/slide/slideNext.js b/static/libs/swiper-5.3.8/src/components/core/slide/slideNext.js new file mode 100644 index 0000000..79b55bd --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/slide/slideNext.js @@ -0,0 +1,13 @@ +/* eslint no-unused-vars: "off" */ +export default function (speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + const { params, animating } = swiper; + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup; + if (params.loop) { + if (animating) return false; + swiper.loopFix(); + // eslint-disable-next-line + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/slide/slidePrev.js b/static/libs/swiper-5.3.8/src/components/core/slide/slidePrev.js new file mode 100644 index 0000000..66880c4 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/slide/slidePrev.js @@ -0,0 +1,36 @@ +/* eslint no-unused-vars: "off" */ +export default function (speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + const { + params, animating, snapGrid, slidesGrid, rtlTranslate, + } = swiper; + + if (params.loop) { + if (animating) return false; + swiper.loopFix(); + // eslint-disable-next-line + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map((val) => normalize(val)); + const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val)); + + const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)]; + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + snapGrid.forEach((snap) => { + if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap; + }); + } + let prevIndex; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/slide/slideReset.js b/static/libs/swiper-5.3.8/src/components/core/slide/slideReset.js new file mode 100644 index 0000000..90154f9 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/slide/slideReset.js @@ -0,0 +1,5 @@ +/* eslint no-unused-vars: "off" */ +export default function (speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/slide/slideTo.js b/static/libs/swiper-5.3.8/src/components/core/slide/slideTo.js new file mode 100644 index 0000000..3d91589 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/slide/slideTo.js @@ -0,0 +1,123 @@ +export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + + const { + params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl, + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + + if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + const translate = -snapGrid[snapIndex]; + + // Update progress + swiper.updateProgress(translate); + + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) return false; + } + } + + let direction; + if (slideIndex > activeIndex) direction = 'next'; + else if (slideIndex < activeIndex) direction = 'prev'; + else direction = 'reset'; + + + // Update Index + if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + let t = -translate; + if (rtl) { + t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t; + } + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } else { + // eslint-disable-next-line + if (wrapperEl.scrollTo) { + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth', + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + } + return true; + } + + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } else { + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); + } + } + + return true; +} diff --git a/static/libs/swiper-5.3.8/src/components/core/slide/slideToClickedSlide.js b/static/libs/swiper-5.3.8/src/components/core/slide/slideToClickedSlide.js new file mode 100644 index 0000000..0afd3d0 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/slide/slideToClickedSlide.js @@ -0,0 +1,47 @@ +import $ from '../../../utils/dom'; +import Utils from '../../../utils/utils'; + +export default function () { + const swiper = this; + const { params, $wrapperEl } = swiper; + + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if ( + (slideToIndex < swiper.loopedSlides - (slidesPerView / 2)) + || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2)) + ) { + swiper.loopFix(); + slideToIndex = $wrapperEl + .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`) + .eq(0) + .index(); + + Utils.nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = $wrapperEl + .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`) + .eq(0) + .index(); + + Utils.nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/slide/slideToClosest.js b/static/libs/swiper-5.3.8/src/components/core/slide/slideToClosest.js new file mode 100644 index 0000000..75e5564 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/slide/slideToClosest.js @@ -0,0 +1,31 @@ +/* eslint no-unused-vars: "off" */ +export default function (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) { + const swiper = this; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + + return swiper.slideTo(index, speed, runCallbacks, internal); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/slide/slideToLoop.js b/static/libs/swiper-5.3.8/src/components/core/slide/slideToLoop.js new file mode 100644 index 0000000..66e258e --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/slide/slideToLoop.js @@ -0,0 +1,9 @@ +export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) { + const swiper = this; + let newIndex = index; + if (swiper.params.loop) { + newIndex += swiper.loopedSlides; + } + + return swiper.slideTo(newIndex, speed, runCallbacks, internal); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/transition/index.js b/static/libs/swiper-5.3.8/src/components/core/transition/index.js new file mode 100644 index 0000000..a3be57f --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/transition/index.js @@ -0,0 +1,9 @@ +import setTransition from './setTransition'; +import transitionStart from './transitionStart'; +import transitionEnd from './transitionEnd'; + +export default { + setTransition, + transitionStart, + transitionEnd, +}; diff --git a/static/libs/swiper-5.3.8/src/components/core/transition/setTransition.js b/static/libs/swiper-5.3.8/src/components/core/transition/setTransition.js new file mode 100644 index 0000000..b31ba79 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/transition/setTransition.js @@ -0,0 +1,9 @@ +export default function (duration, byController) { + const swiper = this; + + if (!swiper.params.cssMode) { + swiper.$wrapperEl.transition(duration); + } + + swiper.emit('setTransition', duration, byController); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/transition/transitionEnd.js b/static/libs/swiper-5.3.8/src/components/core/transition/transitionEnd.js new file mode 100644 index 0000000..b367194 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/transition/transitionEnd.js @@ -0,0 +1,29 @@ +export default function (runCallbacks = true, direction) { + const swiper = this; + const { activeIndex, previousIndex, params } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next'; + else if (activeIndex < previousIndex) dir = 'prev'; + else dir = 'reset'; + } + + swiper.emit('transitionEnd'); + + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit('slideResetTransitionEnd'); + return; + } + swiper.emit('slideChangeTransitionEnd'); + if (dir === 'next') { + swiper.emit('slideNextTransitionEnd'); + } else { + swiper.emit('slidePrevTransitionEnd'); + } + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/transition/transitionStart.js b/static/libs/swiper-5.3.8/src/components/core/transition/transitionStart.js new file mode 100644 index 0000000..f0b3976 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/transition/transitionStart.js @@ -0,0 +1,30 @@ +export default function (runCallbacks = true, direction) { + const swiper = this; + const { activeIndex, params, previousIndex } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next'; + else if (activeIndex < previousIndex) dir = 'prev'; + else dir = 'reset'; + } + + swiper.emit('transitionStart'); + + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit('slideResetTransitionStart'); + return; + } + swiper.emit('slideChangeTransitionStart'); + if (dir === 'next') { + swiper.emit('slideNextTransitionStart'); + } else { + swiper.emit('slidePrevTransitionStart'); + } + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/translate/getTranslate.js b/static/libs/swiper-5.3.8/src/components/core/translate/getTranslate.js new file mode 100644 index 0000000..25cb219 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/translate/getTranslate.js @@ -0,0 +1,21 @@ +import Utils from '../../../utils/utils'; + +export default function (axis = this.isHorizontal() ? 'x' : 'y') { + const swiper = this; + + const { + params, rtlTranslate: rtl, translate, $wrapperEl, + } = swiper; + + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + + let currentTranslate = Utils.getTranslate($wrapperEl[0], axis); + if (rtl) currentTranslate = -currentTranslate; + + return currentTranslate || 0; +} diff --git a/static/libs/swiper-5.3.8/src/components/core/translate/index.js b/static/libs/swiper-5.3.8/src/components/core/translate/index.js new file mode 100644 index 0000000..3ca685d --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/translate/index.js @@ -0,0 +1,13 @@ +import getTranslate from './getTranslate'; +import setTranslate from './setTranslate'; +import minTranslate from './minTranslate'; +import maxTranslate from './maxTranslate'; +import translateTo from './translateTo'; + +export default { + getTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo, +}; diff --git a/static/libs/swiper-5.3.8/src/components/core/translate/maxTranslate.js b/static/libs/swiper-5.3.8/src/components/core/translate/maxTranslate.js new file mode 100644 index 0000000..1e07edb --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/translate/maxTranslate.js @@ -0,0 +1,3 @@ +export default function () { + return (-this.snapGrid[this.snapGrid.length - 1]); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/translate/minTranslate.js b/static/libs/swiper-5.3.8/src/components/core/translate/minTranslate.js new file mode 100644 index 0000000..99cb93b --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/translate/minTranslate.js @@ -0,0 +1,3 @@ +export default function () { + return (-this.snapGrid[0]); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/translate/setTranslate.js b/static/libs/swiper-5.3.8/src/components/core/translate/setTranslate.js new file mode 100644 index 0000000..71252d0 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/translate/setTranslate.js @@ -0,0 +1,42 @@ +export default function (translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress, + } = swiper; + let x = 0; + let y = 0; + const z = 0; + + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / (translatesDiff); + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + + swiper.emit('setTranslate', swiper.translate, byController); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/translate/translateTo.js b/static/libs/swiper-5.3.8/src/components/core/translate/translateTo.js new file mode 100644 index 0000000..51b1802 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/translate/translateTo.js @@ -0,0 +1,76 @@ +export default function (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) { + const swiper = this; + + const { + params, + wrapperEl, + } = swiper; + + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate; + else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate; + else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + // eslint-disable-next-line + if (wrapperEl.scrollTo) { + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth', + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } + } + return true; + } + + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); + } + } + + return true; +} diff --git a/static/libs/swiper-5.3.8/src/components/core/update/index.js b/static/libs/swiper-5.3.8/src/components/core/update/index.js new file mode 100644 index 0000000..6a7fffa --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/update/index.js @@ -0,0 +1,21 @@ +import updateSize from './updateSize'; +import updateSlides from './updateSlides'; +import updateAutoHeight from './updateAutoHeight'; +import updateSlidesOffset from './updateSlidesOffset'; +import updateSlidesProgress from './updateSlidesProgress'; +import updateProgress from './updateProgress'; +import updateSlidesClasses from './updateSlidesClasses'; +import updateActiveIndex from './updateActiveIndex'; +import updateClickedSlide from './updateClickedSlide'; + +export default { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide, +}; diff --git a/static/libs/swiper-5.3.8/src/components/core/update/updateActiveIndex.js b/static/libs/swiper-5.3.8/src/components/core/update/updateActiveIndex.js new file mode 100644 index 0000000..2a466a3 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/update/updateActiveIndex.js @@ -0,0 +1,60 @@ +import Utils from '../../../utils/utils'; + +export default function (newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex, + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + if (typeof activeIndex === 'undefined') { + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + + // Get real index + const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); + + Utils.extend(swiper, { + snapIndex, + realIndex, + previousIndex, + activeIndex, + }); + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + swiper.emit('slideChange'); + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/update/updateAutoHeight.js b/static/libs/swiper-5.3.8/src/components/core/update/updateAutoHeight.js new file mode 100644 index 0000000..f22edd6 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/update/updateAutoHeight.js @@ -0,0 +1,38 @@ +export default function (speed) { + const swiper = this; + const activeSlides = []; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + swiper.visibleSlides.each((index, slide) => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length) break; + activeSlides.push(swiper.slides.eq(index)[0]); + } + } + } else { + activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/update/updateClickedSlide.js b/static/libs/swiper-5.3.8/src/components/core/update/updateClickedSlide.js new file mode 100644 index 0000000..b429cea --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/update/updateClickedSlide.js @@ -0,0 +1,29 @@ +import $ from '../../../utils/dom'; + +export default function (e) { + const swiper = this; + const params = swiper.params; + const slide = $(e.target).closest(`.${params.slideClass}`)[0]; + let slideFound = false; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) slideFound = true; + } + } + + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = $(slide).index(); + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/update/updateProgress.js b/static/libs/swiper-5.3.8/src/components/core/update/updateProgress.js new file mode 100644 index 0000000..2d1b414 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/update/updateProgress.js @@ -0,0 +1,43 @@ +import Utils from '../../../utils/utils'; + +export default function (translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { progress, isBeginning, isEnd } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / (translatesDiff); + isBeginning = progress <= 0; + isEnd = progress >= 1; + } + Utils.extend(swiper, { + progress, + isBeginning, + isEnd, + }); + + if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate); + + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) { + swiper.emit('fromEdge'); + } + + swiper.emit('progress', progress); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/update/updateSize.js b/static/libs/swiper-5.3.8/src/components/core/update/updateSize.js new file mode 100644 index 0000000..8e35d21 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/update/updateSize.js @@ -0,0 +1,31 @@ +import Utils from '../../../utils/utils'; + +export default function () { + const swiper = this; + let width; + let height; + const $el = swiper.$el; + if (typeof swiper.params.width !== 'undefined') { + width = swiper.params.width; + } else { + width = $el[0].clientWidth; + } + if (typeof swiper.params.height !== 'undefined') { + height = swiper.params.height; + } else { + height = $el[0].clientHeight; + } + if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) { + return; + } + + // Subtract paddings + width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10); + height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10); + + Utils.extend(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height, + }); +} diff --git a/static/libs/swiper-5.3.8/src/components/core/update/updateSlides.js b/static/libs/swiper-5.3.8/src/components/core/update/updateSlides.js new file mode 100644 index 0000000..9e057f4 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/update/updateSlides.js @@ -0,0 +1,313 @@ +import { window } from 'ssr-window'; +import Utils from '../../../utils/utils'; + +export default function () { + const swiper = this; + const params = swiper.params; + + const { + $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL, + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = $wrapperEl.children(`.${swiper.params.slideClass}`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + + function slidesForMargin(slideIndex) { + if (!params.cssMode) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + } + + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.snapGrid.length; + + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize; + } + + swiper.virtualSize = -spaceBetween; + + // reset margins + if (rtl) slides.css({ marginLeft: '', marginTop: '' }); + else slides.css({ marginRight: '', marginBottom: '' }); + + let slidesNumberEvenToRows; + if (params.slidesPerColumn > 1) { + if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn; + } + if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn); + } + } + + // Calc slides + let slideSize; + const slidesPerColumn = params.slidesPerColumn; + const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn; + const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn); + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + const slide = slides.eq(i); + if (params.slidesPerColumn > 1) { + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn)); + const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 + ? params.slidesPerGroup + : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup; + + newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn); + slide + .css({ + '-webkit-box-ordinal-group': newSlideOrderIndex, + '-moz-box-ordinal-group': newSlideOrderIndex, + '-ms-flex-order': newSlideOrderIndex, + '-webkit-order': newSlideOrderIndex, + order: newSlideOrderIndex, + }); + } else if (params.slidesPerColumnFill === 'column') { + column = Math.floor(i / slidesPerColumn); + row = i - (column * slidesPerColumn); + if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) { + row += 1; + if (row >= slidesPerColumn) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - (row * slidesPerRow); + } + slide.css( + `margin-${swiper.isHorizontal() ? 'top' : 'left'}`, + (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`) + ); + } + if (slide.css('display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + const slideStyles = window.getComputedStyle(slide[0], null); + const currentTransform = slide[0].style.transform; + const currentWebKitTransform = slide[0].style.webkitTransform; + if (currentTransform) { + slide[0].style.transform = 'none'; + } + if (currentWebKitTransform) { + slide[0].style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() + ? slide.outerWidth(true) + : slide.outerHeight(true); + } else { + // eslint-disable-next-line + if (swiper.isHorizontal()) { + const width = parseFloat(slideStyles.getPropertyValue('width')); + const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left')); + const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right')); + const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left')); + const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right')); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight; + } + } else { + const height = parseFloat(slideStyles.getPropertyValue('height')); + const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top')); + const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom')); + const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top')); + const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom')); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = height + marginTop + marginBottom; + } else { + slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom; + } + } + } + if (currentTransform) { + slide[0].style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide[0].style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + + if (slides[i]) { + if (swiper.isHorizontal()) { + slides[i].style.width = `${slideSize}px`; + } else { + slides[i].style.height = `${slideSize}px`; + } + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + + + if (params.centeredSlides) { + slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; + if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + + swiper.virtualSize += slideSize + spaceBetween; + + prevSlideSize = slideSize; + + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + let newSlidesGrid; + + if ( + rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` }); + } + if (params.setWrapperSize) { + if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` }); + else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` }); + } + + if (params.slidesPerColumn > 1) { + swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween; + if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` }); + else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` }); + if (params.centeredSlides) { + newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid = newSlidesGrid; + } + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (snapGrid.length === 0) snapGrid = [0]; + + if (params.spaceBetween !== 0) { + if (swiper.isHorizontal()) { + if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` }); + else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` }); + } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` }); + } + + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach((slideSizeValue) => { + allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); + }); + allSlidesSize -= params.spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map((snap) => { + if (snap < 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach((slideSizeValue) => { + allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); + }); + allSlidesSize -= params.spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + + Utils.extend(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid, + }); + + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + + if (params.watchSlidesProgress || params.watchSlidesVisibility) { + swiper.updateSlidesOffset(); + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/update/updateSlidesClasses.js b/static/libs/swiper-5.3.8/src/components/core/update/updateSlidesClasses.js new file mode 100644 index 0000000..b329e26 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/update/updateSlidesClasses.js @@ -0,0 +1,66 @@ +export default function () { + const swiper = this; + + const { + slides, params, $wrapperEl, activeIndex, realIndex, + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + + slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`); + + let activeSlide; + if (isVirtual) { + activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`); + } else { + activeSlide = slides.eq(activeIndex); + } + + // Active classes + activeSlide.addClass(params.slideActiveClass); + + if (params.loop) { + // Duplicate to all looped slides + if (activeSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl + .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`) + .addClass(params.slideDuplicateActiveClass); + } else { + $wrapperEl + .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`) + .addClass(params.slideDuplicateActiveClass); + } + } + // Next Slide + let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass); + if (params.loop && nextSlide.length === 0) { + nextSlide = slides.eq(0); + nextSlide.addClass(params.slideNextClass); + } + // Prev Slide + let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass); + if (params.loop && prevSlide.length === 0) { + prevSlide = slides.eq(-1); + prevSlide.addClass(params.slidePrevClass); + } + if (params.loop) { + // Duplicate to all looped slides + if (nextSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl + .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicateNextClass); + } else { + $wrapperEl + .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicateNextClass); + } + if (prevSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl + .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicatePrevClass); + } else { + $wrapperEl + .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`) + .addClass(params.slideDuplicatePrevClass); + } + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/update/updateSlidesOffset.js b/static/libs/swiper-5.3.8/src/components/core/update/updateSlidesOffset.js new file mode 100644 index 0000000..dc886b4 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/update/updateSlidesOffset.js @@ -0,0 +1,7 @@ +export default function () { + const swiper = this; + const slides = swiper.slides; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; + } +} diff --git a/static/libs/swiper-5.3.8/src/components/core/update/updateSlidesProgress.js b/static/libs/swiper-5.3.8/src/components/core/update/updateSlidesProgress.js new file mode 100644 index 0000000..85dd640 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/core/update/updateSlidesProgress.js @@ -0,0 +1,41 @@ +import $ from '../../../utils/dom'; + +export default function (translate = (this && this.translate) || 0) { + const swiper = this; + const params = swiper.params; + + const { slides, rtlTranslate: rtl } = swiper; + + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.removeClass(params.slideVisibleClass); + + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + const slideProgress = ( + (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset + ) / (slide.swiperSlideSize + params.spaceBetween); + if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) { + const slideBefore = -(offsetCenter - slide.swiperSlideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1) + || (slideAfter > 1 && slideAfter <= swiper.size) + || (slideBefore <= 0 && slideAfter >= swiper.size); + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides.eq(i).addClass(params.slideVisibleClass); + } + } + slide.progress = rtl ? -slideProgress : slideProgress; + } + swiper.visibleSlides = $(swiper.visibleSlides); +} diff --git a/static/libs/swiper-5.3.8/src/components/effect-coverflow/effect-coverflow.js b/static/libs/swiper-5.3.8/src/components/effect-coverflow/effect-coverflow.js new file mode 100644 index 0000000..085aec9 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/effect-coverflow/effect-coverflow.js @@ -0,0 +1,122 @@ +import $ from '../../utils/dom'; +import Support from '../../utils/support'; +import Utils from '../../utils/utils'; + +const Coverflow = { + setTranslate() { + const swiper = this; + const { + width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid, + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2); + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const $slideEl = slides.eq(i); + const slideSize = slidesSizesGrid[i]; + const slideOffset = $slideEl[0].swiperSlideOffset; + const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier; + + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = ((parseFloat(params.stretch) / 100) * slideSize); + } + let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier); + let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0; + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; + + $slideEl.transform(slideTransform); + $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + if ($shadowBeforeEl.length === 0) { + $shadowBeforeEl = $(`
      `); + $slideEl.append($shadowBeforeEl); + } + if ($shadowAfterEl.length === 0) { + $shadowAfterEl = $(`
      `); + $slideEl.append($shadowAfterEl); + } + if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; + } + } + + // Set correct perspective for IE10 + if (Support.pointerEvents || Support.prefixedPointerEvents) { + const ws = $wrapperEl[0].style; + ws.perspectiveOrigin = `${center}px 50%`; + } + }, + setTransition(duration) { + const swiper = this; + swiper.slides + .transition(duration) + .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') + .transition(duration); + }, +}; + +export default { + name: 'effect-coverflow', + params: { + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + modifier: 1, + slideShadows: true, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + coverflowEffect: { + setTranslate: Coverflow.setTranslate.bind(swiper), + setTransition: Coverflow.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'coverflow') return; + + swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`); + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'coverflow') return; + swiper.coverflowEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'coverflow') return; + swiper.coverflowEffect.setTransition(duration); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/components/effect-coverflow/effect-coverflow.less b/static/libs/swiper-5.3.8/src/components/effect-coverflow/effect-coverflow.less new file mode 100644 index 0000000..99f258b --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/effect-coverflow/effect-coverflow.less @@ -0,0 +1 @@ +.swiper-container-coverflow {} diff --git a/static/libs/swiper-5.3.8/src/components/effect-coverflow/effect-coverflow.scss b/static/libs/swiper-5.3.8/src/components/effect-coverflow/effect-coverflow.scss new file mode 100644 index 0000000..99f258b --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/effect-coverflow/effect-coverflow.scss @@ -0,0 +1 @@ +.swiper-container-coverflow {} diff --git a/static/libs/swiper-5.3.8/src/components/effect-cube/effect-cube.js b/static/libs/swiper-5.3.8/src/components/effect-cube/effect-cube.js new file mode 100644 index 0000000..fa9415c --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/effect-cube/effect-cube.js @@ -0,0 +1,180 @@ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; +import Browser from '../../utils/browser'; + +const Cube = { + setTranslate() { + const swiper = this; + const { + $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize, + } = swiper; + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let $cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow'); + if ($cubeShadowEl.length === 0) { + $cubeShadowEl = $('
      '); + $wrapperEl.append($cubeShadowEl); + } + $cubeShadowEl.css({ height: `${swiperWidth}px` }); + } else { + $cubeShadowEl = $el.find('.swiper-cube-shadow'); + if ($cubeShadowEl.length === 0) { + $cubeShadowEl = $('
      '); + $el.append($cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min($slideEl[0].progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + (round * 4 * swiperSize); + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = (3 * swiperSize) + (swiperSize * 4 * round); + } + if (rtl) { + tx = -tx; + } + + if (!isHorizontal) { + ty = tx; + tx = 0; + } + + const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = (slideIndex * 90) + (progress * 90); + if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90); + } + $slideEl.transform(transform); + if (params.slideShadows) { + // Set shadows + let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + if (shadowBefore.length === 0) { + shadowBefore = $(`
      `); + $slideEl.append(shadowBefore); + } + if (shadowAfter.length === 0) { + shadowAfter = $(`
      `); + $slideEl.append(shadowAfter); + } + if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); + if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); + } + } + $wrapperEl.css({ + '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`, + '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`, + '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`, + 'transform-origin': `50% 50% -${swiperSize / 2}px`, + }); + + if (params.shadow) { + if (isHorizontal) { + $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`); + } else { + const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90); + const multiplier = 1.5 - ( + (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2) + + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2) + ); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`); + } + } + const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0; + $wrapperEl + .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`); + }, + setTransition(duration) { + const swiper = this; + const { $el, slides } = swiper; + slides + .transition(duration) + .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') + .transition(duration); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + $el.find('.swiper-cube-shadow').transition(duration); + } + }, +}; + +export default { + name: 'effect-cube', + params: { + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + cubeEffect: { + setTranslate: Cube.setTranslate.bind(swiper), + setTransition: Cube.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'cube') return; + swiper.classNames.push(`${swiper.params.containerModifierClass}cube`); + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + const overwriteParams = { + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'cube') return; + swiper.cubeEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'cube') return; + swiper.cubeEffect.setTransition(duration); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/components/effect-cube/effect-cube.less b/static/libs/swiper-5.3.8/src/components/effect-cube/effect-cube.less new file mode 100644 index 0000000..cbb0ead --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/effect-cube/effect-cube.less @@ -0,0 +1,43 @@ +.swiper-container-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-container-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, .swiper-slide-next, .swiper-slide-prev, .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } + .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + background: #000; + opacity: 0.6; + -webkit-filter: blur(50px); + filter: blur(50px); + z-index: 0; + } +} diff --git a/static/libs/swiper-5.3.8/src/components/effect-cube/effect-cube.scss b/static/libs/swiper-5.3.8/src/components/effect-cube/effect-cube.scss new file mode 100644 index 0000000..cbb0ead --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/effect-cube/effect-cube.scss @@ -0,0 +1,43 @@ +.swiper-container-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-container-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, .swiper-slide-next, .swiper-slide-prev, .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } + .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + background: #000; + opacity: 0.6; + -webkit-filter: blur(50px); + filter: blur(50px); + z-index: 0; + } +} diff --git a/static/libs/swiper-5.3.8/src/components/effect-fade/effect-fade.js b/static/libs/swiper-5.3.8/src/components/effect-fade/effect-fade.js new file mode 100644 index 0000000..e6de8f7 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/effect-fade/effect-fade.js @@ -0,0 +1,90 @@ +import Utils from '../../utils/utils'; + +const Fade = { + setTranslate() { + const swiper = this; + const { slides } = swiper; + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = swiper.slides.eq(i); + const offset = $slideEl[0].swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade + ? Math.max(1 - Math.abs($slideEl[0].progress), 0) + : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); + $slideEl + .css({ + opacity: slideOpacity, + }) + .transform(`translate3d(${tx}px, ${ty}px, 0px)`); + } + }, + setTransition(duration) { + const swiper = this; + const { slides, $wrapperEl } = swiper; + slides.transition(duration); + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + slides.transitionEnd(() => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const triggerEvents = ['webkitTransitionEnd', 'transitionend']; + for (let i = 0; i < triggerEvents.length; i += 1) { + $wrapperEl.trigger(triggerEvents[i]); + } + }); + } + }, +}; + +export default { + name: 'effect-fade', + params: { + fadeEffect: { + crossFade: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + fadeEffect: { + setTranslate: Fade.setTranslate.bind(swiper), + setTransition: Fade.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'fade') return; + swiper.classNames.push(`${swiper.params.containerModifierClass}fade`); + const overwriteParams = { + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'fade') return; + swiper.fadeEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'fade') return; + swiper.fadeEffect.setTransition(duration); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/components/effect-fade/effect-fade.less b/static/libs/swiper-5.3.8/src/components/effect-fade/effect-fade.less new file mode 100644 index 0000000..1b146b0 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/effect-fade/effect-fade.less @@ -0,0 +1,19 @@ +.swiper-container-fade { + &.swiper-container-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/static/libs/swiper-5.3.8/src/components/effect-fade/effect-fade.scss b/static/libs/swiper-5.3.8/src/components/effect-fade/effect-fade.scss new file mode 100644 index 0000000..1b146b0 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/effect-fade/effect-fade.scss @@ -0,0 +1,19 @@ +.swiper-container-fade { + &.swiper-container-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/static/libs/swiper-5.3.8/src/components/effect-flip/effect-flip.js b/static/libs/swiper-5.3.8/src/components/effect-flip/effect-flip.js new file mode 100644 index 0000000..4c0c745 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/effect-flip/effect-flip.js @@ -0,0 +1,120 @@ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +const Flip = { + setTranslate() { + const swiper = this; + const { slides, rtlTranslate: rtl } = swiper; + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + let progress = $slideEl[0].progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min($slideEl[0].progress, 1), -1); + } + const offset = $slideEl[0].swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + + $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + + if (swiper.params.flipEffect.slideShadows) { + // Set shadows + let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + if (shadowBefore.length === 0) { + shadowBefore = $(`
      `); + $slideEl.append(shadowBefore); + } + if (shadowAfter.length === 0) { + shadowAfter = $(`
      `); + $slideEl.append(shadowAfter); + } + if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); + if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); + } + $slideEl + .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`); + } + }, + setTransition(duration) { + const swiper = this; + const { slides, activeIndex, $wrapperEl } = swiper; + slides + .transition(duration) + .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') + .transition(duration); + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + // eslint-disable-next-line + slides.eq(activeIndex).transitionEnd(function onTransitionEnd() { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + // if (!$(this).hasClass(swiper.params.slideActiveClass)) return; + eventTriggered = true; + swiper.animating = false; + const triggerEvents = ['webkitTransitionEnd', 'transitionend']; + for (let i = 0; i < triggerEvents.length; i += 1) { + $wrapperEl.trigger(triggerEvents[i]); + } + }); + } + }, +}; + +export default { + name: 'effect-flip', + params: { + flipEffect: { + slideShadows: true, + limitRotation: true, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + flipEffect: { + setTranslate: Flip.setTranslate.bind(swiper), + setTransition: Flip.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.effect !== 'flip') return; + swiper.classNames.push(`${swiper.params.containerModifierClass}flip`); + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + const overwriteParams = { + slidesPerView: 1, + slidesPerColumn: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + }, + setTranslate() { + const swiper = this; + if (swiper.params.effect !== 'flip') return; + swiper.flipEffect.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (swiper.params.effect !== 'flip') return; + swiper.flipEffect.setTransition(duration); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/components/effect-flip/effect-flip.less b/static/libs/swiper-5.3.8/src/components/effect-flip/effect-flip.less new file mode 100644 index 0000000..3989cfb --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/effect-flip/effect-flip.less @@ -0,0 +1,20 @@ +.swiper-container-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} diff --git a/static/libs/swiper-5.3.8/src/components/effect-flip/effect-flip.scss b/static/libs/swiper-5.3.8/src/components/effect-flip/effect-flip.scss new file mode 100644 index 0000000..3989cfb --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/effect-flip/effect-flip.scss @@ -0,0 +1,20 @@ +.swiper-container-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} diff --git a/static/libs/swiper-5.3.8/src/components/hash-navigation/hash-navigation.js b/static/libs/swiper-5.3.8/src/components/hash-navigation/hash-navigation.js new file mode 100644 index 0000000..6feb731 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/hash-navigation/hash-navigation.js @@ -0,0 +1,101 @@ +import { window, document } from 'ssr-window'; +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +const HashNavigation = { + onHashCange() { + const swiper = this; + const newHash = document.location.hash.replace('#', ''); + const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash'); + if (newHash !== activeSlideHash) { + const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index(); + if (typeof newIndex === 'undefined') return; + swiper.slideTo(newIndex); + } + }, + setHash() { + const swiper = this; + if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '')); + } else { + const slide = swiper.slides.eq(swiper.activeIndex); + const hash = slide.attr('data-hash') || slide.attr('data-history'); + document.location.hash = hash || ''; + } + }, + init() { + const swiper = this; + if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return; + swiper.hashNavigation.initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides.eq(i); + const slideHash = slide.attr('data-hash') || slide.attr('data-history'); + if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) { + const index = slide.index(); + swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); + } + } + } + if (swiper.params.hashNavigation.watchState) { + $(window).on('hashchange', swiper.hashNavigation.onHashCange); + } + }, + destroy() { + const swiper = this; + if (swiper.params.hashNavigation.watchState) { + $(window).off('hashchange', swiper.hashNavigation.onHashCange); + } + }, +}; +export default { + name: 'hash-navigation', + params: { + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + hashNavigation: { + initialized: false, + init: HashNavigation.init.bind(swiper), + destroy: HashNavigation.destroy.bind(swiper), + setHash: HashNavigation.setHash.bind(swiper), + onHashCange: HashNavigation.onHashCange.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.hashNavigation.enabled) { + swiper.hashNavigation.init(); + } + }, + destroy() { + const swiper = this; + if (swiper.params.hashNavigation.enabled) { + swiper.hashNavigation.destroy(); + } + }, + transitionEnd() { + const swiper = this; + if (swiper.hashNavigation.initialized) { + swiper.hashNavigation.setHash(); + } + }, + slideChange() { + const swiper = this; + if (swiper.hashNavigation.initialized && swiper.params.cssMode) { + swiper.hashNavigation.setHash(); + } + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/components/history/history.js b/static/libs/swiper-5.3.8/src/components/history/history.js new file mode 100644 index 0000000..3c2675a --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/history/history.js @@ -0,0 +1,130 @@ +import { window } from 'ssr-window'; +import Utils from '../../utils/utils'; + +const History = { + init() { + const swiper = this; + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + const history = swiper.history; + history.initialized = true; + history.paths = History.getPathValues(); + if (!history.paths.key && !history.paths.value) return; + history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', swiper.history.setHistoryPopState); + } + }, + destroy() { + const swiper = this; + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', swiper.history.setHistoryPopState); + } + }, + setHistoryPopState() { + const swiper = this; + swiper.history.paths = History.getPathValues(); + swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false); + }, + getPathValues() { + const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { key, value }; + }, + setHistory(key, index) { + const swiper = this; + if (!swiper.history.initialized || !swiper.params.history.enabled) return; + const slide = swiper.slides.eq(index); + let value = History.slugify(slide.attr('data-history')); + if (!window.location.pathname.includes(key)) { + value = `${key}/${value}`; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ value }, null, value); + } else { + window.history.pushState({ value }, null, value); + } + }, + slugify(text) { + return text.toString() + .replace(/\s+/g, '-') + .replace(/[^\w-]+/g, '') + .replace(/--+/g, '-') + .replace(/^-+/, '') + .replace(/-+$/, ''); + }, + scrollToSlide(speed, value, runCallbacks) { + const swiper = this; + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides.eq(i); + const slideHistory = History.slugify(slide.attr('data-history')); + if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) { + const index = slide.index(); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }, +}; + +export default { + name: 'history', + params: { + history: { + enabled: false, + replaceState: false, + key: 'slides', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + history: { + init: History.init.bind(swiper), + setHistory: History.setHistory.bind(swiper), + setHistoryPopState: History.setHistoryPopState.bind(swiper), + scrollToSlide: History.scrollToSlide.bind(swiper), + destroy: History.destroy.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.history.enabled) { + swiper.history.init(); + } + }, + destroy() { + const swiper = this; + if (swiper.params.history.enabled) { + swiper.history.destroy(); + } + }, + transitionEnd() { + const swiper = this; + if (swiper.history.initialized) { + swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex); + } + }, + slideChange() { + const swiper = this; + if (swiper.history.initialized && swiper.params.cssMode) { + swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex); + } + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/components/keyboard/keyboard.js b/static/libs/swiper-5.3.8/src/components/keyboard/keyboard.js new file mode 100644 index 0000000..d3a3b66 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/keyboard/keyboard.js @@ -0,0 +1,117 @@ +import { window, document } from 'ssr-window'; +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +const Keyboard = { + handle(event) { + const swiper = this; + const { rtlTranslate: rtl } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + // Directions locks + if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) { + return false; + } + if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = swiper.$el.offset(); + if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft; + const swiperCoord = [ + [swiperOffset.left, swiperOffset.top], + [swiperOffset.left + swiper.width, swiperOffset.top], + [swiperOffset.left, swiperOffset.top + swiper.height], + [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height], + ]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if ( + point[0] >= 0 && point[0] <= windowWidth + && point[1] >= 0 && point[1] <= windowHeight + ) { + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (kc === 33 || kc === 34 || kc === 37 || kc === 39) { + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + } + if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext(); + if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev(); + } else { + if (kc === 33 || kc === 34 || kc === 38 || kc === 40) { + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + } + if (kc === 34 || kc === 40) swiper.slideNext(); + if (kc === 33 || kc === 38) swiper.slidePrev(); + } + swiper.emit('keyPress', kc); + return undefined; + }, + enable() { + const swiper = this; + if (swiper.keyboard.enabled) return; + $(document).on('keydown', swiper.keyboard.handle); + swiper.keyboard.enabled = true; + }, + disable() { + const swiper = this; + if (!swiper.keyboard.enabled) return; + $(document).off('keydown', swiper.keyboard.handle); + swiper.keyboard.enabled = false; + }, +}; + +export default { + name: 'keyboard', + params: { + keyboard: { + enabled: false, + onlyInViewport: true, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + keyboard: { + enabled: false, + enable: Keyboard.enable.bind(swiper), + disable: Keyboard.disable.bind(swiper), + handle: Keyboard.handle.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.keyboard.enabled) { + swiper.keyboard.enable(); + } + }, + destroy() { + const swiper = this; + if (swiper.keyboard.enabled) { + swiper.keyboard.disable(); + } + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/components/lazy/lazy.js b/static/libs/swiper-5.3.8/src/components/lazy/lazy.js new file mode 100644 index 0000000..3d1a6e6 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/lazy/lazy.js @@ -0,0 +1,215 @@ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +const Lazy = { + loadInSlide(index, loadInDuplicate = true) { + const swiper = this; + const params = swiper.params.lazy; + if (typeof index === 'undefined') return; + if (swiper.slides.length === 0) return; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + const $slideEl = isVirtual + ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`) + : swiper.slides.eq(index); + + let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`); + if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { + $images = $images.add($slideEl[0]); + } + if ($images.length === 0) return; + + $images.each((imageIndex, imageEl) => { + const $imageEl = $(imageEl); + $imageEl.addClass(params.loadingClass); + + const background = $imageEl.attr('data-background'); + const src = $imageEl.attr('data-src'); + const srcset = $imageEl.attr('data-srcset'); + const sizes = $imageEl.attr('data-sizes'); + + swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => { + if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return; + if (background) { + $imageEl.css('background-image', `url("${background}")`); + $imageEl.removeAttr('data-background'); + } else { + if (srcset) { + $imageEl.attr('srcset', srcset); + $imageEl.removeAttr('data-srcset'); + } + if (sizes) { + $imageEl.attr('sizes', sizes); + $imageEl.removeAttr('data-sizes'); + } + if (src) { + $imageEl.attr('src', src); + $imageEl.removeAttr('data-src'); + } + } + + $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); + $slideEl.find(`.${params.preloaderClass}`).remove(); + if (swiper.params.loop && loadInDuplicate) { + const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); + if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { + const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`); + swiper.lazy.loadInSlide(originalSlide.index(), false); + } else { + const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`); + swiper.lazy.loadInSlide(duplicatedSlide.index(), false); + } + } + swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]); + if (swiper.params.autoHeight) { + swiper.updateAutoHeight(); + } + }); + + swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]); + }); + }, + load() { + const swiper = this; + const { + $wrapperEl, params: swiperParams, slides, activeIndex, + } = swiper; + const isVirtual = swiper.virtual && swiperParams.virtual.enabled; + const params = swiperParams.lazy; + + let slidesPerView = swiperParams.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = 0; + } + + function slideExist(index) { + if (isVirtual) { + if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) { + return true; + } + } else if (slides[index]) return true; + return false; + } + function slideIndex(slideEl) { + if (isVirtual) { + return $(slideEl).attr('data-swiper-slide-index'); + } + return $(slideEl).index(); + } + + if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true; + if (swiper.params.watchSlidesVisibility) { + $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => { + const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index(); + swiper.lazy.loadInSlide(index); + }); + } else if (slidesPerView > 1) { + for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) { + if (slideExist(i)) swiper.lazy.loadInSlide(i); + } + } else { + swiper.lazy.loadInSlide(activeIndex); + } + if (params.loadPrevNext) { + if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) { + const amount = params.loadPrevNextAmount; + const spv = slidesPerView; + const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); + const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); + // Next Slides + for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) { + if (slideExist(i)) swiper.lazy.loadInSlide(i); + } + // Prev Slides + for (let i = minIndex; i < activeIndex; i += 1) { + if (slideExist(i)) swiper.lazy.loadInSlide(i); + } + } else { + const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`); + if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide)); + + const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`); + if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide)); + } + } + }, +}; + +export default { + name: 'lazy', + params: { + lazy: { + enabled: false, + loadPrevNext: false, + loadPrevNextAmount: 1, + loadOnTransitionStart: false, + + elementClass: 'swiper-lazy', + loadingClass: 'swiper-lazy-loading', + loadedClass: 'swiper-lazy-loaded', + preloaderClass: 'swiper-lazy-preloader', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + lazy: { + initialImageLoaded: false, + load: Lazy.load.bind(swiper), + loadInSlide: Lazy.loadInSlide.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (swiper.params.lazy.enabled && swiper.params.preloadImages) { + swiper.params.preloadImages = false; + } + }, + init() { + const swiper = this; + if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) { + swiper.lazy.load(); + } + }, + scroll() { + const swiper = this; + if (swiper.params.freeMode && !swiper.params.freeModeSticky) { + swiper.lazy.load(); + } + }, + resize() { + const swiper = this; + if (swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + }, + scrollbarDragMove() { + const swiper = this; + if (swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + }, + transitionStart() { + const swiper = this; + if (swiper.params.lazy.enabled) { + if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) { + swiper.lazy.load(); + } + } + }, + transitionEnd() { + const swiper = this; + if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { + swiper.lazy.load(); + } + }, + slideChange() { + const swiper = this; + if (swiper.params.lazy.enabled && swiper.params.cssMode) { + swiper.lazy.load(); + } + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/components/lazy/lazy.less b/static/libs/swiper-5.3.8/src/components/lazy/lazy.less new file mode 100644 index 0000000..caaf125 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/lazy/lazy.less @@ -0,0 +1,34 @@ +/* Preloader */ +:root { + /* + --swiper-preloader-color: var(--swiper-theme-color); + */ +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + animation: swiper-preloader-spin 1s infinite linear; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} + +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 100% { + transform: rotate(360deg); + } +} diff --git a/static/libs/swiper-5.3.8/src/components/lazy/lazy.scss b/static/libs/swiper-5.3.8/src/components/lazy/lazy.scss new file mode 100644 index 0000000..caaf125 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/lazy/lazy.scss @@ -0,0 +1,34 @@ +/* Preloader */ +:root { + /* + --swiper-preloader-color: var(--swiper-theme-color); + */ +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + animation: swiper-preloader-spin 1s infinite linear; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} + +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 100% { + transform: rotate(360deg); + } +} diff --git a/static/libs/swiper-5.3.8/src/components/mousewheel/mousewheel.js b/static/libs/swiper-5.3.8/src/components/mousewheel/mousewheel.js new file mode 100644 index 0000000..3fc4f62 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/mousewheel/mousewheel.js @@ -0,0 +1,424 @@ +import { window, document } from 'ssr-window'; +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +function isEventSupported() { + const eventName = 'onwheel'; + let isSupported = eventName in document; + + if (!isSupported) { + const element = document.createElement('div'); + element.setAttribute(eventName, 'return;'); + isSupported = typeof element[eventName] === 'function'; + } + + if (!isSupported + && document.implementation + && document.implementation.hasFeature + // always returns true in newer browsers as per the standard. + // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature + && document.implementation.hasFeature('', '') !== true + ) { + // This is the only way to test support for the `wheel` event in IE9+. + isSupported = document.implementation.hasFeature('Events.wheel', '3.0'); + } + + return isSupported; +} +const Mousewheel = { + lastScrollTime: Utils.now(), + lastEventBeforeSnap: undefined, + recentWheelEvents: [], + event() { + if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll'; + return isEventSupported() ? 'wheel' : 'mousewheel'; + }, + normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + + if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = (pX < 1) ? -1 : 1; + } + if (pY && !sY) { + sY = (pY < 1) ? -1 : 1; + } + + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY, + }; + }, + handleMouseEnter() { + const swiper = this; + swiper.mouseEntered = true; + }, + handleMouseLeave() { + const swiper = this; + swiper.mouseEntered = false; + }, + handle(event) { + let e = event; + const swiper = this; + const params = swiper.params.mousewheel; + + if (swiper.params.cssMode) { + e.preventDefault(); + } + + let target = swiper.$el; + if (swiper.params.mousewheel.eventsTarged !== 'container') { + target = $(swiper.params.mousewheel.eventsTarged); + } + if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true; + + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + + const data = Mousewheel.normalize(e); + + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor; + else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY; + else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + + if (delta === 0) return true; + + if (params.invert) delta = -delta; + + if (!swiper.params.freeMode) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: Utils.now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event, + }; + + // Keep the most recent events + const recentWheelEvents = swiper.mousewheel.recentWheelEvents; + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta) { + swiper.mousewheel.animateSlider(newEvent); + } + } else { + swiper.mousewheel.animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (swiper.mousewheel.releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) }; + const { lastEventBeforeSnap } = swiper.mousewheel; + const ignoreWheelEvents = lastEventBeforeSnap + && newEvent.time < lastEventBeforeSnap.time + 500 + && newEvent.delta <= lastEventBeforeSnap.delta + && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + swiper.mousewheel.lastEventBeforeSnap = undefined; + + if (swiper.params.loop) { + swiper.loopFix(); + } + let position = swiper.getTranslate() + (delta * params.sensitivity); + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + + if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) { + swiper.updateSlidesClasses(); + } + + if (swiper.params.freeModeSticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momuntum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(swiper.mousewheel.timeout); + swiper.mousewheel.timeout = undefined; + const recentWheelEvents = swiper.mousewheel.recentWheelEvents; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 + && newEvent.time - firstEvent.time < 500 + && firstEvent.delta - newEvent.delta >= 1 + && newEvent.delta <= 6 + ) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + swiper.mousewheel.lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.mousewheel.timeout = Utils.nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + if (!swiper.mousewheel.timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + swiper.mousewheel.timeout = Utils.nextTick(() => { + const snapToThreshold = 0.5; + swiper.mousewheel.lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) swiper.emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true; + } + } + + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + return false; + }, + animateSlider(newEvent) { + const swiper = this; + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + swiper.emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + swiper.emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + swiper.mousewheel.lastScrollTime = (new window.Date()).getTime(); + // Return false as a default + return false; + }, + releaseScroll(newEvent) { + const swiper = this; + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + }, + enable() { + const swiper = this; + const event = Mousewheel.event(); + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle); + return true; + } + if (!event) return false; + if (swiper.mousewheel.enabled) return false; + let target = swiper.$el; + if (swiper.params.mousewheel.eventsTarged !== 'container') { + target = $(swiper.params.mousewheel.eventsTarged); + } + target.on('mouseenter', swiper.mousewheel.handleMouseEnter); + target.on('mouseleave', swiper.mousewheel.handleMouseLeave); + target.on(event, swiper.mousewheel.handle); + swiper.mousewheel.enabled = true; + return true; + }, + disable() { + const swiper = this; + const event = Mousewheel.event(); + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle); + return true; + } + if (!event) return false; + if (!swiper.mousewheel.enabled) return false; + let target = swiper.$el; + if (swiper.params.mousewheel.eventsTarged !== 'container') { + target = $(swiper.params.mousewheel.eventsTarged); + } + target.off(event, swiper.mousewheel.handle); + swiper.mousewheel.enabled = false; + return true; + }, +}; + +export default { + name: 'mousewheel', + params: { + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarged: 'container', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + mousewheel: { + enabled: false, + enable: Mousewheel.enable.bind(swiper), + disable: Mousewheel.disable.bind(swiper), + handle: Mousewheel.handle.bind(swiper), + handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper), + handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper), + animateSlider: Mousewheel.animateSlider.bind(swiper), + releaseScroll: Mousewheel.releaseScroll.bind(swiper), + lastScrollTime: Utils.now(), + lastEventBeforeSnap: undefined, + recentWheelEvents: [], + }, + }); + }, + on: { + init() { + const swiper = this; + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + swiper.mousewheel.disable(); + } + if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable(); + }, + destroy() { + const swiper = this; + if (swiper.params.cssMode) { + swiper.mousewheel.enable(); + } + if (swiper.mousewheel.enabled) swiper.mousewheel.disable(); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/components/navigation/navigation.js b/static/libs/swiper-5.3.8/src/components/navigation/navigation.js new file mode 100644 index 0000000..2a10dc5 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/navigation/navigation.js @@ -0,0 +1,171 @@ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +const Navigation = { + update() { + // Update Navigation Buttons + const swiper = this; + const params = swiper.params.navigation; + + if (swiper.params.loop) return; + const { $nextEl, $prevEl } = swiper.navigation; + + if ($prevEl && $prevEl.length > 0) { + if (swiper.isBeginning) { + $prevEl.addClass(params.disabledClass); + } else { + $prevEl.removeClass(params.disabledClass); + } + $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + } + if ($nextEl && $nextEl.length > 0) { + if (swiper.isEnd) { + $nextEl.addClass(params.disabledClass); + } else { + $nextEl.removeClass(params.disabledClass); + } + $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + } + }, + onPrevClick(e) { + const swiper = this; + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop) return; + swiper.slidePrev(); + }, + onNextClick(e) { + const swiper = this; + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop) return; + swiper.slideNext(); + }, + init() { + const swiper = this; + const params = swiper.params.navigation; + if (!(params.nextEl || params.prevEl)) return; + + let $nextEl; + let $prevEl; + if (params.nextEl) { + $nextEl = $(params.nextEl); + if ( + swiper.params.uniqueNavElements + && typeof params.nextEl === 'string' + && $nextEl.length > 1 + && swiper.$el.find(params.nextEl).length === 1 + ) { + $nextEl = swiper.$el.find(params.nextEl); + } + } + if (params.prevEl) { + $prevEl = $(params.prevEl); + if ( + swiper.params.uniqueNavElements + && typeof params.prevEl === 'string' + && $prevEl.length > 1 + && swiper.$el.find(params.prevEl).length === 1 + ) { + $prevEl = swiper.$el.find(params.prevEl); + } + } + + if ($nextEl && $nextEl.length > 0) { + $nextEl.on('click', swiper.navigation.onNextClick); + } + if ($prevEl && $prevEl.length > 0) { + $prevEl.on('click', swiper.navigation.onPrevClick); + } + + Utils.extend(swiper.navigation, { + $nextEl, + nextEl: $nextEl && $nextEl[0], + $prevEl, + prevEl: $prevEl && $prevEl[0], + }); + }, + destroy() { + const swiper = this; + const { $nextEl, $prevEl } = swiper.navigation; + if ($nextEl && $nextEl.length) { + $nextEl.off('click', swiper.navigation.onNextClick); + $nextEl.removeClass(swiper.params.navigation.disabledClass); + } + if ($prevEl && $prevEl.length) { + $prevEl.off('click', swiper.navigation.onPrevClick); + $prevEl.removeClass(swiper.params.navigation.disabledClass); + } + }, +}; + +export default { + name: 'navigation', + params: { + navigation: { + nextEl: null, + prevEl: null, + + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + navigation: { + init: Navigation.init.bind(swiper), + update: Navigation.update.bind(swiper), + destroy: Navigation.destroy.bind(swiper), + onNextClick: Navigation.onNextClick.bind(swiper), + onPrevClick: Navigation.onPrevClick.bind(swiper), + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.navigation.init(); + swiper.navigation.update(); + }, + toEdge() { + const swiper = this; + swiper.navigation.update(); + }, + fromEdge() { + const swiper = this; + swiper.navigation.update(); + }, + destroy() { + const swiper = this; + swiper.navigation.destroy(); + }, + click(e) { + const swiper = this; + const { $nextEl, $prevEl } = swiper.navigation; + if ( + swiper.params.navigation.hideOnClick + && !$(e.target).is($prevEl) + && !$(e.target).is($nextEl) + ) { + let isHidden; + if ($nextEl) { + isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass); + } else if ($prevEl) { + isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + swiper.emit('navigationShow', swiper); + } else { + swiper.emit('navigationHide', swiper); + } + if ($nextEl) { + $nextEl.toggleClass(swiper.params.navigation.hiddenClass); + } + if ($prevEl) { + $prevEl.toggleClass(swiper.params.navigation.hiddenClass); + } + } + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/components/navigation/navigation.less b/static/libs/swiper-5.3.8/src/components/navigation/navigation.less new file mode 100644 index 0000000..96043fd --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/navigation/navigation.less @@ -0,0 +1,60 @@ +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, .swiper-button-next { + position: absolute; + top: 50%; + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(-1 * var(--swiper-navigation-size) / 2); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + text-transform: none; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-container-rtl .swiper-button-next { + &:after { + content: 'prev'; + } + left: 10px; + right: auto; +} +.swiper-button-next, +.swiper-container-rtl .swiper-button-prev { + &:after { + content: 'next'; + } + right: 10px; + left: auto; +} +.navigation-color-loop({ + .swiper-button-prev, + .swiper-button-next { + &.swiper-button-@{navColorName} { + --swiper-navigation-color: @navColorValue; + } + } +}); +.swiper-button-lock { + display: none; +} diff --git a/static/libs/swiper-5.3.8/src/components/navigation/navigation.scss b/static/libs/swiper-5.3.8/src/components/navigation/navigation.scss new file mode 100644 index 0000000..bdca5ef --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/navigation/navigation.scss @@ -0,0 +1,61 @@ +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, .swiper-button-next { + position: absolute; + top: 50%; + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(-1 * var(--swiper-navigation-size) / 2); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + text-transform: none; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-container-rtl .swiper-button-next { + &:after { + content: 'prev'; + } + left: 10px; + right: auto; +} +.swiper-button-next, +.swiper-container-rtl .swiper-button-prev { + &:after { + content: 'next'; + } + right: 10px; + left: auto; +} + +@each $navColorName, $navColorValue in $colors { + .swiper-button-prev, + .swiper-button-next { + &.swiper-button-#{$navColorName} { + --swiper-navigation-color: #{$navColorValue}; + } + } +} +.swiper-button-lock { + display: none; +} diff --git a/static/libs/swiper-5.3.8/src/components/pagination/pagination.js b/static/libs/swiper-5.3.8/src/components/pagination/pagination.js new file mode 100644 index 0000000..c392a3f --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/pagination/pagination.js @@ -0,0 +1,360 @@ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +const Pagination = { + update() { + // Render || Update Pagination bullets/items + const swiper = this; + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const $el = swiper.pagination.$el; + // Current/Total + let current; + const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); + if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) { + current -= (slidesLength - (swiper.loopedSlides * 2)); + } + if (current > total - 1) current -= total; + if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + } else { + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); + $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`); + if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { + swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex); + if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) { + swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (swiper.pagination.dynamicBulletIndex < 0) { + swiper.pagination.dynamicBulletIndex = 0; + } + } + firstIndex = current - swiper.pagination.dynamicBulletIndex; + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`); + if ($el.length > 1) { + bullets.each((index, bullet) => { + const $bullet = $(bullet); + const bulletIndex = $bullet.index(); + if (bulletIndex === current) { + $bullet.addClass(params.bulletActiveClass); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + $bullet.addClass(`${params.bulletActiveClass}-main`); + } + if (bulletIndex === firstIndex) { + $bullet + .prev() + .addClass(`${params.bulletActiveClass}-prev`) + .prev() + .addClass(`${params.bulletActiveClass}-prev-prev`); + } + if (bulletIndex === lastIndex) { + $bullet + .next() + .addClass(`${params.bulletActiveClass}-next`) + .next() + .addClass(`${params.bulletActiveClass}-next-next`); + } + } + }); + } else { + const $bullet = bullets.eq(current); + const bulletIndex = $bullet.index(); + $bullet.addClass(params.bulletActiveClass); + if (params.dynamicBullets) { + const $firstDisplayedBullet = bullets.eq(firstIndex); + const $lastDisplayedBullet = bullets.eq(lastIndex); + for (let i = firstIndex; i <= lastIndex; i += 1) { + bullets.eq(i).addClass(`${params.bulletActiveClass}-main`); + } + if (swiper.params.loop) { + if (bulletIndex >= bullets.length - params.dynamicMainBullets) { + for (let i = params.dynamicMainBullets; i >= 0; i -= 1) { + bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`); + } + bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`); + } else { + $firstDisplayedBullet + .prev() + .addClass(`${params.bulletActiveClass}-prev`) + .prev() + .addClass(`${params.bulletActiveClass}-prev-prev`); + $lastDisplayedBullet + .next() + .addClass(`${params.bulletActiveClass}-next`) + .next() + .addClass(`${params.bulletActiveClass}-next-next`); + } + } else { + $firstDisplayedBullet + .prev() + .addClass(`${params.bulletActiveClass}-prev`) + .prev() + .addClass(`${params.bulletActiveClass}-prev-prev`); + $lastDisplayedBullet + .next() + .addClass(`${params.bulletActiveClass}-next`) + .next() + .addClass(`${params.bulletActiveClass}-next-next`); + } + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize); + const offsetProp = rtl ? 'right' : 'left'; + bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`); + } + } + if (params.type === 'fraction') { + $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1)); + $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total)); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed); + } + if (params.type === 'custom' && params.renderCustom) { + $el.html(params.renderCustom(swiper, current + 1, total)); + swiper.emit('paginationRender', swiper, $el[0]); + } else { + swiper.emit('paginationUpdate', swiper, $el[0]); + } + $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + }, + render() { + // Render Container + const swiper = this; + const params = swiper.params.pagination; + if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + + const $el = swiper.pagination.$el; + let paginationHTML = ''; + if (params.type === 'bullets') { + const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + paginationHTML += `<${params.bulletElement} class="${params.bulletClass}">`; + } + } + $el.html(paginationHTML); + swiper.pagination.bullets = $el.find(`.${params.bulletClass}`); + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + + ' / ' + + ``; + } + $el.html(paginationHTML); + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + $el.html(paginationHTML); + } + if (params.type !== 'custom') { + swiper.emit('paginationRender', swiper.pagination.$el[0]); + } + }, + init() { + const swiper = this; + const params = swiper.params.pagination; + if (!params.el) return; + + let $el = $(params.el); + if ($el.length === 0) return; + + if ( + swiper.params.uniqueNavElements + && typeof params.el === 'string' + && $el.length > 1 + && swiper.$el.find(params.el).length === 1 + ) { + $el = swiper.$el.find(params.el); + } + + if (params.type === 'bullets' && params.clickable) { + $el.addClass(params.clickableClass); + } + + $el.addClass(params.modifierClass + params.type); + + if (params.type === 'bullets' && params.dynamicBullets) { + $el.addClass(`${params.modifierClass}${params.type}-dynamic`); + swiper.pagination.dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + $el.addClass(params.progressbarOppositeClass); + } + + if (params.clickable) { + $el.on('click', `.${params.bulletClass}`, function onClick(e) { + e.preventDefault(); + let index = $(this).index() * swiper.params.slidesPerGroup; + if (swiper.params.loop) index += swiper.loopedSlides; + swiper.slideTo(index); + }); + } + + Utils.extend(swiper.pagination, { + $el, + el: $el[0], + }); + }, + destroy() { + const swiper = this; + const params = swiper.params.pagination; + if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return; + const $el = swiper.pagination.$el; + + $el.removeClass(params.hiddenClass); + $el.removeClass(params.modifierClass + params.type); + if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass); + if (params.clickable) { + $el.off('click', `.${params.bulletClass}`); + } + }, +}; + +export default { + name: 'pagination', + params: { + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: (number) => number, + formatFractionTotal: (number) => number, + bulletClass: 'swiper-pagination-bullet', + bulletActiveClass: 'swiper-pagination-bullet-active', + modifierClass: 'swiper-pagination-', // NEW + currentClass: 'swiper-pagination-current', + totalClass: 'swiper-pagination-total', + hiddenClass: 'swiper-pagination-hidden', + progressbarFillClass: 'swiper-pagination-progressbar-fill', + progressbarOppositeClass: 'swiper-pagination-progressbar-opposite', + clickableClass: 'swiper-pagination-clickable', // NEW + lockClass: 'swiper-pagination-lock', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + pagination: { + init: Pagination.init.bind(swiper), + render: Pagination.render.bind(swiper), + update: Pagination.update.bind(swiper), + destroy: Pagination.destroy.bind(swiper), + dynamicBulletIndex: 0, + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.pagination.init(); + swiper.pagination.render(); + swiper.pagination.update(); + }, + activeIndexChange() { + const swiper = this; + if (swiper.params.loop) { + swiper.pagination.update(); + } else if (typeof swiper.snapIndex === 'undefined') { + swiper.pagination.update(); + } + }, + snapIndexChange() { + const swiper = this; + if (!swiper.params.loop) { + swiper.pagination.update(); + } + }, + slidesLengthChange() { + const swiper = this; + if (swiper.params.loop) { + swiper.pagination.render(); + swiper.pagination.update(); + } + }, + snapGridLengthChange() { + const swiper = this; + if (!swiper.params.loop) { + swiper.pagination.render(); + swiper.pagination.update(); + } + }, + destroy() { + const swiper = this; + swiper.pagination.destroy(); + }, + click(e) { + const swiper = this; + if ( + swiper.params.pagination.el + && swiper.params.pagination.hideOnClick + && swiper.pagination.$el.length > 0 + && !$(e.target).hasClass(swiper.params.pagination.bulletClass) + ) { + const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + swiper.emit('paginationShow', swiper); + } else { + swiper.emit('paginationHide', swiper); + } + swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass); + } + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/components/pagination/pagination.less b/static/libs/swiper-5.3.8/src/components/pagination/pagination.less new file mode 100644 index 0000000..8db644e --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/pagination/pagination.less @@ -0,0 +1,149 @@ +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0,0,0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } +} +/* Common Styles */ +.swiper-pagination-fraction, .swiper-pagination-custom, .swiper-container-horizontal > .swiper-pagination-bullets{ + bottom: 10px; + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: 8px; + height: 8px; + display: inline-block; + border-radius: 100%; + background: #000; + opacity: 0.2; + button& { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } +} +.swiper-pagination-bullet-active { + opacity: 1; + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-container-vertical { + > .swiper-pagination-bullets { + right: 10px; + top: 50%; + transform:translate3d(0px,-50%,0); + .swiper-pagination-bullet { + margin: 6px 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, 200ms top; + } + } + } +} +.swiper-container-horizontal { + > .swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 4px; + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: 200ms transform, 200ms left; + } + } + } + &.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, 200ms right; + } +} +/* Progress */ +.swiper-pagination-progressbar { + background: rgba(0,0,0,0.25); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-container-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-container-horizontal > &, + .swiper-container-vertical > &.swiper-pagination-progressbar-opposite { + width: 100%; + height: 4px; + left: 0; + top: 0; + } + .swiper-container-vertical > &, + .swiper-container-horizontal > &.swiper-pagination-progressbar-opposite { + width: 4px; + height: 100%; + left: 0; + top: 0; + } +} +.pagination-color-loop({ + .swiper-pagination-@{paginationColorName} { + --swiper-pagination-color: @paginationColorValue; + } +}); +.swiper-pagination-lock { + display: none; +} diff --git a/static/libs/swiper-5.3.8/src/components/pagination/pagination.scss b/static/libs/swiper-5.3.8/src/components/pagination/pagination.scss new file mode 100644 index 0000000..759331e --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/pagination/pagination.scss @@ -0,0 +1,149 @@ +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0,0,0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } +} +/* Common Styles */ +.swiper-pagination-fraction, .swiper-pagination-custom, .swiper-container-horizontal > .swiper-pagination-bullets{ + bottom: 10px; + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: 8px; + height: 8px; + display: inline-block; + border-radius: 100%; + background: #000; + opacity: 0.2; + @at-root button#{&} { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } +} +.swiper-pagination-bullet-active { + opacity: 1; + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-container-vertical { + > .swiper-pagination-bullets { + right: 10px; + top: 50%; + transform:translate3d(0px,-50%,0); + .swiper-pagination-bullet { + margin: 6px 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, 200ms top; + } + } + } +} +.swiper-container-horizontal { + > .swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 4px; + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: 200ms transform, 200ms left; + } + } + } + &.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, 200ms right; + } +} +/* Progress */ +.swiper-pagination-progressbar { + background: rgba(0,0,0,0.25); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-container-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-container-horizontal > &, + .swiper-container-vertical > &.swiper-pagination-progressbar-opposite { + width: 100%; + height: 4px; + left: 0; + top: 0; + } + .swiper-container-vertical > &, + .swiper-container-horizontal > &.swiper-pagination-progressbar-opposite { + width: 4px; + height: 100%; + left: 0; + top: 0; + } +} +@each $paginationColorName, $paginationColorValue in $colors { + .swiper-pagination-#{$paginationColorName} { + --swiper-pagination-color: #{$paginationColorValue}; + } +} +.swiper-pagination-lock { + display: none; +} diff --git a/static/libs/swiper-5.3.8/src/components/parallax/parallax.js b/static/libs/swiper-5.3.8/src/components/parallax/parallax.js new file mode 100644 index 0000000..6447d82 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/parallax/parallax.js @@ -0,0 +1,125 @@ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +const Parallax = { + setTransform(el, progress) { + const swiper = this; + const { rtl } = swiper; + + const $el = $(el); + const rtlFactor = rtl ? -1 : 1; + + const p = $el.attr('data-swiper-parallax') || '0'; + let x = $el.attr('data-swiper-parallax-x'); + let y = $el.attr('data-swiper-parallax-y'); + const scale = $el.attr('data-swiper-parallax-scale'); + const opacity = $el.attr('data-swiper-parallax-opacity'); + + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + + if ((x).indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if ((y).indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress))); + $el[0].style.opacity = currentOpacity; + } + if (typeof scale === 'undefined' || scale === null) { + $el.transform(`translate3d(${x}, ${y}, 0px)`); + } else { + const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress))); + $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`); + } + }, + setTranslate() { + const swiper = this; + const { + $el, slides, progress, snapGrid, + } = swiper; + $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') + .each((index, el) => { + swiper.parallax.setTransform(el, progress); + }); + slides.each((slideIndex, slideEl) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1)); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') + .each((index, el) => { + swiper.parallax.setTransform(el, slideProgress); + }); + }); + }, + setTransition(duration = this.params.speed) { + const swiper = this; + const { $el } = swiper; + $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') + .each((index, parallaxEl) => { + const $parallaxEl = $(parallaxEl); + let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + $parallaxEl.transition(parallaxDuration); + }); + }, +}; + +export default { + name: 'parallax', + params: { + parallax: { + enabled: false, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + parallax: { + setTransform: Parallax.setTransform.bind(swiper), + setTranslate: Parallax.setTranslate.bind(swiper), + setTransition: Parallax.setTransition.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }, + init() { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.parallax.setTranslate(); + }, + setTranslate() { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.parallax.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + if (!swiper.params.parallax.enabled) return; + swiper.parallax.setTransition(duration); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/components/scrollbar/scrollbar.js b/static/libs/swiper-5.3.8/src/components/scrollbar/scrollbar.js new file mode 100644 index 0000000..aaee38b --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/scrollbar/scrollbar.js @@ -0,0 +1,333 @@ +import { document } from 'ssr-window'; +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; +import Support from '../../utils/support'; + +const Scrollbar = { + setTranslate() { + const swiper = this; + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { scrollbar, rtlTranslate: rtl, progress } = swiper; + const { + dragSize, trackSize, $dragEl, $el, + } = scrollbar; + const params = swiper.params.scrollbar; + + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + $dragEl.transform(`translate3d(${newPos}px, 0, 0)`); + $dragEl[0].style.width = `${newSize}px`; + } else { + $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`); + $dragEl[0].style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(swiper.scrollbar.timeout); + $el[0].style.opacity = 1; + swiper.scrollbar.timeout = setTimeout(() => { + $el[0].style.opacity = 0; + $el.transition(400); + }, 1000); + } + }, + setTransition(duration) { + const swiper = this; + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.$dragEl.transition(duration); + }, + updateSize() { + const swiper = this; + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + + const { scrollbar } = swiper; + const { $dragEl, $el } = scrollbar; + + $dragEl[0].style.width = ''; + $dragEl[0].style.height = ''; + const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight; + + const divider = swiper.size / swiper.virtualSize; + const moveDivider = divider * (trackSize / swiper.size); + let dragSize; + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + + if (swiper.isHorizontal()) { + $dragEl[0].style.width = `${dragSize}px`; + } else { + $dragEl[0].style.height = `${dragSize}px`; + } + + if (divider >= 1) { + $el[0].style.display = 'none'; + } else { + $el[0].style.display = ''; + } + if (swiper.params.scrollbar.hide) { + $el[0].style.opacity = 0; + } + Utils.extend(scrollbar, { + trackSize, + divider, + moveDivider, + dragSize, + }); + scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); + }, + getPointerPosition(e) { + const swiper = this; + if (swiper.isHorizontal()) { + return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX); + } + return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY); + }, + setDragPosition(e) { + const swiper = this; + const { scrollbar, rtlTranslate: rtl } = swiper; + const { + $el, + dragSize, + trackSize, + dragStartPos, + } = scrollbar; + + let positionRatio; + positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] + - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + + const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio); + + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + }, + onDragStart(e) { + const swiper = this; + const params = swiper.params.scrollbar; + const { scrollbar, $wrapperEl } = swiper; + const { $el, $dragEl } = scrollbar; + swiper.scrollbar.isTouched = true; + swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl) + ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + + $wrapperEl.transition(100); + $dragEl.transition(100); + scrollbar.setDragPosition(e); + + clearTimeout(swiper.scrollbar.dragTimeout); + + $el.transition(0); + if (params.hide) { + $el.css('opacity', 1); + } + if (swiper.params.cssMode) { + swiper.$wrapperEl.css('scroll-snap-type', 'none'); + } + swiper.emit('scrollbarDragStart', e); + }, + onDragMove(e) { + const swiper = this; + const { scrollbar, $wrapperEl } = swiper; + const { $el, $dragEl } = scrollbar; + + if (!swiper.scrollbar.isTouched) return; + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + scrollbar.setDragPosition(e); + $wrapperEl.transition(0); + $el.transition(0); + $dragEl.transition(0); + swiper.emit('scrollbarDragMove', e); + }, + onDragEnd(e) { + const swiper = this; + + const params = swiper.params.scrollbar; + const { scrollbar, $wrapperEl } = swiper; + const { $el } = scrollbar; + + if (!swiper.scrollbar.isTouched) return; + swiper.scrollbar.isTouched = false; + if (swiper.params.cssMode) { + swiper.$wrapperEl.css('scroll-snap-type', ''); + $wrapperEl.transition(''); + } + if (params.hide) { + clearTimeout(swiper.scrollbar.dragTimeout); + swiper.scrollbar.dragTimeout = Utils.nextTick(() => { + $el.css('opacity', 0); + $el.transition(400); + }, 1000); + } + swiper.emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + }, + enableDraggable() { + const swiper = this; + if (!swiper.params.scrollbar.el) return; + const { + scrollbar, touchEventsTouch, touchEventsDesktop, params, + } = swiper; + const $el = scrollbar.$el; + const target = $el[0]; + const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; + const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + if (!Support.touch) { + target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); + document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); + document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); + } else { + target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener); + target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener); + target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener); + } + }, + disableDraggable() { + const swiper = this; + if (!swiper.params.scrollbar.el) return; + const { + scrollbar, touchEventsTouch, touchEventsDesktop, params, + } = swiper; + const $el = scrollbar.$el; + const target = $el[0]; + const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; + const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; + if (!Support.touch) { + target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); + document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); + document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); + } else { + target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener); + target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener); + target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener); + } + }, + init() { + const swiper = this; + if (!swiper.params.scrollbar.el) return; + const { scrollbar, $el: $swiperEl } = swiper; + const params = swiper.params.scrollbar; + + let $el = $(params.el); + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { + $el = $swiperEl.find(params.el); + } + + let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`); + if ($dragEl.length === 0) { + $dragEl = $(`
      `); + $el.append($dragEl); + } + + Utils.extend(scrollbar, { + $el, + el: $el[0], + $dragEl, + dragEl: $dragEl[0], + }); + + if (params.draggable) { + scrollbar.enableDraggable(); + } + }, + destroy() { + const swiper = this; + swiper.scrollbar.disableDraggable(); + }, +}; + +export default { + name: 'scrollbar', + params: { + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + scrollbar: { + init: Scrollbar.init.bind(swiper), + destroy: Scrollbar.destroy.bind(swiper), + updateSize: Scrollbar.updateSize.bind(swiper), + setTranslate: Scrollbar.setTranslate.bind(swiper), + setTransition: Scrollbar.setTransition.bind(swiper), + enableDraggable: Scrollbar.enableDraggable.bind(swiper), + disableDraggable: Scrollbar.disableDraggable.bind(swiper), + setDragPosition: Scrollbar.setDragPosition.bind(swiper), + getPointerPosition: Scrollbar.getPointerPosition.bind(swiper), + onDragStart: Scrollbar.onDragStart.bind(swiper), + onDragMove: Scrollbar.onDragMove.bind(swiper), + onDragEnd: Scrollbar.onDragEnd.bind(swiper), + isTouched: false, + timeout: null, + dragTimeout: null, + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.scrollbar.init(); + swiper.scrollbar.updateSize(); + swiper.scrollbar.setTranslate(); + }, + update() { + const swiper = this; + swiper.scrollbar.updateSize(); + }, + resize() { + const swiper = this; + swiper.scrollbar.updateSize(); + }, + observerUpdate() { + const swiper = this; + swiper.scrollbar.updateSize(); + }, + setTranslate() { + const swiper = this; + swiper.scrollbar.setTranslate(); + }, + setTransition(duration) { + const swiper = this; + swiper.scrollbar.setTransition(duration); + }, + destroy() { + const swiper = this; + swiper.scrollbar.destroy(); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/components/scrollbar/scrollbar.less b/static/libs/swiper-5.3.8/src/components/scrollbar/scrollbar.less new file mode 100644 index 0000000..abe1843 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/scrollbar/scrollbar.less @@ -0,0 +1,38 @@ +/* Scrollbar */ +.swiper-scrollbar { + border-radius: 10px; + position: relative; + -ms-touch-action: none; + background: rgba(0,0,0,0.1); + .swiper-container-horizontal > & { + position: absolute; + left: 1%; + bottom: 3px; + z-index: 50; + height: 5px; + width: 98%; + } + .swiper-container-vertical > & { + position: absolute; + right: 3px; + top: 1%; + z-index: 50; + width: 5px; + height: 98%; + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: rgba(0,0,0,0.5); + border-radius: 10px; + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/src/components/scrollbar/scrollbar.scss b/static/libs/swiper-5.3.8/src/components/scrollbar/scrollbar.scss new file mode 100644 index 0000000..abe1843 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/scrollbar/scrollbar.scss @@ -0,0 +1,38 @@ +/* Scrollbar */ +.swiper-scrollbar { + border-radius: 10px; + position: relative; + -ms-touch-action: none; + background: rgba(0,0,0,0.1); + .swiper-container-horizontal > & { + position: absolute; + left: 1%; + bottom: 3px; + z-index: 50; + height: 5px; + width: 98%; + } + .swiper-container-vertical > & { + position: absolute; + right: 3px; + top: 1%; + z-index: 50; + width: 5px; + height: 98%; + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: rgba(0,0,0,0.5); + border-radius: 10px; + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/src/components/thumbs/thumbs.js b/static/libs/swiper-5.3.8/src/components/thumbs/thumbs.js new file mode 100644 index 0000000..ad055e7 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/thumbs/thumbs.js @@ -0,0 +1,211 @@ +import Utils from '../../utils/utils'; +import $ from '../../utils/dom'; + +const Thumbs = { + init() { + const swiper = this; + const { thumbs: thumbsParams } = swiper.params; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Utils.extend(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false, + }); + Utils.extend(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false, + }); + } else if (Utils.isObject(thumbsParams.swiper)) { + swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, { + watchSlidesVisibility: true, + watchSlidesProgress: true, + slideToClickedSlide: false, + })); + swiper.thumbs.swiperCreated = true; + } + swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick); + }, + onThumbClick() { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + let currentIndex = swiper.activeIndex; + if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) { + swiper.loopFix(); + // eslint-disable-next-line + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + currentIndex = swiper.activeIndex; + } + const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); + const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); + if (typeof prevIndex === 'undefined') slideToIndex = nextIndex; + else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex; + else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex; + else slideToIndex = prevIndex; + } + swiper.slideTo(slideToIndex); + }, + update(initial) { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' + ? thumbsSwiper.slidesPerViewDynamic() + : thumbsSwiper.params.slidesPerView; + + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + let currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) { + thumbsSwiper.loopFix(); + // eslint-disable-next-line + thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft; + currentThumbsIndex = thumbsSwiper.activeIndex; + } + // Find actual thumbs index to slide to + const prevThumbsIndex = thumbsSwiper.slides + .eq(currentThumbsIndex) + .prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0) + .index(); + const nextThumbsIndex = thumbsSwiper.slides + .eq(currentThumbsIndex) + .nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0) + .index(); + if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex; + else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex; + else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex; + else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex; + else newThumbsIndex = prevThumbsIndex; + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - slidesPerView + 1; + } + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + + thumbsToActivate = Math.floor(thumbsToActivate); + + thumbsSwiper.slides.removeClass(thumbActiveClass); + if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) { + for (let i = 0; i < thumbsToActivate; i += 1) { + thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass); + } + } + }, +}; +export default { + name: 'thumbs', + params: { + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-container-thumbs', + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + thumbs: { + swiper: null, + init: Thumbs.init.bind(swiper), + update: Thumbs.update.bind(swiper), + onThumbClick: Thumbs.onThumbClick.bind(swiper), + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + const { thumbs } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + swiper.thumbs.init(); + swiper.thumbs.update(true); + }, + slideChange() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + update() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + resize() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + observerUpdate() { + const swiper = this; + if (!swiper.thumbs.swiper) return; + swiper.thumbs.update(); + }, + setTransition(duration) { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + thumbsSwiper.setTransition(duration); + }, + beforeDestroy() { + const swiper = this; + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper) return; + if (swiper.thumbs.swiperCreated && thumbsSwiper) { + thumbsSwiper.destroy(); + } + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/components/thumbs/thumbs.less b/static/libs/swiper-5.3.8/src/components/thumbs/thumbs.less new file mode 100644 index 0000000..05ac723 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/thumbs/thumbs.less @@ -0,0 +1,5 @@ +.swiper-container-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/src/components/thumbs/thumbs.scss b/static/libs/swiper-5.3.8/src/components/thumbs/thumbs.scss new file mode 100644 index 0000000..05ac723 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/thumbs/thumbs.scss @@ -0,0 +1,5 @@ +.swiper-container-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} \ No newline at end of file diff --git a/static/libs/swiper-5.3.8/src/components/virtual/virtual.js b/static/libs/swiper-5.3.8/src/components/virtual/virtual.js new file mode 100644 index 0000000..010b633 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/virtual/virtual.js @@ -0,0 +1,245 @@ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; + +const Virtual = { + update(force) { + const swiper = this; + const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params; + const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + renderSlide, + offset: previousOffset, + } = swiper.virtual; + swiper.updateActiveIndex(); + const activeIndex = swiper.activeIndex || 0; + + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right'; + else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore; + slidesBefore = slidesPerGroup + addSlidesAfter; + } + const from = Math.max((activeIndex || 0) - slidesBefore, 0); + const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1); + const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + + Utils.extend(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + }); + + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + if (swiper.lazy && swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + } + + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.css(offsetProp, `${offset}px`); + } + swiper.updateProgress(); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: (function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }()), + }); + onRendered(); + return; + } + const prependIndexes = []; + const appendIndexes = []; + if (force) { + swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove(); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove(); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + if (i >= from && i <= to) { + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(i); + } else { + if (i > previousTo) appendIndexes.push(i); + if (i < previousFrom) prependIndexes.push(i); + } + } + } + appendIndexes.forEach((index) => { + swiper.$wrapperEl.append(renderSlide(slides[index], index)); + }); + prependIndexes.sort((a, b) => b - a).forEach((index) => { + swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); + }); + swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`); + onRendered(); + }, + renderSlide(slide, index) { + const swiper = this; + const params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + const $slideEl = params.renderSlide + ? $(params.renderSlide.call(swiper, slide, index)) + : $(`
      ${slide}
      `); + if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index); + if (params.cache) swiper.virtual.cache[index] = $slideEl; + return $slideEl; + }, + appendSlide(slides) { + const swiper = this; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + swiper.virtual.update(true); + }, + prependSlide(slides) { + const swiper = this; + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach((cachedIndex) => { + const $cachedEl = cache[cachedIndex]; + const cachedElIndex = $cachedEl.attr('data-swiper-slide-index'); + if (cachedElIndex) { + $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl; + }); + swiper.virtual.cache = newCache; + } + swiper.virtual.update(true); + swiper.slideTo(newActiveIndex, 0); + }, + removeSlide(slidesIndexes) { + const swiper = this; + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + } + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + swiper.virtual.slides.splice(slidesIndexes, 1); + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + } + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + swiper.virtual.update(true); + swiper.slideTo(activeIndex, 0); + }, + removeAllSlides() { + const swiper = this; + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + swiper.virtual.update(true); + swiper.slideTo(0, 0); + }, +}; + +export default { + name: 'virtual', + params: { + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + addSlidesBefore: 0, + addSlidesAfter: 0, + }, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + virtual: { + update: Virtual.update.bind(swiper), + appendSlide: Virtual.appendSlide.bind(swiper), + prependSlide: Virtual.prependSlide.bind(swiper), + removeSlide: Virtual.removeSlide.bind(swiper), + removeAllSlides: Virtual.removeAllSlides.bind(swiper), + renderSlide: Virtual.renderSlide.bind(swiper), + slides: swiper.params.virtual.slides, + cache: {}, + }, + }); + }, + on: { + beforeInit() { + const swiper = this; + if (!swiper.params.virtual.enabled) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + const overwriteParams = { + watchSlidesProgress: true, + }; + Utils.extend(swiper.params, overwriteParams); + Utils.extend(swiper.originalParams, overwriteParams); + + if (!swiper.params.initialSlide) { + swiper.virtual.update(); + } + }, + setTranslate() { + const swiper = this; + if (!swiper.params.virtual.enabled) return; + swiper.virtual.update(); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/components/zoom/zoom.js b/static/libs/swiper-5.3.8/src/components/zoom/zoom.js new file mode 100644 index 0000000..1e67745 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/zoom/zoom.js @@ -0,0 +1,559 @@ +import $ from '../../utils/dom'; +import Utils from '../../utils/utils'; +import Device from '../../utils/device'; +import Support from '../../utils/support'; + +const Zoom = { + // Calc Scale From Multi-touches + getDistanceBetweenTouches(e) { + if (e.targetTouches.length < 2) return 1; + const x1 = e.targetTouches[0].pageX; + const y1 = e.targetTouches[0].pageY; + const x2 = e.targetTouches[1].pageX; + const y2 = e.targetTouches[1].pageY; + const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2)); + return distance; + }, + // Events + onGestureStart(e) { + const swiper = this; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const { gesture } = zoom; + zoom.fakeGestureTouched = false; + zoom.fakeGestureMoved = false; + if (!Support.gestures) { + if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) { + return; + } + zoom.fakeGestureTouched = true; + gesture.scaleStart = Zoom.getDistanceBetweenTouches(e); + } + if (!gesture.$slideEl || !gesture.$slideEl.length) { + gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`); + if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target'); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + if (gesture.$imageWrapEl.length === 0) { + gesture.$imageEl = undefined; + return; + } + } + if (gesture.$imageEl) { + gesture.$imageEl.transition(0); + } + swiper.zoom.isScaling = true; + }, + onGestureChange(e) { + const swiper = this; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const { gesture } = zoom; + if (!Support.gestures) { + if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) { + return; + } + zoom.fakeGestureMoved = true; + gesture.scaleMove = Zoom.getDistanceBetweenTouches(e); + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + if (Support.gestures) { + zoom.scale = e.scale * zoom.currentScale; + } else { + zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale; + } + if (zoom.scale > gesture.maxRatio) { + zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5); + } + if (zoom.scale < params.minRatio) { + zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5); + } + gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`); + }, + onGestureEnd(e) { + const swiper = this; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const { gesture } = zoom; + if (!Support.gestures) { + if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) { + return; + } + if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) { + return; + } + zoom.fakeGestureTouched = false; + zoom.fakeGestureMoved = false; + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`); + zoom.currentScale = zoom.scale; + zoom.isScaling = false; + if (zoom.scale === 1) gesture.$slideEl = undefined; + }, + onTouchStart(e) { + const swiper = this; + const zoom = swiper.zoom; + const { gesture, image } = zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + if (image.isTouched) return; + if (Device.android) e.preventDefault(); + image.isTouched = true; + image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; + image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; + }, + onTouchMove(e) { + const swiper = this; + const zoom = swiper.zoom; + const { gesture, image, velocity } = zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + swiper.allowClick = false; + if (!image.isTouched || !gesture.$slideEl) return; + + if (!image.isMoved) { + image.width = gesture.$imageEl[0].offsetWidth; + image.height = gesture.$imageEl[0].offsetHeight; + image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0; + image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0; + gesture.slideWidth = gesture.$slideEl[0].offsetWidth; + gesture.slideHeight = gesture.$slideEl[0].offsetHeight; + gesture.$imageWrapEl.transition(0); + if (swiper.rtl) { + image.startX = -image.startX; + image.startY = -image.startY; + } + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + + if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; + + image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); + image.maxX = -image.minX; + image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); + image.maxY = -image.minY; + + image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; + image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; + + if (!image.isMoved && !zoom.isScaling) { + if ( + swiper.isHorizontal() + && ( + (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x) + || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x) + ) + ) { + image.isTouched = false; + return; + } if ( + !swiper.isHorizontal() + && ( + (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y) + || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y) + ) + ) { + image.isTouched = false; + return; + } + } + e.preventDefault(); + e.stopPropagation(); + + image.isMoved = true; + image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX; + image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY; + + if (image.currentX < image.minX) { + image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8); + } + if (image.currentX > image.maxX) { + image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8); + } + + if (image.currentY < image.minY) { + image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8); + } + if (image.currentY > image.maxY) { + image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8); + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + + gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); + }, + onTouchEnd() { + const swiper = this; + const zoom = swiper.zoom; + const { gesture, image, velocity } = zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + + image.currentX = newPositionX; + image.currentY = newPositionY; + + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); + image.maxX = -image.minX; + image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + + gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); + }, + onTransitionEnd() { + const swiper = this; + const zoom = swiper.zoom; + const { gesture } = zoom; + if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) { + if (gesture.$imageEl) { + gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); + } + if (gesture.$imageWrapEl) { + gesture.$imageWrapEl.transform('translate3d(0,0,0)'); + } + + zoom.scale = 1; + zoom.currentScale = 1; + + gesture.$slideEl = undefined; + gesture.$imageEl = undefined; + gesture.$imageWrapEl = undefined; + } + }, + // Toggle Zoom + toggle(e) { + const swiper = this; + const zoom = swiper.zoom; + + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoom.out(); + } else { + // Zoom In + zoom.in(e); + } + }, + in(e) { + const swiper = this; + + const zoom = swiper.zoom; + const params = swiper.params.zoom; + const { gesture, image } = zoom; + + if (!gesture.$slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); + } else { + gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + } + gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target'); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + + gesture.$slideEl.addClass(`${params.zoomedSlideClass}`); + + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; + touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + + zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + if (e) { + slideWidth = gesture.$slideEl[0].offsetWidth; + slideHeight = gesture.$slideEl[0].offsetHeight; + offsetX = gesture.$slideEl.offset().left; + offsetY = gesture.$slideEl.offset().top; + diffX = (offsetX + (slideWidth / 2)) - touchX; + diffY = (offsetY + (slideHeight / 2)) - touchY; + + imageWidth = gesture.$imageEl[0].offsetWidth; + imageHeight = gesture.$imageEl[0].offsetHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + + translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0); + translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`); + gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`); + }, + out() { + const swiper = this; + + const zoom = swiper.zoom; + const params = swiper.params.zoom; + const { gesture } = zoom; + + if (!gesture.$slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); + } else { + gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + } + gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target'); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + } + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + + zoom.scale = 1; + zoom.currentScale = 1; + gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); + gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); + gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`); + gesture.$slideEl = undefined; + }, + // Attach/Detach Events + enable() { + const swiper = this; + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + + const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; + const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true; + + const slideSelector = `.${swiper.params.slideClass}`; + + // Scale image + if (Support.gestures) { + swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener); + swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener); + } else if (swiper.touchEvents.start === 'touchstart') { + swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture); + swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener); + if (swiper.touchEvents.cancel) { + swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener); + } + } + + // Move image + swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture); + }, + disable() { + const swiper = this; + const zoom = swiper.zoom; + if (!zoom.enabled) return; + + swiper.zoom.enabled = false; + + const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; + const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true; + + const slideSelector = `.${swiper.params.slideClass}`; + + // Scale image + if (Support.gestures) { + swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener); + swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener); + } else if (swiper.touchEvents.start === 'touchstart') { + swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener); + swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture); + swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener); + if (swiper.touchEvents.cancel) { + swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener); + } + } + + // Move image + swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture); + }, +}; + +export default { + name: 'zoom', + params: { + zoom: { + enabled: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed', + }, + }, + create() { + const swiper = this; + const zoom = { + enabled: false, + scale: 1, + currentScale: 1, + isScaling: false, + gesture: { + $slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + $imageEl: undefined, + $imageWrapEl: undefined, + maxRatio: 3, + }, + image: { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {}, + }, + velocity: { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined, + }, + }; + + ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => { + zoom[methodName] = Zoom[methodName].bind(swiper); + }); + Utils.extend(swiper, { + zoom, + }); + + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined; + const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined; + swiper.emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + }, + }); + }, + on: { + init() { + const swiper = this; + if (swiper.params.zoom.enabled) { + swiper.zoom.enable(); + } + }, + destroy() { + const swiper = this; + swiper.zoom.disable(); + }, + touchStart(e) { + const swiper = this; + if (!swiper.zoom.enabled) return; + swiper.zoom.onTouchStart(e); + }, + touchEnd(e) { + const swiper = this; + if (!swiper.zoom.enabled) return; + swiper.zoom.onTouchEnd(e); + }, + doubleTap(e) { + const swiper = this; + if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + swiper.zoom.toggle(e); + } + }, + transitionEnd() { + const swiper = this; + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + swiper.zoom.onTransitionEnd(); + } + }, + slideChange() { + const swiper = this; + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + swiper.zoom.onTransitionEnd(); + } + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/components/zoom/zoom.less b/static/libs/swiper-5.3.8/src/components/zoom/zoom.less new file mode 100644 index 0000000..50b5305 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/zoom/zoom.less @@ -0,0 +1,18 @@ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, > svg, > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} + +.swiper-slide-zoomed { + cursor: move; +} diff --git a/static/libs/swiper-5.3.8/src/components/zoom/zoom.scss b/static/libs/swiper-5.3.8/src/components/zoom/zoom.scss new file mode 100644 index 0000000..50b5305 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/components/zoom/zoom.scss @@ -0,0 +1,18 @@ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, > svg, > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} + +.swiper-slide-zoomed { + cursor: move; +} diff --git a/static/libs/swiper-5.3.8/src/icons/font/swiper-icons.ttf b/static/libs/swiper-5.3.8/src/icons/font/swiper-icons.ttf new file mode 100644 index 0000000..e89be04 Binary files /dev/null and b/static/libs/swiper-5.3.8/src/icons/font/swiper-icons.ttf differ diff --git a/static/libs/swiper-5.3.8/src/icons/font/swiper-icons.woff b/static/libs/swiper-5.3.8/src/icons/font/swiper-icons.woff new file mode 100644 index 0000000..6b11edd Binary files /dev/null and b/static/libs/swiper-5.3.8/src/icons/font/swiper-icons.woff differ diff --git a/static/libs/swiper-5.3.8/src/icons/font/swiper-icons.woff2 b/static/libs/swiper-5.3.8/src/icons/font/swiper-icons.woff2 new file mode 100644 index 0000000..f48fa0e Binary files /dev/null and b/static/libs/swiper-5.3.8/src/icons/font/swiper-icons.woff2 differ diff --git a/static/libs/swiper-5.3.8/src/icons/svg/next.svg b/static/libs/swiper-5.3.8/src/icons/svg/next.svg new file mode 100644 index 0000000..453a99f --- /dev/null +++ b/static/libs/swiper-5.3.8/src/icons/svg/next.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/libs/swiper-5.3.8/src/icons/svg/prev.svg b/static/libs/swiper-5.3.8/src/icons/svg/prev.svg new file mode 100644 index 0000000..e639123 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/icons/svg/prev.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/libs/swiper-5.3.8/src/less/mixins.less b/static/libs/swiper-5.3.8/src/less/mixins.less new file mode 100644 index 0000000..f8fedd5 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/less/mixins.less @@ -0,0 +1,24 @@ +@plugin './plugin.js'; +.navigation-color-loop(@ruleset) when (length( @colors ) >= 1) { + @length: length( @colors ) ; + .looper( 1 ) ; + .looper( @index ) when ( @index <= @length ) and (length(extract( @colors, @index )) = 2) { + @navPair: extract( @colors, @index ); + @navColorName: extract( @navPair, 1 ) ; + @navColorValue: extract( @navPair, 2 ) ; + @ruleset(); + .looper( @index + 1 ) ; + } +} + +.pagination-color-loop(@ruleset) when (length( @colors ) >= 1) { + @length: length( @colors ) ; + .looper( 1 ) ; + .looper( @index ) when ( @index <= @length ) and (length(extract( @colors, @index )) = 2) { + @paginationPair: extract( @colors, @index ); + @paginationColorName: extract( @paginationPair, 1 ) ; + @paginationColorValue: extract( @paginationPair, 2 ) ; + @ruleset(); + .looper( @index + 1 ) ; + } +} diff --git a/static/libs/swiper-5.3.8/src/less/plugin.js b/static/libs/swiper-5.3.8/src/less/plugin.js new file mode 100644 index 0000000..0e310f5 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/less/plugin.js @@ -0,0 +1,17 @@ +const fs = require('fs'); + +function base64Encode(file) { + // read binary data + const bitmap = fs.readFileSync(file); + // convert binary data to base64 encoded string + return Buffer.from(bitmap).toString('base64'); +} + +module.exports = { + install(less, pluginManager, functions) { + functions.add('swiperIconsFont', () => { + const iconsFontBase64 = base64Encode('./src/icons/font/swiper-icons.woff'); + return iconsFontBase64; + }); + }, +}; diff --git a/static/libs/swiper-5.3.8/src/modules/browser/browser.js b/static/libs/swiper-5.3.8/src/modules/browser/browser.js new file mode 100644 index 0000000..be8a386 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/modules/browser/browser.js @@ -0,0 +1,11 @@ +import Browser from '../../utils/browser'; + +export default { + name: 'browser', + proto: { + browser: Browser, + }, + static: { + browser: Browser, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/modules/device/device.js b/static/libs/swiper-5.3.8/src/modules/device/device.js new file mode 100644 index 0000000..d4b31cc --- /dev/null +++ b/static/libs/swiper-5.3.8/src/modules/device/device.js @@ -0,0 +1,11 @@ +import Device from '../../utils/device'; + +export default { + name: 'device', + proto: { + device: Device, + }, + static: { + device: Device, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/modules/observer/observer.js b/static/libs/swiper-5.3.8/src/modules/observer/observer.js new file mode 100644 index 0000000..1bf4131 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/modules/observer/observer.js @@ -0,0 +1,90 @@ +import { window } from 'ssr-window'; +import Utils from '../../utils/utils'; +import Support from '../../utils/support'; + +const Observer = { + func: window.MutationObserver || window.WebkitMutationObserver, + attach(target, options = {}) { + const swiper = this; + + const ObserverFunc = Observer.func; + const observer = new ObserverFunc((mutations) => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (mutations.length === 1) { + swiper.emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + swiper.emit('observerUpdate', mutations[0]); + }; + + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData, + }); + + swiper.observer.observers.push(observer); + }, + init() { + const swiper = this; + if (!Support.observer || !swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = swiper.$el.parents(); + for (let i = 0; i < containerParents.length; i += 1) { + swiper.observer.attach(containerParents[i]); + } + } + // Observe container + swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren }); + + // Observe wrapper + swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false }); + }, + destroy() { + const swiper = this; + swiper.observer.observers.forEach((observer) => { + observer.disconnect(); + }); + swiper.observer.observers = []; + }, +}; + +export default { + name: 'observer', + params: { + observer: false, + observeParents: false, + observeSlideChildren: false, + }, + create() { + const swiper = this; + Utils.extend(swiper, { + observer: { + init: Observer.init.bind(swiper), + attach: Observer.attach.bind(swiper), + destroy: Observer.destroy.bind(swiper), + observers: [], + }, + }); + }, + on: { + init() { + const swiper = this; + swiper.observer.init(); + }, + destroy() { + const swiper = this; + swiper.observer.destroy(); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/modules/resize/resize.js b/static/libs/swiper-5.3.8/src/modules/resize/resize.js new file mode 100644 index 0000000..4f14b3d --- /dev/null +++ b/static/libs/swiper-5.3.8/src/modules/resize/resize.js @@ -0,0 +1,37 @@ +import { window } from 'ssr-window'; +import Utils from '../../utils/utils'; + +export default { + name: 'resize', + create() { + const swiper = this; + Utils.extend(swiper, { + resize: { + resizeHandler() { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + swiper.emit('beforeResize'); + swiper.emit('resize'); + }, + orientationChangeHandler() { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + swiper.emit('orientationchange'); + }, + }, + }); + }, + on: { + init() { + const swiper = this; + // Emit resize + window.addEventListener('resize', swiper.resize.resizeHandler); + + // Emit orientationchange + window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler); + }, + destroy() { + const swiper = this; + window.removeEventListener('resize', swiper.resize.resizeHandler); + window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler); + }, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/modules/support/support.js b/static/libs/swiper-5.3.8/src/modules/support/support.js new file mode 100644 index 0000000..05e61da --- /dev/null +++ b/static/libs/swiper-5.3.8/src/modules/support/support.js @@ -0,0 +1,11 @@ +import Support from '../../utils/support'; + +export default { + name: 'support', + proto: { + support: Support, + }, + static: { + support: Support, + }, +}; diff --git a/static/libs/swiper-5.3.8/src/scss/functions.scss b/static/libs/swiper-5.3.8/src/scss/functions.scss new file mode 100644 index 0000000..14bae70 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/scss/functions.scss @@ -0,0 +1,60 @@ +/// Urlencode the SVG string +/// @param {String} $svg - SVG image to encode +/// @return {String} - Encoded SVG data uri +@function swiper-svg-uri($svg) { + $encoded: ''; + $chunkSize: 2048; + $index: 0; + $loops: ceil(str-length($svg) / $chunkSize); + + $map: ( + "%": "%25", + "<": "%3C", + ">": "%3E", + " ": "%20", + "!": "%21", + "*": "%2A", + '"': "%22", + ";": "%3B", + ":": "%3A", + "@": "%40", + "&": "%26", + "=": "%3D", + "+": "%2B", + "$": "%24", + ",": "%2C", + "/": "%2F", + "?": "%3F", + "#": "%23", + "[": "%5B", + "]": "%5D" + ); + + @for $i from 1 through $loops { + $chunk: str-slice($svg, $index, $index + $chunkSize - 1); + @each $search, $replace in $map { + $chunk: swiper-str-replace($chunk, $search, $replace); + } + $encoded: #{$encoded}#{$chunk}; + $index: $index + $chunkSize; + } + + @return url("data:image/svg+xml;charset=utf-8,#{$encoded}"); +} + +/// Replace `$search` with `$replace` in `$string` +/// @author Hugo Giraudel +/// @link http://sassmeister.com/gist/1b4f2da5527830088e4d +/// @param {String} $string - Initial string +/// @param {String} $search - Substring to replace +/// @param {String} $replace ('') - New value +/// @return {String} - Updated string +@function swiper-str-replace($string, $search, $replace: '') { + $index: str-index($string, $search); + + @if $index { + @return str-slice($string, 1, $index - 1) + $replace + swiper-str-replace(str-slice($string, $index + str-length($search)), $search, $replace); + } + + @return $string; +} diff --git a/static/libs/swiper-5.3.8/src/swiper.js b/static/libs/swiper-5.3.8/src/swiper.js new file mode 100644 index 0000000..b4984da --- /dev/null +++ b/static/libs/swiper-5.3.8/src/swiper.js @@ -0,0 +1,29 @@ +// Swiper Class +import Swiper from './components/core/core-class'; + +// Core Modules +import Device from './modules/device/device'; +import Support from './modules/support/support'; +import Browser from './modules/browser/browser'; +import Resize from './modules/resize/resize'; +import Observer from './modules/observer/observer'; + +//IMPORT_COMPONENTS + +const components = [ + Device, + Support, + Browser, + Resize, + Observer, + //INSTALL_COMPONENTS +]; + +if (typeof Swiper.use === 'undefined') { + Swiper.use = Swiper.Class.use; + Swiper.installModule = Swiper.Class.installModule; +} + +Swiper.use(components); + +//EXPORT diff --git a/static/libs/swiper-5.3.8/src/swiper.less b/static/libs/swiper-5.3.8/src/swiper.less new file mode 100644 index 0000000..41bca4b --- /dev/null +++ b/static/libs/swiper-5.3.8/src/swiper.less @@ -0,0 +1,16 @@ +@import url('./less/mixins.less'); + +@themeColor: $themeColor; +@colors: $colors; + +@font-face { + @fontBase64: swiperIconsFont(); + font-family: 'swiper-icons'; + src: url("data:application/font-woff;charset=utf-8;base64, @{fontBase64}") format("woff"); + font-weight: 400; + font-style: normal; +} + +@import url('./components/core/core.less'); + +//IMPORT_COMPONENTS diff --git a/static/libs/swiper-5.3.8/src/swiper.scss b/static/libs/swiper-5.3.8/src/swiper.scss new file mode 100644 index 0000000..b8958c1 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/swiper.scss @@ -0,0 +1,15 @@ +@import "./scss/functions"; + +$themeColor: #007aff !default; +$colors: ('white': #ffffff, 'black': #000000) !default; + +@font-face { + font-family: 'swiper-icons'; + src: url("data:application/font-woff;charset=utf-8;base64, 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") format("woff"); + font-weight: 400; + font-style: normal; +} + +@import "./components/core/core"; + +//IMPORT_COMPONENTS diff --git a/static/libs/swiper-5.3.8/src/utils/browser.js b/static/libs/swiper-5.3.8/src/utils/browser.js new file mode 100644 index 0000000..ac64a70 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/utils/browser.js @@ -0,0 +1,15 @@ +import { window } from 'ssr-window'; + +const Browser = (function Browser() { + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0); + } + return { + isEdge: !!window.navigator.userAgent.match(/Edge/g), + isSafari: isSafari(), + isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent), + }; +}()); + +export default Browser; diff --git a/static/libs/swiper-5.3.8/src/utils/class.js b/static/libs/swiper-5.3.8/src/utils/class.js new file mode 100644 index 0000000..1cf2b37 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/utils/class.js @@ -0,0 +1,173 @@ +import Utils from './utils'; + +class SwiperClass { + constructor(params = {}) { + const self = this; + self.params = params; + + // Events + self.eventsListeners = {}; + + if (self.params && self.params.on) { + Object.keys(self.params.on).forEach((eventName) => { + self.on(eventName, self.params.on[eventName]); + }); + } + } + + on(events, handler, priority) { + const self = this; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach((event) => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + } + + once(events, handler, priority) { + const self = this; + if (typeof handler !== 'function') return self; + function onceHandler(...args) { + self.off(events, onceHandler); + if (onceHandler.f7proxy) { + delete onceHandler.f7proxy; + } + handler.apply(self, args); + } + onceHandler.f7proxy = handler; + return self.on(events, onceHandler, priority); + } + + off(events, handler) { + const self = this; + if (!self.eventsListeners) return self; + events.split(' ').forEach((event) => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event] && self.eventsListeners[event].length) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + } + + emit(...args) { + const self = this; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach((event) => { + if (self.eventsListeners && self.eventsListeners[event]) { + const handlers = []; + self.eventsListeners[event].forEach((eventHandler) => { + handlers.push(eventHandler); + }); + handlers.forEach((eventHandler) => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + + useModulesParams(instanceParams) { + const instance = this; + if (!instance.modules) return; + Object.keys(instance.modules).forEach((moduleName) => { + const module = instance.modules[moduleName]; + // Extend params + if (module.params) { + Utils.extend(instanceParams, module.params); + } + }); + } + + useModules(modulesParams = {}) { + const instance = this; + if (!instance.modules) return; + Object.keys(instance.modules).forEach((moduleName) => { + const module = instance.modules[moduleName]; + const moduleParams = modulesParams[moduleName] || {}; + // Extend instance methods and props + if (module.instance) { + Object.keys(module.instance).forEach((modulePropName) => { + const moduleProp = module.instance[modulePropName]; + if (typeof moduleProp === 'function') { + instance[modulePropName] = moduleProp.bind(instance); + } else { + instance[modulePropName] = moduleProp; + } + }); + } + // Add event listeners + if (module.on && instance.on) { + Object.keys(module.on).forEach((moduleEventName) => { + instance.on(moduleEventName, module.on[moduleEventName]); + }); + } + + // Module create callback + if (module.create) { + module.create.bind(instance)(moduleParams); + } + }); + } + + static set components(components) { + const Class = this; + if (!Class.use) return; + Class.use(components); + } + + static installModule(module, ...params) { + const Class = this; + if (!Class.prototype.modules) Class.prototype.modules = {}; + const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`); + Class.prototype.modules[name] = module; + // Prototype + if (module.proto) { + Object.keys(module.proto).forEach((key) => { + Class.prototype[key] = module.proto[key]; + }); + } + // Class + if (module.static) { + Object.keys(module.static).forEach((key) => { + Class[key] = module.static[key]; + }); + } + // Callback + if (module.install) { + module.install.apply(Class, params); + } + return Class; + } + + static use(module, ...params) { + const Class = this; + if (Array.isArray(module)) { + module.forEach((m) => Class.installModule(m)); + return Class; + } + return Class.installModule(module, ...params); + } +} + +export default SwiperClass; diff --git a/static/libs/swiper-5.3.8/src/utils/device.js b/static/libs/swiper-5.3.8/src/utils/device.js new file mode 100644 index 0000000..255180f --- /dev/null +++ b/static/libs/swiper-5.3.8/src/utils/device.js @@ -0,0 +1,117 @@ +import { window } from 'ssr-window'; +import Support from './support'; + +const Device = (function Device() { + const platform = window.navigator.platform; + const ua = window.navigator.userAgent; + + const device = { + ios: false, + android: false, + androidChrome: false, + desktop: false, + iphone: false, + ipod: false, + ipad: false, + edge: false, + ie: false, + firefox: false, + macos: false, + windows: false, + cordova: !!(window.cordova || window.phonegap), + phonegap: !!(window.cordova || window.phonegap), + electron: false, + }; + + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0; + const edge = ua.indexOf('Edge/') >= 0; + const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0; + const windows = platform === 'Win32'; + const electron = ua.toLowerCase().indexOf('electron') >= 0; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + if (!ipad + && macos + && Support.touch + && ( + (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9 + || (screenWidth === 834 && screenHeight === 1194) // Pro 11 + || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5 + || (screenWidth === 768 && screenHeight === 1024) // other + ) + ) { + ipad = ua.match(/(Version)\/([\d.]+)/); + macos = false; + } + + device.ie = ie; + device.edge = edge; + device.firefox = firefox; + + // Android + if (android && !windows) { + device.os = 'android'; + device.osVersion = android[2]; + device.android = true; + device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + // iOS + if (iphone && !ipod) { + device.osVersion = iphone[2].replace(/_/g, '.'); + device.iphone = true; + } + if (ipad) { + device.osVersion = ipad[2].replace(/_/g, '.'); + device.ipad = true; + } + if (ipod) { + device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null; + device.ipod = true; + } + // iOS 8+ changed UA + if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) { + if (device.osVersion.split('.')[0] === '10') { + device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0]; + } + } + + // Webview + device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone)) + || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches); + device.webview = device.webView; + device.standalone = device.webView; + + // Desktop + device.desktop = !(device.ios || device.android) || electron; + if (device.desktop) { + device.electron = electron; + device.macos = macos; + device.windows = windows; + if (device.macos) { + device.os = 'macos'; + } + if (device.windows) { + device.os = 'windows'; + } + } + + // Pixel Ratio + device.pixelRatio = window.devicePixelRatio || 1; + + // Export object + return device; +}()); + +export default Device; diff --git a/static/libs/swiper-5.3.8/src/utils/dom.js b/static/libs/swiper-5.3.8/src/utils/dom.js new file mode 100644 index 0000000..0f532c6 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/utils/dom.js @@ -0,0 +1,88 @@ +import { + $, + addClass, + removeClass, + hasClass, + toggleClass, + attr, + removeAttr, + data, + transform, + transition, + on, + off, + trigger, + transitionEnd, + outerWidth, + outerHeight, + offset, + css, + each, + html, + text, + is, + index, + eq, + append, + prepend, + next, + nextAll, + prev, + prevAll, + parent, + parents, + closest, + find, + children, + filter, + remove, + add, + styles, +} from 'dom7/dist/dom7.modular'; + +const Methods = { + addClass, + removeClass, + hasClass, + toggleClass, + attr, + removeAttr, + data, + transform, + transition, + on, + off, + trigger, + transitionEnd, + outerWidth, + outerHeight, + offset, + css, + each, + html, + text, + is, + index, + eq, + append, + prepend, + next, + nextAll, + prev, + prevAll, + parent, + parents, + closest, + find, + children, + filter, + remove, + add, + styles, +}; + +Object.keys(Methods).forEach((methodName) => { + $.fn[methodName] = $.fn[methodName] || Methods[methodName]; +}); + +export default $; diff --git a/static/libs/swiper-5.3.8/src/utils/support.js b/static/libs/swiper-5.3.8/src/utils/support.js new file mode 100644 index 0000000..fb46601 --- /dev/null +++ b/static/libs/swiper-5.3.8/src/utils/support.js @@ -0,0 +1,37 @@ +import { window, document } from 'ssr-window'; + +const Support = (function Support() { + return { + touch: (window.Modernizr && window.Modernizr.touch === true) || (function checkTouch() { + return !!((window.navigator.maxTouchPoints > 0) || ('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch)); + }()), + + pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints > 0, + + observer: (function checkObserver() { + return ('MutationObserver' in window || 'WebkitMutationObserver' in window); + }()), + + passiveListener: (function checkPassiveListener() { + let supportsPassive = false; + try { + const opts = Object.defineProperty({}, 'passive', { + // eslint-disable-next-line + get() { + supportsPassive = true; + }, + }); + window.addEventListener('testPassiveListener', null, opts); + } catch (e) { + // No support + } + return supportsPassive; + }()), + + gestures: (function checkGestures() { + return 'ongesturestart' in window; + }()), + }; +}()); + +export default Support; diff --git a/static/libs/swiper-5.3.8/src/utils/utils.js b/static/libs/swiper-5.3.8/src/utils/utils.js new file mode 100644 index 0000000..c2b2e7c --- /dev/null +++ b/static/libs/swiper-5.3.8/src/utils/utils.js @@ -0,0 +1,110 @@ +import { window } from 'ssr-window'; + +const Utils = { + deleteProps(obj) { + const object = obj; + Object.keys(object).forEach((key) => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + }, + nextTick(callback, delay = 0) { + return setTimeout(callback, delay); + }, + now() { + return Date.now(); + }, + getTranslate(el, axis = 'x') { + let matrix; + let curTransform; + let transformMatrix; + + const curStyle = window.getComputedStyle(el, null); + + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + }, + parseUrlQuery(url) { + const query = {}; + let urlToParse = url || window.location.href; + let i; + let params; + let param; + let length; + if (typeof urlToParse === 'string' && urlToParse.length) { + urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : ''; + params = urlToParse.split('&').filter((paramsPart) => paramsPart !== ''); + length = params.length; + + for (i = 0; i < length; i += 1) { + param = params[i].replace(/#\S+/g, '').split('='); + query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || ''; + } + } + return query; + }, + isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object; + }, + extend(...args) { + const to = Object(args[0]); + for (let i = 1; i < args.length; i += 1) { + const nextSource = args[i]; + if (nextSource !== undefined && nextSource !== null) { + const keysArray = Object.keys(Object(nextSource)); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) { + Utils.extend(to[nextKey], nextSource[nextKey]); + } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) { + to[nextKey] = {}; + Utils.extend(to[nextKey], nextSource[nextKey]); + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + }, +}; +export default Utils; diff --git a/static/libs/template-web.js b/static/libs/template-web.js new file mode 100644 index 0000000..7c400e3 --- /dev/null +++ b/static/libs/template-web.js @@ -0,0 +1,3 @@ +/*! art-template@4.13.2 for browser | https://github.com/aui/art-template */ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.template=t():e.template=t()}("undefined"!=typeof self?self:this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=4)}([function(e,t,n){"use strict";var r=n(6),i=n(2),o=n(22),s=function(e,t){t.onerror(e,t);var n=function(){return"{Template Error}"};return n.mappings=[],n.sourcesContent=[],n},a=function u(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};"string"!=typeof e?t=e:t.source=e,t=i.$extend(t),e=t.source,!0===t.debug&&(t.cache=!1,t.minimize=!1,t.compileDebug=!0),t.compileDebug&&(t.minimize=!1),t.filename&&(t.filename=t.resolveFilename(t.filename,t));var n=t.filename,a=t.cache,c=t.caches;if(a&&n){var l=c.get(n);if(l)return l}if(!e)try{e=t.loader(n,t),t.source=e}catch(m){var f=new o({name:"CompileError",path:n,message:"template not found: "+m.message,stack:m.stack});if(t.bail)throw f;return s(f,t)}var p=void 0,h=new r(t);try{p=h.build()}catch(f){if(f=new o(f),t.bail)throw f;return s(f,t)}var d=function(e,n){try{return p(e,n)}catch(f){if(!t.compileDebug)return t.cache=!1,t.compileDebug=!0,u(t)(e,n);if(f=new o(f),t.bail)throw f;return s(f,t)()}};return d.mappings=p.mappings,d.sourcesContent=p.sourcesContent,d.toString=function(){return p.toString()},a&&n&&c.set(n,d),d};a.Compiler=r,e.exports=a},function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=/((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyu]{1,5}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g,t.matchToToken=function(e){var t={type:"invalid",value:e[0]};return e[1]?(t.type="string",t.closed=!(!e[3]&&!e[4])):e[5]?t.type="comment":e[6]?(t.type="comment",t.closed=!!e[7]):e[8]?t.type="regex":e[9]?t.type="number":e[10]?t.type="name":e[11]?t.type="punctuator":e[12]&&(t.type="whitespace"),t}},function(e,t,n){"use strict";function r(){this.$extend=function(e){return e=e||{},o(e,e instanceof r?e:this)}}var i=n(10),o=n(12),s=n(13),a=n(14),u=n(15),c=n(16),l=n(17),f=n(18),p=n(19),h=n(21),d="undefined"==typeof window,m={source:null,filename:null,rules:[f,l],escape:!0,debug:!!d&&"production"!==process.env.NODE_ENV,bail:!0,cache:!0,minimize:!0,compileDebug:!1,resolveFilename:h,include:s,htmlMinifier:p,htmlMinifierOptions:{collapseWhitespace:!0,minifyCSS:!0,minifyJS:!0,ignoreCustomFragments:[]},onerror:a,loader:c,caches:u,root:"/",extname:".art",ignore:[],imports:i};r.prototype=m,e.exports=new r},function(e,t){},function(e,t,n){"use strict";var r=n(5),i=n(0),o=n(23),s=function(e,t){return t instanceof Object?r({filename:e},t):i({filename:e,source:t})};s.render=r,s.compile=i,s.defaults=o,e.exports=s},function(e,t,n){"use strict";var r=n(0),i=function(e,t,n){return r(e,n)(t)};e.exports=i},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t|\([\w\W]*?\))\s*{[\s;]*$)/,"$1})"],[/(^[\w\W]*?\([\w\W]*?\)\s*{[\s;]*$)/,"$1}"]],n=0;n2&&arguments[2]!==undefined?arguments[2]:{},o=[new i("string",e)],s=0;sd&&(p=new i("string",v.slice(d,h.index),p),m.push(p)),p=new i("expression",h[0],p),h[0]=r(p),p.script=a.use.apply(n,h),m.push(p),d=h.index+h[0].length;d]/;o.$escape=function(e){return r(n(e))},o.$each=function(e,t){if(Array.isArray(e))for(var n=0,r=e.length;n {{"+n+"}}")};switch("#"===t&&h("#value","@value"),p){case"set":i="var "+u.join("").trim();break;case"if":i="if("+u.join("").trim()+"){";break;case"else":var d=u.indexOf("if");~d?(u.splice(0,d+1),i="}else if("+u.join("").trim()+"){"):i="}else{";break;case"/if":i="}";break;case"each":l=r._split(a),l.shift(),"as"===l[1]&&(h("each object as value index","each object value index"),l.splice(1,1));i="$each("+(l[0]||"$data")+",function("+(l[1]||"$value")+","+(l[2]||"$index")+"){";break;case"/each":i="})";break;case"block":l=r._split(a),l.shift(),i="block("+l.join(",").trim()+",function(){";break;case"/block":i="})";break;case"echo":p="print",h("echo value","value");case"print":case"include":case"extend":if(0!==u.join("").trim().indexOf("(")){l=r._split(a),l.shift(),i=p+"("+l.join(",")+")";break}default:if(~u.indexOf("|")){var m=a.reduce(function(e,t){var n=t.value,r=t.type;return"|"===n?e.push([]):"whitespace"!==r&&"comment"!==r&&(e.length||e.push([]),":"===n&&1===e[e.length-1].length?h("value | filter: argv","value | filter argv"):e[e.length-1].push(t)),e},[]).map(function(e){return r._split(e)});i=m.reduce(function(e,t){var n=t.shift();return t.unshift(e),"$imports."+n+"("+t.join(",")+")"},m.shift().join(" ").trim())}f=f||"escape"}return c.code=i,c.output=f,c},_split:function(e){e=e.filter(function(e){var t=e.type;return"whitespace"!==t&&"comment"!==t});for(var t=0,n=e.shift(),r=/\]|\)/,i=[[n]];t/,use:function(e,t,n,r){return n={"-":"raw","=":"escape","":!1,"==":"raw","=#":"raw"}[n],t&&(r="/*"+r+"*/",n=!1),{code:r,output:n}}};e.exports=r},function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t> ":" ")+n+"| "+e}).join("\n");return(r||"anonymous")+":"+i+":"+o+"\n"+f+"\n\n"+t+": "+a+(s?"\n generated: "+s:"")}var a=function(e){function t(e){r(this,t);var n=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e.message));return n.name="TemplateError",n.message=s(e),Error.captureStackTrace&&Error.captureStackTrace(n,n.constructor),n}return o(t,e),t}(Error);e.exports=a},function(e,t,n){"use strict";e.exports=n(2)}])}); \ No newline at end of file diff --git a/static/libs/tv.js b/static/libs/tv.js new file mode 100644 index 0000000..4ba48db --- /dev/null +++ b/static/libs/tv.js @@ -0,0 +1 @@ +"use strict";!function(){if(!window.TradingView||!window.TradingView.host||window.TradingView.reoloadTvjs){var e,t,i,o,n,r,s,a={"color-brand":"#2196f3","color-gull-gray":"#9db2bd","color-scooter":"#38acdb","color-curious-blue":"#299dcd"},d={host:null==window.location.host.match(/tradingview\.com|pyrrosinvestment\.com/i)?"https://s.tradingview.com":"https://www.tradingview.com",ideasHost:"https://www.tradingview.com",chatHost:"https://www.tradingview.com",embedStylesForCopyright:function(){var e=document.createElement("style");return e.innerHTML=".tradingview-widget-copyright {font-size: 13px !important; line-height: 32px !important; text-align: center !important; vertical-align: middle !important; font-family: 'Trebuchet MS', Arial, sans-serif !important; color: "+a["color-gull-gray"]+" !important;} .tradingview-widget-copyright .blue-text {color: "+a["color-brand"]+" !important;} .tradingview-widget-copyright a {text-decoration: none !important; color: "+a["color-gull-gray"]+" !important;} .tradingview-widget-copyright a:visited {color: "+a["color-gull-gray"]+" !important;} .tradingview-widget-copyright a:hover .blue-text {color: "+a["color-scooter"]+" !important;} .tradingview-widget-copyright a:active .blue-text {color: "+a["color-curious-blue"]+" !important;} .tradingview-widget-copyright a:visited .blue-text {color: "+a["color-brand"]+" !important;}",e},embedStylesForFullHeight:function(e,t,i){var o=t?"calc("+e+" - 32px)":e,n=document.querySelector("#"+i);n.parentElement.style.height=o,n.style.height="100%"},gId:function(){return"tradingview_"+(1048576*(1+Math.random())|0).toString(16).substring(1)},isPersentHeight:function(e){return"%"===e},getSuffix:function(e){var t=e.toString().match(/(\%|px|em|ex)/);return t?t[0]:"px"},hasCopyright:function(e){var t=document.getElementById(e),i=t&&t.parentElement;return!!i&&!!i.querySelector(".tradingview-widget-copyright")},calculateWidgetHeight:function(e,t){var i=parseInt(e),o=this.getSuffix(e),n=this.isPersentHeight(o),r=t&&this.hasCopyright(t);return n&&t&&(this.embedStylesForFullHeight(i+o,r,t),r)?100+o:r?"calc("+i+o+" - 32px)":i+o},onready:function(e){window.addEventListener?window.addEventListener("DOMContentLoaded",e,!1):window.attachEvent("onload",e)},css:function(e){var t,i=document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",o.styleSheet?o.styleSheet.cssText=e:(t=document.createTextNode(e),o.appendChild(t)),i.appendChild(o)},bindEvent:function(e,t,i){e.addEventListener?e.addEventListener(t,i,!1):e.attachEvent&&e.attachEvent("on"+t,i)},unbindEvent:function(e,t,i){e.removeEventListener?e.removeEventListener(t,i,!1):e.detachEvent&&e.detachEvent("on"+t,i)},cloneSimpleObject:function(e){if(null==e||"object"!=typeof e)return e;var t=e.constructor();for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t},isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},isMobileDevice:(e={Android:/Android/i.test(navigator.userAgent),BlackBerry:/BlackBerry/i.test(navigator.userAgent),iOS:/iPhone|iPad|iPod/i.test(navigator.userAgent),Opera:/Opera Mini/i.test(navigator.userAgent)},e.any=e.Android||e.BlackBerry||e.iOS||e.Opera,e),generateUtmForUrlParams:function(e){return"utm_source="+encodeURI(window.location.hostname)+"&utm_medium="+(d.hasCopyright(e.container)?"widget_new":"widget")+(e.type?"&utm_campaign="+e.type:"")+(e.type&&"chart"===e.type?"&utm_term="+encodeURIComponent(e.symbol):"")},WidgetAbstract:function(){},MiniWidget:function(e){this.id=d.gId(),this.options={whitelabel:e.whitelabel||"",width:d.WidgetAbstract.prototype.fixSize(e.width)||300,height:d.WidgetAbstract.prototype.fixSize(e.height)||400,symbols:e.symbols,tabs:e.tabs||"",symbols_description:e.symbols_description||"",customer:e.customer||"",container:e.container_id||"",greyText:e.greyText||"",large_chart_url:e.large_chart_url||"",large_chart_target:e.large_chart_target||"",gridLineColor:e.gridLineColor||"",fontColor:e.fontColor||"",underLineColor:e.underLineColor||"",trendLineColor:e.trendLineColor||"",timeAxisBackgroundColor:e.timeAxisBackgroundColor||"",activeTickerBackgroundColor:e.activeTickerBackgroundColor||"",noGraph:e.noGraph||!1,locale:e.locale,styleTickerActiveBg:e.styleTickerActiveBg||"",styleTabActiveBorderColor:e.styleTabActiveBorderColor||"",styleTickerBodyFontSize:e.styleTickerBodyFontSize||"",styleTickerBodyFontWeight:e.styleTickerBodyFontWeight||"",styleTickerHeadFontSize:e.styleTickerHeadFontSize||"",styleTickerHeadFontWeight:e.styleTickerHeadFontWeight||"",styleTickerChangeDownColor:e.styleTickerChangeDownColor||"",styleTickerChangeUpColor:e.styleTickerChangeUpColor||"",styleTickerLastDownBg:e.styleTickerLastDownBg||"",styleTickerLastUpBg:e.styleTickerLastUpBg||"",styleTickerSymbolColor:e.styleTickerSymbolColor||"",styleTickerSymbolHoverTextDecoration:e.styleTickerSymbolHoverTextDecoration||"",styleTickerActiveSymbolTextDecoration:e.styleTickerActiveSymbolTextDecoration||"",styleTabsActiveBorderColor:e.styleTabsActiveBorderColor||"",styleTabsNoBorder:e.styleTabsNoBorder||"",styleWidgetNoBorder:e.styleWidgetNoBorder||""},this.createWidget()},MediumWidget:function(e){this.id=d.gId();var t=d.calculateWidgetHeight(e.height||400,e.container_id);this.options={container:e.container_id||"",width:d.WidgetAbstract.prototype.fixSize(e.width)||"",height:d.WidgetAbstract.prototype.fixSize(t)||"",symbols:e.symbols,greyText:e.greyText||"",symbols_description:e.symbols_description||"",large_chart_url:e.large_chart_url||"",customer:e.customer||"",gridLineColor:e.gridLineColor||"",fontColor:e.fontColor||"",underLineColor:e.underLineColor||"",trendLineColor:e.trendLineColor||"",timeAxisBackgroundColor:e.timeAxisBackgroundColor||"",chartOnly:!!e.chartOnly,locale:e.locale,whitelabel:!!e.whitelabel||"",colorTheme:e.colorTheme,isTransparent:e.isTransparent},this.createWidget()},widget:function(e){this.id=e.id||d.gId();var t=d.getUrlParams(),i=e.tvwidgetsymbol||t.tvwidgetsymbol||t.symbol||e.symbol||"NASDAQ:AAPL",o=e.logo||"";o.src&&(o=o.src),o&&o.replace(".png","");var n=d.calculateWidgetHeight(e.height||500,e.container_id);this.options={whitelabel:e.whitelabel||"",width:e.width||800,height:n,symbol:i,interval:e.interval||"1",range:e.range||"",timezone:e.timezone||"",autosize:e.autosize,hide_top_toolbar:e.hide_top_toolbar,hide_side_toolbar:e.hide_side_toolbar,hide_legend:e.hide_legend,allow_symbol_change:e.allow_symbol_change,save_image:void 0===e.save_image||e.save_image,container:e.container_id||"",toolbar_bg:e.toolbar_bg||"f4f7f9",watchlist:e.watchlist||[],editablewatchlist:!!e.editablewatchlist,studies:e.studies||[],theme:e.theme||"",style:e.style||"",extended_hours:void 0===e.extended_hours?void 0:+e.extended_hours,details:!!e.details,calendar:!!e.calendar,hotlist:!!e.hotlist,hideideas:!!e.hideideas,hideideasbutton:!!e.hideideasbutton,widgetbar_width:+e.widgetbar_width||void 0,withdateranges:e.withdateranges||"",customer:e.customer||o||"",venue:e.venue,symbology:e.symbology,logo:o,show_popup_button:!!e.show_popup_button,popup_height:e.popup_height||"",popup_width:e.popup_width||"",studies_overrides:e.studies_overrides,overrides:e.overrides,enabled_features:e.enabled_features,disabled_features:e.disabled_features,publish_source:e.publish_source||"",enable_publishing:e.enable_publishing,whotrades:e.whotrades||void 0,locale:e.locale,referral_id:e.referral_id,no_referral_id:e.no_referral_id,ref_landing_page:e.ref_landing_page,fundamental:e.fundamental,percentage:e.percentage,hidevolume:e.hidevolume,padding:e.padding,greyText:e.greyText||"",horztouchdrag:e.horztouchdrag,verttouchdrag:e.verttouchdrag},e.cme&&(this.options.customer="cme"),isFinite(e.widgetbar_width)&&e.widgetbar_width>0&&(this.options.widgetbar_width=e.widgetbar_width),this._ready_handlers=[],this.create()},chart:function(e){this.id=d.gId(),this.options={width:e.width||640,height:e.height||500,container:e.container_id||"",realtime:e.realtime,chart:e.chart,locale:e.locale,type:"chart",autosize:e.autosize,mobileStatic:e.mobileStatic},this._ready_handlers=[],this.create()},stream:function(e){this.id=d.gId(),this.options={width:e.width||640,height:e.height||500,container:e.container_id||"",stream:e.stream,locale:e.locale,autosize:e.autosize},this.create()},EventsWidget:function(e){this.id=d.gId(),this.options={container:e.container_id||"",width:e.width||486,height:e.height||670,currency:e.currencyFilter||"",importance:e.importanceFilter||"",type:"economic-calendar"},this.createWidget(e)},IdeasStreamWidget:function(e){this.id=d.gId(),this.options={container:e.container_id||"",width:e.width||486,height:e.height||670,symbol:e.symbol||"",username:e.username||"",mode:e.mode||"",publishSource:e.publishSource||"",sort:e.sort||"trending",stream:e.stream,interval:e.interval,time:e.time,waitSymbol:e.waitSymbol,hideDescription:e.hideDescription,startingCount:e.startingCount,bgColor:e.bgColor||"",headerColor:e.headerColor||"",borderColor:e.borderColor||"",locale:e.locale,type:"ideas-stream"},this._ready_handlers=[],this.createWidget(e)},IdeaWidget:function(e){this.id=d.gId(),this.options={container:e.container_id||"",width:e.width||486,height:e.height||670,idea:e.idea||"",chartUrl:e.chartUrl||"",whotrades:e.whotrades||void 0,locale:e.locale,type:"idea"},this.createWidget(e)},ChatWidgetEmbed:function(e){this.id=d.gId(),this.options={container:e.container_id||"",width:e.width||400,height:e.height||500,room:e.room||"",whotrades:e.whotrades||void 0,locale:e.locale,type:"chat-embed"},this.createWidget(e)},UserInfoWidget:function(e){this.options={container:e.container_id||"",width:e.width||1040,height:e.height||340,username:e.username||"",locale:e.locale,type:"user-info"},this.createWidget(e)},QuotesProvider:function(e){var t,i,o=d.gId(),n=(e={container:e.container_id,symbols:e.symbols||[],type:"quotes-provider"},d.host+"/embed-quotes-provider/?"+d.generateUtmForUrlParams(e));function r(e){var o=e.symbol,n=e.success,r=e.error;o&&n&&r&&(i.post(t.contentWindow,"resolveSymbol",{symbol:o}),n&&i.on("success"+o,(function(e){n(e)})),r&&i.on("error"+o,(function(e){r(e)})))}l('',e.container),t=document.getElementById(o),i=d.postMessageWrapper(t.contentWindow,o),d.bindEvent(t,"load",(function(){e.symbols.forEach(r)}))}};d.DependenciesManager=function(){},d.DependenciesManager.prototype.scripts={},d.DependenciesManager.prototype._loaded=function(e){for(var t in this.scripts[e].callbacks)this.scripts[e].callbacks[t]();this.scripts[e].status=!0,this.scripts[e].callbacks={}},d.DependenciesManager.prototype.depends=function(e,t,i){for(var o=0;o
      '+e+"
      "+(t||"")+""},addFooterLogo:function(e,t){var i=(t||{}).greyText||"powered by",o=(t||{}).linkText||"tradingview.com",n=(t||{}).href||"https://www.tradingview.com/";return d.WidgetAbstract.prototype.addWrapperFrame.call(this,e,'","#fff")}},d.UserInfoWidget.prototype={createWidget:function(){var e=this.widgetCode();l(e,this.options.container)},widgetCode:function(){var e=d.createUrlParams({username:this.options.username,locale:this.options.locale});this.options.type="user-info";var t="&"+d.generateUtmForUrlParams(this.options,{type:"UserInfoWidget"});return''}},d.ChatWidgetEmbed.prototype={createWidget:function(){var e=this.widgetCode();e=d.WidgetAbstract.prototype.addFooterLogo.call(this,e),l(e,this.options.container)},widgetCode:function(){var e=this.options.room?"#"+encodeURIComponent(this.options.room):"",t="&"+d.createUrlParams({whotrades:this.options.whotrades,locale:this.options.locale}),i=d.generateUtmForUrlParams(this.options,{type:"UserInfoWidget"});return''}},d.IdeaWidget.prototype={createWidget:function(){var e=this.widgetCode();l(e,this.options.container);var t=this,i=document.getElementById(this.id);this.postMessage=d.postMessageWrapper(i.contentWindow,this.id),this.postMessage.on("resize",(function(e){e.id===t.id&&(i.style.height=e.height+"px")}),!0)},widgetCode:function(){var e=d.createUrlParams({id:this.id,width:this.options.width,height:this.options.height,idea:this.options.idea,chart_url:this.options.chartUrl,whotrades:this.options.whotrades,locale:this.options.locale});this.options.type="idea";var t="&"+d.generateUtmForUrlParams(this.options),i=d.ideasHost+"/idea-popup/?"+e+t;return''},getSymbol:function(e){this.postMessage.on("symbolInfo",e)}},d.EventsWidget.prototype={createWidget:function(){var e=this.widgetCode();l(e,this.options.container)},widgetCode:function(){var e=d.createUrlParams({currency:this.options.currency,importance:this.options.importance});this.options.type="events";var t="&"+d.generateUtmForUrlParams(this.options);return''}},d.IdeasStreamWidget.prototype={createWidget:function(){var e=this.widgetCode();l(e,this.options.container);var t=this,i=document.getElementById(this.id);this.postMessage=d.postMessageWrapper(i.contentWindow,this.id),d.bindEvent(i,"load",(function(){t._ready=!0;for(var e=t._ready_handlers.length;e--;)t._ready_handlers[e].call(t)})),t.postMessage.on("resize",(function(e){if(e.id===t.id){var o=Math.max(e.height,450);i.style.height=o+"px"}}),!0)},widgetCode:function(){var e=this.options,t=d.createUrlParams({id:this.id,width:e.width,height:e.height,symbol:e.symbol,username:e.username,mode:e.mode,publish_source:e.publishSource,sort:e.sort,stream:e.stream,interval:e.interval,time:e.time,wait_symbol:e.waitSymbol,hide_desc:e.hideDescription,s_count:e.startingCount,bg_color:e.bgColor,h_color:e.headerColor,borderColor:e.borderColor,locale:e.locale}),i=d.generateUtmForUrlParams(this.options)+"&",o=d.host+"/ideaswidgetembed/?"+i+t;return''},setSymbol:function(e){var t=document.getElementById(this.id);this.postMessage.post(t.contentWindow,"setSymbol",e)},ready:function(e){this._ready?e.call(this):this._ready_handlers.push(e)}},d.MiniWidget.prototype={createWidget:function(){var e=this.widgetCode(),t=this.options;if(!t.noLogoOverlay&&!t.whitelabel){var i=this.options.greyText||"Quotes by";e=d.WidgetAbstract.prototype.addFooterLogo.call(this,e,{greyText:i,linkText:"TradingView"})}l(e,t.container)},widgetCode:function(){var e="",t="",i="",o="/miniwidgetembed/",n=this.options.width?"&width="+encodeURIComponent(this.options.width):"",r=this.options.height?"&height="+encodeURIComponent(this.options.height):"",s=this.options.noGraph?"&noGraph="+encodeURIComponent(this.options.noGraph):"",a=this.options.locale?"&locale="+encodeURIComponent(this.options.locale):"",l=this.options.whitelabel?"&whitelabel=1":"";this.options.type="market-overview";for(var h="&"+d.generateUtmForUrlParams(this.options),c=["large_chart_url","large_chart_target","gridLineColor","fontColor","underLineColor","trendLineColor","activeTickerBackgroundColor","timeAxisBackgroundColor","locale","styleTickerActiveBg","styleTabActiveBorderColor","styleTickerBodyFontSize","styleTickerBodyFontWeight","styleTickerHeadFontSize","styleTickerHeadFontWeight","styleTickerChangeDownColor","styleTickerChangeUpColor","styleTickerLastDownBg","styleTickerLastUpBg","styleTickerSymbolColor","styleTickerSymbolHoverTextDecoration","styleTickerActiveSymbolTextDecoration","styleTabsActiveBorderColor","styleTabsNoBorder","styleWidgetNoBorder"],p="",g=c.length-1;g>=0;g--){var m=c[g],u=this.options[m];p+=u?"&"+m+"="+encodeURIComponent(u):""}var y=function(e){for(var t=[],o=0;o'},remove:function(){var e=document.getElementById("tradingview_widget");e.parentNode.removeChild(e)}},d.MediumWidget.prototype={createWidget:function(){var e=this.widgetCode();l(e,this.options.container)},widgetCode:function(){var e="",t="symbols="+function(t){for(var i=[],o=0;o=0;l--){var h=s[l],c=this.options[h];a+=c?"&"+h+"="+encodeURIComponent(c):""}var p=this.options.chartOnly?"&chartOnly=1":"",g=this.options.whitelabel?"&whitelabel=1":"",m=this.options.isTransparent?"&isTransparent=1":"",u="/mediumwidgetembed/";this.options.customer&&(u="/"+this.options.customer+u);var y=d.host+u+"?"+t+e+a+p+g+i+o+n+m+r;return''},remove:function(){var e=document.getElementById("tradingview_widget");e.parentNode.removeChild(e)}},d.widget.prototype={create:function(){this.options.type=this.options.fundamental?"fundamental":"chart";var e=this.render(),t=this;this.options.noLogoOverlay||(e=d.WidgetAbstract.prototype.addWrapperFrame.call(this,e)),l(e,this.options.container);var i=document.getElementById("tradingview-copyright");i&&i.parentElement&&i.parentElement.removeChild(i),this.iframe=document.getElementById(this.id),this.postMessage=d.postMessageWrapper(this.iframe.contentWindow,this.id),d.bindEvent(this.iframe,"load",(function(){t.postMessage.get("widgetReady",{},(function(){var e;for(t._ready=!0,e=t._ready_handlers.length;e--;)t._ready_handlers[e].call(t)}))})),t.postMessage.on("logoCreated",(function(e){if(e.left&&e.bottom&&e.width&&e.height&&e.href){t._logoOverlay&&(t._logoOverlay.parentNode.removeChild(t._logoOverlay),delete t._logoOverlay);var i=document.createElement("a");e.text&&(i.textContent=e.text,i.style.color="transparent"),i.style.position="absolute",i.style.display="inline-block",i.style.left=e.left,i.style.bottom=e.bottom,i.style.width=e.width,i.style.height=e.height,i.style.backgroundColor="transparent",i.style.pointerEvents="none",i.href=e.href,i.setAttribute("target","_blank"),t._logoOverlay=i,document.getElementById(t.id+"-wrapper").appendChild(i)}})),t.postMessage.on("setLogoOverlayVisibility",(function(e){t._logoOverlay&&e&&"boolean"==typeof e.visible&&(t._logoOverlay.style.display=e.visible?"inline-block":"none")})),t.postMessage.on("openChartInPopup",(function(e){for(var i=d.cloneSimpleObject(t.options),o=["symbol","interval"],n=o.length-1;n>=0;n--){var r=o[n],s=e[r];s&&(i[r]=s)}i.show_popup_button=!1;var a=t.options.popup_width||900,l=t.options.popup_height||600,h=(screen.width-a)/2,c=(screen.height-l)/2,p=window.open(t.generateUrl(i),"_blank","resizable=yes, top="+c+", left="+h+", width="+a+", height="+l);p&&(p.opener=null)}))},ready:function(e){this._ready?e.call(this):this._ready_handlers.push(e)},render:function(){var e=this.generateUrl();return''},generateUrl:function(e){var t;function i(t,i){return i=i||t,void 0===e[t]?"":"&"+encodeURIComponent(i)+"="+(e[t]?"1":"0")}function o(t,i,o){return o=o||t,e[t]?"&"+o+"="+i:""}function n(t,i,o){return o=o||{},"&"+t+"="+(e[t]?encodeURIComponent(JSON.stringify(i)):encodeURIComponent(JSON.stringify(o)))}return t="cme"===(e=e||this.options).customer?"/cmewidgetembed/":e.customer?"/"+e.customer+"/widgetembed/":"/widgetembed/",(e.enable_publishing?d.ideasHost:d.host)+t+"?frameElementId="+this.id+"&symbol="+encodeURIComponent(e.symbol)+"&interval="+encodeURIComponent(e.interval)+(e.range?"&range="+encodeURIComponent(e.range):"")+(e.whitelabel?"&whitelabel=1":"")+(e.hide_top_toolbar?"&hidetoptoolbar=1":"")+(e.hide_legend?"&hidelegend=1":"")+i("hide_side_toolbar","hidesidetoolbar")+i("allow_symbol_change","symboledit")+i("save_image","saveimage")+"&toolbarbg="+e.toolbar_bg.replace("#","")+(e.watchlist&&e.watchlist.length&&e.watchlist.join?"&watchlist="+encodeURIComponent(e.watchlist.join("")):"")+o("editablewatchlist","1")+o("details","1")+o("calendar","1")+o("hotlist","1")+(e.studies&&d.isArray(e.studies)?"string"==typeof e.studies[0]?o("studies",encodeURIComponent(e.studies.join(""))):n("studies",e.studies):"")+i("horztouchdrag")+i("verttouchdrag")+o("widgetbar_width",e.widgetbar_width,"widgetbarwidth")+o("hideideas","1")+o("theme",encodeURIComponent(e.theme))+o("style",encodeURIComponent(e.style))+(void 0===e.extended_hours?"":"&extended_hours="+e.extended_hours)+o("timezone",encodeURIComponent(e.timezone))+o("hideideasbutton","1")+o("withdateranges","1")+o("hidevolume","1")+(void 0===e.padding?"":"&padding="+e.padding)+o("show_popup_button","1","showpopupbutton")+n("studies_overrides",e.studies_overrides,{})+n("overrides",e.overrides,{})+n("enabled_features",e.enabled_features,[])+n("disabled_features",e.disabled_features,[])+(e.show_popup_button?"&showpopupbutton=1":"")+(e.publish_source?"&publishsource="+encodeURIComponent(e.publish_source):"")+(e.enable_publishing?"&enablepublishing="+encodeURIComponent(e.enable_publishing):"")+(e.venue?"&venue="+encodeURIComponent(e.venue):"")+(e.symbology?"&symbology="+encodeURIComponent(e.symbology):"")+(e.whotrades?"&whotrades="+encodeURIComponent(e.whotrades):"")+(e.locale?"&locale="+e.locale:"")+(e.referral_id?"&referral_id="+e.referral_id:"")+(e.no_referral_id?"&no_referral_id=1":"")+(e.ref_landing_page?"&ref_landing_page="+e.ref_landing_page:"")+(e.fundamental?"&fundamental="+encodeURIComponent(e.fundamental):"")+(e.percentage?"&percentage="+encodeURIComponent(e.percentage):"")+"&utm_source="+encodeURI(window.location.hostname)+"&utm_medium="+(d.hasCopyright(e.container)?"widget_new":"widget")+(e.type?"&utm_campaign="+e.type:"")+(e.type&&"chart"===e.type?"&utm_term="+encodeURIComponent(e.symbol):"")},image:function(e){this.postMessage.get("imageURL",{},(function(t){var i=d.host+"/x/"+t+"/";e(i)}))},subscribeToQuote:function(e){var t=document.getElementById(this.id);this.postMessage.post(t.contentWindow,"quoteSubscribe"),this.postMessage.on("quoteUpdate",e)},getSymbolInfo:function(e){this.postMessage.get("symbolInfo",{},e)},remove:function(){var e=document.getElementById(this.id);e.parentNode.removeChild(e)},reload:function(){var e=document.getElementById(this.id),t=e.parentNode;t.removeChild(e),t.innerHTML=this.render()}},d.chart.prototype={create:function(){this.isMobile=d.isMobileDevice.any;var e,t=this.render(),i=this;d.chartCssAttached||(d.css(this.renderCss()),d.chartCssAttached=!0),l(t,this.options.container),e=document.getElementById(this.id),d.bindEvent(e,"load",(function(){var e;for(i._ready=!0,e=i._ready_handlers.length;e--;)i._ready_handlers[e].call(i)})),d.onready((function(){var t=!1;if(document.querySelector&&document.querySelector('a[href$="/v/'+i.options.chart+'/"]')&&(t=!0),!t)for(var o=document.getElementsByTagName("a"),n=new RegExp("/v/"+i.options.chart+"/$"),r=new RegExp("/chart/([0-9a-zA-Z:+*-/()]+)/"+i.options.chart),s=0;s'},toggleFullscreen:function(e){var t=document.getElementById(this.id);e?(t.style.position="fixed",t.style.width="100vw",t.style.maxWidth="100%",t.style.height="100vh",t.style.maxHeight="100%",t.style.left="0px",t.style.top="0px",t.style.zIndex="1000000",t.style.backgroundColor="#fff"):(t.style.position="static",this.options.autosize?(t.style.width="100%",t.style.height="100%"):(t.style.width=this.options.width+"px",t.style.height=this.options.height+"px"),t.style.maxWidth="none",t.style.maxHeight="none",t.style.zIndex="auto",t.style.backgroundColor="transparent")},getSymbolInfo:function(e){this.postMessage.get("symbolInfo",{},e)}},d.stream.prototype={create:function(){this.isMobile=d.isMobileDevice.any;var e=this.render();l(e,this.options.container)},render:function(){var e="?"+(this.options.locale?"&locale="+encodeURIComponent(this.options.locale):"");return this.options.type="chart",'
      '}},d.showSignIn=function(e,t){d.dependenciesManager.depends(["/static/bundles/spinner.js"],"authWidget",(function(){var i=document.createElement("div"),o=document.createElement("div");i.appendChild(o),(new window.Spinner).setStyle({color:"#00A2E2",opacity:"0"}).spin(o),i.style.cssText="position: fixed;left: 0;top: 0;width: 100%;height: 100%;background: rgba(0, 0, 0, 0.5);z-index: 120;-webkit-transform: translate3d(0, 0, 0);",i.addEventListener("click",(function(){document.body.removeChild(i)})),document.body.appendChild(i);var n=d.gId(),r=d.createUrlParams({id:n,utmSourceOverride:e.utmSourceOverride}),s=d.ideasHost+"/authwidget/?"+r,a="650px",l='',h=document.createElement("div");h.innerHTML=l,h.style.cssText="position: absolute;left: 50%;top: 50%;margin-top: -325px;margin-left: -235px;",i.appendChild(h);var c=document.getElementById(n),p=d.postMessageWrapper(c.contentWindow,n),g=function(e){e.id===n&&(document.body.removeChild(i),e.user&&t(e.user),p.off("close",g))};p.on("close",g,!0),p.on("widgetLoad",(function(){o.style.display="none"}))}))},d.isSignedIn=function(e,t){var i=d.gId(),o=d.createUrlParams({id:i}),n=d.ideasHost+"/isauthwidget/?"+o,r='',s=document.createElement("div");s.innerHTML=r,document.body.appendChild(s);var a=document.getElementById(i),l=d.postMessageWrapper(a.contentWindow,i),h=function(e){e.id===i&&(document.body.removeChild(s),t(e.user),l.off("close",h))};l.on("close",h,!0)},d.onLoginStateChange=function(e,t){var i=d.gId(),o=d.createUrlParams({id:i}),n=d.ideasHost+"/loginstatewidget/?"+o,r='',s=document.createElement("div");s.innerHTML=r,document.body.appendChild(s);var a=document.getElementById(i);d.postMessageWrapper(a.contentWindow,i).on("loginStateChange",(function(e){e.id===i&&t(e.user)}),!0)},d.postMessageWrapper=(i={},o={},n={},r=0,s=0,window.addEventListener&&window.addEventListener("message",(function(e){var n;try{n=JSON.parse(e.data)}catch(r){return}if(n&&n.provider&&"TradingView"===n.provider)if(n.source=e.source,"get"===n.type){if(!o[n.name])return;o[n.name].forEach((function(e){"function"==typeof e&&e.call(n,n.data,(function(e){var i={id:n.id,type:"on",name:n.name,client_id:n.client_id,data:e,provider:"TradingView"};t.postMessage(JSON.stringify(i),"*")}))}))}else if("on"===n.type)i[n.client_id]&&i[n.client_id][n.id]&&(i[n.client_id][n.id].call(n,n.data),delete i[n.client_id][n.id]);else if("post"===n.type){if(!o[n.name])return;o[n.name].forEach((function(e){"function"==typeof e&&e.call(n,n.data,(function(){}))}))}})),function(e,a){return i[a]={},n[a]=e,t=e,{on:function(e,t,i){o[e]&&i||(o[e]=[]),o[e].push(t)},off:function(e,t){if(!o[e])return!1;var i=o[e].indexOf(t);i>-1&&o[e].splice(i,1)},get:function(e,t,o){var s={id:r++,type:"get",name:e,client_id:a,data:t,provider:"TradingView"};i[a][s.id]=o,n[a].postMessage(JSON.stringify(s),"*")},post:function(e,t,i){var o={id:s++,type:"post",name:t,data:i,provider:"TradingView"};e&&"function"==typeof e.postMessage&&e.postMessage(JSON.stringify(o),"*")}}}),d.getUrlParams=function(){for(var e=/\+/g,t=/([^&=]+)=?([^&]*)/g,i=window.location.search.substring(1),o=t.exec(i),n=function(t){return decodeURIComponent(t.replace(e," "))},r={};o;)r[n(o[1])]=n(o[2]),o=t.exec(i);return r},d.createUrlParams=function(e){var t=[];for(var i in e)e.hasOwnProperty(i)&&null!=e[i]&&t.push(encodeURIComponent(i)+"="+encodeURIComponent(e[i]));return t.join("&")};var l=function(e,t){var i=document.getElementById(t);if(i){i.innerHTML=e;var o=i.parentElement&&i.parentElement.querySelector(".tradingview-widget-copyright");o&&(o.style.width=i.querySelector("iframe").style.width)}else document.write(e);document.body.appendChild(d.embedStylesForCopyright())},h=function(e,t){for(var i in t)"object"==typeof t[i]&&e.hasOwnProperty(i)?h(e[i],t[i]):e[i]=t[i];return e};window.TradingView?h(window.TradingView,d):window.TradingView=d}}(); diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..16b4247 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,10373 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/cli@^7.4.4": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/cli/-/cli-7.10.3.tgz" + integrity sha512-lWB3yH5/fWY8pi2Kj5/fA+17guJ9feSBw5DNjTju3/nRi9sXnl1JPh7aKQOSvdNbiDbkzzoGYtsr46M8dGmXDQ== + dependencies: + commander "^4.0.1" + convert-source-map "^1.1.0" + fs-readdir-recursive "^1.1.0" + glob "^7.0.0" + lodash "^4.17.13" + make-dir "^2.1.0" + slash "^2.0.0" + source-map "^0.5.0" + optionalDependencies: + chokidar "^2.1.8" + +"@babel/code-frame@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz" + integrity sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g== + dependencies: + "@babel/highlight" "7.0.0-beta.44" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.3.tgz" + integrity sha512-fDx9eNW0qz0WkUeqL6tXEXzVlPh6Y5aCDEZesl0xBGA8ndRukX91Uk44ZqnkECp01NAZUdCAl+aiQNGi0k88Eg== + dependencies: + "@babel/highlight" "^7.10.3" + +"@babel/compat-data@^7.10.1", "@babel/compat-data@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.3.tgz" + integrity sha512-BDIfJ9uNZuI0LajPfoYV28lX8kyCPMHY6uY4WH1lJdcicmAfxCK5ASzaeV0D/wsUaRH/cLk+amuxtC37sZ8TUg== + dependencies: + browserslist "^4.12.0" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/generator@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz" + integrity sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ== + dependencies: + "@babel/types" "7.0.0-beta.44" + jsesc "^2.5.1" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/generator@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.10.3.tgz" + integrity sha512-drt8MUHbEqRzNR0xnF8nMehbY11b1SDkRw03PSNH/3Rb2Z35oxkddVSi3rcaak0YJQ86PCuE7Qx1jSFhbLNBMA== + dependencies: + "@babel/types" "^7.10.3" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz" + integrity sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw== + dependencies: + "@babel/types" "^7.10.1" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.1": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.3.tgz" + integrity sha512-lo4XXRnBlU6eRM92FkiZxpo1xFLmv3VsPFk61zJKMm7XYJfwqXHsYJTY6agoc4a3L8QPw1HqWehO18coZgbT6A== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.10.3" + "@babel/types" "^7.10.3" + +"@babel/helper-compilation-targets@^7.10.2": + version "7.10.2" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz" + integrity sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA== + dependencies: + "@babel/compat-data" "^7.10.1" + browserslist "^4.12.0" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.10.1": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.3.tgz" + integrity sha512-iRT9VwqtdFmv7UheJWthGc/h2s7MqoweBF9RUj77NFZsg9VfISvBTum3k6coAhJ8RWv2tj3yUjA03HxPd0vfpQ== + dependencies: + "@babel/helper-function-name" "^7.10.3" + "@babel/helper-member-expression-to-functions" "^7.10.3" + "@babel/helper-optimise-call-expression" "^7.10.3" + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/helper-replace-supers" "^7.10.1" + "@babel/helper-split-export-declaration" "^7.10.1" + +"@babel/helper-create-regexp-features-plugin@^7.10.1", "@babel/helper-create-regexp-features-plugin@^7.8.3": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz" + integrity sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/helper-regex" "^7.10.1" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.3.tgz" + integrity sha512-bxRzDi4Sin/k0drWCczppOhov1sBSdBvXJObM1NLHQzjhXhwRtn7aRWGvLJWCYbuu2qUk3EKs6Ci9C9ps8XokQ== + dependencies: + "@babel/helper-function-name" "^7.10.3" + "@babel/types" "^7.10.3" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.3.tgz" + integrity sha512-0nKcR64XrOC3lsl+uhD15cwxPvaB6QKUDlD84OT9C3myRbhJqTMYir69/RWItUvHpharv0eJ/wk7fl34ONSwZw== + dependencies: + "@babel/traverse" "^7.10.3" + "@babel/types" "^7.10.3" + +"@babel/helper-function-name@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz" + integrity sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg== + dependencies: + "@babel/helper-get-function-arity" "7.0.0-beta.44" + "@babel/template" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + +"@babel/helper-function-name@^7.10.1", "@babel/helper-function-name@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.3.tgz" + integrity sha512-FvSj2aiOd8zbeqijjgqdMDSyxsGHaMt5Tr0XjQsGKHD3/1FP3wksjnLAWzxw7lvXiej8W1Jt47SKTZ6upQNiRw== + dependencies: + "@babel/helper-get-function-arity" "^7.10.3" + "@babel/template" "^7.10.3" + "@babel/types" "^7.10.3" + +"@babel/helper-get-function-arity@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz" + integrity sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw== + dependencies: + "@babel/types" "7.0.0-beta.44" + +"@babel/helper-get-function-arity@^7.10.1", "@babel/helper-get-function-arity@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.3.tgz" + integrity sha512-iUD/gFsR+M6uiy69JA6fzM5seno8oE85IYZdbVVEuQaZlEzMO2MXblh+KSPJgsZAUx0EEbWXU0yJaW7C9CdAVg== + dependencies: + "@babel/types" "^7.10.3" + +"@babel/helper-hoist-variables@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.3.tgz" + integrity sha512-9JyafKoBt5h20Yv1+BXQMdcXXavozI1vt401KBiRc2qzUepbVnd7ogVNymY1xkQN9fekGwfxtotH2Yf5xsGzgg== + dependencies: + "@babel/types" "^7.10.3" + +"@babel/helper-member-expression-to-functions@^7.10.1", "@babel/helper-member-expression-to-functions@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.3.tgz" + integrity sha512-q7+37c4EPLSjNb2NmWOjNwj0+BOyYlssuQ58kHEWk1Z78K5i8vTUsteq78HMieRPQSl/NtpQyJfdjt3qZ5V2vw== + dependencies: + "@babel/types" "^7.10.3" + +"@babel/helper-module-imports@7.0.0-beta.35": + version "7.0.0-beta.35" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.35.tgz" + integrity sha512-vaC1KyIZSuyWb3Lj277fX0pxivyHwuDU4xZsofqgYAbkDxNieMg2vuhzP5AgMweMY7fCQUMTi+BgPqTLjkxXFg== + dependencies: + "@babel/types" "7.0.0-beta.35" + lodash "^4.2.0" + +"@babel/helper-module-imports@^7.10.1", "@babel/helper-module-imports@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.3.tgz" + integrity sha512-Jtqw5M9pahLSUWA+76nhK9OG8nwYXzhQzVIGFoNaHnXF/r4l7kz4Fl0UAW7B6mqC5myoJiBP5/YQlXQTMfHI9w== + dependencies: + "@babel/types" "^7.10.3" + +"@babel/helper-module-transforms@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz" + integrity sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg== + dependencies: + "@babel/helper-module-imports" "^7.10.1" + "@babel/helper-replace-supers" "^7.10.1" + "@babel/helper-simple-access" "^7.10.1" + "@babel/helper-split-export-declaration" "^7.10.1" + "@babel/template" "^7.10.1" + "@babel/types" "^7.10.1" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.10.1", "@babel/helper-optimise-call-expression@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.3.tgz" + integrity sha512-kT2R3VBH/cnSz+yChKpaKRJQJWxdGoc6SjioRId2wkeV3bK0wLLioFpJROrX0U4xr/NmxSSAWT/9Ih5snwIIzg== + dependencies: + "@babel/types" "^7.10.3" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.1", "@babel/helper-plugin-utils@^7.10.3", "@babel/helper-plugin-utils@^7.8.0": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.3.tgz" + integrity sha512-j/+j8NAWUTxOtx4LKHybpSClxHoq6I91DQ/mKgAXn5oNUPIUiGppjPIX3TDtJWPrdfP9Kfl7e4fgVMiQR9VE/g== + +"@babel/helper-regex@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.1.tgz" + integrity sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g== + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.10.1", "@babel/helper-remap-async-to-generator@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.3.tgz" + integrity sha512-sLB7666ARbJUGDO60ZormmhQOyqMX/shKBXZ7fy937s+3ID8gSrneMvKSSb+8xIM5V7Vn6uNVtOY1vIm26XLtA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/helper-wrap-function" "^7.10.1" + "@babel/template" "^7.10.3" + "@babel/traverse" "^7.10.3" + "@babel/types" "^7.10.3" + +"@babel/helper-replace-supers@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz" + integrity sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.10.1" + "@babel/helper-optimise-call-expression" "^7.10.1" + "@babel/traverse" "^7.10.1" + "@babel/types" "^7.10.1" + +"@babel/helper-simple-access@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz" + integrity sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw== + dependencies: + "@babel/template" "^7.10.1" + "@babel/types" "^7.10.1" + +"@babel/helper-split-export-declaration@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz" + integrity sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA== + dependencies: + "@babel/types" "7.0.0-beta.44" + +"@babel/helper-split-export-declaration@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz" + integrity sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g== + dependencies: + "@babel/types" "^7.10.1" + +"@babel/helper-validator-identifier@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.3.tgz" + integrity sha512-bU8JvtlYpJSBPuj1VUmKpFGaDZuLxASky3LhaKj3bmpSTY6VWooSM8msk+Z0CZoErFye2tlABF6yDkT3FOPAXw== + +"@babel/helper-wrap-function@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz" + integrity sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ== + dependencies: + "@babel/helper-function-name" "^7.10.1" + "@babel/template" "^7.10.1" + "@babel/traverse" "^7.10.1" + "@babel/types" "^7.10.1" + +"@babel/highlight@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz" + integrity sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + +"@babel/highlight@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.3.tgz" + integrity sha512-Ih9B/u7AtgEnySE2L2F0Xm0GaM729XqqLfHkalTsbjXGyqmf/6M0Cu0WpvqueUlW+xk88BHw9Nkpj49naU+vWw== + dependencies: + "@babel/helper-validator-identifier" "^7.10.3" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.10.3", "@babel/parser@^7.7.0": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.10.3.tgz" + integrity sha512-oJtNJCMFdIMwXGmx+KxuaD7i3b8uS7TTFYW/FNG2BT8m+fmGHoiPYoH0Pe3gya07WuFmM5FCDIr1x0irkD/hyA== + +"@babel/plugin-proposal-async-generator-functions@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.3.tgz" + integrity sha512-WUUWM7YTOudF4jZBAJIW9D7aViYC/Fn0Pln4RIHlQALyno3sXSjqmTA4Zy1TKC2D49RCR8Y/Pn4OIUtEypK3CA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/helper-remap-async-to-generator" "^7.10.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-class-properties@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz" + integrity sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-proposal-dynamic-import@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz" + integrity sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-json-strings@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz" + integrity sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz" + integrity sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz" + integrity sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-numeric-separator" "^7.10.1" + +"@babel/plugin-proposal-object-rest-spread@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.3.tgz" + integrity sha512-ZZh5leCIlH9lni5bU/wB/UcjtcVLgR8gc+FAgW2OOY+m9h1II3ItTO1/cewNUcsIDZSYcSaz/rYVls+Fb0ExVQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.10.1" + +"@babel/plugin-proposal-optional-catch-binding@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz" + integrity sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.3.tgz" + integrity sha512-yyG3n9dJ1vZ6v5sfmIlMMZ8azQoqx/5/nZTSWX1td6L1H1bsjzA8TInDChpafCZiJkeOFzp/PtrfigAQXxI1Ng== + dependencies: + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-private-methods@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz" + integrity sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-proposal-unicode-property-regex@^7.10.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz" + integrity sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz" + integrity sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz" + integrity sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz" + integrity sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-arrow-functions@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz" + integrity sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-async-to-generator@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz" + integrity sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg== + dependencies: + "@babel/helper-module-imports" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-remap-async-to-generator" "^7.10.1" + +"@babel/plugin-transform-block-scoped-functions@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz" + integrity sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-block-scoping@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz" + integrity sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.3.tgz" + integrity sha512-irEX0ChJLaZVC7FvvRoSIxJlmk0IczFLcwaRXUArBKYHCHbOhe57aG8q3uw/fJsoSXvZhjRX960hyeAGlVBXZw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/helper-define-map" "^7.10.3" + "@babel/helper-function-name" "^7.10.3" + "@babel/helper-optimise-call-expression" "^7.10.3" + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/helper-replace-supers" "^7.10.1" + "@babel/helper-split-export-declaration" "^7.10.1" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.3.tgz" + integrity sha512-GWzhaBOsdbjVFav96drOz7FzrcEW6AP5nax0gLIpstiFaI3LOb2tAg06TimaWU6YKOfUACK3FVrxPJ4GSc5TgA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.3" + +"@babel/plugin-transform-destructuring@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz" + integrity sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-dotall-regex@^7.10.1", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz" + integrity sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-duplicate-keys@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz" + integrity sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-exponentiation-operator@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz" + integrity sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-for-of@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz" + integrity sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-function-name@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz" + integrity sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw== + dependencies: + "@babel/helper-function-name" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-literals@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz" + integrity sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-member-expression-literals@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz" + integrity sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-modules-amd@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz" + integrity sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw== + dependencies: + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz" + integrity sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg== + dependencies: + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-simple-access" "^7.10.1" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.3.tgz" + integrity sha512-GWXWQMmE1GH4ALc7YXW56BTh/AlzvDWhUNn9ArFF0+Cz5G8esYlVbXfdyHa1xaD1j+GnBoCeoQNlwtZTVdiG/A== + dependencies: + "@babel/helper-hoist-variables" "^7.10.3" + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.3" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz" + integrity sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA== + dependencies: + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.3.tgz" + integrity sha512-I3EH+RMFyVi8Iy/LekQm948Z4Lz4yKT7rK+vuCAeRm0kTa6Z5W7xuhRxDNJv0FPya/her6AUgrDITb70YHtTvA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + +"@babel/plugin-transform-new-target@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz" + integrity sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-object-super@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz" + integrity sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-replace-supers" "^7.10.1" + +"@babel/plugin-transform-parameters@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz" + integrity sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg== + dependencies: + "@babel/helper-get-function-arity" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-property-literals@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz" + integrity sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-regenerator@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.3.tgz" + integrity sha512-H5kNeW0u8mbk0qa1jVIVTeJJL6/TJ81ltD4oyPx0P499DhMJrTmmIFCmJ3QloGpQG8K9symccB7S7SJpCKLwtw== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz" + integrity sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-shorthand-properties@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz" + integrity sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-spread@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz" + integrity sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-sticky-regex@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz" + integrity sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-regex" "^7.10.1" + +"@babel/plugin-transform-template-literals@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.3.tgz" + integrity sha512-yaBn9OpxQra/bk0/CaA4wr41O0/Whkg6nqjqApcinxM7pro51ojhX6fv1pimAnVjVfDy14K0ULoRL70CA9jWWA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.3" + +"@babel/plugin-transform-typeof-symbol@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz" + integrity sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-unicode-escapes@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz" + integrity sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-unicode-regex@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz" + integrity sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/preset-env@^7.4.5": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.3.tgz" + integrity sha512-jHaSUgiewTmly88bJtMHbOd1bJf2ocYxb5BWKSDQIP5tmgFuS/n0gl+nhSrYDhT33m0vPxp+rP8oYYgPgMNQlg== + dependencies: + "@babel/compat-data" "^7.10.3" + "@babel/helper-compilation-targets" "^7.10.2" + "@babel/helper-module-imports" "^7.10.3" + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/plugin-proposal-async-generator-functions" "^7.10.3" + "@babel/plugin-proposal-class-properties" "^7.10.1" + "@babel/plugin-proposal-dynamic-import" "^7.10.1" + "@babel/plugin-proposal-json-strings" "^7.10.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.1" + "@babel/plugin-proposal-numeric-separator" "^7.10.1" + "@babel/plugin-proposal-object-rest-spread" "^7.10.3" + "@babel/plugin-proposal-optional-catch-binding" "^7.10.1" + "@babel/plugin-proposal-optional-chaining" "^7.10.3" + "@babel/plugin-proposal-private-methods" "^7.10.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.10.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.10.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.1" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.10.1" + "@babel/plugin-transform-arrow-functions" "^7.10.1" + "@babel/plugin-transform-async-to-generator" "^7.10.1" + "@babel/plugin-transform-block-scoped-functions" "^7.10.1" + "@babel/plugin-transform-block-scoping" "^7.10.1" + "@babel/plugin-transform-classes" "^7.10.3" + "@babel/plugin-transform-computed-properties" "^7.10.3" + "@babel/plugin-transform-destructuring" "^7.10.1" + "@babel/plugin-transform-dotall-regex" "^7.10.1" + "@babel/plugin-transform-duplicate-keys" "^7.10.1" + "@babel/plugin-transform-exponentiation-operator" "^7.10.1" + "@babel/plugin-transform-for-of" "^7.10.1" + "@babel/plugin-transform-function-name" "^7.10.1" + "@babel/plugin-transform-literals" "^7.10.1" + "@babel/plugin-transform-member-expression-literals" "^7.10.1" + "@babel/plugin-transform-modules-amd" "^7.10.1" + "@babel/plugin-transform-modules-commonjs" "^7.10.1" + "@babel/plugin-transform-modules-systemjs" "^7.10.3" + "@babel/plugin-transform-modules-umd" "^7.10.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.3" + "@babel/plugin-transform-new-target" "^7.10.1" + "@babel/plugin-transform-object-super" "^7.10.1" + "@babel/plugin-transform-parameters" "^7.10.1" + "@babel/plugin-transform-property-literals" "^7.10.1" + "@babel/plugin-transform-regenerator" "^7.10.3" + "@babel/plugin-transform-reserved-words" "^7.10.1" + "@babel/plugin-transform-shorthand-properties" "^7.10.1" + "@babel/plugin-transform-spread" "^7.10.1" + "@babel/plugin-transform-sticky-regex" "^7.10.1" + "@babel/plugin-transform-template-literals" "^7.10.3" + "@babel/plugin-transform-typeof-symbol" "^7.10.1" + "@babel/plugin-transform-unicode-escapes" "^7.10.1" + "@babel/plugin-transform-unicode-regex" "^7.10.1" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.10.3" + browserslist "^4.12.0" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/runtime@^7.8.4": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.3.tgz" + integrity sha512-RzGO0RLSdokm9Ipe/YD+7ww8X2Ro79qiXZF3HU9ljrM+qnJmH1Vqth+hbiQZy761LnMJTMitHDuKVYTk3k4dLw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz" + integrity sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng== + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + lodash "^4.2.0" + +"@babel/template@^7.10.1", "@babel/template@^7.10.3": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.10.3.tgz" + integrity sha512-5BjI4gdtD+9fHZUsaxPHPNpwa+xRkDO7c7JbhYn2afvrkDu5SfAAbi9AIMXw2xEhO/BR35TqiW97IqNvCo/GqA== + dependencies: + "@babel/code-frame" "^7.10.3" + "@babel/parser" "^7.10.3" + "@babel/types" "^7.10.3" + +"@babel/traverse@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz" + integrity sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA== + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/generator" "7.0.0-beta.44" + "@babel/helper-function-name" "7.0.0-beta.44" + "@babel/helper-split-export-declaration" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + debug "^3.1.0" + globals "^11.1.0" + invariant "^2.2.0" + lodash "^4.2.0" + +"@babel/traverse@^7.10.1", "@babel/traverse@^7.10.3", "@babel/traverse@^7.7.0": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.3.tgz" + integrity sha512-qO6623eBFhuPm0TmmrUFMT1FulCmsSeJuVGhiLodk2raUDFhhTECLd9E9jC4LBIWziqt4wgF6KuXE4d+Jz9yug== + dependencies: + "@babel/code-frame" "^7.10.3" + "@babel/generator" "^7.10.3" + "@babel/helper-function-name" "^7.10.3" + "@babel/helper-split-export-declaration" "^7.10.1" + "@babel/parser" "^7.10.3" + "@babel/types" "^7.10.3" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@7.0.0-beta.35": + version "7.0.0-beta.35" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.35.tgz" + integrity sha512-y9XT11CozHDgjWcTdxmhSj13rJVXpa5ZXwjjOiTedjaM0ba5ItqdS02t31EhPl7HtOWxsZkYCCUNrSfrOisA6w== + dependencies: + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^2.0.0" + +"@babel/types@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz" + integrity sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ== + dependencies: + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^2.0.0" + +"@babel/types@^7.10.1", "@babel/types@^7.10.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.10.3" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.10.3.tgz" + integrity sha512-nZxaJhBXBQ8HVoIcGsf9qWep3Oh3jCENK54V4mRF7qaJabVsAYdbTtmSD8WmAp1R6ytPiu5apMwSXyxB1WlaBA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.3" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@discoveryjs/json-ext@^0.5.0": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@types/json-schema@^7.0.4": + version "7.0.5" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz" + integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== + +"@types/q@^1.5.1": + version "1.5.2" + resolved "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz" + integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== + +"@webpack-cli/configtest@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.2.0.tgz#7b20ce1c12533912c3b217ea68262365fa29a6f5" + integrity sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg== + +"@webpack-cli/info@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.5.0.tgz#6c78c13c5874852d6e2dd17f08a41f3fe4c261b1" + integrity sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ== + dependencies: + envinfo "^7.7.3" + +"@webpack-cli/serve@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.7.0.tgz#e1993689ac42d2b16e9194376cfb6753f6254db1" + integrity sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q== + +abbrev@1: + version "1.1.1" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-dynamic-import@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz" + integrity sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ= + dependencies: + acorn "^4.0.3" + +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz" + integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s= + dependencies: + acorn "^3.0.4" + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz" + integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= + +acorn@^4.0.3: + version "4.0.13" + resolved "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz" + integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= + +acorn@^5.0.0, acorn@^5.0.3, acorn@^5.3.0, acorn@^5.5.0: + version "5.7.3" + resolved "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz" + integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== + +ajv-keywords@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz" + integrity sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I= + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: + version "3.4.1" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz" + integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== + +ajv@^5.0.0, ajv@^5.2.3, ajv@^5.3.0: + version "5.5.2" + resolved "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz" + integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.5: + version "6.10.2" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz" + integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== + dependencies: + 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@^6.12.2: + version "6.12.2" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz" + integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz" + integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +alphanum-sort@^1.0.0, alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + +ansi-escapes@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + 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== + dependencies: + color-convert "^1.9.0" + +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz" + integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +are-we-there-yet@~1.1.2: + 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== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz" + integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= + dependencies: + arr-flatten "^1.0.1" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz" + integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" + integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +art-template@^4.13.2: + version "4.13.2" + resolved "https://registry.npmjs.org/art-template/-/art-template-4.13.2.tgz" + integrity sha512-04ws5k+ndA5DghfheY4c8F1304XJKeTcaXqZCLpxFkNMSkaR3ChW1pX2i9d3sEEOZuLy7de8lFriRaik1jEeOQ== + dependencies: + acorn "^5.0.3" + escodegen "^1.8.1" + estraverse "^4.2.0" + html-minifier "^3.4.3" + is-keyword-js "^1.0.3" + js-tokens "^3.0.1" + merge-source-map "^1.0.3" + source-map "^0.5.6" + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +async-each@^1.0.0, async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz" + integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async-validator@~1.8.1: + version "1.8.5" + resolved "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz" + integrity sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA== + dependencies: + babel-runtime "6.x" + +async@^2.1.2, async@^2.4.1, async@^2.6.2: + version "2.6.3" + resolved "https://registry.npmjs.org/async/-/async-2.6.3.tgz" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +async@^3.0.1: + version "3.2.0" + resolved "https://registry.npmjs.org/async/-/async-3.2.0.tgz" + integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^6.3.1: + version "6.7.7" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz" + integrity sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ= + dependencies: + browserslist "^1.7.6" + caniuse-db "^1.0.30000634" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.16" + postcss-value-parser "^3.2.3" + +autoprefixer@^7.1.2: + version "7.2.6" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz" + integrity sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ== + dependencies: + browserslist "^2.11.3" + caniuse-lite "^1.0.30000805" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^6.0.17" + postcss-value-parser "^3.2.3" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.9.0" + resolved "https://registry.npmjs.org/aws4/-/aws4-1.9.0.tgz" + integrity sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A== + +axios@^0.19.2: + version "0.19.2" + resolved "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== + dependencies: + follow-redirects "1.5.10" + +babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@^6.22.1, babel-core@^6.26.0: + version "6.26.3" + resolved "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" + +babel-eslint@^10.0.2: + version "10.1.0" + resolved "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + +babel-eslint@^8.2.1: + version "8.2.6" + resolved "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.6.tgz" + integrity sha512-aCdHjhzcILdP8c9lej7hvXKvQieyRt20SF102SIGyY4cUIiw6UaAtK4j2o3dXX74jEmy0TJ0CEhv4fTIM3SzcA== + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/traverse" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + eslint-scope "3.7.1" + eslint-visitor-keys "^1.0.0" + +babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz" + integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-bindify-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz" + integrity sha1-FMGeXxQte0fxmlJDHlKxzLxAozA= + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz" + integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz" + integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz" + integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz" + integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-explode-class@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz" + integrity sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes= + dependencies: + babel-helper-bindify-decorators "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz" + integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz" + integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz" + integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz" + integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz" + integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz" + integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz" + integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-vue-jsx-merge-props@^2.0.0, babel-helper-vue-jsx-merge-props@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz" + integrity sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg== + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz" + integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-loader@^7.1.1: + version "7.1.5" + resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.5.tgz" + integrity sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw== + dependencies: + find-cache-dir "^1.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz" + integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz" + integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-component@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/babel-plugin-component/-/babel-plugin-component-1.1.1.tgz" + integrity sha512-WUw887kJf2GH80Ng/ZMctKZ511iamHNqPhd9uKo14yzisvV7Wt1EckIrb8oq/uCz3B3PpAW7Xfl7AkTLDYT6ag== + dependencies: + "@babel/helper-module-imports" "7.0.0-beta.35" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz" + integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= + +babel-plugin-syntax-async-generators@^6.5.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz" + integrity sha1-a8lj67FuzLrmuStZbrfzXDQqi5o= + +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz" + integrity sha1-1+sjt5oxf4VDlixQW4J8fWysJ94= + +babel-plugin-syntax-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz" + integrity sha1-MSVjtNvePMgGzuPkFszurd0RrAs= + +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz" + integrity sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo= + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz" + integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= + +babel-plugin-syntax-jsx@^6.18.0: + version "6.18.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz" + integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz" + integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz" + integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= + +babel-plugin-transform-async-generator-functions@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz" + integrity sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds= + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-generators "^6.5.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz" + integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-class-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz" + integrity sha1-anl2PqYdM9NvN7YRqp3vgagbRqw= + dependencies: + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz" + integrity sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0= + dependencies: + babel-helper-explode-class "^6.24.1" + babel-plugin-syntax-decorators "^6.13.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz" + integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz" + integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz" + integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz" + integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz" + integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz" + integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz" + integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz" + integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz" + integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz" + integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz" + integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.2" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz" + integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz" + integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz" + integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz" + integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz" + integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz" + integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz" + integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz" + integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz" + integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz" + integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz" + integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz" + integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-object-rest-spread@^6.22.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz" + integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz" + integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-runtime@^6.22.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz" + integrity sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz" + integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-vue-jsx@^3.5.0: + version "3.7.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-3.7.0.tgz" + integrity sha512-W39X07/n3oJMQd8tALBO+440NraGSF//Lo1ydd/9Nme3+QiRGFBb1Q39T9iixh0jZPPbfv3so18tNoIgLatymw== + dependencies: + esutils "^2.0.2" + +babel-preset-env@^1.3.2: + version "1.7.0" + resolved "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz" + integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^3.2.6" + invariant "^2.2.2" + semver "^5.3.0" + +babel-preset-stage-2@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz" + integrity sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE= + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-plugin-transform-class-properties "^6.24.1" + babel-plugin-transform-decorators "^6.24.1" + babel-preset-stage-3 "^6.24.1" + +babel-preset-stage-3@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz" + integrity sha1-g2raCp56f6N8sTj7kyb4eTSkg5U= + dependencies: + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-generator-functions "^6.24.1" + babel-plugin-transform-async-to-generator "^6.24.1" + babel-plugin-transform-exponentiation-operator "^6.24.1" + babel-plugin-transform-object-rest-spread "^6.22.0" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz" + integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@6.x, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz" + integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz" + integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz" + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@7.0.0-beta.44: + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz" + integrity sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g== + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +balanced-match@^0.4.2: + version "0.4.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg= + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +bfj-node4@^5.2.0: + version "5.3.1" + resolved "https://registry.npmjs.org/bfj-node4/-/bfj-node4-5.3.1.tgz" + integrity sha512-SOmOsowQWfXc7ybFARsK3C4MCOWzERaOMV/Fl3Tgjs+5dJWyzo3oa127jL44eMbQiAN17J7SvAs2TRxEScTUmg== + dependencies: + bluebird "^3.5.1" + check-types "^7.3.0" + tryer "^1.0.0" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz" + integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bl@~0.4.1: + version "0.4.2" + resolved "https://registry.npmjs.org/bl/-/bl-0.4.2.tgz" + integrity sha1-XbMdcvA4xU5orcOVeBJf47Ct3JY= + dependencies: + readable-stream "~1.0.2" + +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= + dependencies: + inherits "~2.0.0" + +bluebird@^3.1.1, bluebird@^3.4.7, bluebird@^3.5.1: + version "3.7.1" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz" + integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: + version "4.11.9" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== + +bn.js@^5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz" + integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +bootstrap@^3.3.7, bootstrap@^3.4.1: + version "3.4.1" + resolved "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz" + integrity sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz" + integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.0" + resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz" + integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.2" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: + version "1.7.7" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz" + integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk= + dependencies: + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + +browserslist@^2.11.3: + version "2.11.3" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz" + integrity sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA== + dependencies: + caniuse-lite "^1.0.30000792" + electron-to-chromium "^1.3.30" + +browserslist@^3.2.6: + version "3.2.8" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz" + integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== + dependencies: + caniuse-lite "^1.0.30000844" + electron-to-chromium "^1.3.47" + +browserslist@^4.0.0: + version "4.7.3" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.7.3.tgz" + integrity sha512-jWvmhqYpx+9EZm/FxcZSbUZyDEvDTLDi3nSAKbzEkyWvtI0mNSmUosey+5awDW1RUlrgXbQb5A6qY1xQH9U6MQ== + dependencies: + caniuse-lite "^1.0.30001010" + electron-to-chromium "^1.3.306" + node-releases "^1.1.40" + +browserslist@^4.12.0, browserslist@^4.8.5: + version "4.12.1" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.12.1.tgz" + integrity sha512-WMjXwFtPskSW1pQUDJRxvRKRkeCr7usN0O/Za76N+F4oadaTdQHotSGcX9jT/Hs7mSKPkyMFNvqawB/1HzYDKQ== + dependencies: + caniuse-lite "^1.0.30001088" + electron-to-chromium "^1.3.481" + escalade "^3.0.1" + node-releases "^1.1.58" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^10.0.4: + version "10.0.4" + resolved "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz" + integrity sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA== + dependencies: + bluebird "^3.5.1" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^2.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^5.2.4" + unique-filename "^1.1.0" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz" + integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= + dependencies: + callsites "^0.2.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz" + integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-api@^1.5.2: + version "1.6.1" + resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz" + integrity sha1-tTTnxzTE+B7F++isoq0kNUuWLGw= + dependencies: + browserslist "^1.3.6" + caniuse-db "^1.0.30000529" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-api@^3.0.0: + 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== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: + version "1.0.30001088" + resolved "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001088.tgz" + integrity sha512-Sqkmd4oi1oiyOn2EkTauy1Bx1sVFv+drLtjkK6q4vTQpaI9wCjGGU/87MQXCiIh/SMU0FrdSnnA358yHkz8p/Q== + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001010: + version "1.0.30001012" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001012.tgz" + integrity sha512-7RR4Uh04t9K1uYRWzOJmzplgEOAXbfK72oVNokCdMzA67trrhPzy93ahKk1AWHiA0c58tD2P+NHqxrA8FZ+Trg== + +caniuse-lite@^1.0.30001088: + version "1.0.30001088" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001088.tgz" + integrity sha512-6eYUrlShRYveyqKG58HcyOfPgh3zb2xqs7NvT2VVtP3hEUeeWvc3lqhpeMTxYWBBeeaT9A4bKsrtjATm66BTHg== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz" + integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz" + integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= + +charenc@~0.0.1: + version "0.0.2" + resolved "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" + integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= + +check-types@^7.3.0: + version "7.4.0" + resolved "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz" + integrity sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg== + +chokidar@^1.6.0: + version "1.7.0" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz" + integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.4.0: + version "3.4.0" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz" + integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.4.0" + optionalDependencies: + fsevents "~2.1.2" + +chownr@^1.0.1: + version "1.1.3" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz" + integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz" + integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== + +clap@^1.0.9: + version "1.2.3" + resolved "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz" + integrity sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA== + dependencies: + chalk "^1.1.3" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-css@4.2.x: + version "4.2.1" + resolved "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz" + integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== + dependencies: + source-map "~0.6.0" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-spinners@^1.0.1: + version "1.3.1" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz" + integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg== + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + +clipboard@^2.0.0, clipboard@^2.0.6: + version "2.0.6" + resolved "https://registry.npm.taobao.org/clipboard/download/clipboard-2.0.6.tgz" + integrity sha1-UpISlu7A/fd+rRdJQhshyWhkc3Y= + dependencies: + good-listener "^1.2.2" + select "^1.1.2" + tiny-emitter "^2.0.0" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz" + integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +clone@^2.1.1, clone@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +coa@~1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz" + integrity sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0= + dependencies: + q "^1.1.2" + +coalescy@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/coalescy/-/coalescy-1.0.0.tgz" + integrity sha1-SwZYRrg2NhrabEtKSr9LwcrDG/E= + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.3.0, color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3, color-name@^1.0.0: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-string@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz" + integrity sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE= + dependencies: + color-name "^1.0.0" + +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^0.11.0: + version "0.11.4" + resolved "https://registry.npmjs.org/color/-/color-0.11.4.tgz" + integrity sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q= + dependencies: + clone "^1.0.2" + color-convert "^1.3.0" + color-string "^0.3.0" + +color@^3.0.0: + version "3.1.2" + resolved "https://registry.npmjs.org/color/-/color-3.1.2.tgz" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +colorette@^2.0.14: + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== + +colormin@^1.0.5: + version "1.1.2" + resolved "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz" + integrity sha1-6i90IKcrlogaOKrlnsEkpvcpgTM= + dependencies: + color "^0.11.0" + css-color-names "0.0.4" + has "^1.0.1" + +colors@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz" + integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@2.17.x, commander@^2.13.0: + version "2.17.1" + resolved "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== + +commander@7, commander@^7.0.0: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^4.0.1: + version "4.1.1" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commander@~2.13.0: + version "2.13.0" + resolved "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz" + integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== + +commander@~2.19.0: + version "2.19.0" + resolved "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz" + integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.5.2: + version "1.7.4" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0, concat-stream@^1.6.0: + version "1.6.2" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +connect-history-api-fallback@^1.3.0: + version "1.6.0" + resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +consolidate@^0.14.0: + version "0.14.5" + resolved "https://registry.npmjs.org/consolidate/-/consolidate-0.14.5.tgz" + integrity sha1-WiUEe8dvcwcmZ8jLUsmJiI9JTGM= + dependencies: + bluebird "^3.1.1" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.1.0, convert-source-map@^1.5.1: + version "1.7.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +copy-webpack-plugin@^4.0.1: + version "4.6.0" + resolved "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz" + integrity sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA== + dependencies: + cacache "^10.0.4" + find-cache-dir "^1.0.0" + globby "^7.1.1" + is-glob "^4.0.0" + loader-utils "^1.1.0" + minimatch "^3.0.4" + p-limit "^1.0.0" + serialize-javascript "^1.4.0" + +core-js-compat@^3.6.2: + version "3.6.5" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz" + integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== + dependencies: + browserslist "^4.8.5" + semver "7.0.0" + +core-js@^2.4.0, core-js@^2.5.0: + version "2.6.10" + resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz" + integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA== + +core-js@^3.25.2: + version "3.25.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.2.tgz#2d3670c1455432b53fa780300a6fc1bd8304932c" + integrity sha512-YB4IAT1bjEfxTJ1XYy11hJAKskO+qmhuDBM8/guIfMz4JvdsAQAqvyb97zXX7JgSrfPLG5mRGFWJwJD39ruq2A== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: + version "2.2.2" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz" + integrity sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A== + dependencies: + is-directory "^0.3.1" + js-yaml "^3.4.3" + minimist "^1.2.0" + object-assign "^4.1.0" + os-homedir "^1.0.1" + parse-json "^2.2.0" + require-from-string "^1.1.0" + +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz" + integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^5.0.1, cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypt@~0.0.1: + version "0.0.2" + resolved "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" + integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-loader@^0.28.11: + version "0.28.11" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz" + integrity sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg== + dependencies: + babel-code-frame "^6.26.0" + css-selector-tokenizer "^0.7.0" + cssnano "^3.10.0" + icss-utils "^2.1.0" + loader-utils "^1.0.2" + lodash.camelcase "^4.3.0" + object-assign "^4.1.1" + postcss "^5.0.6" + postcss-modules-extract-imports "^1.2.0" + postcss-modules-local-by-default "^1.2.0" + postcss-modules-scope "^1.1.0" + postcss-modules-values "^1.3.0" + postcss-value-parser "^3.3.0" + source-list-map "^2.0.0" + +css-select-base-adapter@^0.1.1: + 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== + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-selector-tokenizer@^0.7.0: + version "0.7.2" + resolved "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz" + integrity sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw== + dependencies: + cssesc "^3.0.0" + fastparse "^1.1.2" + regexpu-core "^4.6.0" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-unit-converter@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz" + integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY= + +css-what@2.1: + version "2.1.3" + resolved "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +css-what@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz" + integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + 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= + +cssnano-util-raw-cache@^4.0.1: + 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== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + 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== + +cssnano@^3.10.0: + version "3.10.0" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz" + integrity sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg= + dependencies: + autoprefixer "^6.3.1" + decamelize "^1.1.2" + defined "^1.0.0" + has "^1.0.1" + object-assign "^4.0.1" + postcss "^5.0.14" + postcss-calc "^5.2.0" + postcss-colormin "^2.1.8" + postcss-convert-values "^2.3.4" + postcss-discard-comments "^2.0.4" + postcss-discard-duplicates "^2.0.1" + postcss-discard-empty "^2.0.1" + postcss-discard-overridden "^0.1.1" + postcss-discard-unused "^2.2.1" + postcss-filter-plugins "^2.0.0" + postcss-merge-idents "^2.1.5" + postcss-merge-longhand "^2.0.1" + postcss-merge-rules "^2.0.3" + postcss-minify-font-values "^1.0.2" + postcss-minify-gradients "^1.0.1" + postcss-minify-params "^1.0.4" + postcss-minify-selectors "^2.0.4" + postcss-normalize-charset "^1.1.0" + postcss-normalize-url "^3.0.7" + postcss-ordered-values "^2.1.0" + postcss-reduce-idents "^2.2.2" + postcss-reduce-initial "^1.0.0" + postcss-reduce-transforms "^1.0.3" + postcss-svgo "^2.1.1" + postcss-unique-selectors "^2.0.2" + postcss-value-parser "^3.2.3" + postcss-zindex "^2.0.1" + +cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz" + integrity sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg== + dependencies: + css-tree "1.0.0-alpha.37" + +csso@~2.3.1: + version "2.3.2" + resolved "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz" + integrity sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U= + dependencies: + clap "^1.0.9" + source-map "^0.5.3" + +cuint@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz" + integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs= + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3: + version "3.1.1" + resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.1.1.tgz" + integrity sha512-33qQ+ZoZlli19IFiQx4QEpf2CBEayMRzhlisJHSCsSUbDXv6ZishqS1x7uFVClKG4Wr7rZVHvaAttoLow6GqdQ== + dependencies: + internmap "1 - 2" + +d3-axis@3: + version "3.0.0" + resolved "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz" + integrity sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw== + +d3-brush@3: + version "3.0.0" + resolved "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz" + integrity sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ== + dependencies: + d3-dispatch "1 - 3" + d3-drag "2 - 3" + d3-interpolate "1 - 3" + d3-selection "3" + d3-transition "3" + +d3-chord@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz" + integrity sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g== + dependencies: + d3-path "1 - 3" + +"d3-color@1 - 3", d3-color@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-color/-/d3-color-3.0.1.tgz" + integrity sha512-6/SlHkDOBLyQSJ1j1Ghs82OIUXpKWlR0hCsw0XrLSQhuUPuCSmLQ1QPH98vpnQxMUQM2/gfAkUEWsupVpd9JGw== + +d3-contour@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-contour/-/d3-contour-3.0.1.tgz" + integrity sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ== + dependencies: + d3-array "2 - 3" + +d3-delaunay@6: + version "6.0.2" + resolved "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz" + integrity sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ== + dependencies: + delaunator "5" + +"d3-dispatch@1 - 3", d3-dispatch@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz" + integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== + +"d3-drag@2 - 3", d3-drag@3: + version "3.0.0" + resolved "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz" + integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== + dependencies: + d3-dispatch "1 - 3" + d3-selection "3" + +"d3-dsv@1 - 3", d3-dsv@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz" + integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q== + dependencies: + commander "7" + iconv-lite "0.6" + rw "1" + +"d3-ease@1 - 3", d3-ease@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz" + integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== + +d3-fetch@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz" + integrity sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw== + dependencies: + d3-dsv "1 - 3" + +d3-force@3: + version "3.0.0" + resolved "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz" + integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg== + dependencies: + d3-dispatch "1 - 3" + d3-quadtree "1 - 3" + d3-timer "1 - 3" + +"d3-format@1 - 3", d3-format@3: + version "3.1.0" + resolved "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz" + integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== + +d3-geo@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz" + integrity sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA== + dependencies: + d3-array "2.5.0 - 3" + +d3-hierarchy@3: + version "3.1.1" + resolved "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.1.tgz" + integrity sha512-LtAIu54UctRmhGKllleflmHalttH3zkfSi4NlKrTAoFKjC+AFBJohsCAdgCBYQwH0F8hIOGY89X1pPqAchlMkA== + +"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz" + integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== + dependencies: + d3-color "1 - 3" + +"d3-path@1 - 3", d3-path@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz" + integrity sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w== + +d3-polygon@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz" + integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg== + +"d3-quadtree@1 - 3", d3-quadtree@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz" + integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw== + +d3-random@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz" + integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ== + +d3-scale-chromatic@3: + version "3.0.0" + resolved "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz" + integrity sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g== + dependencies: + d3-color "1 - 3" + d3-interpolate "1 - 3" + +d3-scale@4: + version "4.0.2" + resolved "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz" + integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== + dependencies: + d3-array "2.10.0 - 3" + d3-format "1 - 3" + d3-interpolate "1.2.0 - 3" + d3-time "2.1.1 - 3" + d3-time-format "2 - 4" + +"d3-selection@2 - 3", d3-selection@3: + version "3.0.0" + resolved "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz" + integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== + +d3-shape@3: + version "3.1.0" + resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz" + integrity sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ== + dependencies: + d3-path "1 - 3" + +"d3-time-format@2 - 4", d3-time-format@4: + version "4.1.0" + resolved "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz" + integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== + dependencies: + d3-time "1 - 3" + +"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3: + version "3.0.0" + resolved "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz" + integrity sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ== + dependencies: + d3-array "2 - 3" + +"d3-timer@1 - 3", d3-timer@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz" + integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== + +"d3-transition@2 - 3", d3-transition@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz" + integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w== + dependencies: + d3-color "1 - 3" + d3-dispatch "1 - 3" + d3-ease "1 - 3" + d3-interpolate "1 - 3" + d3-timer "1 - 3" + +d3-zoom@3: + version "3.0.0" + resolved "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz" + integrity sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw== + dependencies: + d3-dispatch "1 - 3" + d3-drag "2 - 3" + d3-interpolate "1 - 3" + d3-selection "2 - 3" + d3-transition "2 - 3" + +d3@^7.3.0: + version "7.3.0" + resolved "https://registry.npmjs.org/d3/-/d3-7.3.0.tgz" + integrity sha512-MDRLJCMK232OJQRqGljQ/gCxtB8k3/sLKFjftMjzPB3nKVUODpdW9Rb3vcq7U8Ka5YKoZkAmp++Ur6I+6iNWIw== + dependencies: + d3-array "3" + d3-axis "3" + d3-brush "3" + d3-chord "3" + d3-color "3" + d3-contour "3" + d3-delaunay "6" + d3-dispatch "3" + d3-drag "3" + d3-dsv "3" + d3-ease "3" + d3-fetch "3" + d3-force "3" + d3-format "3" + d3-geo "3" + d3-hierarchy "3" + d3-interpolate "3" + d3-path "3" + d3-polygon "3" + d3-quadtree "3" + d3-random "3" + d3-scale "4" + d3-scale-chromatic "3" + d3-selection "3" + d3-shape "3" + d3-time "3" + d3-time-format "4" + d3-timer "3" + d3-transition "3" + d3-zoom "3" + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz" + integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@=3.1.0, debug@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^3.1.1: + version "3.2.6" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deepmerge@^1.2.0: + version "1.5.2" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz" + integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + +del@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/del/-/del-3.0.0.tgz" + integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= + dependencies: + globby "^6.1.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + p-map "^1.1.1" + pify "^3.0.0" + rimraf "^2.2.8" + +delaunator@5: + version "5.0.0" + resolved "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz" + integrity sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw== + dependencies: + robust-predicates "^3.0.0" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +delegate@^3.1.2: + version "3.2.0" + resolved "https://registry.npm.taobao.org/delegate/download/delegate-3.2.0.tgz" + integrity sha1-tmtxwxWFIuirV0T3INjKDCr1kWY= + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz" + integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= + dependencies: + repeating "^2.0.0" + +detect-node@^2.0.3: + version "2.1.0" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^2.0.0: + version "2.2.2" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== + dependencies: + path-type "^3.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +dom7@^2.1.3: + version "2.1.5" + resolved "https://registry.npm.taobao.org/dom7/download/dom7-2.1.5.tgz" + integrity sha1-p5QRAXgAsx2EAAcM2uu/ySwfY3c= + dependencies: + ssr-window "^2.0.0" + +dom7@^3.0.0-alpha.7: + version "3.0.0-alpha.7" + resolved "https://registry.npm.taobao.org/dom7/download/dom7-3.0.0-alpha.7.tgz" + integrity sha1-O0uhVqg/o3+z+jS4q0ChpBpW/rE= + dependencies: + ssr-window "^3.0.0-alpha.1" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@1.5.1, domutils@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^4.1.1: + 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== + dependencies: + is-obj "^1.0.0" + +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +ejs@^2.5.7: + version "2.7.4" + resolved "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz" + integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== + +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30, electron-to-chromium@^1.3.306, electron-to-chromium@^1.3.47: + version "1.3.314" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.314.tgz" + integrity sha512-IKDR/xCxKFhPts7h+VaSXS02Z1mznP3fli1BbXWXeN89i2gCzKraU8qLpEid8YzKcmZdZD3Mly3cn5/lY9xsBQ== + +electron-to-chromium@^1.3.481: + version "1.3.483" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.483.tgz" + integrity sha512-+05RF8S9rk8S0G8eBCqBRBaRq7+UN3lDs2DAvnG8SBSgQO3hjy0+qt4CmRk5eiuGbTcaicgXfPmBi31a+BD3lg== + +element-ui@^2.13.2: + version "2.13.2" + resolved "https://registry.npmjs.org/element-ui/-/element-ui-2.13.2.tgz" + integrity sha512-r761DRPssMPKDiJZWFlG+4e4vr0cRG/atKr3Eqr8Xi0tQMNbtmYU1QXvFnKiFPFFGkgJ6zS6ASkG+sellcoHlQ== + dependencies: + async-validator "~1.8.1" + babel-helper-vue-jsx-merge-props "^2.0.0" + deepmerge "^1.2.0" + normalize-wheel "^1.0.1" + resize-observer-polyfill "^1.5.0" + throttle-debounce "^1.0.1" + +elliptic@^6.0.0, elliptic@^6.5.2: + version "6.5.3" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz" + integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^3.4.0: + version "3.4.1" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz" + integrity sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24= + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + object-assign "^4.0.1" + tapable "^0.2.7" + +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz" + integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== + +envinfo@^7.7.3: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + +errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.4.tgz" + integrity sha512-fZ0KkoxSjLFmhW5lHbUT3tLwy3nX1qEzMYo8koY1vrsAco53CMT1djnBSeC/wUjTEZRhZl9iRw7PaMaxfJ4wzQ== + dependencies: + stackframe "^1.1.0" + +es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0: + version "1.16.2" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.2.tgz" + integrity sha512-jYo/J8XU2emLXl3OLwfwtuFfuF2w6DYPs+xy9ZfVyPkDcrauu6LYrw/q2TyCtrbc/KUdCiC5e9UajRhgNkVopA== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-inspect "^1.7.0" + object-keys "^1.1.1" + string.prototype.trimleft "^2.1.0" + string.prototype.trimright "^2.1.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14: + version "0.10.53" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@^2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-map@^0.1.3: + version "0.1.5" + resolved "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz" + integrity sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA= + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-set "~0.1.5" + es6-symbol "~3.1.1" + event-emitter "~0.3.5" + +es6-set@~0.1.5: + version "0.1.5" + resolved "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz" + integrity sha1-0rPsXU2ADO2BjbU40ol02wpzzLE= + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-symbol "3.1.1" + event-emitter "~0.3.5" + +es6-symbol@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz" + integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-symbol@^3.1.1, es6-symbol@~3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.1: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + +escalade@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.0.1.tgz" + integrity sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escodegen@^1.8.1: + version "1.12.0" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz" + integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg== + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +escope@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz" + integrity sha1-4Bl16BJ4GhY6ba392AOY3GTIicM= + dependencies: + es6-map "^0.1.3" + es6-weak-map "^2.0.1" + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-config-standard@^10.2.1: + version "10.2.1" + resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz" + integrity sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE= + +eslint-friendly-formatter@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/eslint-friendly-formatter/-/eslint-friendly-formatter-3.0.0.tgz" + integrity sha1-J4h0Q1psRuwdlPoLH/SU4w7wQpA= + dependencies: + chalk "^1.0.0" + coalescy "1.0.0" + extend "^3.0.0" + minimist "^1.2.0" + text-table "^0.2.0" + +eslint-import-resolver-node@^0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz" + integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== + dependencies: + debug "^2.6.9" + resolve "^1.5.0" + +eslint-loader@^1.7.1: + version "1.9.0" + resolved "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.9.0.tgz" + integrity sha512-40aN976qSNPyb9ejTqjEthZITpls1SVKtwguahmH1dzGCwQU/vySE+xX33VZmD8csU0ahVNCtFlsPgKqRBiqgg== + dependencies: + loader-fs-cache "^1.0.0" + loader-utils "^1.0.2" + object-assign "^4.0.1" + object-hash "^1.1.4" + rimraf "^2.6.1" + +eslint-module-utils@^2.4.0: + version "2.4.1" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz" + integrity sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw== + dependencies: + debug "^2.6.8" + pkg-dir "^2.0.0" + +eslint-plugin-import@^2.7.0: + version "2.18.2" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz" + integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ== + dependencies: + array-includes "^3.0.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.4.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.0" + read-pkg-up "^2.0.0" + resolve "^1.11.0" + +eslint-plugin-node@^5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz" + integrity sha512-xhPXrh0Vl/b7870uEbaumb2Q+LxaEcOQ3kS1jtIXanBAwpMre1l5q/l2l/hESYJGEFKuI78bp6Uw50hlpr7B+g== + dependencies: + ignore "^3.3.6" + minimatch "^3.0.4" + resolve "^1.3.3" + semver "5.3.0" + +eslint-plugin-promise@^3.4.0: + version "3.8.0" + resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.8.0.tgz" + integrity sha512-JiFL9UFR15NKpHyGii1ZcvmtIqa3UTwiDAGb8atSffe43qJ3+1czVGN6UtkklpcJ2DVnqvTMzEKRaJdBkAL2aQ== + +eslint-plugin-standard@^3.0.1: + version "3.1.0" + resolved "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.1.0.tgz" + integrity sha512-fVcdyuKRr0EZ4fjWl3c+gp1BANFJD1+RaWa2UPYfMZ6jCtp5RG00kSaXnK/dE5sYzt4kaWJ9qdxqUfc0d9kX0w== + +eslint-plugin-vue@^4.0.0: + version "4.7.1" + resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-4.7.1.tgz" + integrity sha512-esETKhVMI7Vdli70Wt4bvAwnZBJeM0pxVX9Yb0wWKxdCJc2EADalVYK/q2FzMw8oKN0wPMdqVCKS8kmR89recA== + dependencies: + vue-eslint-parser "^2.0.3" + +eslint-scope@3.7.1: + version "3.7.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz" + integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^3.7.1: + version "3.7.3" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz" + integrity sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-visitor-keys@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz" + integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== + +eslint@^4.19.1: + version "4.19.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" + integrity sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ== + dependencies: + ajv "^5.3.0" + babel-code-frame "^6.22.0" + chalk "^2.1.0" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^3.1.0" + doctrine "^2.1.0" + eslint-scope "^3.7.1" + eslint-visitor-keys "^1.0.0" + espree "^3.5.4" + esquery "^1.0.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.0.1" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^3.0.6" + is-resolvable "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^1.0.1" + require-uncached "^1.0.3" + semver "^5.3.0" + strip-ansi "^4.0.0" + strip-json-comments "~2.0.1" + table "4.0.2" + text-table "~0.2.0" + +espree@^3.5.2, espree@^3.5.4: + version "3.5.4" + resolved "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz" + integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A== + dependencies: + acorn "^5.5.0" + acorn-jsx "^3.0.0" + +esprima@^2.6.0: + version "2.7.3" + resolved "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" + integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= + +esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz" + integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz" + integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +event-emitter@~0.3.5: + version "0.3.5" + resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz" + integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= + dependencies: + d "1" + es5-ext "~0.10.14" + +eventemitter3@^4.0.0: + version "4.0.4" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== + +events@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/events/-/events-3.1.0.tgz" + integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== + +eventsource@0.1.6: + version "0.1.6" + resolved "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz" + integrity sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI= + dependencies: + original ">=0.0.5" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz" + integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= + dependencies: + is-posix-bracket "^0.1.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz" + integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= + dependencies: + fill-range "^2.1.0" + +express@^4.13.3, express@^4.16.2: + version "4.17.1" + resolved "https://registry.npmjs.org/express/-/express-4.17.1.tgz" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^2.0.4: + version "2.2.0" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz" + integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz" + integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= + dependencies: + is-extglob "^1.0.0" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extract-text-webpack-plugin@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz" + integrity sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ== + dependencies: + async "^2.4.1" + loader-utils "^1.1.0" + schema-utils "^0.3.0" + webpack-sources "^1.0.1" + +extsprintf@1.3.0, extsprintf@^1.2.0: + version "1.3.0" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +fast-deep-equal@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz" + integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= + +fast-deep-equal@^2.0.1: + 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= + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + +fastparse@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz" + integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.0: + version "0.11.3" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz" + integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +file-loader@^1.1.4: + version "1.1.11" + resolved "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz" + integrity sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg== + dependencies: + loader-utils "^1.0.2" + schema-utils "^0.4.5" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz" + integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= + +filesize@^3.5.11: + version "3.6.1" + resolved "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz" + integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== + +fill-range@^2.1.0: + version "2.2.4" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz" + integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^3.0.0" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz" + integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz" + integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat-cache@^1.2.1: + version "1.3.4" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz" + integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== + dependencies: + circular-json "^0.3.1" + graceful-fs "^4.1.2" + rimraf "~2.6.2" + write "^0.2.1" + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@1.5.10, follow-redirects@^1.0.0: + version "1.5.10" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +friendly-errors-webpack-plugin@^1.6.1: + version "1.7.0" + resolved "https://registry.npmjs.org/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz" + integrity sha512-K27M3VK30wVoOarP651zDmb93R9zF28usW4ocaK3mfQeIEI5BPht/EzZs5E8QLLwbLRJQMwscAjDxYPb1FuNiw== + dependencies: + chalk "^1.1.3" + error-stack-parser "^2.0.0" + string-width "^2.0.0" + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.0.0, fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +fstream@^1.0.0, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gaze@^1.0.0: + version "1.1.3" + resolved "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz" + integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== + dependencies: + globule "^1.0.0" + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2: + version "1.1.1" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz" + integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz" + integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= + dependencies: + is-glob "^2.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.6, glob@~7.1.1: + version "7.1.6" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.0.1, globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz" + integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz" + integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globule@^1.0.0: + version "1.3.2" + resolved "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz" + integrity sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA== + dependencies: + glob "~7.1.1" + lodash "~4.17.10" + minimatch "~3.0.2" + +good-listener@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz" + integrity sha1-1TswzfkxPf+33JoNR3CWqm0UXFA= + dependencies: + delegate "^3.1.2" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2: + version "4.2.3" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +gzip-size@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-4.1.0.tgz" + integrity sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw= + dependencies: + duplexer "^0.1.1" + pify "^3.0.0" + +handle-thing@^1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz" + integrity sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ= + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.0: + version "5.1.3" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz" + integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.1, has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash-sum@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz" + integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@1.2.x, he@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hex-color-regex@^1.1.0: + 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== + +highcharts@^8.1.2: + version "8.1.2" + resolved "https://registry.npm.taobao.org/highcharts/download/highcharts-8.1.2.tgz?cache=0&sync_timestamp=1592313579993&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhighcharts%2Fdownload%2Fhighcharts-8.1.2.tgz" + integrity sha1-pOfXSmFAAo5najpU9f0Opsy8yQ4= + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz" + integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.8.5" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz" + integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-entities@^1.2.0: + version "1.4.0" + resolved "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== + +html-minifier@^3.2.3, html-minifier@^3.4.3: + version "3.5.21" + resolved "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz" + integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== + dependencies: + camel-case "3.0.x" + clean-css "4.2.x" + commander "2.17.x" + he "1.2.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.4.x" + +html-webpack-plugin@^2.30.1: + version "2.30.1" + resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz" + integrity sha1-f5xCG36pHsRg9WUn1430hO51N9U= + dependencies: + bluebird "^3.4.7" + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + toposort "^1.0.0" + +htmlparser2@^3.3.0: + version "3.10.1" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2, http-errors@~1.7.2: + version "1.7.2" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.3" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz" + integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + +http-proxy-middleware@^0.20.0: + version "0.20.0" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.20.0.tgz" + integrity sha512-dNJAk71nEJhPiAczQH9hGvE/MT9kEs+zn2Dh+Hi94PGZe1GluQirC7mw5rdREUtWx6qGS1Gu0bZd4qEAg+REgw== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.1" + lodash "^4.17.14" + micromatch "^4.0.2" + +http-proxy-middleware@~0.17.4: + version "0.17.4" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz" + integrity sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM= + dependencies: + http-proxy "^1.16.2" + is-glob "^3.1.0" + lodash "^4.17.2" + micromatch "^2.3.11" + +http-proxy@^1.16.2, http-proxy@^1.17.0: + version "1.18.1" + resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +http@^0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/http/-/http-0.0.0.tgz" + integrity sha1-huYybSnF0Dnen6xYSkVon5KfT3I= + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +https@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/https/-/https-1.0.0.tgz" + integrity sha1-PDfHrhqO65ZpBKKtHpdaGUt+06Q= + +iconv-lite@0.4.24, iconv-lite@^0.4.17: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@0.6: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= + +icss-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz" + integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= + dependencies: + postcss "^6.0.1" + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore@^3.3.3, ignore@^3.3.5, ignore@^3.3.6: + version "3.3.10" + resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz" + integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +in-publish@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz" + integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ== + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + dependencies: + repeating "^2.0.0" + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +inquirer@^3.0.6: + version "3.3.0" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz" + integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +internal-ip@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz" + integrity sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w= + dependencies: + meow "^3.3.0" + +"internmap@1 - 2": + version "2.0.3" + resolved "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz" + integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== + +interpret@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz" + integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== + +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== + +invariant@^2.2.0, invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.0: + version "1.9.0" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz" + integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.1.0" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.1.5, is-buffer@~1.1.1: + version "1.1.6" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + 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-core-module@^2.9.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" + integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz" + integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" + integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + 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= + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" + integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-keyword-js@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/is-keyword-js/-/is-keyword-js-1.0.3.tgz" + integrity sha1-rDDc81tnH0snsX9ctXI1EmAhEy0= + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz" + integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz" + integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz" + integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= + dependencies: + path-is-inside "^1.0.1" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + 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== + dependencies: + isobject "^3.0.1" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz" + integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" + integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= + dependencies: + has "^1.0.1" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-svg@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz" + integrity sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk= + dependencies: + html-comment-regex "^1.1.0" + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +jquery@^2.2.4: + version "2.2.4" + resolved "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz" + integrity sha1-LInWiJterFIqfuoywUUhVZxsvwI= + +jquery@^3.5.1: + version "3.5.1" + resolved "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz" + integrity sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg== + +js-base64@^2.1.8, js-base64@^2.1.9: + version "2.5.1" + resolved "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz" + integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== + +js-tokens@^3.0.0, "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^3.0.1, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1, js-yaml@^3.4.3, js-yaml@^3.9.1: + version "3.13.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@~3.7.0: + version "3.7.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz" + integrity sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A= + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz" + integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-loader@^0.5.4: + version "0.5.7" + resolved "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz" + integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== + +json-parse-better-errors@^1.0.1: + 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== + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz" + integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= + +json-schema-traverse@^0.4.1: + 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== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^0.5.0, json5@^0.5.1: + version "0.5.1" + resolved "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + +last-call-webpack-plugin@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-2.1.2.tgz" + integrity sha512-CZc+m2xZm51J8qSwdODeiiNeqh8CYkKEq6Rw8IkE4i/4yqf2cJhjQPsA6BtAV970ePRNhwEOXhy2U5xc5Jwh9Q== + dependencies: + lodash "^4.17.4" + webpack-sources "^1.0.1" + +lautin-pagination@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/lautin-pagination/-/lautin-pagination-2.1.2.tgz" + integrity sha512-K7joF9itQN/KyX+ayaIZSf7JRRpWxh93VKONTBz/218h56PLlVgWDk/C5On4SBAsxcNRftIDPmbaKJ6wkr3wNg== + dependencies: + bootstrap "^3.3.7" + jquery "^2.2.4" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +less-loader@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/less-loader/-/less-loader-5.0.0.tgz" + integrity sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg== + dependencies: + clone "^2.1.1" + loader-utils "^1.1.0" + pify "^4.0.1" + +less@^3.10.3: + version "3.10.3" + resolved "https://registry.npmjs.org/less/-/less-3.10.3.tgz" + integrity sha512-vz32vqfgmoxF1h3K4J+yKCtajH0PWmjkIFgbs5d78E/c/e+UQTnI+lWK+1eQRE95PXM2mC3rJlLSSP9VQHnaow== + dependencies: + clone "^2.1.2" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + mime "^1.4.1" + mkdirp "^0.5.0" + promise "^7.1.1" + request "^2.83.0" + source-map "~0.6.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-fs-cache@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz" + integrity sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw== + dependencies: + find-cache-dir "^0.1.1" + mkdirp "0.5.1" + +loader-runner@^2.3.0: + version "2.4.0" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz" + integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.0.4, loader-utils@^1.1.0, loader-utils@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@^4.0.0, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@~4.17.10: + version "4.17.15" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +log-symbols@^2.1.0: + version "2.2.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +loglevel@^1.4.1: + version "1.7.1" + resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz" + integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz" + integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + +lru-cache@^4.0.1, lru-cache@^4.1.1: + version "4.1.5" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +marked@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz" + integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg== + +math-expression-evaluator@^1.2.14: + version "1.2.22" + resolved "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.22.tgz" + integrity sha512-L0j0tFVZBQQLeEjmWOvDLoRciIY8gQGWahvkztXUal8jH8R5Rlqo9GCvgqvXcy9LQhEWdQCVvzqAbxgYNt4blQ== + +math-random@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz" + integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +md5@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz" + integrity sha1-U6s41f48iJG6RlMp6iP6wFQBJvk= + dependencies: + charenc "~0.0.1" + crypt "~0.0.1" + is-buffer "~1.1.1" + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz" + integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= + dependencies: + mimic-fn "^1.0.0" + +memory-fs@^0.4.0, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +meow@^3.3.0, meow@^3.7.0: + version "3.7.0" + resolved "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-source-map@^1.0.3: + version "1.1.0" + resolved "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz" + integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== + dependencies: + source-map "^0.6.1" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^2.1.5, micromatch@^2.3.11: + version "2.3.11" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz" + integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.42.0: + version "1.42.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz" + integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== + +"mime-db@>= 1.43.0 < 2": + version "1.47.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz" + integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.25" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz" + integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg== + dependencies: + mime-db "1.42.0" + +mime@1.3.x: + version "1.3.6" + resolved "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz" + integrity sha1-WR2E02U6awtKO5343lqoEI5y5eA= + +mime@1.6.0, mime@^1.4.1, mime@^1.5.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: + version "3.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +mississippi@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz" + integrity sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^2.0.1" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +nan@^2.12.1: + version "2.16.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916" + integrity sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA== + +nan@^2.13.2: + version "2.14.0" + resolved "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-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" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0: + version "2.6.1" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-gyp@^3.8.0: + version "3.8.0" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz" + integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== + dependencies: + 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" + +node-libs-browser@^2.0.0: + version "2.2.1" + resolved "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + 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 "^1.0.1" + +node-notifier@^5.1.2: + version "5.4.3" + resolved "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz" + integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== + dependencies: + growly "^1.3.0" + is-wsl "^1.1.0" + semver "^5.5.0" + shellwords "^0.1.1" + which "^1.3.0" + +node-releases@^1.1.40: + version "1.1.41" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.41.tgz" + integrity sha512-+IctMa7wIs8Cfsa8iYzeaLTFwv5Y4r5jZud+4AnfymzeEXKBCavFX0KBgzVaPVqf0ywa6PrO8/b+bPqdwjGBSg== + dependencies: + semver "^6.3.0" + +node-releases@^1.1.58: + version "1.1.58" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.58.tgz" + integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg== + +node-sass@^4.14.1: + version "4.14.1" + resolved "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz" + integrity sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g== + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash "^4.17.15" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.13.2" + node-gyp "^3.8.0" + npmlog "^4.0.0" + request "^2.88.0" + sass-graph "2.2.5" + stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" + +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.5.0" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@^1.4.0: + version "1.9.1" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +normalize-wheel@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz" + integrity sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU= + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0: + version "4.1.2" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@^1.0.2, nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^1.1.4: + version "1.3.1" + resolved "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz" + integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== + +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-keys@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz" + integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz" + integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz" + integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz" + integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.12.0" + function-bind "^1.1.1" + has "^1.0.3" + +obuf@^1.0.0, obuf@^1.1.1: + version "1.1.2" + resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +opener@^1.4.3: + version "1.5.1" + resolved "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz" + integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== + +opn@^5.1.0: + version "5.5.0" + resolved "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optimize-css-assets-webpack-plugin@^3.2.0: + version "3.2.1" + resolved "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-3.2.1.tgz" + integrity sha512-FSoF15xKSEM2qCE3/y2gH92PysJSBY58Wx/hmSdIzVSOd0vg+FRS28NWZADId1wh6PDlbVt0lfPduV0IBufItQ== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^2.1.2" + +optionator@^0.8.1, optionator@^0.8.2: + version "0.8.3" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +ora@^1.2.0: + version "1.4.0" + resolved "https://registry.npmjs.org/ora/-/ora-1.4.0.tgz" + integrity sha512-iMK1DOQxzzh2MBlVsU42G80mnrvUhqsMh74phHtDlrcTZPK0pH6o7l7DRshK+0YsxDyEuaOkziVdvM3T0QTzpw== + dependencies: + chalk "^2.1.0" + cli-cursor "^2.1.0" + cli-spinners "^1.0.1" + log-symbols "^2.1.0" + +original@>=0.0.5: + version "1.0.2" + resolved "https://registry.npmjs.org/original/-/original-1.0.2.tgz" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz" + integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@0: + version "0.1.5" + resolved "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^1.0.0, p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0: + version "2.2.1" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz" + integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== + dependencies: + p-try "^2.0.0" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + 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== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz" + integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/pako/-/pako-2.0.3.tgz" + integrity sha512-WjR1hOeg+kki3ZIOjaf4b5WVcay1jaliKSYiEaB1XzwhMQZJxRdQRv0V31EKBYlxb4T7SK3hjfc/jxyU64BoSw== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= + dependencies: + no-case "^2.2.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.5" + resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz" + integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.1, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +pbkdf2@^3.0.3: + version "3.1.1" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz" + integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: + version "2.2.2" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz" + integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= + dependencies: + find-up "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz" + integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== + +popper.js@^1.16.0: + version "1.16.0" + resolved "https://registry.npmjs.org/popper.js/-/popper.js-1.16.0.tgz" + integrity sha512-+G+EkOPoE5S/zChTpmBSSDYmhXJ5PsW8eMhH8cP/CQHMFPBG/kC9Y5IIw6qNYgdJ+/COf0ddY2li28iHaZRSjw== + +portfinder@^1.0.13, portfinder@^1.0.9: + version "1.0.25" + resolved "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz" + integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.1" + +posix-character-classes@^0.1.0: + 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= + +postcss-calc@^5.2.0: + version "5.3.1" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz" + integrity sha1-d7rnypKK2FcW4v2kLyYb98HWW14= + dependencies: + postcss "^5.0.2" + postcss-message-helpers "^2.0.0" + reduce-css-calc "^1.2.6" + +postcss-calc@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz" + integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ== + dependencies: + 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-colormin@^2.1.8: + version "2.2.2" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz" + integrity sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks= + dependencies: + colormin "^1.0.5" + postcss "^5.0.13" + postcss-value-parser "^3.2.3" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + 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@^2.3.4: + version "2.6.1" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz" + integrity sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0= + dependencies: + postcss "^5.0.11" + postcss-value-parser "^3.1.2" + +postcss-convert-values@^4.0.1: + 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== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-discard-comments@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz" + integrity sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0= + dependencies: + postcss "^5.0.14" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^2.0.1: + version "2.1.0" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz" + integrity sha1-uavye4isGIFYpesSq8riAmO5GTI= + dependencies: + postcss "^5.0.4" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^2.0.1: + version "2.1.0" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz" + integrity sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU= + dependencies: + postcss "^5.0.14" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz" + integrity sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg= + dependencies: + postcss "^5.0.16" + +postcss-discard-overridden@^4.0.1: + 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== + dependencies: + postcss "^7.0.0" + +postcss-discard-unused@^2.2.1: + version "2.2.3" + resolved "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz" + integrity sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM= + dependencies: + postcss "^5.0.14" + uniqs "^2.0.0" + +postcss-filter-plugins@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz" + integrity sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ== + dependencies: + postcss "^5.0.4" + +postcss-import@^11.0.0: + version "11.1.0" + resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-11.1.0.tgz" + integrity sha512-5l327iI75POonjxkXgdRCUS+AlzAdBx4pOvMEhTKTCjb1p8IEeVR9yx3cPbmN7LIWJLbfnIXxAhoB4jpD0c/Cw== + dependencies: + postcss "^6.0.1" + postcss-value-parser "^3.2.3" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-load-config@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz" + integrity sha1-U56a/J3chiASHr+djDZz4M5Q0oo= + dependencies: + cosmiconfig "^2.1.0" + object-assign "^4.1.0" + postcss-load-options "^1.2.0" + postcss-load-plugins "^2.3.0" + +postcss-load-config@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-load-options@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz" + integrity sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw= + dependencies: + cosmiconfig "^2.1.0" + object-assign "^4.1.0" + +postcss-load-plugins@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz" + integrity sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI= + dependencies: + cosmiconfig "^2.1.1" + object-assign "^4.1.0" + +postcss-loader@^2.0.8: + version "2.1.6" + resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.6.tgz" + integrity sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg== + dependencies: + loader-utils "^1.1.0" + postcss "^6.0.0" + postcss-load-config "^2.0.0" + schema-utils "^0.4.0" + +postcss-merge-idents@^2.1.5: + version "2.1.7" + resolved "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz" + integrity sha1-TFUwMTwI4dWzu/PSu8dH4njuonA= + dependencies: + has "^1.0.1" + postcss "^5.0.10" + postcss-value-parser "^3.1.1" + +postcss-merge-longhand@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz" + integrity sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg= + dependencies: + postcss "^5.0.4" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^2.0.3: + version "2.1.2" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz" + integrity sha1-0d9d+qexrMO+VT8OnhDofGG19yE= + dependencies: + browserslist "^1.5.2" + caniuse-api "^1.5.2" + postcss "^5.0.4" + postcss-selector-parser "^2.2.2" + vendors "^1.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + 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" + +postcss-message-helpers@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz" + integrity sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4= + +postcss-minify-font-values@^1.0.2: + version "1.0.5" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz" + integrity sha1-S1jttWZB66fIR0qzUmyv17vey2k= + dependencies: + object-assign "^4.0.1" + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-minify-font-values@^4.0.2: + 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== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^1.0.1: + version "1.0.5" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz" + integrity sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE= + dependencies: + postcss "^5.0.12" + postcss-value-parser "^3.3.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + 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@^1.0.4: + version "1.2.2" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz" + integrity sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM= + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.2" + postcss-value-parser "^3.0.2" + uniqs "^2.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + 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@^2.0.4: + version "2.1.1" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz" + integrity sha1-ssapjAByz5G5MtGkllCBFDEXNb8= + dependencies: + alphanum-sort "^1.0.2" + has "^1.0.1" + postcss "^5.0.14" + postcss-selector-parser "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^1.2.0: + version "1.2.1" + resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz" + integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw== + dependencies: + postcss "^6.0.1" + +postcss-modules-local-by-default@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz" + integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-scope@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz" + integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-values@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz" + integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= + dependencies: + icss-replace-symbols "^1.1.0" + postcss "^6.0.1" + +postcss-normalize-charset@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz" + integrity sha1-757nEhLX/nWceO0WL2HtYrXLk/E= + dependencies: + postcss "^5.0.5" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + 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@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + 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@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + 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== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^3.0.7: + version "3.0.8" + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz" + integrity sha1-EI90s/L82viRov+j6kWSJ5/HgiI= + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^1.4.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + +postcss-normalize-url@^4.0.1: + 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== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^2.1.0: + version "2.2.3" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz" + integrity sha1-7sbCpntsQSqNsgQud/6NpD+VwR0= + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.1" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-reduce-idents@^2.2.2: + version "2.4.0" + resolved "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz" + integrity sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM= + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-reduce-initial@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz" + integrity sha1-aPgGlfBF0IJjqHmtJA343WT2ROo= + dependencies: + postcss "^5.0.4" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz" + integrity sha1-/3b02CEkN7McKYpC0uFEQCV3GuE= + dependencies: + has "^1.0.1" + postcss "^5.0.8" + postcss-value-parser "^3.0.1" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: + version "2.2.3" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz" + integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A= + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz" + integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU= + dependencies: + dot-prop "^4.1.1" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^2.1.1: + version "2.1.6" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz" + integrity sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0= + dependencies: + is-svg "^2.0.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + svgo "^0.7.0" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz" + integrity sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0= + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-url@^7.2.1: + version "7.3.2" + resolved "https://registry.npmjs.org/postcss-url/-/postcss-url-7.3.2.tgz" + integrity sha512-QMV5mA+pCYZQcUEPQkmor9vcPQ2MT+Ipuu8qdi1gVxbNiIiErEGft+eny1ak19qALoBkccS5AHaCaCDzh7b9MA== + dependencies: + mime "^1.4.1" + minimatch "^3.0.4" + mkdirp "^0.5.0" + postcss "^6.0.1" + xxhashjs "^0.2.1" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-zindex@^2.0.1: + version "2.2.0" + resolved "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz" + integrity sha1-0hCd3AVbka9n/EyzsCWUZjnSryI= + dependencies: + has "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16: + version "5.2.18" + resolved "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz" + integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.17, postcss@^6.0.8: + version "6.0.23" + resolved "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz" + integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.5: + version "7.0.23" + resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.23.tgz" + integrity sha512-hOlMf3ouRIFXD+j2VJecwssTwbvsPGJVMzupptg+85WA+i7MwyrydmQAgY3R+m0Bc0exunhbJmijy8u8+vufuQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" + integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= + +prettier@^1.12.1, prettier@^1.7.0: + version "1.19.1" + resolved "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== + +pretty-error@^2.0.2: + version "2.1.1" + resolved "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz" + integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +private@^0.1.6, private@^0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +proxy-addr@~2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz" + integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.0" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.24: + version "1.4.0" + resolved "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz" + integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0, pump@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +pygmentize-bundled@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pygmentize-bundled/-/pygmentize-bundled-2.3.0.tgz" + integrity sha1-1CXe2o0TaXW5M+3jYxNfYjNQgUo= + dependencies: + bl "~0.4.1" + through2 "~0.2.1" + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +randomatic@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz" + integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== + dependencies: + is-number "^4.0.0" + kind-of "^6.0.0" + math-random "^1.0.1" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.0.3, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" + integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q= + dependencies: + pify "^2.3.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.6" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.1.1: + version "3.4.0" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz" + integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~1.0.2: + version "1.0.34" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdirp@^2.0.0, readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + dependencies: + picomatch "^2.2.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" + +rechoir@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" + integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== + dependencies: + resolve "^1.9.0" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +reduce-css-calc@^1.2.6: + version "1.3.0" + resolved "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz" + integrity sha1-dHyRTgSWFKTJz7umKYca0dKSdxY= + dependencies: + balanced-match "^0.4.2" + math-expression-evaluator "^1.2.14" + reduce-function-call "^1.0.1" + +reduce-function-call@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz" + integrity sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ== + dependencies: + balanced-match "^1.0.0" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.2.1, regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz" + integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regenerator-transform@^0.14.2: + version "0.14.4" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + dependencies: + "@babel/runtime" "^7.8.4" + private "^0.1.8" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz" + integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== + dependencies: + is-equal-shallow "^0.1.3" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.2.0: + version "1.3.1" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexpp@^1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz" + integrity sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw== + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz" + integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regexpu-core@^4.6.0, regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz" + integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= + +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz" + integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= + dependencies: + jsesc "~0.5.0" + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.1: + version "2.0.3" + resolved "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz" + integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== + dependencies: + css-select "^1.1.0" + dom-converter "^0.2" + htmlparser2 "^3.3.0" + strip-ansi "^3.0.0" + utila "^0.4.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.5.2, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +request@^2.83.0, request@^2.87.0, request@^2.88.0: + version "2.88.0" + resolved "https://registry.npmjs.org/request/-/request-2.88.0.tgz" + integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== + dependencies: + 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@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-from-string@^1.1.0: + version "1.2.1" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz" + integrity sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz" + integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resize-detector@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/resize-detector/-/resize-detector-0.3.0.tgz" + integrity sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ== + +resize-observer-polyfill@^1.5.0: + version "1.5.1" + resolved "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz" + integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.5.0: + version "1.13.1" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.13.1.tgz" + integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w== + dependencies: + path-parse "^1.0.6" + +resolve@^1.9.0: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz" + integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +robust-predicates@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz" + integrity sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g== + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= + dependencies: + is-promise "^2.1.0" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +rw@1: + version "1.3.3" + resolved "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz" + integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz" + integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74= + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz" + integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= + +safe-buffer@5.1.2, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@^5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass-graph@2.2.5: + version "2.2.5" + resolved "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz" + integrity sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag== + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^13.3.2" + +sass-loader@^7.3.1: + version "7.3.1" + resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-7.3.1.tgz" + integrity sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA== + dependencies: + clone-deep "^4.0.1" + loader-utils "^1.0.1" + neo-async "^2.5.0" + pify "^4.0.1" + semver "^6.3.0" + +sass-resources-loader@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/sass-resources-loader/-/sass-resources-loader-2.0.3.tgz" + integrity sha512-kYujKXFPZvh5QUT+0DO35P93G6GeIRMP4c941Ilbvey5lo+iICFs2H4hP2CFHl68Llg7h2iXqe0RQpDoUzjUSw== + dependencies: + "@babel/cli" "^7.4.4" + "@babel/preset-env" "^7.4.5" + async "^3.0.1" + babel-eslint "^10.0.2" + chalk "^2.4.2" + glob "^7.1.1" + loader-utils "^1.0.4" + +sax@~1.2.1, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +schema-utils@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz" + integrity sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8= + dependencies: + ajv "^5.0.0" + +schema-utils@^0.4.0, schema-utils@^0.4.5: + version "0.4.7" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz" + integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.0.1: + version "2.5.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.5.0.tgz" + integrity sha512-32ISrwW2scPXHUSusP8qMg5dLUawKkyV+/qIEV9JdXKx+rsM6mi8vZY8khg2M69Qom16rtroWXD3Ybtiws38gQ== + dependencies: + ajv "^6.10.2" + ajv-keywords "^3.4.1" + +schema-utils@^2.6.1: + version "2.7.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + +scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz" + integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= + dependencies: + js-base64 "^2.1.8" + source-map "^0.4.2" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +select@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/select/-/select-1.1.2.tgz" + integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= + +selfsigned@^1.9.1: + version "1.10.11" + resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz" + integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA== + dependencies: + node-forge "^0.10.0" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@5.3.0, semver@~5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.npmjs.org/send/-/send-0.17.1.tgz" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^1.4.0: + version "1.9.1" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz" + integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A== + +serve-index@^1.7.2: + version "1.9.1" + resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shelljs@^0.7.6: + version "0.7.8" + resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz" + integrity sha1-3svPh0sNHl+3LhSxZKloMEjprLM= + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz" + integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== + dependencies: + is-fullwidth-code-point "^2.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sockjs-client@1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz" + integrity sha1-W6vjhrd15M8U51IJEUUmVAFsixI= + dependencies: + debug "^2.6.6" + eventsource "0.1.6" + faye-websocket "~0.11.0" + inherits "^2.0.1" + json3 "^3.3.2" + url-parse "^1.1.8" + +sockjs@0.3.18: + version "0.3.18" + resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz" + integrity sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc= + dependencies: + faye-websocket "^0.10.0" + uuid "^2.0.2" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + 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== + +source-map-resolve@^0.5.0: + 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== + dependencies: + 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@^0.4.15: + version "0.4.18" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== + dependencies: + source-map "^0.5.6" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.4.2: + version "0.4.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz" + integrity sha1-66T12pwNyZneaAMti092FzZSA2s= + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + 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== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +spdy-transport@^2.0.18: + version "2.1.1" + resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.1.tgz" + integrity sha512-q7D8c148escoB3Z7ySCASadkegMmUZW8Wb/Q1u0/XBgDKMO880rLQDj8Twiew/tYi7ghemKUi/whSYOwE17f5Q== + dependencies: + debug "^2.6.8" + detect-node "^2.0.3" + hpack.js "^2.1.6" + obuf "^1.1.1" + readable-stream "^2.2.9" + safe-buffer "^5.0.1" + wbuf "^1.7.2" + +spdy@^3.4.1: + version "3.4.7" + resolved "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz" + integrity sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw= + dependencies: + debug "^2.6.8" + handle-thing "^1.2.5" + http-deceiver "^1.2.7" + safe-buffer "^5.0.1" + select-hose "^2.0.0" + spdy-transport "^2.0.18" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + 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" + +ssr-window@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/ssr-window/download/ssr-window-1.0.1.tgz" + integrity sha1-MHUqakZm53Z/C35qpvwv29DZs2k= + +ssr-window@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/ssr-window/download/ssr-window-2.0.0.tgz" + integrity sha1-mMMBrvmVIzF/jWlhjwAQeRCW78Q= + +ssr-window@^3.0.0-alpha.1, ssr-window@^3.0.0-alpha.4: + version "3.0.0-alpha.4" + resolved "https://registry.npm.taobao.org/ssr-window/download/ssr-window-3.0.0-alpha.4.tgz" + integrity sha1-DGmhjEMF7MzdjhFZYVXKB7Y180U= + +ssri@^5.2.4: + version "5.3.0" + resolved "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz" + integrity sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ== + dependencies: + safe-buffer "^5.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stackframe@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.1.0.tgz" + integrity sha512-Vx6W1Yvy+AM1R/ckVwcHQHV147pTPBKWCRLrXMuPrFVfvBUc3os7PR1QLIWCMhPpRg5eX9ojzbQIMLGBwyLjqg== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stdout-stream@^1.4.0: + version "1.4.1" + resolved "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz" + integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA== + dependencies: + readable-stream "^2.0.1" + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + 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@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz" + integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string.prototype.trimleft@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz" + integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string.prototype.trimright@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz" + integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string_decoder@^1.0.0, string_decoder@^1.1.1, string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +style-loader@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/style-loader/-/style-loader-1.0.0.tgz" + integrity sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw== + dependencies: + loader-utils "^1.2.3" + schema-utils "^2.0.1" + +style-resources-loader@^1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/style-resources-loader/-/style-resources-loader-1.3.3.tgz" + integrity sha512-vDD2HyG6On8H9gWUN9O9q1eXR/JnXpCkNvpusvgFsRQ9JZGF9drzvwKEigR9vqlmUbXO2t/vIIabpYMmis0eAQ== + dependencies: + glob "^7.1.6" + is-promise "^2.1.0" + loader-utils "^1.2.3" + schema-utils "^2.6.1" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= + dependencies: + has-flag "^1.0.0" + +supports-color@^4.2.1: + version "4.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz" + integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s= + dependencies: + has-flag "^2.0.0" + +supports-color@^5.3.0, supports-color@^5.4.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svgo@^0.7.0: + version "0.7.2" + resolved "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz" + integrity sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U= + dependencies: + coa "~1.0.1" + colors "~1.1.2" + csso "~2.3.1" + js-yaml "~3.7.0" + mkdirp "~0.5.1" + sax "~1.2.1" + whet.extend "~0.9.9" + +svgo@^1.0.0: + version "1.3.2" + resolved "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +swiper@^4.0.7: + version "4.5.1" + resolved "https://registry.npm.taobao.org/swiper/download/swiper-4.5.1.tgz" + integrity sha1-7UOZjngM60eGEAecjSP9Ql7KY28= + dependencies: + dom7 "^2.1.3" + ssr-window "^1.0.1" + +swiper@^6.0.4: + version "6.0.4" + resolved "https://registry.npm.taobao.org/swiper/download/swiper-6.0.4.tgz" + integrity sha1-04iTgzaeeA6NkF5qr3ikPcNpAXY= + dependencies: + dom7 "^3.0.0-alpha.7" + ssr-window "^3.0.0-alpha.4" + +table@4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/table/-/table-4.0.2.tgz" + integrity sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA== + dependencies: + ajv "^5.2.3" + ajv-keywords "^2.1.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + +tapable@^0.2.7: + version "0.2.9" + resolved "https://registry.npmjs.org/tapable/-/tapable-0.2.9.tgz" + integrity sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A== + +tar@^2.0.0: + version "2.2.2" + resolved "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== + dependencies: + block-stream "*" + fstream "^1.0.12" + inherits "2" + +text-table@^0.2.0, text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throttle-debounce@^1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz" + integrity sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg== + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through2@~0.2.1: + version "0.2.3" + resolved "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz" + integrity sha1-6zKE2k6jEbbMis42U3SKUqvyWj8= + dependencies: + readable-stream "~1.1.9" + xtend "~2.1.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +time-stamp@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/time-stamp/-/time-stamp-2.2.0.tgz" + integrity sha512-zxke8goJQpBeEgD82CXABeMh0LSJcj7CXEd0OHOg45HgcofF7pxNwZm9+RknpxpDhwN4gFpySkApKfFYfRQnUA== + +timers-browserify@^2.0.4: + version "2.0.11" + resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tiny-emitter@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/tiny-emitter/download/tiny-emitter-2.1.0.tgz" + integrity sha1-HRpW7fxRxD6GPLtTgqcjMONVVCM= + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +toposort@^1.0.0: + version "1.0.7" + resolved "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz" + integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= + +tough-cookie@~2.4.3: + 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== + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= + +"true-case-path@^1.0.2": + 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== + dependencies: + glob "^7.1.2" + +tryer@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.npmjs.org/type/-/type-1.2.0.tgz" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/type/-/type-2.0.0.tgz" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +uglify-es@^3.3.4: + version "3.3.9" + resolved "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz" + integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== + dependencies: + commander "~2.13.0" + source-map "~0.6.1" + +uglify-js@3.4.x: + version "3.4.10" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz" + integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== + dependencies: + commander "~2.19.0" + source-map "~0.6.1" + +uglify-js@^2.8.29: + version "2.8.29" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz" + integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" + integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= + +uglifyjs-webpack-plugin@^0.4.6: + version "0.4.6" + resolved "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz" + integrity sha1-uVH0q7a9YX5m9j64kUmOORdj4wk= + dependencies: + source-map "^0.5.6" + uglify-js "^2.8.29" + webpack-sources "^1.0.1" + +uglifyjs-webpack-plugin@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz" + integrity sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw== + dependencies: + cacache "^10.0.4" + find-cache-dir "^1.0.0" + schema-utils "^0.4.5" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + uglify-es "^3.3.4" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + +unicode-canonical-property-names-ecmascript@^1.0.4: + 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== + +unicode-match-property-ecmascript@^1.0.4: + 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== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@^0.5.8: + version "0.5.9" + resolved "https://registry.npmjs.org/url-loader/-/url-loader-0.5.9.tgz" + integrity sha512-B7QYFyvv+fOBqBVeefsxv6koWWtjmHaMFT6KZWti4KRw8YUD/hOU+3AECvXuzyVawIBx3z7zQRejXCDSO5kk1Q== + dependencies: + loader-utils "^1.0.2" + mime "1.3.x" + +url-parse@^1.1.8, url-parse@^1.4.3: + version "1.5.1" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz" + integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.npmjs.org/util/-/util-0.11.1.tgz" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@^0.4.0, utila@~0.4: + version "0.4.0" + resolved "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz" + integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho= + +uuid@^3.3.2: + version "3.3.3" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz" + integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== + +validate-npm-package-license@^3.0.1: + 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== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz" + integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +vue-awesome-swiper@^3.1.3: + version "3.1.3" + resolved "https://registry.npm.taobao.org/vue-awesome-swiper/download/vue-awesome-swiper-3.1.3.tgz" + integrity sha1-BVALUB/7P+yb9+uZhbz0roNg7Z4= + dependencies: + object-assign "^4.1.1" + swiper "^4.0.7" + +vue-clipboard2@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/vue-clipboard2/-/vue-clipboard2-0.3.1.tgz" + integrity sha512-H5S/agEDj0kXjUb5GP2c0hCzIXWRBygaWLN3NEFsaI9I3uWin778SFEMt8QRXiPG+7anyjqWiw2lqcxWUSfkYg== + dependencies: + clipboard "^2.0.0" + +vue-demi@^0.12.1: + version "0.12.1" + resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.12.1.tgz" + integrity sha512-QL3ny+wX8c6Xm1/EZylbgzdoDolye+VpCXRhI2hug9dJTP3OUJ3lmiKN3CsVV3mOJKwFi0nsstbgob0vG7aoIw== + +vue-echarts@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/vue-echarts/-/vue-echarts-6.0.2.tgz" + integrity sha512-9xDokauJtAc389MNKbwi1I0VDmp4Y6ndAJTQ8T9K7H0ffosTe1OJSJbUtkT7/fVLDFzlCcmg2TfAKaMzbpg5yQ== + dependencies: + resize-detector "^0.3.0" + vue-demi "^0.12.1" + +vue-eslint-parser@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz" + integrity sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw== + dependencies: + debug "^3.1.0" + eslint-scope "^3.7.1" + eslint-visitor-keys "^1.0.0" + espree "^3.5.2" + esquery "^1.0.0" + lodash "^4.17.4" + +vue-hot-reload-api@^2.2.0: + version "2.3.4" + resolved "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz" + integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== + +vue-i18n@^8.18.2: + version "8.18.2" + resolved "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.18.2.tgz" + integrity sha512-0X5nBTCZAVjlwcrPaYJwNs3iipBBTv0AUHwQUOa8yP3XbQGWKbRHqBb3OhCYtum/IHDD21d/df5Xd2VgyxbxfA== + +vue-loader@^13.3.0: + version "13.7.3" + resolved "https://registry.npmjs.org/vue-loader/-/vue-loader-13.7.3.tgz" + integrity sha512-ACCwbfeC6HjY2pnDii+Zer+MZ6sdOtwvLmDXRK/BoD3WNR551V22R6KEagwHoTRJ0ZlIhpCBkptpCU6+Ri/05w== + dependencies: + consolidate "^0.14.0" + hash-sum "^1.0.2" + loader-utils "^1.1.0" + lru-cache "^4.1.1" + postcss "^6.0.8" + postcss-load-config "^1.1.0" + postcss-selector-parser "^2.0.0" + prettier "^1.7.0" + resolve "^1.4.0" + source-map "^0.6.1" + vue-hot-reload-api "^2.2.0" + vue-style-loader "^3.0.0" + vue-template-es2015-compiler "^1.6.0" + +vue-qr@^2.2.1: + version "2.2.1" + resolved "https://registry.npm.taobao.org/vue-qr/download/vue-qr-2.2.1.tgz" + integrity sha1-14ROddUiPvKrGSUjz4uxKdO4JIk= + +vue-router@^3.0.1: + version "3.1.3" + resolved "https://registry.npmjs.org/vue-router/-/vue-router-3.1.3.tgz" + integrity sha512-8iSa4mGNXBjyuSZFCCO4fiKfvzqk+mhL0lnKuGcQtO1eoj8nq3CmbEG8FwK5QqoqwDgsjsf1GDuisDX4cdb/aQ== + +vue-style-loader@^3.0.0, vue-style-loader@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-3.1.2.tgz" + integrity sha512-ICtVdK/p+qXWpdSs2alWtsXt9YnDoYjQe0w5616j9+/EhjoxZkbun34uWgsMFnC1MhrMMwaWiImz3K2jK1Yp2Q== + dependencies: + hash-sum "^1.0.2" + loader-utils "^1.0.2" + +vue-template-compiler@^2.5.2: + version "2.6.10" + resolved "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz" + integrity sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg== + dependencies: + de-indent "^1.0.2" + he "^1.1.0" + +vue-template-es2015-compiler@^1.6.0: + version "1.9.1" + resolved "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz" + integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== + +vue@^2.5.2: + version "2.6.10" + resolved "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz" + integrity sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ== + +vuex@^3.5.1: + version "3.5.1" + resolved "https://registry.npm.taobao.org/vuex/download/vuex-3.5.1.tgz" + integrity sha1-8bjc6mSbwlJUz09DWAgdv12hiz0= + +watchpack-chokidar2@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.4.0: + version "1.7.2" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz" + integrity sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.0" + watchpack-chokidar2 "^2.0.0" + +wbuf@^1.1.0, wbuf@^1.7.2: + version "1.7.3" + resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +webpack-bundle-analyzer@^2.13.1: + version "2.13.1" + resolved "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.13.1.tgz" + integrity sha512-rwxyfecTAxoarCC9VlHlIpfQCmmJ/qWD5bpbjkof+7HrNhTNZIwZITxN6CdlYL2axGmwNUQ+tFgcSOiNXMf/sQ== + dependencies: + acorn "^5.3.0" + bfj-node4 "^5.2.0" + chalk "^2.3.0" + commander "^2.13.0" + ejs "^2.5.7" + express "^4.16.2" + filesize "^3.5.11" + gzip-size "^4.1.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + opener "^1.4.3" + ws "^4.0.0" + +webpack-cli@^4.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.10.0.tgz#37c1d69c8d85214c5a65e589378f53aec64dab31" + integrity sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^1.2.0" + "@webpack-cli/info" "^1.5.0" + "@webpack-cli/serve" "^1.7.0" + colorette "^2.0.14" + commander "^7.0.0" + cross-spawn "^7.0.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^2.2.0" + rechoir "^0.7.0" + webpack-merge "^5.7.3" + +webpack-dev-middleware@^1.11.0: + version "1.12.2" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz" + integrity sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A== + dependencies: + memory-fs "~0.4.1" + mime "^1.5.0" + path-is-absolute "^1.0.0" + range-parser "^1.0.3" + time-stamp "^2.0.0" + +webpack-dev-server@^2.9.1: + version "2.9.1" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.1.tgz" + integrity sha512-qFKs4Wg6JI6FkAQ6WFqeDCCxXEBLsDHkqJB3f9tmlqx8C68Y9vQWwcaMT4Q9H8WF32Q6QUNmgK4qQkdHfXvj/g== + dependencies: + ansi-html "0.0.7" + array-includes "^3.0.3" + bonjour "^3.5.0" + chokidar "^1.6.0" + compression "^1.5.2" + connect-history-api-fallback "^1.3.0" + del "^3.0.0" + express "^4.13.3" + html-entities "^1.2.0" + http-proxy-middleware "~0.17.4" + internal-ip "1.2.0" + ip "^1.1.5" + loglevel "^1.4.1" + opn "^5.1.0" + portfinder "^1.0.9" + selfsigned "^1.9.1" + serve-index "^1.7.2" + sockjs "0.3.18" + sockjs-client "1.1.4" + spdy "^3.4.1" + strip-ansi "^3.0.1" + supports-color "^4.2.1" + webpack-dev-middleware "^1.11.0" + yargs "^6.6.0" + +webpack-merge@^4.1.0: + version "4.2.2" + resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz" + integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== + dependencies: + lodash "^4.17.15" + +webpack-merge@^5.7.3: + version "5.8.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" + integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" + +webpack-sources@^1.0.1, webpack-sources@^1.1.0: + version "1.4.3" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^3.12.0: + version "3.12.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz" + integrity sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ== + dependencies: + acorn "^5.0.0" + acorn-dynamic-import "^2.0.0" + ajv "^6.1.0" + ajv-keywords "^3.1.0" + async "^2.1.2" + enhanced-resolve "^3.4.0" + escope "^3.6.0" + interpret "^1.0.0" + json-loader "^0.5.4" + json5 "^0.5.1" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + mkdirp "~0.5.0" + node-libs-browser "^2.0.0" + source-map "^0.5.3" + supports-color "^4.2.1" + tapable "^0.2.7" + uglifyjs-webpack-plugin "^0.4.6" + watchpack "^1.4.0" + webpack-sources "^1.0.1" + yargs "^8.0.2" + +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whet.extend@~0.9.9: + version "0.9.9" + resolved "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz" + integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE= + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@1, which@^1.2.9, which@^1.3.0: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" + integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= + +worker-farm@^1.5.2: + version "1.7.0" + resolved "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/write/-/write-0.2.1.tgz" + integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= + dependencies: + mkdirp "^0.5.1" + +ws@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz" + integrity sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +xtend@~2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz" + integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= + dependencies: + object-keys "~0.4.0" + +xxhashjs@^0.2.1: + version "0.2.2" + resolved "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz" + integrity sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw== + dependencies: + cuint "^0.2.2" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^4.2.0: + version "4.2.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz" + integrity sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw= + dependencies: + camelcase "^3.0.0" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz" + integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k= + dependencies: + camelcase "^4.1.0" + +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^6.6.0: + version "6.6.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz" + integrity sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg= + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^4.2.0" + +yargs@^8.0.2: + version "8.0.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz" + integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A= + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^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 "^7.0.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz" + integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" diff --git a/服务器地址.md b/服务器地址.md new file mode 100644 index 0000000..5f18bfa --- /dev/null +++ b/服务器地址.md @@ -0,0 +1,12 @@ + +let app = { + baseUrl:'/api/', + wsUrl:'wss://guanli.coin.amatak.net:2346', +} + +if(process.env.NODE_ENV=='production'){ + app.wsUrl='wss://guanli.coin.amatak.net:2346' + app.baseUrl='https://guanli.coin.amatak.net/api/' +} + +export default app; diff --git a/项目文档.md b/项目文档.md new file mode 100644 index 0000000..468a5e2 --- /dev/null +++ b/项目文档.md @@ -0,0 +1,572 @@ +---11111111111111111111 +​--- +title: virgox-global前端项目文档 +date: 2020-07-03 09:25:00 +author: lautin <1538731090@qq.com> +summary: 该文档用于技术分享,项目说明和工作交接,不得商用! +categories: Markdown +tags: + - Typora + - Markdown +node版本:14.16.1 +npm版本:6.14.12 +​--- +--- + +# 项目架构 + +## 框架环境 + +`virgox-global`,以下简称`VG` ,基于`vue-cli3+`开发,使用`MPA`结构,整站分为以下几个页面: + ++ 首页 ++ 现货交易 ++ 合约交易:包含**永续合约**和**外汇合约** ++ 理财 ++ 联系我们 ++ 学院:包含**入口展示**、**分类列表**和**详情页** ++ 登录模块:**登录页**、**注册页**、**忘记(重置)密码** ++ 个人中心:资产、合约账户、理财账户、资金划转、现货委托、合约委托、充提记录、账号安全等 + +每个页面维护一套独立的`SPA`环境,拥有自己的`模板文件`、`入口文件`、`路由模块` 等,其他文件如:静态资源、工具包、接口模块为公用。页面之间为**超级链接**连接,页面内为**`hash`**路由,为达到兼容目的,将每个`SPA`设为`history`模式 : + +```javascript +// router/index.js 文件 +export default new VueRouter({ + mode: 'history', + base: process.env.BASE_URL, + routes +}) +``` + +采用`MPA`是为了更好的对每个页面进行**差异化**管理,虽然页面的总体结构相同,但细节差别很多,总体来说体现在以下几个方面: + ++ 网页头部`SEO` 以及页面所需的依赖环境不同 ++ 页面头部样式不尽相同,有包含`背景色`,有包含`背景图`,并且背景图往往自头部渗透到内容区,和当前页面的耦合度高。 ++ 移动端适配的需求不同,除了基本的视口外,部分页面需要特殊处理:例如 登陆、注册页、文章详情页等 + +有了`MPA` ,我们可以定制不同的`HTML`模板满足不同页面的需求,例如:在登陆页面,头部和内容区放在一个容器 设置整体的背景,并且头部单独设置了移动端的下拉菜单`aside` + +```html + +
      + + + + + <% include('../src/assets/html/header.tpl') %> + + +
      +``` + +### vue/cli@3 + ++ `vue/cl3`配置多页面的步骤: + + 1. `vue.config.js ` 的`pages`选项中 添加一条记录,例如: + + ```javascript + login: { + entry: "src/login.js", // 入口文件 + template: "public/login.html", // 模板文件 + filename: "login.html", // 生成文件 + chunks: ['chunk-vendors', 'chunk-common', 'login'] // 公共和第三方模块提取 + } + ``` + + 2. 进入`/public`添加一个模板文件,如上配置的`login.html`,模板文件可以参照其他页面来写 + + 3. 进入`/src`添加一个入口文件,如上配置的`login.js`,这里面的配置同样参照其他页面 + + 4. 在`/src/router`中添加路由文件,并设置该页面的路由入口 + + + ++ `vue/cli3`接入的是`vue`中间配置,不直接匹配`webpack`,具体的配置项需要参照官方文档`配置参考`。如果要检查`vuecli`配置结果,可以通过`vue inspect`指令导出到文件,默认根目录中已经存在`output.js` + + + +### elementUI + +UI框架选型为`ELEMNET`,为了适配当前站点风格,我们改写了element样式。虽然ELEMENT本身可以定制主题,但功能有限且调试麻烦,因此我们选择手动重置`element`默认样式,即`src/assets/style/Common/ele.less`文件。 + + + + + +## 公共头尾 + +虽然每个页面头和尾的样式有所区别,但总体而言,结构和内容是相同的。为了便于维护,需要将它们提取为公共文件。公共文件中只包含基本样式,页面的特定样式还需要在每个模板文件中单独处理,例如 上面`login.html`中重置头部的背景图片: + +```html + + +``` + +公共文件作为静态资源放入`src/assets/html`目录中,默认扩展名`.tpl`。模板文件通常是`.html`,但服务端部署缓存时 可能是统一设置html文件, 为了与其他html资源区分,这里特别改为`.tpl`,**勿动**。 + +公共头尾文件,虽然放置于`src`打包目录,但它是以`模板引擎方式`的方式加载,而不在打包资源(入口文件)中,因此不能以`vue`环境编码。模板为`html`单页面应用环境,头尾部的动画和数据交互使用`jquery`,需要注意以下几点: + ++ 头部样式遵循`BEM`规范,并且将导航封装为**样式组件**,用法参见`src/assets/style/common/components.less` ++ 头尾的样式为全局加载,无需手动引入。样式文件目录同导航组件一起:`~/header.less`和`~/footer.less` ++ 头尾的国际化,使用`jquery.$i18n` ,该库存在一个`bug` -- 每次总是先查找`strings.properties`文件配置再查询相应的语言包。解决办法是,将所有变量在`strings.properties`中复制一份,默认空值,避免查询不到返回错误。当然如果你觉得这样不够优雅 也可以修改它的源码,不过需要谨慎操作。 + + + +# 规范说明 + +## 代码工具 + 编辑器推荐使用`vscode`,安装一下插件: + + vue-helper 支持方法跳转 + + vue-format + + vue 语法高亮 + + html snippets 支持管理各种类型的html文档 包括.tpl .art .html等 +## 命名规范 + ++ `html`和`css`样式的**属性名**、**类名**等不得大写,可以是小驼峰,建议使用`-`来连接多个逻辑断点,例如:`login-form`、`login-button` + ++ `css`尽量做到可扩展,每个组件至少需要一个模块名。模块布局和内容结构使用`__`来标记;模块状态、主题相关的结构使用`--`标记。例如:`nav-item`、`nav-item__title`、`nav-item--active`。 + ++ 国际化变量名应当使用**小写**, 当存在多个逻辑断点时,可以用`_`来连接,例如:`no_login_tips` 、`start_trade_now` + ++ 目录和文件名通常小写,逻辑组件(`.vue`)和类文件可以使用大写。`vue`组件在`html`文件中推荐使用小写的标签引入,例如: + + ```html + + + ``` + ++ 命名要见名知意,采用**习惯用语**,例如: `login`、`sign-in`、而非`landing`等。 + + ***由于历史原因,很多命名并没有严格遵循此规范,可以逐步迭代。*** + + + +## 代码规范 + ++ **html**模板内容采用`H5`布局标签,尽量做到语义化,满足`SEO`需求。例如:使用`header footer main section `等替代div.header、div.footer等,`h1~h6`替代div.title,使用`figure`关联图片和文字,多使用`em`和`strong`替代span + + + ++ **css**样式采用`less`编码,css代码应当遵循`BEM`规范,即可扩展和可维护的`css`,在设置效果时 需要有效分离 布局、内容、状态、主题这些因素,目前只在头部的代码中能看到这样的风格。对于常规样式和操作,做了统一的设置和封装,它们都被放在了`src/assets/styles/Common`目录中: + + + 对于全局设置,例如 字体、图标、颜色等在`varibles.less`中配置,这样确保站点内所使用的颜色是一致的: + + ```less + // varibles.less + @cls-purple : rgba(193, 187, 242, 1); // 经典浅紫色 + // exchange & contract + @claret : #FF5959; // decreace 酒红色 + @turquoise : #25BC67; // increace 青绿色 + ``` + + + + + 对于常用样式块,例如 弹性盒子、字体相关等 有封装函数: + + ```less + // functions.less + .font(@face, @size, @lineH, @clr: inherit, @weight: normal, @style: normal) { + .ff(@face); + .fs(@size); + // 行高传入一个非数字值时 使用默认的normal值 + line-height: if((isnumber(@lineH)), ~"@{lineH}px", normal); + color : @clr; + font-weight: @weight; + font-style : @style; + } + ``` + + + 处理页面自适应时 优先使用弹性盒子,弹性盒子应该有类似这样的封装,历史原因 只有混入类样式 而无样式函数 + + ```less + // base.less + .mainFlex-row { + .mainW; + .flex-row; + } + + .mainFlex-column { + .mainW; + .flex-column; + } + + .w100Flex-row { + .w100pc; + .flex-row; + align-items: center; + } + + .w100Flex-column { + .w100pc; + .flex-column; + align-items: center; + } + + // 如果有时间 建议替换成下面的函数 + .flexible(@direction : row, @horizontal : flex-start, @vertical : flex-start) { + display : flex; + flex-direction : @direction; + justify-content : @horizontal; + align-items : @vertical + } + ``` + ``` + + + ``` + ++ **js**逻辑代码优先使用`es6`语法,方法则**推荐lodash库**,不足部分自己封装, + + + 封装方法有三种使用形式: + + + 在`js`中使用 `utils.方法名()` 调用,例如: `utils.omitTo(1.234, 2)` + + + 封装方法 也被植入内置对象中,你还可以使用内置对象来访问:`Math.omitTo(1.234, 2)` + + + 所有封装方法都可作为`vue`的**过滤器**使用,例如:`1.234|omitTo(2)`: + + ```javascript + // 每个页面的入口文件 例如 src/index.js + Object.keys(utils).forEach(key => { + Vue.filter(key, function (value, ...args) { + if (utils[key] instanceof Function) { + // 将value作为第一个参数值,剩余参数分别传入方法中 + return utils[key](value, ...args); + } + }); + }); + ``` + + + 使用`_.throttle()`替代自定义的 `utils.throttle()`,自定义防抖和节流方法只是一种探索和尝试,寻求心理上的平衡而已 + + + 自定义方法 主要是针对一些非常规的需求,例如 处理小数点精度、格式化日期时间、文件上传操作封装等 + + + +## 业务规范 + ++ 后端接口返回值会结构为:`{status, code, message, data}`;在`axios`请求时 会拦截返回值,对于`code != 0`或者`status != true` 统一拦截,输出`message`提示。 + + ```javascript + server.interceptors.response.use( + // 请求成功 + response => { + let { code, msg, data, success } = response.data; + if (!success && code != 0) { + // 错误提示... + // 进入catch + throw new Error(msg); + } + return response.data; + }, + + // 请求发生错误 + error => { + let message = ret.includes("timeout") ? "连接超时!" : "系统错误!"; + // 错误提示 ... + // 进入catch + throw new Error(message); + } + ) + ``` + + + ++ 分页原则:对于列表数据,后端接口普遍支持分页获取,但从体验角度说 推荐前端进行分页。 + + + 对于大量记录的值,通过接口参数`pageSize`和`pageNo`查询指定页码的数据,每次点击页码时都需要发送一次请求。 + + + 对于百条级别数据,给`pageSize`一个超出值并设置`pageNo`为1,这样一次性取出所有,接下来使用`element Pagination`组件实现前端分页。例如 理财产品列表。 + + + ++ 插件管理:对于复用的功能,除了封装组件外,也有提取的插件,例如 `sliderCaptcha`、`Kline` 等: + + + 公共组件统一放置在 `src/components`目录并已经全局加载,在vue文件中可以直接使用 + + 插件统一放在`public/`目录,在页面中 多以`iframe`方式引入, + + + + +# 目录文件 + + + +## icomoon + +字体图标库管理文件,使用`iconmoon` 图标库, + ++ `demo-files ` ++ `fonts` 图标字体库文件,包含常用格式`.eot, .svg, .ttf, .woff` ++ `selection.json` 升级图标库时 需要上传该文件 包含原有的图标 ++ `demo.html` 演示文稿 查看图标样式和对应字符 ++ `style.css` 演示文稿加载的css样式 + + + +## public + +存储非打包和用于缓存的资源 + ++ img: 非打包环境中使用的图片 以及 需要缓存的图片,具体包括有: + + `404`和维护页面所使用的图片 + + `bg-index.png` 首页头部背景图,因图片较大 放在此处非打包环境中 便于缓存 ++ kline: k线包,支持在页面中 使用iframe方式引入,在币币交易和合约交易页面使用 + + ` + ``` + ++ K线包主要的配置文件为 `/kline/datafeeds/wsconfig.js` 这里面用来配置`websocket`请求数据: + + + +# 业务模块 + +## 首页 + + + + + +## 登陆注册 + + + + + +## 现货交易 + + + + + +## 合约交易 + + + +# 上线流程 + ++ 更新bug状态并在项目根目录下`CHANGLOG.md`补充本次更新的内容 ++ 本地`npm run build` 打包源码 生成`dist`包,手动添加版本号;或者在线上环境打包也可 ++ 将`dist`包使用ftp提交到测试服务器并通知测试人员 ++ 与运维沟通,测试转移正式环境时 需要调整的内容,例如 websocket请求地址更新为正式服务器